v0.6.1: LLM multi-provider, bookmark folders, free limits#7
v0.6.1: LLM multi-provider, bookmark folders, free limits#7devohmycode merged 3 commits intomasterfrom
Conversation
…lders - Clear all superflux_* localStorage keys on sign out and reload page - Reduce free feed limit from 50 to 20 - Reduce free folder limit from 10 to 5 - Regenerate pnpm-lock.yaml for new dependencies Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Review Summary by QodoMulti-provider LLM, bookmark/draw folders, reduced free limits, and logout data reset
WalkthroughsDescription• Add multi-provider LLM support (Groq, Mistral, Gemini) with automatic failover • Implement bookmark and draw document folder organization with drag-and-drop • Reduce free plan limits (feeds 50→20, folders 10→5) and lock editor/draw modes • Clear all localStorage data on logout and reload page for data privacy • Add draw document persistence with Supabase sync and content autosave Diagramflowchart LR
A["LLM Config"] -->|"Multi-provider<br/>Groq/Mistral/Gemini"| B["Cloud Failover"]
C["Bookmarks"] -->|"Folder Support"| D["BookmarkPanel"]
E["Draw Docs"] -->|"Folder Support"| F["SuperDraw"]
G["Free Plan"] -->|"Reduced Limits<br/>20 feeds, 5 folders"| H["Pro Lock"]
I["Logout"] -->|"Clear All<br/>localStorage"| J["Page Reload"]
B -->|"Auto-retry"| K["Successful Response"]
D -->|"Sync to Supabase"| L["Persistence"]
F -->|"Sync to Supabase"| L
File Changes1. src/services/llmService.ts
|
Code Review by Qodo
1. callMistral() raw fetch
|
|
Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (14)
✏️ Tip: You can disable in-progress messages and the fortune message in your review settings. Tip You can customize the high-level summary generated by CodeRabbit.Configure the ✨ Finishing Touches
🧪 Generate unit tests (beta)
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. Comment |
| const response = await fetch('https://api.mistral.ai/v1/chat/completions', { | ||
| method: 'POST', | ||
| headers: { | ||
| 'Content-Type': 'application/json', | ||
| 'Authorization': `Bearer ${config.mistralApiKey}`, | ||
| }, | ||
| body: JSON.stringify({ | ||
| model: config.mistralModel, | ||
| messages: [ | ||
| { role: 'system', content: systemPrompt }, | ||
| { role: 'user', content: userMessage }, | ||
| ], | ||
| temperature: 0.3, | ||
| }), | ||
| }); |
There was a problem hiding this comment.
1. callmistral() raw fetch 📘 Rule violation ⛯ Reliability
An external network request to Mistral is performed using raw fetch() instead of src/lib/tauriFetch.ts helpers. This can break requests in Tauri mode and bypass repository-wide header/proxy handling.
Agent Prompt
## Issue description
`callMistral()` performs an external HTTP request using raw `fetch()`, which violates the requirement to route external requests via `src/lib/tauriFetch.ts` helpers.
## Issue Context
This repo uses `tauriFetch` to ensure networking works in both Tauri and browser modes, and to centralize header/proxy handling.
## Fix Focus Areas
- src/services/llmService.ts[160-174]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
| <span className="ollama-status-text" style={{ fontSize: '11px', opacity: 0.7 }}> | ||
| Failover: {[ | ||
| llmConfig.groqApiKey && 'Groq', | ||
| llmConfig.mistralApiKey && 'Mistral', | ||
| llmConfig.geminiApiKey && 'Gemini', | ||
| ].filter(Boolean).join(' → ')} | ||
| </span> |
There was a problem hiding this comment.
2. failover text not french 📘 Rule violation ✓ Correctness
New UI text includes the English word Failover in Settings. This violates the requirement that modified UI strings be written in French.
Agent Prompt
## Issue description
Settings UI includes English text (`Failover:`), but UI strings must be written in French.
## Issue Context
The compliance checklist enforces French for new/modified UI strings.
## Fix Focus Areas
- src/components/SettingsModal.tsx[948-954]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
| @@ -1,4 +1,4 @@ | |||
| import { useState, useEffect, useCallback } from 'react'; | |||
| import { useState, useEffect, useCallback, useRef } from 'react'; | |||
There was a problem hiding this comment.
3. Unused import breaks build 🐞 Bug ✓ Correctness
BookmarkPanel.tsx imports useRef but never uses it; with noUnusedLocals: true this will fail TypeScript compilation.
Agent Prompt
### Issue description
`src/components/BookmarkPanel.tsx` imports `useRef` but does not use it. With `noUnusedLocals: true`, this causes a TypeScript compilation failure.
### Issue Context
The repo’s `tsconfig.app.json` enforces unused local checks.
### Fix Focus Areas
- src/components/BookmarkPanel.tsx[1-4]
- tsconfig.app.json[25-31]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
Summary
Test plan
🤖 Generated with Claude Code
Summary by CodeRabbit
Release Notes
New Features
Pro Features
Style