You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/development/iced-parity-inventory.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -187,7 +187,7 @@ product polish, and P2 is an optional native/toolkit refinement.
187
187
| Sidebar collapse/resize | Both references expose a toolbar toggle. Swift persists a 160–400 pt user width; GTK uses a 160 pt minimum/default 220 pt `GtkPaned` without persisting a 400 pt cap | Resolved (plan 016): no in-window collapse affordance, matching the Mac — reopen via keybind/palette only, the ☰ button is removed. Dragging the grip past half the 160 pt floor (below 80 px, unclamped) collapses the sidebar and drops the live drag width without committing, so reopening restores the pre-drag committed width rather than the 160 pt floor. Recorded parity divergence: NSSplitView lets a drag continue past the floor and re-expand within the same gesture; here the grip leaves the tree at collapse, so drag-back-to-reopen within one gesture is impossible | closed | Resize: functional e2e + real-input grip segment (shipped, plan 011). Collapse: unit matrix (threshold crossing, no-Dragged-after-Collapse, released-event no-op, reopen-width invariant) plus capture (shipped, plan 016) |
188
188
| Tab strip | About 24 pt pills in a compact band with 6 pt gaps and horizontal overflow | Closed for active/manual reachability: 24 pt dark pills in a 32 pt band (trued up from 34 pt in plan 016) with independent horizontal overflow | closed | Band/pill geometry assertions under both renderers; overflow test |
189
189
| Tab status | Shared lifecycle dot at leading edge, white active label, muted inactive label | Audit-confirmed 2026-08-07: shared lifecycle derivation holds and the semantic color logic is unit-tested (`app.rs:3502-3529`), but no pixel test captures dot/label geometry — `test_tab_strip_pixels.py` pins only the #281 scrollbar band and the divider hairline | P1 → 3h | Add focused status-slot geometry/color capture; retain the semantic color unit test |
190
-
| Tab close/badge |**Corrected 2026-08-07**: the shipped Mac shows × only on the *active* pill with no hover reveal (`App.swift:4747` — `closeButton.isHidden = !isActive`); the original "or hovered" framing was wrong. Inactive notification uses a blue trailing badge — GTK deliberately hardcodes Mac's `#007aff` (`style.css:277-286`) | Active exact-ID close implemented and covered (real-input `_direct_tab_close`: exact removal, survivor PTY, last-tab cascade; badge suppression + clear in `test_notifications.py`). Hover-close is a *product* decision, not a parity port → 3h. **Open finding: iced's badge is `#4e9af1` (`chrome.rs:59`) vs the references' `#007aff`** — undocumented divergence, filed as [#311](https://github.com/charliek/roost/issues/311)| P1 | Badge color one-constant fix + a badge color/position pixel assertion remain; close/cascade/clear coverage is done (audit runs 2026-08-07) |
190
+
| Tab close/badge | **Corrected 2026-08-07**: the shipped Mac shows × only on the *active* pill with no hover reveal (`App.swift:4747` — `closeButton.isHidden = !isActive`); the original "or hovered" framing was wrong. Inactive notification uses a blue trailing badge — GTK deliberately hardcodes Mac's `#007aff` (`style.css:277-286`) | Active exact-ID close implemented and covered (real-input `_direct_tab_close`: exact removal, survivor PTY, last-tab cascade; badge suppression + clear in `test_notifications.py`). Hover-close is a *product* decision, not a parity port → 3h. **Closed: [#311](https://github.com/charliek/roost/issues/311) is fixed** — `chrome::badge()` now renders a dedicated `NOTIFICATION_BADGE` (`#007aff`) instead of `NOTIFICATION` (`#4e9af1`). The finding turned out to cover two surfaces, not one: `badge()` styles both the tab-pill badge and the sidebar project-row dot, and both have a Mac reference at `NSColor.controlAccentColor` (`App.swift:4772`, `:5207`), so both were corrected | P1 → 3h | Badge fix covered by `test_tab_strip_pixels.py::test_notification_dots_paint_the_accent` (color, size, and position for both the tab badge and the sidebar dot, mutation-verified); close/cascade/clear coverage is done (audit runs 2026-08-07) |
191
191
| Tab rename | Inline rename through double-click or the configured command, with authoritative persistence | Closed: compact inline editor uses stable IDs, select-all focus, Enter commit, Escape/click-away cancel, and shared GTK/Iced trim/no-op policy | closed | X11 physical shortcut/double-click/Enter/Escape/click-away gate, zero PTY leakage, relaunch persistence, and named GTK/Iced captures |
192
192
| Tab reorder | Pointer drag reorder with visible insertion feedback | Closed: stable-ID drag preview, insertion feedback, exact authoritative commit, cancellation, overflow, and relaunch persistence work under both renderers | closed | Bidirectional physical X11/Wayland input, outside-release/palette cancellation, zero PTY leakage, and named product captures |
193
193
| New-tab affordance | Compact plus control following the pills | Closed (re-shaped by plan 016): the plus sits inside the scrolling strip 6px after the last pill and scrolls with overflow — Mac parity, where + is an arranged strip subview. Under overflow it scrolls offscreen (accepted; keybind/palette still create tabs) | closed | Real-input click computed from the last pill's rendered right edge opens one PTY-backed tab (plan 016 harness rework) |
0 commit comments