fix(settings): make OpenRouter cloud-policy block reactive to live state#163
Merged
Conversation
Derive the OpenRouter policy block from live Redux aiMode + privacy state via useMemo instead of the async assertCloudAiAllowed() check that only re-ran on mount / API-key change. Toggling "Local storage only" (default ON) or switching AI mode now updates the banner and the test-connection / catalog-fetch guards instantly instead of leaving OpenRouter looking permanently blocked. Split policyBlocked into distinct .mode / .localOnly messages, remove the now-orphaned policyBlocked key across all 11 locales (+ rebuilt bundles), and translate the new keys for de/es/fr/it/el/ja/pt/zh (ar/he stay EN stubs per RTL-stub policy). Tests drive the derived block via mutable mock settings state. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Thanks for using CodeAnt! 🎉We're free for open-source projects. if you're enjoying it, help us grow by sharing. Share on X · |
The reactive-policy refactor made the blocked-path catalog clear emit a fresh [] on every run. Combined with a per-render-unstable t (which re-runs the catalog effect each render), models' identity changed every render → infinite render loop: unit tests hung and the CI quality-gate vitest step failed (#163). Clear the catalog with a functional setModels update that returns the SAME reference when already empty, in both the policy-blocked and fetch-error paths. All 12 OpenRouterSection tests pass in ~20s. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
qnbs
added a commit
that referenced
this pull request
Jun 16, 2026
… CF Pages rename (#166) * chore(release): finalize v1.23.0 changelog + rename CF Pages project Promote the [Unreleased] changelog to [1.23.0] — 2026-06-16 and add this release's remaining entries (Local-First foundation #140, OpenRouter reactive policy #163, Local AI i18n #164, WorldScript icons + URL cleanup #165, and Dependabot maintenance). Rename the Cloudflare Pages project in wrangler.toml storycraft-studio → worldscript-studio (CF is not actively deployed; the project rename on the CF side is a later step). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(tauri): resolve Vite base from TAURI_ENV_PLATFORM (fixes blank desktop window) The Tauri build detected desktop mode via `TAURI_PLATFORM`, the Tauri 1.x env var that Tauri 2.x never sets. Every desktop build therefore fell through to the GitHub Pages base (`/WorldScript-Studio/`) and 404'd its hashed assets under `tauri://localhost/`, leaving only the native file/help menu over an empty webview on Windows/macOS. Base resolution now checks `TAURI_ENV_PLATFORM` (legacy `TAURI_PLATFORM` kept as a fallback) and is extracted into a pure, unit-tested `config/resolveViteBase.ts` so the regression cannot silently return. No runtime landmines: locale/community fetches use `import.meta.env.BASE_URL`, which resolves correctly under `./`. Linux `.deb`/AppImage still require webkit2gtk-4.1 (Ubuntu 22.04+) — a Tauri 2 platform minimum documented in the changelog, not a bug. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
User description
Problem
The OpenRouter settings section derived its cloud-policy block from an async
assertCloudAiAllowed('openrouter')call that only re-ran on mount / API-key change. Toggling Local storage only (default ON) or switching the AI mode never updated the banner — OpenRouter looked permanently blocked even after the user enabled cloud AI.Fix
aiMode+privacy.localStorageOnly) viauseMemo, so it reacts instantly to AI-mode / privacy changes.policyBlocked.mode(Local/Eco AI mode) andpolicyBlocked.localOnly(Local storage only).policyBlockedkey across all 11 locales + rebuilt bundles.de/es/fr/it/el/ja/pt/zh(ar/hestay EN stubs per RTL-stub policy).Tests
OpenRouterSection.test.tsxto drive the derived block via mutable mock settings state; asserts both the mode and local-only messages.i18n:check(2698 keys parity), unit test (9/9 reported pass).🤖 Generated with Claude Code
CodeAnt-AI Description
Make OpenRouter policy warnings react instantly and explain the exact block reason
What Changed
Impact
✅ Fewer confusing OpenRouter blocks✅ Clearer setup instructions for cloud AI✅ Faster feedback when privacy or AI mode changes💡 Usage Guide
Checking Your Pull Request
Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.
Talking to CodeAnt AI
Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:
This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.
Example
Preserve Org Learnings with CodeAnt
You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:
This helps CodeAnt AI learn and adapt to your team's coding style and standards.
Example
Retrigger review
Ask CodeAnt AI to review the PR again, by typing:
Check Your Repository Health
To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.