Pine
|
f135a07ebe
|
build: macOS 打包脚本确保生成 DMG 安装包
根因:build_macos_pyinstaller.sh Step 3 显式指定 --bundles app,覆盖了
tauri.conf.json 里的 dmg target,只生成 .app 然后手动打 ZIP,完全没生成 DMG。
修复:
1. --bundles app → --bundles app,dmg(同时构建 .app 和 .dmg)
2. Step 4 增加 DMG 产物收集:从 bundle/dmg/*.dmg 复制到 dist/,
命名 YunOPC-Hub-{VERSION}-macOS.dmg,输出大小和路径
3. 构建完成摘要增加 DMG 路径
4. package.json 增加快捷脚本:tauri:dev / tauri:build /
tauri:build:mac / tauri:build:mac:debug
5. tauri.conf.json bundle.macOS.dmg 增加专业配置:
windowSize [640,440] + applicationFolder=true(DMG 内显示
/Applications 快捷方式,支持拖拽安装)
macOS DMG 打包依赖系统自带 hdiutil,无需额外安装。
|
2026-09-07 23:29:53 +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
|
4496bac2db
|
fix: 原生层拦截 new_window=Deny,彻底阻止系统浏览器双开
- tauri.conf.json windows=[]:不再自动创建主窗口
- lib.rs setup 中用 WebviewWindowBuilder 手动创建主窗口,builder 上设置
.on_new_window(|_, _| NewWindowResponse::Deny)——从原生层阻止 window.open /
target=_blank 被 Tauri 转给系统浏览器(这是唯一可靠的方式,Webview 实例的
on_new_window 被 unstable feature 门控不可用)
- 窗口配置保持原样:标题云超服、1280x800、最小 960x600、可调整大小
- 配合前端 window.open 守卫 + <a> 点击拦截器,形成原生+前端双层拦截
|
2026-09-07 23:08:04 +08:00 |
|
Pine
|
62375ed7db
|
fix: tauri.conf new_window 配置路径修正(WindowConfig 直接字段,非 webview 子对象)
|
2026-09-07 22:43:55 +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
|
2290c103db
|
fix: 白屏崩溃 + shell.open 权限
1. WebViewOverlayHost 内 WebPage 是 lazy 组件,脱离 Suspense 边界渲染
→ React 抛错整树卸载(纯背景无内容)。包 Suspense fallback=null。
2. Rust 端 app.shell().open 缺 shell:allow-open 权限
→ invoke open_external_link 被拒(shell.open not allowed)。补权限。
|
2026-09-07 22:05:19 +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
|
c53d88e626
|
fix: 应用中心与OPC个人主页改为独立路由渲染,修复打包后被侧边栏页眉遮蔽;补充返回入口并清理编译警告
|
2026-09-07 10:14:07 +08:00 |
|
Pine
|
44653f6048
|
关闭个人微信收款功能,当前阶段要求所有用户必须完成特约商户进件
修改内容:
1. 前端移除「个人微信收款」Tab,仅保留「我的收款方式」和「特约商户开户」
2. 移除个人微信收款相关的状态、函数和表单
3. 更新空状态提示,引导用户完成进件
4. 更新页面标题和副标题,强调完成进件后即可收款
业务决策:
- 暂时关闭个人微信零钱收款(PERSONAL_OPENID分账)
- 当前阶段所有用户(包括个人用户)必须完成特约商户进件才能收款
- 后续版本有必要时再开放个人微信收款
|
2026-09-06 23:33:27 +08:00 |
|
Pine
|
ea6d049eb7
|
载体折扣设置+个人资料扩展+我的余额页面
载体端:
- Discounts.tsx:载体折扣设置页面(默认折扣/企业折扣/账号折扣)
- 菜单和路由配置
个人资料扩展:
- UserCompaniesSection.tsx:归属企业组件(企业列表/角色/余额/退出企业)
- Profile.tsx:集成归属企业模块
我的余额页面:
- MyBalance.tsx:余额总览/企业余额明细/算力使用记录
- 菜单和路由配置
TypeScript类型检查通过
|
2026-09-06 18:13:41 +08:00 |
|
Pine
|
440f4ae246
|
企业管理功能 - 桌面端核心实现
API模块:
- compute.ts:算力多级折扣与余额API(运营/载体/企业/个人/内部接口)
- ent.ts:企业管理API(信息/成员/转园/余额)
企业管理页面:
- Layout.tsx:企业管理布局组件(自动加载企业上下文,未绑定显示提示)
- Info.tsx:企业信息页面(展示/编辑企业资料、员工统计)
- Members.tsx:成员管理页面(成员列表、添加成员、移除成员)
- Compute.tsx:算力余额页面(余额总览、充值、成员分配/回收、记录)
菜单和路由:
- 新增企业管理菜单分组(企业信息/成员管理/算力余额)
- 新增3个企业管理路由
- 所有登录用户可见菜单,页面内部检查企业管理员权限
设计规范:
- 毛玻璃材质卡片
- 苹果风格按钮
- 渐变配色
- TypeScript类型检查通过
|
2026-09-06 18:07:04 +08:00 |
|
Pine
|
de90906895
|
feat: admin端载体方功能迁移到桌面端园区管理
- 新增桌面端园区API模块 park.ts(完整的园区管理接口)
- 新增统一园区管理工作台页面 ParkWorkbench.tsx(13个功能模块Tabs)
- 企业管理(增删改查、算力折扣/配额管理)
- 用户管理(园区用户列表)
- 入园申请审核(通过/驳回)
- 转园申请审核(同意转入/拒绝)
- 任务管理(发布/状态更新)
- 资讯管理(发布园区资讯)
- 知识库(文档增删改查、重建索引)
- 智能体配置(系统提示词、欢迎语、启用开关)
- 屏幕管理(大屏绑定/解绑)
- 大屏控制台(刷新/重启/截屏/音量控制)
- 大屏数据配置(园区名称/简介/锚点)
- 视频识别配置(API地址配置)
- 载体资料(提交后需运营端审核)
- 更新路由配置 /carrier/park
- 更新菜单配置(园区管理菜单项)
- yarn build 构建成功
|
2026-09-06 15:29:19 +08:00 |
|
Pine
|
2503f1dddd
|
fix: 全面清除英文系统标识,信用徽章/维度/市场分类/技能分类全部中文映射兜底
|
2026-09-06 14:04:05 +08:00 |
|
Pine
|
e1ddf9e197
|
fix(ui): 修复服务页面结构 - page容器缺失和分页器位置
ServicesMine页面问题:
1. 缺少page容器(用了fragment而非div.page), 导致opc-page类不生效, antd毛玻璃覆盖不触发, Segmented显示为普通按钮
2. 分页器在pageBody内部, 未固定在视口底部
修复:
- fragment → div.page + opc-page
- 分页器移到pageBody外部, 作为page直接子元素
- 使用pageStyles.pageFooter替代manageStyles.footer
|
2026-09-06 13:15:42 +08:00 |
|
Pine
|
dda19e7ce4
|
feat: 新增关于页面,说明软件许可、版权与权利声明
- 创建设置/关于页面,包含产品信息、许可协议、修改说明、第三方组件声明
- 明确分发形式为二进制桌面应用,不随附源代码
- 内嵌商业许可协议与 Apache 2.0 摘要,满足二进制分发场景的声明义务
- LICENSE/LICENSE_QwenPaw/NOTICE 随 Tauri 打包分发
- 菜单位于智能体设置分组末尾
|
2026-09-02 18:51:03 +08:00 |
|
Pine
|
9b30f681c6
|
feat: 智能体控制台前端(console)
- React+antd+zustand,注册表驱动路由/菜单/权限
- Tauri 桌面壳、后端托管 SPA、跨标签页消息队列
|
2026-08-23 22:43:18 +08:00 |
|