Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,22 +30,24 @@ There is no Makefile — building is done exclusively through Docker.

```bash
# Run all tests (from docker/card/)
cd docker/card && go test ./...
cd docker/card && go test -race -count=1 ./...

# Run specific test packages
go test ./crypto/ # AES-CMAC and AES decrypt tests
go test ./db/ # Schema migration, settings CRUD, card operations (uses in-memory SQLite)
go test ./web/ # HTTP handler tests (auth, balance, path traversal)
```

Tests require CGo (for `go-sqlite3`). CI runs tests automatically via GitHub Actions on push/PR to main.
Tests require CGo (for `go-sqlite3`) and `HOST_DOMAIN` env var (db_init panics without it; test helpers set it automatically). CI runs tests automatically via GitHub Actions on push/PR to main.

## CI

GitHub Actions workflow (`.github/workflows/ci.yml`) runs on push/PR to `main`:
- `go vet ./...`
- `go build`
- `go test ./...`
- `go test -race -count=1 ./...`
- `govulncheck ./...`
Copy link

Copilot AI Feb 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The CI workflow doesn’t run govulncheck ./... directly; it runs it via go run golang.org/x/vuln/cmd/govulncheck@latest ./... (so it works without a preinstalled binary). To keep this section accurate and copy/pasteable, update the documented command or explicitly note that govulncheck must be installed if using the shorter form.

Suggested change
- `govulncheck ./...`
- `go run golang.org/x/vuln/cmd/govulncheck@latest ./...`

Copilot uses AI. Check for mistakes.
- Docker image builds for both `card` and `webproxy`

Uses Go 1.25.7 with CGo enabled for sqlite3.

Expand Down Expand Up @@ -116,4 +118,8 @@ Schema version managed by idempotent `update_schema_*` functions in `db_create.g
- `aead/cmac` — AES-CMAC for Bolt Card auth
- `go-ini/ini` — Phoenix config file parsing
- `skip2/go-qrcode` — QR code generation
- `golang.org/x/crypto` — bcrypt password hashing
- `golang.org/x/crypto` — bcrypt password hashing

## Memory File

After completing a set of changes, update the persistent memory file at `~/.claude/projects/-home-user-boltcard-hub/memory/MEMORY.md` with any new patterns, conventions, or project facts discovered during the session. Keep it concise and organized by topic. This helps maintain context across conversations.
Copy link

Copilot AI Feb 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This hard-coded ~/.claude/projects/.../MEMORY.md path is machine/user specific and won’t exist for most contributors or CI. Consider documenting the concept generically (or using a repo-relative path) so the guidance remains applicable across environments.

Suggested change
After completing a set of changes, update the persistent memory file at `~/.claude/projects/-home-user-boltcard-hub/memory/MEMORY.md` with any new patterns, conventions, or project facts discovered during the session. Keep it concise and organized by topic. This helps maintain context across conversations.
After completing a set of changes, update the persistent memory file associated with this repository (for example, a `MEMORY.md` file under `.claude/memory/` in the repo root) with any new patterns, conventions, or project facts discovered during the session. Keep it concise and organized by topic. This helps maintain context across conversations.

Copilot uses AI. Check for mistakes.