mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-10-01 02:04:24 +00:00
## Summary Settings > Integrations now reflects the server's actual integration readiness instead of only static `settings.toml` booleans. This adds `/api/v1/system/integrations` as the runtime source of truth, covering server config, vault credential presence, and Slack Socket Mode connection state. ## What Changed - Added shared `fabro-types` integration status models and reused them from `fabro-api` to avoid duplicate API/domain types. - Added `GET /api/v1/system/integrations` to the OpenAPI spec, Rust server routes, demo routes, and generated TypeScript client. - Reports GitHub and Slack status as `disabled`, `missing_credentials`, `configured`, `connecting`, `connected`, or `error`, with non-secret metadata and missing credential names. - Tracks Slack Socket Mode runtime state from the Slack connection loop and respects explicit `server.integrations.slack.enabled = false` even when vault tokens exist. - Updated the Integrations settings page to read the new runtime endpoint, so a vault-configured Slack setup no longer appears simply as disabled. ## Verification - `cargo build -p fabro-api` - `cargo nextest run -p fabro-api system_integrations` - `cargo nextest run -p fabro-config resolved_server_integrations_are_slack_only_for_chat` - `cargo nextest run -p fabro-slack run_event_loop_notifies_connected_status` - `cargo nextest run -p fabro-server --features test-support --test it get_system_integrations` - `cargo nextest run -p fabro-server` - `cargo +nightly-2026-04-14 fmt --check --all` - `cd apps/fabro-web && bun test app/routes/settings-integrations.test.tsx app/lib/query-keys.test.ts` - `cd apps/fabro-web && bun run typecheck` - `cd apps/fabro-web && bun run build` --- [](https://github.com/EveryInc/compound-engineering-plugin) 🤖 Generated with GPT-5 via [Codex](https://openai.com/codex) |
||
|---|---|---|
| .. | ||
| api-client.test.ts | ||
| api-client.ts | ||
| ask-fabro-layout.tsx | ||
| ask-fabro-runtime.test.ts | ||
| ask-fabro-runtime.ts | ||
| board-cache.ts | ||
| board-events.test.tsx | ||
| board-events.ts | ||
| chats-runtime.test.ts | ||
| chats-runtime.ts | ||
| chats-script.ts | ||
| chats-store.test.tsx | ||
| chats-store.tsx | ||
| chats-types.ts | ||
| cross-tab-sse.test.ts | ||
| cross-tab-sse.ts | ||
| demo-mode.test.tsx | ||
| demo-mode.tsx | ||
| format.ts | ||
| graph-theme.ts | ||
| live-events.test.tsx | ||
| live-events.ts | ||
| mutations.test.ts | ||
| mutations.ts | ||
| pierre-diffs-worker.ts | ||
| plural.ts | ||
| principal-display.tsx | ||
| queries.ts | ||
| query-keys.test.ts | ||
| query-keys.ts | ||
| run-actions.test.ts | ||
| run-actions.ts | ||
| run-events.test.tsx | ||
| run-events.ts | ||
| run-phases.test.ts | ||
| run-phases.ts | ||
| run-settings-snapshot.ts | ||
| sandbox-state.ts | ||
| session-stream.test.ts | ||
| session-stream.ts | ||
| sse.ts | ||
| stage-sidebar.test.ts | ||
| stage-sidebar.ts | ||
| test-utils.tsx | ||
| time.ts | ||
| unknown.ts | ||