From 3e49c0ac51d4289600beb97a9835fdd27b4f222a Mon Sep 17 00:00:00 2001 From: Codeon <313085171+codeon89@users.noreply.github.com> Date: Thu, 3 Sep 2026 22:34:17 -0700 Subject: [PATCH 1/3] changed: console toggle trigger on settings page should not lose window focus --- electron/ipc/settings.js | 6 +++++- src/components/settings/Interface.jsx | 2 +- tests/debug-console-focus.test.js | 16 ++++++++++++++++ tests/devtools-gating.test.js | 7 ++----- tests/interface-debug-console.test.js | 3 +-- 5 files changed, 25 insertions(+), 9 deletions(-) create mode 100644 tests/debug-console-focus.test.js diff --git a/electron/ipc/settings.js b/electron/ipc/settings.js index 59005cd..1101191 100644 --- a/electron/ipc/settings.js +++ b/electron/ipc/settings.js @@ -269,11 +269,15 @@ module.exports = function registerSettingsHandlers(ctx) { BrowserWindow.getAllWindows().forEach((win) => { if (win.isDestroyed()) return if (nextShowDebugConsole) { - if (!win.webContents.isDevToolsOpened()) win.webContents.openDevTools() + // Open in place without stealing focus from Settings. + if (!win.webContents.isDevToolsOpened()) win.webContents.openDevTools({ activate: false }) } else if (win.webContents.isDevToolsOpened()) { win.webContents.closeDevTools() } }) + // Not every Electron version honors activate: false, so keep Settings on top. + const senderWin = BrowserWindow.fromWebContents(event.sender) + if (senderWin && !senderWin.isDestroyed()) senderWin.focus() } // Applies a switch that passed validation above. diff --git a/src/components/settings/Interface.jsx b/src/components/settings/Interface.jsx index 7cb631d..16dc6fa 100644 --- a/src/components/settings/Interface.jsx +++ b/src/components/settings/Interface.jsx @@ -307,7 +307,7 @@ const Interface = () => { override this for a single query.

- {/* No restart needed: save-settings opens/closes DevTools on all open windows live. */} + {/* Applies live, no restart needed. */}
{ + test('live-toggle opens DevTools without activating', () => { + expect(src).toMatch(/openDevTools\(\{\s*activate:\s*false\s*\}\)/) + }) + + test('sender window is refocused after the toggle', () => { + expect(src).toMatch(/BrowserWindow\.fromWebContents\(event\.sender\)/) + }) +}) diff --git a/tests/devtools-gating.test.js b/tests/devtools-gating.test.js index 2a5aabd..0bf9011 100644 --- a/tests/devtools-gating.test.js +++ b/tests/devtools-gating.test.js @@ -4,9 +4,7 @@ import path from 'path' const src = fs.readFileSync(path.join(__dirname, '..', 'electron', 'main.js'), 'utf8') -// DevTools previously opened automatically when running under `process.defaultApp` -// (electron . / npm start). The `Interface.showDebugConsole` setting already -// exists for this — it should be the sole gate. +// showDebugConsole is the sole gate for DevTools (no auto-open in dev mode). describe('DevTools gating (Dev-Only)', () => { test('no DevTools open is gated by process.defaultApp', () => { expect(src).not.toMatch(/process\.defaultApp\s*\|\|\s*appConfig\?\.Interface\?\.showDebugConsole/) @@ -14,8 +12,7 @@ describe('DevTools gating (Dev-Only)', () => { test('every openDevTools call is gated only by showDebugConsole', () => { const guards = [...src.matchAll(/if\s*\(appConfig\?\.Interface\?\.showDebugConsole\)\s*\{\s*\n\s*.*openDevTools\(\)/g)] - // createWindow, createSettingsWindow, createThemeBuilderWindow, - // createBannerEditorWindow, createImporterWindow, createGameDetailsWindow + // main, settings, theme builder, banner editor, importer, game details expect(guards.length).toBe(6) }) diff --git a/tests/interface-debug-console.test.js b/tests/interface-debug-console.test.js index da7a375..7e1a1d0 100644 --- a/tests/interface-debug-console.test.js +++ b/tests/interface-debug-console.test.js @@ -7,8 +7,7 @@ const src = fs.readFileSync( 'utf8', ) -// The debug-console toggle applies live via save-settings (main opens/closes -// DevTools on all open windows), so it must not show a restart popup or hint. +// The toggle applies live, so no restart popup or hint. describe('Interface debug console (no restart)', () => { test('toggling never pops a restart alert', () => { expect(src).not.toMatch(/debug console setting requires a restart/i) From 1542c79813ea13784d27478d757d69438819cf2c Mon Sep 17 00:00:00 2001 From: Codeon <313085171+codeon89@users.noreply.github.com> Date: Sun, 6 Sep 2026 18:12:13 -0700 Subject: [PATCH 2/3] feat: add {atlasId} to the supported key in install / import folder scheme --- CHANGELOG.md | 1 + electron/ipc/importer.js | 1 + electron/library/importRules.js | 1 + src/components/downloads/LibraryStructureModal.jsx | 3 ++- src/components/importer/Importer.jsx | 1 + src/components/importer/steps/SettingsStep.jsx | 4 +++- src/components/settings/Library.jsx | 2 +- tests/importer-helpers.test.js | 13 ++++++++++++- 8 files changed, 22 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f8cfb17..656cbcd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ - Path resolution highlighting: red if invalid, green if path exists or pass the check. ### Added +- Importer and Library folder scheme now support `{atlasId}`, so installs can be matched back to AtlasDB on re-import / rebuild. - Custom media uploads in the Game Details Media tab: add preview images from local files, a drag-and-drop zone, or an image URL, with live progress. Previews can be reordered by drag and the order persists in a new `preview_sort` table keyed by remote URL (or relative path for custom uploads), so it survives re-downloads, stream/download switches and metadata refreshes. Previews now carry a source logo and a storage-location badge, and custom previews can be deleted independently of downloaded ones. - Add Buzzheavier host support (`buzzheavier.com`, `bzzhr.to`, `bzzhr.co`). The download route is behind a Cloudflare challenge, so the resolve runs in a browser window: it clicks the htmx download button, captures the `HX-Redirect` (or an attachment via `will-download`), and hands the resolved CDN link plus the browser's own cookies/UA back to the downloader. The resolve partition is persistent so a solved challenge survives a restart -- only Cloudflare's own challenge cookies are kept, everything else is stripped after each resolve -- and resolves run one at a time, since a shared session cannot carry two concurrently. Each time your IP changes there is a brief auto-resolve window while the challenge is re-solved. - The version readout in the topnav and sidebar is now a button that opens that version's GitHub release page. The tag it builds matches what the release workflows publish -- `v` for stable and `v-nightly.` for nightly -- so it lands on the real release rather than a 404. (#143) diff --git a/electron/ipc/importer.js b/electron/ipc/importer.js index 842729c..11e0d2e 100644 --- a/electron/ipc/importer.js +++ b/electron/ipc/importer.js @@ -4771,6 +4771,7 @@ ipcMain.handle("downloads-install", async (event, { id, version, onComplete, kee currentConfig?.Library?.libraryFolderStructure, { f95Id: record.f95_id || record.f95Id || "", + atlasId: record.atlas_id || record.atlasId || "", engine: record.engine || "Unknown", creator: record.creator, title: record.title, diff --git a/electron/library/importRules.js b/electron/library/importRules.js index 3c1a830..3ed7ecf 100644 --- a/electron/library/importRules.js +++ b/electron/library/importRules.js @@ -73,6 +73,7 @@ function buildStructuredImportPath(targetLibrary, format, game) { if (key === "version") return normalizeVersionName(game.version); if (key === "engine") return game.engine || "Unknown"; if (key === "f95id") return game.f95Id || "Unknown"; + if (key === "atlasid") return game.atlasId || game.atlas_id || "Unknown"; if (key === "lcid" || key === "lewdcornerid") return game.lcId || game.lewdCornerId || "Unknown"; return "Unknown"; }), diff --git a/src/components/downloads/LibraryStructureModal.jsx b/src/components/downloads/LibraryStructureModal.jsx index 529060a..8d7fe07 100644 --- a/src/components/downloads/LibraryStructureModal.jsx +++ b/src/components/downloads/LibraryStructureModal.jsx @@ -59,7 +59,8 @@ const previewPath = (pattern) => .replace(/\{title\}/g, SAMPLE.title) .replace(/\{version\}/g, SAMPLE.version) .replace(/\{engine\}/g, 'RenPy') - .replace(/\{f95Id\}/g, '12345'), + .replace(/\{f95Id\}/g, '12345') + .replace(/\{atlasId\}/g, '6789'), ) .filter(Boolean) diff --git a/src/components/importer/Importer.jsx b/src/components/importer/Importer.jsx index bf23408..dca0d77 100644 --- a/src/components/importer/Importer.jsx +++ b/src/components/importer/Importer.jsx @@ -995,6 +995,7 @@ const Importer = () => { engine: groups.engine || '', f95Id: groups.f95id || '', lcId: groups.lcid || '', + atlasId: groups.atlasid || '', } if (!cancelled) { setLivePreview({ diff --git a/src/components/importer/steps/SettingsStep.jsx b/src/components/importer/steps/SettingsStep.jsx index 0238bbf..f5c5430 100644 --- a/src/components/importer/steps/SettingsStep.jsx +++ b/src/components/importer/steps/SettingsStep.jsx @@ -31,6 +31,7 @@ export default function SettingsStep({ { label: 'Creator / Title - Version', value: '{creator}/{title} - {version}' }, { label: 'Title / Version, Creator', value: '{title}/{version},{creator}' }, { label: 'F95 ID / Title / Version', value: '{f95Id}/{title}/{version}' }, + { label: 'Atlas ID / Title / Version', value: '{atlasId}/{title}/{version}' }, { label: 'LewdCorner ID / Title / Version', value: '{lcId}/{title}/{version}' }, ] // "Auto detect" (unstructured name guessing) has been removed for now, so the @@ -167,6 +168,7 @@ export default function SettingsStep({ ['Engine', livePreview.fields.engine, false], ['F95 ID', livePreview.fields.f95Id, false], ['LC ID', livePreview.fields.lcId, false], + ['Atlas ID', livePreview.fields.atlasId, false], ].filter(([, value, always]) => always || value).map(([label, value]) => (
{label}
@@ -221,7 +223,7 @@ export default function SettingsStep({ onChange={(e) => setLibraryFormat(e.target.value)} spellCheck={false} placeholder="{creator}/{title}/{version}" - title="Destination path template. Tokens: {creator} {title} {version} {f95Id} {lcId}" + title="Destination path template. Tokens: {creator} {title} {version} {f95Id} {lcId} {atlasId}" className="sm:ml-2 flex-1 min-w-0 bg-secondary text-text border border-border rounded-buttonTheme p-1 focus:outline-none focus:ring-1 focus:ring-accent font-mono text-xs" />
diff --git a/src/components/settings/Library.jsx b/src/components/settings/Library.jsx index c072fb4..ec754fa 100644 --- a/src/components/settings/Library.jsx +++ b/src/components/settings/Library.jsx @@ -277,7 +277,7 @@ const Library = () => {

Used when imports are moved or archives are extracted into the default library folder. Options: {"{creator}"}, {"{title}"}, {"{version}"},{" "} - {"{engine}"}, {"{f95Id}"}. + {"{engine}"}, {"{f95Id}"}, {"{atlasId}"}.
Example: {"{f95Id}/{creator}/{title}/{version}"}

diff --git a/tests/importer-helpers.test.js b/tests/importer-helpers.test.js index ea104ca..281895f 100644 --- a/tests/importer-helpers.test.js +++ b/tests/importer-helpers.test.js @@ -79,6 +79,17 @@ describe('buildStructuredImportPath', () => { const out = T.buildStructuredImportPath('/lib', '{lcid}', { lcId: 'LC9' }) expect(out).toBe(path.join('/lib', 'LC9')) }) + + it('supports atlasid from camelCase or snake_case, any casing', () => { + expect(T.buildStructuredImportPath('/lib', '{atlasId}', { atlasId: '456' })).toBe(path.join('/lib', '456')) + expect(T.buildStructuredImportPath('/lib', '{atlasId}', { atlas_id: 456 })).toBe(path.join('/lib', '456')) + expect(T.buildStructuredImportPath('/lib', '{AtlasID}', { atlasId: '456' })).toBe(path.join('/lib', '456')) + }) + + it('falls back to Unknown for a missing atlas id, even mid-segment', () => { + const out = T.buildStructuredImportPath('/lib', '{title} [{atlasId}]/{version}', { title: 'My Game', version: '1.0' }) + expect(out).toBe(path.join('/lib', 'My Game [Unknown]', '1.0')) + }) }) @@ -121,7 +132,7 @@ test('downloads-install passes required fields in buildStructuredImportPath', () if (!obj) throw new Error('buildStructuredImportPath was not given an object literal') const keys = obj.properties.map((p) => p.key.name) - const required = ['f95Id', 'engine', 'creator', 'title', 'version'] + const required = ['f95Id', 'atlasId', 'engine', 'creator', 'title', 'version'] for (const key of required) { expect(keys).toContain(key) From bc79bd5680ef56c6c1ca0879283978eb04b2de29 Mon Sep 17 00:00:00 2001 From: Codeon <313085171+codeon89@users.noreply.github.com> Date: Sun, 6 Sep 2026 18:43:02 -0700 Subject: [PATCH 3/3] fix: resolve repo workflow issue due to repo name change --- .github/workflows/ci-patched.yml | 2 +- .github/workflows/nightly-patched.yml | 2 +- .github/workflows/pr-policy.yml | 2 +- CHANGELOG.PATCHED.md | 6 +++--- PATCHES.md | 6 +++--- docs/FORK-PATCHED-RELEASES.md | 2 +- docs/FORK-PATCHED-RUNBOOK.md | 2 +- electron/main.js | 2 +- package.json | 2 +- scripts/build-patched.js | 2 +- src/utils/releaseUrl.js | 2 +- tests/patched-ci-workflow.test.js | 2 +- tests/patched-release-workflow.test.js | 2 +- tests/patched-updates.test.js | 3 ++- tests/release-url.test.js | 2 +- 15 files changed, 20 insertions(+), 19 deletions(-) diff --git a/.github/workflows/ci-patched.yml b/.github/workflows/ci-patched.yml index 38d31de..ee25bfd 100644 --- a/.github/workflows/ci-patched.yml +++ b/.github/workflows/ci-patched.yml @@ -17,7 +17,7 @@ jobs: name: Patched checks # Never runs outside the fork: if this file ever reaches upstream by a bad # merge, it stays silent there instead of double-running their CI. - if: github.repository == 'codeon89/Atlas' + if: github.repository == 'codeon89/Atlas-Patched' runs-on: ubuntu-latest timeout-minutes: 15 steps: diff --git a/.github/workflows/nightly-patched.yml b/.github/workflows/nightly-patched.yml index a048e9f..58994ad 100644 --- a/.github/workflows/nightly-patched.yml +++ b/.github/workflows/nightly-patched.yml @@ -23,7 +23,7 @@ jobs: # This file must never publish from anywhere else: not from a fork of this # fork, not from a feature branch. Downstream jobs cascade-skip when this # one does, so guarding here covers the whole workflow. - if: github.repository == 'codeon89/Atlas' && github.ref == 'refs/heads/nightly-patched' + if: github.repository == 'codeon89/Atlas-Patched' && github.ref == 'refs/heads/nightly-patched' runs-on: ubuntu-latest timeout-minutes: 20 outputs: diff --git a/.github/workflows/pr-policy.yml b/.github/workflows/pr-policy.yml index f054251..1424ab8 100644 --- a/.github/workflows/pr-policy.yml +++ b/.github/workflows/pr-policy.yml @@ -5,7 +5,7 @@ name: PR Policy # the heavier CI job so contributors find out about a wrong base branch in # seconds rather than after a fifteen-minute build. # -# Fork divergence (codeon89/Atlas): Rule 1 also accepts `nightly-patched` +# Fork divergence (codeon89/Atlas-Patched): Rule 1 also accepts `nightly-patched` # (the fork's integration branch); changelog and AI-disclosure rules are not # enforced. Review upstream changes to this file on every merge-down. diff --git a/CHANGELOG.PATCHED.md b/CHANGELOG.PATCHED.md index 309c33f..0b80218 100644 --- a/CHANGELOG.PATCHED.md +++ b/CHANGELOG.PATCHED.md @@ -6,13 +6,13 @@ **v0.9.9-patched.nightly.494.2** - Removed the stale restart popup and hint on the Show debug console toggle — it applies immediately to all open windows.[#399](https://github.com/towerwatchman/Atlas/pull/399) - (Dev-Only) DevTools no longer auto-opens in dev mode unless explicitly enabled in config. - - Nightly-Patched: support Linux builds & patch ci runs. [#20](https://github.com/codeon89/Atlas/pull/20) + - Nightly-Patched: support Linux builds & patch ci runs. [#20](https://github.com/codeon89/Atlas-Patched/pull/20) **v0.9.9-patched.nightly.494.1** - Update debounce logic for Browse and Library: Search in Catalog Browse and Library now debounces the text input and waits for a pause before filtering. Previously every keystroke updated `activeFilters.text` and ran `filterGamesWithState` (Library) or scheduled a catalog fetch, causing input lag on large libraries and a wasted local-filter pass even while browsing the server-side catalog. The input still echoes instantly from local state; clear bypasses the delay.[#398](https://github.com/towerwatchman/Atlas/pull/398) - LewdCorner member tier detection. Atlas now scrapes your LewdCorner account's shop page to determine your membership tier (Standard / Plus) and stores it alongside your credentials. Browse filters content by tier so Plus users see everything while Standard or non-login users only see what their subscription allows.[#391](https://github.com/towerwatchman/Atlas/pull/391) - - Support `[no-build]` detection in your HEAD commit message when pushing without wanting a release (docs or changelog-only pushes) or merge existing change from original Atlas.[#19](https://github.com/codeon89/Atlas/pull/19) - - Nightly-Patched releases: the fork ships its own Windows + Linux installer line (`{base}-patched.nightly.{nightly}.{p}`) with a third update channel under Settings > App Updates. Patched builds check only the fork feed; upstream nightlies surface as a read-only notice, never a download. See `docs/FORK-PATCHED-RUNBOOK.md`.[#19](https://github.com/codeon89/Atlas/pull/19) + - Support `[no-build]` detection in your HEAD commit message when pushing without wanting a release (docs or changelog-only pushes) or merge existing change from original Atlas.[#19](https://github.com/codeon89/Atlas-Patched/pull/19) + - Nightly-Patched releases: the fork ships its own Windows + Linux installer line (`{base}-patched.nightly.{nightly}.{p}`) with a third update channel under Settings > App Updates. Patched builds check only the fork feed; upstream nightlies surface as a read-only notice, never a download. See `docs/FORK-PATCHED-RUNBOOK.md`.[#19](https://github.com/codeon89/Atlas-Patched/pull/19) **Previously merged before packaging** diff --git a/PATCHES.md b/PATCHES.md index 1e0c05f..7106b1d 100644 --- a/PATCHES.md +++ b/PATCHES.md @@ -14,9 +14,9 @@ ## Fork's System Change *internal change that's not features but backend requirement for forks to release self-builds* - - Support Linux builds & patch ci runs. [#20](https://github.com/codeon89/Atlas/pull/20) - - Support `[no-build]` detection in your HEAD commit message when pushing without wanting a release (docs or changelog-only pushes) or merge existing change from original Atlas.[#19](https://github.com/codeon89/Atlas/pull/19) - - Nightly-Patched releases: the fork ships its own Windows + Linux installer line (`{base}-patched.nightly.{nightly}.{p}`) with a third update channel under Settings > App Updates. Patched builds check only the fork feed; upstream nightlies surface as a read-only notice, never a download. See `docs/FORK-PATCHED-RUNBOOK.md`. [#19](https://github.com/codeon89/Atlas/pull/19) + - Support Linux builds & patch ci runs. [#20](https://github.com/codeon89/Atlas-Patched/pull/20) + - Support `[no-build]` detection in your HEAD commit message when pushing without wanting a release (docs or changelog-only pushes) or merge existing change from original Atlas.[#19](https://github.com/codeon89/Atlas-Patched/pull/19) + - Nightly-Patched releases: the fork ships its own Windows + Linux installer line (`{base}-patched.nightly.{nightly}.{p}`) with a third update channel under Settings > App Updates. Patched builds check only the fork feed; upstream nightlies surface as a read-only notice, never a download. See `docs/FORK-PATCHED-RUNBOOK.md`. [#19](https://github.com/codeon89/Atlas-Patched/pull/19) ## Merged to thetowerman/Atlas's Nightly diff --git a/docs/FORK-PATCHED-RELEASES.md b/docs/FORK-PATCHED-RELEASES.md index 9151907..e9a7f51 100644 --- a/docs/FORK-PATCHED-RELEASES.md +++ b/docs/FORK-PATCHED-RELEASES.md @@ -1,4 +1,4 @@ -# Nightly-Patched releases (codeon89/Atlas) +# Nightly-Patched releases (codeon89/Atlas-Patched) Plain-language reference for the fork's own release line. Procedures live in `docs/FORK-PATCHED-RUNBOOK.md`. diff --git a/docs/FORK-PATCHED-RUNBOOK.md b/docs/FORK-PATCHED-RUNBOOK.md index 7cb5a12..0a1dfd8 100644 --- a/docs/FORK-PATCHED-RUNBOOK.md +++ b/docs/FORK-PATCHED-RUNBOOK.md @@ -1,4 +1,4 @@ -# Nightly-Patched runbook (codeon89/Atlas) +# Nightly-Patched runbook (codeon89/Atlas-Patched) Evergreen fork-only operations. Plain-language overview: `docs/FORK-PATCHED-RELEASES.md`. diff --git a/electron/main.js b/electron/main.js index 1e2a028..c0efc6f 100644 --- a/electron/main.js +++ b/electron/main.js @@ -657,7 +657,7 @@ function configureAppUpdateBranch(branch, { resetStatus = false } = {}) { // upstream. A fork build pointed at upstream would offer to replace itself // with an official build that lacks the fork feed entirely. owner: normalizedBranch === 'patched' ? 'codeon89' : 'towerwatchman', - repo: 'Atlas', + repo: normalizedBranch === 'patched' ? 'Atlas-Patched' : 'Atlas', channel, }) diff --git a/package.json b/package.json index 8dbd7f9..5821046 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "publish": { "provider": "github", "owner": "codeon89", - "repo": "Atlas", + "repo": "Atlas-Patched", "releaseType": "draft", "channel": "patched", "vPrefixedTagName": true diff --git a/scripts/build-patched.js b/scripts/build-patched.js index 82e4296..9e32a13 100644 --- a/scripts/build-patched.js +++ b/scripts/build-patched.js @@ -86,7 +86,7 @@ async function run() { // Deliberately explicit: neither an inherited upstream config nor a new // remote can redirect a personal publish into someone else's repository. publish: { - provider: 'github', owner: 'codeon89', repo: 'Atlas', channel: 'patched', + provider: 'github', owner: 'codeon89', repo: 'Atlas-Patched', channel: 'patched', releaseType: 'draft', vPrefixedTagName: true, }, }, diff --git a/src/utils/releaseUrl.js b/src/utils/releaseUrl.js index e32ed97..a3ea7f4 100644 --- a/src/utils/releaseUrl.js +++ b/src/utils/releaseUrl.js @@ -18,6 +18,6 @@ import { LINKS } from './links.js' */ export function releaseUrlFor(version) { const tag = String(version ?? '').trim().replace(/^v+/i, '') - const repo = tag.includes('-patched.') ? 'https://github.com/codeon89/Atlas' : LINKS.github + const repo = tag.includes('-patched.') ? 'https://github.com/codeon89/Atlas-Patched' : LINKS.github return `${repo}/releases/tag/v${tag}` } diff --git a/tests/patched-ci-workflow.test.js b/tests/patched-ci-workflow.test.js index 05b955f..da6b719 100644 --- a/tests/patched-ci-workflow.test.js +++ b/tests/patched-ci-workflow.test.js @@ -12,7 +12,7 @@ const upstream = fs.readFileSync(path.join(here, '../.github/workflows/ci.yml'), describe('ci-patched workflow', () => { it('runs only in the fork repo', () => { - expect(workflow).toContain("github.repository == 'codeon89/Atlas'") + expect(workflow).toContain("github.repository == 'codeon89/Atlas-Patched'") }) it('restores node_modules and skips reinstall on a hit', () => { diff --git a/tests/patched-release-workflow.test.js b/tests/patched-release-workflow.test.js index af86336..79d5d05 100644 --- a/tests/patched-release-workflow.test.js +++ b/tests/patched-release-workflow.test.js @@ -12,7 +12,7 @@ const workflow = fs.readFileSync(path.join(here, '../.github/workflows/nightly-p describe('nightly-patched release workflow', () => { it('fires only on the fork branch and only in the fork repo', () => { expect(workflow).toContain('branches: [nightly-patched]') - expect(workflow).toContain("github.repository == 'codeon89/Atlas' && github.ref == 'refs/heads/nightly-patched'") + expect(workflow).toContain("github.repository == 'codeon89/Atlas-Patched' && github.ref == 'refs/heads/nightly-patched'") }) it('queues runs instead of cancelling (no duplicate release numbers)', () => { diff --git a/tests/patched-updates.test.js b/tests/patched-updates.test.js index f7369ed..182490e 100644 --- a/tests/patched-updates.test.js +++ b/tests/patched-updates.test.js @@ -65,7 +65,8 @@ describe('patched update channel', () => { ])('routes %s to its own feed and installed-version baseline', (branch, owner, channel, prerelease, baseline) => { const ctx = updaterContext() ctx.configureAppUpdateBranch(branch) - expect(ctx.autoUpdater.setFeedURL).toHaveBeenCalledWith({ provider: 'github', owner, repo: 'Atlas', channel }) + const repo = branch === 'patched' ? 'Atlas-Patched' : 'Atlas' + expect(ctx.autoUpdater.setFeedURL).toHaveBeenCalledWith({ provider: 'github', owner, repo, channel }) expect(ctx.autoUpdater.channel).toBe(channel) expect(ctx.autoUpdater.allowPrerelease).toBe(prerelease) expect(ctx.autoUpdater.allowDowngrade).toBe(false) diff --git a/tests/release-url.test.js b/tests/release-url.test.js index 2c85eae..d015cbe 100644 --- a/tests/release-url.test.js +++ b/tests/release-url.test.js @@ -46,7 +46,7 @@ describe('releaseUrlFor', () => { // even when the user currently follows an official channel. it('points patched builds at the fork releases', () => { expect(releaseUrlFor('0.9.9-patched.nightly.494.1')).toBe( - 'https://github.com/codeon89/Atlas/releases/tag/v0.9.9-patched.nightly.494.1' + 'https://github.com/codeon89/Atlas-Patched/releases/tag/v0.9.9-patched.nightly.494.1' ) }) })