Repository navigation
Update if you render with a display font. CapForge 3.0.1 fixes fonts losing their OpenType alternates and ligatures in the exported video (Pricedown's extended letters, any ligature font), which the preview showed correctly. It also makes Claude's caption-track tools page long videos and refuse a stale batch cleanly, and reworks the translate skill. Nothing to migrate; projects, presets and fonts carry over.
▶ Watch the tutorial — how to use CapForge
CapForge v3.0.1
Two fixes on top of 3.0. Update if you render with a display font: fonts were losing their OpenType alternates and ligatures in the exported video. Nothing to migrate; projects, presets and fonts carry over. If you are on 2.6 or older, update for everything in 3.0 below as well.
Fixes
- Fonts render as the preview shows them (#73). The exported video and the captions-only overlay loaded fonts without OpenType shaping, so the contextual alternates, ligatures and kerning pairs a font defines (Pricedown's extended letters, any ligature font) were dropped while the preview kept them. The render engine now shapes text through HarfBuzz, as the preview does. On the first launch after updating, CapForge places a small text-shaping library (FriBiDi 1.0.16, LGPL;
FRIBIDI-COPYINGships beside it) next to its Python runtime; nothing to do on your side. The backend log'sText shaping:line readsRAQMwhen it is on. - Claude's caption-track tools on long videos (#72).
get_ui_statesent the whole active track with word timings (700k characters on a long video) andcreate_trackinlined every caption. Captions are now opt-in and text-only inget_ui_state;create_trackandget_trackpage withmax_groupsandoffset/limit;set_track_textreturns the caption count. A Words per group change on a translated tab re-cuts its captions and re-mints their ids, which nothing flagged, so an agent kept writing to ids that no longer existed: that batch is now refused with a "re-read withget_track" hint instead of fifty errors, and the tool docs say when ids expire. - The capforge-translate skill, reworked from a live run. It reads the record before offering the metadata half, asks both blocking questions in one round trip, decides caption size before translating, never caches ids across batches, keeps a scratch map for long videos and names a run-on source caption rather than compressing it.
capforge-stylelearned the newinclude_groupsflag. Settings → Claude & Skills flags the bundled change against your copy and never overwrites your edits.
Internal
.github/workflows/build-fribidi.ymlbuilds the shaping library for macOS arm64 and Windows x64 from the checksum-verified FriBiDi source; the bundled copies live beside ffmpeg inresources/bin-*andelectron/text-shaping.jsplaces them before each backend start. The CI backend job installs FriBiDi so the golden frames run on the engine the app ships with, andbackend/tests/test_text_shaping.pypins it.- README rewritten for 3.0.