diff --git a/CLAUDE.md b/CLAUDE.md index 544c36b..96a71d2 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -15,13 +15,16 @@ sethLabels is a thin deployment fork of [glabels-qt](https://github.com/j-evins/ ## Current State -- **Phase:** ideation (just scaffolded — no code, no upstream pull yet) -- **Repo:** not yet (will live at `git.sethpc.xyz/Seth/sethLabels` once first commit lands) -- **Deploy target:** steel141 (Debian 13) — primary; CT for headless print serving optional/later -- **Upstream:** https://github.com/j-evins/glabels-qt (GPL-3.0, Qt + CMake + C++) +- **Phase:** design-approved, pre-implementation. Spec written and committed; no scripts/packaging code yet. +- **Repo:** live at `git.sethpc.xyz/Seth/sethLabels` (default branch `main`). Upstream `j-evins/glabels-qt` configured as `upstream` remote for periodic rebases. Eventually-public on GitHub once battle-tested. +- **Deploy target:** Debian-family Linux (`.deb` + AppImage) + macOS via Homebrew tap (build-from-source). Steel141 is a build host, not a deploy target. Windows deferred. +- **Upstream:** https://github.com/j-evins/glabels-qt (GPL-3.0, Qt6 6.2 + CMake + C++) +- **Design spec:** `sethlabels-docs/specs/2026-04-29-packaging-design.md` — all packaging decisions (artifacts, versioning, build pipeline, release flow, brew tap) live here. Read this before touching `scripts/` or `packaging/`. ## Conventions -- This is a **fork**, not a from-scratch rewrite. Pull upstream first; only patch what we need to change. Keep diffs surgical. -- Preserve upstream license (GPL-3.0) and copyright headers. +- This is a **deployment fork**, not a real fork. The discipline is **strict zero source patches** — no upstream-tracked file is ever edited. All sethLabels content lives in NEW top-level dirs (`scripts/`, `packaging/`, `sethlabels-docs/`, `.claude/`). Allowlist exception: `.gitignore` (one-time scaffold-time touch). +- Enforced by `scripts/check-no-upstream-edits.sh` (to be implemented per spec §5.5). +- Preserve upstream license (GPL-3.0) and copyright headers — strict-zero handles this automatically by never touching upstream files. +- Versioning: `-seth` (e.g., `3.99-master618-seth1`). See spec §D4 + §5.4. - See `~/bin/CLAUDE.md` for global homelab conventions (gitea CLI, conventional commits, credentials handling). diff --git a/IDEA.md b/IDEA.md index af28c9b..97d3bcc 100644 --- a/IDEA.md +++ b/IDEA.md @@ -12,9 +12,10 @@ Need a reliable, scriptable label designer/printer for homelab + household use ( ## Constraints / preferences -- **Upstream:** https://github.com/j-evins/glabels-qt (track this, don't drift) -- **Stack:** Qt (5 or 6 — TBD based on upstream's current state), CMake, C++ -- **Target hosts:** steel141 primarily (Debian 13). Maybe a CT for headless print serving later. -- **Branding/customization:** minimal — this is for personal use, not a product -- **License:** glabels-qt is GPL-3.0 — preserve it; any contributions stay GPL-3.0 -- **Repo:** Gitea at `git.sethpc.xyz/Seth/sethLabels` (TBD until first push) +- **Upstream:** https://github.com/j-evins/glabels-qt (track this, don't drift). The glabels.org team are the real authors — strict-zero source-patch policy preserves their attribution end-to-end. +- **Stack:** Qt6 6.2 + CMake + C++ (confirmed by reading upstream `CMakeLists.txt:119`). +- **Target install hosts:** any Debian-family Linux (Debian 13 / Ubuntu LTS) for `.deb` + AppImage; any macOS for Homebrew tap. Steel141 is a *build host*, not a deploy target. CT for headless print serving optional/later. Windows deferred. +- **Branding/customization:** zero — this is a packaging fork, not a rebrand. Strict-zero policy forbids icon/string/UI edits. +- **License:** glabels-qt is GPL-3.0 — preserved automatically (we never touch upstream files). +- **Repo:** live at `git.sethpc.xyz/Seth/sethLabels`. Eventually-public on GitHub once the build/release pipeline is battle-tested. +- **Eventual public-flip:** when promoted to a formal public fork on GitHub, brew tap source URL flips Gitea→GitHub (one-line tap formula edit), and CI is added via GitHub Actions calling the same `scripts/` shell scripts unmodified.