From 57de78cf8964ab232aa3ed952a989366b9aa0bfb Mon Sep 17 00:00:00 2001 From: Yuebi Date: Sun, 3 Aug 2025 12:20:17 +0800 Subject: [PATCH 1/7] chore(locales): update newest zh-CN translations --- locales/app/zh-CN.json | 18 +++++ locales/mobile/default/zh-CN.json | 4 +- locales/settings/zh-CN.json | 108 ++++++++++++++++++++++++++++++ 3 files changed, 129 insertions(+), 1 deletion(-) diff --git a/locales/app/zh-CN.json b/locales/app/zh-CN.json index 8e76b9be9f..ceb6a9d697 100644 --- a/locales/app/zh-CN.json +++ b/locales/app/zh-CN.json @@ -22,6 +22,9 @@ "achievement.product_hunt_vote_description": "在 Product Hunt 上给 Folo 投票", "activation.activate": "激活", "activation.description": "在公测阶段,预览版用户使用此功能会受限。", + "activation.plan.description": "您当前正在使用免费版本。升级以解锁更多功能。", + "activation.plan.title": "升级计划", + "activation.plan.upgrade": "升级", "activation.title": "邀请码", "ai_daily.header": "AI 日报", "ai_daily.no_found": "在此期间未找到 AI 新闻。", @@ -115,11 +118,13 @@ "entry_actions.deleted": "已删除", "entry_actions.export_as_pdf": "导出为 PDF", "entry_actions.failed_to_delete": "删除失败", + "entry_actions.failed_to_login_to_qbittorrent": "登录 qBittorrent 失败", "entry_actions.failed_to_save_to_cubox": "保存到 Cubox 失败。", "entry_actions.failed_to_save_to_eagle": "保存到 Eagle 失败。", "entry_actions.failed_to_save_to_instapaper": "保存到 Instapaper 失败。", "entry_actions.failed_to_save_to_obsidian": "保存到 Obsidian 失败。", "entry_actions.failed_to_save_to_outline": "保存到 Outline 失败。", + "entry_actions.failed_to_save_to_qbittorrent": "使用 qBittorrent 下载失败", "entry_actions.failed_to_save_to_readeck": "保存到 Readeck 失败。", "entry_actions.failed_to_save_to_readwise": "保存到 Readwise 失败。", "entry_actions.failed_to_save_to_zotero": "保存到 Zotero 失败", @@ -129,6 +134,7 @@ "entry_actions.mark_as_read": "标记为已读/未读", "entry_actions.mark_as_unread": "标记为未读", "entry_actions.mark_below_as_read": "将以下标记为已读", + "entry_actions.no_bittorrent_urls_found": "此条目中未找到 BitTorrent 链接", "entry_actions.open_in_browser": "在{{which}}打开", "entry_actions.recent_reader": "最近阅读者:", "entry_actions.save_media_to_eagle": "保存到 Eagle", @@ -136,6 +142,7 @@ "entry_actions.save_to_instapaper": "保存到 Instapaper", "entry_actions.save_to_obsidian": "保存到 Obsidian", "entry_actions.save_to_outline": "保存到 Outline", + "entry_actions.save_to_qbittorrent": "使用 qBittorrent 下载", "entry_actions.save_to_readeck": "保存到 Readeck", "entry_actions.save_to_readwise": "保存到 Readwise", "entry_actions.save_to_zotero": "保存到 Zotero", @@ -144,6 +151,7 @@ "entry_actions.saved_to_instapaper": "已保存到 Instapaper。", "entry_actions.saved_to_obsidian": "已保存到 Obsidian。", "entry_actions.saved_to_outline": "已保存到 Outline。", + "entry_actions.saved_to_qbittorrent": "种子已添加到 qBittorrent", "entry_actions.saved_to_readeck": "已保存到 Readeck。", "entry_actions.saved_to_readwise": "已保存到 Readwise。", "entry_actions.saved_to_zotero": "已保存到 Zotero。", @@ -157,6 +165,7 @@ "entry_actions.unstarred": "取消收藏", "entry_actions.view_source_content": "查看原文", "entry_actions.view_source_content_description": "尝试以源网站的风格阅读此文章的内容", + "entry_actions.warn_info_ai_chat_pinned_tip": "此功能目前处仍处于测试阶段,仅少数用户可使用。", "entry_actions.warn_info_for_desktop": "此功能只在桌面端可用", "entry_column.filtered_content_tip": "部分内容已被过滤隐藏。", "entry_column.filtered_content_tip_2": "除了上面显示的内容外,还有一些被过滤的内容。", @@ -224,6 +233,8 @@ "feed_form.follow": "订阅", "feed_form.follow_with_fee": "使用 {{fee}} Power 订阅", "feed_form.followed": "🎉 订阅成功", + "feed_form.hide_from_timeline": "在时间线上隐藏", + "feed_form.hide_from_timeline_description": "开启后,此订阅将不再显示在主时间线中", "feed_form.private_follow": "私密订阅", "feed_form.private_follow_description": "开启后,此订阅不再显示在个人资料页面。", "feed_form.retry": "重试", @@ -322,6 +333,10 @@ "register.email": "邮件地址", "register.login": "登录", "register.password": "密码", + "register.referral.days": "使用推荐码注册以获得{{days}}天的专业版预览", + "register.referral.description": "使用推荐码注册以获得几日额外的专业版预览", + "register.referral.invalid": "推荐码无效", + "register.referral.label": "推荐码", "register.submit": "创建账户", "resize.tooltip.double_click_to_collapse": "双击重置为默认大小", "resize.tooltip.drag_to_resize": "拖动以调整大小", @@ -431,10 +446,13 @@ "user_button.preferences": "设置", "user_button.profile": "个人资料", "user_button.zen_mode": "禅定模式", + "user_profile.about": "关于", "user_profile.close": "关闭", + "user_profile.created_lists": "创建的列表", "user_profile.edit": "编辑", "user_profile.loading": "加载中", "user_profile.share": "分享", + "user_profile.subscriptions": "订阅", "user_profile.toggle_item_style": "切换列表样式", "words.achievement": "成就", "words.actions": "自动化", diff --git a/locales/mobile/default/zh-CN.json b/locales/mobile/default/zh-CN.json index 884061c4c0..4f8117a174 100644 --- a/locales/mobile/default/zh-CN.json +++ b/locales/mobile/default/zh-CN.json @@ -63,8 +63,10 @@ "signin.sign_up_to": "注册", "subscription_form.category": "分类", "subscription_form.category_description": "默认情况下,你的订阅将按网站域名分组。", + "subscription_form.hide_from_timeline": "在时间线中隐藏", + "subscription_form.hide_from_timeline_description": "开启后,此订阅将不再显示在主时间线中", "subscription_form.private_follow": "私密订阅", - "subscription_form.private_follow_description": "开启后,此订阅不再显示在个人资料页面。", + "subscription_form.private_follow_description": "开启后,此订阅将不再显示在个人资料页面。", "subscription_form.title": "标题", "subscription_form.title_description": "此订阅源的自定义标题,留空则使用默认标题。", "subscription_form.view": "视图", diff --git a/locales/settings/zh-CN.json b/locales/settings/zh-CN.json index c685dd38f4..85bf108407 100644 --- a/locales/settings/zh-CN.json +++ b/locales/settings/zh-CN.json @@ -83,6 +83,10 @@ "actions.saveSuccess": "🎉 规则已保存", "actions.sidebar_title": "自动化", "actions.title": "自动化", + "ai.personalize.prompt.description": "自定义 AI 生成内容时的提示词", + "ai.personalize.prompt.label": "个性化提示词", + "ai.personalize.title": "AI 个性化设置", + "ai.shortcuts.title": "AI 快捷操作", "appearance.accent_color.description": "选择应用界面的强调色", "appearance.accent_color.label": "强调色", "appearance.code_highlight_theme.description": "调整代码高亮主题", @@ -115,7 +119,12 @@ "appearance.font_scaling.content_different.description": "为文章内容设置独立的字体大小", "appearance.font_scaling.content_different.label": "内容使用独立字体大小", "appearance.font_scaling.content_size.description": "设置文章内容的字体大小", + "appearance.font_scaling.content_size.l": "大号", "appearance.font_scaling.content_size.label": "内容字体大小", + "appearance.font_scaling.content_size.m": "中号", + "appearance.font_scaling.content_size.s": "小号", + "appearance.font_scaling.content_size.xl": "特大号", + "appearance.font_scaling.content_size.xs": "极小号", "appearance.font_scaling.scale.description": "调整字体大小缩放比例", "appearance.font_scaling.scale.label": "字体缩放", "appearance.font_scaling.size.l": "大", @@ -128,6 +137,7 @@ "appearance.font_scaling.title": "字体缩放", "appearance.fonts": "字体", "appearance.general": "通用", + "appearance.global_font.default": "默认", "appearance.global_font_size.description": "调整整体文字大小", "appearance.global_font_size.label": "全局字体大小", "appearance.guess_code_language.description": "使用模型推断未标记代码块的编程语言。", @@ -315,6 +325,12 @@ "general.translation_mode.label": "翻译偏好", "general.translation_mode.translation-only": "仅译文", "general.voices": "声音", + "integration.builtin.title": "内置集成", + "integration.categories.custom_integrations": "自定义集成", + "integration.categories.download_tools": "下载工具", + "integration.categories.knowledge_management": "知识管理", + "integration.categories.media_tools": "媒体工具", + "integration.categories.reading_services": "阅读服务", "integration.cubox.autoMemo.description": "自动使用 Memo 模式保存选中的文本到 Cubox。", "integration.cubox.autoMemo.label": "自动 Memo 模式", "integration.cubox.enable.description": "显示「保存到 Cubox」按钮(如果可用)。", @@ -322,6 +338,75 @@ "integration.cubox.title": "Cubox", "integration.cubox.token.description": "请输入完整的 Cubox API URL,格式如:https://cubox.pro/c/api/save/xxxxxxxxx。你可以在此获取:", "integration.cubox.token.label": "Cubox API URL", + "integration.custom_integrations.actions.delete": "删除", + "integration.custom_integrations.actions.disable": "禁用", + "integration.custom_integrations.actions.edit": "编辑", + "integration.custom_integrations.actions.enable": "启用", + "integration.custom_integrations.add.button": "添加", + "integration.custom_integrations.create.error": "创建失败", + "integration.custom_integrations.create.success": "创建成功", + "integration.custom_integrations.create.title": "创建自定义集成", + "integration.custom_integrations.delete.success": "删除成功", + "integration.custom_integrations.edit.error": "编辑失败", + "integration.custom_integrations.edit.success": "编辑成功", + "integration.custom_integrations.edit.title": "编辑自定义集成", + "integration.custom_integrations.enable.description": "启用此自定义集成", + "integration.custom_integrations.enable.label": "启用", + "integration.custom_integrations.form.body.description": "请求体内容", + "integration.custom_integrations.form.body.label": "请求体", + "integration.custom_integrations.form.body.placeholder": "输入请求体内容", + "integration.custom_integrations.form.fetch_template.label": "获取模板", + "integration.custom_integrations.form.headers.add": "添加请求头", + "integration.custom_integrations.form.headers.description": "自定义请求头", + "integration.custom_integrations.form.headers.key_placeholder": "键名", + "integration.custom_integrations.form.headers.label": "请求头", + "integration.custom_integrations.form.headers.value_placeholder": "键值", + "integration.custom_integrations.form.icon.description": "选择集成图标", + "integration.custom_integrations.form.icon.label": "图标", + "integration.custom_integrations.form.method.description": "选择 HTTP 方法", + "integration.custom_integrations.form.method.label": "方法", + "integration.custom_integrations.form.name.label": "名称", + "integration.custom_integrations.form.name.placeholder": "输入集成名称", + "integration.custom_integrations.form.scheme.description": "URL 参数模板", + "integration.custom_integrations.form.scheme.examples.title": "示例", + "integration.custom_integrations.form.scheme.label": "URL 参数", + "integration.custom_integrations.form.scheme.placeholder": "输入 URL 参数模板", + "integration.custom_integrations.form.type.description": "选择集成类型", + "integration.custom_integrations.form.type.http": "HTTP 集成", + "integration.custom_integrations.form.type.label": "类型", + "integration.custom_integrations.form.type.url_scheme": "URL 方案", + "integration.custom_integrations.form.url.description": "目标 URL 地址", + "integration.custom_integrations.form.url.label": "URL", + "integration.custom_integrations.form.url.placeholder": "输入目标 URL", + "integration.custom_integrations.icons.bookmark": "书签", + "integration.custom_integrations.icons.document": "文档", + "integration.custom_integrations.icons.download": "下载", + "integration.custom_integrations.icons.external_link": "外部链接", + "integration.custom_integrations.icons.link": "链接", + "integration.custom_integrations.icons.picture": "图片", + "integration.custom_integrations.icons.save": "保存", + "integration.custom_integrations.icons.send": "发送", + "integration.custom_integrations.icons.share": "分享", + "integration.custom_integrations.icons.star": "收藏", + "integration.custom_integrations.list.empty.button": "创建首个集成", + "integration.custom_integrations.list.empty.description": "创建自定义集成以扩展功能", + "integration.custom_integrations.list.empty.title": "尚无自定义集成", + "integration.custom_integrations.list.title": "自定义集成列表", + "integration.custom_integrations.modal.description": "配置自定义集成参数", + "integration.custom_integrations.placeholders.click_to_copy": "点击复制", + "integration.custom_integrations.placeholders.description": "描述文本", + "integration.custom_integrations.placeholders.help": "帮助文本", + "integration.custom_integrations.preview.body": "请求体", + "integration.custom_integrations.preview.failed": "预览失败", + "integration.custom_integrations.preview.generating": "正在生成预览...", + "integration.custom_integrations.preview.headers": "请求头", + "integration.custom_integrations.preview.placeholders": "可用占位符", + "integration.custom_integrations.preview.request": "请求", + "integration.custom_integrations.preview.title": "请求预览", + "integration.custom_integrations.status.disabled": "已禁用", + "integration.custom_integrations.title": "自定义集成", + "integration.custom_integrations.validation.invalid": "模板有错误", + "integration.custom_integrations.validation.valid": "模板有效", "integration.eagle.enable.description": "显示「保存到 Eagle」按钮(如果可用)。", "integration.eagle.enable.label": "启用", "integration.eagle.title": "Eagle", @@ -352,6 +437,13 @@ "integration.outline.title": "Outline", "integration.outline.token.description": "在你的 Outline 账户设置中获取。", "integration.outline.token.label": "Outline API 密钥", + "integration.qbittorrent.enable.description": "显示「使用 qBittorrent 下载」按钮(如果可用)", + "integration.qbittorrent.enable.label": "启用", + "integration.qbittorrent.host.description": "你的 qBittorrent WebUI 地址,例如 http://localhost:8080", + "integration.qbittorrent.host.label": "qBittorrent 主机", + "integration.qbittorrent.password.label": "qBittorrent 密码", + "integration.qbittorrent.title": "qBittorrent", + "integration.qbittorrent.username.label": "qBittorrent 用户名", "integration.readeck.enable.description": "显示「保存到 Readeck」按钮(如果可用)。", "integration.readeck.enable.label": "启用", "integration.readeck.endpoint.description": "此地址为「https://<你的 READECK 域名>」。", @@ -365,7 +457,10 @@ "integration.readwise.token.description": "在这里获取令牌", "integration.readwise.token.label": "Readwise 访问令牌", "integration.save_ai_summary_as_description.label": "将 AI 总结保存为描述", + "integration.search.placeholder": "搜索集成...", "integration.sidebar_title": "第三方接入", + "integration.status.configured": "已配置", + "integration.status.enabled": "已启用", "integration.tip": "提示:敏感数据仅在本地存储,不会被收集或上传到云端。", "integration.title": "第三方接入", "integration.use_browser_fetch.description": "为自定义集成使用浏览器 fetch API 而不是 Electron 原生 fetch。启用以获得更好的网络兼容性,禁用以提高安全性。", @@ -443,6 +538,7 @@ "notifications.test": "测试通知", "notifications.test_success": "测试通知发送成功。", "notifications.token": "客户端令牌", + "plan.description": "从第一天起享受所有专业版功能——新用户可获得完整试用,只需邀请朋友或小额支持贡献即可保留这些权益。了解更多。", "privacy.privacy": "隐私政策", "privacy.terms": "服务条款", "profile.avatar.cropInstructions": "拖动裁剪区域以调整头像", @@ -516,6 +612,13 @@ "profile.two_factor.no_password": "启用双重身份验证之前需要设置密码。", "profile.updateSuccess": "个人资料已更新。", "profile.update_password_success": "密码已更新。", + "referral.description": "与朋友分享 Folo!延长你的专业版试用期和未来权益,你的朋友也可以获得 45 天的试用期。了解更多。", + "referral.invited_friend_status.pending": "待验证", + "referral.invited_friend_status.valid": "已验证", + "referral.link": "你的邀请链接:", + "referral.pro_status.preview": "你的专业版试用状态:将于 {{dateString}} 到期(剩余 {{daysLeft}} 天)", + "referral.pro_status.trial": "当前等级:免费版", + "referral.pro_status.user": "你的专业版试用状态:活跃中", "rsshub.addModal.access_key_label": "访问密钥(可选)", "rsshub.addModal.add": "添加", "rsshub.addModal.base_url_label": "根 URL", @@ -549,6 +652,7 @@ "titles.about": "关于", "titles.account": "账户", "titles.actions": "自动化", + "titles.ai": "AI", "titles.appearance": "外观", "titles.data_control": "数据控制", "titles.feeds": "订阅源", @@ -557,8 +661,12 @@ "titles.invitations": "邀请", "titles.lists": "列表", "titles.notifications": "通知", + "titles.plan.long": "升级你的计划", + "titles.plan.short": "计划", "titles.power": "Power", "titles.privacy": "隐私", + "titles.referral.long": "邀请好友以延长专业版有效期", + "titles.referral.short": "邀请并赚取", "titles.shortcuts": "快捷键", "titles.sign_out": "登出", "wallet.balance.activePoints": "活跃度", From 4f46a605dcc65c65880a68ab2bccf209168fc28c Mon Sep 17 00:00:00 2001 From: Yuebi Date: Sun, 10 Aug 2025 15:08:47 +0800 Subject: [PATCH 2/7] feat(subscription-column): Add a search button to the top of the subscription column --- .../subscription-column/SubscriptionColumnHeader.tsx | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/apps/desktop/layer/renderer/src/modules/subscription-column/SubscriptionColumnHeader.tsx b/apps/desktop/layer/renderer/src/modules/subscription-column/SubscriptionColumnHeader.tsx index f29d0f2d32..99b8e7af2c 100644 --- a/apps/desktop/layer/renderer/src/modules/subscription-column/SubscriptionColumnHeader.tsx +++ b/apps/desktop/layer/renderer/src/modules/subscription-column/SubscriptionColumnHeader.tsx @@ -165,5 +165,14 @@ const SearchTrigger = () => { { preventDefault: true }, ) - return null + const t = useI18n() + return ( + setAppSearchOpen(true)} + > + + + ) } From 179a4a104ff1dfeb8c897d054c76b52ba4ee3f84 Mon Sep 17 00:00:00 2001 From: Yuebi Date: Sun, 10 Aug 2025 15:37:23 +0800 Subject: [PATCH 3/7] docs(changelog): update next.md --- apps/desktop/changelog/next.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/desktop/changelog/next.md b/apps/desktop/changelog/next.md index 8f5eac449a..6659c8b01d 100644 --- a/apps/desktop/changelog/next.md +++ b/apps/desktop/changelog/next.md @@ -2,6 +2,8 @@ ## Shiny new things +- add a button to open the search panel (#4296) + ## Improvements ## No longer broken From 0a98f3abe580e5cf28879e2d3c1a36a4f7ae003a Mon Sep 17 00:00:00 2001 From: Yuebi Date: Tue, 12 Aug 2025 00:53:27 +0800 Subject: [PATCH 4/7] =?UTF-8?q?feat(=E7=95=8C=E9=9D=A2=E8=AE=BE=E7=BD=AE):?= =?UTF-8?q?=20=E6=B7=BB=E5=8A=A0=E4=B8=BB=E9=A1=B5=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E6=8C=89=E9=92=AE=E6=98=BE=E7=A4=BA=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在界面设置中添加可配置选项,允许用户选择是否在主页面显示搜索按钮。同时为多语言环境添加相应的翻译文本。 --- apps/desktop/layer/renderer/src/atoms/settings/ui.ts | 1 + .../renderer/src/modules/settings/tabs/appearance.tsx | 4 ++++ .../subscription-column/SubscriptionColumnHeader.tsx | 8 +++++--- locales/settings/en.json | 2 ++ locales/settings/ja.json | 2 ++ locales/settings/zh-CN.json | 2 ++ locales/settings/zh-TW.json | 2 ++ 7 files changed, 18 insertions(+), 3 deletions(-) diff --git a/apps/desktop/layer/renderer/src/atoms/settings/ui.ts b/apps/desktop/layer/renderer/src/atoms/settings/ui.ts index c864fe8381..36bcc955fd 100644 --- a/apps/desktop/layer/renderer/src/atoms/settings/ui.ts +++ b/apps/desktop/layer/renderer/src/atoms/settings/ui.ts @@ -18,6 +18,7 @@ export const createDefaultUISettings = (): UISettings => ({ // Discover discoverLanguage: getDefaultLanguage().startsWith("zh") ? "all" : "eng", accentColor: "orange", + showSearchButton: true, }) const zenModeAtom = atom(false) diff --git a/apps/desktop/layer/renderer/src/modules/settings/tabs/appearance.tsx b/apps/desktop/layer/renderer/src/modules/settings/tabs/appearance.tsx index f436e00328..f9223be055 100644 --- a/apps/desktop/layer/renderer/src/modules/settings/tabs/appearance.tsx +++ b/apps/desktop/layer/renderer/src/modules/settings/tabs/appearance.tsx @@ -75,6 +75,10 @@ export const SettingAppearance = () => { label: t("appearance.unread_count.sidebar.title"), description: t("appearance.unread_count.sidebar.description"), }), + defineItem("showSearchButton", { + label: t("appearance.show_search_button.label"), + description: t("appearance.show_search_button.description"), + }), defineItem("hideExtraBadge", { label: t("appearance.hide_extra_badge.label"), description: t("appearance.hide_extra_badge.description"), diff --git a/apps/desktop/layer/renderer/src/modules/subscription-column/SubscriptionColumnHeader.tsx b/apps/desktop/layer/renderer/src/modules/subscription-column/SubscriptionColumnHeader.tsx index 99b8e7af2c..def5415976 100644 --- a/apps/desktop/layer/renderer/src/modules/subscription-column/SubscriptionColumnHeader.tsx +++ b/apps/desktop/layer/renderer/src/modules/subscription-column/SubscriptionColumnHeader.tsx @@ -13,7 +13,7 @@ import { Link } from "react-router" import { toast } from "sonner" import { setAppSearchOpen } from "~/atoms/app" -import { useIsZenMode, useSetZenMode } from "~/atoms/settings/ui" +import { useIsZenMode, useSetZenMode, useUISettingKey } from "~/atoms/settings/ui" import { setTimelineColumnShow, useTimelineColumnShow } from "~/atoms/sidebar" import { DropdownMenu, @@ -166,7 +166,9 @@ const SearchTrigger = () => { ) const t = useI18n() - return ( + const showSearchButton = useUISettingKey("showSearchButton") + + return showSearchButton ? ( { > - ) + ) : null } diff --git a/locales/settings/en.json b/locales/settings/en.json index aca78d263b..3040090005 100644 --- a/locales/settings/en.json +++ b/locales/settings/en.json @@ -158,6 +158,8 @@ "appearance.reduce_motion.description": "Reducing the Motion of Elements to Improve Performance and Reduce Energy Consumption", "appearance.reduce_motion.label": "Reduce Motion", "appearance.save": "Save", + "appearance.show_search_button.description": "Whether to display the search button on the homepage", + "appearance.show_search_button.label": "Show Search Button", "appearance.sidebar": "Sidebar", "appearance.sidebar_title": "Appearance", "appearance.subscription_list.title": "Subscription List", diff --git a/locales/settings/ja.json b/locales/settings/ja.json index 9a492861a3..7cbb0e51a6 100644 --- a/locales/settings/ja.json +++ b/locales/settings/ja.json @@ -158,6 +158,8 @@ "appearance.reduce_motion.description": "要素の動きを減らして、パフォーマンスを向上させ、エネルギー消費を抑えます", "appearance.reduce_motion.label": "動きを減らす", "appearance.save": "保存", + "appearance.show_search_button.description": "ホームページに検索ボタンを表示するかどうか", + "appearance.show_search_button.label": "検索ボタンを表示", "appearance.sidebar": "サイドバー", "appearance.sidebar_title": "外観", "appearance.subscription_list.title": "購読リスト", diff --git a/locales/settings/zh-CN.json b/locales/settings/zh-CN.json index 85bf108407..2a5170b88a 100644 --- a/locales/settings/zh-CN.json +++ b/locales/settings/zh-CN.json @@ -158,6 +158,8 @@ "appearance.reduce_motion.description": "减弱动态效果以提高整体性能并减少电量消耗。", "appearance.reduce_motion.label": "减弱动态效果", "appearance.save": "保存", + "appearance.show_search_button.description": "是否在主页显示搜索按钮", + "appearance.show_search_button.label": "显示搜索按钮", "appearance.sidebar": "侧边栏", "appearance.sidebar_title": "外观", "appearance.subscription_list.title": "订阅列表", diff --git a/locales/settings/zh-TW.json b/locales/settings/zh-TW.json index f4d684e659..fe471113b4 100644 --- a/locales/settings/zh-TW.json +++ b/locales/settings/zh-TW.json @@ -145,6 +145,8 @@ "appearance.reduce_motion.description": "減少元素的動畫效果以提升效能並降低功耗。", "appearance.reduce_motion.label": "減少動畫", "appearance.save": "儲存", + "appearance.show_search_button.description": "是否在主頁顯示搜尋按鈕", + "appearance.show_search_button.label": "顯示搜尋按鈕", "appearance.sidebar": "側邊欄", "appearance.sidebar_title": "外觀", "appearance.subscription_list.title": "訂閱列表", From d59da801928d03da2a1d5dd0522184bda634602d Mon Sep 17 00:00:00 2001 From: Yuebi Date: Thu, 14 Aug 2025 00:30:32 +0800 Subject: [PATCH 5/7] =?UTF-8?q?feat(=E8=AE=BE=E7=BD=AE=E7=95=8C=E9=9D=A2):?= =?UTF-8?q?=20=E5=9C=A8UI=E8=AE=BE=E7=BD=AE=E6=8E=A5=E5=8F=A3=E4=B8=AD?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0showSearchButton=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/internal/shared/src/settings/interface.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/internal/shared/src/settings/interface.ts b/packages/internal/shared/src/settings/interface.ts index 75025cd1b9..800a561345 100644 --- a/packages/internal/shared/src/settings/interface.ts +++ b/packages/internal/shared/src/settings/interface.ts @@ -71,6 +71,7 @@ export interface UISettings { guessCodeLanguage: boolean hideRecentReader: boolean customCSS: string + showSearchButton: boolean // view pictureViewMasonry: boolean From a0ed34f4767c0c76797bf9fb5a1b9e3ef1966248 Mon Sep 17 00:00:00 2001 From: Yuebi Date: Thu, 14 Aug 2025 00:39:04 +0800 Subject: [PATCH 6/7] =?UTF-8?q?feat(=E7=95=8C=E9=9D=A2=E8=AE=BE=E7=BD=AE):?= =?UTF-8?q?=20=E5=9C=A8=E9=BB=98=E8=AE=A4UI=E8=AE=BE=E7=BD=AE=E4=B8=AD?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=98=BE=E7=A4=BA=E6=90=9C=E7=B4=A2=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/internal/shared/src/settings/defaults.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/internal/shared/src/settings/defaults.ts b/packages/internal/shared/src/settings/defaults.ts index be2158999b..5152d3224a 100644 --- a/packages/internal/shared/src/settings/defaults.ts +++ b/packages/internal/shared/src/settings/defaults.ts @@ -45,6 +45,7 @@ export const defaultGeneralSettings: GeneralSettings = { export const defaultUISettings: UISettings = { accentColor: "orange", + showSearchButton: true, // Sidebar entryColWidth: 356, From 46edb6ac469e2dc95490a76dfe1343e864797a9a Mon Sep 17 00:00:00 2001 From: Yuebi Date: Thu, 14 Aug 2025 01:24:13 +0800 Subject: [PATCH 7/7] =?UTF-8?q?feat(=E5=91=BD=E4=BB=A4):=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=85=A8=E5=B1=80=E5=88=87=E6=8D=A2AI=E8=81=8A?= =?UTF-8?q?=E5=A4=A9=E7=BD=AE=E9=A1=B6=E5=91=BD=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加新的命令ID和类型定义以支持AI聊天窗口的置顶功能 --- .../layer/renderer/src/modules/command/commands/global.tsx | 6 ++++++ .../layer/renderer/src/modules/command/commands/id.ts | 1 + .../src/modules/command/hooks/use-command-binding.ts | 4 +--- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/desktop/layer/renderer/src/modules/command/commands/global.tsx b/apps/desktop/layer/renderer/src/modules/command/commands/global.tsx index fe9da08261..864326b660 100644 --- a/apps/desktop/layer/renderer/src/modules/command/commands/global.tsx +++ b/apps/desktop/layer/renderer/src/modules/command/commands/global.tsx @@ -94,8 +94,14 @@ export type ToggleAIChatCommand = Command<{ fn: (ctx?: { entryId?: string }) => void }> +export type ToggleAIChatPinnedCommand = Command<{ + id: typeof COMMAND_ID.global.toggleAIChatPinned + fn: () => void +}> + export type GlobalCommand = | ShowShortcutsCommand | ToggleCornerPlayCommand | QuickAddCommand + | ToggleAIChatPinnedCommand | ToggleAIChatCommand diff --git a/apps/desktop/layer/renderer/src/modules/command/commands/id.ts b/apps/desktop/layer/renderer/src/modules/command/commands/id.ts index e1b03ccc63..853dc78c93 100644 --- a/apps/desktop/layer/renderer/src/modules/command/commands/id.ts +++ b/apps/desktop/layer/renderer/src/modules/command/commands/id.ts @@ -50,6 +50,7 @@ export const COMMAND_ID = { toggleCornerPlay: "global:toggle-corner-play", quickAdd: "global:quick-add", toggleAIChat: "global:toggle-ai-chat", + toggleAIChatPinned: "global:toggle-ai-chat-pinned", }, layout: { toggleSubscriptionColumn: "layout:toggle-subscription-column", diff --git a/apps/desktop/layer/renderer/src/modules/command/hooks/use-command-binding.ts b/apps/desktop/layer/renderer/src/modules/command/hooks/use-command-binding.ts index 0fffde66b7..5ed1f076dd 100644 --- a/apps/desktop/layer/renderer/src/modules/command/hooks/use-command-binding.ts +++ b/apps/desktop/layer/renderer/src/modules/command/hooks/use-command-binding.ts @@ -202,10 +202,9 @@ export const useIsShortcutConflict = ( }, [shortcut, excludeCommandId, overrideCommandShortcuts]) } -export const useCommandBinding = ({ +export const useCommandBinding = ({ commandId, when = true, - args, }: Omit, "shortcut">) => { const commandShortcut = useCommandShortcut(commandId) @@ -213,6 +212,5 @@ export const useCommandBinding = ({ shortcut: commandShortcut, commandId, when, - args, }) }