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.