Skip to content

Browser tabs: grouped pairs and descriptive Island controls - #873

Open
hussainph wants to merge 11 commits into
mainfrom
volli/VC-614-browser-ux-is-completely-broken-and-very-annoyin
Open

hussainph wants to merge 11 commits into
mainfrom
volli/VC-614-browser-ux-is-completely-broken-and-very-annoyin

Conversation

@hussainph

@hussainph hussainph commented Oct 16, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • Make splits independent, area-local tab pairs shown as one joined chip. Other tabs use the full plane; returning restores the pair. Board/Body can pair, either member can close or detach, and saved pane layouts convert on read without dropping tabs.
  • Reveal agent pages beside their owning chat. Remove the retired composer mini-preview renderer and its unused helpers; keep browser chrome, unsent address edits, native pages and live terminal hosts resident through layout/navigation changes.
  • Use Classic tab/browser chrome, Session glyphs, bounded hold controls and reduced-motion cursor arrival feedback.
  • Make the Island browser list title-first with host:port/path, attention ordering, working close buttons and Undo. Keep all hold semantics unchanged.

Compatibility

Pair metadata is additive. The legacy root remains readable; frozen previous-reader codec tests cover selected pairs, pending partners and ordinary full-width selections. Older builds may lose pair layout, not tabs. Untouched Chat Draft IDs stay renderer-local until content exists.

"preview" remains accepted by the IPC, host and public protocol for N−1 clients. The renderer lists legacy preview tabs just like headless tabs; Island reveal promotes the same tab identity to "tab" and pairs it beside its owner. A hook-to-real-layout regression covers that path.

Checks run

Mini-preview removal follow-up: 45 focused desktop tests passed; the changed Island feed and browser store each have 100% statements/branches/functions/lines (39 tests). Presentation contract coverage remains 100% (45 tests). Desktop and presentation typechecks, scoped vp check, production build, git diff --check and protocol compatibility check passed.

  • Affected desktop tests: 18 files / 472 tests passed, plus the final visual-order helper run (3 passed).
  • Shared split model: 113 passed, 100% statements/branches/functions/lines.
  • Activity Island feed/composition: 38 passed, 100% coverage on the two protected files.
  • Presentation model: 45 passed, 100% coverage.
  • Driver launch-gate tests: 9 passed; split smoke syntax check passed.
  • Desktop, shared, presentation and root TypeScript checks passed.
  • Scoped vp check (58 files), design-token check, git diff --check, production build and pnpm check:protocol-schema --base origin/main passed.
  • Updated split-view-smoke.mjs preserves keyboard, native-file drag, tab-edge drag, reorder and terminal-identity coverage under the pair model. CI owns execution of the smoke lanes.

Drove it in the live app

Used the verify-volli guarded dev build. The only mocked boundary was the loopback model provider; real Browser tools opened real localhost fixture pages. The keychain guard remained active with 0 violations.

  • Home and Ticket Island reveal created one joined Chat/Browser chip and two named planes.
  • Board filled the plane with no separator; returning restored the pair. Home → Ticket → Home preserved the same unsent address field (http://127.0.0.1:49638/unsent-address).
  • Unpair retained both tabs and kept the focused browser full-width. Revealing it again restored pairing.
  • Close removed the row; Undo restored it. A close allowed to expire destroyed the native tab rather than leaving an inert list entry.
  • Six distinguishable localhost pages exercised the existing per-Session safety cap. A separate 15-row UI regression covers larger combined inventories; the cap is unchanged.
  • Light and dark screenshots: visual evidence. Screenshots are external to the repository.

Representative driver transcript: vd-b6af7c generations 7 → 10 → 13 → 16 (pair → Board → Ticket → restored address), 18 (unpair), 37 → 38 → 40 (close → Undo → restored Settings row). Persisted volli:workspace read showed pairCount: 1; the unpair read on vd-d2b009 showed splitView: null while both tabs remained open.

The semantic driver has no pointer-drag verb: pointer-edge gestures are covered by the updated CI smoke, not claimed as manual live evidence.

After removing the mini-preview renderer, re-drove Island → Open beside chat in guarded instance vd-492f30 (generations 6 → 7 → 8 → 9). The joined owner/browser chip, two named panes and native login page appeared; a host-side workspace read confirmed the same pair. Guard: 0 violations; instance and local server stopped. Fresh screenshot and proof. Legacy-preview fallback is covered by the integration regression, not claimed as a live UI setup.

How to test

  1. Ask a chat to open two different localhost pages. Open its Island browser list and select a page.
  2. Verify [Chat | page], then select Board/Body or another chat: it should fill the plane. Return to the chip.
  3. Drag one member out, re-pair by dropping on another tab's left/right edge, then close either member. Try an untouched Draft on either side too.
  4. Type an address without submitting it, visit another Ticket, and return: the edit and page should remain.
  5. In the Island, close a page and Undo; close another and let Undo expire. Check titles and paths in light/dark appearance.

Do not merge or cut a release; owner testing comes first.

@hussainph hussainph added the rc-0.2.2 0.2.2 release candidate label Oct 16, 2026
@coderabbitai

coderabbitai Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 4ef3f989-ca43-471d-ba23-9ddc52d6aba6
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@hussainph

Copy link
Copy Markdown
Owner Author

Captured live UI — light and dark

Captured through the isolated, keychain-free driver with real localhost pages and a loopback fake model. These are self-contained SVG renderings of the screenshots (resized/quantized for attachment); no screenshots were committed to the repository. Evidence files and flow summary.

Dark Light
Dark Chat and Browser pair Light Chat and Browser pair
Dark localhost list Light localhost list after Undo

@hussainph

Copy link
Copy Markdown
Owner Author

CI repair pushed in 9310de5. Workspace-store focused coverage now passes at 100% statements/branches/functions/lines (232 tests); 78 related Draft/selection tests and all four desktop TypeScript configurations passed. Updated the headless, native-overlay and replay smoke entry paths for the single area strip, owner/browser pairs, Close/Undo and transcript Replay, preserving their behavioral assertions. Scoped formatting/lint and syntax checks passed; the new CI gate is running. The grouped-pair smoke passed on the first run.

@hussainph

Copy link
Copy Markdown
Owner Author

Pushed a722950 to address the remaining CI failures. Tab-edge pairing now uses viewport pointer coordinates (not scroll-adjusted drag translation), keeps surface tab targets stationary, and ignores clipped edges. Drag smoke journeys remeasure the current target after activation. Replay smoke now verifies the exact BrowserTabCard identities after opening transcript disclosures, allowing adjacent tool entries to share a bundle. Existing behavioral assertions remain intact.

Validation: 30 focused drag/tab-strip tests passed; all four desktop typechecks passed; scoped vp check, JavaScript syntax checks and git diff --check passed. CI is running on this commit.

@hussainph

Copy link
Copy Markdown
Owner Author

Ready for owner testing: CI gate is green on a722950. All 23 checks pass, including desktop coverage, all desktop/package tests, all smoke shards, cloud acceptance, core e2e, build and all five N−1 compatibility lanes.

CI: https://github.com/hussainph/volli-code/actions/runs/38914054902

Live verification evidence and the owner test script remain linked above. No merge or release performed.

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

Labels

rc-0.2.2 0.2.2 release candidate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant