docs: remove Flutter companion app from project surface
The Flutter app (separate fabled_app repo) no longer adds value over web/PWA access. Strip the in-repo surface that referenced it: - delete docs/android-app.md - drop README docs-table row and feature-list mention - drop the two Flutter roadmap bullets from docs/features.md - remove the Flutter port subsection from docs/design-system.md The standalone fabled_app repo is untouched here; archival/deletion of that repo is a separate decision. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1,73 +0,0 @@
|
||||
# Android Companion App
|
||||
|
||||
The Android companion app lives in a separate repository at `/home/bvandeusen/Nextcloud/Projects/fabled_app`.
|
||||
|
||||
## Stack
|
||||
|
||||
- Flutter + Dart
|
||||
- Riverpod (state management)
|
||||
- GoRouter (navigation)
|
||||
- Dio (HTTP client)
|
||||
- PersistCookieJar (session persistence)
|
||||
- SSE streaming via `fetch` + `ReadableStream` bridge
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
lib/
|
||||
app.dart # GoRouter + _Shell + _QuickCaptureBar
|
||||
core/constants.dart # Routes.*
|
||||
data/
|
||||
models/ # note.dart, task.dart, project.dart
|
||||
api/ # notes_api.dart, tasks_api.dart, projects_api.dart
|
||||
repositories/ # notes, tasks, projects repositories
|
||||
providers/
|
||||
api_client_provider.dart # all API + repository providers
|
||||
notes_provider.dart # NotesNotifier
|
||||
tasks_provider.dart # TasksNotifier
|
||||
projects_provider.dart # ProjectsNotifier
|
||||
screens/
|
||||
notes/note_edit_screen.dart # chip tag input + ProjectSelector
|
||||
tasks/task_edit_screen.dart # ProjectSelector
|
||||
projects/project_list_screen.dart
|
||||
widgets/
|
||||
project_selector.dart # reusable DropdownButtonFormField
|
||||
```
|
||||
|
||||
## Navigation
|
||||
|
||||
4-tab shell (Notes · Tasks · Projects · Chat):
|
||||
- Phone: bottom `NavigationBar`
|
||||
- Tablet/landscape: `NavigationRail`
|
||||
|
||||
Quick Capture bar persists across all tabs. Settings accessible from top-right icon.
|
||||
|
||||
## Feature Status
|
||||
|
||||
| Feature | Status | Notes |
|
||||
|---------|--------|-------|
|
||||
| Notes CRUD | ✅ | Tags chip input; project selector in editor |
|
||||
| Tasks CRUD | ✅ | Project selector in editor |
|
||||
| Projects list | ✅ | Active/archived sections; long-press status change; create dialog |
|
||||
| Chat + SSE | ✅ | Full streaming |
|
||||
| Quick Capture | ✅ | Offline queue with retry |
|
||||
| Tags | ✅ | Chip input in NoteEditScreen; typed as `List<String>` |
|
||||
| Project assignment | ✅ | `ProjectSelector` dropdown in Note + Task editors |
|
||||
| Milestones | ❌ deferred | Too granular for mobile; web UI handles it |
|
||||
| Push notifications | ❌ incompatible | Backend uses browser VAPID; Flutter needs FCM/APNs — separate implementation required |
|
||||
| CalDAV settings | ❌ intentional | Server-side config only; not exposed in mobile app |
|
||||
|
||||
## API Compatibility Notes
|
||||
|
||||
- `GET /api/projects/:id` returns a flat JSON object (not `{project: ...}` wrapper); includes `summary` field.
|
||||
- `POST /api/projects` returns the project dict directly (201).
|
||||
- `PATCH /api/projects/:id` returns the updated project dict.
|
||||
- Task body field is `body` (not `description`) — the app maps `description` → `body` on serialize.
|
||||
|
||||
## Self-Update
|
||||
|
||||
The app supports self-update via the Forgejo release API (`update_provider.dart`). It checks the latest release tag and prompts the user to download and install a new APK when one is available.
|
||||
|
||||
## CI
|
||||
|
||||
Builds are triggered from the Forgejo Actions pipeline in the `fabled_app` repository. The APK is attached to the release as a downloadable artifact.
|
||||
@@ -568,17 +568,6 @@ Items deliberately not addressed in this round; revisit when a real need surface
|
||||
- Standalone voice/tone audit across every UI string — opportunistic-only; full sweep deferred unless drift becomes visible.
|
||||
- A handful of editor utility buttons (`.btn-suggest-tags`, `.btn-link-all`, AI assist generate/proofread/accept/reject set, etc.) — currently ghost-styled and visually compliant; revisited only if they read off in practice.
|
||||
|
||||
### Flutter app port — shipped 2026-04-28
|
||||
|
||||
The companion mobile app (`fabled_app` / FabledApp repo) tracks the same design system. Two commits:
|
||||
|
||||
- **Foundation port** — `0f05f47`. `lib/core/theme.dart` rewritten with the Obsidian/Iron/Pewter dark palette, warm parchment light palette, dusty violet `#5B4A8A` primary. Inter loaded for body, JetBrains Mono available at call sites, Fraunces for headlines ≥18px. New `ActionColors` ThemeExtension exposes Moss/Bronze/Oxblood/Pewter outside the `ColorScheme` (Material's primary/secondary/tertiary slots all carry brand accent, so action tokens need their own home). `GradientButton` recolored to dusty-violet gradient.
|
||||
- **Surface phase** — `b9e68e3`. `lucide_icons ^0.257.0` installed; 107 `Icons.*` references across 21 files swapped to `LucideIcons.*`. Input border radius 24 → 8 in both themes. ChatMessageBubble Illuminated Transcript fixes — neutral border on user bubbles, `surface`/Iron bg on assistant bubbles, asymmetric corner restoration (only bottom-left clipped, not both left corners), accent-tinted glow shadow added. 5 destructive confirm buttons across notes / tasks / chat / calendar wired to `ActionColors.destructive`. Calendar event Save wired to `ActionColors.primary` as the reference Moss site. 4 hardcoded indigo Color literals → dusty-violet equivalents.
|
||||
|
||||
The Flutter port doesn't decompose into 7 PRs the way web did because Flutter's centralized `theme.dart` means most palette/font work happens in one file. Per-screen Save / Cancel reclassification beyond the calendar event Save is opportunistic — the wiring pattern (`Theme.of(context).extension<ActionColors>()!.primary`) is established and applied incrementally as files are touched.
|
||||
|
||||
Pattern reference for downstream screens: see `lib/screens/calendar/event_form_sheet.dart` for `ActionColors.primary` usage on Save buttons; see the dialog spots in `note_edit_screen.dart` / `task_edit_screen.dart` / `note_detail_screen.dart` / `conversations_tab_screen.dart` for `ActionColors.destructive` on confirm-Delete buttons.
|
||||
|
||||
### Open threads
|
||||
|
||||
*New threads will accumulate here as gaps surface in real use.*
|
||||
|
||||
@@ -132,8 +132,6 @@ Settings are tabbed:
|
||||
|
||||
- Email integration (read/send via IMAP/SMTP tools in chat)
|
||||
- Session invalidation on user deletion
|
||||
- Flutter push notifications (requires FCM/APNs — separate from web VAPID)
|
||||
- Flutter milestone support in project view
|
||||
|
||||
## Keyboard Shortcuts
|
||||
|
||||
|
||||
Reference in New Issue
Block a user