Repository navigation
feat(app-shell): a Studio rail search that matches nothing names the query and offers to clear it - #26959
Merged
Conversation
…query and offers to clear it The shared StudioRail draws one empty-search state for the Data, Automations and Access rails from the match count each pillar hands it: a sentence naming the query and a Clear search action that empties the box and restores the list. The Automations rail's own copy of the sentence retires. Claude-Session: https://claude.ai/code/session_01JQwxbZPJiXo3QSt3ShH9c1 Co-authored-by: Claude <noreply@anthropic.com>
Contributor
Author
席位核对ACCEPT · seat 席位意见:三条可搜索的 Studio 侧栏(数据、自动化、访问)现在共用一个“无匹配”状态,由侧栏统一说出查询词并提供“清除搜索”;空查询或本来就空的列表不显示这一行,各支柱原有的空状态照旧。
Generated by Claude Code |
This was referenced Oct 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Requested by Warren · project thread
Fixes #26733
Clause-②: no
Metadata-protocol: none
维护者速读
StudioRail.tsx(新状态与matchCount判定),StudioDesignSurface.tsx(三处侧栏只传匹配数;数据侧栏的过滤原样上提成常量),新测试文件。pnpm --dir ui exec vitest run packages/app-shell/src/views/studio-design/StudioRail.noMatches-26733.test.tsx,预期 13 条全绿。What changes
StudioRail(shared by every Studio pillar) gainssearch.matchCount: how many rows the pillar's own filter left. When the query is non-blank,matchCountis 0 and the list was not empty before searching (count !== 0), the rail shows one state under the list: the existingengine.list.emptyQuerysentence naming the trimmed query, and a Clear search button that callssearch.onChange('')and focuses the box again.shownObjectsso its length can be handed to the rail; Automations passesshownFlows.length; Access passesfiltered.length. No rail filters or sorts differently.@object-ui/i18nstudionamespace: new rowengine.studio.rail.clearSearch(en "Clear search", zh "清除搜索"); patch changeset.Why
A builder who mistyped a rail search saw an empty column on Data and Access and could not tell a failed load from no matches (card #26733, from the studio-qa-2026-10-27 batch).
Tests
New
StudioRail.noMatches-26733.test.tsxrenders the real Data, Automations and Access pillars. Per rail: a query that matches nothing shows the state naming the query and no row; Clear search empties and focuses the box and restores every row; a matching query shows no state; an empty package keeps its own sentence with no no-matches line, with or without a query. Plus a zh case (the state's sentence and the button read in Chinese).Readings at head 66aa3c5
pnpm --dir ui exec vitest run packages/app-shell/src/views/studio-design/(includes the existing Automations rail search pin): Test Files 234 passed, Tests 1703 passed.pnpm --dir ui exec vitest run packages/i18n/: 89 files passed, 1373 passed, 13 skipped.pnpm --filter @object-ui/app-shell run type-checkandpnpm --filter @object-ui/i18n run type-check: exit 0.noMatchesbranch replaced withfalsethroughscripts/ablation-replace.mjs(anchor 1 to 0, blob 805aceee to a4f216f0): 7 failed, 6 passed. The 7 are every positive case (three rails times two, plus zh); the 6 green are the matching-query controls and the empty-package cases, as expected. Restored: blob equals HEAD,git diff HEADempty.Acceptance notes
origin/main5ec398d: Data and Access rendered nothing under a non-matching query; Automations already printedengine.list.emptyQuerybut had no clear action. The card's premise holds for Data and Access and half-holds for Automations.engine.list.emptyQueryrow (straight quotes around the query), so no new sentence row was added and the existing Automations pin still reads the same text.Verification
Derived gates (34) at head 66aa3c5
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderived 34 families; all 34 ran with exit 0, and--ranreconciled 34 derived, 34 run, 0 NOT-MEASURED, 0 UNRUN. Also run:check:i18n-designer-parityexit 0,check:new-line-citationsexit 0 (0 new citations), eslint on the five touched source files exit 0 (0 errors; 16 warnings, all on untouched lines ofStudioDesignSurface.tsx).Human Minimum
packages/specholds no runtime logic.pnpm lintpasses. (No formatter ran; eslint is clean on the touched files, and the repo-widepnpm lintis CI's run.)main, one pull request.packages/spectouched: its generated artifacts are regenerated and committed. (not touched)content/docs/references/,packages/*/CHANGELOG.mdorcontent/docs/releases/.🤖 Generated with Claude Code
https://claude.ai/code/session_01JQwxbZPJiXo3QSt3ShH9c1
Generated by Claude Code