git.lucas.co / cce
cce workspace root: member list, lockfile and dependency pins
git clone https://git.lucas.co/cce.git

CLAUDE.md (2.3K)

 1 # CLAUDE.md
 2 
 3 **Read `cce-compositor/WORKSPACE.md` before working anywhere in this workspace.**
 4 That is the authoritative guide: layout, the multi-repo rule, the build/install
 5 entry point, the `cce-ui` toolkit, config, and IPC.
 6 
 7 This file is only a pointer. The guide lives inside `cce-compositor/`
 8 (alongside `scripts/ccebuild`, which it documents) because that crate is where
 9 the build tooling lives.
10 
11 This directory **is** now a git repository, but a deliberately narrow one: it
12 versions only what ties the crates together — `Cargo.toml` (the member list and
13 the `[patch]` block), `Cargo.lock`, `.cargo/config.toml` and this file. Its
14 `.gitignore` excludes every subdirectory by glob, so no crate can be swallowed
15 as an embedded repo and adding a crate needs no change here. It also holds
16 `bump-revs.sh`: after pushing a shared crate, run it to repoint the git pins in
17 the crates that depend on it, because a stale pin never fails a build here --
18 only a standalone build elsewhere.
19 
20 Three rules are repeated here, and only these three, because acting against any
21 of them before reading the guide does damage that is annoying to undo:
22 
23 - **Each crate is its own git repository, and so is this root.** Commit crate
24   changes inside the relevant crate — the root repo tracks only the workspace
25   files listed above, and its `.gitignore` keeps every crate out. Remember that
26   **committing is not publishing** —
27   every crate's `origin` is GitHub (`github.com/lsgalante/<crate>`), and a
28   post-commit hook pushes each commit there; git.lucas.co is only an hourly
29   mirror of GitHub. A commit that did not push (hook missing, network down)
30   is on no remote at all.
31 - **`ccebuild` is the build/install entry point** (`ccebuild install`,
32   `restart`, `status`, `prune`). Do not hand-roll a loop over the crates, and
33   never add a binary name to a Makefile — `cargo metadata` already knows it, and
34   hand-listing is what left crates shipping incomplete for weeks.
35 - **Other Claude sessions may be working in sibling crates right now.** Scope
36   builds and installs to your crate (`cargo build -p <crate>`,
37   `ccebuild install <crate>` — never bare `install` or `restart`, which deploy
38   and restart *other sessions'* work too), and read the "Concurrent sessions"
39   section of the guide before editing shared crates (`cce-ui`,
40   `cce-window-manager`, `cce-icons`) or driving the live session.