Conversation
📝 WalkthroughWalkthroughThis update reduces the free message limit for unlicensed users in chat, adds a new OpenAI model option, introduces informational tooltips with external documentation links in the AI and templates settings views, updates translation files with new entries and reference lines, and reorders properties in the model configuration JSON schema for consistency. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant SettingsUI
participant Shell
participant DocsSite
User->>SettingsUI: Hover/click tooltip icon (AI or Templates)
SettingsUI->>Shell: Open external documentation URL
Shell->>DocsSite: Launch browser with docs link
DocsSite-->>User: Display documentation page
Estimated code review effort🎯 2 (Simple) | ⏱️ ~8 minutes Possibly related PRs
Note 🔌 MCP (Model Context Protocol) integration is now available in Early Access!Pro users can now connect to remote MCP servers under the Integrations page to get reviews and chat conversations that understand additional development context. ✨ Finishing Touches
🧪 Generate unit tests
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. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
There was a problem hiding this comment.
cubic analysis
1 issue found across 7 files • Review in cubic
React with 👍 or 👎 to teach cubic. You can also tag @cubic-dev-ai to give feedback, ask questions, or re-run the review.
There was a problem hiding this comment.
Actionable comments posted: 4
🔭 Outside diff range comments (1)
apps/desktop/src/components/right-panel/hooks/useChatLogic.ts (1)
244-256: Free limit gating mismatches the user-facing copy; gate by user turns (3) instead of total messages (6).messages.length counts both user and assistant messages. If the intent is “3 user messages,” gate by user messages to avoid confusion and magic numbers.
Apply:
- if (messages.length >= 6 && !getLicense.data?.valid) { + if (messages.filter(m => m.isUser).length >= 3 && !getLicense.data?.valid) { if (userId) { await analyticsCommands.event({ event: "pro_license_required_chat", distinct_id: userId, }); } - await message("3 messages are allowed per conversation for free users.", { + await message("3 messages are allowed per conversation for free users.", { title: "Pro License Required", kind: "info", }); return; }Optional: hoist 3 to a named constant (e.g., FREE_USER_TURN_LIMIT) to avoid drift between logic and text.
🧹 Nitpick comments (2)
apps/desktop/src/components/settings/views/ai.tsx (1)
831-850: Add an accessible label to the info icon button.Icon-only buttons should have an aria-label (and optionally title) for screen readers.
- <Button + <Button size="icon" variant="ghost" onClick={() => open("https://docs.hyprnote.com/features/ai-autonomy")} className="h-8 w-8" + aria-label="Learn more about AI autonomy" + title="Learn more about AI autonomy" > <InfoIcon className="w-4 h-4" /> </Button>Optional: track clicks with analytics (e.g., autonomy_doc_opened) to measure feature discovery.
apps/desktop/src/locales/ko/messages.po (1)
468-472: Fill key template-related ko translations for a coherent Settings experience.These strings are now prominent in Templates settings. Suggested translations:
#: src/components/settings/views/templates.tsx:319 #: src/components/settings/components/templates-sidebar.tsx:68 msgid "Built-in Templates" -msgstr "" +msgstr "내장 템플릿" #: src/components/settings/views/templates.tsx:309 msgid "Create your first template to get started" -msgstr "" +msgstr "시작하려면 첫 번째 템플릿을 만들어 보세요" #: src/components/settings/views/templates.tsx:240 msgid "Loading templates..." -msgstr "" +msgstr "템플릿 불러오는 중..." #: src/components/settings/views/templates.tsx:306 msgid "No templates yet" -msgstr "" +msgstr "아직 템플릿이 없습니다" #: src/components/settings/views/templates.tsx:255 #: src/components/settings/components/templates-sidebar.tsx:45 msgid "Your Templates" -msgstr "" +msgstr "내 템플릿"Also applies to: 647-650, 979-982, 1108-1111, 1622-1666
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (7)
apps/desktop/src/components/right-panel/hooks/useChatLogic.ts(1 hunks)apps/desktop/src/components/settings/components/ai/llm-custom-view.tsx(1 hunks)apps/desktop/src/components/settings/views/ai.tsx(4 hunks)apps/desktop/src/components/settings/views/templates.tsx(3 hunks)apps/desktop/src/locales/en/messages.po(24 hunks)apps/desktop/src/locales/ko/messages.po(24 hunks)owhisper/schema.json(4 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
**/*.{js,ts,tsx,rs}
⚙️ CodeRabbit Configuration File
**/*.{js,ts,tsx,rs}: 1. No error handling.
2. No unused imports, variables, or functions.
3. For comments, keep it minimal. It should be about "Why", not "What".
Files:
apps/desktop/src/components/right-panel/hooks/useChatLogic.tsapps/desktop/src/components/settings/views/ai.tsxapps/desktop/src/components/settings/components/ai/llm-custom-view.tsxapps/desktop/src/components/settings/views/templates.tsx
🔇 Additional comments (6)
owhisper/schema.json (1)
50-55: Consistent property ordering across model variants looks good.Moving "type" first improves readability and UI generation consistency without changing validation semantics. No issues spotted.
Also applies to: 62-67, 77-85, 108-119, 131-145
apps/desktop/src/components/settings/views/ai.tsx (1)
5-7: Imports for tooltip and shell open are correctly added and used.Also applies to: 19-19, 29-29
apps/desktop/src/components/settings/views/templates.tsx (1)
4-6: New tooltip/link imports are used and look correct.Also applies to: 15-16
apps/desktop/src/locales/ko/messages.po (1)
259-262: Approve and resolve: localization wiring is correct
All newly added messages—“Learn more about AI autonomy,” “Learn more about templates,” “Autonomy Selector,” and “Control how autonomous the AI enhancement should be”—are present in the React components, the English catalog (with matchingmsgstr), and the Korean catalog (with emptymsgstrentries ready for translation). No mismatches or missing entries detected.apps/desktop/src/locales/en/messages.po (2)
935-938: LGTM: new tooltip strings added with translations.“Learn more about AI autonomy” and “Learn more about templates” are present and correctly translated for EN.
Also applies to: 943-946
443-446: Locale Parity Verified for AI Autonomy & Template StringsAll four new msgids are present in both English and Korean locales with matching entries:
- “Learn more about AI autonomy” at line 936
- “Learn more about templates” at line 944
- “Autonomy Selector” at line 444
- “Control how autonomous the AI enhancement should be” at line 619
No discrepancies found—approving these changes.
| <div className="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"> | ||
| <Trans>Your Templates</Trans> | ||
| </div> | ||
| <Tooltip> | ||
| <TooltipTrigger asChild> | ||
| <Button | ||
| size="icon" | ||
| variant="ghost" | ||
| onClick={() => open("https://docs.hyprnote.com/features/templates.mdx")} | ||
| className="h-8 w-8" | ||
| > | ||
| <InfoIcon className="w-4 h-4" /> | ||
| </Button> | ||
| </TooltipTrigger> | ||
| <TooltipContent> | ||
| <Trans>Learn more about templates</Trans> | ||
| </TooltipContent> | ||
| </Tooltip> |
There was a problem hiding this comment.
💡 Verification agent
🧩 Analysis chain
Use an accessible label and verify the docs URL (avoid .mdx if the site doesn’t serve extensions).
- Add aria-label/title for accessibility.
- The link ends with .mdx; many docs sites don’t serve that path publicly. Prefer the route without extension if available.
- <Button
+ <Button
size="icon"
variant="ghost"
- onClick={() => open("https://docs.hyprnote.com/features/templates.mdx")}
+ onClick={() => open("https://docs.hyprnote.com/features/templates")}
className="h-8 w-8"
+ aria-label="Learn more about templates"
+ title="Learn more about templates"
>
<InfoIcon className="w-4 h-4" />
</Button>Check which URL returns 200/301:
🏁 Script executed:
#!/bin/bash
set -e
for url in \
"https://docs.hyprnote.com/features/templates.mdx" \
"https://docs.hyprnote.com/features/templates"
do
echo "Testing: $url"
curl -sI "$url" | sed -n '1,3p'
echo
doneLength of output: 776
Add an accessible label to the Info button and use the extension-less docs URL
The .mdx URL does work (HTTP 200), and the extension-less route returns a 307 redirect, so you can safely link to:
https://docs.hyprnote.com/features/templates
This masks the file extension and still resolves correctly. Also, for screen-reader users, add both an aria-label and a title to the icon button.
• File: apps/desktop/src/components/settings/views/templates.tsx
Lines: ~259 (the <Button size="icon"…> block)
<Button
size="icon"
variant="ghost"
- onClick={() => open("https://docs.hyprnote.com/features/templates.mdx")}
+ onClick={() => open("https://docs.hyprnote.com/features/templates")}
className="h-8 w-8"
+ aria-label="Learn more about templates"
+ title="Learn more about templates"
>
<InfoIcon className="w-4 h-4" />
</Button>📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| <div className="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"> | |
| <Trans>Your Templates</Trans> | |
| </div> | |
| <Tooltip> | |
| <TooltipTrigger asChild> | |
| <Button | |
| size="icon" | |
| variant="ghost" | |
| onClick={() => open("https://docs.hyprnote.com/features/templates.mdx")} | |
| className="h-8 w-8" | |
| > | |
| <InfoIcon className="w-4 h-4" /> | |
| </Button> | |
| </TooltipTrigger> | |
| <TooltipContent> | |
| <Trans>Learn more about templates</Trans> | |
| </TooltipContent> | |
| </Tooltip> | |
| <div className="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"> | |
| <Trans>Your Templates</Trans> | |
| </div> | |
| <Tooltip> | |
| <TooltipTrigger asChild> | |
| <Button | |
| size="icon" | |
| variant="ghost" | |
| onClick={() => open("https://docs.hyprnote.com/features/templates")} | |
| className="h-8 w-8" | |
| aria-label="Learn more about templates" | |
| title="Learn more about templates" | |
| > | |
| <InfoIcon className="w-4 h-4" /> | |
| </Button> | |
| </TooltipTrigger> | |
| <TooltipContent> | |
| <Trans>Learn more about templates</Trans> | |
| </TooltipContent> | |
| </Tooltip> |
🤖 Prompt for AI Agents
In apps/desktop/src/components/settings/views/templates.tsx around line 259,
update the Button component's onClick URL to
"https://docs.hyprnote.com/features/templates" without the .mdx extension to use
the cleaner route. Also, add an accessible label by including both an aria-label
and a title attribute on the Button to improve screen reader accessibility,
describing the button's purpose such as "Learn more about templates".
Summary by cubic
Added GPT-5 model option and info links for the template and autonomy selectors in settings. Updated free user chat limits and improved schema field ordering.