Skip to content

Commit 726c6f7

Browse files
committed
v1.1.2
1 parent e3a94e8 commit 726c6f7

5 files changed

Lines changed: 85 additions & 2 deletions

File tree

CONTRIBUTING.md

Lines changed: 71 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,89 @@ Contributions welcome. Here's how.
1010
4. Push it (`git push origin feature/something`)
1111
5. PR it
1212

13+
## Development Setup
14+
15+
Build locally:
16+
17+
```bash
18+
# Full variant (default)
19+
docker build -t holyclaude .
20+
21+
# Slim variant
22+
docker build --build-arg VARIANT=slim -t holyclaude:slim .
23+
```
24+
25+
Then swap the image in your compose file:
26+
27+
```yaml
28+
image: holyclaude # instead of coderluii/holyclaude:latest
29+
```
30+
31+
**Build times:** Full takes 15-25 minutes cold, slim takes 8-12 minutes. Cached rebuilds are much faster if you only changed files outside the layer you're modifying.
32+
33+
## Testing Changes
34+
35+
```bash
36+
docker compose up -d
37+
```
38+
39+
Verify:
40+
- `docker ps` shows `(healthy)` after ~30 seconds
41+
- `curl -sf http://localhost:3001/` returns 200
42+
- `docker logs holyclaude` shows no errors
43+
44+
If you changed the entrypoint or bootstrap, delete the sentinel to re-trigger first-boot:
45+
46+
```bash
47+
rm ./data/claude/.holyclaude-bootstrapped
48+
docker compose restart holyclaude
49+
```
50+
51+
## Variants
52+
53+
HolyClaude builds two variants from one Dockerfile using a `VARIANT` build arg:
54+
55+
- **full** (default) includes pandoc, ffmpeg, libvips, deployment CLIs (wrangler, vercel, netlify), PDF libraries, data science tools, and more
56+
- **slim** is the core tools only, smaller download
57+
58+
If you're adding a new tool or package, decide which variant it belongs to. Full-only packages go inside the `if [ "$VARIANT" = "full" ]` conditional blocks in the Dockerfile.
59+
60+
## Key Files
61+
62+
| File | What it does |
63+
|------|-------------|
64+
| `Dockerfile` | Single-stage build with full/slim split via `VARIANT` build arg |
65+
| `docker-compose.yaml` | Minimal quick-start compose |
66+
| `docker-compose.full.yaml` | Full compose with all options documented |
67+
| `scripts/entrypoint.sh` | UID/GID remapping, workspace fix, triggers bootstrap, hands off to s6-overlay |
68+
| `scripts/bootstrap.sh` | First-boot only: copies settings and memory template, configures git |
69+
| `scripts/notify.py` | Apprise notification helper for stop/error hooks |
70+
| `config/settings.json` | Default Claude Code settings baked into the image |
71+
| `config/claude-memory-full.md` | Runtime CLAUDE.md for full variant |
72+
| `config/claude-memory-slim.md` | Runtime CLAUDE.md for slim variant |
73+
| `s6-overlay/s6-rc.d/` | Service definitions for CloudCLI and Xvfb |
74+
1375
## What to contribute
1476

1577
- Bug fixes (always welcome)
1678
- New features (open an issue first to discuss)
1779
- Documentation improvements
18-
- Test coverage
80+
- New tools or packages (mention the size impact in your PR)
1981

2082
## What NOT to do
2183

2284
- Don't open a PR without testing locally
2385
- Don't include credentials or API keys
2486
- Don't change the code style (follow existing patterns)
2587

88+
## PR Checklist
89+
90+
- [ ] Built and tested locally (full variant at minimum)
91+
- [ ] `docker ps` shows healthy after startup
92+
- [ ] CloudCLI responds on port 3001
93+
- [ ] README updated if adding/removing tools
94+
- [ ] Mentioned size impact if adding new packages
95+
2696
## Questions?
2797

2898
Open an issue or start a discussion. We're friendly.

Dockerfile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,5 +187,9 @@ RUN chmod +x /etc/s6-overlay/s6-rc.d/cloudcli/run \
187187
# ---------- Working directory ----------
188188
WORKDIR /workspace
189189

190+
# ---------- Health check ----------
191+
HEALTHCHECK --interval=30s --timeout=5s --start-period=30s --retries=3 \
192+
CMD curl -sf http://localhost:3001/ || exit 1
193+
190194
# ---------- s6-overlay as PID 1 ----------
191195
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -809,7 +809,7 @@ Your data persists in `./data/claude` and `./workspace` — upgrading only repla
809809
To pin a specific version instead of `latest`:
810810

811811
```yaml
812-
image: coderluii/holyclaude:1.1.1 # instead of :latest
812+
image: coderluii/holyclaude:1.1.2 # instead of :latest
813813
```
814814

815815
<p align="right">

docs/CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@ All notable changes to HolyClaude will be documented in this file.
44

55
The format is based on [Keep a Changelog](https://keepachangelog.com/), and this project adheres to [Semantic Versioning](https://semver.org/).
66

7+
## [1.1.2] - 03/26/2026
8+
9+
### Added
10+
- Docker HEALTHCHECK instruction for container health monitoring
11+
- Bootstrap now backs up existing `settings.json` and `CLAUDE.md` before overwriting on re-bootstrap
12+
- Expanded CONTRIBUTING.md with build commands, testing steps, file map, and PR checklist
13+
714
## [1.1.1] - 03/26/2026
815

916
### Fixed

scripts/bootstrap.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ echo "[bootstrap] Running first-boot initialization..."
1919
mkdir -p "$CLAUDE_HOME/.claude"
2020

2121
# ---------- Copy settings.json ----------
22+
[ -f "$CLAUDE_HOME/.claude/settings.json" ] && cp "$CLAUDE_HOME/.claude/settings.json" "$CLAUDE_HOME/.claude/settings.json.bak"
2223
cp "$SOURCE_DIR/settings.json" "$CLAUDE_HOME/.claude/settings.json"
2324
echo "[bootstrap] Copied settings.json"
2425

@@ -27,6 +28,7 @@ VARIANT="full"
2728
if [ -f /etc/holyclaude-variant ]; then
2829
VARIANT=$(cat /etc/holyclaude-variant)
2930
fi
31+
[ -f "$CLAUDE_HOME/.claude/CLAUDE.md" ] && cp "$CLAUDE_HOME/.claude/CLAUDE.md" "$CLAUDE_HOME/.claude/CLAUDE.md.bak"
3032
cp "$SOURCE_DIR/claude-memory-${VARIANT}.md" "$CLAUDE_HOME/.claude/CLAUDE.md"
3133
echo "[bootstrap] Copied CLAUDE.md (${VARIANT} variant)"
3234

0 commit comments

Comments
 (0)