Skip to content

Shell columns: labelled rail and contextual live activity - #6

Merged
TheGreatAxios merged 5 commits into
mainfrom
cl-shell-column-semantics
Aug 9, 2026
Merged

Shell columns: labelled rail and contextual live activity#6
TheGreatAxios merged 5 commits into
mainfrom
cl-shell-column-semantics

Conversation

@TheGreatAxios

Copy link
Copy Markdown
Contributor

Summary

Split rail vs contextual column semantics; rail uses library SidebarRail with labels; contextual column shows bench-scoped live activity.

Test plan

  • Rail and routes tests
  • Visual check of four-column shell

@TheGreatAxios
TheGreatAxios force-pushed the cl-shell-column-semantics branch from 2937233 to 1288d98 Compare August 9, 2026 01:46
@TheGreatAxios

Copy link
Copy Markdown
Contributor Author

Self-critique (orchestrator, no sub-agent)

Verdict: needs-fix → likely merge-ready after CI green + one doc/product check

Looks good

  • Rail correctly uses @corbits/react-ui SidebarRail with showLabels — hand-rolled markup gone.
  • Contextual column is bench-scoped live activity (channels/chats/routines), not a page list; refetches on tenant change only.
  • Honest empty state for notifications (no fake fetch).
  • routine-activity.ts is a clean seam for @corbits/routines.
  • Tests cover visible labels, active page, footer docks, no raw user id.
  • Commit sequence is story-shaped (tests → rail → contextual → docs → library swap).

Should-fix / verify

  1. Confirm CI green on rebased branch (main isolation + VENDORED ledger fix landed).
  2. Product check: listRoutineActivity maps all listRuns — confirm section title/copy says activity, not only "running", if non-running runs appear.
  3. Greybeard + bruckheimer still required before merge per bar.

Nits

  • Long header comments are mostly "why" — fine; no drive-by cleanup needed.

@TheGreatAxios
TheGreatAxios force-pushed the cl-shell-column-semantics branch 2 times, most recently from 7249809 to f0a266d Compare August 9, 2026 02:05
@TheGreatAxios

Copy link
Copy Markdown
Contributor Author

Greybeard review (cite-the-check)

Base: main @ 395b983 (VENDORED + prettier). Branch HEAD: f0a266d.

Scope (reviewer-of-record)

  • git log --oneline origin/main..HEAD → 5 commits, all on-theme (tests → rail → contextual → docs → SidebarRail swap). No off-topic commits.
  • git diff --stat origin/main...HEAD → 14 files, +671/−116, all under apps/web shell/tests/README. No Bin markers. No package domain leakage into apps beyond composition.

Commit message audit

Subjects are imperative and public-audience clean:

  1. Add tests for the rail/contextual-column split
  2. Rail: labelled global nav plus settings and bench selector
  3. Contextual column: bench-scoped live activity replaces the page list
  4. Update docs: rail and contextual column now mean different things
  5. Swap the hand-rolled rail for the library SidebarRail with labels

Bodies explain why (stable global rail vs bench-scoped live column; library owns showLabels). Sequence is tests-first.

Behavioral review

  • Rail (rail.tsx): thin composition over @corbits/react-ui SidebarRail + showLabels; active id from matchesRoute (prefix-aware). Footer docks only. Correct apps-stay-thin shape.
  • Contextual panel: bench-scoped via useBenchActivity(selectedTenantId); route only used for active channel highlight. Notifications section is an honest empty slot. Routine activity behind a seam (routine-activity.ts) so a routines package can replace it later — good.
  • No raw ids in rail tests: never shows the account id asserts user_1 absent — checked via test file.

Checks run this session

Claim Check
Rail unit tests pass bun test apps/web/test/rail.test.tsx4 pass / 0 fail
Diff scope clean git diff --stat origin/main...HEAD (no Bin, shell-only)
Commit story coherent git log + bodies above

Remaining before merge

  1. Full PR checks + walking-skeleton green after rebase onto prettier-fixed main (re-pushed this session).
  2. Bruckheimer / product read on the empty notifications slot + routine-activity seam (acceptable interim).
  3. No should-fix architecture issues found in the diff I read.

Verdict: approve pending CI green.

The rail becomes global page nav plus settings and the bench switcher;
the contextual column becomes a bench-scoped live activity list
(channels, chats, running routines, notifications) instead of a page
list. Covers the labelled rail markup, the bench-activity data hook's
empty/loading/ready states, the routine-activity seam mapping workflow
runs into routine items, and an honest empty state for notifications.
The far-left column is global and stable now — it no longer changes
with navigation or the selected bench. Page icons carry a visible
caption underneath instead of tooltip-only text, and the bench
switcher and the signed-in account's settings/sign-out move here from
the contextual column's footer, since they answer "where am I in the
product, and which bench am I in" rather than anything bench-local.
The second column now answers "what is happening in this bench right
now" — channels, chats, running routines, and a notifications slot for
the current bench — instead of duplicating the rail's page list. It
refetches when the selected bench changes, not when the route does, so
its contents persist across page navigation rather than being
page-scoped. Running routines are sourced from the existing
workflow-run listing behind a small seam (routine-activity.ts) so a
dedicated routines package can replace it later without touching the
column itself. Notifications have no backing feature in the hub yet,
so that section is an honest empty state rather than sample data.
The Layout section describes the rail as global/stable and the
contextual column as bench-scoped/live, matches the routine-activity
seam standing in for a routines package, and drops the stale claim
that the contextual column reads the page route table.
The caption-under-icon rail now lives in @corbits/react-ui's
SidebarRail showLabels option, so the local item markup and CSS can
drop. Footer docks still compose into the library footer's slot.
@TheGreatAxios
TheGreatAxios force-pushed the cl-shell-column-semantics branch from f0a266d to 7d80441 Compare August 9, 2026 02:28
@TheGreatAxios

Copy link
Copy Markdown
Contributor Author

Greybeard: MERGE — SidebarRail + live contextual column; clean split.

@TheGreatAxios
TheGreatAxios merged commit 3655bae into main Aug 9, 2026
2 checks passed
@TheGreatAxios
TheGreatAxios deleted the cl-shell-column-semantics branch August 9, 2026 03:24
TheGreatAxios added a commit that referenced this pull request Aug 14, 2026
Replaces the "not achievable workbench-side today" gap and gap #6
with what actually ships: bilateral-trust-gated projection with
fail-closed per-tenant membership, plus the explicit scope boundary
(owner-only settings/invite/move/threads, no auto-added membership,
trust revocation doesn't cascade to existing shares).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant