Distribution & packages

Shared code is distributed through git tags (Rust crates) and npm (frontend libs). A module never links against the core.

Rust crates (tagged git dependencies) #

kubuno-seccomp  → git = kubuno/core,  tag = seccomp-v0.1.0
kubuno-storage  → git = kubuno/core,  tag = storage-v0.1.0
kubuno-drive    → git = kubuno/drive, tag = drive-v0.1.0  (client, default-features=false)

Frontend libs (npm, @kubuno scope) #

@kubuno/ui, @kubuno/sdk, @kubuno/drive — published publicly, consumed at build time.

.deb package layout #

/usr/lib/kubuno/modules/<id>/
├── kubuno-<id>              # binaire
├── module.toml              # manifeste
└── frontend/
    ├── entry.js             # bundle du module
    └── entry.css            # styles du module

/usr/share/kubuno/modules/<id>/migrations/   # SQL
/var/lib/kubuno/                              # données, thèmes, modules installés

Releases & CI #

Every repository has a CI workflow (.github/workflows/build.yml) that, on pushing a v* tag, builds the .deb (with SQLX_OFFLINE=true) and creates a GitHub Release with the artifact.

bash _tools/release.sh <module> <version>   # ex: release.sh calendar 0.1.0 → tag v0.1.0 + push
Remember

Development follows a "published" model: to propagate a change to a crate or an @kubuno/* lib, republish it, then bump the dependency in the modules. This mirrors production exactly.