Skip to content

chore: give each package its own tsconfig, drop the root tsconfig folder - #63

Merged
ivanbanov merged 6 commits into
solidfrom
tsconfig-per-package
Aug 21, 2026
Merged

chore: give each package its own tsconfig, drop the root tsconfig folder#63
ivanbanov merged 6 commits into
solidfrom
tsconfig-per-package

Conversation

@ivanbanov

Copy link
Copy Markdown
Member

What

  • tsconfig/ is gone. The root tsconfig.json is now the shared base (options + paths, plus the root config files), and tsconfig.build.json is the tsc -b solution list pnpm typecheck runs.
  • Every package owns its project config: packages/{core,react,solid,native,opentui,shared/utils,shared/bindings}/tsconfig.json. Only react (react-jsx) and solid (preserve + @solidjs/web) set a JSX flavor.

Why

tsconfig/react.json was misleadingly named — it typechecked everything except solid, while the solid project already lived inside its package. This makes the layout consistent with the per-package vitest configs: config lives with the code it describes, and no package's settings leak into another's.

No changeset: internal tooling only, nothing ships to consumers.

Stacked on #32.

🤖 Generated with Claude Code

tsconfig/react.json actually typechecked everything except solid, while the
solid project already lived in its package — an inconsistent split. Now the
root tsconfig.json is the shared base (it also covers the root config files),
tsconfig.build.json is the tsc -b solution list, and every package owns its
project config. Only react and solid set a JSX flavor.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Aug 18, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
dunky-state-machine Ready Ready Preview Aug 21, 2026 2:53pm

Signed-off-by: Ivan Banov <ivanbanov@gmail.com>
Signed-off-by: Ivan Banov <ivanbanov@gmail.com>
Signed-off-by: Ivan Banov <ivanbanov@gmail.com>
Solid 2.0 renders a boolean attribute as presence/absence, so
aria-expanded={false} disappeared and aria-modal={true} rendered empty.
ARIA states are literal "true"/"false" tokens — serialize them explicitly.
Found by the solid-dialog binding in dunky-dev/ui#44.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Conflict: packages/solid/src/normalize.ts — solid extracted the shared DOM
attr map into @dunky.dev/state-machine-dom, superseding this branch's inline
copy; kept solid's spread form.

Semantic fix folded in: packages/dom arrived on solid after this branch
forked, so it gets its own tsconfig.json and a tsconfig.build.json reference
— otherwise the new package would silently escape typechecking under the
per-package scheme.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@ivanbanov
ivanbanov merged commit 67495e0 into main Aug 21, 2026
8 checks passed
@ivanbanov
ivanbanov deleted the tsconfig-per-package branch August 21, 2026 15:27
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