Releases: linuxmatters/jive-visualiser
Release list
Jive Visualiser 0.5.0
Highlights ✨
- Renamed to Jive Visualiser. The project is now Jive Visualiser (formerly Jivefire), with matching CLI branding and a new sparkles ✨ emoji.
- Faster rendering. Reduced memory allocations in the render and preview paths for lower overhead per frame.
- Updated FFmpeg bindings. Bumped ffmpeg-statigo to v8.1.2.0.
- More reliable output. Fixed audio encoder error handling, corrected progress-bar copying, and preserved the quit state after the progress view exits.
Under the hood
- Split CLI setup, Pass 2 orchestration, encoder, and UI helpers into clearer modules.
- Removed dead wrappers and shared common helpers across audio, encoder, renderer, and CLI.
- Improved code comments across audio, CLI, config, encoder, renderer, UI, and YUV packages.
- Addressed multiple rounds of peer review findings.
- Routine dependency bumps: nixpkgs, GitHub Actions, and golang.org/x/image.
Changes since 0.4.1
- fix: address peer review findings (c939ee9)
- chore: update gif (60238ef)
- chore: rebrand from fire to sparkles emoji (becbe39)
- refactor: fix peer review findings across audio, encoder, UI, and tooling (9f333a3)
- fix: preserve quit state after progress view exits (660e5d0)
- refactor: split CLI setup and pass 2 orchestration (a036789)
- chore: update gif (529e006)
- perf: reduce allocations in render and preview paths (1449bdf)
- chore: update ffmpeg-statigo to v8.1.2.0 (58c8232)
- chore: drop harper dictionary (a7a5efb)
- fix: address peer review findings (d7c1236)
- fix: copy progress bars and check audio encoder errors (f01aa44)
- refactor: split encoder, pass 2, and UI helpers (77a690d)
- refactor: remove dead wrappers and share helpers (eac1207)
- docs: improve comments across audio, CLI, config, encoder, renderer, UI, and YUV packages (db2702c)
- refactor: fix peer review findings in audio, encoder, renderer, and CLI (d6587ba)
- refactor(cli): rename project from Jivefire to Jive Visualiser (87f2cf6)
- fix(go): don't pin point release (28092f0)
- chore: update ffmpeg-statigo to v8.1.1.3 (1571412)
- chore(deps): bump the github-actions group across 1 directory with 2 updates (03dfad8)
- chore(deps): bump nixpkgs from
567a49dtoe73de5b(c31076e) - chore(deps): bump nixpkgs from
9ae611ato567a49d(5c1198f) - deps(deps): bump golang.org/x/image in the gomod group (52b6c30)
Installation
Download the appropriate binary for your platform below, make it executable, and move it to your PATH:
# Linux (amd64)
chmod +x jive-visualiser-linux-amd64
sudo mv jive-visualiser-linux-amd64 /usr/local/bin/jive-visualiser
# macOS (Apple Silicon)
chmod +x jive-visualiser-darwin-arm64
sudo mv jive-visualiser-darwin-arm64 /usr/local/bin/jive-visualiserJivefire 0.4.1
Changes since 0.4.0
- chore(justfile): add release tasks (a9a0a30)
- chore(deps): bump nixpkgs from
a799d3eto9ae611a(f5f3121) - deps(deps): bump the gomod group with 2 updates (15ef190)
- doc: update README to match --episode implementation (fad8a18)
- feat(cli): make --episode flag optional (350bfe8)
- test(encoder): drop redundant AVAudioFifo benchmarks (c095a71)
- refactor(encoder): swap AudioFIFO from Go sync.Pool to AVAudioFifo (e09c6e2)
- refactor(audio): migrate from gofft to FFmpeg av_tx RDFT (4eb5b5a)
- chore: update ffmpeg-statigo to v8.1.1.2 (2ebe6ca)
Installation
Download the appropriate binary for your platform below, make it executable, and move it to your PATH:
# Linux (amd64)
chmod +x jivefire-linux-amd64
sudo mv jivefire-linux-amd64 /usr/local/bin/jivefire
# macOS (Apple Silicon)
chmod +x jivefire-darwin-arm64
sudo mv jivefire-darwin-arm64 /usr/local/bin/jivefireChecksums
SHA256 checksums are provided below for verification.
Jivefire 0.4.0
Highlights ✨
- Spring visualiser dynamics are now the default. Spectrum bars snap instantly to new peaks then spring back using harmonica physics, with an amplitude gain for a fuller, livelier look. No flag needed.
- Rebuilt TUI on Charm v2. The entire progress and summary display has been reworked: fixed-width metric boxes, a live file-size gauge, encoder-name readout, and time/speed/audio figures rendered with proper Unicode glyphs. Dynamic range is now shown in dB.
- Audio resampling migrated to libswresample. Mono-to-stereo conversion now uses FFmpeg's own downmix coefficients and correctly drains the decoder at end-of-stream, eliminating subtle sample-count mismatches in the final seconds.
- A/V sync drift corrected. A longstanding offset between audio and video timestamps has been fixed; output MP4s should now stay in lock-step from start to finish.
- Meaningfully faster encoding. Per-frame heap allocations and goroutine churn in the hot path have been eliminated, and shared YUV conversion primitives are now centralised in an internal package, reducing redundant work per frame.
- Stability and race-condition fixes throughout. Preview-frame rendering is now double-buffered (no more concurrent-access panics under load), the encoder worker pool cleans up correctly on initialisation failure, and a data race on asset warnings at startup has been resolved.
Changes since 0.3.3
- fix(ui): double-buffer preview frames to eliminate concurrent access (4666c28)
- chore: update .gif (5942348)
- fix(ui): eliminate data race on preview frame buffer (2e08e92)
- ui: display time, speed, and audio metrics with proper Unicode glyphs (2d4f623)
- refactor(audio): migrate to libswresample for sample conversion (53d8e5d)
- refactor: eliminate comment clutter and improve doc clarity (34f464e)
- chore(deps): bump nixpkgs from
64c08a7toa799d3e(dd266b7) - fix(audio,ui,cli): guard against zero sample rate and eliminate assetWarnings race (73c7922)
- fix(encoder): defer worker pool cleanup on initialization failure (5383c94)
- fix(audio,encoder,cli): correct A/V sync drift, surface asset warnings, and eliminate encoder allocations (01e1b3e)
- refactor: consolidate duplicated code and eliminate redundant operations (e29dd17)
- perf: eliminate heap allocations and goroutine spawning in per-frame hot paths (f98c428)
- fix(audio): duplicate mono samples for stereo channel encoding (ea22ab6)
- refactor: replace custom unsafe helpers with Go standard library utilities (97a3b2b)
- refactor: consolidate bar rendering loops and remove unused UI state (97e5e1f)
- refactor(ui): remove redundant timing fields and extract borderless table (407483a)
- chore: update gif (9836cbf)
- refactor(ui): make blockClamp generic to accept block array length (691a2b7)
- style(ui): remove "Video Preview" and "Live Visualisation" labels (8f2b358)
- refactor(ui): consolidate encoder, duration, and size metrics into finished pass 2 box (8756a31)
- feat(ui): add encoder name display and refactor frame-source layout (12aba78)
- feat(ui): add file size gauge and improve spectrum tracking (0bbf17f)
- refactor(ui): simplify progress labels and remove audio profile rendering (f711f11)
- feat(ui): refactor progress and summary display with fixed-width boxes and metrics (f55be8f)
- feat(renderer): make harmonica spring peak-hold bar dynamics the default (4c503a5)
- feat(ui): add harmonica spring gain for spectrum bar amplitude scaling (2c0f0ca)
- refactor(ui): extract progress bar construction into newProgressBar helper (a12f196)
- feat(ui): refactor progress UI with spectrum springs and modular rendering (ae9ef52)
- docs(agents): document Charm v2 TUI suite and API gotchas (c162367)
- fix(ci): exempt x/sync and go-runewidth from licence check (52097d9)
- build(deps): upgrade charm TUI suite to v2 and fix imports (74f4e56)
- fix(audio): drain decoder at end of stream (5a18c07)
- fix(audio): reject unsupported channel counts (908bc21)
- docs: update architecture to reflect yuv extraction and reader refactoring (0b7400c)
- style(audio): silence gosec G115 false positives in reader (9749286)
- fix(ui): display dynamic range in decibels (17aba13)
- refactor(cli): source CLI colours from the shared theme (5950c58)
- refactor(audio): share the buffer-fill loop between read helpers (308b972)
- refactor(encoder): dispatch frame writes on the input pixel format (fa0de4c)
- test(encoder): benchmark the production YUV path (6cd20a1)
- refactor(audio): drop unused totalFrames from ProgressCallback (ef6f1a8)
- refactor(audio): drop unused Metadata fields (290f23c)
- refactor(audio): type sampleDecoder with named sample formats (d56bde1)
- refactor(renderer): bundle title and episode into PodcastMeta (06c90b7)
- refactor(ui): let the encoder report hardware mode (29a5709)
- refactor(audio): drop single-implementor decoder indirection (f6757bb)
- refactor(audio): name sample formats instead of magic integers (eaac74f)
- refactor(cmd): group runPass2 encoding parameters into a struct (39b5081)
- refactor(encoder): extract shared YUV primitives into internal/yuv (f7a8d3d)
- refactor(encoder): read frame size from the FIFO instead of recomputing (cb92f9f)
- refactor(encoder): pass channel count to AVChannelLayoutDefault directly (9664d1f)
- refactor(encoder): derive AudioFIFO length from the buffer (a79bd5f)
- refactor(cmd): remove redundant ctx no-op assignment (e2b8693)
- refactor(cmd): drop unreachable multi-channel label branch (d6b8aff)
- refactor(audio): remove unused NumChannels from decoder (0238485)
- refactor(audio): drop unused SeekToSample method (62c471b)
- refactor(encoder): source hwaccel probe dimensions from config (9766fac)
- refactor(config): derive Framerate from FPS (5679b1b)
- refactor(config): model overridable colours as a value type (4911f9b)
- refactor(audio): extract shared raw-magnitude FFT binning (a6c7510)
- refactor(cmd): pass title and episode as parameters (da323cd)
- refactor: replace hand-rolled stdlib implementations with standard library (195a1c5)
Installation
Download the appropriate binary for your platform below, make it executable, and move it to your PATH:
# Linux (amd64)
chmod +x jivefire-linux-amd64
sudo mv jivefire-linux-amd64 /usr/local/bin/jivefire
# macOS (Apple Silicon)
chmod +x jivefire-darwin-arm64
sudo mv jivefire-darwin-arm64 /usr/local/bin/jivefireChecksums
SHA256 checksums are provided below for verification.
Jivefire 0.3.3
Changes since 0.3.2
- chore(tailor): refit and alter (a87fb8b)
- docs: improve comments across codebase (2fb4435)
- chore(deps): bump Go from 1.26.1 to 1.26.3 and sync dependencies (0db8840)
- docs(claude): reference AGENTS.md (ccd1602)
- ci: expose GITHUB_TOKEN to ffmpeg-statigo library downloads (7bfe76f)
- chore: update ffmpeg-statigo to v8.1.1.1 (585620c)
- chore(deps): bump nixpkgs from
2991645to64c08a7(951e30a) - chore(deps): bump the github-actions group across 1 directory with 2 updates (#42) (8471c11)
- chore(deps): bump nixpkgs from
549bd84to2991645(37f9ec1) - deps(deps): bump golang.org/x/image in the gomod group (#40) (54478fc)
- deps(deps): bump golang.org/x/image in the gomod group (#38) (e838326)
- chore(deps): bump nixpkgs from
b40629eto549bd84(3d2e093) - chore(deps): bump github/codeql-action (#36) (ef73ad2)
- ci: add Dependabot Nix updates (af62707)
- chore(deps): bump the github-actions group across 1 directory with 4 updates (#34) (07c9cf7)
- deps(deps): bump golang.org/x/image in the gomod group (#33) (3fe1002)
- deps(deps): bump github.com/alecthomas/kong in the gomod group (#32) (8176b9f)
- chore(deps): bump github/codeql-action (#30) (86bcf73)
Installation
Download the appropriate binary for your platform below, make it executable, and move it to your PATH:
# Linux (amd64)
chmod +x jivefire-linux-amd64
sudo mv jivefire-linux-amd64 /usr/local/bin/jivefire
# macOS (Apple Silicon)
chmod +x jivefire-darwin-arm64
sudo mv jivefire-darwin-arm64 /usr/local/bin/jivefireChecksums
SHA256 checksums are provided below for verification.
Jivefire 0.3.2
Changes since 0.3.1
- refactor: code smells remediation across audio and ui packages (9bba424)
- deps(deps): bump golang.org/x/image in the gomod group (#28) (efcef49)
- fix(audio): zero-fill FFT buffer tail after partial frame read (89c3be3)
- refactor(audio): optimize ReadNextFrame to eliminate per-frame allocations (68154fc)
- refactor: extract three DRY helpers to eliminate duplication (d6e198b)
- refactor(renderer): extract duplicated image loading and text measurement (c866ac0)
- refactor(audio): extract common FFmpeg context initialization (0e8e14c)
- refactor(audio): consolidate duplicated buffer read loops (9ecf322)
- refactor: remove 14 instances of dead code across codebase (009cd9c)
- refactor(stdlib): use cmplx.Abs for complex magnitude calculations (f234ee2)
- refactor(stdlib): replace unsafe.Pointer float32 conversions with math stdlib (85b3e0e)
- chore(deps): bump the github-actions group across 1 directory with 2 updates (#26) (2b35200)
- deps(deps): bump golang.org/x/image in the gomod group (#25) (c1a8796)
- ci(fix): add actionlint problem matcher for GitHub Actions (b347f3c)
- ci: consolidate CI/CD workflows into unified builder pipeline (bfea46a)
- refactor: apply linting fixes across codebase (b393f04)
- feat: fit tailor community help files (6e8b1fa)
- chore: update to Go 1.26.1 (31d45bb)
- build(deps): bump actions/upload-artifact from 6 to 7 (8dcc605)
- build(deps): bump github.com/charmbracelet/bubbles from 0.21.0 to 0.21.1 (6fa478a)
- build(deps): bump github.com/alecthomas/kong from 1.13.0 to 1.14.0 (1a2801f)
- build(deps): bump golang.org/x/image from 0.34.0 to 0.35.0 (dbebc89)
Installation
Download the appropriate binary for your platform below, make it executable, and move it to your PATH:
# Linux (amd64)
chmod +x jivefire-linux-amd64
sudo mv jivefire-linux-amd64 /usr/local/bin/jivefire
# macOS (Apple Silicon)
chmod +x jivefire-darwin-arm64
sudo mv jivefire-darwin-arm64 /usr/local/bin/jivefireChecksums
SHA256 checksums are provided below for verification.
Jivefire 0.3.1
Changes since 0.3.0
- chore: update ffmpeg-statigo to v8.0.1.3 (09b329a)
- chore: update nixpkgs lockfile (d170624)
- docs: move copilot instructions to AGENTS.md (5555215)
- build(deps): bump golang.org/x/image from 0.33.0 to 0.34.0 (4d2c1be)
- build(deps): bump actions/upload-artifact from 5 to 6 (163ee5f)
Installation
Download the appropriate binary for your platform below, make it executable, and move it to your PATH:
# Linux (amd64)
chmod +x jivefire-linux-amd64
sudo mv jivefire-linux-amd64 /usr/local/bin/jivefire
# macOS (Apple Silicon)
chmod +x jivefire-darwin-arm64
sudo mv jivefire-darwin-arm64 /usr/local/bin/jivefireChecksums
SHA256 checksums are provided below for verification.
Jivefire 0.3.0
Changes since 0.2.0
- docs: update ARCHITECTURE.md with improved colourspace conversion details (359b605)
- perf(encoder): optimise NV12 conversion with even/odd row separation (05f046d)
- perf(encoder): add direct RGBA→YUV420P conversion for software path (0d1e9f6)
- perf(audio): pre-compute Hanning window coefficients in FFT processor (00aa59a)
- perf(encoder): add sync.Pool for AudioFIFO slice allocation (bdf1f80)
- perf(audio): remove redundant FFT buffer copy in analyzer (588ece7)
- perf(render): pre-allocate buffers in hot render loop (96e7e87)
- test(config): add RuntimeConfig nil field handling validation (995478a)
- test(audio): add Hanning window coefficient validation (db9f01d)
- test(encoder): add AudioFIFO edge case and stress tests (3bec5e9)
- test(config): add hex colour parsing and runtime config tests (547b908)
- test(audio): add frequency rearrangement symmetry tests (14c62a7)
- test(audio): add FFT correctness unit tests for frequency binning (9774b81)
- refactor(encoder): add checkFFmpeg helper for consistent error handling (06f41f9)
- refactor(config): extract CAVA sensitivity magic numbers to constants (0a005cb)
- refactor(encoder): remove stale writeFrameVulkan comment block (5c248db)
- docs(encoder): document VideoToolbox rate control limitations (897ce35)
- refactor(cli): consolidate fire theme colours into shared module (3ce34c8)
- refactor(encoder): remove unused testHardwareAvailable function (f47fa10)
- refactor(ui): remove unused progress bar rendering functions (9108530)
- refactor(encoder): remove unused audio processing functions (db9eed3)
- fix(encoder): correct VideoToolbox hardware frames context setup (1750b65)
- docs(readme): document GPU acceleration support (9eb4a31)
- fix(ui): add VA-API to GPU pipeline label detection (cb2d853)
- refactor(encoder): extract pixel format setup into configurePixelFormat method (89e7a2c)
- refactor(encoder): use setupTestHWFramesContext for QSV probe (e35b347)
- refactor(config): extract CAVA gravity formula constants (d34c81a)
- refactor(encoder): define encoderSpec type for priority lists (92627ad)
- refactor(encoder): remove dead DetectNVENC function (27bd755)
- refactor(encoder): extract setupTestHWFramesContext helper (41d7269)
- refactor(encoder): extract suppressHWProbeLogging helper (f8c4334)
- feat: add VA-API hardware encoder support (94fe40f)
- perf(encoder): optimize hardware encoder settings for low latency (5f6d19e)
- perf(renderer): improve timing measurements and UI progress updates (477e12a)
- feat(ui): improve terminal UI with alt screen buffer (38e712b)
- fix(ui): correct progress bar calculation showing ~80% at completion (c881572)
- feat(encoder): add hardware encoder probe and improve encoder detection (bb36a6c)
- perf(encoder): refactor colour space conversion with 2% speedup (60547bd)
- feat(encoder): prepare QSV support infrastructure (bcc95f1)
- feat(bench): auto-detect available video encoders (94dffc6)
- feat(encoder): add Vulkan (h264_vulkan) hardware acceleration (6136216)
- feat(encoder): add automatic NVENC hardware acceleration (a9c1366)
- docs: polish readme wording and update build instructions (add0c86)
Installation
Download the appropriate binary for your platform below, make it executable, and move it to your PATH:
# Linux (amd64)
chmod +x jivefire-linux-amd64
sudo mv jivefire-linux-amd64 /usr/local/bin/jivefire
# macOS (Apple Silicon)
chmod +x jivefire-darwin-arm64
sudo mv jivefire-darwin-arm64 /usr/local/bin/jivefireChecksums
SHA256 checksums are provided below for verification.
Jivefire 0.2.0
Changes since 0.1.2
- chore: update flake.lock (9d29a34)
- refactor(justfile): improve justfile organization and update ffmpeg-statigo handling (880ef9b)
- deps: update ffmpeg-statigo to v8.0.1.0 (370b75c)
- style(ui): implement fire theme with improved visualizations (da33ed7)
- refactor(ui): unify bubbletea TUI for both analysis and rendering phases (2b57fd1)
- docs: update project overview (5c1e241)
- perf(ui): improve rendering performance and add thumbnail timing (9b3ec37)
- refactor(audio): standardize on FFmpeg-based audio decoding (39cb477)
- refactor(audio): migrate to sample-based audio encoding (7b6ffeb)
- feat(encoder): add direct audio sample input mode (9929d57)
- refactor: move ffmpeg-statigo submodule from vendor/ to third_party/ (72bbab3)
- feat(audio): implement shared audio buffer for multi-consumer access (ed9c7c4)
- feat(audio): implement FFmpeg-based audio decoder (b3f66c6)
- docs(benchmark): add performance benchmarks for RGB→YUV conversion (f6399b7)
- chore: enhance ffmpeg-statigo submodule management (53c404a)
- feat(customization): add support for custom colors and images (#5) (30a18bf)
- build(deps): bump golang.org/x/image from 0.32.0 to 0.33.0 (9a9446e)
- build(deps): bump github.com/alecthomas/kong from 1.12.1 to 1.13.0 (e872d69)
- feat: migrate from ffmpeg-go to ffmpeg-statigo (1597a44)
Installation
Download the appropriate binary for your platform below, make it executable, and move it to your PATH:
# Linux (amd64)
chmod +x jivefire-linux-amd64
sudo mv jivefire-linux-amd64 /usr/local/bin/jivefire
# macOS (Apple Silicon)
chmod +x jivefire-darwin-arm64
sudo mv jivefire-darwin-arm64 /usr/local/bin/jivefireChecksums
SHA256 checksums are provided below for verification.
jivefire 0.1.2
Changes since 0.1.1
- feat(encoder): improve video quality by adjusting CRF value (c812334)
- perf(renderer): replace alpha blending with intensity-based gradients (8db1c95)
- refactor(ci): restructure release workflow into separate jobs (51d46a2)
Installation
Download the appropriate binary for your platform below, make it executable, and move it to your PATH:
# Linux (amd64)
chmod +x jivefire-linux-amd64
sudo mv jivefire-linux-amd64 /usr/local/bin/jivefire
# macOS (Apple Silicon)
chmod +x jivefire-darwin-arm64
sudo mv jivefire-darwin-arm64 /usr/local/bin/jivefireChecksums
SHA256 checksums are provided below for verification.
Jivefire 0.1.1
Changes since 0.1.0
- feat(config): centralize appearance constants and add thumbnail styling (55251aa)
- docs: reorganize feature list and add thumbnail generator (18efe59)
- style(ui): refine text formatting and labeling in UI components (74f0674)
- perf(timing): add comprehensive execution time tracking (08bd5eb)
- perf(renderer): pre-render framing line pixel pattern for better performance (9c24c5c)
- feat(ui): add audio flush progress tracking and feedback (16d0f31)
- feat(encoder): implement interleaved audio encoding to eliminate final processing stall (14157c7)
- improve: enhance UI with real file size and audio processing status (314aa1d)
- feat(encoder): configure video codec with animation-optimized settings (b58c8e7)
- perf(ui): remove mirrored spectrum displays (a41c732)
- feat(renderer): add thumbnail generation for videos (3511f7f)
- docs: clarify documentation reference in ARCHITECTURE.md (537c576)
- feat(renderer): add bold font and thumbnail assets (d8fc1b8)
- feat: add install command to justfile (f21abdc)
- refactor(workflow): consolidate release jobs into single matrix job (8c14ab4)
Installation
Download the appropriate binary for your platform below, make it executable, and move it to your PATH:
# Linux (amd64)
chmod +x jivefire-linux-amd64
sudo mv jivefire-linux-amd64 /usr/local/bin/jivefire
# macOS (Apple Silicon)
chmod +x jivefire-darwin-arm64
sudo mv jivefire-darwin-arm64 /usr/local/bin/jivefireChecksums
SHA256 checksums are provided below for verification.