Skip to content

Canon gaps 2: Search filter mode, InlineAlert role, Badge tones, Segmented option class, Dialog overlayClass, PanelHeader closeTitle, PageHeader titleTrailing; release workflow fix - #141

Merged
prakashUXtech merged 3 commits into
mainfrom
feat/canon-gaps-2
Sep 26, 2026

Conversation

@prakashUXtech

Copy link
Copy Markdown
Contributor

Seven small additions the paw-enterprise page lanes needed, plus a fix for the release workflow. No existing prop changed and every default renders the same as before.

The gaps

  • Search (./ui). /activity, /growth and the agents list all fell back to a plain Input. Search always opened a "No results" listbox while you typed, and it had no way to set aria-label, autocomplete or spellcheck. It now takes mode="filter": a role=searchbox input that never opens the dropdown and leaves arrows and Enter to the browser, so a form around it still submits. aria-label, autocomplete and spellcheck go to the <input> in both modes. The default mode is suggest and it works as before. The manifest entry documents mode, which is why static/manifest.json changed.
  • InlineAlert role. On /growth, the paste warning had to be a status and not an alert. The tone used to set the role and ignored the caller. role="status" | "alert" now overrides it.
  • Badge (./primitives) success and warning variants. This was left over from the feature-pages audit (G5). They have the same shape as destructive, on the ripple tone tokens: a /10 tint, /20 in dark mode and on link hover, and the tone's readable -text colour.
  • Segmented. /activity colours its category options, which took :nth-of-type CSS. An option can now carry a class, and the component takes a leading snippet that gets each option, so the host can render a dot for the options it picks.
  • Dialog.Content overlayClass. /deepwork stacks its dialogs at z-[100] above the touch rail. With class="z-[100]" and overlayClass="z-[100]" the content and scrim both move up, and twMerge drops the default z-50. There's no separate zIndex prop because the two classes already cover it.
  • PanelHeader closeTitle. The shell's thread and artifact panels lost the close button's tooltip when they moved to PanelHeader. It defaults to no title.
  • PageHeader titleTrailing. On the /foresight pages a status tag sat beside the h1. The snippet renders inline after the title, vertically centred, before the actions. Without it the title markup is unchanged.

All of these are on /showcase/feature.

Loose ends (separate commits)

  • Release workflow. The v0.7.0 tag run failed with "attempted to publish a private package" because bun publish ran at the workspace root. core and svelte now publish from their own directories, core first. Before publishing, the runner rewrites svelte's @ripple-ui/core: file:../core to ^<core version>, since bun only rewrites workspace: ranges. The package.json in git keeps file:, which the workspace repos rely on. A version that is already on npm gets skipped, so re-running after a partial publish still reaches the release step. Asset paths now point at packages/svelte/dist, and the schema sources in the zip come from packages/core/src/schema. I didn't run a release. The runs before v0.7.0 failed with "missing authentication" because the NPM_TOKEN secret is empty, so that secret needs setting before anything will publish.
  • Manifest version. Nothing to change. static/manifest.json on main already says 0.7.0. The build takes the version from src/lib/version.ts, and version.test.ts keeps that in step with package.json. The manifest stopped importing package.json on purpose, because that import 500'd vite dev.
  • Split the engine out as @ripple-ui/core #110. Closed with a comment. Its three commits reached main through Monorepo split (#110) with integration/ui-foundation merged on top #119.

Tests

The new tests were written first and failed before each change: Search.test.ts (new), badge-tones.test.ts (new), plus additions to InlineAlert.test.ts, shell.test.ts, ui-contract.test.ts and PageHeader.test.ts. In packages/svelte, bun run check, bun run lint and the full vitest run (1411 tests) pass. I checked the workflow by loading it as YAML and running the svelte publish step's rewrite against a copy of package.json, with the publish itself stubbed out. I haven't looked at the showcase demos in a browser.

…, Segmented option class, Dialog overlayClass, PanelHeader closeTitle

Additive props for gaps the paw-enterprise page lanes hit. Search gets mode="filter" (no dropdown) plus aria-label, autocomplete and spellcheck passthroughs. InlineAlert takes a role override. The ./primitives Badge gets success and warning variants. Segmented options take a class and the component takes a leading snippet. Dialog.Content takes overlayClass. PanelHeader takes closeTitle. The manifest documents Search's mode. Demos on /showcase/feature.
…ce split

bun publish ran at the private workspace root, so the v0.7.0 tag run failed with "attempted to publish a private package". Each package now publishes from its own directory, core first. svelte's file:../core dependency is rewritten to ^<core version> in the runner before publish. Versions already on npm are skipped. Asset paths point at packages/svelte/dist and packages/core/src/schema. The NPM_TOKEN repo secret still has to be set.
Renders inline after the h1, vertically centred, before the actions. Without it the title markup is unchanged. For the /foresight pages, whose status tag sat next to the title.
@prakashUXtech
prakashUXtech merged commit 5cec45b into main Sep 26, 2026
1 check 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