{"schemaVersion":1,"entries":[{"id":"v0.4.2","version":"v0.4.2","status":"released","date":"2026-09-10","title":"Required packages managed for you","summary":"Upgrading no longer involves hand-editing package.json: osmose update installs the packages the new version needs, and osmose deps reports or fixes a project that lacks them. The website's mobile feature tiles now open videos in a dialog beneath the installation commands.","changes":[{"category":"added","text":"osmose deps compares package.json with the packages this version requires, including each configured or detected integration, lists what is missing with the exact install command, and installs it with --install. A JSON report is available for CI."},{"category":"improved","text":"osmose update reconciles the project's required packages after installing a new version, and when already current, so upgrades such as the cjs-module-lexer requirement no longer need manual steps."},{"category":"improved","text":"osmose doctor reports missing required packages as errors, and osmose dev and osmose build warn before bundling with the command that resolves them."},{"category":"improved","text":"On mobile, feature tiles open a video dialog with a dark backdrop and a persistent close button. Button, backdrop, and Escape dismissal pause playback and return focus to the tile. Desktop inline previews remain available."},{"category":"improved","text":"The mobile feature grid follows the installation/copy commands in both visual and keyboard order."}]},{"id":"v0.4.1","version":"v0.4.1","status":"released","date":"2026-09-10","title":"Cursor-ready editing and a refreshed website","summary":"Reliable Liquid highlighting and component completion in Cursor and VS Code, with a redesigned homepage, interactive documentation examples, and genuine Cursor feature recordings. Update the CLI and install editor extension v1.1.1 separately to receive both editing fixes. No theme migration is required.","changes":[{"category":"fixed","text":"The editor extension bundles Liquid syntax highlighting, including named interfaces and props, HTML attributes, comments and raw blocks, and embedded JSON, JavaScript, and CSS. Cursor and VS Code no longer need a second Liquid extension for highlighting."},{"category":"fixed","text":"Component completion replaces the complete partial component name and an existing closing quote without duplicating either. Editing within hyphenated names preserves surrounding arguments, including when supplementary Unicode characters precede the call."},{"category":"improved","text":"The homepage opens on compact installation commands, with a gapless desktop feature rail, a four-column mobile grid, keyboard navigation, and a guided tour available from the footer and command palette."},{"category":"improved","text":"A shared animated logo and twisting particle backdrop span the homepage and footer, with static fallbacks for reduced motion, unavailable WebGL, and no JavaScript."},{"category":"improved","text":"Documentation and changelog share a consistent content header. Documentation adds collapsible navigation and editable, copyable, resettable code examples; edits stay in the page and do not execute code or access a store."},{"category":"improved","text":"Four genuine Cursor recordings demonstrate Liquid contracts, language-server tools, native TypeScript diagnostics, and Cursor Agent using the Osmose skill to create and compile a component. Updated posters, captions, transcripts, and capture provenance accompany the clips; omitted AI idle pauses are disclosed and interactions remain original speed."}]},{"id":"v0.4.0","version":"v0.4.0","status":"released","date":"2026-09-08","title":"Typed clients, customizer insights, and safer tooling","summary":"Shared client types, a performance inspector for Shopify's theme customizer, more reliable development and build workflows, and updates you can review before installing. Upgrading an existing theme: add typescript and cjs-module-lexer as development dependencies using your package manager, or rerun osmose add for its framework. Restart development sessions and rebuild/re-push the theme to receive the Shopify-hosted runtime changes. Update editor integrations separately; this release includes the VS Code extension v1.1.0 and an updated Neovim plugin.","changes":[{"category":"added","text":"Opt-in named Liquid component contracts validate required and optional props, apply defaults, and provide caller diagnostics. Shared client prop types are generated for WC, Lit, Preact, Solid, React, Vue, and Svelte, with explicit type bindings that preserve native editors. Contract metadata covers every supported client file extension, including .mts and .cts."},{"category":"added","text":"React integration in project creation, onboarding, and osmose add, with its runtime, Vite plugin, and TypeScript dependencies."},{"category":"fixed","text":"React and Svelte scaffolds select Vite plugins compatible with the project's Vite 7 toolchain, avoiding incompatible plugin major versions during dependency installation."},{"category":"fixed","text":"Production framework bundles retain statically discoverable CommonJS named exports, including React hooks and createElement, so native imports work through the shipped import map. New scaffolds and osmose add provide the required static export parser."},{"category":"fixed","text":"Production framework bundles use their own integration's runtime configuration, including Vue's production feature flags, rather than compiling framework dependencies without the required settings. Saved Lit integrations are accepted without requiring a Vite plugin."},{"category":"added","text":"Framework-native typed props are available before the first client render, preserving false, zero, empty strings, null, and structured values. Top-level typed props named __proto__ remain own data properties. Declared Vue props such as title retain their values without passing through string-coercing DOM setters."},{"category":"added","text":"Framework-native client mounting respects each island's loading trigger even when another instance imports the client, cleans up subscriptions on removal, and replaces server markup when mounting default-export Preact clients."},{"category":"added","text":"Sign in with a Shopify account using osmose auth login. Existing Theme Access token workflows remain available for theme operations."},{"category":"added","text":"Measure Liquid render time and hot spots with osmose profile, export JSON or speedscope reports, and compare routable templates with --all. Profiling requires Shopify account sign-in and access to Shopify's profiler; Theme Access tokens cannot request profiles."},{"category":"added","text":"A performance inspector in Shopify's theme customizer shows section and page costs, island loading and failures, resource waterfalls, image issues, and JavaScript weight. Pin a report to compare changes and inspect islands outside sections, including those in the layout."},{"category":"added","text":"Set Liquid and JavaScript budgets in osmose.toml. osmose build --check --profile checks the compiled theme and enforces Liquid budgets against a signed-in storefront; JavaScript weight budgets are evaluated in the customizer inspector, not by the CLI."},{"category":"added","text":"Customizer selection reveals relevant islands, and clickable section and layout chips open their inspectors. Expanded island failures show the error, asset, and stack."},{"category":"added","text":"During development, uploaded client source maps and Liquid source bundles let the customizer inspector open source without reaching localhost. The source viewer shows the full syntax-highlighted file, jumps to mapped error or hot-spot lines, and can open files in your configured editor."},{"category":"added","text":"Liquid hot spots link back to authored source, including expanded components and located filters. Switch to compiled output to see the production form when available, with the viewer identifying whether it shows pushed or profiled code."},{"category":"added","text":"Repeated profiling samples report one median-total request, keeping timings, call counts, hot spots, and raw output consistent. Hot spots follow the selected Liquid call tree, with repeated section files identified as aggregates."},{"category":"added","text":"The theme customizer uses Shopify-hosted production assets while the storefront preview uses Vite. Background builds keep customizer assets in sync, and the terminal development view reports sync readiness or stale uploads."},{"category":"fixed","text":"The Vite launcher shuts down when its Osmose parent exits unexpectedly, rather than leaving a development server holding its port."},{"category":"fixed","text":"Islands can recover from bare-module resolution failures when the browser has not applied the theme's import map. The fallback resolves shared dependencies through the import graph instead of rewriting only the entry module."},{"category":"fixed","text":"Inline CSS imports retain their stylesheet content in themes without Tailwind. Unsupported import extensions and unreadable inline assets now produce compiler errors instead of silently leaving invalid or empty output."},{"category":"fixed","text":"Production builds include an empty profile asset so the customizer snippet's reference does not fail Theme Check before a profile exists. Native-only themes also include the import-map snippet referenced by generated layouts, preventing missing-snippet render errors."},{"category":"added","text":"Headless build and store commands support environment-based configuration and JSON results, with Theme Check diagnostics surfaced in GitHub Actions. An existing Shopify identity session can satisfy the headless store-access requirement without a Theme Access token."},{"category":"fixed","text":"Pull protects local Liquid containing Osmose component or import directives from replacement with remote output unless you explicitly force the overwrite. Development startup, packaging, and individual-file build failures now return command errors."},{"category":"added","text":"Production layouts identify the Osmose version in generator metadata and runtime markers. Set settings.hide_generator to omit the generator meta tag."},{"category":"added","text":"Scrollable release history from the terminal home with r, update review before installation, and the read-only osmose update --notes command."},{"category":"added","text":"Public documentation with a Markdown feed, plus a website changelog backed by the same release notes as the CLI."},{"category":"improved","text":"Nine real feature recordings replace the homepage reel, with desktop hover and keyboard navigation, mobile tap selection, transcripts, and reduced-motion and no-JavaScript fallbacks."}]},{"id":"v0.3.0","version":"v0.3.0","status":"released","date":null,"title":"Published beta with more reliable setup","summary":"The published v0.3.0 beta includes the distribution artifacts and tooling improvements below. Its release date remains unrecorded here.","changes":[{"category":"added","text":"CLI binaries for macOS, Linux, and Windows, with a SHA-256 checksum manifest."},{"category":"added","text":"Packaged VS Code extension and Neovim plugin downloads alongside the CLI."},{"category":"fixed","text":"New projects declare Vite, TypeScript, and Lit dependencies. Project creation shows the install step when installation is skipped, osmose add ensures Vite is declared, and doctor and Vite startup errors explain how to install missing tooling."},{"category":"improved","text":"The production island runtime is a cacheable asset without the development toolbar and reload helpers. Generated runtime and shared-module names are neutral by default, with settings.runtime_prefix available for prefixed names."},{"category":"improved","text":"Production module preloads focus on framework packages and widely shared local modules, with low fetch priority rather than preloading every dependency."},{"category":"added","text":"The load=\"eager\" island strategy starts loading when the island connects, for clients that should not wait for idle time or visibility."},{"category":"fixed","text":"Shopify CLI pushes report per-file upload errors as failures, and the compiled theme mirror carries the project's .theme-check.yml configuration into Theme Check."},{"category":"fixed","text":"Update checks compare numeric version components, do not offer older versions, and do not prompt local development builds to update."},{"category":"improved","text":"Development watcher and WebSocket logs stay in the terminal log stream, missing-store startup errors include setup guidance, and runtime command errors no longer print an unrelated usage block."}]}]}