Skip to content

Feat/omniroute provider - #914

Open
Fahmiady11 wants to merge 6 commits into
Louis-CFM:mainfrom
Fahmiady11:feat/omniroute-provider
Open

Fahmiady11 wants to merge 6 commits into
Louis-CFM:mainfrom
Fahmiady11:feat/omniroute-provider

Conversation

@Fahmiady11

@Fahmiady11 Fahmiady11 commented Oct 23, 2026 •

Copy link
Copy Markdown

OmniRoute chat provider (Mac)

  • New chat provider for OmniRoute, a self-hosted OpenAI-compatible gateway. Settings → Chat: URL (/v1 added when missing) + API key. The URL goes in the preferences, the key in the Keychain (omniroute-api-key).
  • Models from GET /v1/models (combos included). Chat streams through POST /v1/chat/completions, like DeepSeek, Qwen and Moonshot.
  • New pill ai_omniroute (AI for the chat, #22D3EE): a click opens the chat with OmniRoute. Configured once both the URL and the key are set.
  • Mac only. Windows and Android keep their own catalog. tests/PillFixture.swift and docs/INTEGRATIONS.md updated. 1 new string in the 14 languages.

Also: BotCanvasView split so it type-checks with Xcode 26.2 (same commit as in feat/spotify-lyrics). project.pbxproj regenerated with xcodegen.

Fahmiady11 and others added 6 commits October 23, 2026 23:36
The Canvas closure and the modifier chain on body were too long for the
type checker ("unable to type-check this expression in reasonable time").
The frame is drawn by drawFrame(_:size:) and the onChange handlers live
in a separate view property; nothing else changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Lyrics come from LRCLIB (lrclib.net: public, no account, no key), off
until the user turns them on in Settings → Integrations → Spotify.
A button in the Spotify card swaps the artwork and progress rows for
the previous, current and next line, following the song's position.
Closed, the compact island shows the line being sung in a capsule under
the notch and stays compact while the lyrics follow a playing song.

Asks only while the lyrics are open, once per track (30 kept in memory).
Ads and podcasts are skipped. GitHub build only, like the Spotify pill.
project.pbxproj regenerated with xcodegen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Canvas closure and the modifier chain on body were too long for the
type checker ("unable to type-check this expression in reasonable time").
The frame is drawn by drawFrame(_:size:) and the onChange handlers live
in a separate view property; nothing else changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
OmniRoute is a self-hosted OpenAI-compatible gateway. Settings → Chat
takes its URL (/v1 added when missing) and API key, saved together: the
URL in the preferences, the key in the Keychain (omniroute-api-key).
Models come from /v1/models, chat streams through /v1/chat/completions,
like DeepSeek, Qwen and Moonshot.

New pill ai_omniroute (AI for the chat): a click opens the chat with
OmniRoute; configured once both the URL and the key are set. Mac only:
Windows and Android keep their own catalog. PillFixture and
INTEGRATIONS.md updated. project.pbxproj regenerated with xcodegen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	NotchBuddy/Resources/Localizable.xcstrings

This branch has not been deployed

No deployments
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.

1 participant