Casey Tunturi

August 4, 2026

August 4, 2026

31 recorded commits · 4 named repos · 7 private repos

Work threads
compositor9task 536shell5packages4claude2docssensordsouveraine-viewtop
  • Private work 7 private repos

    Activity was recorded across 7 private repos. Names, subjects, counts, and links stay private.

  • souveraine10 changes
    • claude: adopt rotated credentials instead of failing until restart
      8:25 p.m. · bc09480 · internal Gitea record only

      The credential file is shared with `claude` itself and its refresh token is one-time-use, so whichever process refreshes first rotates the other's copy to spent. On a failed refresh the provider kept the stale token and 400d every turn until the service was restarted by hand — measured 2026-08-05, invalid_grant from 00:03 onward while the file on disk already held a valid pair written at 00:08.

    • shell: the bar claims its space instead of asking to be ignored
      7:27 p.m. · ca272d1 · internal Gitea record only

      exclusionMode was ExclusionMode.Ignore, which tells the compositor to disregard the exclusive zone outright — so the expression below it computed a height that was thrown away and every window laid out underneath the bar. The bar is not app space while it is visible.

    • shell: read the instance file synchronously, or it is empty when asked
      7:25 p.m. · 80cb4b2 · internal Gitea record only

      FileView loads async, so text() was still empty when onReadyChanged read it once to decide whether this is a new session. It fell through to the unset env var and persisted "" — the same bug, reached by a different route. Verified on device: the stored signature now matches viewtop.instance.

    • shell: take the instance signature from viewtop, not from Hyprland's env
      7:19 p.m. · 95dd21b · internal Gitea record only

      HYPRLAND_INSTANCE_SIGNATURE is unset under viewtop, so this compared "" to "" and isNewHyprlandInstance was false on every start. It gates lock.launchOnStartup, which has therefore never fired once under viewtop, and both Idle.qml copies read it as well.

    • sensord: stop claiming the accelerometer
      4:17 p.m. · 6b67512 · internal Gitea record only

      Measured on the phone, idle, screen on, same session, one flag apart:

    • shell: answer to the ipc target sessiond actually calls
      3:02 p.m. · f320a02 · internal Gitea record only

      Action::Overview shells out to `ipc call overview toggle`. The only handler here was `search`, so that call reached nothing and the three-finger tap did nothing, without an error anyone would see.

    • shell: mission control draws the cards it was already building
      2:43 p.m. · 44a5433 · internal Gitea record only

      The panel, its mask and the loader all moved to overviewOpen || missionControlOpen when mission control landed; the Column holding them did not. So the second-stage pill swipe raised a panel whose entire contents were invisible — WindowOverview instantiated, laid out, and never shown.

    • claude: fix Opus 5 wire incompatibilities
      11:27 a.m. · 1a3c24f · internal Gitea record only

      Drop temperature for models that removed sampling params (400 otherwise). Preserve signed thinking blocks across tool rounds — Anthropic rejects a tool_use whose preceding thinking block was dropped. Raise default max_tokens to 32k for thinking-by-default models and request summarized display so the reasoning pane is fed.

    • deploy: WindowOverview is in the qmldir and was not in the manifest
      9:39 a.m. · d0c6488 · internal Gitea record only
    • overview: viewtop has workspaces; the header said it did not
      9:32 a.m. · 356cfc6 · internal Gitea record only
  • souveraine-viewtop9 changes
    • compositor: publish an identity for this run, so the shell can tell it apart
      7:16 p.m. · 3d1cbe2 · internal Gitea record only

      The shell's answer to "did the session just come up, or did I reload?" was HYPRLAND_INSTANCE_SIGNATURE. That is unset here, so Persistent.qml compared the empty string to the empty string and concluded "not a new instance" every time. `lock.launchOnStartup` is gated on exactly that flag and has therefore never fired once under viewtop; idle behaviour hangs off it too.

    • compositor: publish a window's title when it sets one
      4:45 p.m. · f25c2b2 · internal Gitea record only

      publish_toplevel ran at map, on focus change, and on maximize/fullscreen — never on commit. Clients set xdg_toplevel.title *after* mapping and change it constantly after that: a terminal per command, a browser per tab. So the one publish at map time carried the empty string and nothing corrected it.

    • compositor: serve the window capture the shell actually asks for
      2:55 p.m. · 86d0f93 · internal Gitea record only

      quickshell holds wlr toplevel handles — that is the protocol with activate and close, so it is the only one that can carry the dock. An ext capture source is named by an ext_foreign_toplevel_handle_v1 from a different protocol, and nothing correlates the two, so the standard per-window path served here was unreachable. Measured: assigning a Toplevel to a ScreencopyView logs "Capture source set to non captureable object" and this compositor is never asked. Every overview card and dock preview was a title over a transparent box while the code to fill it sat here, complete.

    • compositor: a missing sessiond is a wait, not a verdict
      10:34 a.m. · 6c9614c · internal Gitea record only

      Cold boot 2026-08-04: viewtop looked for the socket 0.46s into its life, sessiond's user unit bound it a moment later, and both callers returned for good — every button edge, gesture, wake and touch report discarded for the life of the process, and observe_authority never fed. The phone came up with a working screen and a dead power button; sessiond still read touch: unknown an hour later.

    • compositor: a close removes its own membership, so the drift warning means drift
      9:50 a.m. · 6446386 · internal Gitea record only
    • compositor: delivered means it reached a client, not that the slot is held
      9:45 a.m. · bed1ed6 · internal Gitea record only

      Found on the phone: touch_down on a locked session answered {"delivered": true} while resolve had withheld the contact. A withheld contact stays tracked on purpose — evidence is about the finger — so is_down was the wrong question.

    • compositor: a render that drew nothing does not retire a flip already in flight
      9:35 a.m. · b7d3ebb · internal Gitea record only
    • compositor: the rest of the audit — one hit test, bounded contacts, a way back from floating
      9:28 a.m. · ba82168 · internal Gitea record only

      TASK-53 §1-§10.

    • compositor: the three-finger tap is named and sent, not decided here
      8:12 a.m. · e0ad2c4 · internal Gitea record only

      `on_gesture` called `toggle_float` directly, which made the compositor both the recogniser and the binder — the eighth blind actor DEVICE-STATE-MACHINE §12 forbids by name, and what [host] cost: 652 tunnel recycles in ninety minutes with no way to turn it off.

  • SouveraineOS7 changes
    • docs: the day viewtop got its package, its titles and its borders
      6:18 p.m. · 18c58fc · internal Gitea record only

      STATE.md was five days stale. It now carries what is on the phone (viewtop r76, souveraine r333) and the four defects fixed on the glass: per-window capture was unreachable because quickshell holds wlr handles and the ext capture source is named by an ext handle with nothing correlating them; titles were never republished on commit; the border was a filled slab that relied on the client covering its middle; capture came back flipped.

    • task 53: the third defect the hardware found — discovery gave up on sessiond
      10:39 a.m. · 271e22c · internal Gitea record only
    • task 53: shipped as a package, cold boot verified
      10:03 a.m. · 6b38f64 · internal Gitea record only
    • task 53: verified on the phone; two more found by running it
      9:52 a.m. · 74c653a · internal Gitea record only
    • task 53: all ten fixed and pushed; unverified on glass
      9:31 a.m. · 8ac3267 · internal Gitea record only
    • task 53: un-floating a window has no verb
      8:12 a.m. · f282747 · internal Gitea record only

      toggle_float was the only caller-visible un-float and it went with the three-finger binding when that became a sessiond verb. Recorded rather than left as dead code with a comment.

    • task 53: what the compositor audit left open
      8:07 a.m. · 0a36a4d · internal Gitea record only

      Nine findings from an adversarial read of the night's work, ranked. Six others from the same audit are already fixed; these are the rest.

  • Pixel3Arch5 changes
    • packages: authenticate viewtop's clone via GIT_CONFIG env
      3:41 p.m. · a3d5df9 · internal Gitea record only

      Gitea requires sign-in instance-wide, so a public repo still 403s anonymously. makepkg spawns its own git and git config --global does not reach it; the GIT_CONFIG_COUNT/KEY/VALUE form does, since git reads it per process.

    • packages: viewtop clones anonymously, like every other source
      3:36 p.m. · 6449540 · internal Gitea record only

      The repo is public now, so makepkg needs no credentials and the extraheader attempt comes back out — it did not work anyway (global git config does not reach makepkg's clone), and config that looks like it authenticates but does not is worse than none.

    • packages: viewtop's clone needs credentials, it is the only one that does
      3:28 p.m. · af17845 · internal Gitea record only

      souveraine-viewtop is the only PKGBUILD whose source= is a repo on our own Gitea; everything else fetches from a public host or from this checkout. So it was the only clone makepkg could not authenticate, and it died with "could not read Username" after twenty minutes of other packages built.

    • packages: build souveraine-viewtop, which nothing ever did
      3:23 p.m. · aee40a0 · internal Gitea record only

      The PKGBUILD has been in pkgs/ since the hand-scp era and appears in none of the build lists here, so the package it exists to replace kept being made by hand on [host]. The device ran r74 while main was several commits ahead, and a green run on the viewtop repo said nothing about that: its CI only checks — fmt, clippy, test, cross-build — and never publishes.

    • souveraine-viewtop: pkgver to the built tip
      10:24 a.m. · 5453d68 · internal Gitea record only