CL-6464: page actions, skills detail - #189
Merged
Merged
Conversation
The workbench lens, the name filter, sort, and the rows/grid toggle floated in an unstyled page-body toolbar (`page-toolbar` was never defined in any stylesheet) while only Upload sat in the top bar. All of them now live in `StageTopBar`'s action slot, which DESIGN.md names as the single home for a page's own controls. The scoped input is labelled as filtering rather than as a second "Search files" box: the product has exactly one search surface and the top bar already carries it.
"SHARED" beside "Make private" was system vocabulary — a person could
read both and still not know what the button would do. The page now says
plainly who can use the skill today, and the button says what will change
("Share with everyone here" / "Make it private to me"). The quick-peek
panel on Plugins says the same words, so the same action never reads two
ways.
Version history moves out of the narrow side column that squeezed every
heading down to a stub ("Versio…", "Updat…", "interch…") and onto the
full width of the page. "Who" becomes "Saved by", and a save made
through the product is attributed to the product rather than to the git
identity the hub commits under — an internal name a reader would
otherwise take for a teammate.
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.
Two of CL-6464's surfaces. Item (a), the Insights cutover, is not in this PR — see "What is not here".
(e) Files: page actions belong in the top bar
The workbench lens ("New Workbench" / "All workbenches"), the scoped input, the sort control and the rows/grid toggle all floated in the page body while only Upload sat in the top nav. They now live in
StageTopBar's action slot, which DESIGN.md → Pages & Routing names as the single home for a page's own controls: "if an action is primary enough to float, it belongs in the top nav."The body toolbar they lived in was a
<div className="page-toolbar">— andpage-toolbaris not defined inapp.css, in any package stylesheet, or in react-ui. It was an unstyled div, which is most of why the row read as floating. It is gone rather than restyled.The scoped input is now labelled as filtering ("Filter files" / "Filter by name"), not as a second "Search files" box. DESIGN.md → Search: "There is no page-local search input that duplicates palette scope; a page that needs scoped filtering builds it as a filter control, not a second 'search.'"
Rows already were the default view mode (
useState<ViewMode>("rows")); a test now pins that so it cannot quietly flip to grid.(d) Skills detail: a meaningless action, and a column nobody could read
The action. A
SHAREDchip beside aMake privatebutton is the system's vocabulary for the system's own scope enum — a person could read both and still not know what the button would do. The page now states who can use the skill today ("Everyone in this workbench can use this skill." / "Only you can use this skill.") and the button says what will change ("Make it private to me" / "Share with everyone here"). The quick-peek panel on Plugins carried the same defect with different words; it now says the same thing, so one action never reads two ways.The layout. Version history sat in a
min-[1100px]:w-96aside, which squeezed five columns into 384px and truncated every heading to a stub — "Versio…", "Updat…", "interch…". A table nobody can read teaches nothing, so history moved out of the side column onto the full width of the page, with explicit column widths and no wrapping on the short columns. The page is one column now: visibility, description, body, then history."Who". It was rendering a system identity.
version.authoris a raw git commit author name, and every commit the product writes is authored byinterchange-hub(fixed invendor/intx/hub-sessions/src/repo-store/store.ts:49) — a machine account, not a teammate. The column is now "Saved by", andskillVersionSavedByresolves the hub's identity to the product's own name; a commit written by a real person keeps their name exactly as git recorded it.Note the underlying gap: there is no per-principal attribution on skill commits at all. Showing a real human name for a Workbench save means threading the acting principal into the repo-store commit, which is a hub change, not a UI one. This PR stops the internal name from being mistaken for a person; it does not invent an attribution the platform never recorded.
What is not here
command-palette-provider, or icon-size tokens.skills-page.tsxandplugins-page.tsxboth put aLibrarySearchInputlabelled "Search skills"/"Search plugins" inside theStageTopBaraction slot — i.e. a second search input in the same 3rem row as the magnifier the bar always renders. Same one-line fix as Files got.Checks
Scoped to
apps/web(not the full root check):bunx tsc --noEmitclean,eslintclean on every touched file, andbun run build && bun test ./src ./test→ 765 pass, 0 fail. The threetailwind-buildtests require the build step first; they pass once it has run.Not verified: no browser pass on the rendered pages, and no visual check of the Files top bar at narrow widths (the workbench lens is
hidden lg:flex, so belowlgthe scope buttons are not reachable — deliberate, but unconfirmed against a real viewport).https://linear.app/abklabs/issue/CL-6464