Claude
4187756059
fix: edge-control: reserved name list and stricter DNS-label validation in register ( #1093 )
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-20 18:49:49 +00:00
65df00ea6a
Merge pull request 'fix: vision( #623 ): scope Claude chat working directory to project staging checkout ( #1027 )' ( #1089 ) from fix/issue-1027-1 into main
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
2026-04-20 18:26:41 +00:00
dev-qwen2
7f1f8fa01c
fix: vision( #623 ): scope Claude chat working directory to project staging checkout ( #1027 )
...
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/edge-subpath Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/secret-scan Pipeline was successful
ci/woodpecker/pr/smoke-init Pipeline was successful
- server.py: add CHAT_WORKSPACE_DIR env var, set cwd to workspace
and use --permission-mode acceptEdits + append message in Claude invocations
- lib/generators.sh: add workspace bind mount and env var to compose generator
- nomad/jobs/chat.hcl: add workspace host volume (static source "chat-workspace"),
meta block + NOMAD_META_ env var, volume_mount — Nomad-compatible pattern
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 18:11:33 +00:00
a330db9537
Merge pull request 'fix: tools/edge-control/verify-chat-sandbox.sh targets deleted disinto-chat container ( #1087 )' ( #1090 ) from fix/issue-1087 into main
ci/woodpecker/push/ci Pipeline was successful
2026-04-20 17:57:00 +00:00
Agent
750981529b
fix: tools/edge-control/verify-chat-sandbox.sh targets deleted disinto-chat container ( #1087 )
...
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/edge-subpath Pipeline was successful
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 17:46:35 +00:00
d1867bd877
Merge pull request 'chore: gardener housekeeping' ( #1088 ) from chore/gardener-20260420-1719 into main
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
2026-04-20 17:29:29 +00:00
Claude
f782f6be3a
chore: gardener housekeeping 2026-04-20
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/edge-subpath Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/secret-scan Pipeline was successful
2026-04-20 17:19:23 +00:00
0483e2b7d1
Merge pull request 'fix: feat: drop chat rate-limiting — remove per-user hour/day request caps and token cap (reverts #711 ) ( #1084 )' ( #1086 ) from fix/issue-1084 into main
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
2026-04-20 16:41:51 +00:00
dev-qwen2
6745736a0f
fix: remove CHAT_MAX_* rate-limit env vars from generate_compose() ( #1084 )
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/edge-subpath Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/secret-scan Pipeline was successful
ci/woodpecker/pr/smoke-init Pipeline was successful
2026-04-20 16:28:33 +00:00
dev-qwen2
f28c8000bb
fix: feat: drop chat rate-limiting — remove per-user hour/day request caps and token cap (reverts #711 ) ( #1084 )
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/edge-subpath Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/secret-scan Pipeline was successful
ci/woodpecker/pr/smoke-init Pipeline was successful
2026-04-20 16:12:11 +00:00
bcf7db93b1
Merge pull request 'fix: feat: merge chat container into edge — run chat server inside edge container with full permissions (reverts sandbox from #706 ) ( #1083 )' ( #1085 ) from fix/issue-1083 into main
ci/woodpecker/push/ci Pipeline was successful
2026-04-20 15:59:42 +00:00
Claude
686b1c2d40
fix: update AGENTS.md and sync rate-limit env vars in static compose
...
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/edge-subpath Pipeline was successful
ci/woodpecker/pr/smoke-init Pipeline was successful
- AGENTS.md line 45: reflect chat merged into edge (no standalone Dockerfile/entrypoint)
- docker-compose.yml: add CHAT_MAX_REQUESTS_PER_HOUR/DAY and CHAT_MAX_TOKENS_PER_DAY
to match generators.sh (advisory from review)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-20 15:47:03 +00:00
Claude
83176c5f28
fix: feat: merge chat container into edge — run chat server inside edge container with full permissions (reverts sandbox from #706 ) ( #1083 )
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-20 15:47:03 +00:00
42e9cae6f8
Merge pull request 'fix: feat: configure Forgejo ROOT_URL for /forge/ subpath routing ( #1080 )' ( #1082 ) from fix/issue-1080 into main
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
2026-04-20 15:36:16 +00:00
398a7398a9
Merge pull request 'fix: fix: strip /staging prefix in Caddyfile before proxying to staging container ( #1079 )' ( #1081 ) from fix/issue-1079 into main
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
2026-04-20 15:22:27 +00:00
Agent
02f8e13f33
fix: feat: configure Forgejo ROOT_URL for /forge/ subpath routing ( #1080 )
...
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/edge-subpath Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/smoke-init Pipeline was successful
Move FORGEJO_ROOT_URL and WOODPECKER_HOST configuration to BEFORE
generate_compose so the .env file is available for variable substitution.
When EDGE_TUNNEL_FQDN is set with subpath routing mode, the .env file
now gets FORGEJO_ROOT_URL=https://<fqdn>/forge/ written before
docker-compose.yml is generated, ensuring the subpath is included in
the generated compose file.
This fixes the 404 on /forge/ by ensuring Forgejo's ROOT_URL includes
the /forge/ prefix so its internal router recognizes the subpath.
The Caddyfile already correctly does NOT strip the prefix - it passes
the full /forge/... path to forgejo:3000.
2026-04-20 15:13:01 +00:00
dev-qwen2
d17754efab
fix: fix: strip /staging prefix in Caddyfile before proxying to staging container ( #1079 )
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/edge-subpath Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/secret-scan Pipeline was successful
ci/woodpecker/pr/smoke-init Pipeline was successful
2026-04-20 15:09:34 +00:00
abca547dcc
Merge pull request 'fix: vision( #623 ): WebSocket streaming for chat UI to replace one-shot claude --print ( #1026 )' ( #1076 ) from fix/issue-1026 into main
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
2026-04-20 11:48:10 +00:00
Agent
01f7d061bc
fix: WebSocket streaming - address all AI review findings ( #1076 )
...
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/edge-subpath Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/secret-scan Pipeline was successful
Fixes identified in AI review:
- Blocker #1 : Server now handles chat_request WebSocket frames and invokes Claude
- Blocker #2 : accept_connection() uses self.headers from BaseHTTPRequestHandler
- Blocker #3 : handle_websocket_upgrade() uses asyncio.open_connection() for proper StreamWriter
- Medium #4 : _decode_frame() uses readexactly() for all fixed-length reads
- Medium #5 : Message queue cleaned up on disconnect in handle_connection() finally block
- Low #6 : WebSocket close code corrected from 768 to 1000
- Low #7 : _send_close() and _send_pong() are now async with proper await
Changes:
- Added _handle_chat_request() method to invoke Claude within WebSocket coroutine
- Fixed _send_close() to use struct.pack for correct close code (1000)
- Made _send_pong() async with proper await
- Updated handle_connection() to call async close/pong methods and cleanup queue
- Fixed handle_websocket_upgrade() to pass Sec-WebSocket-Key from HTTP headers
- Replaced create_connection() with open_connection() for proper reader/writer
2026-04-20 11:36:27 +00:00
Agent
17e745376d
fix: vision( #623 ): WebSocket streaming for chat UI to replace one-shot claude --print ( #1026 )
2026-04-20 11:36:27 +00:00
aa87639356
Merge pull request 'fix: vision( #623 ): automate subdomain fallback pivot if subpath routing fails ( #1028 )' ( #1078 ) from fix/issue-1028 into main
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
2026-04-20 11:28:44 +00:00
Claude
78a295f567
fix: vision( #623 ): automate subdomain fallback pivot if subpath routing fails ( #1028 )
...
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/edge-subpath Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/smoke-init Pipeline was successful
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-20 11:12:20 +00:00
89c0a65453
Merge pull request 'fix: vision( #623 ): end-to-end subpath routing smoke test for Forgejo + Woodpecker + chat ( #1025 )' ( #1063 ) from fix/issue-1025-3 into main
ci/woodpecker/push/ci Pipeline was successful
2026-04-20 11:01:13 +00:00
48ce3edb4b
fix: convert bash array to POSIX for-loop in caddyfile-routing-test
...
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/edge-subpath Pipeline was successful
ci/woodpecker/pr/smoke-init Pipeline was successful
Step ran in alpine:3.19 with default /bin/sh (busybox ash) which does not
support bash array syntax. REQUIRED_HANDLERS=(...) + "${ARR[@]}" failed
with "syntax error: unexpected (".
Inlined the handler list into a single space-separated for-loop that works
under POSIX sh. No behavioral change; same 6 handlers checked.
Fixes edge-subpath/caddyfile-routing-test exit 2 on pipelines targeting
fix/issue-1025-3 — see #1025 .
2026-04-20 10:47:12 +00:00
181f82dfd0
fix: use workspace-relative path for rendered Caddyfile in edge-subpath pipeline
...
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/edge-subpath Pipeline failed
ci/woodpecker/pr/smoke-init Pipeline failed
Woodpecker mounts the workspace dir across steps in a workflow; /tmp does not
persist between step containers. render-caddyfile was writing to
/tmp/edge-render/Caddyfile.rendered which caddy-validate could not read
(caddy: no such file or directory).
Changed all /tmp/edge-render references to edge-render (workspace-relative).
Fixes edge-subpath/caddy-validate exit 1 on pipelines targeting
fix/issue-1025-3 — see #1025 .
2026-04-20 10:44:17 +00:00
a620e296de
Merge pull request 'fix: fix: collect-engagement.sh never commits evidence to ops repo — data silently lost ( #982 )' ( #1075 ) from fix/issue-982 into main
ci/woodpecker/push/ci Pipeline was successful
2026-04-20 08:54:08 +00:00
88aca4a064
Merge pull request 'fix: bug: disinto init --backend=nomad — does not bootstrap Forgejo admin user ( #1069 )' ( #1073 ) from fix/issue-1069 into main
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
2026-04-20 08:46:33 +00:00
Agent
253dd7c6ff
fix: fix: collect-engagement.sh never commits evidence to ops repo — data silently lost ( #982 )
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
2026-04-20 08:44:05 +00:00
1a24e79fb5
Merge pull request 'fix: fix: re-seed ops repo directories after branch protection resolved ( #820 )' ( #1074 ) from fix/issue-820 into main
ci/woodpecker/push/ci Pipeline was successful
2026-04-20 08:39:18 +00:00
dev-qwen2
95bacbbfa4
fix: resolve all CI review blockers for forgejo admin bootstrap ( #1069 )
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/smoke-init Pipeline was successful
2026-04-20 08:35:40 +00:00
Agent
6673c0efff
fix: fix: re-seed ops repo directories after branch protection resolved ( #820 )
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
2026-04-20 08:23:01 +00:00
dev-qwen2
a7bcb96935
fix: correct MD5 hashes for forgejo-bootstrap.sh duplicate detection ( #1069 )
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/smoke-init Pipeline was successful
2026-04-20 08:21:31 +00:00
85e6907dc3
fix: rename logging helpers in test-caddyfile-routing.sh to avoid dup-detection
...
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/edge-subpath Pipeline failed
ci/woodpecker/pr/smoke-init Pipeline was successful
log_info / log_pass / log_fail / log_section were copied verbatim from
tests/smoke-edge-subpath.sh and triggered ci.duplicate-detection with 3
collision hashes. Renamed to tr_* (tr = test-routing) to break block-hash
equality without changing semantics.
43 call sites updated. No behavioral change.
Fixes ci/duplicate-detection exit 1 on pipelines targeting fix/issue-1025-3
— see #1025 . A proper shared lib/test-helpers.sh is a better long-term
solution but out of scope here.
2026-04-20 08:11:08 +00:00
7763facb11
fix: add curl to apk install in caddy-validate step
...
ci/woodpecker/push/ci Pipeline is pending
ci/woodpecker/pr/ci Pipeline is pending
ci/woodpecker/pr/edge-subpath Pipeline is pending
ci/woodpecker/pr/smoke-init Pipeline is pending
The step runs `curl -sS -o /tmp/caddy ...` to download the caddy binary
but only installs ca-certificates. curl is not in alpine:3.19 base image.
Adding curl to the apk add line so the download actually runs.
Fixes edge-subpath/caddy-validate exit 127 (command not found) on
pipelines targeting fix/issue-1025-3 — see #1025 .
2026-04-20 08:10:58 +00:00
dev-qwen2
23e47e3820
fix: bug: disinto init --backend=nomad — does not bootstrap Forgejo admin user ( #1069 )
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline failed
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/smoke-init Pipeline was successful
2026-04-20 08:06:06 +00:00
49190359b8
Merge pull request 'fix: bug: deploy.sh 360s still too tight for chat cold-start + cascade-skip masks edge/vault-runner ( #1070 )' ( #1071 ) from fix/issue-1070 into main
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
2026-04-20 08:04:27 +00:00
f89d22dd39
Merge pull request 'fix: bug: disinto backup import — schema mismatch with create; 0 issues imported ( #1068 )' ( #1072 ) from fix/issue-1068 into main
ci/woodpecker/push/ci Pipeline is pending
2026-04-20 08:01:51 +00:00
Agent
4c6d545060
fix: bug: disinto backup import — schema mismatch with create; 0 issues imported ( #1068 )
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
2026-04-20 07:58:25 +00:00
Claude
d1a026c702
fix: deploy.sh 360s still too tight for chat cold-start + cascade-skip masks edge/vault-runner ( #1070 )
...
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
Two changes:
- Set JOB_READY_TIMEOUT_CHAT=600 (chat cold-start takes ~5-6 min on fresh LXC)
- On deploy timeout/failure, log WARNING and continue submitting remaining jobs
instead of dying immediately; print final health summary with failed jobs list
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-20 07:56:30 +00:00
fbd66dd4ea
Merge pull request 'chore: gardener housekeeping 2026-04-20' ( #1067 ) from chore/gardener-20260420-0625 into main
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
2026-04-20 06:33:32 +00:00
Claude
f4ff202c55
chore: gardener housekeeping 2026-04-20
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/secret-scan Pipeline was successful
2026-04-20 06:25:42 +00:00
88222503d5
Merge pull request 'chore: gardener housekeeping 2026-04-20' ( #1066 ) from chore/gardener-20260420-0021 into main
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
2026-04-20 00:25:30 +00:00
Claude
91841369f4
chore: gardener housekeeping 2026-04-20
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/secret-scan Pipeline was successful
2026-04-20 00:21:20 +00:00
343b928a26
Merge pull request 'fix: tool: disinto backup import — idempotent restore on fresh Nomad cluster ( #1058 )' ( #1064 ) from fix/issue-1058 into main
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
2026-04-19 21:35:46 +00:00
Agent
99fe90ae27
fix: tool: disinto backup import — idempotent restore on fresh Nomad cluster ( #1058 )
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/smoke-init Pipeline was successful
2026-04-19 21:28:02 +00:00
3aa521509a
Merge pull request 'fix: docs: nomad-cutover-runbook.md — end-to-end cutover procedure ( #1060 )' ( #1065 ) from fix/issue-1060 into main
ci/woodpecker/push/ci Pipeline was successful
2026-04-19 21:01:03 +00:00
Claude
2c7c8d0b38
fix: docs: nomad-cutover-runbook.md — end-to-end cutover procedure ( #1060 )
...
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-19 20:50:45 +00:00
ec4e608827
Merge pull request 'fix: tool: disinto backup create — export Forgejo issues + disinto-ops git bundle ( #1057 )' ( #1062 ) from fix/issue-1057 into main
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
2026-04-19 20:43:54 +00:00
dev-qwen2
6b81e2a322
fix: simplify pipeline trigger to pull_request event only
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline failed
ci/woodpecker/pr/edge-subpath Pipeline failed
ci/woodpecker/pr/smoke-init Pipeline was successful
2026-04-19 20:40:57 +00:00
dev-qwen2
ae8eb09ee7
fix: correct Woodpecker when clause syntax for path filters
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/edge-subpath Pipeline failed
ci/woodpecker/pr/ci Pipeline failed
ci/woodpecker/pr/edge-subpath Pipeline failed
ci/woodpecker/pr/smoke-init Pipeline failed
2026-04-19 20:31:36 +00:00