Skip to content

Align channel management panel with profile#1066

Merged
tellaho merged 26 commits into
mainfrom
channel-management-clean
Jun 25, 2026
Merged

Align channel management panel with profile#1066
tellaho merged 26 commits into
mainfrom
channel-management-clean

Conversation

@thomaspblock

@thomaspblock thomaspblock commented Jun 16, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Refactor the channel management sheet into a profile-style panel with compact header, hero, quick actions, full-width narrative rows, clearer metadata, and dedicated row helpers.
  • Move channel editing into a single-save dialog, make canvas management a drill-in view with markdown rendering and preview text, and pin neutral icon-only archive/delete actions at the bottom right.
  • Align channel and Home inbox management behavior with the profile panel: split-pane layout, content reflow, narrow viewport full-width behavior, and close-button-only dismissal.
  • Fix docked panel interactions in the Tauri window by keeping the top chrome drag strip out of the right panel area, using an explicit close handler, tightening canvas drill-in header spacing, and blocking elastic scroll at panel boundaries.
  • Merge latest main into the PR branch and preserve the new Home thread/reminder navigation updates alongside the channel-management panel behavior.

Test plan

  • pnpm --dir desktop exec biome check src/app/AppTopChrome.tsx src/features/channels/ui/ChannelManagementSheet.tsx src/shared/hooks/useScrollBoundaryLock.ts
  • pnpm --dir desktop exec tsc --noEmit
  • pnpm --dir desktop check:file-sizes
  • pnpm --dir desktop run build
  • pnpm --dir desktop exec playwright test tests/e2e/channels.spec.ts -g "manage channel keeps canvas near the top of the sheet|home inbox channel label opens management without leaving home"
  • Pre-commit hooks passed
  • Pre-push hooks passed

@thomaspblock thomaspblock force-pushed the channel-management-clean branch from da47110 to 016d246 Compare June 16, 2026 11:16
@thomaspblock thomaspblock force-pushed the channel-management-clean branch from 91b9cf5 to 767614f Compare June 16, 2026 11:54
@thomaspblock thomaspblock marked this pull request as ready for review June 17, 2026 11:23
@thomaspblock thomaspblock marked this pull request as draft June 22, 2026 18:19
@thomaspblock thomaspblock marked this pull request as ready for review June 22, 2026 20:39
@thomaspblock

Copy link
Copy Markdown
Collaborator Author
Screenshot 2026-06-22 at 5 14 03 PM

@thomaspblock thomaspblock marked this pull request as draft June 22, 2026 22:49
@thomaspblock thomaspblock marked this pull request as ready for review June 23, 2026 00:11
thomaspblock and others added 6 commits June 23, 2026 08:23
Resolve AppTopChrome.tsx conflict by taking main's relative in-flow top-chrome bar wholesale. Drop obsolete TOP_CHROME_RIGHT_PANEL_SAFE_AREA_PX (the 420px fixed-overlay safe-area, no longer needed under main's non-overlapping layout) and the already-unreferenced TOP_CHROME_WHEEL_GUARD_HEIGHT.

Co-authored-by: Thomas Petersen <thomasp@squareup.com>
Signed-off-by: Thomas Petersen <thomasp@squareup.com>
The channel-management side pane hand-rolled its split-layout header
instead of using the shared AuxiliaryPanelHeader, drifting from the
user-profile pane and the channel header to its left: a stray bottom
hairline border, tighter px-4 py-1.5 + gap-0.5 spacing, and a custom
-ml-2 h-7 w-7 back button.

Reuse <AuxiliaryPanelHeader> the way UserProfilePanel does so the header
matches by construction — no border, default px-5 py-2 / h-9 row, plain
size=icon buttons. DialogPrimitive.Title/Description accessibility wiring
is preserved; the non-split overlay branch is untouched.

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Channel management was the only auxiliary side pane backed by a plain
React.useState boolean in ChannelScreen instead of a URL search param,
so it ignored back/forward/reload and switched one-way: with it open,
clicking a thread/profile/agent ingress set that pane's state but
channel management still won the ChannelPane render slot, forcing a
manual close before the new pane appeared.

Promote it into useChannelPanelHistoryState as a channelManagement
search key (sentinel "1", since it's open/closed only) driven through
the same applyPatch path as thread/profile/agentSession. Replace the
useState boolean with the hook's channelManagementOpen value and
setChannelManagementOpen setter, and clear it from the sibling openers
(thread, profile, agent session) so each user action coalesces into a
single history entry. Mutual exclusion and back/forward/reload now fall
out by construction, matching the other panes.

The global/overlay channel-management state in AppShell and HomeView is
a separate concern and is untouched.

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
@tellaho tellaho force-pushed the channel-management-clean branch from 8b514b5 to d0658b0 Compare June 25, 2026 00:40
Resolve AppShell.tsx import conflict: drop isWindowDragHandleEvent,
shouldBounceForChannelNotification, and toSearchHit imports. Their
behavior was relocated by main's a9ce477 into the extracted
useAppShellDesktopNotifications and useTauriWindowDrag hooks; AppShell
now only uses deriveShellRoute.

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>

Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
@tellaho tellaho enabled auto-merge (squash) June 25, 2026 00:47
@tellaho

tellaho commented Jun 25, 2026

Copy link
Copy Markdown
Collaborator

@thomaspblock quick rundown of things resolved to get this merged:

  • Header alignment (9571882) — split panel header now reuses the shared <AuxiliaryPanelHeader>: no stray border, matched spacing, back button lined up.
  • History-backed route pane (70e21a1) — channel management promoted to a real route: one-step swap (thread pops in on a single click, no manual close first) plus working forward/back history.
  • Toggle-shut on repeat click (d0658b0) — clicking the channel button again while the pane is open now closes it; forum entry path left untouched, close walks history cleanly like the siblings.
Step Behavior Screenshot
1 — Open (1st click) Channel button opens the management pane image
2 — Closed (2nd click) Second click toggles the pane shut image
3 — Back reopens Browser BACK restores the pane — close walks history cleanly like every sibling image

npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w and others added 2 commits June 24, 2026 18:38
Removes the branch-only useTauriWindowDrag hook and restores main's inline pointerdown/dblclick drag effect in AppShell. The hook was an unrelated refactor that snuck onto this branch via an earlier evil merge; it does not exist in main. Drag logic is byte-identical to main, so behavior is preserved. Keeps PR #1066 scoped to the channel-management work.

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Reverts the strip commit c1ae92e. Restores the branch-local useTauriWindowDrag hook and AppShell's call to it, removing the re-inlined drag effect. tho reviewed the hook and prefers keeping the clean refactor, so PR #1066 carries it as-is. Window-drag behavior is unchanged.

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
@tellaho tellaho merged commit 9f35b01 into main Jun 25, 2026
26 checks passed
@tellaho tellaho deleted the channel-management-clean branch June 25, 2026 02:28
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.

2 participants