Skip to content

Version 3.7.0: PDF tooling, installer hardening, video join helper, specs fix#225

Merged
kigster merged 9 commits intomainfrom
kig/version-3.7.0
Apr 24, 2026
Merged

Version 3.7.0: PDF tooling, installer hardening, video join helper, specs fix#225
kigster merged 9 commits intomainfrom
kig/version-3.7.0

Conversation

@kigster
Copy link
Copy Markdown
Owner

@kigster kigster commented Apr 20, 2026

Summary

Version bump to 3.7.0 covering PDF theming/tooling improvements, a more
robust Linux installer, new is.integer.between predicate, a video.sh
utility to concatenate videos with generated title cards, updated Gemfile
dependencies (including Rails 8.1.3), and a refreshed .fonts archive.

Changes

PDF / AsciiDoc pipeline

  • Consolidate PDF theming on .asciidoc-pdf-theme.yml; bin/adoc2pdf
    now references the unified theme and surfaces a friendlier completion
    panel with a pdf-reduce hint.
  • Rework bin/pdf-reduce:
    • Detect Ghostscript via brew --prefix and auto-install if missing.
    • Compute a real compression ratio; skip writing the output when the
      reduction is below the configured threshold.
    • Replace the old h1 header with h2bg and green success panel.
  • Refresh .asciidoctor.css, add a new .asciidoctor-pretty.css, and
    update .asciidoc-pdf-theme.yml to the Titillium-based styling.
  • Regenerate README.pdf against the new theme and drop the stale
    README-NEW.pdf artifact.
  • Ship an expanded .fonts.tar.gz bundle to cover the new theme.

Installer (bin/bashmatic-install)

  • Pre-flight the package list (unzip git curl) and short-circuit when
    everything is already available.
  • Detect root vs. non-root and drop sudo when running as root instead
    of failing on a missing sudo binary.
  • Run a single apt-get update before installing, and report back a
    non-zero exit code when any package is still missing afterwards.

Shell library

  • lib/is.sh: add is.integer.between MIN N MAX with distinct exit
    codes for non-integer / below-min / above-max / out-of-range inputs,
    covered by test/is_test.bats.
  • lib/video.sh: add video.date-time.from.epoch and
    video.join.many.by-extension, which discover clips by extension,
    prompt for a title, generate a 2-second black title card per clip with
    ffmpeg drawtext, and concatenate everything into a single MP4.

Dependencies & tooling

  • Gemfile: add pdf-reader, relax openssl pin to the latest 3.x.
  • Gemfile.lock / test/fixtures/Gemfile.lock: bump Rails to 8.1.3
    and pull in compatible updates for nokogiri, rack, irb, json,
    rdoc, rake, zeitwerk, bigdecimal, minitest, and friends.
  • Add biome.json, package.json, package-lock.json, and yarn.lock
    to lint .asciidoctor.css via @biomejs/biome.
  • .gitignore: ignore node_modules.

Tests

  • test/is_test.bats: new cases exercising is.integer.between.
  • test/git_test.bats: use the canonical .git suffix on REPO_URL so
    the test survives GitHub URL normalization.

Misc

  • Bump .version to 3.7.0 and update the README author line / minor
    heading levels in the install section.

Backwards compatibility

  • No removals from the public shell API; all additions are new
    functions. bin/adoc2pdf output is cosmetically different but the
    invocation contract is unchanged.
  • The openssl Gemfile pin is loosened; downstream consumers tracking
    the prior ~> 3.3.2 pin should re-resolve their lockfiles.

Testing

  • bats test/is_test.bats (new is.integer.between cases).
  • bats test/git_test.bats (adjusted REPO_URL).
  • Manual verification of bin/adoc2pdfbin/pdf-reduce pipeline
    against the regenerated README.pdf.

Notes

CI currently skips a subset of tests; see prior commit history on this
branch for context.

@kigster kigster self-assigned this Apr 20, 2026
@kigster kigster changed the title Various changes including PDF styling and bundle update Version 3.7.0: PDF tooling, installer hardening, video join helper Apr 24, 2026
@kigster kigster changed the title Version 3.7.0: PDF tooling, installer hardening, video join helper Version 3.7.0: PDF tooling, installer hardening, video join helper, specs fix Apr 24, 2026
kigster and others added 3 commits April 24, 2026 13:49
- lib/output.sh: fall back to COLUMNS/LINES when stty returns nothing
  (pipes, CI, test runners) so screen-width/height always yield a
  numeric value.
- lib/runtime.sh: use absolute /usr/bin/env in run.variables-starting-with
  and run.variables-ending-with to bypass PATH-shim `env` binaries
  (notably ~/.local/bin/env installed by `uv`) that emit no output.
- test/helpers/test-lib.sh: add specs.bats.pin-env-absolute to rewrite
  the bats launcher's `exec env ...` to an absolute path, self-healing
  existing installs affected by the same shim issue.
- test/Gemfile.lock, test/gem_test.bats: bump activesupport fixture
  8.1.2 -> 8.1.3.
- CLAUDE.md: add project guide for Claude sessions.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@kigster kigster merged commit f3245b8 into main Apr 24, 2026
4 checks passed
@kigster kigster deleted the kig/version-3.7.0 branch April 24, 2026 21:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant