Convert British spellings to American across the repo

colour -> color, behaviour -> behavior, centre -> center, favourite ->
favorite, and about twenty other pairs, applied consistently across
comments, docs, error/UI copy, and a handful of QML identifiers that
used the British spelling as their actual name: SystemSettings'
serialiseValue/serialiseTable/normaliseGradient, Displays'
normaliseModes, Wallpaper's normalisePolicy, SettingsBackup's
serialiseHomeState, DateTime's ntpSynchronised property, Clipboard's
_normalise helper, and ShortcutCapture's cancelled signal (with its
onCancelled handler in ShortcutsPage.qml). Every call site and the two
tests that assert on the literal source text (settings-ownership and
settings-backup-live contracts) were updated in lockstep.

Left untouched: config/dot/espanso/match/packages/misspell-en/ is a
vendored third-party autocorrect dictionary -- its entries are typo
corrections, not our prose, and rewriting them would fight the
package's own purpose (and any future re-sync from upstream).

The already-American `favorites` property (Home page pinned
accessories) was never actually misspelled -- only nearby comments and
error strings said "favourites" -- so no data migration was needed
there.

Claude-Session: https://claude.ai/code/session_01E6TJUAh41HaP25MVHWkhRZ
This commit is contained in:
Gabriel Brown
2026-08-19 08:07:55 -04:00
parent 8156fc47ca
commit d96863b687
113 changed files with 322 additions and 322 deletions
@@ -90,7 +90,7 @@
- Produces: `ShellState.openOverview(workspaceId)`, filmstrip selection, large workspace preview, cross-workspace window search
- [x] Add requested-overview-workspace state without coupling `ShellState` to the focus service.
- [x] Replace the centred equal-card row with a top filmstrip and a large selected-workspace preview.
- [x] Replace the centered equal-card row with a top filmstrip and a large selected-workspace preview.
- [x] Keep the trailing dynamic-workspace card and one-shot thumbnail capture behavior.
- [x] Add wheel navigation over the strip and keep the overview mapped while switching workspaces.
- [x] Add a keyboard-focused search field and filtered cross-workspace window results.
@@ -328,7 +328,7 @@ FileView {
printErrors: false
atomicWrites: true
onSaved: root.saveError = ""
onSaveFailed: error => root.saveError = "Could not save Home favourites."
onSaveFailed: error => root.saveError = "Could not save Home favorites."
JsonAdapter {
id: values
property bool initialized: false
@@ -15,10 +15,10 @@ holds the shipped defaults; one JSON file is the truth both sides read.
- Verify every write by reading the value back (`hyprctl getoption`), never by
trusting an exit code.
- No UI-supplied string is interpolated into `eval`, a shell command, or a config
value. Numbers range-checked, choices allow-listed, colours hex-validated.
value. Numbers range-checked, choices allow-listed, colors hex-validated.
- A missing or malformed `settings.json` degrades to shipped defaults. The Lua
read is `pcall`-wrapped so it can never take down the compositor config.
- Tokyo Night Moon and Prism stay the only identity; customisation adjusts its
- Tokyo Night Moon and Prism stay the only identity; customization adjusts its
parameters, it does not replace it.
- Motion stays event-driven at every setting. No idle repaint.
- Do not restart the running Quickshell process during development; it hot-reloads.
@@ -30,7 +30,7 @@ holds the shipped defaults; one JSON file is the truth both sides read.
## Stage 0 — Stop the lying (ship first, standalone)
The display-policy toggles report success while doing nothing. This is a
correctness bug in shipped behaviour and does not depend on any of the
correctness bug in shipped behavior and does not depend on any of the
architecture below.
**Files:** Modify `config/dot/quickshell/services/SystemSettings.qml`;
@@ -40,7 +40,7 @@ Test `tests/quickshell/settings-hyprland-write-contract.sh`
asserts via `hyprctl getoption` that the compositor value actually changed —
and that a rejected write leaves `lastError` non-empty.
- [x] Run it; confirm it fails against the current `hyprctl keyword` implementation.
- [x] Add a single `applyOptions(values)` boundary that serialises validated values
- [x] Add a single `applyOptions(values)` boundary that serializes validated values
into `hl.config{}` and runs them through `hyprctl eval`.
- [x] Route `setAutoHdr`, `setVrrPolicy`, and `setDirectScanoutPolicy` through it.
- [x] Treat "wrote it back and read it back equal" as the only success condition;
@@ -134,9 +134,9 @@ Test `tests/hypr/prefs-fallback-contract.sh`
- [x] Implement a dependency-free JSON reader exposing `prefs.get(key, fallback)`,
`pcall`-wrapped, reading `$XDG_CONFIG_HOME/panama/settings.json`.
- [x] Require it first in `hyprland.lua`, before `looks`.
- [x] Convert the appearance and behaviour literals in `looks.lua` and `input.lua`
- [x] Convert the appearance and behavior literals in `looks.lua` and `input.lua`
to `prefs.get("<key>", <current literal>)`, keeping every current value as
the fallback so shipped behaviour is byte-identical.
the fallback so shipped behavior is byte-identical.
- [x] Extend `PreferenceSchema.qml` with the Hyprland-owned keys, each carrying
the `hl.config` path it maps to.
- [x] Have `SystemSettings` derive its `eval` payload from that mapping, so a new
@@ -208,7 +208,7 @@ Modify all eleven `*Page.qml`; Test `tests/quickshell/settings-rows-contract.sh`
- [ ] Move the remaining pages (Home, Displays, Connectivity, Sound,
Notifications, Screen Intelligence, Services, About) onto `SettingsPage`.
**Exit criteria:** no shipped behaviour value is reachable only by editing a file.
**Exit criteria:** no shipped behavior value is reachable only by editing a file.
**Landed (first pass).** `SettingsPage` plus `ToggleRow`, `SliderRow`,
`ChoiceRow`, `ActionRow`, and `TextRow`. A row names a schema key and needs
@@ -218,7 +218,7 @@ explanation, bounds, and unit from the schema, and writes through
apply-and-verify and local keys straight to the store. Rows never need to know
which kind they hold.
`DesktopPreview` is the direction-B centrepiece: two tiled windows drawn at the
`DesktopPreview` is the direction-B centerpiece: two tiled windows drawn at the
settings actually in effect, scaled by the ratio between the preview's width and
the real monitor's, so a 10px gap on a 4500px display looks as small as it is.
@@ -2,7 +2,7 @@
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
**Goal:** Expand Panama Quick Settings into the approved Control Center with secure Home Assistant favourites and capability-aware iPhone continuity.
**Goal:** Expand Panama Quick Settings into the approved Control Center with secure Home Assistant favorites and capability-aware iPhone continuity.
**Architecture:** Two executable Python helpers own the external boundaries: KDE Connect CLI/D-Bus and the Home Assistant REST API/credential lookup. Quickshell singletons normalize those JSON contracts for focused Home and Phone components inside the existing Quick Settings window; Ongoing and Signal Glass consume transfer lifecycle without duplicating state.
@@ -17,7 +17,7 @@
- Only one of Wi-Fi, Bluetooth, sink, source, Home, and Phone may be expanded at once.
- Never print Home Assistant tokens, Authorization headers, clipboard text, certificate fingerprints, IP addresses, response bodies, or full local file paths.
- Home Assistant tokens remain in the gitignored environment file or Secret Service; never write one into tracked content.
- Home Assistant toggle commands accept only entity IDs from the configured favourites snapshot.
- Home Assistant toggle commands accept only entity IDs from the configured favorites snapshot.
- KDE Connect actions derive from advertised plugins; no fake battery or remote-input control is allowed.
- Every Home toggle, file chooser, file send, clipboard send, and Ring action requires a user click.
- Home toggle success, phone Ring, and clipboard success remain globally quiet.
@@ -49,8 +49,8 @@
- `config/dot/quickshell/modules/quicksettings/QuickSettings.qml` — tighter top attachment and service preparation.
- `config/dot/quickshell/modules/quicksettings/QuickSettingsPanel.qml` — expanded composition and exclusive section routing.
- `config/dot/quickshell/modules/quicksettings/ControlSectionHeader.qml` — quiet section label and optional trailing action.
- `config/dot/quickshell/modules/quicksettings/HomeControls.qml` — four favourites, expanded configured list, loading/stale/failure states.
- `config/dot/quickshell/modules/quicksettings/HomeTile.qml` — one domain-aware favourite tile.
- `config/dot/quickshell/modules/quicksettings/HomeControls.qml` — four favorites, expanded configured list, loading/stale/failure states.
- `config/dot/quickshell/modules/quicksettings/HomeTile.qml` — one domain-aware favorite tile.
- `config/dot/quickshell/modules/quicksettings/PhoneControls.qml` — approved compact Continuity Card.
- `config/dot/quickshell/modules/quicksettings/RecentExchange.qml` — one session-local completed transfer row.
- `config/dot/quickshell/modules/bar/StatusCluster.qml` — reachable-phone glyph inside the existing click target.
@@ -340,7 +340,7 @@ Expected: all tests PASS and the fake server records no unexpected route.
- [ ] **Step 5: Add and run the redacted live contract**
The contract runs `probe` and `snapshot`, validates the schema, and prints only
`PASS (configured=true, N favourites; contents redacted)`. It must pipe JSON to
`PASS (configured=true, N favorites; contents redacted)`. It must pipe JSON to
`jq` without printing friendly names, entity IDs, URL, or raw errors.
- [ ] **Step 6: Commit Task 2**
@@ -599,7 +599,7 @@ git commit -m "Build the Panama Control Center"
- [ ] **Step 1: Update desktop documentation**
Mark Home Assistant favourites and KDE Connect phone integration Live. Document
Mark Home Assistant favorites and KDE Connect phone integration Live. Document
the 430-pixel Control Center, two-pixel bar attachment, environment/keyring
configuration precedence, BlueBubbles messaging boundary, and current iOS
capabilities. Remove those two items from `System UI still worth adding` while
@@ -628,7 +628,7 @@ inspect only the new process's journal for QML errors or warnings.
- [ ] **Step 4: Perform read-only live checks**
Verify the Control Center reports one reachable phone with the confirmed action
names and seven configured Home favourites without printing identities. Open
names and seven configured Home favorites without printing identities. Open
and close the panel, expand Home and Phone, and confirm Wi-Fi, Bluetooth, audio,
Focus, Caffeine, Night Light, settings, power, Escape, and outside-click remain
usable. Do not trigger an external-device action.
@@ -503,7 +503,7 @@ Accounts destinations while this feature was in review. Merge commit `4ef2f01`
preserves those routes and the newer Settings navigation architecture, keeps
the stable `services` route rendered by `HealthPage`, and leaves
`ServicesPage.qml` retired. Its useful Fedora handoffs for Users, Sharing,
Colour profiles, and Digital wellbeing now live in the boundary-last System
Color profiles, and Digital wellbeing now live in the boundary-last System
Health card alongside the existing network handoff, with focused static and
isolated runtime coverage.