Skip to content

fix(site): hide slash skills menu when user has no personal skills#26953

Open
ibetitsmike wants to merge 2 commits into
mainfrom
mike/chat-input-v81c
Open

fix(site): hide slash skills menu when user has no personal skills#26953
ibetitsmike wants to merge 2 commits into
mainfrom
mike/chat-input-v81c

Conversation

@ibetitsmike

Copy link
Copy Markdown
Collaborator

Typing / in the /agents chat composer always opened the personal skills popover, even for users with zero skills. The empty popover offered no value and, worse, SkillsTriggerPlugin swallowed Enter and arrow keys whenever it was open, so a zero-skill user pressing Enter after / could not submit the message. Additionally, the skills query re-enabled every time the caret re-entered a slash token, refetching on every toggle with the app's default staleTime: 0.

Changes in ChatMessageInput:

  • Gate skillsMenuOpen on a definitively empty base skill list: when the query has settled (isSuccess && !isFetching) and returned no skills, / behaves like plain text with no popover and no key interception. Loading and error states still show the popover, and filtered-empty (user has skills, query matches none) keeps showing the no-match message.
  • Add staleTime: 60_000 at the call site so caret movement no longer refetches on each trigger toggle. The settings page keeps its refetch-on-mount freshness.
  • Show the loading state while a background refetch runs over a cached empty list, avoiding a premature empty-state flash.

Stories: EmptySkills now asserts no popover renders and Enter submits; new FilteredEmptyKeepsMenuOpen asserts the no-match message stays and Enter is swallowed when the user has skills.

This PR was created by Mux on Mike's behalf.

…h skills menu when user has no personal skills
@ibetitsmike

Copy link
Copy Markdown
Collaborator Author

/coder-agents-review

@coder-agents-review

coder-agents-review Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Chat: Review posted | View chat
Requested: 2026-07-02 05:48 UTC by @ibetitsmike
Spend: $23.97 / $100.00

Review history
  • R1 (2026-07-02): 13 reviewers, 1 Nit, 1 Note, COMMENT. Review
  • R2 (2026-07-02): 4 reviewers, 1 Nit, 1 Note, APPROVE. Review

deep-review v0.9.0 | Round 2 | e3ac65a..15707c2

Last posted: Round 2, 2 findings (1 Nit, 1 Note), APPROVE. Review

Finding inventory

Findings

# Sev Status Location Summary Round Reviewer Posted
CRF-1 Nit Author fixed (15707c2) ChatMessageInput.tsx:608 Comment verbosity pattern: 4 comments restate what code already shows R1 Gon (P2 downgraded) Yes
CRF-2 Nit Author fixed (15707c2) ChatMessageInput.tsx:912 isLoading || isFetching simplifies to isFetching in TanStack Query v5 R1 Chopper, Meruem Yes
CRF-3 Note Open PersonalSkillsTriggerMenu.tsx:158 "No personal skills found." unreachable in integrated component R1 Leorio Yes
CRF-4 Nit Dropped by orchestrator (codebase convention is raw staleTime literals; 60_000 used in 3 other places) ChatMessageInput.tsx:605 Magic number 60_000 R1 Gon No

Round log

Round 1

Panel (13 reviewers: Bisky, Hisoka, Mafu-san, Mafuuu, Pariston, Nami, Ging-ts, Ging-react, Gon, Leorio, Komugi, Chopper, Meruem). Netero: 0 findings. Panel: 2 Nit, 1 Note new. 1 dropped. Reviewed against e3ac65a..d724bd9.

Round 2

Panel (4 reviewers: Bisky, Mafuuu, Gon, Kite). Netero: 0 findings. CRF-1, CRF-2 verified fixed. Gon re-raised CRF-1 as incomplete (3x P2 on our own R1 suggested text); dropped as churn (Kite verified complete, 2v1). No new findings. APPROVE. Reviewed against e3ac65a..15707c2.

About deep-review

CRF = Coder Review Finding (P0-P4, Nit, Note)

Reviewer Focus
Bisky tests
Chopper ops/errors
Churn-guard change verification
Ging language modernization
Gon naming
Hisoka edge cases
Killua perf
Kite change integrity
Knov contracts
Knuckle SQL
Komugi flake/determinism
Kurapika security
Law decomposition
Leorio docs
Luffy product
Mafu-san process
Mafuuu contracts
Melody dispatch/pairing
Meruem structural
Nami frontend
Netero mechanical checks
Pariston premise testing
Pen-botter product gaps
Razor verification
Robin duplication
Ryosuke Go arch
Takumi concurrency
Zoro shape

🤖 Managed by Coder Agents.

@coder-agents-review coder-agents-review Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clean, well-scoped fix. The three-state distinction (resolved-empty, filtered-empty, loading) is the minimum logic needed, the staleTime follows existing convention, and the two stories test the exact behavioral fork. 13 reviewers, zero correctness issues.

2 Nit, 1 Note below.

Commit subject is 115 characters (43 over the 72-char convention). The scope site/src/pages/AgentsPage/components/ChatMessageInput burns 53 characters. fix(site) contains both changed files and brings it to 66.

"I tried to build a case against this change across all four framings. The problem is correctly understood, the solution is proportional, and the fix is at the right causal level." - Pariston


site/src/pages/AgentsPage/components/ChatMessageInput/PersonalSkillsTriggerMenu.tsx:158

Note [CRF-3] "No personal skills found." is now unreachable in the integrated ChatMessageInput.

The new gating closes the menu before the settled-empty state that would trigger this !query branch. Loading shows the spinner, error shows the error message, filtered-empty shows "No personal skills match that query." The base-empty case (no query, no skills, no loading, no error) cannot happen because isResolvedEmptySkillsList closes the menu first.

The message survives in PersonalSkillsTriggerMenu's own stories and remains reachable by any future caller with different gating logic. Not a bug. Worth knowing so nobody writes a test expecting this text in the integrated component.

(Leorio)

🤖

🤖 This review was automatically generated with Coder Agents.

Comment thread site/src/pages/AgentsPage/components/ChatMessageInput/ChatMessageInput.tsx Outdated
Comment thread site/src/pages/AgentsPage/components/ChatMessageInput/ChatMessageInput.tsx Outdated
@ibetitsmike ibetitsmike changed the title fix(site/src/pages/AgentsPage/components/ChatMessageInput): hide slash skills menu when user has no personal skills fix(site): hide slash skills menu when user has no personal skills Jul 2, 2026
@ibetitsmike

Copy link
Copy Markdown
Collaborator Author

/coder-agents-review

@coder-agents-review coder-agents-review Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All R1 findings addressed. CRF-1 comments trimmed to the suggested forms, CRF-2 simplified to isFetching. CRF-3 (unreachable "No personal skills found." in the integrated component) remains informational.

R2 panel (Bisky, Mafuuu, Gon, Kite) plus Netero found no new issues. The fix cleanly separates trigger detection from menu display, handles all query states correctly, and has complementary story coverage for both empty-state paths.

"The change is single-purpose: suppress the skills popover for users with zero skills so / behaves as plain text." - Kite

🤖 This review was automatically generated with Coder Agents.

@ibetitsmike ibetitsmike marked this pull request as ready for review July 2, 2026 11:02
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