Skip to content

Latest commit

 

History

History
76 lines (63 loc) · 3.12 KB

File metadata and controls

76 lines (63 loc) · 3.12 KB

Changelog

All notable changes to this project will be documented in this file. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[0.4.0] — feat/v0.4.0-gui

Added

  • subforge.gui module: PyQt6 desktop frontend.
    • Drag-and-drop drop zone (also clickable → file dialog).
    • Mode combo (auto / transcribe / translate / mux / all), language inputs, whisper model combo, burn-in & bilingual toggles.
    • Background QThread worker — UI stays responsive; pipeline progress events come back as Qt signals.
    • QSystemTrayIcon notification on completion.
    • Styles use palette(...) roles so dark / light themes follow the OS.
  • CLI: --gui flag, and subforge with no args now launches the GUI.

Changed

  • TUI / GUI both reuse the same subforge.pipeline + subforge.progress plumbing introduced in v0.3.0; only the sink differs.

[0.3.0] — feat/v0.3.0-tui

Added

  • subforge.progress module: thread-safe log/progress sink swappable via use_sink() context manager. The default StderrSink keeps existing CLI behaviour; frontends provide their own CallableSink.
  • subforge.tui module: Textual TUI launched with subforge --tui. File path input, mode radio (auto/transcribe/translate/mux/all), source/target language inputs, Whisper model field, burn-in & bilingual checkboxes, run / quit buttons, live log panel, progress bar bound to the same events the CLI prints.
  • --tui CLI flag.

Changed

  • transcribe, translate, video, pipeline now route their output through subforge.progress instead of writing to stderr directly. The CLI sees no difference; the TUI captures the same stream.
  • Whisper transcription advances progress by segment end-time, with the total set to the audio duration reported by faster-whisper.

[0.2.0] — feat/v0.2.0-video-mux

Added

  • subforge.video module: extract_audio, mux_soft, burn_in — thin subprocess wrappers around ffmpeg with controlled filter-graph escaping.
  • subforge.pipeline module: composes the transcribe/translate/mux steps; new run_all chains video → audio → SRT → translated SRT → muxed video.
  • CLI modes mux and all; new flags --burn, --keep-audio, --keep-subs, --subs.
  • Default output naming: movie.{tgt}.{ext} for video; burn-in falls back to .mp4 when the source container is not mp4/mkv.

Changed

  • detect_mode now maps video extensions to all (was: error). Audio and .srt defaults unchanged.

[0.1.0]

Added

  • Project scaffold: pyproject.toml (hatchling), src/subforge/ package layout, subforge console script.
  • argparse CLI with --mode, --from, --to, --model, -o, --keep-original.
  • Mode auto-detection from file extension (.srt → translate, audio/video → transcribe).
  • Transcription via faster-whisper (default model base), per-segment progress to stderr.
  • Translation via deep-translator (Google backend), batch with per-line fallback.
  • .gitignore for Python / editor / media artifacts.