August 7, 2026
61 recorded commits · 7 named repos · 4 private repos
- Private work 4 private repos
Activity was recorded across 4 private repos. Names, subjects, counts, and links stay private.
- souveraine25 changes
- usb: make the HID controller doorway honest5:36 p.m. · 78d6743 · internal Gitea record only
- memory: base scoped commits on HEAD4:06 p.m. · 9ceaf61 · internal Gitea record only
- memory: persist every git index mutation4:02 p.m. · 0c9db09 · internal Gitea record only
- usb: build the full KVM composite surface2:48 p.m. · 8cd2adb · internal Gitea record only
- multitasking: one owner for the transition, and the release travels12:26 p.m. · 16c6ee1 · internal Gitea record only
ZoneTransition owns the card rect, the four overview verbs, the end-target table and the gesture clock. ZoneOverview and the rail read it; neither derives a geometry.
- the card is the window's size through the whole pull8:52 a.m. · 72171ac · internal Gitea record only
Two fixes to the same seam. columnLayout was still gated on missionControlOpen, so a peek raised a panel whose contents were invisible — the same line that had been left behind once before, with its own comment saying so.
- restore every window the drag posed, not the ones the poll names8:52 a.m. · 452acea · internal Gitea record only
Going home from a pull left the app scaled down until the pill was dragged back to clear it. clearPose walked ViewtopControl.windows, which is the 2 s poll's list, so a window that list no longer named never got its 1.0 back. Track the ids actually posed and clear those too.
- multitasking draws under a dwelling thumb8:42 a.m. · f699f57 · internal Gitea record only
The overview loader was only active once missionControlOpen was already true, so nothing existed during the pull and ZoneOverview.progress following the rail was dead mid-drag. The cards appeared at release and animated on their own clock — two motions, which is the seam TASK-60's acceptance names.
- rail: the pose rides the drag, not each exit path8:41 a.m. · 57208c8 · internal Gitea record only
A partial slide left the app scaled small until another pull brought it back (DUMP-bugs 8). Every path anyone checked did call endPull, so the hunt for the one that didn't was the wrong shape: while restoring is a step, some path skips it. It is now a function of `dragging`.
- handoff: 2026-08-072:29 a.m. · 14c3c80 · internal Gitea record only
- sidebar: the keyboard leaves with the panel that summoned it2:24 a.m. · 630d691 · internal Gitea record only
The drawer clears oskOpen on close and this did not, so the OSK outlived the surface holding the only text field it was serving — and with nothing focused there was no obvious way to put it away.
- drawer: the keyboard comes up on a tap, not on a press2:22 a.m. · f4caaae · internal Gitea record only
Summoning on onPressed meant any gesture that merely began over the search field raised the keyboard — including the swipe that scrolls the app grid, which starts at the top of the drawer more often than not. The press now only remembers where it landed and the release decides, with a generous slop: a thumb reaching the top of a 540px panel is not steady, and a few pixels of drift while tapping a text field is a tap.
- face: her postures reach the rig, and she stops miming on startup2:21 a.m. · 47e8135 · internal Gitea record only
`posture()` called window.live2dMotion, which does not exist — measured undefined on the device. Nine states advertised to her in the prompt and wired to nothing. The bundle exposes two levers: #live_talk, a motion slot it reads every frame, and its own head/body hit test. The nine collapse onto those rather than pretending: speaking talks, idle rests, and the rest are a look — head for attention, body for effort.
- Revert the duplicate onCanceled on the rail2:07 a.m. · e218601 · internal Gitea record only
The handler already existed and already did this — a second one in the same MouseArea is "Property value set multiple times", which failed the whole module and took the shell down. The pill's stranded-pose symptom is something else; the cancel path was never the hole.
- pill: a cancelled climb puts the app back2:06 a.m. · 4826574 · internal Gitea record only
onReleased is the only thing that clears the pull's pose, and a MouseArea whose grab is taken away never gets one — it gets onCanceled, which had no handler. So a cancelled climb left `dragging` true, the pull progress set and the app posed at 0.6: shrunken, with nothing on screen to say why, and no way back except pulling the pill again to force a fresh press and release through.
- dock: scale it up, and put the scale in settings2:04 a.m. · 5c44ea0 · internal Gitea record only
44px buttons with 35px icons read small on a 540px panel, and a stack's members were 12px inside a 35px box — unreadable, which is the whole job of the collapsed form. 56/44 now, and the member icons give back the border and padding that were being subtracted from them as well as the grid spacing.
- multitasking: inset the cards so neighbouring zones show through1:34 a.m. · a1d9a87 · internal Gitea record only
- multitasking: the cards were zero pixels wide1:32 a.m. · 6f37528 · internal Gitea record only
ZoneOverview took its width from the Column it sits in, and a Column is as wide as its widest child. The drawer's search widget supplies that; mission control is the cards alone and has no search, so the only child left was the loader — whose width came from the column, whose width came from the loader. The cycle resolves to zero.
- overview: a verb for mission control, and a state readout1:23 a.m. · 5ec6bfd · internal Gitea record only
Multitasking was raised only by the pill's first-stage swipe, so the one surface that has been reported broken was the one neither an agent nor a test could reach. state() reports what the cards are drawn from.
- face: locking sends her away, and she stays away1:11 a.m. · 075ddf1 · internal Gitea record only
Gated on screenLockSecure, the compositor's ack, not on screenLocked. The request drifts: measured on the phone, `session lock` answered already-locked while logind reported LockedHint=no and the phone was in use. That is a shadow copy of state the protocol owns, and a face gated on it would have been permanently dismissed with nothing on screen to explain why.
- face: follow the finger anywhere on the panel1:01 a.m. · c8dc24d · internal Gitea record only
Subscribes to viewtop's gaze feed and dispatches a synthetic pointer move on the canvas, so live2d.js's own mousemove path drives head angle and eye direction with its existing damping. Synthetic is the point: she is deliberately not being given those contacts, and this lets her watch them anyway.
- deleted branch Fimeg/souveraine12:31 a.m. · forge event · internal Gitea record only
- dial: hold the camera to record the screen12:24 a.m. · ae432e7 · internal Gitea record only
Entries may carry a hold verb beside verb; the ring fills while it charges so the commitment is visible while it is still cancellable, and sliding off cancels. Holding the camera starts a recording, tapping or holding it again stops it — the same seat, because the dial is muscle memory.
- her face on the glass: it draws, it listens, and it gets out of the way12:24 a.m. · ac35b34 · internal Gitea record only
The rig never drew. live2d.js is not only the Cubism runtime — it carries the reference's character layer, which reads #live_talk every update as its motion-state slot. Our page omitted the element, so it threw on the first frame after the model and all four textures had loaded: assets 200, WebGL live, no error reaching Rust, blank canvas.
- gamma goes to the compositor, not to a binary that is not there12:24 a.m. · 78496e1 · internal Gitea record only
hyprsunset does not exist under viewtop and execDetached cannot fail loudly, so the brightness slider and the night light have done nothing since the move. Same public surface, pointed at viewtop's gamma verb. TASK-61.
- SouveraineOS14 changes
- docs: record SLIMbus v1 submission8:40 p.m. · 376ef95 · internal Gitea record only
- docs: normalize SLIMbus sender address8:22 p.m. · df334ca · internal Gitea record only
- docs: record SLIMbus review result8:00 p.m. · bc00214 · internal Gitea record only
- docs: park SLIMbus upstream follow-up7:40 p.m. · 4f8f7cf · internal Gitea record only
- docs: record the first live HID cable proof5:36 p.m. · 327c08c · internal Gitea record only
- docs: record the USB landing and VPN gate5:24 p.m. · 721b0c7 · internal Gitea record only
- docs: archive the memory write-path audit4:16 p.m. · 5cc4020 · internal Gitea record only
- docs: keep USB authority and hardware acceptance open3:55 p.m. · b1a9efc · internal Gitea record only
- docs: reconcile USB, Waydroid, audio and charging2:52 p.m. · 4aa61d7 · internal Gitea record only
- TASK-60: shell half done; the release was the seam12:26 p.m. · 71f6ce5 · internal Gitea record only
The awkward hand-off was not the dwell gate — it was committing at whatever shift the thumb left. quickstep travels to the end target first; settleTo does that now. Dwell restored to match prior art.
- TASK-60: compositor half done, shell half specified9:50 a.m. · f71f0d7 · internal Gitea record only
- TASK-60: one owner for the transition9:18 a.m. · ee8697c · internal Gitea record only
Two writers own one geometry — the rail's pose and ZoneOverview's scale, running opposite curves off the same progress. Three attempts to make the numbers agree failed in a session. The strand proves it: the repro path is card taps, which never reach the rail's clear-the-pose code.
- 59/60 and the bug dump: what landed the day her face went on the glass2:29 a.m. · 528d290 · internal Gitea record only
TASK-59 becomes a record of five bugs that each presented as something else — the missing #live_talk element, --app-id doing nothing, the GL context claimed before the canvas was sized, posture wired to a function that does not exist, and a feed that dropped its own reader for being slow. Plus the furniture role, input regions, gaze, and what the rig costs next.
- bugs: the multitasking cards are blocked on screencopy hanging, not on missing data1:24 a.m. · d62ae3f · internal Gitea record only
- Pixel3Arch14 changes
- upstream: record SLIMbus v1 submission8:39 p.m. · fe8ad41 · internal Gitea record only
- upstream: normalize SLIMbus sender address8:22 p.m. · b77f181 · internal Gitea record only
- upstream: apply SLIMbus review notes7:57 p.m. · 31fe89c · internal Gitea record only
- upstream: use Samaritan Solutions identity for SLIMbus patch7:28 p.m. · b2a1d2c · internal Gitea record only
- upstream: make DEF_ACT_CHAN patch speak plainly7:17 p.m. · e8bb2bf · internal Gitea record only
- upstream: prepare SLIMbus DEF_ACT_CHAN fix7:07 p.m. · 6a75798 · internal Gitea record only
- usb: publish the management tether owner3:54 p.m. · 8c9c50f · internal Gitea record only
- smoo: provision its pinned cross target3:40 p.m. · 3924279 · internal Gitea record only
- ci: let package prepares populate Cargo3:35 p.m. · 4e862e8 · internal Gitea record only
- smoo: fetch host build dependencies3:31 p.m. · d7c765a · internal Gitea record only
- smoo: fetch before the offline build3:24 p.m. · b6bc0ff · internal Gitea record only
- ci: bound package workspace storage3:04 p.m. · d151164 · internal Gitea record only
- usb: package the full HID and KVM gadget2:51 p.m. · 258c995 · internal Gitea record only
- triage: find the phone when the laptop is on a foreign network9:49 a.m. · 9b1afd1 · internal Gitea record only
Section 6 told the reader to get the address from the router, which is advice you cannot follow from a laptop that already knows the subnet. When both defaults fail, sweep the laptop's own non-home subnets and report only addresses that answer ssh on our key. Cost 2026-08-07 its first twenty minutes.
- souveraine-viewtop7 changes
- the overview carry: one owner for the transition geometry9:46 a.m. · 3c85397 · internal Gitea record only
The shell scaled real windows through pose while ZoneOverview scaled its cards, both off one progress and running opposite curves, so the window was at 0.6 of the glass when the card arrived near full bleed. Worse, the pose was applied by the rail and had to be undone by whoever ended the gesture — tapping a card never touches the rail, so a window came back shrunk with no way to restore it.
- feeds: a slow subscriber is behind, not gone2:21 a.m. · 62ec16b · internal Gitea record only
A full channel dropped the subscriber, which made a fast stream self-terminating: gaze pushes at ~25/s filled the queue faster than a QML socket drained it, so the shell was unsubscribed inside the first burst of a drag and never told. It looked exactly like a compositor that had stopped pushing — and an external client that read faster kept working, which is what made it look like the shell's bug.
- layer surfaces get their popups drawn, and touched1:52 a.m. · b14d992 · internal Gitea record only
An xdg_popup is its own surface, not a subsurface, so a layer surface's surface tree does not contain it — and only toplevels had a popup pass. Every menu the shell opened from the bar, the dock or the pill was created, configured, and never composited. The dock's app-stack fan named it: tapping a stack set `expanded`, built the arc, and put nothing on the glass.
- move mode: the sheet that ends it keeps its touches1:45 a.m. · f6778ef · internal Gitea record only
Withholding every client contact during a grab took the shell's own chrome with it, because a quickshell layer surface is a Wayland client like any other. So "Done moving" went deaf and the move could be entered and never left. Top and overlay layers are exempt now; the app underneath still gets nothing, which is the point of the grab.
- gaze: push where contacts are, so a face can look at them12:59 a.m. · d7a6760 · internal Gitea record only
Her input region is her silhouette now, so the compositor stops handing her contacts that land on the wallpaper — which also stopped her tracking unless you touched her first. Where a finger is and who receives it are different questions; this answers the first without changing the second.
- furniture: a role for the face, and honour input regions12:20 a.m. · bb95307 · internal Gitea record only
A toplevel is classified at its first commit rather than at map, because xdg_toplevel is created before the client sends set_app_id — so the old code minted a zone, moved the strip, took the keyboard and told the dock about a window it had not yet identified. Furniture (org.souveraine.face) takes no zone, is announced to nobody, wears no frame, keeps its own size, and hangs from the top of the zone with the room below it left free.
- colour management: map sRGB into the panel's primaries12:20 a.m. · 21882c9 · internal Gitea record only
blueline's SW43408 has no EDID and viewtop has been scanning out raw sRGB onto a ~P3 panel since the move off Hyprland, so everything reads oversaturated. The linear-light transform lives in the GLES fork; this side owns which matrix, because only the compositor knows which device it is.
- linux-blueline2 changes
- taggedtagged Fimeg/linux-blueline8:39 p.m. · forge event · internal Gitea record only
- slimbus: qcom-ngd-ctrl: match downstream DEF_ACT_CHAN encoding7:16 p.m. · 184997d · internal Gitea record only
To: Srinivas Kandagatla <[email protected]> Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Signed-off-by: Casey Tunturi <[email protected]>
- smithay2 changes
- deleted branch Fimeg/smithay12:17 a.m. · forge event · internal Gitea record only
- gles: optional linear-space gamut transform on sampled textures12:07 a.m. · 25ef078 · internal Gitea record only
The transform rides on a uniform rather than a shader variant, so an unmanaged draw takes no colour arithmetic at all and stays byte-through. Un-premultiplies around the sRGB transfer functions: a 3x3 commutes with the alpha scalar, the transfer curve does not, so decoding premultiplied values shifts hue at every alpha but 1.
- souveraine-usb1 change
- new repocreated repo Fimeg/souveraine-usb1:20 p.m. · forge event · internal Gitea record only