Everything you need to build a Svelte project, powered by sv.
If you're seeing this, you've probably already done this step. Congrats!
# create a new project
npx sv create my-appTo recreate this project with the same configuration:
# recreate this project
deno run npm:sv@0.14.1 create --template minimal --types ts --add prettier eslint tailwindcss="plugins:typography,forms" sveltekit-adapter="adapter:static" devtools-json mcp="ide:opencode" --install deno .Install dependencies and start a local development server with Deno:
deno install --allow-scripts=npm:esbuild
deno task dev
# or start the server and open the app in a new browser tab
deno task dev -- --openRun the UI in Docker:
docker compose upFor Docker Compose Watch:
docker compose watchTo create the production static assets:
deno install --frozen --allow-scripts=npm:esbuild
deno task check
deno task buildThe static adapter writes the complete site to build/, including index.html and
_app/. You can preview it with deno task preview. No Deno or Node server is needed
to serve the production files.
The Static assets workflow runs on branch pushes,
pull requests, manual dispatch, and published GitHub releases (including prereleases).
It installs the frozen Deno lockfile, checks the app, builds it, and uploads a
compose-ui-static Actions artifact retained for 14 days.
Every successful push build on int also creates a GitHub prerelease tagged
int-<run-number>-<short-commit-sha> at the exact pushed commit, with the archives
and checksums attached in the same workflow run. These prereleases are not marked
as the latest stable release. Rerunning a workflow reuses its prerelease and replaces
the attached assets. The desktop application can pin one of these tags just like a
stable release tag.
Publishing a GitHub release builds the release's tagged commit and attaches:
compose-ui-static.tar.gzcompose-ui-static.zipSHA256SUMS(SHA-256 checksums for both archives)
Both archives contain the contents of build/ directly at their root. They contain
only the static site, without source files, dependencies, or a server runtime, and
the same bundle can be used on all desktop platforms. Wait for the workflow to
finish before consuming a newly published release. Rerunning the release job
replaces assets with the same names. A tag push alone does not publish a release;
publish the release through GitHub or gh release create to trigger the upload.
In the desktop application's build, pin a release tag and download the bundle:
UI_VERSION=v0.1.0 # replace with a published release tag
gh release download "$UI_VERSION" --repo Agent54/compose-ui \
--pattern 'compose-ui-static.*' --pattern SHA256SUMS --dir ui-download
cd ui-download
sha256sum --check SHA256SUMS # on macOS: shasum -a 256 --check SHA256SUMS
mkdir -p ../ui-assets
tar -xzf compose-ui-static.tar.gz -C ../ui-assetsBundle ui-assets/ into the desktop application and serve it through its local HTTP
server or webview asset protocol, with index.html as the entry point and correct
JavaScript/CSS MIME types. Keep the directory structure intact. Direct file://
loading is not the supported integration. The UI's configured Compose API server
must still be reachable from the desktop webview; the bundle does not include the
backend.
For an HTTP downloader, the tarball URL has the form
https://github.com/Agent54/compose-ui/releases/download/<tag>/compose-ui-static.tar.gz
(use the same path for SHA256SUMS or the ZIP). Authenticate downloads if the
repository is private.