ea06442d44
Merge dev/fleet: fleet v1
2026-08-07 01:02:06 +02:00
184378ae57
fleet: one-shot homelab health snapshot (containers, disks, units)
...
status across configured hosts via read-only commands (claude-docker
wrapper on the Pi5, local docker/systemctl here). Stable table +
findings list, exit 0/2/1, CI job containers skipped, unreachable
hosts become findings. Parsers unit-tested; smoked against the real
fleet (19 genuine findings). Spec: doc/tool-parity.md 4.2.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_011KikHkfCiC3yELbsMN8fT9
2026-08-07 01:02:06 +02:00
f8bfa71f5f
ci/tasks/readme: register notifyr, svg-maker, waitfor, cronr, giteactl
...
release-tools / build-release (push) Successful in 5m1s
release.yml TOOLS + BIN cases, VS Code build/test tasks, README table,
plan.md milestone 5, tool-parity build-order status.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_011KikHkfCiC3yELbsMN8fT9
notifyr-latest
svg-maker-latest
waitfor-latest
cronr-latest
giteactl-latest
2026-08-07 00:56:47 +02:00
6b4f1441ac
Merge dev/giteactl: giteactl v1
2026-08-07 00:48:46 +02:00
4b54458511
giteactl: Actions runs, CI logs, wait/wait-quiet, releases
...
runs/log/wait/wait-quiet/release against the Gitea API. Log fetch
tries API (token) -> public web route -> ssh+zstd file storage
(hex-bucket path verified against the real Pi5 layout). wait-quiet
encodes the "serialize heavy builds" rule with private repos as
warnings, not failures. Injectable fetchers make the wait logic
testable. Spec: doc/tool-parity.md 4.1.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_011KikHkfCiC3yELbsMN8fT9
2026-08-07 00:48:46 +02:00
5a9d462087
Merge dev/cronr: cronr v1
2026-08-07 00:42:57 +02:00
78c7b32eb2
cronr: recurring/one-shot jobs as systemd user timers
...
add (schedule validated by systemd-analyze, units + script printed),
list (next elapse + last result), run, logs, rm. Command stored as a
script so quoting never meets ExecStart; PATH includes ~/.local/bin
so agent tools resolve. cronr-* namespace guards foreign units.
Smoked live: add -> run -> journal -> rm. Spec: doc/tool-parity.md 3.1.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_011KikHkfCiC3yELbsMN8fT9
2026-08-07 00:42:57 +02:00
c676dc270a
Merge dev/waitfor: waitfor v1
2026-08-07 00:39:58 +02:00
6c8cae885b
waitfor: block until a shell condition holds
...
--cmd exits 0 (+ optional --matches regex) or --timeout; exit 0/3/1,
last output always printed, --then hook composes with notifyr.
Injectable runner for tests + real-shell integration test.
Spec: doc/tool-parity.md 3.2.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_011KikHkfCiC3yELbsMN8fT9
2026-08-07 00:39:58 +02:00
2c34b66da5
Merge dev/svg-maker: svgc v1
2026-08-07 00:37:51 +02:00
36631c7709
svg-maker: svgc - .svgd text format -> SVG for agent-helm sharing
...
Line-based DSL (shapes, text, groups, color vars) with strict
validation and line-numbered errors, SVG emitter with visibility
defaults, truecolor terminal preview (same half-block technique as
spritec), info with bbox + outside-canvas warnings. Verified
end-to-end: svgc build -> helmd share -> visible through the hub.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_011KikHkfCiC3yELbsMN8fT9
2026-08-07 00:37:51 +02:00
9f90d4b8be
Merge dev/notifyr: notifyr v1
2026-08-07 00:30:12 +02:00
9339aac5cf
notifyr: ntfy send/read client for agents
...
send (title/priority/tags), read (poll mode, greppable one-liners),
topics (known homelab buses from config). Config with homelab defaults
on first run. Unit tests against httptest; smoked against the real
ntfy on topic agent-tools-test. Spec: doc/tool-parity.md 3.3.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_011KikHkfCiC3yELbsMN8fT9
2026-08-07 00:30:12 +02:00
e5b1d73c70
doc(tool-parity): live test of agy 1.1.9 — real toolset, schedule limits, buy-before-build notes
...
release-tools / build-release (push) Successful in 5s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-05 19:47:58 +02:00
5131e9f823
doc: tool-parity plan — Gemini CLI vs Claude Code gap analysis + homelab admin tool specs
...
release-tools / build-release (push) Successful in 59s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-05 19:27:58 +02:00
c2e89eeaa1
ci/tasks/readme: register hitbox-tool
...
release-tools / build-release (push) Successful in 36s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01MmdG9GqfSWCzts7AkDwRDh
hitbox-tool-latest
2026-07-14 07:12:39 +02:00
0ebaf7b4ce
Merge dev/hitbox-tool: hitbox v1
2026-07-14 07:12:05 +02:00
f8924d89f7
hitbox-tool: per-frame collision boxes from sprite sheet alpha -> JSON
...
- parses the spritec _WxH_CxR naming convention incl. auto-detection of
integer-upscaled sheets (256x64 named 8x8_4x1 -> 64x64 cells)
- tight alpha bbox per frame with threshold/shrink/pad tuning, row-major
indices, empty-frame flags; boxes relative to frame origin
- show command draws frames + box outline in the terminal for verification
- go tests: scanning, threshold, shrink/pad clamping, name parsing,
scale inference, JSON roundtrip
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01MmdG9GqfSWCzts7AkDwRDh
2026-07-14 07:12:05 +02:00
dc78c791df
ci/tasks/readme: register sfx-maker (sfxc)
...
release-tools / build-release (push) Successful in 32s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01MmdG9GqfSWCzts7AkDwRDh
sfx-maker-latest
2026-07-14 07:08:41 +02:00
d2bf781a71
Merge dev/sfx-maker: sfxc v1
2026-07-14 07:08:05 +02:00
e7ac31b5c8
sfx-maker: sfxc - sfxr-style .sfx text presets -> 16-bit WAV synthesis
...
- waves: square (duty), saw, sine, triangle, pitched noise (seeded, deterministic)
- envelope attack/sustain/decay, freq slide, vibrato, arpeggio jump,
one-pole low/high-pass filters, clamped output
- presets blip/coin/explosion/hurt/jump/laser/powerup with seeded variants;
preset writes editable .sfx or renders .wav directly
- go tests: parse/validate, determinism, per-preset RMS, WAV header roundtrip
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01MmdG9GqfSWCzts7AkDwRDh
2026-07-14 07:08:04 +02:00
ec814c373a
ci/tasks/readme: register bitmap-font-maker (fontc)
...
release-tools / build-release (push) Successful in 36s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01MmdG9GqfSWCzts7AkDwRDh
bitmap-font-maker-latest
2026-07-14 07:04:28 +02:00
6b3a493703
Merge dev/bitmap-font-maker: fontc v1
2026-07-14 07:03:15 +02:00
6b10c4a57c
bitmap-font-maker: fontc - .font glyph grids -> atlas PNG + metrics JSON + text rendering
...
- .font format: glyph sections with #/. grids, proportional widths,
literal unicode glyph names, spacing/space-width/line-height/baseline
- build (atlas white-on-transparent + JSON metrics), render (text -> PNG
with \n, scale, color), info, preview (terminal half-blocks)
- example tiny5 font: A-Z, ÅÄÖ, 0-9, punctuation (47 glyphs, 3x5)
- go tests: parsing, errors, atlas metrics, text rendering
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01MmdG9GqfSWCzts7AkDwRDh
2026-07-14 07:03:04 +02:00
a5b8a249ed
Merge dev/mesh-tool: mesht v1
release-tools / build-release (push) Successful in 1m53s
pixel-sprite-maker-latest
mesh-tool-latest
2026-07-14 02:39:01 +02:00
2e71a70052
mesh-tool: edited example models (teapot/cow/snowman) made with mesht
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01MmdG9GqfSWCzts7AkDwRDh
2026-07-14 02:39:01 +02:00
62065f237b
mesh-tool: mesht - create/inspect/edit OBJ+STL with ASCII multi-view rendering
...
- OBJ read/write (multi-object, ngon fan-triangulation, negative indices),
STL binary+ascii with auto-detect and vertex welding
- info: bbox/size/area/volume + watertightness via edge manifold stats
- view: z-buffered orthographic ASCII renders (front/side/top/iso/back)
- transform: center/mirror/scale/rotate/translate/fit, per-object filter,
winding auto-flip on negative determinant
- create: box/sphere/cylinder/cone/plane/torus; merge; convert
- go tests: primitive volumes vs analytic values, roundtrips, topology
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01MmdG9GqfSWCzts7AkDwRDh
2026-07-14 02:38:29 +02:00
3eb4fa0b1d
Merge dev/pixel-sprite-maker: spritec v1
2026-07-14 02:37:58 +02:00
42422be2f7
scaffolding: root README, plan, VS Code build tasks, Gitea Actions release workflow
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01MmdG9GqfSWCzts7AkDwRDh
2026-07-14 02:37:58 +02:00
23135a96d1
pixel-sprite-maker: spritec - .sprite text format -> png/jpg/svg + sprite sheets
...
- .sprite format: single-char palette keys (hex/rgb()/CSS names/none), grid
rows, '.' transparent by default, max 256x256 per sprite
- render/sheet/info/preview subcommands; sheets name themselves
<base>_<cellW>x<cellH>_<cols>x<rows>.<ext> (row-major)
- SVG output RLE-merges pixel runs; JPG composites over --bg
- go tests for parser, colors, scaling, svg, sheet layout
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01MmdG9GqfSWCzts7AkDwRDh
2026-07-14 02:22:16 +02:00
581e37acd8
Initial commit
2026-07-14 01:45:34 +02:00