Skip to content

Promote develop → main: composer context flow, jump-backfill, icon convention#222

Merged
haowei2000 merged 6 commits into
mainfrom
develop
Jul 16, 2026
Merged

Promote develop → main: composer context flow, jump-backfill, icon convention#222
haowei2000 merged 6 commits into
mainfrom
develop

Conversation

@haowei2000

Copy link
Copy Markdown
Collaborator

Promotion: develop → main

Rolls up the frontend work merged into develop since the last promotion (3 PRs, all verified live on the kind stack, all frontend-only — no backend/migration changes):

Notes

  • No content on main is missing from develop (verified: git diff develop main is the exact inverse of the promotion diff — main is purely behind, no criss-cross).
  • Net diff: 6 files, +233/−32.

🤖 Generated with Claude Code

haowei2000 and others added 6 commits July 16, 2026 14:40
Jumping from a ViewBoard history row (Activity/Audit) to a message
outside the loaded window used to just toast "scroll up to load older
history". Now ChannelView pages older history in (50/page, bounded at
8 pages — covers the Activity board's 200-event window) until the
target appears, then focuses it; the toast only remains for messages
that genuinely can't be found or shown (e.g. resolved approvals folded
into the bot trace). MessageList adds one instant corrective scroll
pass after the smooth scroll settles, since backfilled rows above the
target materialize their real heights mid-scroll (content-visibility
estimates) and drift the anchor.

Verified live on the kind stack: jump to an old episode fetches one
page (46→81 rows), lands the target centered in-viewport with the
flash ring, no stale toast, zero console errors.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…story

fix(chat): backfill older history when jumping to an unloaded message
The `+` (lucide Plus) meant six different actions across the app; on the
Workbench file panel it drew both create-file and add-to-context, so the
same glyph did two unrelated things on one surface.

Every create use of Plus is already mutually consistent (Plus = create a
new resource). The only divergent family is add-to-context, which mixed
Plus (3 sites) and Paperclip (1 site). Move it onto its own glyph:

- add-to-context → MessageSquarePlus ("add to your next message"): the
  shared AttachContextButton, the suggested-context chip, the composer
  "Add context" menu, and the divergent Paperclip button in
  RemoteWorkspaceDialog.
- Paperclip stays reserved for "attach/upload a file" (composer, channel
  files); Plus now means only "create"; FolderPlus (folder-rooted
  session), UserPlus (add person), TextQuote (ranged passage) unchanged.

Documents the convention in DESIGN.md §2.18 + two anti-pattern entries so
it stops drifting.

Verified live on the kind stack: Workbench "+ New" is Plus (create), the
file-toolbar add-to-context is the message-bubble glyph, the composer's
Attach-file paperclip and Add-context button are now visibly distinct;
clicking add-to-context still adds a ContextPickBar chip. typecheck clean,
zero console errors.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
refactor(frontend): one glyph per action — disambiguate the overloaded +
… chips, session-aware model chip

Three composer improvements to the context/session flow:

- Add-context menu gains a "Browse & attach" section: "Workbench files…"
  and "Workspace files…" open the respective surface so you can pick a
  file to attach (each marked with ↗). Previously the menu only offered
  the four channel reads and told you to go find the panels yourself.
- Pending context chips for a Workbench file (fs.read) or a bot's
  workspace file (workspace.read) get a ↗ that jumps to where the resource
  lives — the Workbench focused on the file, or the Remote workspace at
  that path. Reuses the existing wbTarget / wsInit deep-link plumbing.
- The composer model chip now follows the pinned session: selecting a
  session narrows the chip to that session's single owning bot and shows
  its model (e.g. "Opus") instead of the generic "Model · 4 bots" —
  because a pinned session routes to exactly one bot, ignoring @mentions.
  SessionChip.onChange now reports the session's botId for this.

Verified live on the kind stack: Browse rows open the surfaces; a
review.md chip's ↗ reopens the Workbench focused on it; pinning a session
flips "Model · 4 bots" → "Opus". typecheck clean, zero console errors.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…e-jump

feat(composer): browse Workbench/Workspace from Add-context, jumpable chips, session-aware model chip
@haowei2000
haowei2000 merged commit 23c9979 into main Jul 16, 2026
11 checks passed
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