* New collapsible pane sits between the main split and the footer and
shows per-core CPU utilisation as btop-style vertical bars. Polls
/proc/stat once a second, paints with the live Omarchy accent colour
via Cairo. Collapsed/expanded state persists in
~/.config/nocoder/config.json as cpu_pane_expanded (default true) so
the pane reopens however the user last left it.
* Footer "complete" state now reports TOTAL TIME alongside Succeeded /
Failed / Output size. Wall time captured via time.monotonic() when the
encode worker starts and again when the state flips to complete; only
successful (non-cancelled) batches get a time. Formatted via the
existing data.format_duration helper so it matches the pre-encode
estimate's display.
The /proc/stat parser lives in its own pure-Python module
(nocoder/cpu_sampler.py) so it's GTK-free and easy to test in isolation.
SystemPane mirrors the Footer attachment pattern (Gtk.Box subclass +
__gtype_name__ + add_css_class), attached from MainWindow exactly like
the footer is. Timer auto-stops on widget detach via a get_root() check,
so no explicit teardown wiring is needed.
CSS gets a .system-pane block (top border + padding) and a .cpu-bar-area
rule that sets foreground colour to @accent — the Cairo draw callback
reads that via widget.get_color() so the bars track the live theme
without re-plumbing.
Verified:
* CpuSampler reports 32 cores at idle baseline; under stress-ng --cpu 0
aggregate hit 99.9% with all bars saturated.
* Theme accent cascades correctly; bars use the active Omarchy theme.
* cpu_pane_expanded round-trips (manually setting false then relaunching
reopens the pane collapsed).
* TOTAL TIME shows 0:02 for a 2.28s encode of a 3-second HEVC test clip.
* Installed copy at ~/.local/share/nocoder/ updated and verified via the
walker launcher.
Native GTK4 + libadwaita app that wraps ffmpeg to batch-convert source
video into editorial-ready Apple ProRes .mov. Targets Omarchy / Hyprland
on Arch Linux specifically.
Highlights:
* Real ffmpeg encode (prores_ks → prores fallback) with live progress
parsing, cancelable serial queue, disk-space pre-check, source-missing
guard, output-collision (N) suffixes.
* GPU decode auto-probe at install time — picks cuda → qsv → vaapi based
on what actually initialises on the host. ProRes encoding stays on CPU
(no vendor ships a GPU encoder); offloading the decode side cuts wall
time 25-40% on H.264 / HEVC sources.
* Theme-aware: tracks the active Omarchy theme on every launch by
parsing colors.toml / ghostty.conf / alacritty.toml / kitty.conf in
priority order. 34 stock + custom themes verified.
* Pro camera support: .MXF (Canon XF / Sony XDCAM / Panasonic AVC-Intra)
with proxy-directory pruning so dropping a Sony XAVC card maps masters
in CLIP/ but skips the low-res duplicates in SUB/.
* Multi-track audio preserved — 4 mono PCM streams from a Canon C300/C500
land in the output as 4 separate tracks. Optional 24-bit toggle.
* Live encode-speed indicator with ffmpeg -progress parsing; ETA refines
from real measured throughput rather than a fixed heuristic.
* Hyprland-aware install — registers walker entry, six hicolor icon
sizes, float+centre windowrule for class dev.nocoder.NoCoder.
Distribution model: git clone + bash install.sh. The installer copies the
source tree to ~/.local/share/nocoder/ so the clone is disposable. Updates
are git pull + re-run install.sh.
Documented at README.md.