Skip to content

Jivedrop 0.4.0

Choose a tag to compare

@github-actions github-actions released this 08 Jun 11:08
0.4.0

Highlights ✨

  • Encoding progress UI completely redesigned: media-player-style stats row, spring-animated progress bar, spinner with settling animation, and 60 FPS rendering - courtesy of the Charm v2 library upgrade.
  • Ctrl+C during encoding now cancels the FFmpeg pipeline cleanly, preventing a CGO use-after-free crash; files completed before the interrupt are preserved.
  • Duration is now rounded to the nearest second rather than truncated, so episode lengths shown in podcast clients are accurate.
  • Hugo frontmatter date key is now accepted in lowercase, fixing silent metadata failures on episodes written with lowercase YAML keys.
  • Episode number is validated at the CLI boundary in both Hugo and Standalone modes, catching bad values before encoding begins rather than midway through.
  • Non-TTY output (piped or CI environments) now correctly reports the encode stage rather than misleadingly reporting completion.
  • Progress bar and percentage stay on a single line, fixing a layout wrapping regression on narrow terminals.

Changes since 0.3.4

  • chore: update .gif (360cda4)
  • style(ui): replace Hz text with Unicode CJK square ligature ㎐ (cdff2ba)
  • fix(encoder): accept lowercase date key in Hugo frontmatter (4784bfb)
  • style(ui): replace kHz text with Unicode CJK square ligature ㎑ (58c2fce)
  • fix(encoder): round duration to nearest second instead of truncating (6a39614)
  • refactor: remove self-evident comments across cmd and internal packages (2883e28)
  • refactor(encoder): replace nil sentinel with explicit partial return flag (57021fa)
  • refactor(cli): eliminate code smells in mode detection and god function (6a8e7a4)
  • refactor(encoder): clarify FFmpeg buffer-source feed flag divergence (afbe463)
  • refactor(encoder): simplify duration formatting with direct integer arithmetic (20acf17)
  • refactor: eliminate code duplication across encoder and workflows (9fbe422)
  • refactor(ui): remove dead code from ProgressUpdate handler (79783b4)
  • build(deps): bump nixpkgs from 64c08a7 to 331800d (fdeeb5f)
  • chore: update.gif (cc4619b)
  • fix(ui): keep progress bar and percentage on one line (d211e07)
  • fix(ui): keep encoded file when Ctrl+C lands after encode completes (fd73572)
  • docs: update Charm v2 bling demo GIF and trim summary spacing (0d0977d)
  • fix(encoder): cancel encode on Ctrl+C to prevent cgo use-after-free (94547c1)
  • style(ui): redesign encode progress layout with media-player stats row (6b67113)
  • fix(just): restore test file references (7143da8)
  • fix(cli): report encode stage, not completion, in non-TTY output (d4125ee)
  • docs: add Charm v2 animation bling demo GIF (74202a9)
  • fix(ui): use frozen realtime stat in completion view (106fe13)
  • perf(ui): increase animation framerate to 60 FPS and freeze realtime stat (e16470e)
  • feat(ui): add Charm v2 animation bling - spring bar, spinner, settling (adef580)
  • docs: note Charm v2 charm.land import paths in AGENTS.md (8280497)
  • fix(ci): exempt x/sync and go-runewidth from licence check (e437af3)
  • chore(deps): upgrade Charm libraries to v2 (7f0bace)
  • docs: import AGENTS.md via @ directive in CLAUDE.md (2358384)
  • docs: reconcile README and AGENTS.md with current code (35f53cd)
  • style: fix gofumpt alignment in standalone_test (80483b3)
  • refactor(id3): drop unused TagInfo.Description field (a6e436e)
  • refactor(cli): remove unused SubtitleStyle and HeaderStyle (ef63fa2)
  • refactor(cmd): drop unused PostEncode outputPath parameter (7d9e963)
  • refactor(cmd): drop unused CLIOptions.AudioFile (f960afd)
  • refactor(cli): promote warning style to named variable (d55f798)
  • refactor(cmd): hoist audio-file check into run (9df0625)
  • refactor(encoder): extract shared encoder drain loop (6b5e016)
  • refactor(cmd): construct workflows with parsed CLI options (ef0e4c1)
  • refactor(encoder): drop unused FileStats.DurationSecs (cba7e4e)
  • test: use strings stdlib helpers in tests (5905a41)
  • refactor(id3): simplify cover-art scaling switch (01033df)
  • refactor(ui): remove unused Complete accessor (9edc934)
  • refactor(cli): remove unused PrintCover (3e85540)
  • refactor(id3): drop dead logFn parameter from ScaleCoverArt (d32a51b)
  • refactor(cmd): extract printPodcastStats helper (e1ecd72)
  • feat(encoder): validate episode number at the boundary (a83bcc9)
  • refactor(cmd): thread CLI fields into encode pipeline helpers (c42f71f)
  • refactor(encoder): extract shared filter-graph drain loop (f290038)
  • refactor(encoder): use strings.CutPrefix for path prefix handling (de76115)
  • chore(tailor): refit and alter (3200144)

Installation

Download the appropriate binary for your platform below, make it executable, and move it to your PATH:

# Linux (amd64)
chmod +x jivedrop-linux-amd64
sudo mv jivedrop-linux-amd64 /usr/local/bin/jivedrop

# macOS (Apple Silicon)
chmod +x jivedrop-darwin-arm64
sudo mv jivedrop-darwin-arm64 /usr/local/bin/jivedrop

Checksums

SHA256 checksums are provided below for verification.