v1.0.0

heygen-com/hyperframesv1.0.0Sep 12, 2026by Aymericr

Upgrading?

AI Summary

This is a major stable release that graduates beta packages to stable versions on the npm `latest` tag. It integrates a robust open capture protocol and viewer runtime directly into the core packages and establishes a comprehensive agent distribution surface including public skills, plugin manifests, and official registry entries.

Key Highlights

  • Graduation of beta packages (scene model, node registry) to stable versions.
  • Integration of the open capture protocol and viewer runtime into `@pascal-app/core` and `@pascal-app/viewer`.
  • Full agent distribution surface with public skills, plugin manifests for major AI agents, and an official MCP Registry entry.
  • Enhanced CLI with agent claim/status commands and managed MCP server integration.

New Features

  • Open capture protocol and viewer runtime for extensible capture manifests and rendering
  • Public agent skills (`pascal-3d` and `furniture-fit`) for MCP-capable agents
  • Plugin bundles and manifests for Claude Code, Codex, Cursor, and Gemini
  • Official MCP Registry entry and CI validation
  • CLI commands for agent claim and status verification

Full Release Notes

1.0.0 graduates the `1.0.0-beta` line opened by [v1.0.0-beta.1](https://github.com/pascalorg/editor/releases/tag/v1.0.0-beta.1): the scene model, node registry, and package boundaries that the beta stabilized now ship as stable versions on the npm `latest` tag, and the open capture protocol and viewer runtime ship inside them as `@pascal-app/core/capture` and `@pascal-app/viewer/capture` ([#713](https://github.com/pascalorg/editor/pull/713), [#851](https://github.com/pascalorg/editor/pull/851)). It also closes the agent distribution surface: public `pascal-3d` and `furniture-fit` skills, plugin manifests for Claude Code, Codex, Cursor and Gemini, an entry in the official MCP Registry, and a CLI that can claim and verify a hosted agent key ([#777](https://github.com/pascalorg/editor/pull/777), [#829](https://github.com/pascalorg/editor/pull/829), [#808](https://github.com/pascalorg/editor/pull/808), [#815](https://github.com/pascalorg/editor/pull/815)).

### ✨ Features

**Agent skills and distribution**

- **Public agent skills** — `pascal-3d` and `furniture-fit` teach MCP-capable agents to build, inspect, validate and hand off scenes, and to report measured furniture footprints with evidence-scoped conclusions, fail-closed input gates, blocker-aware next actions, and a no-sign-in footprint pre-check link ([#777](https://github.com/pascalorg/editor/pull/777), [#781](https://github.com/pascalorg/editor/pull/781), [#791](https://github.com/pascalorg/editor/pull/791), [#794](https://github.com/pascalorg/editor/pull/794), [#824](https://github.com/pascalorg/editor/pull/824)), with sharper skill discovery and MCP safety metadata across both bundles ([#812](https://github.com/pascalorg/editor/pull/812))
- **Plugin bundles 0.1.3 → 0.1.8** — one canonical `skills/` source ships as a single versioned plugin with a recorded validation ledger per bundle ([#782](https://github.com/pascalorg/editor/pull/782), [#795](https://github.com/pascalorg/editor/pull/795), [#802](https://github.com/pascalorg/editor/pull/802), [#811](https://github.com/pascalorg/editor/pull/811), [#825](https://github.com/pascalorg/editor/pull/825))
- **Claude Code plugin** — this repository installs as `pascal-agent-skills@pascal`, with a credential-free local `pascal mcp connect` server bundled ([#777](https://github.com/pascalorg/editor/pull/777), [#810](https://github.com/pascalorg/editor/pull/810)) and a hosted `pascal-hosted` Streamable HTTP server whose optional Pascal API key is collected as sensitive plugin user configuration and stored in the OS keychain rather than any file ([#835](https://github.com/pascalorg/editor/pull/835))
- **Codex, Cursor and Gemini manifests** — a portable root `mcp.json` (the spec reads `mcp.json`, not `.mcp.json`), `.cursor-plugin/plugin.json`, `gemini-extension.json`, plated marketplace logos, and `bun run skills:validate` asserting parity across every descriptor ([#829](https://github.com/pascalorg/editor/pull/829))
- **OpenAI Agent Plugins manifest** — root `plugin.json` with listing metadata, branding assets, a With MCP review packet, and per-tool annotation justifications for all 46 MCP tools ([#796](https://github.com/pascalorg/editor/pull/796), [#797](https://github.com/pascalorg/editor/pull/797), [#799](https://github.com/pascalorg/editor/pull/799), [#813](https://github.com/pascalorg/editor/pull/813))
- **ClawHub publication readiness** — scoped `.clawhubignore` policies with regression tests that reject re-inclusion and legacy-override rules ([#798](https://github.com/pascalorg/editor/pull/798), [#806](https://github.com/pascalorg/editor/pull/806))
- **Official MCP Registry entry** — `io.github.pascalorg/editor` publishes the hosted Streamable HTTP endpoint, with CI validating the manifest against the live API catalog ([#808](https://github.com/pascalorg/editor/pull/808), [#809](https://github.com/pascalorg/editor/pull/809))

**CLI**

- **`@pascal-app/cli`** — persistent local editor installation and lifecycle management over a packaged standalone runtime, with update rollback, damaged-runtime recovery, collision-safe startup, flat standalone dependencies, and first-run command setup ([#604](https://github.com/pascalorg/editor/pull/604), [#605](https://github.com/pascalorg/editor/pull/605), [#609](https://github.com/pascalorg/editor/pull/609), [#610](https://github.com/pascalorg/editor/pull/610), [#611](https://github.com/pascalorg/editor/pull/611))
- **Managed MCP alongside the local editor** — `npx @pascal-app/cli editor` starts the editor and an authenticated dynamic-port MCP service together, so `pascal mcp connect` needs neither the port nor the private token in client configuration ([#612](https://github.com/pascalorg/editor/pull/612))
- **`pascal agent claim` and `pascal agent status`** — an agent opens a prefilled 15-minute human handoff and verifies its hosted key without storing or printing it, shipped through the verified GitHub CLI preview channel ([#815](https://github.com/pascalorg/editor/pull/815), [#818](https://github.com/pascalorg/editor/pull/818), [#821](https://github.com/pascalorg/editor/pull/821), [#780](https://github.com/pascalorg/editor/pull/780), [#819](https://github.com/pascalorg/editor/pull/819), [#822](https://github.com/pascalorg/editor/pull/822))

**MCP server**

- **Layout clearance** for doors and item overlaps ([#569](https://github.com/pascalorg/editor/pull/569)); surface holes subtracted from measured area ([#563](https://github.com/pascalorg/editor/pull/563))
- **Tool execution middleware**, with cancellation propagated to host executors and callback updates kept inside them ([#801](https://github.com/pascalorg/editor/pull/801), [#803](https://github.com/pascalorg/editor/pull/803), [#804](https://github.com/pascalorg/editor/pull/804))
- **Honest tool contracts** — returned fields declared in tool output schemas ([#575](https://github.com/pascalorg/editor/pull/575)), and skipped persistence reported instead of silently dropping live sync ([#736](https://github.com/pascalorg/editor/pull/736))

**Capture**

- **Open capture protocol and viewer runtime** — `@pascal-app/core/capture` (formerly the beta-only `@pascal-app/capture-protocol`, folded in [#851](https://github.com/pascalorg/editor/pull/851)) covers extensible capture manifests, artifacts, coordinate frames and live streams; `@pascal-app/viewer/capture` renders room models, point clouds, surface meshes and animated device motion; scan nodes gain capture-session references, transforms and per-layer visibility, and capture layers mount as host-provided scene-tree children ([#713](https://github.com/pascalorg/editor/pull/713))
- **Manifest-first previews** — JSON preview artifacts hydrate through a single renderability predicate, so a stream can't be declared renderable without a hydration path ([#757](https://github.com/pascalorg/editor/pull/757)); shared local Clay previews and optional dollhouse rendering align validation with the recorder's native face budget ([#788](https://github.com/pascalorg/editor/pull/788))
- **Authored camera poses** — external camera tools request a still from an explicit world-space pose, including roll and output framing, without moving the working viewport, and receive correlated saved/failed events ([#768](https://github.com/pascalorg/editor/pull/768))
- **Capture-mode camera suite** — FOV lens, walk/drone framing and keycap hints ([#742](https://github.com/pascalorg/editor/pull/742)), walk/drone snapshot framing brought up to orbit's standard ([#743](https://github.com/pascalorg/editor/pull/743)), level-follow camera and snapshot suite ([#752](https://github.com/pascalorg/editor/pull/752)), WebP snapshot encoding ([#622](https://github.com/pascalorg/editor/pull/622)), and a 2048 px long-edge clamp on viewport/area captures ([#639](https://github.com/pascalorg/editor/pull/639))

**Editor and modeling**

- **Custom mesh editing** — Blender-style mesh editing, plus block mesh editing UX ([#638](https://github.com/pascalorg/editor/pull/638), [#691](https://github.com/pascalorg/editor/pull/691))
- **Roofs** — lean-to extensions with automatic drainage ([#651](https://github.com/pascalorg/editor/pull/651)), improved materials, drawing and intersections ([#690](https://github.com/pascalorg/editor/pull/690))
- **MEP** — duct and pipe fittings, routing and system checks ([#769](https://github.com/pascalorg/editor/pull/769)), and connected pipe/duct drafting ([#827](https://github.com/pascalorg/editor/pull/827))
- **Cabinets** — exact sizing with run-aware editing ([#753](https://github.com/pascalorg/editor/pull/753)), modular constraints and finishes ([#719](https://github.com/pascalorg/editor/pull/719))
- **Synchronized 2D viewer modes** ([#672](https://github.com/pascalorg/editor/pull/672))
- **Exports** — print-ready model exports ([#701](https://github.com/pascalorg/editor/pull/701), [#703](https://github.com/pascalorg/editor/pull/703)) and `exportFloorplanPdf` on the package entry ([#636](https://github.com/pascalorg/editor/pull/636))
- **Selection and inspector** — shared parameters editable on a homogeneous multi-selection ([#680](https://github.com/pascalorg/editor/pull/680)), session multi-select groups via Ctrl+G ([#571](https://github.com/pascalorg/editor/pull/571)), arbitrary maxes lifted from inspector dimension fields ([#721](https://github.com/pascalorg/editor/pull/721)), room-envelope height caps raised from 6 m to 20 m with the ceiling's level bound surfaced ([#642](https://github.com/pascalorg/editor/pull/642), [#650](https://github.com/pascalorg/editor/pull/650))
- **Host integration** — guided-tour hooks for targets, a success cue, snapping and camera hints ([#728](https://github.com/pascalorg/editor/pull/728), [#730](https://github.com/pascalorg/editor/pull/730)), `noPanel` sidebar tabs for stage-driving rail entries ([#641](https://github.com/pascalorg/editor/pull/641)), declarative `def.toolOptions` with a shared `ToolOptionsPanel` ([#750](https://github.com/pascalorg/editor/pull/750)), a `presentation.findInCatalog` opt-out for the action menu ([#756](https://github.com/pascalorg/editor/pull/756)), an exported `getWallHideState` ([#576](https://github.com/pascalorg/editor/pull/576)), a configurable `maxFps` render-loop cap ([#671](https://github.com/pascalorg/editor/pull/671)), and a single-writer ToolMode FSM for mode/tool ([#751](https://github.com/pascalorg/editor/pull/751))
- **Plugin ecosystem** — Mint ([#591](https://github.com/pascalorg/editor/pull/591)) and Streetscape ([#628](https://github.com/pascalorg/editor/pull/628)) plugins, the Bones structural X-ray plugin wired into the standalone editor ([#649](https://github.com/pascalorg/editor/pull/649)), and per-kind plugin inspector-card extensions on the floating inspector ([#667](https://github.com/pascalorg/editor/pull/667))
- **Light WebGPU preview and `/editor` scene redirect** ([#570](https://github.com/pascalorg/editor/pull/570))
- **Terrain and collaboration** — terrain elevation inherited by rooms, geometry builders and plugins ([#568](https://github.com/pascalorg/editor/pull/568)); realtime terrain and scene collaboration primitives repaired ([#573](https://github.com/pascalorg/editor/pull/573))

### 🐛 Fixes

- **Scene materials survive persistence** — custom materials are preserved across save, load, clone, fork and live sync, and collections are no longer dropped on MCP import ([#597](https://github.com/pascalorg/editor/pull/597)) by [@ShiroKSH](https://github.com/ShiroKSH); materials also carry through Load Build ([#729](https://github.com/pascalorg/editor/pull/729)), dangling library material refs re-resolve with the paint picker defaulting to Pascal ([#749](https://github.com/pascalorg/editor/pull/749)), and the material list has a stable test hook ([#724](https://github.com/pascalorg/editor/pull/724))
- **Deterministic wall junctions** — exactly-collinear walls miter in a stable order, so identical scenes produce identical geometry regardless of node iteration order ([#596](https://github.com/pascalorg/editor/pull/596)) by [@tomatotomata](https://github.com/tomatotomata); lean-to roof mitering fixed across connected runs ([#739](https://github.com/pascalorg/editor/pull/739)); `calculateLevelMiters` reachable through `core/wall` ([#732](https://github.com/pascalorg/editor/pull/732))
- **Wall drafts and previews** — plane-bound defaults restored for draft, panel and self-heal ([#630](https://github.com/pascalorg/editor/pull/630)), slab-sourced drafts never coerced to a ground base ([#702](https://github.com/pascalorg/editor/pull/702)), node tops stop lifting floor placements while batched walls stay pickable ([#686](https://github.com/pascalorg/editor/pull/686)), a hovered wall leaves its batch so it can outline ([#687](https://github.com/pascalorg/editor/pull/687)), wall item placement preview no longer drifts off the item ([#643](https://github.com/pascalorg/editor/pull/643)), draft preview geometry reused ([#550](https://github.com/pascalorg/editor/pull/550)), and wall load fixes for treatment fan-out, one CSG cut per wall, a capture draw leak and converter duplicates ([#762](https://github.com/pascalorg/editor/pull/762))
- **Hover, selection and hidden walls** — hidden walls stop swallowing pointer events ([#683](https://github.com/pascalorg/editor/pull/683)), stay ray targets while a door/window tool is active ([#689](https://github.com/pascalorg/editor/pull/689)), and lose to nearest-first hover against the furniture behind them ([#697](https://github.com/pascalorg/editor/pull/697)); opening MOVE drags ride the node's own wall with one undo entry per gesture ([#694](https://github.com/pascalorg/editor/pull/694))
- **Autosave and scene loading** — the autosave wipe guard stays armed after the scene loads ([#578](https://github.com/pascalorg/editor/pull/578), [#682](https://github.com/pascalorg/editor/pull/682)), a failed scene load shows an error with retry instead of an empty scene ([#759](https://github.com/pascalorg/editor/pull/759)), and null parent links in stored scenes are repaired so they pass authority validation ([#574](https://github.com/pascalorg/editor/pull/574))
- **History and dirty state** — history command ownership hardened ([#627](https://github.com/pascalorg/editor/pull/627)), placement drafts kept out of undo history ([#637](https://github.com/pascalorg/editor/pull/637)), a guarded dirty set with undo phantom sweep and animation split ([#758](https://github.com/pascalorg/editor/pull/758)), and elevator dirty tracking dropped ([#599](https://github.com/pascalorg/editor/pull/599))
- **Core robustness** — vertical scene canonicalization shared ([#626](https://github.com/pascalorg/editor/pull/626)), numeric sanitize diagnostics fail safe ([#615](https://github.com/pascalorg/editor/pull/615)), asset ids no longer depend on `crypto.randomUUID` ([#681](https://github.com/pascalorg/editor/pull/681)), and room surfaces reconcile after wall topology edits ([#624](https://github.com/pascalorg/editor/pull/624))
- **zod 4.5 compatibility** — `AnyNode` made discriminated-union-proof through bare-literal projection ([#745](https://github.com/pascalorg/editor/pull/745)), node metadata typed as a record instead of `z.json()` ([#746](https://github.com/pascalorg/editor/pull/746)), with the dependency range capped and then lifted to a working 4.5.x ([#744](https://github.com/pascalorg/editor/pull/744), [#747](https://github.com/pascalorg/editor/pull/747))
- **Sentry-reported crashes** — null WebGL context in the 3D viewer ([#455](https://github.com/pascalorg/editor/pull/455)), missing roof-segment trim in the ridge-vent geometry key ([#530](https://github.com/pascalorg/editor/pull/530)), and a `structuredClone` fallback where lingo is imported ([#577](https://github.com/pascalorg/editor/pull/577))
- **Claude Code plugin root** — the plugin root is `skills/` instead of the repository root, so installing `pascal-agent-skills@pascal` copies the two skill bundles and their MCP configuration instead of caching the whole monorepo and running `bun install` against the root lockfile ([#832](https://github.com/pascalorg/editor/pull/832))
- **Plugin integration** — plugin node kinds accepted by the scene save API ([#490](https://github.com/pascalorg/editor/pull/490)), hover/click subscriptions attached for kinds that register after mount ([#665](https://github.com/pascalorg/editor/pull/665)), inspector extension mode either/or with the regular controls ([#668](https://github.com/pascalorg/editor/pull/668)), and no empty plugin manager in an empty rail ([#741](https://github.com/pascalorg/editor/pull/741))
- **Roof, placement and level details** — roof and placement previews corrected ([#718](https://github.com/pascalorg/editor/pull/718)), wall editing and roof controls corrected ([#738](https://github.com/pascalorg/editor/pull/738)), slab room paint scoped to the clicked slab's level ([#592](https://github.com/pascalorg/editor/pull/592)), the function-tree category grid capped so the item list stays reachable ([#593](https://github.com/pascalorg/editor/pull/593)), level pill without ground-floor delete and no compass in studio ([#723](https://github.com/pascalorg/editor/pull/723)), stable level elevation smoothing ([#659](https://github.com/pascalorg/editor/pull/659)), isolation and solo no longer overwriting each other's layer masks ([#607](https://github.com/pascalorg/editor/pull/607)), millimetre notation respected in 3D labels ([#540](https://github.com/pascalorg/editor/pull/540)), and adjacent IFC wall assemblies no longer merged ([#603](https://github.com/pascalorg/editor/pull/603))
- **Experience fix pass** — Cmd/Ctrl+S saves instead of opening the browser's page-save dialog, plus placement, selection rotation, roof gable, stairs and capture fixes on three r186 ([#807](https://github.com/pascalorg/editor/pull/807))

### ⚡ Performance

- **Charter rows** — initial wall builds drain within the time budget (row 6) ([#800](https://github.com/pascalorg/editor/pull/800)), undo/redo invalidation scoped to changed geometry and cleared previews (row 7) ([#805](https://github.com/pascalorg/editor/pull/805)), ceiling undersides and slab bodies batched (row 16) ([#789](https://github.com/pascalorg/editor/pull/789))
- **Batching and instancing** — items, columns, doors and windows draw through BatchedMesh containers ([#760](https://github.com/pascalorg/editor/pull/760)), wall batching stays live in cutaway ([#761](https://github.com/pascalorg/editor/pull/761)), a level's walls are sewn into one mesh ([#608](https://github.com/pascalorg/editor/pull/608)), wall geometry is no longer rebuilt every frame ([#556](https://github.com/pascalorg/editor/pull/556)), ceiling corner brackets are instanced per level ([#784](https://github.com/pascalorg/editor/pull/784)), and animation mixers are skipped for items without clips ([#785](https://github.com/pascalorg/editor/pull/785))
- **Viewer passes** — outline reuses scene depth and renders masks from proxies ([#772](https://github.com/pascalorg/editor/pull/772)), pointer-event raycasts are cached with a camera-drag throttle ([#774](https://github.com/pascalorg/editor/pull/774)), wall cutout facing is cached instead of re-evaluated per camera move ([#775](https://github.com/pascalorg/editor/pull/775)), zone and overlay passes render from indexed roots ([#776](https://github.com/pascalorg/editor/pull/776)), viewer runtime ownership tightened ([#675](https://github.com/pascalorg/editor/pull/675)), and viewer stage mode sets stabilized ([#673](https://github.com/pascalorg/editor/pull/673))
- **Schema parsing** — lazy per-kind compiled node parsers behind a flag ([#748](https://github.com/pascalorg/editor/pull/748))
- **CLI download size** — the packed `@pascal-app/cli` drops from 107 MB to 65 MB by pruning build-only files from the portable runtime, with every dropped file printed so a future non-conventional asset is reported rather than shipped ([#838](https://github.com/pascalorg/editor/pull/838)), and then to 0.5 MB: the runtime ships as a checksummed release asset that the CLI fetches on first use instead of riding inside the npm tarball ([#845](https://github.com/pascalorg/editor/pull/845))
- **Instrumentation** — a `?perf` suite with real WebGPU timestamp queries, system tracks, action receipts and a DOM panel, at zero cost without the flag ([#755](https://github.com/pascalorg/editor/pull/755))

### 🧰 Tooling / infra

- **Release pipeline** — a stable bump now graduates a prerelease to its base version (`1.0.0-beta.N` → `1.0.0`) instead of producing `2.0.0` or publishing a beta to `latest` ([#837](https://github.com/pascalorg/editor/pull/837)); npm publishing moved to trusted publishing over GitHub OIDC after npm deprecated 2FA-bypass tokens ([#839](https://github.com/pascalorg/editor/pull/839), [#853](https://github.com/pascalorg/editor/pull/853), [#856](https://github.com/pascalorg/editor/pull/856)); trusted publishing for MCP and CLI ([#779](https://github.com/pascalorg/editor/pull/779)) with npm auth and OIDC repairs ([#816](https://github.com/pascalorg/editor/pull/816), [#817](https://github.com/pascalorg/editor/pull/817)); release package tag push fixed ([#565](https://github.com/pascalorg/editor/pull/565)); license metadata and `LICENSE` shipped in tarballs ([#732](https://github.com/pascalorg/editor/pull/732))
- **CI and tests** — the test suite runs in CI ([#548](https://github.com/pascalorg/editor/pull/548)), bun pinned to 1.3.14 in the quality gate ([#585](https://github.com/pascalorg/editor/pull/585)), `bun install` retried on transient GitHub 429s ([#674](https://github.com/pascalorg/editor/pull/674)), CI-sized timeout for the every-angle corner-joint sweep ([#693](https://github.com/pascalorg/editor/pull/693)) and a 30 s budget for rounded-opening CSG unions ([#764](https://github.com/pascalorg/editor/pull/764)), registry leaks across test files fixed ([#709](https://github.com/pascalorg/editor/pull/709)), the canopy regression matrix split into independent tests ([#790](https://github.com/pascalorg/editor/pull/790)), node source-system probes run from a package-local file with mocks established before any fiber/react import ([#792](https://github.com/pascalorg/editor/pull/792), [#793](https://github.com/pascalorg/editor/pull/793)), history probe modules resolved from the packages that depend on them under the isolated linker ([#828](https://github.com/pascalorg/editor/pull/828)), and wall batch tests driving the frame function directly ([#763](https://github.com/pascalorg/editor/pull/763))
- **Architecture** — runtime R3F evicted from the core barrel, with an architecture test to keep it out ([#692](https://github.com/pascalorg/editor/pull/692))
- **Platform** — Next.js 16.3 ([#579](https://github.com/pascalorg/editor/pull/579)), the Node runtime for standalone editor Vercel functions ([#580](https://github.com/pascalorg/editor/pull/580)), and `bun dev` working on Windows without dropping the PORT override ([#587](https://github.com/pascalorg/editor/pull/587))
- **Docs** — the docker workflow ([#590](https://github.com/pascalorg/editor/pull/590)), the plugin viewer appearance contract ([#625](https://github.com/pascalorg/editor/pull/625)), the MCP north convention in the garden-house template ([#584](https://github.com/pascalorg/editor/pull/584)), how `from_brief` binds a scene ([#595](https://github.com/pascalorg/editor/pull/595)), CLI package discoverability ([#606](https://github.com/pascalorg/editor/pull/606)), a security policy and code of conduct ([#575](https://github.com/pascalorg/editor/pull/575)), stale `NEXT_PUBLIC_GOOGLE_MAPS_API_KEY` docs dropped ([#589](https://github.com/pascalorg/editor/pull/589)), and changelog credit for the junction-determinism and scene-materials fixes ([#598](https://github.com/pascalorg/editor/pull/598))
- **Bones plugin pin** — the pinned structural X-ray plugin advanced 26 times across this window: camera-proof X-ray, dollhouse and blueprint batches ([#653](https://github.com/pascalorg/editor/pull/653), [#655](https://github.com/pascalorg/editor/pull/655), [#656](https://github.com/pascalorg/editor/pull/656), [#662](https://github.com/pascalorg/editor/pull/662), [#666](https://github.com/pascalorg/editor/pull/666), [#669](https://github.com/pascalorg/editor/pull/669), [#670](https://github.com/pascalorg/editor/pull/670)), electrical, plumbing and HVAC systems with movable service points ([#657](https://github.com/pascalorg/editor/pull/657), [#658](https://github.com/pascalorg/editor/pull/658), [#660](https://github.com/pascalorg/editor/pull/660), [#661](https://github.com/pascalorg/editor/pull/661), [#676](https://github.com/pascalorg/editor/pull/676), [#677](https://github.com/pascalorg/editor/pull/677), [#684](https://github.com/pascalorg/editor/pull/684), [#695](https://github.com/pascalorg/editor/pull/695), [#698](https://github.com/pascalorg/editor/pull/698)), the heat pump becoming a first-class object ([#700](https://github.com/pascalorg/editor/pull/700), [#705](https://github.com/pascalorg/editor/pull/705), [#707](https://github.com/pascalorg/editor/pull/707), [#708](https://github.com/pascalorg/editor/pull/708), [#710](https://github.com/pascalorg/editor/pull/710), [#711](https://github.com/pascalorg/editor/pull/711), [#712](https://github.com/pascalorg/editor/pull/712)), and CMU paint plus LGS steel walls and jurisdictions ([#714](https://github.com/pascalorg/editor/pull/714), [#716](https://github.com/pascalorg/editor/pull/716), [#717](https://github.com/pascalorg/editor/pull/717))

### 📦 Packages

| Package | Version |
|---|---|
| `@pascal-app/core` | `1.0.0` |
| `@pascal-app/viewer` | `1.0.0` |
| `@pascal-app/editor` | `1.0.0` |
| `@pascal-app/nodes` | `1.0.0` |
| `@pascal-app/mcp` | `1.0.0` |
| `@pascal-app/ifc-converter` | `1.0.0` |
| `@pascal-app/cli` | `1.0.0` |

> All seven packages move to the npm `latest` tag; the `beta` tag stops at the `1.0.0-beta` line. The beta-only `@pascal-app/capture-protocol` and `@pascal-app/capture-viewer` packages were never published to npm: before 1.0.0 they were folded into `@pascal-app/core/capture` and `@pascal-app/viewer/capture` ([#851](https://github.com/pascalorg/editor/pull/851)), so the published surface stays at seven packages instead of nine.
>
> `@pascal-app/cli` downloads its web runtime from the [`@pascal-app/cli@1.0.0`](https://github.com/pascalorg/editor/releases/tag/%40pascal-app%2Fcli%401.0.0) release asset on first use and verifies it against the SHA-256 recorded in the package.

### 🙏 Thanks

A huge thank you to everyone who contributed to 1.0.0.

- [@wass08](https://github.com/wass08) — the batching and viewer performance passes, the capture-mode camera suite, dirty-lifecycle correctness, host tour hooks, the `?perf` instrumentation suite, and the experience fix pass (48 PRs, including [#760](https://github.com/pascalorg/editor/pull/760), [#761](https://github.com/pascalorg/editor/pull/761), [#772](https://github.com/pascalorg/editor/pull/772), [#755](https://github.com/pascalorg/editor/pull/755), [#742](https://github.com/pascalorg/editor/pull/742), [#758](https://github.com/pascalorg/editor/pull/758), [#728](https://github.com/pascalorg/editor/pull/728), [#807](https://github.com/pascalorg/editor/pull/807))
- [@Snoopy147](https://github.com/Snoopy147) — Bones plugin integration and the hover/selection/pointer-correctness wave, plus the plugin inspector-card extensions (37 PRs, including [#667](https://github.com/pascalorg/editor/pull/667), [#683](https://github.com/pascalorg/editor/pull/683), [#689](https://github.com/pascalorg/editor/pull/689), [#697](https://github.com/pascalorg/editor/pull/697), [#694](https://github.com/pascalorg/editor/pull/694), [#682](https://github.com/pascalorg/editor/pull/682), [#709](https://github.com/pascalorg/editor/pull/709), [#741](https://github.com/pascalorg/editor/pull/741))
- [@sudhir9297](https://github.com/sudhir9297) — roofs, MEP routing, cabinets, and custom mesh editing ([#638](https://github.com/pascalorg/editor/pull/638), [#651](https://github.com/pascalorg/editor/pull/651), [#690](https://github.com/pascalorg/editor/pull/690), [#691](https://github.com/pascalorg/editor/pull/691), [#718](https://github.com/pascalorg/editor/pull/718), [#719](https://github.com/pascalorg/editor/pull/719), [#738](https://github.com/pascalorg/editor/pull/738), [#739](https://github.com/pascalorg/editor/pull/739), [#753](https://github.com/pascalorg/editor/pull/753), [#769](https://github.com/pascalorg/editor/pull/769), [#827](https://github.com/pascalorg/editor/pull/827), [#624](https://github.com/pascalorg/editor/pull/624))
- [@ActArtech](https://github.com/ActArtech) — MCP layout clearance, the light WebGPU preview, and session multi-select groups ([#569](https://github.com/pascalorg/editor/pull/569), [#570](https://github.com/pascalorg/editor/pull/570), [#571](https://github.com/pascalorg/editor/pull/571))
- [@anton-pascal](https://github.com/anton-pascal) — Sentry-driven null-safety hardening in viewer, nodes and core ([#455](https://github.com/pascalorg/editor/pull/455), [#530](https://github.com/pascalorg/editor/pull/530), [#615](https://github.com/pascalorg/editor/pull/615))
- [@toycenterboss-bot](https://github.com/toycenterboss-bot) — wall geometry performance and viewer layer-mask fixes ([#556](https://github.com/pascalorg/editor/pull/556), [#607](https://github.com/pascalorg/editor/pull/607), [#608](https://github.com/pascalorg/editor/pull/608))
- [@JimmyZheng-ZJU](https://github.com/JimmyZheng-ZJU) — wall draft preview geometry reuse and elevator dirty state ([#550](https://github.com/pascalorg/editor/pull/550), [#599](https://github.com/pascalorg/editor/pull/599))
- [@ShiroKSH](https://github.com/ShiroKSH) — diagnosed and layered the scene-material persistence fix ([#597](https://github.com/pascalorg/editor/pull/597))
- [@tomatotomata](https://github.com/tomatotomata) — deterministic collinear wall junction ordering ([#596](https://github.com/pascalorg/editor/pull/596))
- [@alxbouchard](https://github.com/alxbouchard) — scene materials carried through Load Build ([#729](https://github.com/pascalorg/editor/pull/729))
- [@SomSamantray](https://github.com/SomSamantray) — `exportFloorplanPdf` on the package entry ([#636](https://github.com/pascalorg/editor/pull/636))
- [@konevenkatesh](https://github.com/konevenkatesh) — plugin node kinds accepted by the scene save API ([#490](https://github.com/pascalorg/editor/pull/490))
- [@maherm](https://github.com/maherm) — asset ids no longer depending on `crypto.randomUUID` ([#681](https://github.com/pascalorg/editor/pull/681))
- [@rootsbymenda](https://github.com/rootsbymenda) — surface holes subtracted from measured area ([#563](https://github.com/pascalorg/editor/pull/563))
- [@tamg](https://github.com/tamg) — the Mint plugin ([#591](https://github.com/pascalorg/editor/pull/591))
- [@tylergibbs1](https://github.com/tylergibbs1) — millimetre notation in 3D labels ([#540](https://github.com/pascalorg/editor/pull/540))
- [@vjureta](https://github.com/vjureta) — running the test suite in CI ([#548](https://github.com/pascalorg/editor/pull/548))
- [@yorhodes](https://github.com/yorhodes) — IFC adjacent wall assemblies no longer merged ([#603](https://github.com/pascalorg/editor/pull/603))
- [@ztffn](https://github.com/ztffn) — configurable `maxFps` render-loop cap ([#671](https://github.com/pascalorg/editor/pull/671))

**Full changelog**: https://github.com/pascalorg/editor/compare/v1.0.0-beta.1...v1.0.0

Related Repositories