We were unable to construct the commit group for this pull request: Author does not currently possess a GitClear subscription seat.

JS-9862: search filter tokens - in-input scope/filter tokens, adaptive suggestion row, /by /is /in commands #2352

Merged
requilence opened 8:18pm on August 22, 2026 wanted to merge 37 commits into anyproto/anytype-ts develop from
feature/JS-9862-search-tokens

Pull Request Overview

  • Opened on August 22, 2026
  • Status Merged
  • Commit count 37 with first commit August 21, 2026

Total Delta

0 Total Diff Delta

Open Days

Open 20 weekdays

Test Delta

0 Diff Delta in Test Files
Breakdown by Phase

How long has this pull request spent in each phase of its lifecycle?

Data pending calculation for pull request

Author avatar

JS-9862: search filter tokens - in-input scope/filter tokens, adaptive suggestion row, /by /is /in commands

Summary

The search popup's filter system reworked into removable tokens inside the input (spec: docs/specs/2026-08-21-search-filter-tokens.md, phases 1-3 complete):

Token model
- Removable tokens in the input: Channel scope, kind/type, creator ("By me"/"By "), Related-to - one per group, ANDed, Backspace-at-0 pops the rightmost, Escape never removes tokens
- The current Channel is a scope token; removing it switches to cross-space search in place (no reopen), Cmd+Shift+K toggles; "In this Channel" chip is the way back
- Three-way mode machine: current space / another Channel (via /in or clickable space captions - that Channel's chips, spaceId-filtered loaders) / global

Adaptive suggestion row (Gmail search-chips model)
- Chips show only addable tokens; a filled group's chips hide; no active states, no All chip
- "By me" + member chips (cap rises when the what group is filled); Tab walks a transient highlight, Enter applies

"/" command mode
- Command-argument grammar: /by /is /in launchers with placeholder args + right-side descriptions; concrete rows as singular arguments ("/is Page", "/by me")
- Contextual completions: /by people, /is types, /in Channels (vault order); "/ to filter" placeholder hint teaches it
- Cross-Channel types grouped by uniqueKey with "in + N other Channels" captions; type lists ordered by freshest of lastUsed/lastOpened/created

Hardening: three multi-agent review rounds across the phases (9+7+9 findings, all confirmed ones fixed - request generations, measurement-cache identity keys, focused-input Backspace guard, GLOBAL_DEPS lifecycle, Prism .token CSS collision, scroll pinning)

Dependencies


  • anytype-heart v0.51.0-rc5 (middleware.version bumped in this PR)

Testing


  • Manually verified by Roman throughout (tokens, mode flips, /commands, chips, dark mode)

  • bun run typecheck / lint clean per commit

PR was closed without comments.