diff --git a/README.md b/README.md
index 1a5db9c8..f6d04b6b 100644
--- a/README.md
+++ b/README.md
@@ -27,7 +27,7 @@

-
+
diff --git a/app/renderer/hooks/useUpdateStatus.test.ts b/app/renderer/hooks/useUpdateStatus.test.ts
index c20d4261..f48b75f2 100644
--- a/app/renderer/hooks/useUpdateStatus.test.ts
+++ b/app/renderer/hooks/useUpdateStatus.test.ts
@@ -4,7 +4,7 @@ vi.mock('../lib/ipc', () => ({
codeburn: { platform: 'linux', arch: 'x64' },
}))
-import { directDownloadUrl, releasePageUrl, updateDownloadUrl } from './useUpdateStatus'
+import { directDownloadUrl, MICROSOFT_STORE_URL, releasePageUrl, updateDownloadUrl } from './useUpdateStatus'
const TAG = 'desktop-v0.9.19'
const BASE = 'https://github.com/getagentseal/codeburn/releases/download/desktop-v0.9.19'
@@ -18,9 +18,9 @@ describe('directDownloadUrl', () => {
expect(directDownloadUrl(TAG, 'darwin', 'x64')).toBe(`${BASE}/CodeBurn-0.9.19.dmg`)
})
- it('maps Windows to the Setup exe regardless of arch', () => {
- expect(directDownloadUrl(TAG, 'win32', 'x64')).toBe(`${BASE}/CodeBurn-Setup-0.9.19.exe`)
- expect(directDownloadUrl(TAG, 'win32', undefined)).toBe(`${BASE}/CodeBurn-Setup-0.9.19.exe`)
+ it('maps Windows to the official Microsoft Store regardless of arch', () => {
+ expect(directDownloadUrl(TAG, 'win32', 'x64')).toBe(MICROSOFT_STORE_URL)
+ expect(directDownloadUrl(TAG, 'win32', undefined)).toBe(MICROSOFT_STORE_URL)
})
it('returns null for Linux (three formats, the user picks on the page)', () => {
diff --git a/app/renderer/hooks/useUpdateStatus.ts b/app/renderer/hooks/useUpdateStatus.ts
index dd90c9d9..f72ac8b4 100644
--- a/app/renderer/hooks/useUpdateStatus.ts
+++ b/app/renderer/hooks/useUpdateStatus.ts
@@ -30,12 +30,16 @@ export function releasePageUrl(tag: string): string {
return `https://github.com/getagentseal/codeburn/releases/tag/${tag}`
}
+/** Official signed Windows distribution. The Store handles installation and
+ * updates, avoiding the unsigned GitHub installer and SmartScreen warning. */
+export const MICROSOFT_STORE_URL = 'https://apps.microsoft.com/detail/9P0R4ZL5XMB8'
+
/**
- * Direct asset download for the running platform, so Download saves the file
- * instead of landing on a GitHub page. Filenames mirror the electron-builder
- * output (app/DISTRIBUTION.md) and are version-derived from the tag. Returns
- * null (callers fall back to the release page) for Linux — three formats, the
- * user picks — and for unknown platforms or a preload without `arch`.
+ * Preferred install target for the running platform. macOS downloads the
+ * matching release asset; Windows opens the signed Microsoft Store listing.
+ * Returns null (callers fall back to the release page) for Linux — three
+ * formats, the user picks — and for unknown platforms or a preload without
+ * `arch`.
*/
export function directDownloadUrl(tag: string, platform: string | undefined, arch: string | undefined): string | null {
const version = tag.startsWith('desktop-v') ? tag.slice('desktop-v'.length) : null
@@ -45,7 +49,7 @@ export function directDownloadUrl(tag: string, platform: string | undefined, arc
if (!arch) return null
file = arch === 'arm64' ? `CodeBurn-${version}-arm64.dmg` : `CodeBurn-${version}.dmg`
} else if (platform === 'win32') {
- file = `CodeBurn-Setup-${version}.exe`
+ return MICROSOFT_STORE_URL
}
if (!file) return null
return `https://github.com/getagentseal/codeburn/releases/download/${tag}/${file}`