docs: cut CLAUDE.md to rules-only (179 → 74 lines)
CLAUDE.md now carries only what must be known *before* opening a file: hard rules, gotchas, and an entry-point table. Everything descriptive moved to the doc that lives next to the code. Moved out: - stack versions, plugin roles, asset pipeline, nav shape, user/ repo tracking rules → docs/reference/architecture.md - Playwright layout, config facts, auth-setup project, test account → docs/reference/testing.md (new) - folder map, full make command list (build/test/demo/worktree targets that only existed in CLAUDE.md) → README.md - dev/prod Twig settings table → already in docs/guides/deploy-cycle.md Fixed while verifying, all of them descriptions that had drifted: - demo fixtures were listed as italy-2026-demo + no-photos-demo; the actual folders are italy-2025 + italy-2026-demo - the map engine was cited at js/src/maplibre-utils.js; it is js/maplibre-utils.js, a hand-authored file beside the bundles - the build-output list omitted fonts/ and the generated templates/partials/weather-icons.html.twig, and did not flag that js/maplibre-utils.js and js/nav.js are sources living in js/ - README called user/ a "standalone git repo" (it is a submodule) - docs/README.md linked to a non-existent working/production-todo.md - git-sync-notes.md pointed at "CLAUDE.md §1", a section number that no longer exists Net: ~17.1k → ~8.5k chars of always-loaded context. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -10,10 +10,29 @@ Two git repos:
|
||||
|
||||
| Repo | Contents | Location |
|
||||
|------|----------|----------|
|
||||
| `intotheeast.com` (this repo) | Docker setup, Makefile, scripts, plugins.txt | `./` |
|
||||
| `intotheeast.com-content` | Site config, pages, theme | `user/` (standalone git repo) |
|
||||
| `intotheeast.com` (this repo) | Docker setup, Makefile, scripts, tests, docs, plugins.txt | `./` |
|
||||
| `intotheeast.com-content` | Site config, pages, theme | `user/` (git submodule) |
|
||||
|
||||
The `user/` directory is a standalone git repo — its changes are pushed/pulled independently to Gitea. The Grav Sync plugin on the server automatically pulls from Gitea when content is pushed.
|
||||
`user/` is tracked by this repo as a **git submodule** — it has its own Gitea remote and its own push/pull cadence (`make content-push` / `make content-pull`), and this repo pins an exact `user/` commit. The Git Sync plugin on the server pulls from Gitea automatically when content is pushed. A persistent `M user` / `m user` in `git status` is normal, not a problem; see [`docs/solutions/architecture-patterns/dual-repo-submodule-workflow.md`](docs/solutions/architecture-patterns/dual-repo-submodule-workflow.md).
|
||||
|
||||
### Folder map
|
||||
|
||||
| Path | Contents |
|
||||
|------|----------|
|
||||
| `user/` | Site content, config, pages, theme (the content submodule) |
|
||||
| `user/themes/intotheeast/js/src/` | JS sources — esbuild inputs; run `make build-assets` after editing. Note `js/maplibre-utils.js` and `js/nav.js` are *also* sources, despite sitting beside the generated bundles |
|
||||
| `deploy/env/` | Per-environment Grav config overrides (e.g. prod Twig settings) |
|
||||
| `deploy/patches/` | Tracked patches for third-party plugins, which are otherwise git-ignored |
|
||||
| `scripts/` | Server install and maintenance scripts |
|
||||
| `tests/` | Playwright suite — see [`docs/reference/testing.md`](docs/reference/testing.md) |
|
||||
| `php/` | Local PHP ini overrides |
|
||||
| `docs/` | All project documentation — start at [`docs/README.md`](docs/README.md) |
|
||||
| `docs/guides/` | Operational how-tos (posting, GPX, trip switching, setup, deploy cycle) |
|
||||
| `docs/reference/` | Stable facts: architecture, design system, testing |
|
||||
| `docs/solutions/` | Write-ups of bugs and workflow traps already hit, with YAML frontmatter (`module`, `tags`, `problem_type`) |
|
||||
| `docs/working/` | Specs, plans, backlog, QA — work in flight |
|
||||
| `CONCEPTS.md` | Shared domain vocabulary (Trip, Entry, Story, Active Trip) |
|
||||
| `CLAUDE.md` | Rules and gotchas loaded into every Claude Code session |
|
||||
|
||||
---
|
||||
|
||||
@@ -82,13 +101,42 @@ make content-push # push local user/ commits → Gitea
|
||||
|
||||
| Command | Description |
|
||||
|---------|-------------|
|
||||
| `make setup` | First run: build → start → install plugins → fix perms |
|
||||
| `make start` | Start the local Docker container |
|
||||
| `make stop` | Stop the local Docker container |
|
||||
| `make setup` | Start container and install all plugins from plugins.txt |
|
||||
| `make install-plugins` | (Re)install plugins from plugins.txt in the local container |
|
||||
| `make content-push` | Push local `user/` commits to Gitea |
|
||||
| `make install-plugins` | (Re)install plugins from plugins.txt, then apply local plugin patches |
|
||||
| `make apply-plugin-patches` | Idempotently re-apply the patches in `deploy/patches/` |
|
||||
| `make fix-perms` | Reset file ownership inside the container |
|
||||
| `make build-assets` | Run esbuild over `user/themes/intotheeast/js/src/` — **required** after editing any JS source |
|
||||
| `make content-push` | Push local `user/` commits to Gitea (triggers the production pull) |
|
||||
| `make content-pull` | Pull latest `user/` content from Gitea |
|
||||
|
||||
### Testing
|
||||
|
||||
| Command | Description |
|
||||
|---------|-------------|
|
||||
| `make test` | Everything: `test-config` → `test-post` → `test-ui` |
|
||||
| `make test-config` | Form/config sanity checks |
|
||||
| `make test-post` | End-to-end post submission |
|
||||
| `make test-ui` | Playwright suite |
|
||||
|
||||
Details and conventions: [`docs/reference/testing.md`](docs/reference/testing.md).
|
||||
|
||||
### Demo content and imports
|
||||
|
||||
| Command | Description |
|
||||
|---------|-------------|
|
||||
| `make demo-load` | Copy every fixture trip under `user/docs/demo/trips/` into the pages tree (add a fixture by dropping a folder there — no Makefile edit needed) |
|
||||
| `make demo-reset` | Remove those demo trips from the pages tree and clear cache |
|
||||
| `make pixelfed-import` | Import posts from Pixelfed via `scripts/pixelfed-import.py` |
|
||||
|
||||
### Parallel work
|
||||
|
||||
| Command | Description |
|
||||
|---------|-------------|
|
||||
| `make worktree-new NAME=<feature>` | Create a worktree with its own `user/` checkout and an isolated dev server on port `8090+` |
|
||||
| `make worktree-rm NAME=<feature>` | Tear one down cleanly (compose down → submodule deinit → worktree remove → prune) |
|
||||
|
||||
### Remote credentials
|
||||
|
||||
| Command | Description |
|
||||
|
||||
Reference in New Issue
Block a user