New
v0.4.0
Add native settings bridge, CLI auto-detection, error handlers and CLI-aware buttons; improve macOS menu & layout fixes
-
Add native settings integration:
- Introduce SettingsService / Settings bridge on macOS for get/set settings and showSettings.
- Add macOS native window code (SettingsWindow.swift/MainFlutterWindow changes) and AppDelegate wiring to insert a Settings menu item and a settings method channel.
- Provide methods to show a native Settings window and handle setting change notifications; add logging for settings flows.
-
CLI improvements:
- Convert initCli to async and call it at startup.
- Make Cli.init asynchronous and add auto-detection of common CLI tools (ffmpeg, ffprobe, gallery-dl, gifski, yt-dlp) on macOS; store detected paths via settings.
- Add helper functions isFFmpegAvailable/isFFprobeAvailable and safer process handling (noThrow) across video utilities and ffprobe/ffmpeg calls.
- Update video utils and process calls to check exit codes and log failures.
-
UI / UX and layout fixes:
- Replace nested unbounded SingleChildScrollView in main UI with bounded SizedBox/MouseRegion to avoid layout constraints.
- Add a small settings button in the drop section to open native settings.
- Improve setup UI: provide "Install FFmpeg Manually" button when FFmpeg install step failed, and add a helper to launch FFmpeg guide.
- Update macOS status item behavior: respect "showMenuBarIcon" setting, create/hide menu item accordingly; set tray icon with fallbacks and add extensive logging.
- Raise macOS deployment target to 11.0 in Xcode project.
-
Error handling and retry:
- Centralize error UI using new
ErrorHandlerwidget in archive/minify/misc sections. - Add retryTrigger ValueNotifier and listeners for minify/archive/misc settings to allow retrying failed operations.
- Ensure progress notifiers disposal where appropriate.
- Centralize error UI using new
-
CLI-aware UI components:
- Introduce/Use
CliAwareButtonfor buttons that depend on external CLI tools; provide required tools lists for Archive/Minify/Misc operations and disable UI if tools missing.
- Introduce/Use
-
Misc:
- Update various package versions in
oss_licenses.dart. - Minor state and formatting fixes.
- Add new files to project (error handler widget, services, settings bridge files, tray assets) — see diff for full list.
- Update various package versions in
Full Changelog: https://github.com/foamify/shakepin/compare/v0.3.6...v0.4.0