Skip to content

commit cf459c7

abduznik edited this page May 23, 2026 · 1 revision

chore: bump version to 0.3.0 and update documentation/CI

Commit: cf459c72084cd5cb584714b1aabb4519e21cf3e6

Author: Yan

Date: 2026-04-11

Why: Routine maintenance, version bumps, or tooling changes.

Files Changed

.github/workflows/release.yml       | 104 +++++++++++++++++++++++++++++++++++-
 README.md                           |  34 ++++++------
 agent.md                            |   2 +-
 lib/ui/screens/settings_screen.dart |   2 +-
 pubspec.yaml                        |   2 +-
 5 files changed, 122 insertions(+), 22 deletions(-)
  • .github/workflows/release.yml
  • README.md
  • agent.md
  • lib/ui/screens/settings_screen.dart
  • pubspec.yaml

Diff

diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 89170cd..2c2d0d3 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -35,9 +35,99 @@ jobs:
           name: windows-release
           path: freegosy-windows.zip
 
+  build-macos:
+    name: Build macOS
+    runs-on: macos-latest
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v4
+
+      - name: Set up Flutter
+        uses: subosito/flutter-action@v2
+        with:
+          channel: stable
+          cache: true
+
+      - name: Install dependencies
+        run: flutter pub get
+
+      - name: Build macOS
+        run: flutter build macos --release
+
+      - name: Archive macOS build
+        run: |
+          cd build/macos/Build/Products/Release
+          zip -r ../../../../../freegosy-macos.zip Freegosy.app
+
+      - name: Upload macOS artifact
+        uses: actions/upload-artifact@v4
+        with:
+          name: macos-release
+          path: freegosy-macos.zip
+
+  build-linux:
+    name: Build Linux (AppImage)
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v4
+
+      - name: Install dependencies
+        run: |
+          sudo apt-get update
+          sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc++-12-dev
+
+      - name: Set up Flutter
+        uses: subosito/flutter-action@v2
+        with:
+          channel: stable
+          cache: true
+
+      - name: Install AppImageBuilder
+        run: |
+          sudo wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O /usr/local/bin/appimagetool
+          sudo chmod +x /usr/local/bin/appimagetool
+
+      - name: Build Linux
+        run: |
+          flutter pub get
+          flutter build linux --release
+
+      - name: Prepare AppDir
+        run: |
+          mkdir -p AppDir/usr/bin
+          mkdir -p AppDir/usr/share/applications
+          mkdir -p AppDir/usr/share/icons/hicolor/256x256/apps
+          
+          cp -r build/linux/x64/release/bundle/* AppDir/usr/bin/
+          
+          # Create Desktop Entry
+          cat > AppDir/usr/share/applications/freegosy.desktop <<EOF
+          [Desktop Entry]
+          Name=Freegosy
+          Exec=freegosy
+          Icon=freegosy
+          Type=Application
+          Categories=Game;
+          EOF
+          
+          # Use placeholder icon (or copy from assets if available)
+          cp web/icons/Icon-192.png AppDir/usr/share/icons/hicolor/256x256/apps/freegosy.png
+          cp web/icons/Icon-192.png AppDir/freegosy.png
+
+      - name: Build AppImage
+        run: |
+          ARCH=x86_64 /usr/local/bin/appimagetool AppDir Freegosy-x86_64.AppImage
+
+      - name: Upload Linux artifact
+        uses: actions/upload-artifact@v4
+        with:
+          name: linux-release
+          path: Freegosy-x86_64.AppImage
+
   release:
     name: Create GitHub Release
-    needs: [build-windows]
+    needs: [build-windows, build-macos, build-linux]
     runs-on: ubuntu-latest
     permissions:
       contents: write
@@ -52,7 +142,17 @@ jobs:
         with:
           files: |
             freegosy-windows.zip
+            freegosy-macos.zip
+            Freegosy-x86_64.AppImage
           body: |
-            See CHANGELOG for details.
+            # Freegosy v0.3.0
+            
+            ## New Features
+            - **Native Linux Support**: Added beta support for Linux and Steam Deck (EmuDeck).
+            - **EmuDeck Integration**: Automated path discovery for ROMs, emulators, and saves on Steam Deck.
+            - **BIOS Management**: Download BIOS files directly from RomM.
+            - **Enhanced RPCS3 Support**: Choose between ARM64 and x64 architectures on macOS.
+            - **Interactive Gallery**: New screenshot viewer with zoom and swipe support.
+            - **Stability**: Numerous bug fixes and performance improvements.
         env:
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/README.md b/README.md
index 840919c..638eaa5 100644
--- a/README.md
+++ b/README.md
@@ -23,32 +23,32 @@ Freegosy is a solo passion project — built and maintained in my spare time, wi
 
 No pressure at all — the app is and will always be free.
 
-## Current Features (v0.2.x)
+## Current Features (v0.3.x)
 
-- **Native Multi-Platform Support**: Robust implementation for **macOS** (ARM64/Intel) and **Windows**, with deep integration for local file systems.
+- **Native Multi-Platform Support**: Full support for **macOS** (ARM64/Intel), **Windows**, and **Linux** (including **Steam Deck/EmuDeck** integration).
 - **RomM Integration**: 
-    - Browse and filter your entire library with server-side pagination (50 games at a time).
+    - Browse and filter your entire library with server-side pagination.
     - Download ROMs directly via HTTP with real-time progress tracking.
-    - **New**: Personal game properties support (rating, status, completion).
+    - Personal game properties support (rating, status, completion).
 - **Advanced Emulator Management**: 
     - Download, update, and uninstall emulators directly from Settings.
-    - Automatic extraction of `.zip`, `.7z`, `.dmg`, `.tar.gz`, and `.tar.xz`.
-    - Smart `.app` bundle detection and canonical renaming on macOS.
-- **Save Sync**: Bidirectional local-to-cloud save synchronization with RomM, featuring cross-platform path resolution and automated backups.
+    - Automatic extraction of `.zip`, `.7z`, `.dmg`, `.tar.gz`, `.tar.xz`, and `.AppImage`.
+    - Smart binary detection and canonical naming across all platforms.
+    - **New**: Dynamic architecture selection for RPCS3 on macOS (ARM64 vs x64).
+- **BIOS Management**: Fetch and download BIOS files directly from RomM and automatically place them in the correct directory for each emulator.
+- **Save Sync**: Bidirectional local-to-cloud save synchronization with RomM, featuring cross-platform path resolution and automated backups. Optimized for EmuDeck's platform-specific save structure.
 - **Refined UI/UX**:
-    - **Game Cards**: Visual-first interface with detailed metadata and screenshots.
+    - **Visual-First Grid**: Interactive game cards with detailed metadata.
     - **Recently Played**: Quick access to your latest games.
-    - **Multi-Disc Support**: Integrated picker for games with multiple files.
-    - **Centralized Error Handling**: Improved stability with user-friendly notifications.
+    - **Screenshot Gallery**: Interactive, zoomable screenshot viewer.
+    - **Multi-Disc Support**: Integrated picker for multi-file games.
 
-## Roadmap: Version 0.3.0 (Coming Soon)
+## Roadmap: Version 0.4.0 (Upcoming)
 
-- **BIOS Management**: Ability to fetch and download BIOS files directly from RomM and automatically place them in the correct directory for each emulator.
-- **Linux Support (Beta)**: Starting with a skeleton/shell for **Steam Deck (EmuDeck)** integration.
-- **Enhanced macOS Support**: Further refinements to the native implementation and bug fixes.
-- **Save Sync Improvements**: Polishing the push/pull logic for edge cases.
-- **Better Screenshot Handling**: Improved performance and display of game gallery images.
-- **API v4.8.2 Readiness**: Shells are already in place for updating game data like completion status and progression bars; full functionality will be unlocked with the RomM 4.8.2 API release.
+- **Android Support**: Bringing the Freegosy experience to mobile devices.
+- **Cloud Configuration**: Syncing app settings across multiple devices.
+- **Better Offline Mode**: Improved metadata caching for browsing without a connection.
+- **API v4.8.2 Readiness**: Full support for progression bars and advanced completion tracking as RomM updates.
 
 ## Calling All Testers!
 I am currently searching for testers on **macOS** and **Windows** to help polish the experience. 
diff --git a/agent.md b/agent.md
index 2f065d8..ea7571f 100644
--- a/agent.md
+++ b/agent.md
@@ -58,7 +58,7 @@ Freegosy is a cross-platform Flutter app for browsing a RomM library, downloadin
 - `lib/core/downloader/download_service.dart` — Stream-based HTTP ROM downloader.
 
 ### Core — Storage
-- `lib/core/storage/directory_service.dart` — Manages paths. Added getAllDownloadedFileNamesByPlatform() for cache mapping.
+- `lib/core/storage/directory_service.dart` — Manages paths. Added Linux Sync Presets (Default/EmuDeck) and EmuDeck root path management.
 - `lib/core/storage/download_cache_service.dart` — Manages and persists a set of downloaded filenames mapped by platform slug. Uses SharedPreferences.
 
 ### Core — Windows
diff --git a/lib/ui/screens/settings_screen.dart b/lib/ui/screens/settings_screen.dart
index 4105015..b791596 100644
--- a/lib/ui/screens/settings_screen.dart
+++ b/lib/ui/screens/settings_screen.dart
@@ -495,7 +495,7 @@ class _SettingsScreenState extends ConsumerState<SettingsScreen> {
             showLicensePage(
               context: context,
               applicationName: 'Freegosy',
-              applicationVersion: '0.2.2',
+              applicationVersion: '0.3.0',
               applicationLegalese: '© 2026 Freegosy Contributors.\nRedistributes 7-Zip binaries under LGPL.',
             );
           },
diff --git a/pubspec.yaml b/pubspec.yaml
index 5b02d04..08f829c 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
 # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
 # In Windows, build-name is used as the major, minor, and patch parts
 # of the product and file versions while build-number is used as the build suffix.
-version: 0.2.2+1
+version: 0.3.0+1
 
 environment:
   sdk: ^3.11.1

Clone this wiki locally