You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Move to global ~/.mfbt config, integrate Ralph into TUI, add auto re-auth
Major changes:
- Migrate config from per-project .mfbt/ to global ~/.mfbt/ (schema v1→v2)
- Add shared OAuth flow (auth_flow.py) with auto token refresh and
interactive re-auth on 401 via on_auth_required callback
- Integrate Ralph orchestration into main TUI via RalphPanel widget
(r key), replacing standalone tui_app.py
- Add coding agent pre-flight checks (coding_agents.py) with
PreflightModal for verifying agent installation and MCP config
- Extend TUI to 4-level navigation: Projects > Phases > Modules > Features
- Simplify config/auth functions to operate on ~/.mfbt/ without
requiring project_root parameter
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2.**Interactive TUI Mode** — Launched when CLI runs without subcommands; K9S-style keyboard-driven navigation with real-time status updates
22
-
3.**Subcommands** — `status`, `next`, `modules`, `features`, plus commands for brainstorming phases, implementations, and jobs. Consistent output formatting (table, JSON, etc.)
23
-
4.**API Integration Layer** — REST client for all mfbt endpoints, paginated responses (`{items, total, page, page_size, total_pages}`), error handling (404 for unauthorized, 402 for token limits), job polling for async operations, WebSocket support for real-time job status
20
+
1.**Authentication & Configuration** — Browser-based OAuth flow with PKCE, auto token refresh + interactive re-auth on 401, API key support. Shared auth flow in `auth_flow.py`. Config/auth in `~/.mfbt/` (schema v2, no per-project `project_id`).
21
+
2.**Interactive TUI Mode** — Launched when CLI runs without subcommands; K9S-style keyboard-driven navigation: Projects > Phases > Modules > Features. Ralph orchestration integrated via `r` key.
-**Config functions no longer take `project_root`** — `load_config()`, `save_config()`, `load_auth()`, `save_auth()`, `init_mfbt_dir()`, `resolve_config()` all operate on `~/.mfbt/` via `get_mfbt_dir()`. `TokenManager.__init__` takes only `base_url`.
101
103
-**API response formats:** List endpoints (`/features`, `/implementations`) return **paginated**`{"items": [...], "total": N, ...}` — always extract via `body["items"]`. Some endpoints (`/brainstorming-phases`) return plain lists. See `src/mfbt/tui/data_provider.py` for the canonical parsing pattern.
-**Ralph TUI:** Standalone Textual app (`tui_app.py`), separate from main mfbt TUI. Uses `RalphTUIDisplay` adapter (same 8-method interface as `RalphDisplay`) with `call_from_thread()` to marshal UI updates from the orchestrator's worker thread.
-**Ralph in TUI:** Integrated into main TUI (`r` key), not a standalone app. Uses `RalphPanel` widget in `#main-content` with `PreflightModal` for agent checks. Standalone `tui_app.py` deleted.
-**Display duck typing:**`RalphOrchestrator.display` is typed as `Any` — both `RalphDisplay` and `RalphTUIDisplay` are structurally compatible (same 8 methods).
0 commit comments