Pine
|
27f1b7ff24
|
设置-模型:PineAgents 模型卡片系列/图标改为读取算力中心真实数据
- 移除 seriesOf 前缀/版本剥离推断系列(数据库为准,被否决方案)
- 系列分组:useComputeModelMeta 匹配算力模型元数据 series,未匹配归入「未分组」且固定排最后
- 模型图标:icon_file || supplier_icon_file(真实图片),未匹配回退渐变首字母
- 系列头:显示数据库系列图标(series_icon_file || series_icon)
- 测试 5/5 通过,tsc 通过
|
2026-09-13 15:27:55 +08:00 |
|
Pine
|
6d042bc5c5
|
桌面端:模型元数据增强——聊天/设置模型项接入算力中心真实系列与图标
- 新增 utils/computeModelMeta.ts(useComputeModelMeta):从 /api/opc/compute/models
读取算力中心模型元数据(series/icon_file/supplier_icon_file),按 id/name 建立索引
- 新增 components/computeModel/ModelMetaBadges.tsx:模型图标+系列徽标(匹配不到回退原渲染)
- Chat/ModelSelector 模型项:显示模型图标(icon_file||supplier_icon_file)+系列徽标
- CandidateModelSection 候选模型:追加系列徽标
- Settings/Models(智能体设置):ModelsSection/RemoteModelManageModal 模型下拉带系列前缀
- 算力-模型(Compute.tsx):模型项图标补充供应商图标兜底 supplier_icon_file
|
2026-09-13 14:38:30 +08:00 |
|
Pine
|
bbae20107f
|
fix(router): lazyImportWithRetry 支持单文件页面的 .tsx/.ts 扩展名匹配
AgentGrants.tsx 是 Settings 下唯一的单文件页面(其余均为目录),
lazyImportWithRetry 的 glob key 解析只尝试了 /index.tsx、/index.ts,
未尝试 .tsx/.ts 后缀,导致 glob 未命中后回退到 @vite-ignore 运行时
动态 import,生产环境请求 404 → 返回 HTML → 'text/html' is not a
valid JavaScript MIME type → 页面渲染崩溃。
增加 .tsx/.ts 扩展名候选,与目录形式并列尝试。
|
2026-09-10 19:41:19 +08:00 |
|
Pine
|
d384bf256a
|
fix: 修复清理调试日志后残留的 console.log( 语法错误
|
2026-09-07 23:34:54 +08:00 |
|
Pine
|
114b5fa484
|
chore: 移除外链调试页 /ext-debug 及相关调试日志
- 删除 ExternalLinkDebugPage.tsx 调试页
- 移除 App.tsx / builtinRoutes.tsx 中的 /ext-debug 路由注册
- 移除 Sidebar.tsx 底部「外链调试」入口按钮
- 清理 osRouteStore/osWindowStore/WebPage/openExternalLink 中的
[ext-debug] 调试日志
|
2026-09-07 23:33:48 +08:00 |
|
Pine
|
f2871a2153
|
fix: 移除禁用系统浏览器后未使用的 invoke/常量 import
|
2026-09-07 23:30:13 +08:00 |
|
Pine
|
c8a704d65d
|
security: 桌面端绝对禁止调用系统浏览器
堵死所有系统浏览器调用路径:
1. Rust open_external_link 命令改为 no-op(不再调用 app.shell().open,只记录日志)
2. capabilities 移除 shell:allow-open 权限(前端无法直接调用 shell.open)
3. 前端 fallbackToSystem 改为 no-op(容器打开失败时仅日志,不做任何外部打开)
4. 前端 openExternalLinkInternal 的 tauri 分支不再 invoke 系统浏览器命令
5. WebPage 容器移除「系统浏览器打开」按钮(blocked 提示保留但无操作按钮)
配合原生层 on_new_window=Deny(已在上次提交)+ 前端 window.open 守卫 + <a> 点击拦截器,
形成完整的系统浏览器禁用策略:所有外部 HTTP(S) 链接统一由应用内容器 WebPage 沙箱接管。
|
2026-09-07 23:22:28 +08:00 |
|
Pine
|
0132cbfd04
|
fix: 前端 window.open 守卫从源头阻止 Tauri 新窗口/系统浏览器双开
- 新增 windowOpenGuard.ts:覆盖 window.open,外部 HTTP(S) 链接统一走
openExternalLink(应用内容器 WebPage 沙箱),同源/相对/mailto/tel 放行
- App 启动时 installWindowOpenGuard() + 预加载黑白名单规则
- 回退 Rust 端 unstable feature / on_new_window 方案(API 被 unstable 门控,
编译路径复杂;前端守卫更可靠且无需重新打包 Tauri)
- 配合 interceptBlankLinkClicks(<a> 点击 capture preventDefault)形成完整接管
|
2026-09-07 22:57:21 +08:00 |
|
Pine
|
fe0af6f964
|
fix: 网页容器三问题修复
1. 双重打开:tauri.conf webview.new_window=deny,阻止 target=_blank/window.open
被 Tauri 转给系统浏览器(需重新打包 Tauri 生效)
2. 黑名单未静默:openExternalLink/openInAppWebView 加同步缓存黑名单判定
(getCachedUrlRulesSync + classifyUrl),命中立即 return 无任何动作;
App 启动预加载 loadUrlRules,避免首次点击异步等待
3. 加载慢:iframe 不再 visibility:hidden,立即渲染;loading 改半透明覆盖层;
blockedTimer 6s→15s 减少误报系统浏览器打开
|
2026-09-07 22:38:58 +08:00 |
|
Pine
|
c32490e213
|
feat: URL 名单支持通配 *.gov.cn 与正则 /pattern/ 判定
- parseHostList 保留正则/通配形态
- hostRuleMatches:正则 /pattern/、通配 *、普通域名后缀匹配三态
|
2026-09-07 22:25:25 +08:00 |
|
Pine
|
641d2f19ff
|
feat: URL 黑白名单接入应用端(黑名单静默拦截)
- urlTrust:loadUrlRules 读取 site.url_whitelist/blacklist;classifyUrl 返回
block/trusted/third-party(黑名单优先)
- openExternalLink / openInAppWebView / 全局锚点拦截器:命中黑名单静默不打开
- WebPage 判定改用 classifyUrl;黑名单防御直接关闭
|
2026-09-07 22:19:36 +08:00 |
|
Pine
|
0277d51ed3
|
fix: 网页容器支持 MainLayout 覆盖层模式(桌面端主界面)
根因:桌面端实际运行在 MainLayout(/console 路径),无 OS 桌面窗口系统,
openApp 打开的 core.web-view 窗口无处渲染 → 外链点击无反应。
- 新增 webViewStore:MainLayout/浏览器模式以全屏覆盖层渲染 WebPage
- openInAppWebView 分流:/os 模式 → OS 窗口;否则 → 覆盖层(回到原页面)
- MainLayout 顶层挂载 {url && <WebPage/>};WebPage 支持 overlay 模式退出
- 调试面板移到 App 全局层(MainLayout 与 OS 均可见)
|
2026-09-07 20:58:33 +08:00 |
|
Pine
|
f910ab292d
|
debug: 外链调起诊断面板+全链路日志(临时)
桌面左上角固定调试面板:显示 tauri/osPath/pywebview/pathname 环境判定,
三个按钮分别走 openExternalLink(百度/白名单资讯)与 openInAppWebView;
面板内实时展示最近日志。关键链路埋点 [ext-debug]:
openExternalLink 判定 → openInAppWebView → osRouteStore.openApp →
osWindowStore.open(含当前窗口列表)→ WebPage mount。
|
2026-09-07 18:27:23 +08:00 |
|
Pine
|
b852157651
|
fix: 桌面端外部链接全面接管到应用内网页容器
- 拦截器扩展:不再只拦 target=_blank,所有指向外部 http/https/mailto/tel
的 <a> 点击(含无 target 的普通外链)统一 preventDefault 交给
openExternalLink,修复 Tauri WebView 静默吞掉普通外链导致「没反应」
- openInAppWebView 改静态 import(消除动态 import 失败可能),打开失败
时兜底走系统浏览器,绝不让链接无响应
- CSP 增加 frame-src https: http: data:,允许容器 iframe 嵌入任意第三方
站点(原先 default-src 'self' 会把容器内容直接拦成白屏)
|
2026-09-07 18:22:47 +08:00 |
|
Pine
|
7a7759fe17
|
feat: 应用内网页容器接管第三方页面(复用个人主页结构)
- 新增 core.web-view 网页容器:顶部标识条(favicon+域名+认证Tag)+ 沙箱 iframe
+ 底部来源说明条(白名单→平台认证页面 / 非白名单→第三方网页内容请注意甄别)
+ 右上角胶囊(刷新/更多/系统浏览器打开/返回)
- 白名单:site.url_whitelist 配置 + 平台默认域名(pinesound/infoepoch 系列),同源恒可信
- openExternalLink 接管:桌面环境(Tauri/OS 模式)http(s) 链接一律进应用内容器,
mailto/tel 保持系统行为;容器内「系统浏览器打开」强制走系统
- 路由:/webpage 窗口路由 + App 路由均注册
|
2026-09-07 17:23:58 +08:00 |
|
Pine
|
3f15d3253c
|
优化:全线错误提示友好化,不暴露技术错误给用户
- 新增 friendlyErrorMessage 通用函数(utils/error.ts),自动将技术错误转换为友好提示
- 内置常见错误映射表:不能与自己私聊→不能和自己私聊哦、未授权→请先登录、任务不存在→任务不存在或已被删除等
- 支持从后端返回的 detail 字段提取可读中文,直接展示给用户
- 修复 communicationStore.ts:发起私聊/打开客服/加载会话/发送消息/好友操作等全部错误提示友好化
- 修复服务大厅全部页面(ServiceDetail/ServicePublish/ServiceOrders/ServiceOrderDetail/ServicesMine/HallServices)
- 修复任务相关页面(TaskDetailPage/HallTasks/MyTasks)
- 修复其他 OPC 页面(CertCenter/Community/Company/Compute/Finance/HallJobs/HallTalents/Notifications/PayBinding/Profile/RechargeModal/TrainingCenter/CourseDetailModal/CourseLearnModal/Talent/UserHomePage)
- 共计修复 25+ 个文件,消除所有直接暴露技术错误信息给用户的情况
|
2026-09-05 17:42:07 +08:00 |
|
Pine
|
8e6b3abac3
|
feat(channels/market): 阶段 4 渠道/市场层合并上游 v2.2.0
- PluginManager: 采用上游 useMarketPlugins(300行: 分页append/loadingMore/autoLoadBlocked/竞态AbortController/highlightFilter) + MarketPluginList(无限滚动LoadMoreSentinel+PluginViewToggle卡片/列表切换); OfficialPluginList.module.less 保留三处 var(--color-border) 定制+追加上游移动端@media; index.module.less 三向并合; 本地 index.tsx 保留(operator 权限 gate)
- Market: MarketPanel(新 install: MarketInstallController 接口)/useMarketInstall/useMarketSearch/SkillIcon/ResultCard 采用上游
- Channels: ChannelDrawer/channelConfig/constants 上游版; 定制点保留(channelIcons console=var(--color-primary)、PendingApprovalsDrawer var(--color-success))
- api/types/chat.ts 采用上游(ChatGroup/ChatSource/ChatGroupKind/group_id); pages/Agent/Skills/index.tsx 适配 useMarketInstall
- utils: chatGroups.ts + 14 个上游缺失工具测试补齐; CronJobs 测试补齐
- 测试修复: design-mock 补 Tabs 桩(上游 PluginViewToggle 依赖); MarketPluginList.test 采用上游版; skill.test 品牌映射云超服; lazyWithRetry.test 适配本地 dev-server 回退
- 验证: tsc 0 错误、build 通过、阶段 4 相关 45 测试文件 427 用例全过
|
2026-09-04 13:24:47 +08:00 |
|
Pine
|
59973f65fd
|
feat(chat): 阶段 2 收尾——B/C 桶剩余合并上游 v2.2.0
- Agent/Tools:+WebSearchConfigModal(web_search 配置),index.tsx 采用上游+主题色映射
- AgentStats:index.tsx 采用上游 agent 视角统计+主题色;SummaryCard formatValue;index.module.less 并合
- Agents:AgentModal 上游 Mail 配置+mailDomains;AgentTable 上游 ResizeObserver/fixed/Dnd + 保留 deletable 逻辑;index.module.less 并合
- SkillPool:useSkillPool 上游自动化状态;SkillPool/index+PoolSkillCard/Drawer/ListItem 采用上游
- TokenUsage:useTokenTypeConfig 上游 lineChartChrome+云超服配色
- CronJobs:上游 calendar.ts 模块化
- RemoteModelManageModal:上游统一提供商重构+ModelCapabilityTags/ModelConfigEditor
- Agent/Config ReMe:+ReMeStatusModal/EmbeddingModelCard/embeddingUtils/useEmbeddingVerification/memoryMaintenanceContext/useReMeRuntimeStatus;index+useAgentConfig 上游
- api/types:agentStats 上游 agent_* 字段;skill.ts 并合(本地扩展+上游自动化类型);agent.ts ReMe/Embedding 并合;provider.ts 补 status/discovered_count
- api/modules:agent.ts 补 testEmbedding;skill.ts 补 getPoolSkill/updatePoolSkillAutomation;tools.ts getToolConfig 补 params
- locales 全量补齐上游新增 key(zh/en +406,vi +226,my/th/lo 英文占位)
- tsc 0 错误,build 通过,阶段 2 相关 659 测试全过;全量 24 失败均预存在
|
2026-09-04 12:15:42 +08:00 |
|
Pine
|
26e305e805
|
feat(chat): 阶段 2 聊天体验移植上游 v2.2.0
- B 桶 Chat 系直接采用上游(含云超服主题色映射):HarnessModelSelector/ChatActionGroup/ChatHeaderTitle/LoopModeSelector/ApprovalLevelToggle/ChatSenderTabsPanel/BackgroundTaskPanel/ContextUsageIndicator/HarnessApprovalToggle/useToolCallControl/harness/provider api
- ToolCardShell 上游基底+补本地 inputProgress;merge_less.py 三向 LESS 并合 8 个 module.less
- ModelSelector 三 Tab 并合(上游重构基底+云超服 pineagents Tab,默认保留 pineagents)
- Chat/index.tsx 上游基底 + 10 依赖模块(InlineMarkdown 平铺版/RichFileReferenceInput/MediaDownload 等)
- 复制 upstream_only:turnUsage/turnUsageStore/sessionRoute/loopModeDescription/resolveLocalizedText
- api/types/provider.ts 双改并合(ProviderInfo 补 discovery 字段)
- 新增依赖 lexical@0.48.0+@lexical/react@0.48.0;vite.config 增加 DefaultCards/Audios 精确 alias
- locales 6 语言补齐 36 个上游 chat.* key(my/th/lo 英文占位)
- 测试采用上游版;ModelSelector.test 预设 pro tab 保留云超服默认 pineagents
- tsc 0 错误,build 通过,阶段 2 相关 344 测试全过
|
2026-09-04 11:55:51 +08:00 |
|
Pine
|
ae3ab5feb5
|
阶段5: 完整引入上游 OS Shell + Hub + Mailbox
- os/ 67 文件(DesktopOS/Dock/Launcher/MenuBar/MissionControl/NotificationCenter/AppStore/Window 系统 + os*Store/hooks)
- pages/Hub + api/modules/hub.ts + ImportHubModal(已有)
- Inbox 采用上游 Mailbox(approvals/messages 双 Tab + MailAccessControlDrawer/useMailPendingCount/mailDetail),保留云超服 Harvest 组件
- App.tsx 引入 OS Shell 分支(isOsPath→DesktopOSPage, Router 外)+ /hub/admin 路由 + BackendModeRouter + RuntimeAvailabilityGuard,保留云超服 AuthGuard/chatSocket/OPC 主题/vi-th-my-lo
- 双改合并:usePluginLoader(loadPawApp)/pluginMarket(isMarketPluginApp)/registry store(removeBySource)/hostExternals(removePlugin)/LanguageSwitcher(persistRemotely+ja-ru-pt-id)/BackendLoadingPage(override props)/ApprovalCard(reasoning)/auth.ts(mode)/auth/gate.ts
- SidebarSettingsPanel 加 Desktop Mode 入口(OS Shell 切换)
- locales 合并 os/hub/projectDirectory/inbox/account(zh/en/vi 用上游,lo/my/th 用 en 占位)
- 验证:tsc 0 错误、build 通过(1m23s)、阶段5 新增 35 文件 271 测试全过;全量回归 30 失败均预存在(stash 验证)
|
2026-09-04 10:36:41 +08:00 |
|
Pine
|
8ecc37630a
|
feat(pineagents): 跟随上游 v2.2.0 引入 Files 工作区并迁移 Coding 页(阶段 1)
- 引入 features/files-workspace + features/project-directory + pages/Files(上游 v2.2.0 纯增量)
- 新增依赖:three/3d-force-graph/three-spritetext/motion(MemoryGraph 3D 记忆图)
- 同步上游伴生模块(upstream_only):workspace.ts/git.ts/markdown.ts/codingTabsStore/useWorkspaceWatch/
FilePreview/TabbedEditor/GitPanel/codingMode*/agents.ts/vite-env.d.ts/api/types/workspace
- api/types/agents.ts 按 A 桶裁决合并:保留云超服 deletable + 吸收上游 Mailbox/MemoryGraph 类型
- Coding 页迁入 Files:删除 pages/Coding/index.tsx + FileTree,/coding 路由移除,
codingMode 模式导航重定向到 /files(Sidebar/Chat/builtinRoutes/CodingModeToggle)
- builtinMenu 增加 core.files 菜单入口(agent-group 下 order 5)
- locales 合并 files.* 键(zh/en/vi 用上游,lo/my/th 用 en 占位待翻译)
- 测试适配:ResponseArtifactList 深层 chat import 改为相对路径(本地 chat stub 配置所致)
- 验证:tsc 0 错误、vite build 通过、files-workspace/project-directory/stores/locales 测试通过
(sidebarModeStore 失败为预存在、与本次无关)
|
2026-09-04 02:51:07 +08:00 |
|
Pine
|
e90491cf20
|
feat: MQTT 凭证链路+登录态后端持久化+通讯录+好友私聊完善+官方智能体同步
|
2026-09-03 12:40:05 +08:00 |
|
Pine
|
6a87496a4b
|
fix: 统一桌面端登录与 token 管理逻辑,修复模型列表 401
- PineAgents provider base_url 改为动态使用 DEMO_API_BASE_URL(远程服务器)
- list_provider_info 支持从请求头透传 console 端 JWT,优先用于 /v1/models
- forward/forward_upload 未显式传 auth_header 时自动使用本地持久化 token
- auth_token_store 添加日志,便于排查 token 保存/加载问题
- fetch_models 超时增加到 15s,添加获取结果日志
|
2026-09-02 18:18:55 +08:00 |
|
Pine
|
8faa207ccb
|
feat(console): 桌面端多轮功能更新(认证/品牌/多语言/算力中心/大厅细节)
|
2026-08-31 23:43:00 +08:00 |
|
Pine
|
9b30f681c6
|
feat: 智能体控制台前端(console)
- React+antd+zustand,注册表驱动路由/菜单/权限
- Tauri 桌面壳、后端托管 SPA、跨标签页消息队列
|
2026-08-23 22:43:18 +08:00 |
|