mirror of
https://github.com/NanmiCoder/cc-haha
synced 2026-07-17 13:13:35 +08:00
Complete the Electron replacement boundary before merging by removing the renderer-side Tauri host fallback, tightening H5/browser access so only desktop navigation is tokenless, and moving desktop release publication to a tag-driven GitHub Actions matrix with a single final publish job. Constraint: H5/browser capability access must not gain tokenless access through localhost or retired Tauri origins Constraint: Desktop release artifacts must be built by GitHub Actions from version tags, not treated as local build outputs Rejected: Keep localhost browser origins trusted for convenience | local browser contexts can access loopback services and must use the H5 token path Rejected: Publish from each matrix job | partial releases can be created before all platforms finish Confidence: high Scope-risk: broad Directive: Do not reintroduce Tauri origins or localhost browser origins into the trusted desktop origin set without a reviewed security design Tested: bun test src/server/__tests__/h5-access-policy.test.ts src/server/__tests__/h5-access-auth.test.ts src/server/__tests__/diagnostics-service.test.ts src/server/middleware/cors.test.ts Tested: bun test scripts/pr/release-workflow.test.ts scripts/release-update-metadata.test.ts Tested: bun run check:desktop Tested: bun run check:native Tested: git diff --check Not-tested: bun run check:server is blocked by expired quarantine entries server:cron-scheduler, server:providers-real, server:tasks, server:e2e:business-flow, server:e2e:full-flow
32 lines
776 B
TypeScript
32 lines
776 B
TypeScript
import { browserHost } from './browserHost'
|
|
import type { DesktopHost } from './types'
|
|
|
|
export type DesktopHostEnvironment = {
|
|
electronHost: DesktopHost | null
|
|
}
|
|
|
|
export function detectDesktopHostEnvironment(): DesktopHostEnvironment {
|
|
if (typeof window === 'undefined') {
|
|
return { electronHost: null }
|
|
}
|
|
|
|
return {
|
|
electronHost: window.desktopHost ?? null,
|
|
}
|
|
}
|
|
|
|
export function createDesktopHost(
|
|
environment: DesktopHostEnvironment = detectDesktopHostEnvironment(),
|
|
): DesktopHost {
|
|
if (environment.electronHost) return environment.electronHost
|
|
return browserHost
|
|
}
|
|
|
|
export function getDesktopHost(): DesktopHost {
|
|
return createDesktopHost(detectDesktopHostEnvironment())
|
|
}
|
|
|
|
export const desktopHost = getDesktopHost()
|
|
|
|
export type * from './types'
|