Pine
06a29f9b0f
fix(个人主页): 回归纯sandbox隔离,移除注入脚本和父页面路由
...
- 移除沙箱拦截脚本注入、handleOpenUrl、opc:page:open-url postMessage
- 仅靠浏览器sandbox强制隔离:无allow-popups/allow-top-navigation
- 内部所有跳转仅限iframe内,window.open和target=_top被浏览器阻止
- 彻底消除父页面navigate导致的白屏
- srcDoc直接渲染用户HTML,不注入任何脚本
2026-09-04 23:37:52 +08:00
Pine
3cee99362e
fix(个人主页): 相对路径在iframe内导航,禁止影响父页面
...
- handleOpenUrl 对相对路径(/order?xxx等)改为iframe内部导航(contentWindow.location.href)
- 不再调用父页面navigate导致白屏
- 仅/usershome/xxx和外部http(s)才跳出沙箱处理
2026-09-04 23:33:32 +08:00
Pine
5373eb796b
fix(个人主页): 沙箱隔离修复—禁止内部跳转影响外部
...
- 移除 iframe sandbox 的 allow-popups,内部 window.open/target=_blank 不再开浏览器新标签
- 注入沙箱拦截脚本:捕获 window.open、_blank/_top/_parent 链接、表单提交,统一 postMessage 转发
- 父页面 handleOpenUrl 统一路由:/usershome/xxx 新开 usershome 页面,外部 http(s) 开新标签,相对路径站内导航
- embed 模式同样移除 allow-popups,第三方站内部导航仅限 iframe 内
- 彻底解决白屏和多级退出问题
2026-09-04 23:30:00 +08:00
Pine
dad97fe749
feat(个人主页): 应用式全屏渲染+毛玻璃顶栏+入口环境适配
...
- UserHomePage 改为 position:fixed 全屏覆盖层(与 AppCenter embedPage 一致)
- 顶部身份条改为毛玻璃(半透明白+backdrop-filter blur),与应用主背景一致
- 右上角胶囊按钮上移至顶栏,浅色玻璃质感+蓝紫点缀
- 三处入口(人才大厅/人才页/个人中心)区分环境:OS桌面开窗口,浏览器布局 navigate 到 /usershome/:userId
- 返回按钮区分环境:OS关窗口,浏览器 history.back
- 头像加白边阴影,编辑按钮蓝紫渐变,徽章/信用标签蓝紫系
2026-09-04 23:23:28 +08:00
Pine
68665df2cf
fix(pages): 个人主页改为标准路由 /usershome/:userId(复用应用式窗口启动),点击反馈+uid兜底;解决vite dev glob未扫描新文件导致窗口内容不渲染
2026-09-04 22:55:00 +08:00
Pine
7411ef404a
feat(talent): 人才页新增「个人主页」tab — 展示公开名片状态并提供创建/编辑入口
2026-09-04 22:33:32 +08:00
Pine
fde7d2f81a
fix(pages): 修复人才点击跳转 — WindowRouter不解析:uid改用location解析;个人中心新增「我的个人主页」入口
2026-09-04 22:15:43 +08:00
Pine
a493f71d2c
feat(pages): 人才市场去抽屉直接跳个人主页;未自定义主页渲染平台默认名片(基础资料+服务+发起沟通)
2026-09-04 22:05:24 +08:00
Pine
8258316479
feat(pages): 新增OPC个人主页窗口 — 身份条+沙箱HTML/第三方嵌入+能力接入说明+人才市场入口
2026-09-04 21:52:29 +08:00
Pine
512414401c
子智能体前端 UI 接入:会话 source 透传 + 会话列表 subagent 独立分组;create_chat 端点透传 source/group/parent/root
2026-09-04 21:00:03 +08:00
Pine
3151198ebd
迁移上游子智能体功能线:ChatGroup 分组体系 + subagent_model 配置 + spawn 会话归属
...
- chats/models.py: SessionSource.subagent + ChatGroupKind/ChatGroup/default_chat_groups + ChatSpec 扩展 group_id/parent_session_id/root_session_id/last_finished_at + ChatsFile.groups
- chats/manager.py: group CRUD 方法(list/create/update/reorder/delete) + get_or_create_chat/create_chat 的 group 归属与校验
- chats/api.py: /chats/groups 端点(GET/POST/PUT order/PUT/DELETE)
- config.py+agents.py: AgentConfig.subagent_model 配置
- agent_management.py: _build_subagent_request_context 补 subagent_model→model_slot_override
- console.py: _chat_registration_fields 识别 spawn_subagent 请求并注册 subagent 会话
- constant.py: DEFAULT_SPAWN_FOREGROUND_TIMEOUT_SECONDS
- 前端 chat.ts: groups API 请求函数
2026-09-04 20:40:19 +08:00
Pine
881de0d305
fix(ui): 移除各页面内容容器 max-width,宽屏下内容铺满内容区
...
问题:多个页面根容器带 max-width,屏幕放大后内容区最右侧大片空白。
逐个检查全部页面后确认并修复 11 处页面级宽度限制:
console 页面:
- Settings/Account:.page max-width 720px → 移除
- Settings/About:.aboutPage max-width 860px + 居中 → 移除
云超服门户(/opc/*)页面:
- Opc/Dashboard、Opc/OpcList、PortDashboard:.page max-width 1200px → 移除
- Opc/AgentChat、Opc/Profile:内联 maxWidth 720 → 移除
- Opc/Credit:内联 maxWidth 1100 + 居中 → 移除
- Opc/Talent:内联 maxWidth 640 → 移除
运营端/管理端:
- Operator/CSWorkbench:.page max-width 1200px → 移除
- Hub(hubMode 管理页):.content max-width 1480px + 居中 → 移除
保留不动:描述文字/表单卡片级行宽限制(Agent/Config、Agent/Skills、
kbAnswer 等,属可读性设计);模态框 max-width calc(100vw-32px)。
验证:布局层 .page-content 本就全宽 flex(无 max-width);浏览器实测
/account 根容器 720px 限制消失;tsc 0 错;portal/Operator/Account/About/
Hub 测试 23 全过。
2026-09-04 17:33:58 +08:00
Pine
932fe54c16
fix(chat): 助手身份显示当前智能体名称/头像,无则回退云超服
...
问题:聊天区助手名称/头像沿用上游硬编码 nick='QwenPaw'、
avatar='/qwenpaw.png'。前者把当前智能体(如'小园')显示成了'QwenPaw';
后者资源未随迁移携带,dev 下实际返回 SPA index.html(头像渲染破损)。
修复:
- 前端 Chat 页:welcome.nick/avatar 改为解析当前智能体——名称取
selectedAgent.name,头像取 selectedAgent.avatar;智能体无名称/头像时
回退云超服品牌 BRAND.name / BRAND.assistantAvatar(/pineagents-icon.svg)。
- 支持智能体头像字段(端到端):后端 AgentProfileConfig.avatar、
AgentSummary.avatar、agents list/create/update 透传、agent_sync
IDENTITY_FIELDS 加 avatar(云超服身份同步);前端 AgentSummary/
AgentProfileConfig/CreateAgentRequest 类型补 avatar。
- branding.ts 新增 assistantAvatar 品牌头像常量(替代缺失的 /qwenpaw.png)。
验证:后端重启后 /agents 返回 avatar 字段;/pineagents-icon.svg 200
image/svg+xml(原 /qwenpaw.png 实为 SPA fallback 破损);前端 tsc 0 错;
Chat/agents/constants 32 文件 322 测试全过。
2026-09-04 17:11:29 +08:00
Pine
29b1c7a3da
fix(files): 消除重复'文件'菜单,新 Files 页参考旧页补下载与路径
...
问题:上游合并后 /files(FilesWorkspace 新页)与 /workspace(旧版
核心文件页)同时存在于侧边栏,nav.files 与 nav.workspace 中文标签均为
'文件',导致'当前助理设置'分组下出现两个'文件'菜单;OS 桌面模式
OS_APPS 同样注册了两个'文件'应用。
修复:
- builtinMenu.ts / osApps.ts:移除 core.workspace 菜单项与应用注册,
侧边栏只保留一个'文件'入口(/files 新页)。/workspace 路由保留可深链。
- FilesNavigator 工具栏:参考旧页新增'下载'按钮(/workspace/download
打包下载工作区,复用旧页 message 流程,含 DownloadCancelledError 处理)。
- FilesPage 页头:参考旧页新增'工作区路径'副标题展示(经
/workspace/coding-project 获取 workspace_dir,长路径截断 hover 见全)。
验证:tsc 0 错;files-workspace/os/layouts 39 文件 227 测试全过;下载端点
经 8093 代理返回 200 有效 zip。
2026-09-04 16:54:59 +08:00
Pine
f8f2c20246
fix(files): 补回 Monaco editor.main.css,修复编辑器位置错乱
...
合并上游 Coding 迁移时丢失了 monacoSetup.ts 中的关键 CSS 导入:
(上游 v2.2.0 第 20 行,本地合并后缺失)。
由于 monacoSetup 用 loader.config({ monaco }) 指向本地 bundle(为离线而设),
@monaco-editor/react 不会像 CDN 模式那样自动注入 CSS。缺失样式表后 Monaco 以
错误字体度量渲染:光标/选区按 monospace 度量计算,而实际字形用默认字体绘制,
导致点击与光标位置错位——即位置错乱,无法准确编辑。
修复:按上游原样补回 CSS 导入(唯一与上游的差异,diff 已确认)。
验证:tsc 0 错;files-workspace + codingTabsStore vitest 12 文件 84/84;
dev server 已热更新,/node_modules/monaco-editor/min/vs/editor/editor.main.css
经 Vite 正常注入。
2026-09-04 15:27:33 +08:00
Pine
55f8d9f81f
feat(workspace): port session project-dirs, fix 404s, add Tauri dir picker
...
C-port the upstream /chats/{id}/project-dirs feature so the chat-scoped
project directory binding is fully functional on the cloud backend:
- services/project_directory.py (new): lean cloud adaptation of the
upstream module — normalize (dedupe/resolve/max 10), meta read for the
persisted override, effective resolution (session > agent > workspace),
nesting detection.
- chats/manager.py: set_session_project_dirs + get_session_project_dirs
persist the override in ChatSpec.meta[runtime_context] under the lock
(one-way migration: list supersedes legacy scalar).
- chats/api.py: GET/PUT/DELETE /{chat_id}/project-dirs + deprecated
/{chat_id}/project-dir views, with 422 on missing dirs and response
models matching the merged frontend (exists/nested_with/is_workspace).
- runtime/builder.py: session override feeds the per-turn coding project
dir (weakest source; fork/ACP still win), so bound directories actually
take effect for the chat's tools.
- Fix A: frontend projectDirectoryApi paths /workspace/project-directory*
-> /workspace/coding-project* (cloud backend already exposes these).
- Fix B: add POST /workspace/coding-project/browse-dirs/create for the
file-browser 'new folder' action (validated name, 409/403/500 mapping).
- Tauri system directory picker: 'Choose folder' button in the project
directory panel calls the @tauri-apps/plugin-dialog native directory
dialog (capability dialog:allow-open already granted), queueing the
pick as a session binding or the agent draft; hidden outside the Tauri
runtime; i18n across all 6 locales.
Verified: backend restart + curl (GET/PUT/DELETE project-dirs, deprecated
views, browse-dirs/create, 422/409/400 cases), dev-proxy end-to-end,
frontend tsc clean, vitest 25/25, production build 2m06s.
2026-09-04 14:30:32 +08:00
Pine
c41742e7ca
fix(agents): AgentTable 改造——修复 RO 自反馈循环/列挤压/pin 图标语义
...
路线 A(antd 现代表格重构):
- ResizeObserver 自反馈循环:rAF 合并回调 + >1px 变化阈值,避免 setBodyHeight→Table 重排→容器高度变化→RO 再触发的持续重排(实测页面 1.5s 高度稳定)
- scroll.x 1620 硬编码 → max-content:列随内容自适应,窄容器出现横向滚动(实测内容宽 4296px/视口 1030px,此前 scrollWidth=clientWidth=541 列被挤压)
- pin 图标语义修正:已固定显示实心 Pin(fill=currentColor),未固定显示空心 Pin 邀请固定动作(此前反转:未固定显示 PinOff、已固定显示 Pin 与工具提示矛盾)
- 拖拽手柄补齐 aria-label(agent.dragHandleTooltip)
- 测试:新增 onPin 回传 currentPinned 断言、pin 图标实心/空心断言、拖拽手柄可访问性断言(7/7 通过)
- 验证:tsc 0 错误、build 通过、/agents 页面浏览器实测正常
2026-09-04 13:45:52 +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
60003796fc
feat(settings): 阶段 3 统计/模型/记忆层合并上游 v2.2.0
...
- TokenUsage:全目录采用上游 lineChartChrome 重构(tokenUsageRows.ts+useDataAggregation+DataTables/SummaryCards),保留云超服配色 useTokenTypeConfig
- api/types/tokenUsage.ts:上游 cache_* 字段
- Settings/Models A 桶吸收增量:+apiKeyValidation、useProviders models_syncing 轮询、index.tsx manageModels URL、providerIcon +volcengine-cn-agentplan/mimo
- api/modules/agentStats.ts:+LlmToolDaily/getGlobalLlmToolTrend
- api/modules/agent.ts:updateAgentRunningConfig timeout 10min + test
- Chat 补漏:OAuthConfirmModal 上游防竞态重构、HarnessModelSelector.test explicit null effort
- tsc 0 错误,build 通过,阶段 3 相关测试全过
2026-09-04 12:23:34 +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
b52c9b3303
阶段5补充: OS 市场应用路由适配本地 core.app-center
...
- osApps MARKETPLACE_APP.routeId: core.marketplace → core.app-center(本地市场 path=/apps),labelKey → nav.market
- osAppRegistry.test.ts 断言改用 MARKETPLACE_APP.routeId 对齐
- 6 osAppRegistry 测试全过
2026-09-04 10:39:39 +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
7225e37033
feat(pineagents): 添加分类参数以支持精确过滤技能市场搜索结果
2026-09-03 23:26:33 +08:00
Pine
84f34f8e21
feat(apps): 云超服市场商品封面图(cover_url)支持
...
- 后端 _pineagents_live_plugin 映射 cover_url(server-core 商品封面)
- MarketPluginEntry 类型新增 cover_url
- AppMarket 市场卡片三种情况渲染:
有封面 → 16:9 封面主视觉(替代图标位)
无封面有图标 → 图标
都没有 → 默认 glyph 占位
封面/图标加载失败均回退下一级占位
2026-09-03 21:37:13 +08:00
Pine
3be0c2f16c
fix(apps): 修复云超服市场单段 slug 商品下载链路
...
- 前端 buildMarketDownloadUrl:id 拆分不到 owner/name 两段时,
不再产生 owner/undefined,统一按 pineagents/<id> 处理
- 后端 _fetch_market_bundle_bytes:owner/name 精确匹配失败后,
回退按 name 单段精确匹配,兼容历史未补 owner 前缀的商品
(如 creator、公众号爆款封面生成)
配套:server-core 侧已把存量单段 slug 数据规范化为 pineagents/<slug>
2026-09-03 20:28:09 +08:00
Pine
158582bc1a
fix(apps): 修复云超服市场应用安装后无法打开、无法卸载
...
打开问题:
- 根因:前端 loadAllPlugins() 仅在启动时加载插件 bundle,安装新应用后
路由未注册,AppCenter 打开显示 not loaded
- usePluginLoader 新增 loadPluginById(),按需加载单个应用 bundle
- AppMarket 安装成功后立即调用 loadPluginById 注册路由
- AppCenter 打开应用时若路由缺失自动尝试加载并给出可读提示
卸载问题:
- 根因:scoped id(@kmu/incubator 含 '/')无法在 URL 中表达,
后端 uninstall_pawapp 直接拒绝含 '/' 的 id
- 后端新增 POST /pawapps/uninstall(body 传 app_id),优先走插件
加载器卸载,fallback 按目录删除,并做 scoped id 路径穿越防护
- 前端 pawappApi.uninstall 改用 POST body
- fallback 目录扫描支持 scoped 命名空间(@scope/name 子目录)
2026-09-03 18:13:03 +08:00
Pine
2039c2224d
fix(build): 修复桌面端前端 TypeScript 编译错误,yarn build 通过
...
- toAuthUser 接受可选 username,处理 session.user 无 username 场景
- SubRole 类型补充 org_director/org_manager/personal
- AuthSessionResponse.mqtt 类型从 unknown 修正为 MqttCredentials
- 移除未使用导入/变量:useTheme/Popover/Tooltip/iconList/savingPwd/onSavePassword/conversation/setAuthToken
- setMode 未使用参数加下划线前缀
2026-09-03 16:33:04 +08:00
Pine
e90491cf20
feat: MQTT 凭证链路+登录态后端持久化+通讯录+好友私聊完善+官方智能体同步
2026-09-03 12:40:05 +08:00
Pine
8c01e4ec7b
fix: moduleRegistry 模块未找到警告降级为 debug
...
异步注册期间模块未就绪是正常的,不影响功能(lazyImportWithRetry 会回退到原始模块)。
降级为 console.debug 避免控制台被警告刷屏。
2026-09-03 11:05:45 +08:00
Pine
73aff6ef99
fix: 修复 PaperclipOutlined 图标名称错误(应为 PaperClipOutlined)
2026-09-03 10:57:31 +08:00
Pine
0c86ac86be
feat: 沟通页面优化 - 列表收起+移除自己头像+输入框改造
...
1. 沟通列表支持收起为图标栏(56px),显示最近8个会话图标
2. 自己发送的消息不再显示头像(右侧只保留气泡)
3. 输入框参考智能体对话页面改造:
- 顶部提示文字
- 左侧工具栏(附件/表情,预留)
- 右侧字数统计 + 圆形发送按钮
- 毛玻璃卡片背景
4. 后端敏感词检测已确认:5个词(赌博/博彩/代开发票/刷单/跑分),MQTT和REST双入口校验
2026-09-03 10:40:51 +08:00
Pine
cf9679185e
feat: 补充 IM 系统核心文件(沟通页+客服工作台+IM路由)
...
1. communication.ts: IM API 模块(会话/消息/好友/客服/知识库)
2. communicationStore.ts: IM 状态管理(MQTT 连接+消息收发)
3. useStartChat.ts: 发起聊天 Hook
4. CSWorkbench.tsx: 客服工作台(运营权限)
5. im.py: 后端 IM 路由中转
2026-09-03 10:30:35 +08:00
Pine
beb9708e82
ui: 沟通页面优化 - 左侧毛玻璃卡片 + 右侧透明背景 + 浮动输入框
...
1. 左侧会话列表:使用与菜单栏一致的毛玻璃材质(glass-bg-strong + blur 18px)
2. 右侧对话区域:去除背景色,完全透明
3. 顶部标题栏:去除卡片背景,使用透明分隔线
4. 输入框:参考智能体对话页面,设计为浮动毛玻璃卡片
- 圆角 16px,阴影,毛玻璃背景
- 输入框无边框透明
- 发送按钮独立行,圆角设计
5. 整体布局:与主布局一致的 8px gap 和 margin
2026-09-03 10:30:18 +08:00
Pine
2da34dfc2c
fix: MQTT 一次性密码适配 - 禁用自动重连,断开后重新获取凭证
...
1. reconnectPeriod: 0 禁用 mqtt.js 自动重连(旧密码已失效)
2. close 事件:延迟后重新调用 connect() 获取新凭证
3. error 事件:强制断开并重新获取凭证
4. 确保每次重连都使用新的一次性密码
2026-09-03 10:11:56 +08:00
Pine
1403d5b83a
fix: RoleBadge 中 account_type_label 已是中文,不应再用 t() 翻译
2026-09-03 09:43:37 +08:00
Pine
761ee8be14
refactor: 角色组织账号模型重构 - 阶段一
...
1. 移除 enterprise/provider/government/investor/developer 角色
2. 重写 builtinRoutes/builtinMenu 只保留三角色
3. 删除 portal 下五个孤立页面目录
4. capabilities 写入 JWT,前端统一基于 capabilities 判断
5. AuthUser 增加 account_type/account_type_label
6. Header RoleBadge 优先使用 account_type_label
7. 修复 ChatWindow 自己消息右侧、客服消息区分
8. Operator/Users 增加在线状态
9. 修复多个预存 TS 错误
2026-09-03 00:35:58 +08:00
Pine
dda19e7ce4
feat: 新增关于页面,说明软件许可、版权与权利声明
...
- 创建设置/关于页面,包含产品信息、许可协议、修改说明、第三方组件声明
- 明确分发形式为二进制桌面应用,不随附源代码
- 内嵌商业许可协议与 Apache 2.0 摘要,满足二进制分发场景的声明义务
- LICENSE/LICENSE_QwenPaw/NOTICE 随 Tauri 打包分发
- 菜单位于智能体设置分组末尾
2026-09-02 18:51:03 +08:00
Pine
3f5a1eec21
style: 侧边栏助理模块增加上边距,避免紧贴顶部
...
- agentScopedSection 添加 margin-top: 12px
- 简单模式和完整模式均生效
2026-09-02 18:27:34 +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
dc070b46f4
feat(market): 应用市场识别已安装状态、版本对比、更新按钮;已安装显示禁用按钮带本地版本
2026-09-02 14:41:33 +08:00
Pine
66ab84c749
console: 修复应用菜单入口点击无反应(scoped-id 深链接匹配)
...
- AppCenter 深链接 find 增加 a.entry_page === '/apps/'+appId 兜底
(URL 段 kmu-incubator 与真实 id @kmu/incubator 不匹配导致应用打不开)
- 侧边栏「应用」分组 i18n: appsGroup(跟随核心.apps-group 分组)
- 新增 scoped-id 深链接单测,12/12 通过
2026-09-01 23:16:53 +08:00
Pine
e3a81f6bf5
fix(api): getApiToken fallback reads JWT from user profile when qwenpaw_auth_token missing
...
桌面端部分构建路径将 OPC JWT 存于 pineagents_user_profile.token,
而 localStorage qwenpaw_auth_token 缺失导致 getApiToken() 返回空、
所有 API 请求无 Authorization -> 401。增加 fallback:仅当 profile.token
为三段式 JWT 时兜底,避免演示/占位 token 混入请求头。
2026-09-01 21:42:52 +08:00
Pine
dcdcdeaad5
refactor(console): 工作分组菜单重构 + 五大工作页 + 工作台重做
...
菜单(工作):工作台/大厅/任务/服务/岗位/人才/财税(合并税务申报)/政策/政务/通知/信用;
移除 智能体助手、服务市场(旧)、消息中心、个人资料(路由保留兼容)
- 任务页:接单中/我的投标/被指派/我发布的 四 Tab(做单/交付/完成操作 + 发布者接单投标计数)
- 服务页:我下单的/我收到的/我发布的服务 三 Tab(订单全链路流转 + 服务下架)
- 岗位页:我发布的岗位 + 收到的投递(聚合展示)
- 人才页:我的档案编辑 + 我的沟通(站内会话列表 + 聊天抽屉 10s 轮询)
- 财税页:收支流水 + 税务申报 合并(Segmented 切换)
- 工作台重做:待办横幅(进行中任务/待接订单/待评标) + 六宫格入口 + 月度收入 + 政策速览
2026-09-01 21:35:54 +08:00
Pine
701624ca56
fix(console): Opc/Dashboard useAuth 导入指向真实模块 auth/guards
...
src/auth 目录不存在 context,useAuth/RequireRole 均在 auth/guards.tsx;
修复 import 解析失败导致 vite dev/build 中断(与 RequireRole 合并为一行)
2026-09-01 21:29:05 +08:00
Pine
4033647628
feat(console): 主菜单栏插件/应用菜单聚合到自动'应用'分组(算力分组之后)
...
- store.ts: menuRegistry 对 primary.portal 的非原生游离顶层菜单项
(非 builtin、非分组、无有效 parentId)自动聚合到 core.apps-group
'应用' 分组,order 306 紧跟算力分组(core.compute-group 305)之后;
分组不带 roles → 对所有登录账号可见
- hostExternals.ts: registerRoutes 的 legacy 菜单落点从
primary.settings/plugins-group 改为 primary.portal(由聚合收进'应用'分组),
删除 ensurePluginsGroup
- 更新 hostExternals.compat.test 断言 + 新增 menu.test 聚合用例(20/20 通过)
2026-09-01 21:06:51 +08:00
Pine
65fa9b3a11
feat(task): 载体端任务管理页面(平台级任务+本载体下架/上架,不可编辑)+pineagents 转发
...
- console: Carrier/Tasks.tsx 新增载体端任务管理页(列表+下架/上架 Popconfirm,无编辑入口)
- builtinRoutes/builtinMenu: core.car.tasks 路由与菜单(任务管理,order 25)
- api/modules/auth.ts: getCarrierTasks/hideCarrierTask/unhideCarrierTask + CarrierTaskItem 类型
- pineagents opc.py: /carrier/tasks、/carrier/tasks/{id}/hide|unhide 纯转发
- 清理上轮遗留 unused import(HallTasks authApi、Dashboard Progress)
2026-09-01 14:44:21 +08:00
Pine
aa79f0a4d6
fix(market): 清除技能/插件/官方市场演示数据残留,全部改走 server-core 真实接口
...
- 删除 _DEMO_SKILLS、_PINEAGENTS_DEMO_PLUGINS、_PINEAGENTS_DEMO_OFFICIAL_PLUGINS
- Operator Dashboard/DataStats 删除硬编码统计,改真实接口聚合
- 修复下载代理 httpx 未 follow 302;端到端验证三市场返回真实商品、下载 sha256 一致
2026-09-01 11:22:34 +08:00
Pine
c82d4a47a9
feat(task): 任务系统统一合并到大厅,删除独立任务/独立社区
...
- 删除旧任务广场 /opc/square(TaskSquare.tsx)与独立社区 /opc/community 路由;社区保留为大厅 tab(OpcCommunityView)
- HallTasks 抢单/投标改走 hallApi(/hall/tasks/grab|bid);hall.ts 新增 grab/grab-by-code/bid/doing/complete/deliver/recommend
- MyTasks 改真实聚合展示(承接/投标、交付走 /hall/tasks/deliver)
- Dashboard activeTasks 适配真实任务状态(移除无真实来源的进度圆环)
- auth.ts 删除旧 /opc/tasks API(getOpcTasks/grabOpcTask/bidOpcTask/deliverOpcTask),OpcTask 类型扩展真实字段
- pineagents 新增 hall.py 转发 /hall/* 与 /community/* 到 server-core;删除 /opc/tasks 失效代理
- 演示数据清除(上一轮):技能/插件/官方市场改真实接口、Operator Dashboard/DataStats 去硬编码
2026-09-01 11:22:28 +08:00