name: mjdev-code-conventions
Apply these to every change in this repository. The user enforces them strictly.
Never inline literal values that belong in configuration. Read them from the version catalog
(gradle/libs.versions.toml) or the appropriate config, and thread that single source through
build scripts, tasks, and shell helpers.
app-compositor-runtime-deps in the catalog and is consumed by the deb packaging task,
installDesktop, and make-iso.sh (which reads it via its read_catalog sed) — not copied.read_catalog helper.Each @Composable UI component gets its own file named after it. No bundling multiple
components into one file. Previews for that component may live in the same file.
Each class/interface/object gets its own file named after it. No multi-class files.
enum class (or sealed type) — preferred.companion object of the owning class. Never scatter loose top-level const vals or
magic literals through the code.The user has said the desktop app code is off-limits during the ISO/compositor/packaging work —
only compositor/, session/, and deb/ISO packaging are fair game there. These conventions still
apply to whatever code you DO touch. Related: [[no-hardcode]] memory.