Skip to content

Add branded account connections to onboarding and Integrations - #176

Open
alichherawalla wants to merge 164 commits into
mainfrom
feat/direct-account-connections
Open

alichherawalla wants to merge 164 commits into
mainfrom
feat/direct-account-connections

Conversation

@alichherawalla

@alichherawalla alichherawalla commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Connect your accounts (Google, Microsoft, Obsidian, MCP connectors) during onboarding and in Integrations, and meet God: your assistant, built on Chat, with Ares beside it. God and accounts are Pro; the private code is in off-grid-ai/desktop-pro#90, merge that first.

Accounts

  • Google and Microsoft: choose services (Gmail, Calendar, Drive, Contacts; Outlook, Calendar, OneDrive), add several accounts, edit access, sign in again, remove after confirming. Connect with Off Grid AI's app or your own (Microsoft takes a client ID only, no secret).
  • Obsidian: several vaults, each added, changed and removed on its own; the same folder twice is refused.
  • MCP connectors: now editable (name, address or command, token). A new address signs out of the old server. Remove names the connector and asks first.
  • Email across accounts: routing folds plurals and the mail tools say email, so "top emails across my accounts" offers every mailbox instead of Notion's tools.
  • Errors read as the reason (no "Error invoking remote method"), and a busy sign-in port says what to do.
Choose services Your own app (Microsoft) Obsidian vaults Edit a connector
Google services Microsoft own app Obsidian MCP edit

God

  • God is Chat: the same messages, actions, resend, versions and conversation list, holding God's conversations only (conversations now carry a surface, Chat or God; earlier God chats move over once with real titles).
  • Set up to do everything: all memory, every connector, every tool, the selected model reasoning. The composer is text, attach, mic and send. Generation details and tools sent are hidden.
  • Answers plain questions directly: a question no longer starts a web task; Web Use and Computer Use are offered when you ask for something to be done.
  • Ares's controls under him (talk, run, walk, fight, rest, spin), shared with Ares on the desktop. Desktop Ares is off until turned on in God settings and stays out of full-screen apps.
  • Right now card, Needs you rail, rules and a name, wake word "Ares" (Pro, transcribed locally), the in-app guide to Off Grid AI.

God

Builds

scripts/oauth-build-config.mjs reads the Google client from the environment (repository secrets GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET, now set), ignored .env files or ~/.offgrid/build.env. Release builds fail without them. Microsoft's public client ID is built in.

Tests (6 Oct, macOS, Node 26)

  • Typecheck: npm run typecheck:node and typecheck:web pass.

  • Renderer and Pro renderer: 216 files, 1,342 tests pass (37 that failed before because Node 26 hides jsdom's localStorage now run).

  • God screen 15, connectors edit and remove 3 + 4 DB, conversation surface 2 DB, tool routing 157, OAuth loopback 12, wake word 7: pass.

  • Pro main 361 pass; account lifecycle DB 10 pass (including the revoke-failure notice).

  • Real app (e2e/accounts-lifecycle.spec.ts, dev build, Pro, temp profile, synthetic data): 4 of 4 pass. Google and Microsoft run to the consent page with Off Grid AI's app and your own; Obsidian and MCP run add, change and remove.

  • Real Google and Microsoft sign-ins were tested by hand in the app on 6 Oct.

  • Extension against this branch's running desktop (remote Gemini 3.7 Flash): 5 passed, 2 vault tests skipped. Pairing, Settings, Models, a chat answered without a web task, and a web task driving a Chrome tab.

Gateway: remote reasoning reuses Chat's logic

The gateway kept its own copy of OpenRouter's reasoning control and always sent "reasoning off", which Gemini 3.7 Flash refuses (HTTP 400, "Reasoning is mandatory"). It now uses remoteReasoningFields, the same function Chat uses, after reading the model's capability. The /v1 routes and responses are unchanged. Unit test: src/main/llm/__tests__/remote-reasoning-fields.test.ts; gateway test in model-server-chat.integration.test.ts (needs port 8439 free, so it runs in CI).

Audit: every row of docs/OFF_GRID_WORK_LOG_AUDIT_2026-10-06.md now has a Response.

Summary by CodeRabbit

  • New Features

    • Added God, a chat and voice assistant with conversation history, current-day context, activity and approval controls, and an optional desktop companion with wake-word listening.
    • Added quick connection setup and management during onboarding and in Integrations, including account status, reconnect, and cancellation options.
    • Added an in-app guide to Off Grid AI features and recent updates.
    • Added OAuth configuration checks for production builds.
  • Improvements

    • Model startup can continue while the server reports progress, and OAuth sign-in allows more time to complete.
    • The app now defaults to dark theme and includes updated cross-platform design guidance.

@coderabbitai

coderabbitai Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Important

Review skipped

Too many files!

This PR contains 189 files, which is 89 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration
  • Configuration used: Repository: off-grid-ai/OGAD/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: d5059a5a-329a-46a9-8c3d-dc3e84c80d80
📥 Commits

Reviewing files that changed from the base of the PR and between 75bb473 and c1ba26b.

⛔ Files ignored due to path filters (19)
  • docs/pr-screenshots/2026-10-06/god-screen.png is excluded by !**/*.png, !**/*.png
  • docs/pr-screenshots/2026-10-06/google-choose-services.png is excluded by !**/*.png, !**/*.png
  • docs/pr-screenshots/2026-10-06/google-own-app.png is excluded by !**/*.png, !**/*.png
  • docs/pr-screenshots/2026-10-06/mcp-connector-edited.png is excluded by !**/*.png, !**/*.png
  • docs/pr-screenshots/2026-10-06/microsoft-choose-services.png is excluded by !**/*.png, !**/*.png
  • docs/pr-screenshots/2026-10-06/microsoft-own-app.png is excluded by !**/*.png, !**/*.png
  • docs/pr-screenshots/2026-10-06/obsidian-two-vaults.png is excluded by !**/*.png, !**/*.png
  • docs/research/assets/connection-onboarding.png is excluded by !**/*.png, !**/*.png
  • docs/research/assets/google-apis-enabled.png is excluded by !**/*.png, !**/*.png
  • docs/research/assets/microsoft-registration-created.png is excluded by !**/*.png, !**/*.png
  • docs/research/assets/microsoft-registration-ready.png is excluded by !**/*.png, !**/*.png
  • package-lock.json is excluded by !**/package-lock.json, !**/package-lock.json
  • src/renderer/src/assets/logos/confluence.svg is excluded by !**/*.svg
  • src/renderer/src/assets/logos/google.svg is excluded by !**/*.svg
  • src/renderer/src/assets/logos/jira.svg is excluded by !**/*.svg
  • src/renderer/src/assets/logos/linear.svg is excluded by !**/*.svg
  • src/renderer/src/assets/logos/microsoft.svg is excluded by !**/*.svg
  • src/renderer/src/assets/logos/notion.svg is excluded by !**/*.svg
  • src/renderer/src/assets/logos/obsidian.svg is excluded by !**/*.svg
📒 Files selected for processing (189)
  • .github/workflows/ci.yml
  • .github/workflows/release.yml
  • .github/workflows/windows-build.yml
  • .gitignore
  • docs/DESIGN.md
  • docs/DESIGN_PHILOSOPHY.md
  • docs/OFF_GRID_WORK_LOG_AUDIT_2026-10-06.md
  • docs/research/direct-communication-connections.md
  • e2e/accounts-lifecycle.spec.ts
  • e2e/fixtures/accounts-mcp-connector.mjs
  • electron.vite.config.ts
  • integration-tests/memory-chat-tts.ui.integration.dbtest.ts
  • integration-tests/remote-settings.ui.integration.dbtest.tsx
  • integration-tests/workspace-production-bridge.ui.integration.dbtest.tsx
  • package.json
  • pro
  • scripts/config/vitest-asset-plugin.ts
  • scripts/oauth-build-config.mjs
  • src/main/__tests__/ai-request-log.test.ts
  • src/main/__tests__/computer-use-settings.integration.dbtest.ts
  • src/main/__tests__/conversation-surface.dbtest.ts
  • src/main/__tests__/mcp-connector-update.dbtest.ts
  • src/main/__tests__/mcp-oauth-loopback.integration.test.ts
  • src/main/__tests__/model-server-chat.integration.test.ts
  • src/main/__tests__/multimodal-rag-lifecycle.integration.dbtest.ts
  • src/main/__tests__/task-history-ipc.dbtest.ts
  • src/main/__tests__/task-role-models.test.ts
  • src/main/__tests__/tools-loop.dbtest.ts
  • src/main/actions/__tests__/gate-host.test.ts
  • src/main/actions/chat-connector-action.ts
  • src/main/actions/gate-host.ts
  • src/main/actions/remote-screen-gate.ts
  • src/main/ai-request-log.ts
  • src/main/bootstrap/hookRegistry.ts
  • src/main/browser/__tests__/browser-start-tab.test.ts
  • src/main/browser/__tests__/extension-tab-pages.test.ts
  • src/main/browser/__tests__/web-use-host.test.ts
  • src/main/browser/browser-host.ts
  • src/main/browser/browser-rail.ts
  • src/main/browser/browser-start-tab.ts
  • src/main/browser/extension-browser-host.ts
  • src/main/browser/extension-tab-pages.ts
  • src/main/browser/web-use-host.ts
  • src/main/computer-use-settings.ts
  • src/main/database.ts
  • src/main/embeddings-env.ts
  • src/main/extension-bridge/__tests__/bridge-conversations.test.ts
  • src/main/extension-bridge/__tests__/bridge-service.test.ts
  • src/main/extension-bridge/__tests__/bridge-settings-store.test.ts
  • src/main/extension-bridge/__tests__/bridge-task-progress.test.ts
  • src/main/extension-bridge/bridge-conversations.ts
  • src/main/extension-bridge/bridge-electron.ts
  • src/main/extension-bridge/bridge-http.ts
  • src/main/extension-bridge/bridge-protocol.ts
  • src/main/extension-bridge/bridge-service.ts
  • src/main/extension-bridge/bridge-settings-store.ts
  • src/main/extension-bridge/bridge-settings.ts
  • src/main/extension-bridge/bridge-socket-protocol.ts
  • src/main/extension-bridge/bridge-task-progress.ts
  • src/main/index.ts
  • src/main/ipc.ts
  • src/main/llm.ts
  • src/main/llm/__tests__/remote-reasoning-fields.test.ts
  • src/main/llm/__tests__/startup-timeout.test.ts
  • src/main/llm/remote-chat.ts
  • src/main/llm/startup-timeout.ts
  • src/main/mcp-ipc.ts
  • src/main/mcp-oauth-loopback.ts
  • src/main/mcp-oauth.ts
  • src/main/mcp.ts
  • src/main/model-server.ts
  • src/main/models-manager.ts
  • src/main/models/__tests__/model-download-matrix.integration.test.ts
  • src/main/models/__tests__/model-integrity.integration.test.ts
  • src/main/task-role-models.ts
  • src/main/task-role-requests.ts
  • src/main/task-settings-events.ts
  • src/main/tasks/__tests__/task-retry-context.test.ts
  • src/main/tasks/task-history-ipc.ts
  • src/main/tasks/task-history.ts
  • src/main/tools.ts
  • src/main/tools/__tests__/nativeActionToolExtension-engine.test.ts
  • src/main/tools/__tests__/tool-embedding-ranking.test.ts
  • src/main/tools/__tests__/tool-ranking.test.ts
  • src/main/tools/mcpConnectorToolExtension.ts
  • src/main/tools/nativeActionToolExtension.ts
  • src/main/tools/offgrid-guide-tool.ts
  • src/main/tools/tool-ranking.ts
  • src/main/transcription/select.ts
  • src/main/tts.ts
  • src/main/vision/__tests__/task-role-models.test.ts
  • src/main/vision/__tests__/vision-controller.test.ts
  • src/main/vision/grounder-loader.ts
  • src/main/vision/grounder-selection.ts
  • src/main/vision/vision-controller.ts
  • src/main/vision/vision-task-model-strategy.ts
  • src/main/web-use-settings.ts
  • src/preload/index.ts
  • src/renderer/src/App.tsx
  • src/renderer/src/__tests__/App.locked-pro-tabs.integration.test.tsx
  • src/renderer/src/__tests__/App.navigation.integration.test.tsx
  • src/renderer/src/__tests__/App.shell-navigation.integration.test.tsx
  • src/renderer/src/__tests__/dom-globals.setup.ts
  • src/renderer/src/__tests__/theme.test.ts
  • src/renderer/src/assets/logos/README.md
  • src/renderer/src/assets/main.css
  • src/renderer/src/bootstrap/loadProFeaturesRenderer.ts
  • src/renderer/src/bootstrap/slotRegistry.ts
  • src/renderer/src/components/ChatVoiceComposer.tsx
  • src/renderer/src/components/ConnectorsScreen.tsx
  • src/renderer/src/components/GodIcon.tsx
  • src/renderer/src/components/ImageSettingsTab.tsx
  • src/renderer/src/components/MemoryChat/components/MessageRow.tsx
  • src/renderer/src/components/MemoryChat/index.tsx
  • src/renderer/src/components/MemoryChat/interfaces.tsx
  • src/renderer/src/components/MemoryChat/types.tsx
  • src/renderer/src/components/MemoryChat/utlis.tsx
  • src/renderer/src/components/ModelPicker.tsx
  • src/renderer/src/components/ModelsScreen.tsx
  • src/renderer/src/components/Onboarding.tsx
  • src/renderer/src/components/PermissionGate.tsx
  • src/renderer/src/components/QuickConnections.tsx
  • src/renderer/src/components/RemoteVisionSettingsTab.tsx
  • src/renderer/src/components/Settings.tsx
  • src/renderer/src/components/SettingsPanel.tsx
  • src/renderer/src/components/SettingsSection.tsx
  • src/renderer/src/components/TaskLineups.tsx
  • src/renderer/src/components/VoiceSettingsTab.tsx
  • src/renderer/src/components/__tests__/ConnectorsScreen.edit-remove.integration.test.tsx
  • src/renderer/src/components/__tests__/ConnectorsScreen.oauth-cancel.integration.test.tsx
  • src/renderer/src/components/__tests__/MemoryChat.image.test.tsx
  • src/renderer/src/components/__tests__/MemoryChat.preset-runs.integration.test.tsx
  • src/renderer/src/components/__tests__/MemoryChat.voice-turn-modes.integration.test.tsx
  • src/renderer/src/components/__tests__/ModelPicker.active-use-models.integration.test.tsx
  • src/renderer/src/components/__tests__/ModelPicker.dismiss.integration.test.tsx
  • src/renderer/src/components/__tests__/ModelsScreen.computer-use.integration.test.tsx
  • src/renderer/src/components/__tests__/ModelsScreen.remote-model.integration.test.tsx
  • src/renderer/src/components/__tests__/Onboarding.model-control.integration.test.tsx
  • src/renderer/src/components/__tests__/QuickConnections.test.tsx
  • src/renderer/src/components/__tests__/RemoteVisionSettingsTab.integration.test.tsx
  • src/renderer/src/components/__tests__/RemoteVisionSettingsTab.live-discovery.integration.test.tsx
  • src/renderer/src/components/__tests__/SettingsPanel.backends.integration.test.tsx
  • src/renderer/src/components/__tests__/SettingsPanel.image.integration.test.tsx
  • src/renderer/src/components/__tests__/SettingsPanel.speech-language.integration.test.tsx
  • src/renderer/src/components/__tests__/SettingsPanel.tools.integration.test.tsx
  • src/renderer/src/components/__tests__/SettingsSection.test.tsx
  • src/renderer/src/components/__tests__/harness/chat-boundary.tsx
  • src/renderer/src/components/__tests__/harness/task-roles.ts
  • src/renderer/src/components/__tests__/memorychat-brand.test.ts
  • src/renderer/src/components/connectorCatalog.ts
  • src/renderer/src/components/explore/ExploreScreen.tsx
  • src/renderer/src/components/explore/PresetSetup.tsx
  • src/renderer/src/components/explore/__tests__/ExploreScreen.test.tsx
  • src/renderer/src/components/explore/__tests__/PresetSetup.ai-enhance.integration.test.tsx
  • src/renderer/src/components/pro/proCatalog.ts
  • src/renderer/src/components/quickConnectionCatalog.ts
  • src/renderer/src/components/setup/__tests__/StorageUsage.integration.test.tsx
  • src/renderer/src/components/use-chat-voice-turns.ts
  • src/renderer/src/components/useQuickConnection.ts
  • src/renderer/src/env.d.ts
  • src/renderer/src/lib/__tests__/model-kind-labels.test.ts
  • src/renderer/src/lib/__tests__/reply-sound.test.tsx
  • src/renderer/src/lib/__tests__/scroll-activity.test.ts
  • src/renderer/src/lib/app-location.ts
  • src/renderer/src/lib/assistant-activity.ts
  • src/renderer/src/lib/chime.ts
  • src/renderer/src/lib/model-kind-labels.ts
  • src/renderer/src/lib/reply-sound.ts
  • src/renderer/src/lib/scroll-activity.ts
  • src/renderer/src/lib/task-roles.ts
  • src/renderer/src/lib/voice-preferences.ts
  • src/renderer/src/main.tsx
  • src/renderer/src/theme.ts
  • src/shared/__tests__/connector-groups.test.ts
  • src/shared/__tests__/empty-answer.test.ts
  • src/shared/__tests__/offgrid-guide.test.ts
  • src/shared/__tests__/remote-vision-server.test.ts
  • src/shared/__tests__/task-roles-view.test.ts
  • src/shared/computer-use-settings.ts
  • src/shared/connector-groups.ts
  • src/shared/empty-answer.ts
  • src/shared/ipc-contracts.ts
  • src/shared/offgrid-guide.ts
  • src/shared/remote-vision-server.ts
  • src/shared/renderer-csp.ts
  • src/shared/task-roles-view.ts
  • src/shared/web-use-settings.ts
  • vitest.config.ts
  • vitest.db.config.ts

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Commit to this branch
  • Create a new PR
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

claude and others added 17 commits October 6, 2026 01:53
…onnections

# Conflicts:
#	pro
#	src/renderer/src/App.tsx
#	src/renderer/src/components/ConnectorsScreen.tsx
…nto feat/direct-account-connections

# Conflicts:
#	package-lock.json
#	package.json
#	src/renderer/src/components/Settings.tsx
god-twin:hear takes a 16 kHz clip from the renderer, transcribes it with
the local engine (never a remote server, even when one is set for
transcription), biased toward the wake word, and deletes it. On a match
it shows and focuses the main window and sends god-twin:wake with what
followed the word. Off by default; settings live under godTwin:listen.
A click on the companion now also brings the main window forward.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MXKTonahBSj3Td5TiTfgw7
…th Aries

The Assistant tab is now God Twin, open to everyone. Ares stands in the
middle of the screen with captions of what you said and what it says, a
big microphone for hands-free talk and a text box. Answers come from the
same tool-calling chat as Chat (memory, accounts, tools), are saved as a
"God Twin" chat, and spoken answers follow spoken questions.

Always listening is opt-in in its settings (on the screen and in
Settings > God Twin): wake word (Aries by default), sensitivity and
microphone. The listener pauses while Ares is listening or speaking. A
wake from the word or from Ares on the desktop opens the God Twin and
listens, or asks straight away what followed the word.

Prepared workflows from the old screen live under "Things Ares can do"
for Pro. The 3D Ares is shared with the desktop companion (AresAvatar)
and falls back to a glow when WebGL is not available. Chat no longer
switches itself to hands-free on a wake.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MXKTonahBSj3Td5TiTfgw7
…s removed

removeConnector calls the new mcp:beforeRemove hook while the stored
sign-in still exists; Pro uses it to revoke Google tokens. Removing
locally never waits on or fails for the provider. Pins Pro with the
account fixes (partial grants, expired sign-ins, revoke on remove).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MXKTonahBSj3Td5TiTfgw7
…c it

mcp:list reports each connector's live-only flag, and the connector
detail shows "Read live when you ask. Nothing from this account is saved
to memory." in place of Sync recent for those accounts. Pins Pro with
the account work: every account on its card with its access, sign in
again, confirmed remove, duplicate accounts, several Obsidian vaults and
no memory sync for live-only accounts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MXKTonahBSj3Td5TiTfgw7
…fixes the broken account

- The Connect your work step (onboarding and Integrations) says accounts
  are read live when asked and nothing is copied into memory, and that
  more than one can be added. A Pro build whose account cards fail to
  load says so instead of showing nothing.
- Reconnect on a work tool targets the account that needs it (an
  errored or switched-off row) rather than whichever row came first.
- The quick connection tests expected the old "Connected" label; they
  now match the account count the card shows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MXKTonahBSj3Td5TiTfgw7
…ot add one

settings.get connectors marks accounts (live-only connectors) with their
health (connected, needs sign-in, off), what they can read and what was
not granted (accounts:access, from Pro). The fields are optional, so an
older browser is unaffected. settings.set refuses to add an account's
internal identity URL as a web connector: accounts are signed in to on
the desktop. The rule is in the shared bridge-settings file, changed in
the browser extension's copy too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MXKTonahBSj3Td5TiTfgw7
…ell as answers

Everything the app called Assistant is now God Twin: the per-turn switch
in the chat composer ("God Twin on - can act with Web Use or Computer
Use"), its Pro dialog, and the Settings tool group. On the God Twin
screen, Ares can act too: with Pro its turns carry Web Use and Computer
Use, as Chat's God Twin switch does. Prepared workflows are offered up
front when nothing is going on, with All workflows below; a free build
answers and offers none.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MXKTonahBSj3Td5TiTfgw7
…ign stale tests

- useQuickConnection treats a missing connector list as none, instead of
  crashing the Connect your work section (and the screen around it).
- The theme default became Dark in the accounts work; its tests and the
  navigation test still expected System.
- The OAuth cancel test used Google Calendar, which the gallery now
  offers as a direct Google account; it runs on another OAuth connector.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MXKTonahBSj3Td5TiTfgw7
The tab, its settings, the chat composer's switch and its Pro dialog,
the Settings tool group and the saved conversation are now named God.
Code identifiers keep their god-twin names.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MXKTonahBSj3Td5TiTfgw7
The God screen is now a conversation: your messages and God's answers
(markdown, streaming) beside Ares, who shows listening, thinking and
speaking, with the mic under it.

- Context: a Right now card (time, next meeting, open to-dos, approvals
  waiting, accounts read), refreshed every minute from god:context, and
  the same context goes with every question (toolChat context, added to
  the system prompt).
- Proactive: God posts the day's plan, prep for a meeting starting
  within 20 minutes and approvals waiting, each once (god:posted), into
  the God chat; and offers what fits now (Prep me for the meeting, what
  to do first, review what is waiting, plan my day, what did I miss).

The rules are in shared/god/god-context.ts with unit tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MXKTonahBSj3Td5TiTfgw7
Ares is the default wake word; Aries, Aires and Ari's still wake it, as
whisper hears the name loosely. A wake word the user set is kept.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MXKTonahBSj3Td5TiTfgw7
…xed minute

A 5.6 GB model on a CPU-only machine took longer than the 60 second start
limit, so a healthy load was killed and every engine reported a failure.
The wait now has no total deadline: it ends when the model is ready, when
llama-server exits, or when it writes nothing for 60 seconds (180 on CUDA).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MXKTonahBSj3Td5TiTfgw7
…e clear

The companion's listen button always asked God to start listening, so
pressing it again while listening did nothing. It now toggles: Talk while
idle, Stop while listening.

The control bar used small symbols on a fixed light bar. It now has
labelled icons on 32px targets with a visible focus ring, on the app's
dark tokens, and Hide says where to show Ares again.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MXKTonahBSj3Td5TiTfgw7
@alichherawalla
alichherawalla marked this pull request as ready for review October 6, 2026 05:08
alichherawalla and others added 3 commits October 6, 2026 10:38
An offgrid_guide tool returns what Off Grid AI does (free, Pro, mobile,
extension) and the latest from GitHub releases, getoffgridai.co articles,
dev.to and r/off_grid_ai. Public pages only, read only when called.
God always offers "What's new in Off Grid AI".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MXKTonahBSj3Td5TiTfgw7
God, Ares on the desktop, the wake word and God's settings now need Pro;
a free build shows the upgrade screen. Chat mode stops listening: no wake
word, no hands-free loop, one dictation per mic tap. God reaches for
offgrid_guide when asked about Off Grid AI.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MXKTonahBSj3Td5TiTfgw7
Comment on lines +287 to +288
const lines = body
.replace(/<(script|style|svg|nav|button|form)\b[\s\S]*?<\/\1>/gi, '')
@sonarqubecloud

sonarqubecloud Bot commented Oct 7, 2026

Copy link
Copy Markdown

❌ The last analysis has failed.

See analysis details on SonarQube Cloud

@sonarqubecloud

sonarqubecloud Bot commented Oct 7, 2026

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants