mirror of
https://github.com/NanmiCoder/cc-haha
synced 2026-07-16 13:03:31 +08:00
The desktop updater now renders release notes as markdown, avoids fake 0% progress when the server omits Content-Length, and remembers when the user has dismissed a specific release prompt so reopening the app does not nag again for the same version. Constraint: Existing 0.1.4 clients can receive updater events without total size metadata and users still need a manual update path in About Rejected: Keep repeating the prompt on every launch | creates avoidable noise after an explicit later decision Rejected: Global dismiss flag for all future releases | would hide newer versions that should prompt again Confidence: high Scope-risk: narrow Reversibility: clean Directive: Keep prompt suppression keyed to availableVersion only; About page visibility and manual update actions must remain available Tested: bun run test src/stores/updateStore.test.ts src/components/shared/UpdateChecker.test.tsx src/__tests__/generalSettings.test.tsx; bun run lint; manual local updater validation from 0.1.4 to 0.1.5 on /Applications and an extracted v0.1.4 release bundle Not-tested: Signed and notarized macOS distribution behavior outside this local machine
19 lines
488 B
TypeScript
19 lines
488 B
TypeScript
export function formatBytes(bytes: number): string {
|
|
if (!Number.isFinite(bytes) || bytes <= 0) return '0 B'
|
|
|
|
const units = ['B', 'KB', 'MB', 'GB', 'TB']
|
|
let value = bytes
|
|
let unitIndex = 0
|
|
|
|
while (value >= 1024 && unitIndex < units.length - 1) {
|
|
value /= 1024
|
|
unitIndex += 1
|
|
}
|
|
|
|
const maximumFractionDigits = value >= 10 || unitIndex === 0 ? 0 : 1
|
|
|
|
return `${new Intl.NumberFormat(undefined, {
|
|
maximumFractionDigits,
|
|
}).format(value)} ${units[unitIndex]}`
|
|
}
|