TASK-60: compositor half done, shell half specified
This commit is contained in:
parent
ee8697cd8f
commit
f71f0d722a
1 changed files with 43 additions and 0 deletions
|
|
@ -80,6 +80,49 @@ for the same shape and is worth reading before the shell half.
|
|||
composition, so `focus_border` suppresses itself while a window is owned by
|
||||
the transition and the card carries the chrome.
|
||||
|
||||
### Compositor half: DONE 2026-08-07 (`souveraine-viewtop` `3c85397`)
|
||||
|
||||
Gates green on archdev — 239 tests, `cargo fmt`, workspace clippy and
|
||||
`--features kms` clippy, all `-D warnings`. Not yet on the phone: needs a CI
|
||||
package and a session restart.
|
||||
|
||||
- `crates/compositor/src/transition.rs` — the state. `begin(&[TransitionTarget])`
|
||||
/ `shift_to(0..=1)` / `commit(EndTarget)` / `cancel()` / `forget(id)`, seven
|
||||
unit tests. Empty `begin` refused; `forget` on the last leg ends the flight;
|
||||
`forget` is wired to surface destruction beside `navigation.forget`.
|
||||
- Wire: `OverviewBegin { to } / OverviewProgress { progress } / OverviewCommit
|
||||
{ target } / OverviewCancel`, plus `TransitionTarget` and `EndTarget`
|
||||
(`home | overview | last_zone | zone{zone}`), all four in the verb table.
|
||||
- Geometry: `Viewtop::carried(window)` returns the lerped origin and scale, and
|
||||
**`window_origin` and `window_extent` both consult it**, so the render and the
|
||||
hit test inherit the carry with no call-site changes. Anchor is `(0,0)` on
|
||||
purpose so `pose_origin`'s pivot term vanishes.
|
||||
- `focus_border` returns empty while a window is carried — the card owns the
|
||||
frame.
|
||||
|
||||
### Shell half: the next session, and it is well defined
|
||||
|
||||
Rewrite the pill and `ZoneOverview` to drive the four verbs instead of posing
|
||||
windows and scaling cards independently.
|
||||
|
||||
1. `ZoneOverview` computes each zone card's rect in panel coordinates. That rect
|
||||
— not `0.6`, not an inset — is the `TransitionTarget` for the windows on that
|
||||
zone.
|
||||
2. `SystemGestureRail.onPressed` → `overview_begin` with those rects.
|
||||
`onPositionChanged` → `overview_progress`. Release → `overview_commit` with
|
||||
the end target chosen from projected travel and dwell, or `overview_cancel`.
|
||||
3. **Delete** `ViewtopControl.poseActiveZone` / `clearPose` / `_posed` and
|
||||
`GlobalStates.zonePullProgress`'s pose duties, and drop `zoneCard.scale`
|
||||
entirely — the compositor is now carrying the real window onto that rect, so
|
||||
a card that also scales is the second writer all over again. The card becomes
|
||||
chrome: label, close control, and the neighbours either side.
|
||||
4. Tapping a card is `overview_commit { target: zone }` — which is what makes the
|
||||
strand repro pass, because that path now releases like every other.
|
||||
|
||||
Today's four shell commits (`57208c8`, `f699f57`, `452acea`, `72171ac`) are the
|
||||
two-writer design and step 3 deletes most of them. Kept on the phone meanwhile
|
||||
because the sizes at least agree.
|
||||
|
||||
### It has to be a verb, because she gives the tour
|
||||
|
||||
Casey, 2026-08-07: there is a point where an agent is asked for a tour or a demo
|
||||
|
|
|
|||
Loading…
Reference in a new issue