Merge branch 'feat/disk-ui' into integration/round-1

This commit is contained in:
2026-08-23 09:51:44 -07:00
20 changed files with 6797 additions and 20 deletions
+10 -4
View File
@@ -1,10 +1,16 @@
/** Shared formatting helpers for the Project Home views. */
import { formatBytes as shared } from "../../../lib/formatBytes";
/**
* File sizes in Project Home, ÷1024 with `KB`/`MB`/`GB` labels.
*
* Kept as a named re-export rather than deleted: three modules import it from
* here, and the binary/decimal-label pairing is a Project Home convention
* rather than the app-wide default. The implementation is `lib/formatBytes`.
*/
export function formatBytes(bytes: number): string {
if (bytes < 1024) return `${bytes} B`;
if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;
if (bytes < 1024 * 1024 * 1024) return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)} GB`;
return shared(bytes, { binary: true });
}
/** "2h ago" / "3d ago". Returns null for unparseable timestamps. */
+2 -8
View File
@@ -7,6 +7,7 @@
*/
import type { PackageFailure } from "../../lib/types";
import { formatBytes } from "../../lib/formatBytes";
/**
* What re-attaches untouched. These are not copied, rebuilt or re-authenticated
@@ -62,14 +63,7 @@ export const REPLAY_COST =
/** `41.0 MB`. Sizes here are informational, so the friendlier decimal unit. */
export function formatDataSize(bytes: number): string {
const units = ["B", "KB", "MB", "GB", "TB"];
let value = bytes;
let unit = 0;
while (value >= 1000 && unit < units.length - 1) {
value /= 1000;
unit += 1;
}
return unit === 0 ? `${bytes} B` : `${value.toFixed(1)} ${units[unit]}`;
return formatBytes(bytes);
}
/** `1 Mar` — short enough to sit inline in the banner sentence. */