Documentation & licensing: - Add the EUPL-1.2 licence (LICENSE.md) and set the project licence; refresh the README (name origin wink, updated feature list, documentation index). - Add CONTRIBUTING, SECURITY, CODE_OF_CONDUCT, CHANGELOG, AUTHORS, and THIRD_PARTY_NOTICES, plus docs/ (ARCHITECTURE, BUILD, USER_GUIDE, SHORTCUTS, LICENSE_COMPLIANCE) and .github/ (CI workflow, issue/PR templates). - Bring docs/FILE_FORMAT.md in line with current behaviour (code & chart slides, per-slide TLP comment, annotation .ink.json sidecar, chart data/ CSVs). Open-source compliance: - Add tool/check_licenses.dart and a `make licenses` target (wired into check-full and CI) that verifies every resolved dependency uses a recognised open-source licence. A scan of all 151 packages and bundled assets found only OSI-approved licences. Charts (Fase 1.1): - Replace the chart CSV textarea with an in-app editable data grid (editable series/labels/values, add/remove row & column, read-only when linked). - Centralize the linked-CSV directory name (`data/`) in a shared constant. Also normalize formatting repo-wide with `dart format` and fix one curly-braces lint, so `make check` and CI are green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2.8 KiB
OciDeck — Build & Release
How to build OciDeck from source and produce distributable apps.
Prerequisites
- Flutter 3.44+ (stable), Dart 3.12+. Check with
flutter --version. - A desktop toolchain for your target:
- macOS: Xcode + CocoaPods.
- Windows: Visual Studio with the "Desktop development with C++" workload.
- Linux: see Flutter's Linux desktop prerequisites (GTK, clang, ninja, etc.).
- Enable the desktop target once if needed, e.g.
flutter config --enable-macos-desktop.
Get dependencies
make setup # flutter pub get
OciDeck uses two vendored plugin forks under third_party/, wired through
pubspec.yaml (a path dependency for desktop_multi_window) and
dependency_overrides (screen_retriever_macos, and a pin of
video_player_avfoundation). flutter pub get resolves these automatically — no
extra steps. See ARCHITECTURE.md.
Run
flutter run -d macos # or -d windows / -d linux
Quality gate
make check # format-check + flutter analyze + full test suite
Building release apps
flutter build macos --release
flutter build windows --release
flutter build linux --release
Artifacts land under build/<platform>/.
macOS notes
-
Swift Package Manager is disabled for this project (
flutter:→config: enable-swift-package-manager: falseinpubspec.yaml); CocoaPods is used instead. The "plugin does not support Swift Package Manager" message during a build is therefore expected and harmless. -
video_player_avfoundationis pinned (seedependency_overrides) because a newer release ships a Swift module whose private Objective-C dependency isn't packaged correctly by CocoaPods on recent Xcode. -
CocoaPods + Ruby locale: on some setups
pod install(run byflutter build macos) fails withEncoding::CompatibilityError/ "Unicode Normalization not appropriate for ASCII-8BIT". This is a Ruby/CocoaPods locale issue, not a project problem. Fix it by forcing a UTF-8 locale:export LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 flutter build macos --release -
Distribution: code-sign and notarize the
.appfor distribution outside the App Store (Developer ID +notarytool). This is environment-specific and not automated here.
Windows / Linux notes
- Windows: distribute the contents of
build/windows/x64/runner/Release/(or package with MSIX/an installer). - Linux: distribute
build/linux/x64/release/bundle/(or package as a Flatpak/AppImage/Snap as you prefer).
CI
.github/workflows/ci.yml runs make check on Ubuntu for every push and pull
request. It does not build native binaries; it validates formatting, static
analysis, and the test suite (which are platform-independent).