Skip to content

CONTRACT: feat(storage): deliver the complete Settings inspection and removal pane - #2151

Closed
schlessera wants to merge 3 commits into
feat/2012-storage-removal-g4c2from
feat/2013-storage-pane-j6m8
Closed

schlessera wants to merge 3 commits into
feat/2012-storage-removal-g4c2from
feat/2013-storage-pane-j6m8

Conversation

@schlessera

Copy link
Copy Markdown
Owner

Closes #2013

What changed

Storage is the eighth Settings pane after Modules, with the complete inspection, selection, fresh review, removal, result and retained Undo journey. It exposes separate filesystem capacities, ownership views, a keyboard-accessible map and equivalent paged list, strict PDF size filtering, exact inspected versions, reference uncertainty, approved maintenance and durable per-file outcomes. The default Settings pane and main destinations are unchanged.

This draft targets the removal branch in #2139 to expose only its presentation changes. Delivery waits for #2061, #2138 and #2139 to land, then this branch will be reconstructed onto their actual main commits and receive full candidate proof. It is not a native-stack merge request.

Why this shape

The approved Storage design requires the initial public pane to include safe removal. ui-kit owns the prop-driven map; ui-react owns the root-scoped transport and interaction lifetime. Browsing uses the read-only inspection endpoint, while confirmation always requires a new durable version-bound review. Lost responses read the original receipt, and account/root replacement discards selections and late responses. Unknown allocation never becomes file size or map area; shared capacities and object aliases do not gain duplicate area. New observations are adopted explicitly so an asynchronous refresh cannot reorder a focused selection.

Proof

  • Pinned Chromium: 39 browser tests passed across Storage interaction, Settings navigation and real HTTP journeys. Tests cover dark/paper at 320/1280, 200% zoom, 44px targets, accessible names and WCAG checks, greyscale captures, three-level keyboard drill-down, 205-entry paging, root/account replacement, cancellation, stale review, mixed outcomes and lost replies.
  • Real mounted routes remove a 5.1 MB attachment, lose the confirmation response after the effect, read the original receipt without reposting, and restore the exact original bytes at both widths. A changed source survives confirmation. The native fixture is the explicit copied-input broker; it is not Btrfs host qualification.
  • Eight independent browser mutations fail at named assertions: strict PDF threshold, capacity deduplication, unknown allocation, alias area, ineligible selection, changed-review confirmation, root lifetime and lost-response repost. Restoring the code passes all checks. The invalid-filter regression also failed first at STORAGE_INVALID_FILTER_HAS_NO_OLD_ROWS, then passed after the prior result was cleared.
  • Eight interactive stories pass in both configured themes, including removal and Undo. Phone/desktop overview, phone review/result, zoom and greyscale captures were inspected and retained. Screenshots support visual judgment; runtime assertions establish the effects.
  • Full build, public API reports and TypeScript pass. Changeset package references and the complete pending changeset plan validate. bun run check:pr --base origin/main passes 864 tests / 5,541 assertions; moved citations are repaired.

Selected hosted proof remains pending on the eventual main-based candidate. Local receipts are not presented as hosted checks.

Checklist

  • Complete selected hosted proof and actual head/base/checkout evidence recorded.
  • Initial pane includes the complete approved journey and user documentation.
  • PR and issue assigned release milestone 0.44.0; read back again before merge.
  • Minor changeset covers ui-react and ui-kit.
  • Package contracts, API reports and moved citations updated.
  • Local leakage and focused preflight gates passed.

Anything left open

Parent delivery, the main-based candidate review and selected hosted proof. Growth history, pressure guidance, the persistent indicator and Critical Web Push remain in #2058/#2059 under the approved #2014 policy. Existing owner preflight decides whether an operation has enough headroom; this pane does not promise reclaimed bytes or erase Git/journal history.

@schlessera schlessera added this to the 0.44.0 milestone Oct 16, 2026
@schlessera schlessera added type: feat A new capability or a change in user-visible behaviour. area: ui-react React chat/files/voice components, stores, WebSocket transport. area: ui-kit The presentational design kit: components, tokens, Storybook, visual baselines. contract Touches the integration contract: CONTRACT: commit, contract doc updated in the same commit. labels Oct 16, 2026
@schlessera

Copy link
Copy Markdown
Owner Author

Delivered through combined PR #2172, squash caae12da2e678dd4720bf112e93ef21812cfdc18 on main. The actual squash parent/tree matches the fully confirmed candidate; all 17 selected ready-PR jobs passed, and the automatic main-push result is recorded below. Release milestone 0.44.0 is retained.

This draft's reviewed head 4c4094c1c8969a33193b101c6051b489b7404aa3 contributes the same patches already included in the combined candidate: 8d2ed932b5443212f6b9a9bf4d87581c6806b6ab, 9fb15e865ce470fd4c905c2223a350f82bd57d1f, 4c4094c1c8969a33193b101c6051b489b7404aa3. The six draft heads were re-read before reconciliation and remained unchanged.

Automatic main-push CI 39302987919, attempt 1 is not green. Its unit (1) job 118233088097 failed the Claude provider-history fixture with ENOENT while reading /proc/self/fd/17/maintenance.lock, matching the existing fixture-maintenance race in #2405. The Storage delivery issues remain open pending the remaining main qualification. The passing PR confirmation and actual merged tree remain recorded separately from this failed main run.

Closing this overlapping draft as superseded because its contributions are already present on main through #2172. Main qualification remains incomplete as recorded above. This PR is closed, not independently merged; its branch and historical review/test receipts are preserved.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: ui-kit The presentational design kit: components, tokens, Storybook, visual baselines. area: ui-react React chat/files/voice components, stores, WebSocket transport. contract Touches the integration contract: CONTRACT: commit, contract doc updated in the same commit. type: feat A new capability or a change in user-visible behaviour.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant