Commit Graph
49 Commits
Author SHA1 Message Date
Gabriel Brown 00a81edadd Make Panama settings one shared source of truth
Panama had grown into three configuration surfaces that only agreed because
they had been typed to agree: looks.lua hardcoded values, DesktopPreferences
independently defaulted the same values, and SystemSettings replayed them at
startup. Nothing kept them in sync, and the Lua side read no shared state at
all. This lands the first three stages of docs/superpowers/plans/2026-08-17-panama-cohesion.md.

Fix silently failing Hyprland writes. On a Lua-configured Hyprland, hyprctl
keyword refuses the write, prints the refusal to stdout, and still exits 0, so
the HDR, VRR, and direct-scanout toggles persisted their value and reported
success while the compositor never changed. Writes now go through hyprctl eval,
which has the same hazard on syntax and runtime errors, so success is defined
as reading the value back and finding it equal. The existing contract passed
throughout the outage because it re-applied the values already in place; the
new one flips each value to something it does not hold.

Derive preferences from a schema. Every setting used to be restated four times
-- a property alias, a JSON adapter property, a change handler, and a line in
reset -- where omitting any one failed silently. PreferenceSchema.qml is now
the single source, and persistence, validation, reset, and the Hyprland mapping
all derive from it. Unknown keys on disk survive a write so a rollback does not
discard a newer build's settings, and a corrupt file falls back to shipped
defaults. The store moved to ~/.config/panama/settings.json, migrating from the
old state directory without deleting it.

Share that file with Hyprland. prefs.lua reads it at config time with every
shipped literal kept as the fallback, so the config still stands alone. The Lua
is the default, the JSON is the truth, and Settings is the editor. The
compositor-adjustable surface goes from 3 keys to 23.

Also fixes two test-hygiene bugs found by running the suite end to end for the
first time: settings-pages-contract could see the window settings-window-contract
leaves behind, and the new write contract was persisting its deliberately-wrong
values into the user's real store.

Claude-Session: https://claude.ai/code/session_01BRvzt4H8XXLPVH5MyYdk9L
2026-08-17 23:26:56 -04:00
Gabriel Brown f4c3ffed43 Document the Panama Control Center 2026-08-17 13:47:50 -04:00
Gabriel Brown 5940d6b4bd Build the Panama Control Center 2026-08-17 13:44:18 -04:00
Gabriel Brown 190e3200e0 Keep offline phone capabilities visible 2026-08-17 13:42:31 -04:00
Gabriel Brown 49ec4d8f6a Add Control Center integration services 2026-08-17 13:31:27 -04:00
Gabriel Brown 173c00fca7 Add the Panama Home Assistant bridge 2026-08-17 13:27:11 -04:00
Gabriel Brown 3a903934c0 Add the Panama KDE Connect bridge 2026-08-17 13:22:31 -04:00
Gabriel Brown a5450fdb6d Add Ongoing to the Panama Daybook 2026-08-17 12:18:04 -04:00
Gabriel Brown 1ce5c732b7 Document the Panama calendar agenda 2026-08-17 11:49:41 -04:00
Gabriel Brown f9cc15fb96 Fix GNOME Calendar date handoff 2026-08-17 11:48:11 -04:00
Gabriel Brown f27a1dca11 Add the quiet calendar capsule 2026-08-17 11:41:58 -04:00
Gabriel Brown 03914e23af Build the Prism calendar Daybook 2026-08-17 11:38:24 -04:00
Gabriel Brown 6a1bec849d Route the interactive Panama date menu 2026-08-17 11:32:57 -04:00
Gabriel Brown fb27c5b309 Add live calendar state to Quickshell 2026-08-17 11:31:15 -04:00
Gabriel Brown d37d4a87de Add the EDS calendar bridge 2026-08-17 11:28:12 -04:00
Gabriel Brown 5248883e4b Build the Panama Hyprland desktop 2026-08-17 10:32:55 -04:00
Gabriel Brown 67033f2a31 update kitty conf 2026-07-17 15:41:03 -04:00
Gabriel Brown 2dc9676822 Comment out docker host bc that would break server actually 2026-06-30 03:37:16 -04:00
Gabriel Brown 89666e7485 Add update command & podman host to bash 2026-06-30 03:36:22 -04:00
Gabriel 7123bb4885 add alias for resume in claude 2026-06-05 11:09:45 -04:00
Gabriel 7461c88b98 Update nvim config & claude alias 2026-06-05 11:06:09 -04:00
gib 11202d06d9 Add an automatic tmux session when using ssh 2026-06-02 08:22:22 -05:00
Gabriel Brown ac57cfa319 Updates 2026-06-02 09:19:42 -04:00
Gabriel Brown 4c529afae7 Cleanup new nvim config 2026-05-19 12:28:26 -05:00
Gabriel Brown 372a0f60e5 Update neovim config to use lazyvim 2026-05-16 14:26:09 -04:00
Gabriel Brown 19b8ec2542 Update highlighted color in markdown so I can see it! 2026-05-14 11:42:59 -04:00
gib 210bdbdddc Brought back supermavengit add -A! 2026-04-23 09:21:51 -04:00
gib 47137191dd Update nvim config 2026-04-18 15:29:43 -04:00
gib ef2d49fbaa Fix markdown tabs 2026-04-15 20:00:57 -04:00
gib 065b7747cf Update neovim lsp config to work better with monorepo 2026-04-14 20:04:12 -04:00
gib cfc2b82c06 Update vim stuff 2026-04-07 08:24:08 -04:00
gib e985792472 Update stuff 2026-03-28 15:09:20 -05:00
gib d9ee1ddce4 Changes since using laptop 2026-03-25 10:04:49 -05:00
gib 4fcfb9c45e idk 2026-01-03 11:23:56 -06:00
gib 50ea51263a Update dotfiles 2025-12-31 20:28:19 -06:00
gib 53bec8ddbc Update some configs & stuff 2025-12-30 18:00:30 -06:00
gib b8ce2aef5c Add gtk files 2025-12-29 15:41:28 -06:00
gib 7c55264138 Update nvim config & add alias for leetcode plugin 2025-12-25 18:22:12 -06:00
gib 6150274903 Neovim is looking sick now 2025-12-22 13:37:33 -06:00
gib c0ba11768a Add stuff to install script & clean up lsp config 2025-12-22 11:47:38 -06:00
gib fba92951f9 Remove copilot 2025-12-22 11:14:10 -06:00
gib 11863984ca More stuff from laptop 2025-12-22 10:51:54 -06:00
gib e4f1fe8e05 Update from work I did on laptop 2025-12-22 10:46:59 -06:00
gib 18cfd8b174 Update config & make sure avante is set up nicely 2025-12-20 02:54:43 -06:00
gib cba2ca3b1c Update & clean some stuff up 2025-12-18 20:35:11 +00:00
gib 81eefc4f84 Update stuff 2025-12-18 14:17:09 -06:00
gib 5f73b76800 Add more stuff 2025-11-13 16:59:59 -06:00
gib e10c95152e add neovim 2025-11-12 09:46:59 -06:00
gib df4e95bfea init commit 2025-11-07 17:00:48 -06:00