fix: TypeScript language server performance#10
Merged
Conversation
Make the editor packages compatible with, and benefit from, the native Go
compiler (TypeScript 7 / tsgo) while keeping the npm publish path on stable tsc.
- Add @typescript/native-preview (pinned 7.0.0-dev.20260624.1). tsgo coexists
with typescript@6, which Next typegen and the IDE plugin still need until the
TS 7.1 programmatic API ships.
- Fix two react-three-fiber JSX augmentations the native checker rejects but
tsc tolerated:
- viewer: map only LineBasicNodeMaterial (the one webgpu node material used as
a JSX tag) instead of the whole three/webgpu namespace (TS2320/TS2590).
- ~~plane-box-select-tool: drop the redundant `IntrinsicElements extends
ThreeElements` block — it duplicated R3F's global augmentation and, by
referencing @react-three/fiber's ThreeElements directly, hit a bun peer-dep
variant-directory duplicate under tsgo (TS2320). r3f.d.ts already covers
those JSX intrinsics. Types-only — no runtime change.~~ (this tool
doesn't exist yet in @meterup/pascal-editor)
- check-types -> tsgo --noEmit (editor, @repo/ui, editor app, ifc-converter app)
- emit-package dev watch -> tsgo --build --watch
- build/publish stay tsc --build (prepublishOnly + release.yml unchanged;
emitted .d.ts is byte-identical to tsc output)
- bump next 16.2.6 -> 16.2.9
tsc remains the source of truth and fallback. Published artifacts unchanged.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
--snapshot mints ephemeral 0.0.0-snapshot-<timestamp> versions via `changeset version --snapshot snapshot` (+ bun install so pack resolves the ranges), publishes them to the `snapshot` dist-tag instead of `latest`, and skips git tags / GitHub Releases. Only packages with a pending changeset get a snapshot version; the rest are skipped as already-published. Run after `bun changeset` + `bun run build` (or `bun snapshot`). It dirties the working tree (version bumps + consumed changesets) — discard with `git checkout .` afterward; CI is ephemeral. The normal changesets/action PR flow is unaffected (it calls ci:publish without --snapshot, which uses --tag latest). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
🦋 Changeset detectedLatest commit: a102c13 The changes in this PR will be included in the next version bump. This PR includes changesets to release 6 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
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.
What does this PR do?
Address the terrible TypeScript language server performance in React DOM projects that depend on @meterup/pascal-✲ packages by Backporting the tsgo adoption change from upstream Pascal editor repository primarily for this change to the @react-three/fiber
JSXinterface module augmentation:Additional
Add support for publishing Changesets snapshot releases to the scripts/publish-fork.ts script we use to publish packages from this fork in the @meterup scope without updating all the
importspecifiers with our fork package names.Passing
--snapshotto publish-fork.ts versions viachangeset version --snapshot snapshot(+ bun install so pack resolves the ranges), publishes them to the snapshot dist-tag instead of latest, and skips git tags and GitHub Releases.Run after
bun changeset+bun run build(orbun snapshot). It dirties the working tree (version bumps + consumed changesets). Discard withgit checkout .