feat: import Chinese-localized Buzz source snapshot
Docker image / Build (linux/amd64) (push) Has been cancelled
Docker image / Build (linux/arm64) (push) Has been cancelled
Docker image / Merge release multi-arch manifest (push) Has been cancelled
Docker image / Merge debug multi-arch manifest (push) Has been cancelled
Docker image / Build public push gateway (linux/amd64) (push) Has been cancelled
Docker image / Build public push gateway (linux/arm64) (push) Has been cancelled
Docker image / Publish public push gateway image (push) Has been cancelled
Sprig image / Build (linux/amd64) (push) Has been cancelled
Sprig image / Build (linux/arm64) (push) Has been cancelled
Sprig image / Merge multi-arch manifest (push) Has been cancelled
Harbor Buzz Orchestra / Python tests and lint (push) Has been cancelled
CI / Detect Changed Paths (push) Has been cancelled
CI / Rust Lint (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Desktop Core (push) Has been cancelled
CI / Desktop Smoke E2E (1) (push) Has been cancelled
CI / Desktop Smoke E2E (2) (push) Has been cancelled
CI / Desktop Smoke E2E (3) (push) Has been cancelled
CI / Desktop Smoke E2E (4) (push) Has been cancelled
CI / Desktop (push) Has been cancelled
CI / Desktop E2E Relay (push) Has been cancelled
CI / Desktop E2E Integration (1/2) (push) Has been cancelled
CI / Desktop E2E Integration (2/2) (push) Has been cancelled
CI / Desktop E2E Integration (push) Has been cancelled
CI / Backend Integration (relay e2e) (push) Has been cancelled
CI / Relay E2E (push) Has been cancelled
CI / Web (push) Has been cancelled
CI / Mobile (push) Has been cancelled
CI / Security (push) Has been cancelled
CI / Dead Token Reference Guard (push) Has been cancelled
CI / Server Cross-Compile (aarch64-unknown-linux-musl) (push) Has been cancelled
CI / Server Cross-Compile (x86_64-unknown-linux-musl) (push) Has been cancelled
CI / Windows Rust (x86_64-pc-windows-msvc) (push) Has been cancelled
CI / Desktop Build (macOS) (push) Has been cancelled
helm chart / lint + unittest + render matrix (push) Has been cancelled
helm chart / install on kind (gated) (push) Has been cancelled
helm chart / publish chart to GHCR (push) Has been cancelled
Mesh Lifecycle / Relay-Driven Mesh Lifecycle Smoke (push) Has been cancelled
Sprig / Build (aarch64-unknown-linux-musl) (push) Has been cancelled
Sprig / Build (x86_64-unknown-linux-musl) (push) Has been cancelled
Sprig / Publish rolling release (push) Has been cancelled
Sprig / Publish tagged release (push) Has been cancelled
Docker image / Build (linux/amd64) (push) Has been cancelled
Docker image / Build (linux/arm64) (push) Has been cancelled
Docker image / Merge release multi-arch manifest (push) Has been cancelled
Docker image / Merge debug multi-arch manifest (push) Has been cancelled
Docker image / Build public push gateway (linux/amd64) (push) Has been cancelled
Docker image / Build public push gateway (linux/arm64) (push) Has been cancelled
Docker image / Publish public push gateway image (push) Has been cancelled
Sprig image / Build (linux/amd64) (push) Has been cancelled
Sprig image / Build (linux/arm64) (push) Has been cancelled
Sprig image / Merge multi-arch manifest (push) Has been cancelled
Harbor Buzz Orchestra / Python tests and lint (push) Has been cancelled
CI / Detect Changed Paths (push) Has been cancelled
CI / Rust Lint (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Desktop Core (push) Has been cancelled
CI / Desktop Smoke E2E (1) (push) Has been cancelled
CI / Desktop Smoke E2E (2) (push) Has been cancelled
CI / Desktop Smoke E2E (3) (push) Has been cancelled
CI / Desktop Smoke E2E (4) (push) Has been cancelled
CI / Desktop (push) Has been cancelled
CI / Desktop E2E Relay (push) Has been cancelled
CI / Desktop E2E Integration (1/2) (push) Has been cancelled
CI / Desktop E2E Integration (2/2) (push) Has been cancelled
CI / Desktop E2E Integration (push) Has been cancelled
CI / Backend Integration (relay e2e) (push) Has been cancelled
CI / Relay E2E (push) Has been cancelled
CI / Web (push) Has been cancelled
CI / Mobile (push) Has been cancelled
CI / Security (push) Has been cancelled
CI / Dead Token Reference Guard (push) Has been cancelled
CI / Server Cross-Compile (aarch64-unknown-linux-musl) (push) Has been cancelled
CI / Server Cross-Compile (x86_64-unknown-linux-musl) (push) Has been cancelled
CI / Windows Rust (x86_64-pc-windows-msvc) (push) Has been cancelled
CI / Desktop Build (macOS) (push) Has been cancelled
helm chart / lint + unittest + render matrix (push) Has been cancelled
helm chart / install on kind (gated) (push) Has been cancelled
helm chart / publish chart to GHCR (push) Has been cancelled
Mesh Lifecycle / Relay-Driven Mesh Lifecycle Smoke (push) Has been cancelled
Sprig / Build (aarch64-unknown-linux-musl) (push) Has been cancelled
Sprig / Build (x86_64-unknown-linux-musl) (push) Has been cancelled
Sprig / Publish rolling release (push) Has been cancelled
Sprig / Publish tagged release (push) Has been cancelled
Signed-off-by: cls_宁波本机 <908705107@qq.com>
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
# Buzz Mobile
|
||||
|
||||
Flutter mobile client for Buzz.
|
||||
|
||||
## Setup
|
||||
|
||||
```bash
|
||||
cd mobile
|
||||
flutter pub get
|
||||
```
|
||||
|
||||
## Run
|
||||
|
||||
```bash
|
||||
# From repo root (recommended — starts Docker, relay, and simulator):
|
||||
just mobile-dev
|
||||
|
||||
# Direct (requires services and relay already running):
|
||||
cd mobile && flutter run
|
||||
```
|
||||
|
||||
### Worktree-aware debug identity
|
||||
|
||||
Debug builds produced from a git worktree get a unique app identifier keyed
|
||||
to the **worktree directory name** (`com.buzz.buzzMobile.<slug>` on iOS,
|
||||
`xyz.block.buzz.mobile.<slug>` on Android) plus a display-only branch label
|
||||
in the app name (`Buzz (my-branch)`, or a short SHA when the worktree is
|
||||
detached). Because the identifier follows the directory rather than the
|
||||
branch, one worktree keeps exactly one installed app — and its login state —
|
||||
across branch switches, and builds from multiple worktrees install side by
|
||||
side, mirroring the desktop dev experience. Release and profile builds
|
||||
always keep the production identity and name.
|
||||
|
||||
`just mobile-dev` and `just mobile-build-android` apply this automatically by
|
||||
running `scripts/mobile-worktree-overrides.sh`, which writes two gitignored
|
||||
files:
|
||||
|
||||
- `mobile/ios/Flutter/WorktreeOverrides.xcconfig` (included by Debug builds
|
||||
only; a developer's `AppOverrides.xcconfig` is included after it, so
|
||||
app-specific overrides like a personal `BUNDLE_IDENTIFIER` for device
|
||||
signing always win)
|
||||
- `mobile/android/worktree.properties` (read by the debug build type only)
|
||||
|
||||
For direct Xcode / Android Studio / `flutter run` development, run
|
||||
`./scripts/mobile-worktree-overrides.sh` from the repo root once per branch
|
||||
switch to refresh the display label (the install identity never changes);
|
||||
the persisted files are then picked up by any subsequent build. In the main
|
||||
checkout the script is a no-op that removes stale override files, restoring
|
||||
the plain `Buzz` identity.
|
||||
|
||||
To remove leftover worktree-suffixed installs from booted iOS simulators and
|
||||
connected Android emulators, run `just mobile-clean` (add `--dry-run` via
|
||||
`./scripts/mobile-worktree-clean.sh --dry-run` to preview). Production
|
||||
installs are never touched.
|
||||
|
||||
## Checks
|
||||
|
||||
```bash
|
||||
dart format --output=none --set-exit-if-changed .
|
||||
flutter analyze
|
||||
flutter test
|
||||
```
|
||||
|
||||
Or from the repo root: `just mobile-check` and `just mobile-test`.
|
||||
|
||||
## Android release signing
|
||||
|
||||
Android release builds fail unless all upload-key inputs are supplied through the
|
||||
environment:
|
||||
|
||||
- `BUZZ_ANDROID_UPLOAD_KEYSTORE_PATH`: path to a CI-vended keystore file
|
||||
- `BUZZ_ANDROID_UPLOAD_KEYSTORE_PASSWORD`
|
||||
- `BUZZ_ANDROID_UPLOAD_KEY_ALIAS`
|
||||
- `BUZZ_ANDROID_UPLOAD_KEY_PASSWORD`
|
||||
|
||||
The keystore path must be absolute, and the keystore must remain outside the
|
||||
repository. Development and debug builds do not require these variables.
|
||||
|
||||
Release pipelines that sign through the central APK Signer service instead of
|
||||
a local upload keystore must set `BUZZ_ANDROID_RELEASE_SIGNING=external`. That
|
||||
mode produces an unsigned release bundle and refuses to run if any
|
||||
`BUZZ_ANDROID_UPLOAD_*` value is also set.
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
lib/
|
||||
├── main.dart # Entry point, Riverpod bootstrap
|
||||
├── app.dart # MaterialApp with theme
|
||||
├── shared/
|
||||
│ └── theme/ # Catppuccin light/dark, spacing tokens, extensions
|
||||
└── features/
|
||||
└── home/ # Placeholder home surface
|
||||
```
|
||||
|
||||
- **State management:** Riverpod + Hooks (`HookConsumerWidget`)
|
||||
- **Theme:** Catppuccin Latte (light) / Macchiato (dark) — matches desktop
|
||||
- **Spacing:** `Grid` tokens for consistent spacing
|
||||
- **Linting:** `flutter_lints` + `riverpod_lint` via `custom_lint`
|
||||
- **Feature isolation:** No cross-feature imports except `shared/`
|
||||
Reference in New Issue
Block a user