Skip to content

feat: Local | With AI switch, small settings gear, quick provider/model selection - #65

Merged
TimInTech merged 13 commits into
mainfrom
feature/gui-modus-umschalter
Oct 17, 2026
Merged

TimInTech merged 13 commits into
mainfrom
feature/gui-modus-umschalter

Conversation

@TimInTech

Copy link
Copy Markdown
Owner

Summary

  • Settings gear is a small header control; the toolbar keeps four buttons.
  • Visible Local | With AI switch under the microphone, state line that opens the details popup, popup shows only fields that apply (action, style, AI provider, Whisper model) with a Done button.
  • Quick provider switch (OpenAI/OpenRouter) refuses without a usable key and never enters or leaves a custom endpoint; larger Whisper models ask before they may download.
  • AI recordings without a usable key are refused before recording.
  • Config.save fixes the file mode before replacing the config.
  • Offscreen usability check (scripts/gui_usability_check.py) with click budgets, accessibility gates and the gui-usability-review skill; README and screenshots updated.

Verification

  • 918 tests passed (WHISPER_GUI_TESTS=1 QT_QPA_PLATFORM=offscreen), 5 full runs per commit, 0 skipped.
  • Reviews: code-reviewer and security-reviewer MERGE-FÄHIG, Codex MERGE-FÄHIG on the previous round; round 3 findings addressed.
  • Not verified: live behaviour on the Wayland desktop (model download prompt over the popup).

Rollback

git revert the merge, or git switch main and restart blitztext-linux.

🤖 Generated with Claude Code

TimInTech and others added 9 commits October 17, 2026 17:49
…el switches in the main window popup

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…r findable, harden the usability driver

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- custom endpoint is never entered or left from the main window
- personal OpenAI key variable survives an OpenRouter round trip
- Config.save fixes the file mode before replacing the config
- model prompt closes the popup first, save errors no longer latch the error state
- tell Dictate and Local apart in the mode line

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… cannot be set

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ls, popup shows only fields that apply

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… exact workflow when the active side is clicked

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ed when it resizes, honest local tooltip

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-17T18:22:59.718781Z a5e85b7 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

Comment thread scripts/gui_usability_check.py Fixed
Comment thread scripts/gui_usability_check.py Fixed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a5e85b7224

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread app/blitztext_linux.py
Comment on lines +1088 to +1091
cfg.llm_provider = provider
if provider == "openrouter":
cfg.llm_base_url = "https://openrouter.ai/api/v1"
cfg.openai_api_key_env = "OPENROUTER_API_KEY"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Preserve a provider-compatible model when switching

When an OpenRouter configuration uses a normal namespaced model ID such as openai/gpt-4o, selecting OpenAI here changes the provider, URL, and key but leaves cfg.llm_model untouched; _build_llm_service() then sends that OpenRouter ID to OpenAI, causing every subsequent AI workflow to fail. The reverse switch can likewise send an OpenAI ID such as gpt-4o-mini to OpenRouter, whose catalog uses namespaced IDs. Preserve a model per provider or require selecting a compatible model during the switch. OpenRouter model IDs OpenAI model IDs

Useful? React with 👍 / 👎.

Comment thread app/blitztext_linux.py
Comment on lines +1093 to +1096
cfg.llm_base_url = ""
cfg.openai_api_key_env = getattr(
self, "_openai_key_env_memo", DEFAULTS["openai_api_key_env"]
)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Persist the remembered OpenAI key variable

If a user configured OpenAI with a nondefault variable such as WORK_OPENAI_KEY, switches to OpenRouter, and restarts before switching back, the old name existed only in _openai_key_env_memo while the saved config now contains OPENROUTER_API_KEY. After restart this fallback silently chooses OPENAI_API_KEY, so the valid custom key is forgotten and the quick switch back to OpenAI is refused. Store provider-specific key-variable names persistently rather than relying on an in-memory memo.

Useful? React with 👍 / 👎.

TimInTech and others added 4 commits October 17, 2026 20:30
…cannot resize it

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…temp dir

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@TimInTech
TimInTech merged commit ad4ea5b into main Oct 17, 2026
12 checks passed
@TimInTech
TimInTech deleted the feature/gui-modus-umschalter branch October 17, 2026 18:52
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.

2 participants