33 Commits

Author SHA1 Message Date
DIvan2000
bee679d3e1 Merge pull request #2 from DIvan2K/nix-flake
Add Nix flake for reproducible build and NixOS support
2026-04-25 22:07:33 +04:00
DIvan2000
0660130653 Merge pull request #1 from DIvan2K/runtime-config
Add runtime CLI configuration (replace compile-time constants)
2026-04-25 21:53:34 +04:00
ff639015c2 docs(cli): update README and help text for runtime config 2026-04-24 19:51:28 +04:00
659ec6af18 nix: add flake + devShell, ignore result 2026-04-24 19:35:15 +04:00
5d969888fc runtime config via CLI instead of consts 2026-04-24 19:34:44 +04:00
rolandnsharp
f2a94befaa Shrink braille demo GIF to under 15MB for Twitter
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 20:24:11 +10:00
rolandnsharp
99e8839f4a Add global install instructions to README
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 20:17:38 +10:00
rolandnsharp
7d886e8d1d Fix gain display precision, reorder README demos
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 20:15:57 +10:00
rolandnsharp
7b7da1bca5 Add braille renderer with amber demo GIF
- Braille canvas: 2×4 dots per cell (4× resolution vs half-blocks)
- Shared palettes, effects, and audio between both renderers
- README with both demos and build instructions for each

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 20:08:31 +10:00
rolandnsharp
5dbd3ebfb6 Replace illwill with custom canvas — zero dependencies
- Custom terminal canvas: one buffer, one write() per frame
- Threaded audio via Nim channels (20fps → 60fps)
- 6 phosphor palettes (green, amber, cyan, blue, white, red)
- All tuning constants at top of osc.nim
- No illwill dependency, binary 352KB → 200KB
- CRT effects use same palette as trace

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 17:33:45 +10:00
rolandnsharp
cdd3523550 Remove graticule entirely
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 21:16:35 +10:00
rolandnsharp
86a236f77d Remove grid toggle — graticule always on
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 21:14:51 +10:00
rolandnsharp
b29170faf1 Higher resolution demo GIF (1040x780)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 20:52:03 +10:00
rolandnsharp
185c09776a Update demo GIF with green palette and zoom controls
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 20:50:37 +10:00
rolandnsharp
93c8be6e48 Beam sweep stops at center where the trace begins
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 20:47:08 +10:00
rolandnsharp
1c4ef163d7 Increase default gain and time zoom
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 20:45:23 +10:00
rolandnsharp
5dc759e46a Match CRT effects to phosphor green palette — remove all cyan
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 20:44:13 +10:00
rolandnsharp
a4f39f8494 Remove freeze functionality
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 20:25:19 +10:00
rolandnsharp
eca991b685 Remove LIVE/NO SIGNAL label from HUD
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 20:24:09 +10:00
rolandnsharp
c9a4e6eeae Thinner traces — horizontal-only bloom, no vertical bleed
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 20:21:09 +10:00
rolandnsharp
9d65aa1f94 Remove C helper, use pure Nim dynlib imports; better defaults
- Replaced avhelper.c with direct {.dynlib.} pragma imports
- Grid off by default
- Higher default gain and time zoom

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 20:08:12 +10:00
rolandnsharp
2c04d7f034 Remove crosshair-only grid mode, keep grid on/off toggle
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 20:01:22 +10:00
rolandnsharp
1f320b7ff1 Handle terminal resize dynamically
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 19:59:01 +10:00
rolandnsharp
bec41a437e Remove diagnostic files from repo 2026-04-05 19:56:14 +10:00
rolandnsharp
666af905f3 Fix AVPacket struct layout — was missing pts/dts fields
The packet layout is buf(8), pts(8), dts(8), data(8), size(4),
stream_index(4). We had buf, data, size, stream_index — reading
the pts timestamp as the data pointer, so every packet was garbage.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 19:56:02 +10:00
rolandnsharp
9599855766 Clean up stale comments and README
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 19:41:39 +10:00
rolandnsharp
43a7997944 Remove demo signal generator
Audio capture only — shows NO SIGNAL when libav can't connect.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 19:39:44 +10:00
rolandnsharp
fb3a0cb77b Remove ffmpeg subprocess fallback
Only two paths now: libav via dlopen, or demo signal.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 19:36:58 +10:00
rolandnsharp
3fc7ed1c4e Use direct libav bindings via dlopen instead of ffmpeg subprocess
Loads libavformat + libavdevice at runtime — no dev packages, no
subprocess, no pipe buffering. Falls back gracefully to ffmpeg
subprocess then demo mode if .so files aren't present.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 19:33:52 +10:00
rolandnsharp
3c9a9c7c89 Add MIT license 2026-04-05 14:10:18 +10:00
rolandnsharp
94d5b2cf63 Rename crt → osc throughout
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 13:43:15 +10:00
rolandnsharp
7ceac6c91f Add README with demo GIF
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 12:47:30 +10:00
rolandnsharp
448b303eba Terminal oscilloscope with CRT phosphor physics
- CRT boot/shutdown animations (ported from AetherTune)
- Y-T (time-domain) and X-Y (Lissajous) display modes
- Phosphor persistence with bloom and decay
- Half-block rendering for 2x vertical resolution
- Live audio capture via ffmpeg/PulseAudio monitor
- Gain and time/div controls, grid toggle, freeze

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 12:43:48 +10:00