Mp3 Agentabrams

repo: ~/Projects/mp3-agentabrams · 8 commits · 0 in last 24h, 0 in last 7d ·

Search the build

8 commits indexed

  1. 28d232a 2026-07-03 chore: macstudio3 migration — reconcile from mac2 + repoint paths (stevestudio2→macstudio3, node/npm/npx→/opt/homebrew)
  2. 08073d2 2026-05-31 Link favicon.svg in head (use branded SVG, not .ico fallback)
  3. d4839ec 2026-05-31 Add per-site favicon (kills /favicon.ico 404)
  4. b6948f8 2026-05-19 add 404-guard middleware so .bak/.pre-/~ snapshot paths never serve from static root
  5. a0211fd 2026-05-19 broaden .gitignore to cover snapshot/backup/editor cruft
  6. 066f365 2026-05-13 launchd: two opt-in plists for reboot-survival + tailscale access
  7. adfdb26 2026-05-13 server: lock to loopback (127.0.0.1) — was silently bound to 0.0.0.0 via global $HOST
  8. 6a16909 2026-05-13 initial: mp3-agentabrams — grid+list of every MP3 on Mac2

Authors

Agents used

  • none detected

Skills used

  • /com4
  • /npm1
  • /npx1
  • /homebrew1
  • /favicon1
  • /backup1
  • /editor1
  • /skills1
  • /manifest1
  • /refresh1
  • /audio1
  • /healthz1

Creative ideas + design notes

Commits with substantial prose (≥120 chars) — the rationale behind each move.

066f365 · 2026-05-13 · launchd: two opt-in plists for reboot-survival + tailscale access
Mirrors the ollama-tailscale-bridge pattern:

  com.steve.mp3-agentabrams-server          → node server.js on 127.0.0.1:9696
  com.steve.mp3-agentabrams-tailscale-bridge → socat 100.65.187.120:9696 -> 127.0.0.1:9696

Both: RunAtLoad=true, KeepAlive=true, plutil-lint clean. Logs land in
project logs/. Server plist deliberately omits MP3_HOST so server.js
keeps defaulting to loopback — Tailscale access is layered on top via
the separate bridge plist, never by exposing the server directly.

To enable on Mac2:
  cp launchd/com.steve.mp3-agentabrams-server.plist ~/Library/LaunchAgents/
  cp launchd/com.steve.mp3-agentabrams-tailscale-bridge.plist ~/Library/LaunchAgents/
  launchctl load -w ~/Library/LaunchAgents/com.steve.mp3-agentabrams-server.plist
  launchctl load -w ~/Library/LaunchAgents/com.steve.mp3-agentabrams-tailscale-bridge.plist

Verified post-load:
  loopback 127.0.0.1:9696       = 200
  tailscale 100.65.187.120:9696 = 200
  home LAN 192.168.1.53:9696    = refused

If Tailscale IP ever changes (tailscale ip -4), update bind= in the
tailscale-bridge plist and launchctl unload+load.
adfdb26 · 2026-05-13 · server: lock to loopback (127.0.0.1) — was silently bound to 0.0.0.0 via global $HOST
Initial app.listen(PORT, cb) defaulted to all interfaces; Steve caught
it on first review. The fix has two parts:

1. Pass explicit HOST to app.listen.
2. Use MP3_HOST (project-specific) instead of HOST. Steve's shell sets
   HOST=0.0.0.0 globally for other projects, which would have silently
   undone any 'default to 127.0.0.1' fix.

Override path preserved: MP3_HOST=0.0.0.0 npm start exposes on LAN.
Verified post-fix: netstat shows 127.0.0.1.9696 LISTEN only;
curl http://192.168.1.53:9696/ -> connection refused;
curl http://127.0.0.1:9696/ -> 200.
6a16909 · 2026-05-13 · initial: mp3-agentabrams — grid+list of every MP3 on Mac2
358 tracks indexed across ~/Projects/, ~/Videos/, ~/Desktop/, ~/.claude/skills/.
154MB total. Express on port 9696 (override MP3_PORT).

Stack:
  scan-mp3s.js  walks SCAN_ROOTS, writes manifest.json (gitignored)
  server.js     /api/manifest, /api/refresh (re-scan), /audio?id=<id> with
                Range support, /healthz, static public/.
  index.html    grid + list toggle, density slider (2-10 cols), sort
                (Newest/Oldest/Title/Size/Duration/Source), text + source
                filter, pseudo-waveform card art, inline range-aware player
                bar at bottom. All controls persist via localStorage mp3aa.*
                and hydrate BEFORE first render per Steve's standing rule.

Paths never appear in URLs — every track is referenced by stable sha1-12
id, so the filesystem layout is hidden from the frontend.

ffprobe duration probe gated by PROBE_DURATIONS=1 (first scan ran with
=0 for speed; durations show as -- in the UI until re-scan with
ffprobe enabled).

Next: DNS hookup at mp3.agentabrams.com (same pattern as
videos.agentabrams.com), optional auth gate if exposed publicly.

File tree

11 files tracked. Click any to browse the source at HEAD.

Other build journals

← Morning Review Features  ·  all 4 projects  ·  Muralsource Curator →

Export

commits.csv · feed.atom · project.json · commits.json

rendered in 0ms