Finish the wonderland: System told truthfully, in eight tabs instead of ten

Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
This commit is contained in:
Gabriel Brown
2026-08-24 23:31:52 -04:00
parent 9ffaf45a4d
commit be0e55214b
57 changed files with 5040 additions and 925 deletions
@@ -141,6 +141,25 @@ ShellRoot {
return SettingsBackup.handleRestoreOutput(output);
}
// The two pure functions behind a display restore, exposed directly.
// Everything else here is exercised through handleRestoreOutput, but
// the colour half of a layout is invisible from there: a snapshot
// whose colour fields were dropped restores geometry perfectly and
// reports success, which is exactly why nothing caught it for as long
// as it did.
function layoutFor(storedJson: string): string {
return JSON.stringify(
SettingsBackup.layoutFromStoredDisplays(JSON.parse(storedJson)));
}
// Both layouts in one object rather than two arguments: the IPC client
// flattens a top-level JSON array into one argument per element, so a
// pair of two-monitor layouts arrives as four arguments.
function layoutsMatch(pairJson: string): bool {
const pair = JSON.parse(pairJson);
return SettingsBackup.layoutsEqual(pair.left, pair.right);
}
function status(): string {
return JSON.stringify({
calls: root.calls,