diff --git a/README.md b/README.md index 5af628f..7a2b3fb 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ A self-hosted second brain and project management application with integrated LL ## Features -Notes and tasks with a Markdown editor, sub-tasks, milestones, and kanban project workspaces. AI chat with streaming responses, RAG over your notes, and tool use (web search, calendar, weather). A daily briefing that digests your tasks, RSS feeds, and weather on a schedule. Knowledge graph, per-user/group sharing, PWA with push notifications, an MCP server for external AI clients, and an Android companion app. +Notes and tasks with a Markdown editor, sub-tasks, milestones, and kanban project workspaces. AI chat with streaming responses, RAG over your notes, and tool use (web search, calendar, weather). A daily briefing that digests your tasks, RSS feeds, and weather on a schedule. Knowledge graph, per-user/group sharing, PWA with push notifications, and an MCP server for external AI clients. ## Quick Start @@ -36,7 +36,6 @@ Open `http://localhost:5000`. The first user to register becomes admin. Go to ** | [API Keys & MCP](docs/api-keys-and-mcp.md) | API key management and Fable MCP install guide | | [SSO / OAuth](docs/sso-oauth.md) | OIDC setup for Authentik, Keycloak, and other providers | | [API Reference](docs/api-reference.md) | All REST API endpoints | -| [Android App](docs/android-app.md) | Flutter companion app architecture and feature status | ## License diff --git a/docs/android-app.md b/docs/android-app.md deleted file mode 100644 index ef9c0ee..0000000 --- a/docs/android-app.md +++ /dev/null @@ -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` | -| 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. diff --git a/docs/design-system.md b/docs/design-system.md index 78e9df2..ab9f373 100644 --- a/docs/design-system.md +++ b/docs/design-system.md @@ -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()!.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.* diff --git a/docs/features.md b/docs/features.md index 7cbea3a..ce236d7 100644 --- a/docs/features.md +++ b/docs/features.md @@ -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