feat: land native mobile foundation
This commit is contained in:
+28
-130
@@ -1,136 +1,34 @@
|
||||
# Roadmap
|
||||
# Hermes Mobile Beta Roadmap
|
||||
|
||||
## Phase 0 — Planning Scaffold
|
||||
## Current Milestone: Native Android Beta Chat and Connection UX
|
||||
|
||||
Status: completed.
|
||||
Status: in progress, close to beta validation. F0 source landing is complete; Android debug build validation remains environment-blocked.
|
||||
|
||||
Deliverables:
|
||||
- Repo created
|
||||
- Product plan
|
||||
- Architecture plan
|
||||
- Design direction
|
||||
- Install strategy
|
||||
- Project structure
|
||||
Done:
|
||||
- Native Kotlin/Compose Android shell replaces the web-first mobile path for the beta surface.
|
||||
- Companion settings flow stores companion URL and access key locally, validates bearer auth, and surfaces health errors in-app.
|
||||
- Chat UI supports conversation list/thread navigation, native composer, busy state, selectable replies, error bubbles, and new-chat reset.
|
||||
- Companion `/api/chat` invokes Hermes through the CLI with `hermes chat -Q --source tool -q <prompt>`.
|
||||
- Companion chat responses sanitize terminal banners/help/control output, truncate large replies for mobile, report CLI availability, and return structured failure responses.
|
||||
- Workspace utilities remain native: command runner, health view, file browsing, read, and write.
|
||||
- Local build artifacts, Android transient build output, `.gradle-user/`, and `.dev/` are ignored.
|
||||
- Companion and workspace TypeScript typecheck, build, and lint pass as of 2026-07-24.
|
||||
|
||||
## Phase 1 — Skeleton
|
||||
Remaining for beta:
|
||||
- Validate Android debug build in an environment where Gradle can fetch or reuse the Gradle 8.11.1 distribution. On 2026-07-24, `GRADLE_USER_HOME=/root/hermes-mobile/.gradle-user ./gradlew :app:assembleDebug` failed before compilation because network socket creation is blocked while downloading `https://services.gradle.org/distributions/gradle-8.11.1-all.zip`.
|
||||
- Exercise a real paired device against a running companion and authenticated Hermes CLI.
|
||||
- Exercise upstream-compatible transport/auth/session/streaming behavior end to end: bearer auth, health, chat request/response, session continuity expectations, streamed/final output handling, and failure recovery.
|
||||
- Add or run focused Android UI validation for chat/settings flows on small and large screens.
|
||||
- Confirm adaptive accessibility: font scaling, TalkBack labels, contrast, keyboard/IME behavior, and reduced-motion tolerance.
|
||||
- Document beta install/run steps after the native build is verified.
|
||||
|
||||
Goal: empty but runnable monorepo.
|
||||
## Beta Release Criteria
|
||||
|
||||
Status: in progress.
|
||||
|
||||
Deliverables:
|
||||
- pnpm workspace
|
||||
- `apps/mobile` Vite React app with Capacitor Android target and PWA fallback
|
||||
- `apps/companion` Fastify server
|
||||
- shared TypeScript package for event/API schemas
|
||||
- basic app shell with bottom nav
|
||||
- `/api/health`
|
||||
- local dev scripts
|
||||
|
||||
## Phase 2 — Basic Hermes Prompting
|
||||
|
||||
Goal: phone can send text prompt and receive final answer.
|
||||
|
||||
Deliverables:
|
||||
- pairing/auth MVP
|
||||
- Settings connect flow
|
||||
- task creation endpoint
|
||||
- Hermes CLI/API adapter MVP
|
||||
- Ask screen sends prompt
|
||||
- response display
|
||||
- task history in SQLite
|
||||
|
||||
## Phase 3 — Realtime Activity + Tool Timeline
|
||||
|
||||
Goal: see Hermes work live.
|
||||
|
||||
Deliverables:
|
||||
- event bus
|
||||
- WebSocket/SSE stream
|
||||
- tool timeline UI
|
||||
- Python worker adapter using AIAgent callbacks if needed
|
||||
- coarse/fine tool event mapping
|
||||
|
||||
## Phase 4 — Uploads + Voice
|
||||
|
||||
Goal: prompt with files and voice notes.
|
||||
|
||||
Deliverables:
|
||||
- multipart upload endpoint
|
||||
- upload tray UI
|
||||
- image/archive/pdf metadata
|
||||
- voice recorder UI
|
||||
- local STT or Hermes STT bridge
|
||||
- attach files to task prompt
|
||||
|
||||
## Phase 5 — Notifications
|
||||
|
||||
Goal: close phone and get told when done.
|
||||
|
||||
Deliverables:
|
||||
- Native Android push path or ntfy/Web Push fallback
|
||||
- PWA service worker fallback
|
||||
- notification provider abstraction
|
||||
- notification permission onboarding
|
||||
- completion/failure/approval notifications
|
||||
|
||||
## Phase 6 — Cron + Approvals
|
||||
|
||||
Goal: mobile control plane.
|
||||
|
||||
Deliverables:
|
||||
- cron list/run/pause/resume/remove
|
||||
- cron output viewer
|
||||
- approval queue UI
|
||||
- companion approval API
|
||||
- Hermes approval integration strategy
|
||||
|
||||
## Phase 7 — Installer + Release
|
||||
|
||||
Goal: one-liner install.
|
||||
|
||||
Deliverables:
|
||||
- production build
|
||||
- install.sh
|
||||
- systemd service
|
||||
- update/uninstall modes
|
||||
- release artifact
|
||||
- pairing URL output
|
||||
|
||||
## Phase 8 — Android Polish
|
||||
|
||||
Goal: feels native.
|
||||
|
||||
Deliverables:
|
||||
- refined Happy-inspired UI
|
||||
- animations/microinteractions
|
||||
- Capacitor Android build pipeline
|
||||
- adaptive icons/splash
|
||||
- native status/navigation bars
|
||||
- share target
|
||||
- haptics
|
||||
- offline shell polish
|
||||
- APK release/signing flow
|
||||
|
||||
## Phase 9 — Deep Hermes Integration
|
||||
|
||||
Goal: full Hermes-native experience.
|
||||
|
||||
Deliverables:
|
||||
- structured event stream from Hermes core or stable Python adapter
|
||||
- richer session browsing
|
||||
- generated file detection
|
||||
- background process control
|
||||
- subagent visualization
|
||||
- memory/skills dashboards possibly
|
||||
|
||||
## Open Feature Ideas
|
||||
|
||||
- Quick action tiles: “Check homelab”, “Run DV status”, “Start coding task”.
|
||||
- Voice-to-voice mode.
|
||||
- Per-task model/toolset selection.
|
||||
- “Watch mode” for long-running coding tasks.
|
||||
- Home Assistant widgets/actions.
|
||||
- Secure notification actions: approve/deny from notification.
|
||||
- Android native share target.
|
||||
- QR pairing from terminal output.
|
||||
- Native Kotlin/Compose Android app is the shipped beta client.
|
||||
- No WebView, Capacitor runtime dependency, fake backend, embedded secrets, or new external infrastructure is introduced for beta.
|
||||
- Companion transport and auth are upstream-compatible and exercised against the real Hermes CLI.
|
||||
- Chat/session/streaming behavior is exercised with Hermes, including success, CLI unavailable, timeout, non-zero exit, and malformed response cases.
|
||||
- Settings connection flow is reliable: save, validate, health, Hermes test, offline/unauthorized states, and recovery are clear.
|
||||
- Adaptive accessibility passes on target Android devices or emulators.
|
||||
- Required checks pass: `./gradlew :app:assembleDebug` from `apps/mobile/android`, companion typecheck/build, and relevant lint.
|
||||
- Release notes clearly list remaining known beta limitations.
|
||||
|
||||
Reference in New Issue
Block a user