Rebuild UI on the Noo design system
Replaces the Material 3 screens with the Noo design system: warm neutrals, one violet accent, pill controls, Schibsted Grotesk/ Instrument Sans, Lucide icons, no gradients/shadows. - New lib/widgets/noo/ component kit (core, lists, files, media, nav, overlays) plus lib/theme/design_tokens.dart for the color/type/space/ radius/motion tokens. - Rebuilt the app shell (top/bottom bars, drawer, desktop sidebar and toolbar), every tab (Files/Offline, Photos, Favorites, Recent, Activity, Trash, Shares), Settings, the lock and login screens, the media viewer, search, the details/share sheets, and the share-upload and move/copy destination pickers. - Added a design canvas (linked from DESIGN_SYSTEM.md) covering the screens the spec didn't already describe, with matching Android and iOS chrome; wrote up the approved recipes into DESIGN_SYSTEM.md §4. - Removed now-dead legacy widgets (media_grid_tile, swipeable_item, sync_status_badge, selectable_thumbnail) and updated architecture.md/styling.md/standards.md to describe the new structure and component/testing conventions. - Added widget tests for the noo/ component kit. This is a UI-only rework: no provider/model/service behavior changed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
name: Build App Bundle
|
||||
|
||||
# Deliberately not "on every push" - only when a real release tag (Release-1.0.0,
|
||||
# Release-1.2.3, ...) is pushed. Tag the commit you want built:
|
||||
# git tag Release-1.0.0 && git push origin Release-1.0.0
|
||||
# Unlike the RC* flow (build.yml), this builds the .aab Play Console wants,
|
||||
# not a sideloadable .apk.
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "Release-*"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up JDK 17
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: temurin
|
||||
java-version: "17"
|
||||
|
||||
- name: Set up Flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: stable
|
||||
|
||||
- name: Set up Android SDK
|
||||
uses: android-actions/setup-android@v3
|
||||
with:
|
||||
# Google removed the legacy standalone "tools" package from the
|
||||
# SDK repository (~Sep 2026); the action's own default packages
|
||||
# list ("tools platform-tools") now makes its internal sdkmanager
|
||||
# call fail for everyone. platform-tools is all this step needs
|
||||
# to install itself - flutter build fetches whatever
|
||||
# platform/build-tools versions it actually needs on its own.
|
||||
packages: "platform-tools"
|
||||
|
||||
- name: Install dependencies
|
||||
run: flutter pub get
|
||||
|
||||
- name: Analyze
|
||||
run: flutter analyze
|
||||
|
||||
- name: Decode release keystore
|
||||
# Same key as the RC* APK builds, so a Play Store upload's signature
|
||||
# matches anything sideloaded from a release build. See
|
||||
# android/app/build.gradle.kts.
|
||||
run: echo "$RELEASE_KEYSTORE_BASE64" | base64 -d > "${{ runner.temp }}/release-keystore.jks"
|
||||
env:
|
||||
RELEASE_KEYSTORE_BASE64: ${{ secrets.RELEASE_KEYSTORE_BASE64 }}
|
||||
|
||||
- name: Build release App Bundle
|
||||
run: flutter build appbundle --release
|
||||
env:
|
||||
RELEASE_KEYSTORE_PATH: ${{ runner.temp }}/release-keystore.jks
|
||||
RELEASE_KEYSTORE_PASSWORD: ${{ secrets.RELEASE_KEYSTORE_PASSWORD }}
|
||||
RELEASE_KEY_ALIAS: ${{ secrets.RELEASE_KEY_ALIAS }}
|
||||
RELEASE_KEY_PASSWORD: ${{ secrets.RELEASE_KEY_PASSWORD }}
|
||||
|
||||
- name: Rename bundle to Noo-<version>.aab
|
||||
run: |
|
||||
VERSION=$(grep '^version:' pubspec.yaml | sed 's/version: //' | cut -d'+' -f1)
|
||||
mkdir -p release
|
||||
cp build/app/outputs/bundle/release/app-release.aab "release/Noo-${VERSION}.aab"
|
||||
echo "AAB_PATH=release/Noo-${VERSION}.aab" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Publish Gitea release with App Bundle attached
|
||||
# Gitea-native release action (not GitHub's) - authenticates and
|
||||
# talks to this same Gitea instance automatically via the
|
||||
# `github.token`/`github.server_url` context Gitea Actions
|
||||
# provides for compatibility. Release is named/tagged after
|
||||
# whatever tag triggered this run (e.g. "Release-1.0.0").
|
||||
uses: akkuman/gitea-release-action@v1
|
||||
with:
|
||||
files: ${{ env.AAB_PATH }}
|
||||
|
||||
- name: Decode Play Console service account key
|
||||
# Skipped (rather than failing the whole run) until the secret is
|
||||
# set up - see tool/upload_play_bundle.py's doc comment for what
|
||||
# that setup involves and its one hard prerequisite: Google won't
|
||||
# accept API calls for an app that's never had a single manual
|
||||
# upload through the Play Console web UI.
|
||||
if: ${{ secrets.GOOGLE_PLAY_SERVICE_ACCOUNT_JSON_BASE64 != '' }}
|
||||
run: echo "$SERVICE_ACCOUNT_JSON_BASE64" | base64 -d > "${{ runner.temp }}/play-service-account.json"
|
||||
env:
|
||||
SERVICE_ACCOUNT_JSON_BASE64: ${{ secrets.GOOGLE_PLAY_SERVICE_ACCOUNT_JSON_BASE64 }}
|
||||
|
||||
- name: Upload App Bundle to Play Console library
|
||||
# Deliberately doesn't touch any release track - see
|
||||
# tool/upload_play_bundle.py. Uploaded bundles show up under
|
||||
# Release > App bundle explorer in Play Console, ready to promote
|
||||
# to a track by hand whenever it's actually time to ship.
|
||||
if: ${{ secrets.GOOGLE_PLAY_SERVICE_ACCOUNT_JSON_BASE64 != '' }}
|
||||
run: |
|
||||
pip install --quiet google-api-python-client google-auth
|
||||
python3 tool/upload_play_bundle.py "${{ env.AAB_PATH }}"
|
||||
env:
|
||||
GOOGLE_PLAY_PACKAGE_NAME: dev.ayushya.noo
|
||||
GOOGLE_PLAY_SERVICE_ACCOUNT_JSON_PATH: ${{ runner.temp }}/play-service-account.json
|
||||
Reference in New Issue
Block a user