Skip to content

FunGen v1.0.0#120

Merged
ack00gar merged 0 commit into
mainfrom
release/v1.0.0
Apr 28, 2026
Merged

FunGen v1.0.0#120
ack00gar merged 0 commit into
mainfrom
release/v1.0.0

Conversation

@ack00gar
Copy link
Copy Markdown
Owner

Summary

Major release. 128 commits, +22k / -14k lines across 222 files. Highlights:

  • Installer rewrite: miniconda is gone, replaced by uv + venv. One-shim install, GPU auto-detect across cuda_blackwell / cuda_stable / cuda_legacy / mps / rocm / cpu. ffmpeg + mpv auto-installed via OS package manager.
  • Video backend: pyav out, FFmpeg subprocess + libmpv GL render in. New 1 GB byte-budgeted nav cache, anticipatory prefetcher, scrub cache, progressive arrow-hold playback.
  • VR dewarp shader: runtime-compiled GLSL with adaptive supersample replaces CPU v360 for in-GUI playback.
  • GUI perf sweep: timeline draw, oscillation grid vectorized, plugin algorithms (Resample 8.4x, Keyframes 5.2x, Dynamic Amplify 3.1x), async tracker lifecycle, cached u32 colors throughout.
  • Animated splash with 17 themes: random per launch, pinnable via FUNGEN_SPLASH_THEME=<name>.
  • New tracker: Cock Hero Beat Tracker (offline audio-beat funscript generator).
  • Models: bumped to YOLO26 nano fine-tuned (release models-v2.0.0) -- smaller (5.4 MB vs 18.9 MB), faster, ONNX export added.
  • --watch actually processes videos (was dropping queue items into a no-op loop).
  • Internal restructure: app_logic split into 8 lifecycle modules; video display split; gui components reorganized.
  • Tests: 23 focused unit tests + 1 E2E smoke restored. CI runs them on Ubuntu + macOS.

Full per-feature notes in the v1.0.0 Highlights section of the README.

Conflicts to resolve at merge

Six fix commits on main (gamepad invert, digit-key snap, delete-key, gamepad center, axis cache invalidation, pyGLFW shape) duplicate fixes that already landed on this branch. Accept "ours" -- the release-branch version of each fix is correct.

One main-only commit (3c6571a "fix: pyav decoder skips corrupt packets") targets video/frame_source/pyav_source.py, which this branch deleted entirely. Accept "ours" / keep deleted.

Merge strategy

Regular merge commit (gh pr merge --merge), not squash. Preserves the 128 well-written commit messages for git blame / git bisect.

Test plan

  • CI green on ubuntu + macos
  • Fresh install on macOS: curl ... | bash -> ./launch.command
  • Fresh install on Windows: install.bat double-click -> launch.bat
  • CLI batch on a sample VR clip produces a .funscript
  • CLI --watch processes queued videos (issue #regression check)
  • GUI: open project, scrub, place point, save funscript
  • GUI: 8K SBS VR clip with shader dewarp -- known soft issue, may be choppy
  • Plugins: dynamic_amplify, keyframe, resample, speed_limiter run on sample script
  • Updater: in-app updater shows v1.0.0 -> latest after release

Known issues to call out in release notes

  • Shader dewarp on 8K VR is choppy in some configs (open soft issue).
  • Two recent reverts (embedded fullscreen in shader mode, F11 routing) -- final state intentional.

@ack00gar ack00gar merged commit 50ce5e5 into main Apr 28, 2026
0 of 2 checks passed
@ack00gar ack00gar deleted the release/v1.0.0 branch April 28, 2026 20:55
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