Skip to content

Make thread opens part of navigation history - #55

Merged
comp615 merged 7 commits into
block:mainfrom
comp615:fix/thread-history-navigation
Sep 14, 2026
Merged

comp615 merged 7 commits into
block:mainfrom
comp615:fix/thread-history-navigation

Conversation

@comp615

@comp615 comp615 commented Sep 14, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • route ordinary thread-button clicks through the existing conversation navigation target
  • restore each prior thread when traversing Back/Forward across thread and channel visits
  • no-op when the already-open thread target is clicked again
  • preserve the canonical root when a thread is opened from a nested reply
  • keep the primary channel timeline memoized when only its routed thread panel changes
  • retain the thread panel shell and focus owner while switching same-channel thread history
  • seed canonical thread roots and observed replies synchronously from retained session data
  • preserve the no-router fallback used by embedded/test hosts
  • retire a navigation-owned thread before opening another right-rail panel

The existing #buzz= address remains unchanged. It already provides reloadable URL state while working in static web and Tauri hosts without server-side path fallback. This change closes the component-local thread-state gap instead of introducing a second URL scheme.

This aligns with #42's navigation-owned handling for buzz: thread links; the changes are adjacent but do not depend on that PR.

Validation

  • confirmed the routing, stable-panel, same-thread, retained-root, nested-root, profile-panel, and read-state regressions failed before their implementations
  • full bin/just scan for the initial routing change: 38 Node integration tests, 1,259 Vitest tests, 16 plugin-manager tests, 348 browser journeys, Rust checks/tests, formatting, types, builds, and design checks
  • latest JavaScript lane: repository-wide Biome, TypeScript/design checks, production build, and all 1,260 Vitest tests
  • affected profile and thread-unread journeys pass in Chromium and WebKit
  • 13 message-navigation/thread-history journeys pass in Chromium

🤖 Prepared with AI assistance.

Signed-off-by: Charlie Croom <ccroom@squareup.com>
Amp-Thread-ID: https://ampcode.com/threads/T-01a0a080-2584-7079-85a6-ce3465246291
Co-authored-by: Amp <amp@ampcode.com>
@comp615
comp615 requested a review from wesbillman as a code owner September 14, 2026 15:53
comp615 and others added 2 commits September 14, 2026 12:28
Signed-off-by: Charlie Croom <ccroom@squareup.com>
Amp-Thread-ID: https://ampcode.com/threads/T-01a0a080-2584-7079-85a6-ce3465246291
Co-authored-by: Amp <amp@ampcode.com>
Signed-off-by: Charlie Croom <ccroom@squareup.com>
Amp-Thread-ID: https://ampcode.com/threads/T-01a0a080-2584-7079-85a6-ce3465246291
Co-authored-by: Amp <amp@ampcode.com>
@comp615
comp615 marked this pull request as draft September 14, 2026 16:47
comp615 and others added 3 commits September 14, 2026 12:53
Signed-off-by: Charlie Croom <ccroom@squareup.com>
Amp-Thread-ID: https://ampcode.com/threads/T-01a0a080-2584-7079-85a6-ce3465246291
Co-authored-by: Amp <amp@ampcode.com>
Signed-off-by: Charlie Croom <ccroom@squareup.com>
Amp-Thread-ID: https://ampcode.com/threads/T-01a0a080-2584-7079-85a6-ce3465246291
Co-authored-by: Amp <amp@ampcode.com>
Signed-off-by: Charlie Croom <ccroom@squareup.com>
Amp-Thread-ID: https://ampcode.com/threads/T-01a0a080-2584-7079-85a6-ce3465246291
Co-authored-by: Amp <amp@ampcode.com>
@comp615
comp615 marked this pull request as ready for review September 14, 2026 17:01
Signed-off-by: Charlie Croom <ccroom@squareup.com>
Amp-Thread-ID: https://ampcode.com/threads/T-01a0a080-2584-7079-85a6-ce3465246291
Co-authored-by: Amp <amp@ampcode.com>
@comp615
comp615 merged commit 3238ce9 into block:main Sep 14, 2026
12 checks passed
@comp615
comp615 deleted the fix/thread-history-navigation branch September 14, 2026 19:20
delkc added a commit that referenced this pull request Sep 15, 2026
* origin/main:
  Fix inline mention styling in channels (#74)
  Fix self-replenishing background channel warming (#71)
  Add links and thread previews (#42)
  Add shared receive-only channel and thread typing (#33)
  Warm channel heads in the background before they are opened (#54)
  Add Developer settings tab with cache clear and broker stats (#53)
  Request sized relay media for avatars (#58)
  Allow parallel browser development ports (#57)
  Add worktree bootstrap for local configuration (#56)
  Make thread opens part of navigation history (#55)
  Remove the decoded-avatar hot set; respect Save-Data (#60)
  Add CODEOWNERS reviewers (#61)
  Add guarded Workflows page and session capability (#48)

Signed-off-by: Clay Delk <clay.delk@gmail.com>

# Conflicts:
#	dev/relay-broker.mjs
#	src/bundled/channels/ChannelsPage.tsx
#	src/features/messages/ChannelTimeline.tsx
#	src/features/messages/MessageComposer.tsx
#	src/features/messages/MessageRow.tsx
#	src/features/messages/ThreadPanel.test.tsx
#	src/features/messages/ThreadPanel.tsx
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