diff --git a/CLAUDE.md b/CLAUDE.md index 7cd53c0..c1e64c2 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -85,6 +85,7 @@ Never use relative `../` paths except inside `providers/` and `hooks/` when refe - **Source every UI element from `@/components/ui/`** — no raw HTML elements for styled things - **Use only CSS tokens** — never raw hex, rgb, or pixel values in component or page files - **Use `.masonry-grid` for all content pages with multiple variable-height sections** — never `display: grid` with fixed columns for card layouts. See DESIGN.md §11. +- **Every change, major or minor, must be documented and committed** — see "Documentation & Commit Policy" below. --- @@ -99,6 +100,7 @@ Check the live Style Guide at `/dev/styleguide` to see all variants and states. | `StatusBadge` | `@/components/ui/StatusBadge` | Coloured status pills | | `FormField` | `@/components/ui/FormField` | Every text/email/password/textarea input | | `Select` | `@/components/ui/Select` | Custom dropdown (used inside FormField type="select") | +| `MultiSelect` | `@/components/ui/MultiSelect` | Checkbox dropdown for selecting multiple values (filters, tags) | | `Modal` | `@/components/ui/Modal` | All overlay dialogs | | `ConfirmDialog` | `@/components/ui/ConfirmDialog` | Destructive / confirmation prompts | | `DataTable` | `@/components/ui/DataTable` | All tabular data with sorting/selection | @@ -381,3 +383,16 @@ All pages import from `@/lib/api`, never directly from `_archive`. These are the ONLY two files permitted to import from `_archive/auth/`. All other files use `@/hooks/useAuth`. + +--- + +## Documentation & Commit Policy + +**Every change to this project — major or minor — must be documented and committed.** This is how we keep a record of what happened over time. Uncommitted or undocumented work is effectively invisible to future sessions. + +- **Commit every change**, no matter how small (a copy tweak, a token rename, a bug fix, a new page). Do not batch unrelated work silently into "cleanup later" — if it changed, commit it. +- **Write descriptive commit messages** that explain *why*, not just *what* — future sessions rely on `git log` to reconstruct project history since this isn't otherwise tracked elsewhere. +- **Never leave work uncommitted** at the end of a session/task unless the user explicitly says to hold off. +- Follow the repo's existing commit message conventions (see recent `git log` for style/format). +- If a change is large enough to warrant explanation beyond the commit message (a new module, a non-obvious fix, a schema/API change), note the reasoning in the commit body — don't rely on memory or chat history to preserve it. +- This applies to backend, frontend, and config changes alike — even though `backend/` and `_archive/` are off-limits to modify directly in most cases, any change made anywhere in the repo still follows this same commit discipline.