Skip to content

Part A: Release and packaging fixes - #41

Merged
n4ff4h merged 9 commits into
devfrom
plan/a-packaging
Nov 1, 2026
Merged

n4ff4h merged 9 commits into
devfrom
plan/a-packaging

Conversation

@n4ff4h

@n4ff4h n4ff4h commented Nov 1, 2026 •

Copy link
Copy Markdown
Collaborator

Part A: release and packaging.

Stacked, merge in order, and do not squash: the branches go plan/a-packaging → plan/b-bugs → plan/c-api → plan/d-ci → plan/e-docs, each built on the one before. All target dev as the plan asks, so until the earlier PRs merge this diff includes them. Review it commit by commit (one commit per plan step).

Steps

  • A1 React 19 only.
  • A2 Fixed changesets group for @javaabu/onu and @javaabu/onu-mcp; scripts/sync-plugin-version.mjs keeps the plugin manifest in step, checked in the release workflow.
  • A3 fonts-thaana.css, imported by tailwind.css, styles.css and fonts.css, so Thaana works without the font pack. Verified in the build:web output.
  • A4 react-hook-form and @tanstack/react-query become peers; the fallback QueryClient belongs to each OnuProvider.
  • A5 Removed the Combobox primitive and @base-ui/react.
  • A6 Removed unused optional peers.

Deviation from the plan

@tanstack/react-query is a required peer, not optional. The core entry imports ApiSelect statically, so an optional peer would break the build of any app without it. This is the same reasoning the plan gives for keeping react-aria-components a dependency.

Renamed or removed APIs

Was Now
getOnuQueryClient() removed; use useOnuQueryClient()
invalidateApiOptions(url, client?) invalidateApiOptions(client, url?)
Combobox* in /primitives removed
Peers @tiptap/extension-link, @tiptap/extension-drag-handle-react, @tiptap/extension-code-block-lowlight, lowlight removed

Size limits at this tip

Budgets changed: primitives 165 → 130 kB, fonts.css 600 → 400 B, new fonts-thaana.css 400 B.

Entry Budget Measured
core (Button) 13 kB 12.1 kB
core (FormField + TextInput) 17.5 kB 16.35 kB
core (Modal) 26 kB 24.36 kB
core (Select) 41 kB 38.41 kB
core (DataTable) 80 kB 78.98 kB
core (OnuProvider) 1.5 kB 1.25 kB
core (admin form: OnuProvider + 8 form components) 87 kB 83.45 kB
core (everything) 1.2 MB 1.1 MB
primitives 130 kB 124.25 kB
thaana 2.2 kB 1.94 kB
locales/dv 16 kB 13.43 kB
charts 48 kB 45.76 kB
maps 100 kB 97.14 kB
editor 78 kB 72.48 kB
calendar 44 kB 39.37 kB
media 54 kB 50.47 kB
export 36 kB 31.24 kB
icons/iconify 600 B 413 B
icons/fontawesome 2.1 kB 1.86 kB
styles.css (with its imports) 4.5 kB 4.38 kB
tailwind.css (with its imports) 8.5 kB 7.95 kB
fonts-thaana.css 400 B 327 B
fonts.css 400 B 306 B
fonts-optional.css 300 B 211 B

Checks

At this tip: typecheck, 2591 unit tests, size pass. Lint, format and docs check pass at this tip; A3 was committed without the per-commit script. build:web passed at A6.

🤖 Generated with Claude Code

n4ff4h and others added 9 commits November 1, 2026 10:41
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The changesets fixed group keeps @javaabu/onu and @javaabu/onu-mcp together, and
scripts/sync-plugin-version.mjs keeps the plugin manifest in step; the release
workflow fails if it differs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The @font-face rules move to fonts-thaana.css, imported by tailwind.css, styles.css and
fonts.css. New budget: fonts-thaana.css 400 B (327 B measured). tailwind.css stays within
8.5 kB (7.97 kB) and styles.css within 4.5 kB (4.38 kB). fonts.css drops to 400 B now the
font faces moved out (306 B).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Both share React context with the app, so a second copy silently disconnects them.
@tanstack/react-query is a required peer, not optional as first planned: the core entry
imports ApiSelect statically, so an app without the package would fail to build.

The fallback QueryClient moves from a module singleton (shared across SSR requests) to
each OnuProvider, or the component when there is no provider. getOnuQueryClient is gone,
and invalidateApiOptions takes the client first.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Nothing in src, web or templates used it; every Onu select is built on cmdk. The primitives budget drops from 165 kB to 130 kB (124.25 kB measured).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
pnpm 12 keeps the version from packageManager in a section of pnpm-lock.yaml, and a frozen install fails if it is missing. Moving to 12.16.1 in 15ccf53 changed package.json only, so every CI job has failed at pnpm install since. It didn't show locally because an older global pnpm that switches itself to 12.16.1 doesn't check this.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
next 16.4.3 (critical RCE and high DoS, templates/nextjs). shadcn 4.23.0, a dev dependency, which moves its zod to 4.6.7. In the lockfile, within existing ranges: body-parser 2.4.0, qs 6.17.1, fast-uri 3.1.9, ip-address 10.7.5, undici 7.30.1 and 8.12.3, systeminformation 5.33.19. pnpm audit --prod is clean.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@n4ff4h
n4ff4h merged commit 280fd9f into dev Nov 1, 2026
4 checks 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