horizechCLI
Conceptslatest · 0.1.2

Components and zips

What the CLI expects in a component folder, and what it puts in the zip.

Folder layout

my-component/
├── package.hws      the manifest
├── Backend/         built with dotnet publish -c Release
└── Frontend/        optional; built with npm run build:next, output in Frontend/dist

A component has a Frontend/ folder when package.hws has a Frontend section. A theme has no backend.

Zip layout

HWS_APP_NOTES_1.4.0.zip
├── bin/             the backend's publish output
├── dist/            the frontend build (when there is one)
└── package.hws      byte for byte the file that was checked

This is the layout the Workspace launcher installs from and final-build.ps1 produces. The same zip installs by hand and publishes to the registry.

Determinism

Entries are sorted, every timestamp is fixed and names always use /, so the same build output always gives the same bytes and the same SHA-256. The .NET backend build is deterministic. Next.js frontend builds are not: each one picks a random build id, so a component with a frontend gets a new hash on every build.

.DS_Store, Thumbs.db and desktop.ini are left out. Symbolic links are refused.