Skip to content

feat: requirement checks, windows support, diagnostics log - #8

Merged
kaffeindecaf merged 5 commits into
mainfrom
feat/heavy-datamosh
Oct 28, 2026
Merged

kaffeindecaf merged 5 commits into
mainfrom
feat/heavy-datamosh

Conversation

@kaffeindecaf

Copy link
Copy Markdown
Owner

what

  • main menu now shows the requirements it needs: ffmpeg, ffprobe, python 3.8+ and
    the optional numpy/opencv/PyAV modules, with one row per item when the
    terminal is tall enough. missing required binaries trigger
    install ffmpeg + ffprobe now? [Y/n] before the menu opens, and the
    requirements row (or c) asks again after a decline.
  • the installer is picked from the detected os: winget, chocolatey or scoop on
    windows (no sudo, agreements pre-accepted), homebrew on macos, and
    apt-get/dnf/pacman/zypper/apk with sudo on linux. one command per package, so
    ffmpeg + ffprobe install in one go. --check exits 1 when anything required
    is missing and --check --json now reports platform, installer, hint and one
    object per requirement.
  • windows support beyond docs: msvcrt key decoding for arrows and the nul/e0
    code pairs, a no-op raw session, utf-8 + virtual-terminal console setup,
    registry path refresh after an install, os.startfile for folders, the
    Scripts\python.exe venv layout and a subprocess re-exec instead of execv.
    new effex.cmd launcher and install.ps1 shim installer.
  • diagnostics.py keeps one bounded per-user log with every warning, error,
    ffmpeg stderr and traceback. --logs prints the path and tail, --report [PATH] writes a single file with the environment header for an issue, and a
    failed render shows the log path with an l key. a clean run writes nothing.

this branch also carries the earlier Finally fixed datamoshing commit.

verified

  • python3 tests/run_tests.py green (14 suites, including the new platform
    and logging suites)
  • install_prompt 29/29, platform_support 42/42, logging_regression 44/44,
    layout 177/177
  • manual: menu panel at 80x24 and 100x30, the y/n prompt against a fake PATH,
    and a corrupt-clip render whose log keeps ffmpeg's moov atom not found
  • ci: new windows job runs platform_support, logging_regression, cli_regression,
    --check --json and --list on windows-latest

- main menu shows ffmpeg/ffprobe/python and the optional modules, and asks
  y/n to install whatever required binary is missing, using the detected
  package manager: winget, chocolatey or scoop on windows, homebrew on macos,
  apt-get/dnf/pacman/zypper/apk on linux
- windows runtime: msvcrt key decoding, no-op raw session, utf-8 and vt console
  setup, registry path refresh after an install, os.startfile, Scripts/python.exe
  venv interpreter, subprocess re-exec instead of execv
- effex.cmd launcher and install.ps1 shim installer for windows; README gains a
  requirements section with per-os install commands
- diagnostics.py logs every warning, error, ffmpeg stderr and traceback to one
  bounded per-user file; --logs prints it, --report writes a single attachable
  file with the environment header
- tests: platform_support (42 checks), logging_regression (44), install_prompt
  rewritten (29); ci gains a windows job
…he first broken suite

- harness.run prefixes sys.executable for .py targets on windows (winerror 193)
- the log header check only demands a probed version when ffmpeg exists
- windows ci steps exit on $LASTEXITCODE, so a failing suite cannot pass silently
…lyphs

windows pipes default to cp1252, so every piped run died on the first tick in
ok()/err(). the stream is switched to utf-8 only when the current encoding
cannot encode the glyph, which also covers ascii C locales on unix.
mpeg4 keyframe placement shifts with the encoder build, so the windows runner
measured 4.82 where linux measures higher. anything over 2 is beyond noise.
@kaffeindecaf
kaffeindecaf merged commit 00cc38a into main Oct 28, 2026
4 checks passed
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