90 KiB
90 KiB
Progress Log
2026-06-03 Model Provider Runtime Sync
- 用户反馈:设置默认模型改为 DeepSeek 后,实际运行仍使用 MiniMax。
- 已确认本机 provider account store 默认值为 DeepSeek:
deepseek-a1e23f39-4296-4762-8bdf-184ca677cce6/deepseek-v4-pro。 - 已确认 OpenClaw runtime 仍为
minimax-portal/MiniMax-M3,并带有旧yinian-model/custom-model占位 provider。 - 日志显示 DeepSeek 保存和默认切换后只触发 Gateway reload;Gateway reload/reconnect 随后写回旧内存 config,覆盖了刚写入的 DeepSeek runtime 配置。
- 已将 provider 保存、更新、默认切换后的 Gateway 刷新策略改为 restart,避免 reload 用旧内存状态覆盖
openclaw.json。 - 已将 legacy
getDefaultProvider()改为优先读取defaultProviderAccountId,并让getAllProviders()合并 legacy provider 与 account store,account store 作为新配置源可参与 agent model 同步。 - 已更新
model-diagnostics:启动/诊断修复不再把 legacy MiniMax 默认迁移成yinian-model/custom-model,只清理https://api.example.com/v1这类旧占位 provider,并删除对应yinian-model:*auth 残留。 - 已手动修复本机
~/.openclaw/openclaw.json,当前默认模型为deepseek/deepseek-v4-pro,provider 配置为https://api.deepseek.com/v1+openai-completions;Gateway 重启日志确认启动前写入 DeepSeek 默认。 - 当前运行态保留
minimax-portalprovider 条目是因为本机仍有 MiniMax 账号配置,但它不再是默认模型;yinian-modelprovider/auth 残留已清除。 - 用户随后反馈:设置页“模型服务”仍显示
yinian-model/ MiniMax 固定缺失提示。 - 已修复 diagnostics 数据源:
buildProviderDiagnostics()改为只展示当前默认模型和 fallbacks 实际引用的 provider;auth profiles 也按这些 provider 过滤,不再把yinian-model、minimax、minimax-portal当作固定诊断项。 - 已更新设置页文案为空态:
模型服务改为当前模型服务,调用凭据改为当前调用凭据。 - 真实 diagnostics 函数输出确认:
providers=[deepseek],authProviders=[deepseek],没有yinian-model/ MiniMax 固定缺失项。 - Verification passed:
pnpm exec vitest run tests/unit/model-diagnostics.test.ts tests/unit/provider-runtime-sync.test.tspnpm exec vitest run tests/unit/model-diagnostics.test.ts tests/unit/provider-runtime-sync.test.ts tests/unit/provider-service-stale-cleanup.test.ts tests/unit/yinian-initializer.test.ts tests/unit/settings-advanced-model-config.test.tsxpnpm exec vitest run tests/unit/model-diagnostics.test.ts tests/unit/settings-advanced-model-config.test.tsxpnpm exec vitest run tests/unit/model-diagnostics.test.ts tests/unit/settings-advanced-model-config.test.tsx tests/unit/provider-runtime-sync.test.ts tests/unit/provider-service-stale-cleanup.test.ts tests/unit/yinian-initializer.test.tspnpm exec tsc --noEmit --pretty falsepnpm run build:vitegit diff --check
2026-05-14 渠道插件运行产物与飞书加固
- 客户日志确认:微信渠道失败不是配置本身,而是
~/.openclaw/extensions/openclaw-weixin被安装成 TypeScript 源码包,缺少 Gateway 可直接加载的 JS 运行入口。 - 已新增插件运行入口检测:同版本插件如果已安装但缺
openclaw.extensions/main/module指向的 JS 文件,会自动从 bundled mirror 重装。 - 已修改插件打包链路:
@tencent-weixin/openclaw-weixin复制后自动转译index.ts/src/**/*.ts到dist/,并把openclaw.extensions改为./dist/index.js。@larksuite/openclaw-lark@2026.5.13加入依赖和 bundled plugin 列表。- 修正官方飞书包
main指向缺失dist/index.js的问题,使用实际存在的./index.js。 - 给缺少
channelConfigs的微信 manifest 补兼容 channel schema,避免 OpenClaw 扫描 warning。
- 已解除飞书硬禁用:API route、IPC handler、channel-config、openclaw-auth 都不再把
feishu当作内测禁用渠道。 - 保存飞书配置前会安装
openclaw-lark插件;Gateway 启动前也会按已配置渠道自动安装/修复。 - 已运行
pnpm run bundle:openclaw-plugins,生成:build/openclaw-plugins/openclaw-weixin/dist/index.jsbuild/openclaw-plugins/openclaw-lark/index.js
- 使用临时 HOME 把两个插件复制到
.openclaw/extensions后执行 OpenClaw 插件扫描,结果:openclaw-weixin:status=loaded,channels=["openclaw-weixin"],missing=[]openclaw-lark:status=loaded,channels=["feishu"],missing=[]- diagnostics 为空。
- Verification passed:
pnpm run bundle:openclaw-pluginspnpm vitest run tests/unit/plugin-install.test.ts tests/unit/channel-config.test.ts tests/unit/channel-routes.test.ts tests/unit/config-sync.test.tspnpm run typecheckpnpm run package:mac:pilot:arm64- Packaged resource check for
release/mac-arm64/智念助手.app/Contents/Resources/openclaw-plugins/* codesign --verify --deep --strict --verbose=2 release/mac-arm64/智念助手.apphdiutil verify release/智念助手-0.1.0-mac-arm64.dmg
- Packaging note: first packaging attempt failed because
@larksuite/openclaw-larkwas added under runtimedependencies;scripts/assert-electron-runtime-deps.mjscorrectly flagged it as a double-pack risk. Moved it todevDependencies, while the plugin bundle script still copies it into app resources. - New pilot artifacts:
release/智念助手-0.1.0-mac-arm64.dmg(1.6G)release/智念助手-0.1.0-mac-arm64.zip(1.5G)release/latest-mac.yml
- macOS notarization remains skipped by existing builder config:
notarizeoptions were unable to be generated.
2026-05-13 macOS DMG 打包
- 用户要求打 DMG 安装包,并确保新增/预置 skill 默认放进去。
- 已确认不能使用
package:mac:local,因为它会设置SKIP_PREINSTALLED_SKILLS=1。 - 当前正式
package:mac链路会执行scripts/bundle-preinstalled-skills.mjs,并通过electron-builder.yml将build/preinstalled-skills/放入resources/preinstalled-skills/。 - 当前 preinstalled manifest 包含并默认启用:
docx、pdf、pptx、xlsx、design、html-slides、image-search、web-search。 - 已停止当前
pnpm dev,Gateway 随 dev 进程停止。 - 已运行
pnpm run bundle:preinstalled-skills,8 个技能均成功进入build/preinstalled-skills,锁文件已刷新。 pnpm run package:mac首次执行在prep:mac-binaries阶段下载 x64uv时因 GitHub 连接超时中断。- 本机 arm64
node/uv运行时已存在;下一步改用pnpm run package+pnpm exec electron-builder --mac --arm64 --publish never生成 arm64 DMG,并继续包含预置 skills。 - 已完成 arm64 DMG 打包:
release/智念助手-0.1.0-mac-arm64.dmg,约 1.6G。 - 同步生成:
release/智念助手-0.1.0-mac-arm64.zip、.blockmap和release/latest-mac.yml。 - 已验证最终
.app内resources/preinstalled-skills包含 8 个默认 skill,且 manifest 中全部为autoEnable: true。 codesign --verify --deep --strict --verbose=2 release/mac-arm64/智念助手.app通过。hdiutil verify release/智念助手-0.1.0-mac-arm64.dmg通过,checksum valid。- Electron Builder 本次提示未执行 macOS notarization:
notarizeoptions were unable to be generated。
2026-05-13 对话 Markdown 与隐藏提示泄漏修复
- 收到用户反馈:会话里出现
[[YINIAN_BUSINESS_RESPONSE_GUIDANCE]],Markdown/表格渲染还不够结构化,执行思考不需要边框。 - 已停止 direct chat 和 cron 路由在真实消息里追加隐藏业务准则,改为依赖
AGENTS.clawx.md中的基础业务行为准则。 - 已在用户消息显示、会话标题/去重清洗链路补上隐藏准则剥离,兼容已经污染的旧历史。
- 已增强 ChatMessage 的 Markdown 标题、列表、引用、表格渲染;表格增加滚动外壳和数据表样式。
- 已将 ExecutionGraphCard 从边框卡片改为无框时间线视觉。
- 已补充单测覆盖隐藏准则不显示、Markdown 表格增强渲染、chat/cron 不再发送隐藏准则。
- 表格专项 E2E 首次失败,原因是旧用例停在默认新会话路由,未加载种子历史;已固定到
#/chat并重跑通过。 - 根据用户反馈,已删除新对话空态中的 icon 和“智念助手对话”小标题,只保留“今天从哪里开始?”。
- 新对话空态 cleanup 后重新运行
pnpm run typecheck,通过。 - Verification passed:
pnpm vitest run tests/unit/chat-message.test.tsx tests/unit/chat-target-routing.test.ts tests/unit/cron-routes.test.ts tests/unit/business-guidance.test.tspnpm vitest run tests/unit/chat-page-execution-graph.test.tsx tests/unit/task-visualization.test.ts tests/unit/chat-store-history-retry.test.tspnpm vitest run tests/unit/chat-message.test.tsx tests/unit/chat-target-routing.test.ts tests/unit/cron-routes.test.ts tests/unit/chat-store-history-retry.test.tspnpm run typecheckpnpm run build:vitepnpm exec playwright test tests/e2e/yinian-delivery-smoke.spec.tspnpm exec playwright test --config=playwright.legacy.config.ts tests/e2e/yinian-visual-smoke.spec.tspnpm exec playwright test --config=playwright.legacy.config.ts tests/e2e/chat-table-header-light.spec.tsgit diff --check
2026-05-13 设置偏好深色 UI
- Started dark-mode Preferences investigation after user report.
- Captured current Electron screenshot for
/settings/preferencesin dark mode. - Identified low-contrast preference buttons, missing Preferences panel hierarchy, translucent dark title bar band, and missing global dark surface fallback as the main issues.
- Updated Preferences into a structured
yinian-panelwith divided rows and higher-contrast active/inactive choice controls. - Normalized dark backgrounds for
body,.yinian-app-surface,MainLayout,TitleBar,Tabs, and shared YINIAN panels. - Verified:
pnpm run typecheckpnpm exec vitest run tests/unit/title-bar.test.tsx tests/unit/launch-at-startup.test.ts tests/unit/app-center.test.tsx tests/unit/nianxx-play-url.test.tspnpm run build:vite- Electron screenshot at
test-results/settings-preferences-dark-electron-after.png pnpm exec playwright test tests/e2e/yinian-delivery-smoke.spec.ts
- Attempted
pnpm exec playwright test --config=playwright.legacy.config.ts tests/e2e/settings-proxy.spec.ts; it failed before reaching Settings because the legacy setup helper still expectsmain-layoutimmediately after setup instead of the current login-first flow.
2026-04-26
- Completed full test run after M1 foundation work.
- Fixed E2E compatibility around YINIAN login-first routing.
- Fixed E2E default language mismatch by using English in E2E mode.
- Fixed E2E gateway status initialization without reintroducing auto-start.
- Verified:
pnpm run typecheckpnpm run testpnpm run test:e2e
- Created persistent planning files:
task_plan.mdfindings.mdprogress.md
- Began Phase 1 M1 stabilization.
- Added
docs/M1_HANDOFF.mdwith module inventory, env switches, storage boundary, public API, and verification baseline. - Updated
docs/START_HERE.mdto point to the M1 handoff note and E2E command. - Fixed channel health timestamp edge case in
electron/api/routes/channels.ts. - Verified Phase 1:
pnpm exec vitest run tests/unit/channel-routes.test.tspnpm run typecheckpnpm run testpnpm run test:e2e
- Phase 1 marked complete.
- Began and completed Phase 2 server contract v0.
- Added
docs/SERVER_CONTRACT_V0.md. - Added contract fixture
tests/fixtures/yinian-server-contract.ts. - Updated
electron/yinian/http-control-plane.ts:/auth/refreshsession restore.- access token remains memory-only.
- refresh token persists for restore.
- config entitlement/channel/ui policy normalization.
- manifest sync returns local registry statuses.
- Expanded
tests/unit/yinian-control-plane.test.tsfrom 6 to 11 tests, including HTTP contract paths and failure handling. - Verified Phase 2:
pnpm exec vitest run tests/unit/yinian-control-plane.test.tspnpm run typecheckpnpm run testpnpm run test:e2e
- Began and completed Phase 3 Today M2 pilot surface.
- Rebuilt
src/pages/Today/index.tsxinto a B-end operations cockpit:- health summary
- pending/exception queue
- arrival/departure summary
- skill status board
- recent agent actions
- skill sync error state
- Added
tests/unit/today-page.test.tsx. - Verified Phase 3:
pnpm exec vitest run tests/unit/today-page.test.tsxpnpm run typecheckpnpm run testpnpm run test:e2e
- Began and completed Phase 4 Skills Manager M2.
- Rebuilt
src/pages/YinianSkills/index.tsxinto an operator-facing Skills Manager:- entitlement/local registry merged status
- version and update visibility
- sync failure and empty registry states
- local source, bundle hash, install/sync timestamps
- workspace-scoped registry reload
- Added
tests/unit/yinian-skills-page.test.tsx. - Verified Phase 4:
pnpm exec vitest run tests/unit/yinian-skills-page.test.tsxpnpm run typecheckpnpm run testpnpm run test:e2e
- Began and completed Phase 5 Design System Pass.
- Added
src/components/yinian/ui.tsxwith shared YINIAN UI primitives:- page shell
- page header
- panel
- empty state
- notice
- metric card
- primary/accent classes
- Updated Login, Today, Skills, sidebar service context, main layout, and sidebar active states to use a calmer navy/slate B-end business style.
- Verified Phase 5:
pnpm run typecheckpnpm exec vitest run tests/unit/today-page.test.tsx tests/unit/yinian-skills-page.test.tsx tests/unit/yinian-store.test.ts tests/unit/yinian-skills-store.test.tspnpm run testpnpm run build:vitepnpm run test:e2e
- Began and completed Phase 6 Pilot Packaging And QA.
- Added
docs/PILOT_QA.mdwith:- pilot scope
- mock/HTTP/E2E modes
- guided demo script
- QA checklist
- verification commands
- packaging notes
- known issues and product gaps
- Updated
docs/START_HERE.mdwith pilot QA andbuild:vite. - Updated
docs/M1_HANDOFF.mdto reference the current pilot QA baseline and current test counts.
Next
- Await commit instruction, or start the next product phase: real server integration and first real business skill execution path.
2026-05-13 Task Center Iteration
- Continued the approved task center implementation after context compaction.
- Added
/tasksroute and redirected legacy/cronto/tasks?tab=scheduled. - Reworked the production sidebar into three business groups:
- 快速使用:应用中心、知识库
- 任务:任务中心
- 对话:新对话、历史会话
- Added the task center page with 快捷任务、定时任务、执行记录 tabs.
- Centralized quick-task prompt construction in
src/lib/quick-task-prompt.ts. - Added persisted task center bindings/run records in
src/stores/task-center.ts. - Split task center persistence into
yinian:scheduled-task-bindingsandyinian:task-run-records, with a migration fallback from the temporary combined key. - Moved visible quick-task management out of the settings capability-pack tabs and into task center.
- Added Chinese and English task-center locale files and wired the
tasksnamespace. - Updated delivery smoke expectations from the legacy cron page to task center.
- Verified focused tests:
pnpm exec vitest run tests/unit/quick-task-prompt.test.ts tests/unit/task-center-store.test.ts tests/unit/chat-input.test.tsx
- Fixed current test expectations for the managed preinstalled skill list (
web-searchis now included) and current-session execution-graph state. - Verified final gate for this slice:
pnpm run typecheckpnpm testpnpm run build:vitepnpm exec playwright test tests/e2e/yinian-delivery-smoke.spec.ts
2026-05-13 Task Center Separation Follow-up
- Removed quick-capability surfaces from
src/pages/Tasks/index.tsx; Task Center now has only scheduled tasks and run history. - Removed quick-capability template selection from the scheduled-task dialog.
- Stopped creating scheduled-task quick-capability bindings; edit/delete still clears stale legacy bindings for the affected cron job.
- Fixed
@mention keyboard navigation by preserving selection across navigation keyup events and guarding browser-onlyscrollIntoView. - Replaced raw custom time entry with structured repeat controls that generate cron expressions for daily, weekly, monthly, and interval schedules, with advanced Cron as fallback.
- Updated Chinese/English task-center copy and tests.
- Verification:
pnpm run typecheckpnpm vitest run tests/unit/tasks-page.test.tsx tests/unit/task-center-store.test.tspnpm testpnpm run build:vitepnpm exec playwright test tests/e2e/yinian-delivery-smoke.spec.ts
- Notes:
- First E2E attempt failed because
distwas stale and still exposedtasks-tab-quick; rebuilding fixed it. - Existing MaxListeners and Vite chunk warnings remain unchanged.
- First E2E attempt failed because
- Follow-up fix:
- Allowed
@capability mentions inside sentence text instead of only after whitespace or at the start. - Stored the mention replacement end position so clicking a suggestion preserves text after the cursor.
- Verified with
pnpm run typecheck,pnpm vitest run tests/unit/tasks-page.test.tsx, andpnpm test.
- Allowed
- Task Center pinning follow-up:
- Renamed the scheduled-task product surface to “任务中心” while leaving execution-time settings unchanged.
- Added pinned task ids in
useTaskCenterStoreand task-card pin/unpin controls. - Added sidebar quick triggers for pinned tasks; clicking one immediately calls the existing cron trigger path and records a run.
- Updated Today/task/sidebar related copy and tests.
- Verified:
pnpm run typecheckpnpm vitest run tests/unit/tasks-page.test.tsx tests/unit/task-center-store.test.ts tests/unit/today-page.test.tsxpnpm testpnpm run build:vitepnpm exec playwright test tests/e2e/yinian-delivery-smoke.spec.ts
- Task Center density and sidebar structure follow-up:
- Converted Task Center management from two-column cards to a compact list/table layout.
- Preserved enable/disable, delivery visibility, execution metadata, pin, run-now, edit, open-session, and delete actions.
- Moved task metrics into compact header chips and kept execution-time settings untouched.
- Reorganized the sidebar navigation into a scrollable structured area with bounded pinned quick triggers.
- Verified with typecheck, focused task tests, full tests, Vite build, and delivery smoke E2E.
- Immediate history visibility follow-up:
- Added shared local session visibility patching for optimistic history rows.
- New desktop sessions now receive local
updatedAtimmediately, while unused blank sessions remain cleanable. - First sent messages upsert local session row, label, and activity in the same state update.
- Cron trigger and Gateway started/completed notifications now make automation sessions visible before
sessions.listcatches up. - Verified with typecheck, focused chat/gateway/cron/task tests, full tests, Vite build, and delivery smoke E2E.
- Task execution conversation follow-up:
- Kept each task on its stable
agent:main:cron:<jobId>conversation. - Task Center "立即执行" now switches to that task conversation and opens Chat immediately.
- Sidebar pinned task triggers do the same, so customer follow-up lands in the right thread.
- Added a focused regression test and verified with typecheck, focused tests, full tests, Vite build, and delivery smoke E2E.
- Kept each task on its stable
- Task conversation naming follow-up:
- Task sessions now force label/displayName to the task name on run, open, sidebar trigger, and cron-trigger visibility updates.
- Cron task sessions are protected from the normal "first user message becomes session name" behavior.
- Gateway automation events try to backfill task names from local cron jobs when available.
- Verified with typecheck, focused chat/task/gateway/cron tests, full tests, Vite build, and delivery smoke E2E.
- Task history merge reliability follow-up:
- Fixed task session loads to merge Gateway
chat.historywith cron run-log fallback instead of choosing one source. - Added near-duplicate filtering and timestamp sorting for merged cron history.
- Failed cron run fallback messages now use assistant role with
isErrorso they remain visible. - Added focused tests for partial Gateway history plus fallback merge and failed fallback visibility.
- Verified with typecheck, focused history/cron/task/gateway tests, full tests, Vite build, and delivery smoke E2E.
- Fixed task session loads to merge Gateway
2026-04-26 Brand/UI System
- Generated and persisted the 智念助手 design system at
design-system/智念助手/MASTER.md. - Began project-wide UI customization with the brand foundation:
- replaced the app icon source SVGs in
resources/icons/ - generated desktop icon outputs with
pnpm run icons - replaced renderer wordmark at
src/assets/logo.svg - updated package metadata and electron-builder product metadata
- updated window title, Linux desktop identity, tray labels, startup desktop entry, Login, Sidebar, and Windows title bar branding
- replaced the app icon source SVGs in
- Verified:
pnpm run typecheckpnpm run build:vitepnpm exec vitest run tests/unit/launch-at-startup.test.ts tests/unit/today-page.test.tsx tests/unit/yinian-skills-page.test.tsx
- Completed UI Customization Phase 2 Core Surface Refinement:
- expanded
src/components/yinian/ui.tsxwith header actions, kicker, status dot, info row, list item, and section panel primitives - refined Login with stronger product narrative and a cleaner form panel
- refactored Today sections and operational rows onto shared primitives
- refactored Skills Manager cards onto shared panels/info rows
- refined sidebar service context into a clearer workspace context surface
- expanded
- Verified Phase 2:
pnpm run typecheckpnpm exec vitest run tests/unit/today-page.test.tsx tests/unit/yinian-skills-page.test.tsx tests/unit/yinian-store.test.ts tests/unit/yinian-skills-store.test.ts tests/unit/launch-at-startup.test.tspnpm run build:vite
- Completed UI Customization Phase 3 Inherited Surface Brand Boundary:
- grouped Sidebar navigation into 快速使用, AI 工作, and 扩展
- kept route test ids stable
- updated major Chinese Chat/Settings/Setup customer-facing strings from ClawX to 智念助手
- updated Setup welcome logo alt/asset naming
- Verified Phase 3:
pnpm run typecheckpnpm exec vitest run tests/unit/today-page.test.tsx tests/unit/yinian-skills-page.test.tsx tests/unit/launch-at-startup.test.tspnpm run build:vitepnpm exec playwright test tests/e2e/main-navigation.spec.ts tests/e2e/settings-proxy.spec.ts tests/e2e/app-smoke.spec.ts
- Completed UI Customization Phase 4 Inherited Page Visual Polish:
- removed inherited oversized serif heading style from Chat, Settings, Models, Agents, Channels, and Cron surfaces
- normalized headings toward compact system-font dashboard treatment
- replaced remaining major Chinese customer-visible ClawX copy in Agents, Cron, Channels, Chat, Settings, and Setup
- retained technical upstream GitHub references where still useful
- Verified Phase 4:
pnpm run typecheckpnpm exec vitest run tests/unit/today-page.test.tsx tests/unit/yinian-skills-page.test.tsx tests/unit/launch-at-startup.test.tspnpm run build:vitepnpm exec playwright test tests/e2e/main-navigation.spec.ts tests/e2e/settings-proxy.spec.ts tests/e2e/provider-lifecycle.spec.ts tests/e2e/app-smoke.spec.ts
- Completed UI Customization Phase 5 Screenshot Visual QA:
- added
tests/e2e/yinian-visual-smoke.spec.ts - captured Login, Today, and Skills desktop baselines in
test-results/yinian-visual/ - fixed fresh-user production routing so unauthenticated sessions land on 智念登录 instead of legacy setup
- visually inspected the 1440x900 screenshots for obvious overlap, blank states, and brand consistency
- added
- Verified Phase 5:
pnpm run typecheckpnpm run build:vitepnpm exec playwright test tests/e2e/yinian-visual-smoke.spec.ts
2026-04-26 B-end Repositioning Pass
- Repositioned customer-facing copy from a hotel-only product to a broader B-end AI Agent desktop product.
- Sidebar primary usage group is now
快速使用. - Login, Today, Skills, tray tooltip, installer metadata, zh setup/chat/settings copy, and pilot docs now use workspace/business-object language.
- Mock control-plane demo data now uses
智念杭州运营空间and智念上海增长空间. - Added compatibility aliases (
YinianWorkspace,switchWorkspace) while keeping existinghotelId/switchHotelinternals stable for storage and HTTP contract safety. - Verified:
pnpm run typecheckpnpm exec vitest run tests/unit/yinian-control-plane.test.ts tests/unit/yinian-store.test.ts tests/unit/yinian-skills-store.test.ts tests/unit/today-page.test.tsx tests/unit/yinian-skills-page.test.tsx tests/unit/launch-at-startup.test.tspnpm run build:vitepnpm exec playwright test tests/e2e/yinian-visual-smoke.spec.ts
2026-04-26 Shell Simplification Pass
- Removed the old top workspace bar from
MainLayout. - Moved current service context into the left sidebar as a non-switching account-bound service card.
- Moved sync and logout actions into the sidebar footer.
- Deleted the old
Yiniansidebar service contextcomponent so future work does not reintroduce the top switcher accidentally. - Refreshed visual baselines for Login, Today, and Skills.
- Verified:
pnpm run typecheckpnpm exec vitest run tests/unit/today-page.test.tsx tests/unit/yinian-skills-page.test.tsx tests/unit/yinian-store.test.tspnpm run build:vitepnpm exec playwright test tests/e2e/yinian-visual-smoke.spec.ts
2026-04-26 Sidebar IA Pass
- Optimized the left sidebar around the two core customer areas:
快速使用: Today and Skills.对话: New Chat and Chat.
- Hid Models, Agents, Channels, Cron, and Dev Console from the production sidebar because these capabilities should be issued and governed by the service side.
- Kept legacy configuration navigation available only in
e2e=1compatibility mode so inherited tests can still cover the old surfaces. - Moved service sync, logout, and the "configuration is service-managed" explanation into Settings.
- Added Settings to the visual smoke screenshot baseline at
test-results/yinian-visual/04-settings.png. - Verified:
pnpm run build:vitepnpm exec playwright test tests/e2e/yinian-visual-smoke.spec.ts
2026-04-26 Sidebar UX Pass
- Moved the Dashboard/Today entry onto the top service card, so the current service object doubles as the dashboard launcher.
- Rebuilt
快速使用as three direct actions:- Skills
- 定时任务
- 知识库
- Added
src/pages/Knowledge/index.tsxand/knowledgefor a v0 knowledge-base upload/search/list surface. - Reworked
对话into:新对话历史会话
历史会话now opens a hover popover with the session list and clicks through to the latest session.- Updated visual smoke screenshots:
test-results/yinian-visual/04-knowledge.pngtest-results/yinian-visual/05-settings.png
- Verified:
pnpm run typecheckpnpm run build:vitepnpm exec playwright test tests/e2e/yinian-visual-smoke.spec.ts tests/e2e/main-navigation.spec.ts
2026-04-26 Enterprise Space Service Integration
- Started service integration discovery for CloudClaw.
- Attempted anonymous repository access:
git ls-remote https://git.nianxx.cn/brother7/CloudClaw.git- Result: repository requires authentication.
- Recorded current desktop assumptions and backend questions in
findings.md. - Connected to the user's logged-in Chrome session via CDP and read CloudClaw source pages.
- Confirmed current CloudClaw backend is the OpenClaw cloud sync MVP and does not yet include enterprise app/skill distribution routes.
- Added desktop-side configurable config/app manifest endpoint support and app-shaped manifest normalization.
- Added missing manifest fallback so
/skills/manifest404 stores an empty local registry instead of surfacing an operator-facing crash. - Added the CloudClaw
openclaw-cloud-syncplugin as a 智念内置 OpenClaw plugin mirror:- source mirror:
resources/openclaw-plugins/cloud-sync - dev mirror:
build/openclaw-plugins/cloud-sync - startup install target:
~/.openclaw/extensions/cloud-sync
- source mirror:
- Added startup config sync for
plugins.entries.cloud-sync.config.serverUrl. - Added static plugin copying to
scripts/bundle-openclaw-plugins.mjsandscripts/after-pack.cjs. - Adapted the plugin metadata/commands for the current OpenClaw runtime:
openclaw.extensionsis emitted as a string entry list.- command registrations use
name/description/handler.
- Verified:
pnpm run typecheckpnpm vitest run tests/unit/plugin-install.test.ts tests/unit/yinian-control-plane.test.tspnpm run bundle:openclaw-pluginsnode node_modules/openclaw/openclaw.mjs plugins list | rg -n "cloud-sync|cloud_sync|Cloud Sync|failed|error" -C 2 || true
2026-04-26 Engineering Assessment Snapshot
- Ran a testing-stage engineering assessment after the CloudClaw direct plugin integration.
- Current tracked diff is broad: 69 modified tracked files plus new YINIAN/product modules, docs, design system, Cloud Sync plugin mirror, and tests.
- Verification results:
pnpm run typecheck: passedpnpm run build:vite: passed, with large renderer chunk warning (~1.6MB minified / ~481KB gzip)pnpm run test: failed; 88 test files passed, 2 failed; 584 tests passed, 5 failed- focused E2E (
yinian-visual-smoke,main-navigation,app-smoke): 4 passed, 1 failed
- Unit failures are mostly stale expectations after customer-facing terminology changed from Skills/registry to 应用/本机准备.
- Visual E2E failure is a real test-flow gap: production login now requires captcha input, but the visual smoke test still clicks login without filling account/password/captcha.
- Compatibility E2E for legacy setup/main navigation still passed.
- Cloud Sync plugin is loaded by
openclaw plugins list, but remains infrastructure-only until its server URL/account contract is finalized.
2026-04-26 Stabilization Pass
- Fixed stale customer-facing terminology expectations in Today and Applications unit tests.
- Fixed the 智念 visual smoke login flow so it fills account/password, and relaxed captcha submit gating when mock mode has no captcha image.
- Added Cloud Sync startup config tests:
- server URL derivation from explicit env, API base URL, and default.
- plugin entry writing before Gateway launch.
- disabled mode skips install/config writes.
- Added knowledge-base import boundary tests:
- missing files are rejected without registry writes.
- newer imports are listed first.
- invalid
.docxfiles are rejected before entering the registry.
- Verification:
pnpm run typecheck: passedpnpm run test: passed, 90 files / 595 testspnpm run build:vite: passed, with existing chunk-size and dynamic/static import warningspnpm run test:e2e: passed, 27 passed / 1 skipped
2026-04-26 Product Simplification Pass
- Removed unsupported account/service profile signals from customer-facing UI:
- service city / region
- account role / position
- role labels in sidebar and Settings
- Removed unsupported dashboard signals:
运营健康度- fake business pending metrics
- recent application run traces derived from mock placeholders
- notification-method count from the dashboard
- Reworked Today into a lighter application readiness dashboard:
- opened apps
- locally ready apps
- pending sync
- sync failures
- service/account summary
- Reworked login side panel from numeric marketing claims into stable product areas:
- account login
- application delivery
- knowledge base
- Simplified
YinianHotelinshared/yinian.tsto service identity only:id,name, optionalbrand. - Updated mock control-plane, contract fixtures, tests, and pilot QA docs from hotel/OTA samples to generic enterprise service/application samples.
- Verification:
pnpm run typecheck: passed- focused YINIAN unit tests: passed, 5 files / 37 tests
pnpm run test: passed, 90 files / 595 testspnpm run build:vite: passed, with existing Vite warningspnpm exec playwright test tests/e2e/yinian-visual-smoke.spec.ts: passed
2026-04-26 Interaction And Knowledge Fixes
- Stabilized the sidebar history popover with delayed close handling so it is less likely to close while moving across the New Chat / History area.
- Added saved account/password support on the login page:
- renderer loads saved credentials on login page mount.
- main process stores them in the YINIAN namespace.
- password is encrypted with Electron
safeStoragewhen available, with a dev/test fallback.
- Changed knowledge-base chat context from file-path references to actual local-backup content injection through
/api/knowledge/context. - Added tests proving a knowledge file still works after the original source file is deleted.
- Updated user-facing
服务空间language to组织空间. - Removed the preset quick-question buttons from the empty chat screen.
- Fixed the
gateway-ready-fallbackunit test so it no longer tries to start a real Gateway while fake timers are active. - Verification:
pnpm run typecheck: passed- focused unit tests: passed, 5 files / 42 tests
pnpm run test: passed, 90 files / 598 testspnpm run build:vite: passed, with existing Vite warningspnpm exec playwright test tests/e2e/yinian-visual-smoke.spec.ts: passed
2026-04-26 Chat Layout Responsiveness Fix
- Fixed chat page sizing after sidebar collapse:
- main content now allows flex children to shrink/grow with
min-w-0. - chat page no longer relies on negative margins and viewport-height calculation.
- chat messages and composer now use a wider responsive max width.
- knowledge context popover is capped for narrow windows.
- main content now allows flex children to shrink/grow with
- Electron layout verification at 1120x760:
- expanded sidebar: main 864px, composer 816px.
- collapsed sidebar: main 1056px, composer 1008px.
- Verification:
pnpm run typecheck: passed- focused chat unit tests: passed, 2 files / 4 tests
pnpm run build:vite: passed, with existing Vite warnings
2026-04-26 Settings Tabs Cleanup
- Reworked Settings into tabbed sections:
- 账号与组织
- 使用偏好
- 运行维护
- 高级工具
- 关于
- Kept server-managed capability messaging under account/organization settings.
- Moved advanced diagnostics behind the 高级工具 tab while keeping the unlock switch in 运行维护.
- Removed unrelated external jump buttons from About, including website, GitHub, and FAQ links.
- Verification:
pnpm run typecheck: passedpnpm run build:vite: passed, with existing Vite warningspnpm exec playwright test tests/e2e/yinian-visual-smoke.spec.ts: passed
2026-04-27 Settings Information Architecture Update
- Reduced Settings top-level tabs to:
- 账号与组织
- 使用偏好
- 运行维护
- 更新与关于
- Compact account/organization layout:
- tightened the organization card spacing.
- moved account name into a compact inline badge.
- changed service capabilities to show only 渠道管理.
- hid AI service, assistant capability, and automatic-task strategy cards.
- Limited language options to 中文 and English in 使用偏好.
- Folded advanced tools into 运行维护.
- Merged About details into 更新与关于.
- Verification:
pnpm run typecheck: passedpnpm run build:vite: passed, with existing Vite warningspnpm exec playwright test tests/e2e/yinian-visual-smoke.spec.ts: passed
2026-04-27 Settings Channel Management Expansion
- Expanded 渠道管理 in Settings from a single service-capability row into a full management summary:
- loads
/api/channels/accounts. - displays configured channel count, channel-account count, and connected-account count.
- lists each configured channel, group status, default account, per-account status, binding target, and last error.
- adds refresh and 完整管理 actions; 完整管理 navigates to
/channels.
- loads
- Kept the compact account/organization layout while making channel status visible without leaving Settings.
- Verification:
pnpm run typecheck: passedpnpm exec vitest run tests/unit/channel-routes.test.ts: passed, 23 testspnpm run build:vite: passed, with existing Vite warningspnpm exec playwright test tests/e2e/yinian-visual-smoke.spec.ts: passed
2026-04-27 Settings Channel Module Integration
- Promoted 渠道管理 to its own Settings tab instead of showing it as a secondary service capability.
- Embedded the existing full Channels management surface in Settings:
- configured channels
- supported channels
- add/edit/delete account flows
- agent binding controls
- gateway health diagnostics
- Removed the 服务能力 module from 账号与组织.
- Merged account and update settings into 账号与更新.
- Reduced About to a bottom footnote inside 账号与更新 without a large section title.
- Verification:
pnpm run typecheck: passedpnpm exec vitest run tests/unit/channel-routes.test.ts: passed, 23 testspnpm run build:vite: passed, with existing Vite warningspnpm exec playwright test tests/e2e/yinian-visual-smoke.spec.ts: passed
2026-05-05 Project Progress Update For Version 3.5
- Updated planning status for the next phase: 3.5 will focus on integrating one large application inside 应用中心.
- Current product baseline before 3.5:
- 登录 and server auth flow are connected.
- 组织空间/service context is simplified to one account mapping to one B-end service.
- 侧边栏 is focused around Dashboard, 快速使用, 对话, and 设置.
- 应用中心 exists as a compact launcher with tag filtering and built-in app entries.
- 能力包 is separated from 应用中心 and owns service-issued/local skills plus 快捷任务配置.
- 快捷任务 now injects
使用{能力包名称} skillinto the actual user message, is single-select, and is single-use per send. - Knowledge Base v0 locally backs up imported files and can inject selected file text into chat context.
- Dev server port is now
5188, avoiding collisions with other projects using5173.
- Added a new
Version 3.5: Application Center Large-App Integrationsection totask_plan.md. - Added application-center readiness notes to
findings.md. - No code was changed for the large application in this update; this was a planning/progress synchronization step.
2026-05-05 NianxxPlay Large-App Review
- Located the candidate large app at
/Users/inmanx/Documents/NianxxPlay. - Current NianxxPlay scope:
NianxxPlay智念视频助手- Seedance 2.0 video generation workspace
- creation modes: 宣传片制作 and 创意复刻
- template-first studio, asset upload, prompt assembly, project history, billing/credits, Seedance task APIs
- Engineering shape:
- Next.js 15 App Router project.
- Not a git repository locally.
- Uses local MVP persistence through
.data/app-state.json. - Uses Aliyun OSS and Seedance/Ark API environment configuration for real generation.
- Verification:
npm test: passed, 3 files / 11 tests.npm run build: passed.- Known build warning remains in the
ali-ossdependency chain and does not currently block build.
- 3.5 integration direction:
- Treat NianxxPlay as the first large application for 应用中心.
- Prefer embedded-web hosting in 智念助手 first, because NianxxPlay owns full routes, API routes, storage, upload, and generation workflow.
- Next implementation should build the 智念 large-app host route and then connect a local NianxxPlay URL for internal testing.
2026-05-05 Bundled Runtime Assessment For NianxxPlay
- Evaluated the clarified target: NianxxPlay should be installed, updated, launched, and maintained together with the 智念助手 desktop app.
- Recommended engineering direction:
- Build NianxxPlay as a Next.js standalone runtime.
- Bundle it into 智念助手
extraResources. - Install/copy it into a desktop-managed user runtime directory.
- Launch it from Electron main process on a local loopback port.
- Render it inside 应用中心 through an embedded app host route.
- Existing desktop precedent:
- bundled OpenClaw already follows the same build -> extraResources -> managed runtime -> process lifecycle model.
- NianxxPlay should reuse this lifecycle style rather than asking customers to install development dependencies.
- Key risks logged:
- NianxxPlay project root is about 1GB in development form.
- starter media assets alone are about hundreds of MB.
.env.localcontains real credentials and must never be shipped.- local data/upload paths currently rely on
process.cwd()and must move to user-writable app-managed directories. - the current
localhost:3000assumption must become dynamic-port aware.
- Updated
task_plan.mdwith a newVersion 3.5: Bundled NianxxPlay Runtimesection. - Updated
findings.mdwith size, runtime, security, and packaging findings.
2026-05-05 App Center Focus Pass
- Removed the small demo applications from 应用中心:
- calculator
- quick note
- file converter
- web assistant
- help center
- Deleted calculator-specific route/code/test files:
src/pages/Calculator/index.tsxsrc/lib/calculator.tstests/unit/calculator.test.ts
- Added the single NianxxPlay application entry:
- id:
nianxx-play - route:
/app-center/nianxx-play - icon:
Clapperboard - category: 视频创作
- id:
- Added
src/pages/NianxxPlay/index.tsxas the first large-app host shell:- back, reload, and browser-open controls
- embedded local app frame
- service-managed account/permission/secret/billing boundary copy
- dev URL defaults to
http://127.0.0.1:3000and can be overridden withVITE_NIANXX_PLAY_URL
- Updated app-center Chinese/English copy around the single-app focus and server-managed boundaries.
- Verification:
pnpm run typecheck: passedpnpm run build:vite: passed, with existing Vite warnings- focused vitest command: passed, 1 file / 3 tests
2026-05-06 NianxxPlay Bundled Runtime Implementation
- Implemented the first packaging pass for 应用中心 large-app distribution.
- NianxxPlay changes:
- enabled Next.js standalone output in
next.config.ts. - added
/api/desktop/healthfor desktop runtime identity checks. - moved local state, uploads, and generated-result fallback paths behind env-driven runtime directories.
- added local file routes for
/uploads/*and/generated-results/*so packaged runtime can serve user-writable files outside app resources.
- enabled Next.js standalone output in
- Desktop changes:
- added
scripts/prepare-nianxx-play-bundle.mjs. - added
pnpm run prepare:nianxx-play. - wired NianxxPlay bundling into
packageandbuild. - prepared
build/apps/nianxx-playas a Next.js standalone bundle for electron-builder. - excluded
.env*,.data, local uploads, and local generated results from the shipped bundle. - updated Electron NianxxPlay service manager to detect source vs standalone runtime.
- packaged standalone runtime now launches via Electron's own Node runtime with
ELECTRON_RUN_AS_NODE, avoiding customer Node/npm dependency. - runtime data is injected under the desktop app userData directory.
- existing local NianxxPlay
.data, uploads, and generated results are migrated once into the desktop-managed runtime directory when empty. - startup health check now validates the NianxxPlay marker endpoint, so a random service on port 3000 is not mistaken for the app.
- Vite dev watch now ignores built-in app bundles to avoid reload spam while preparing large app resources.
- added
- Verification:
- NianxxPlay
npm test: passed, 3 files / 11 tests. - NianxxPlay
npm run build: passed, with the existing ali-oss dynamic dependency warning. pnpm run prepare:nianxx-play: passed.- standalone smoke test with Electron Node mode on port 3317: passed for health endpoint and homepage.
- confirmed no
.env*,.data,public/uploads, orpublic/generated-resultsentries remain in the prepared bundle. - removed local absolute source paths from the shipped bundle manifest.
- added a secret-value guard to the NianxxPlay bundle script: it scans sensitive-looking values from source env files and fails packaging if any are compiled into the shipped text bundle.
- added an internal-testing packaging path:
pnpm run prepare:nianxx-play:pilotpnpm run package:pilotpnpm run package:mac:pilot
- pilot packaging writes
.env.runtimeinto the bundled NianxxPlay runtime and Electron injects those values when launching the companion app. - desktop
pnpm run typecheck: passed. - desktop
pnpm run build:vite: passed, with existing Vite chunk warnings. - desktop dev server restarted on
http://localhost:5188/.
- NianxxPlay
2026-05-06 Pilot Package Issue Triage
- Reviewed customer screenshots and
/Users/inmanx/Desktop/clawx-2026-05-06.log. - Found three packaging/runtime blockers:
- macOS reported
clipboard.darwin-arm64.nodeas unverifiable because the shipped app is Developer ID signed but not notarized/stapled. - NianxxPlay failed immediately with
Cannot find module 'next'because electron-builder skippedbuild/apps/nianxx-play/node_moduleswhen copying extraResources. - Packaged mac build lacked bundled
uv, causing managed Python setup to fail withspawn uv ENOENT.
- macOS reported
- Applied fixes:
prep:mac-binariesnow downloads both uv and Node/npm.- afterPack now manually copies NianxxPlay
node_modulesinto the packaged resources. - afterPack removes optional
@mariozechner/clipboard*native packages from OpenClaw packaging so clipboard fallback usespbcopyinstead of loading a native.node. - CLI symlink refresh now removes broken symlinks with
rmSync(..., { force: true })before recreating.
- Follow-up validation:
pnpm run typecheck: passed.pnpm run build:vite: passed, with existing Vite chunk warnings.pnpm run prep:mac-binaries:arm64: passed; bundled arm64nodeanduvare present.- NianxxPlay pilot runtime env contains the required Seedance/OSS keys without printing secret values.
- Manual afterPack mutation of the already-built release app was used only for diagnosis; it invalidates the local app seal and must not be shipped without a fresh electron-builder packaging/signing pass.
2026-05-06 Mac arm64 Pilot Package Rebuild
- Rebuilt the internal-testing mac arm64 package with:
- bundled arm64
node - bundled arm64
uv - NianxxPlay standalone runtime env
- afterPack NianxxPlay
node_modulescopy - optional native clipboard package removal
- bundled arm64
- Generated arm64 artifacts:
release/智念助手-0.1.0-mac-arm64.dmgrelease/智念助手-0.1.0-mac-arm64.zip
- Copied the customer-facing dmg to the desktop:
/Users/inmanx/Desktop/智念助手-0.1.0-mac-arm64-内测修复版.dmg
- Verification:
- packaged app contains NianxxPlay
node_modules/next. - packaged app contains
Contents/Resources/bin/nodeandContents/Resources/bin/uv. - optional
@mariozechner/clipboard*native package is absent. codesign --verify --deep --strictpasses for the arm64 app.hdiutil verifypasses for the arm64 dmg.- packaged NianxxPlay server starts from the app bundle and
/api/desktop/healthreturns ok with Seedance and OSS services configured when.env.runtimeis loaded.
- packaged app contains NianxxPlay
- Remaining distribution caveat:
- electron-builder skipped notarization because notarize options could not be generated in the current shell;
spctlstill reportsUnnotarized Developer ID. - The script still starts redundant x64 packaging from the shared mac target config; this run was interrupted after complete arm64 artifacts were produced.
- electron-builder skipped notarization because notarize options could not be generated in the current shell;
2026-05-06 Long Task + Model Diagnostics Fix
- Fixed the chat running-state regression where Gateway
phase=endnotifications were treated as terminal completion.phase=endnow refreshes history only and keepssending/activeRunIdintact.- terminal phases remain
completed,done, andfinished.
- Added Yinian model runtime diagnostics and repair helpers:
- enforces the internal model timeout at 300s.
- disables OpenClaw startup pricing catalog fetches with
models.pricing.enabled=false. - normalizes MiniMax auth profile aliases so stale
minimax-cn:defaultcredentials also satisfy theminimax/...model reference.
- Added a Host API endpoint:
GET /api/diagnostics/model-configGET /api/diagnostics/model-config?repair=1
- Added an admin-only Settings > 运行维护 card for AI service configuration checks. It shows default model, provider state, credential presence, runtime flags, and config paths without exposing secrets.
- Loosened mac/Linux Gateway heartbeat recovery thresholds to match the more forgiving Windows thresholds: 60s interval, 25s timeout, 5 misses.
- Verification:
pnpm run typecheck: passed.pnpm run build:vite: passed with existing Vite chunk warnings.- targeted tests passed:
tests/unit/gateway-events.test.tstests/unit/model-diagnostics.test.tstests/unit/diagnostics-routes.test.tstests/unit/gateway-manager-heartbeat.test.ts
- Full
pnpm teststill has unrelated existing failures in stale page/test expectations (yinian-skills-page,today-page,chat-session-actions,task-visualization,language-detection).
2026-05-06 Optional Native Clipboard Gatekeeper Fix
- Investigated repeated customer macOS security prompt for
clipboard.darwin-arm64.node. - Found the current
release/mac-arm64app no longer contained the clipboard native package, butbuild/openclawand user-managed OpenClaw directories could still retain@mariozechner/clipboard*packages. - Applied a three-layer fix:
scripts/bundle-openclaw.mjsnow skips@mariozechner/clipboard*during dependency collection and defensively removes any residual package before writing the runtime marker.electron/utils/paths.tsnow bumps the managed runtime patch marker to2026-05-06-npm-runner-clipboard-v2, forcing stale managed runtimes to reinstall from the cleaned bundled runtime.electron/gateway/config-sync.tsnow cleans optional clipboard packages from user OpenClaw runtime/cache/extension dependency directories before Gateway startup.
- Added
electron/utils/optional-native-cleanup.tsandtests/unit/optional-native-cleanup.test.ts. - Verification:
pnpm run typecheck: passed.pnpm vitest run tests/unit/optional-native-cleanup.test.ts: passed.pnpm run build:vite: passed with existing Vite chunk warnings.pnpm exec zx scripts/bundle-openclaw.mjs: passed.find build/openclaw -name 'clipboard.darwin-arm64.node' -o -path '*@mariozechner/clipboard*': no output.find release -name 'clipboard.darwin-arm64.node' -o -path '*@mariozechner/clipboard*': no output.
2026-05-06 Complete Project Self Check Follow-up
- Fixed stale unit-test expectations for the current product state:
- language detection now expects unsupported
ja_JPto fall back to English because the visible product language set is Chinese/English. - new chat session tests now expect desktop-first
agent:main:*session keys. - task visualization tests no longer expose internal thinking-only chunks as execution steps.
- Today page tests now cover
开始工作,常用应用,智念视频助手,定时任务,知识库, and recent conversations. - Ability-pack page tests now select top-level tabs precisely so quick-task skill-source labels do not collide with
服务下发/本地安装.
- language detection now expects unsupported
- Verification:
- targeted failed files: passed, 5 files / 29 tests.
pnpm test: passed, 93 files / 620 tests.pnpm run typecheck: passed.pnpm run package:pilot: passed.
- Removed
tavily-searchfromresources/skills/preinstalled-manifest.jsonand regeneratedbuild/preinstalled-skills. - Resource checks:
tavilyabsent from preinstalled manifest and generated preinstalled bundle.- optional native clipboard package absent from
build/openclawandrelease. - NianxxPlay bundle contains the standalone server, Next runtime, and internal
.env.runtime. - NianxxPlay bundle scan only reports
.env.runtime; no uploads, generated results, or Next cache directories.
- Remaining warnings:
- Vitest still emits
MaxListenersExceededWarning. - Vite still warns about large chunks and mixed static/dynamic imports.
- OpenClaw bundling still skips several patch snippets that are not present in the current upstream package.
- NianxxPlay bundle remains heavy at about 419 MB.
- Vitest still emits
2026-05-09 Office Skills Runtime Hardening
- Started consolidation after replacing old office skills with MiniMax versions.
- Added an explicit task plan and findings entry so this does not remain a one-off local copy change.
- Added
electron/utils/office-skill-runtime.tsto check and repair the common office runtime layer:- managed Python 3.12 plus
pypdf,reportlab,pandas,openpyxl,matplotlib,beautifulsoup4. - project/bundled Node modules for PPT generation.
.NETpresence as a visible warning for advanced docx flows.
- managed Python 3.12 plus
- Wired office runtime preparation into first-run initialization and Gateway warmup.
- Added admin diagnostics endpoint and Settings > 运行维护 UI for office runtime checks/repair.
- Hardened the MiniMax skill bundler so
docx,pdf,pptx, andxlsxuse stable local slugs and avoid global install guidance. - Fixed the model runtime repair path so it no longer writes OpenClaw-invalid
models.pricingor providertimeoutSecondsfields. - Cleaned the local
~/.openclaw/openclaw.jsonand keptagents.defaults.heartbeat.every = "0m"to disable heartbeat prompts. - Verification:
pnpm run bundle:preinstalled-skills: passed.- managed Python imports for office packages: passed.
openclaw config validate: passed.openclaw skills list --json:docx,pdf,pptx,xlsx, anddesignenabled.pnpm run typecheck: passed.pnpm vitest run tests/unit/model-diagnostics.test.ts tests/unit/diagnostics-routes.test.ts: passed.pnpm test: passed, 93 files / 622 tests.pnpm run build:vite: passed with existing Vite warnings.
2026-05-09 Local .NET SDK Install
- Installed .NET SDK 10.0.203 into the user-local runtime path
~/.dotnetusing Microsoft's install script because Homebrew cask installation requires interactivesudo. - Added
DOTNET_ROOT="$HOME/.dotnet"and~/.dotnetto~/.zprofileso new zsh sessions can resolvedotnet. - Added desktop runtime path support so Electron/OpenClaw child processes also see user-local
.NET:electron/utils/dotnet-runtime.ts- office runtime diagnostics use the resolved
.NETexecutable. - Gateway launch and doctor-repair environments include the
.NETpath.
- Verification:
zsh -lc 'dotnet --version':10.0.203.pnpm run typecheck: passed.pnpm run build:vite: passed with existing Vite warnings.
2026-05-09 Office Skill Prompt Cleanup
- Removed remaining desktop office-suite conversion/recalculation branches from generated office skills so the agent does not drift into asking for external office tools.
xlsxnow exposes static formula validation only throughformula_check.py; the dynamic recalculation script is removed from the preinstalled bundle.docxlegacy.docconversion helper is removed from the preinstalled bundle;.docxcreation/editing stays on the .NET OpenXML path.- Regenerated
build/preinstalled-skillsand synceddocx,pdf,pptx, andxlsxinto~/.openclaw/skills. - Added
.clawx-preinstalled.jsonmarkers back to the local synced skills so future app startup treats them as app-managed preinstalled skills. - Verification:
node --check scripts/bundle-preinstalled-skills.mjs: passed.pnpm run bundle:preinstalled-skills: passed.- scan of generated and local office skills found no
LibreOffice,libreoffice,soffice,Libra,libra,libreoffice_recalc, ordoc_to_docx. openclaw skills list --json:docx,pdf,pptx,xlsx, anddesignenabled.pnpm run typecheck: passed.
2026-05-09 Assistant Output Sanitizer
- Added a renderer-side assistant output sanitizer for external office-suite guidance that may appear in old history or model-invented final replies.
- Wired the sanitizer into both history hydration and live streaming/final message handling.
- It removes user-visible
LibreOffice/soffice/Libra/ technical conversion-engine advice while preserving generated file paths, attachments, and tool blocks. - Verification:
pnpm vitest run tests/unit/assistant-output-sanitizer.test.ts: passed.pnpm run typecheck: passed.pnpm run build:vite: passed with existing Vite warnings.
2026-05-12 Customer Clean Install Stabilization
- Read the customer logs from both WeChat paths.
- Confirmed the install skipped setup because app state said
setupComplete=true, even though runtime files were incomplete. - Confirmed two hard runtime blockers:
- OpenClaw templates were removed from the customer package.
- Managed runtime lacks a self-reference for bare
openclaw/...package imports.
- Started a focused stabilization plan in
task_plan.md. - Fixed OpenClaw packaging cleanup so
docs/reference/templatessurvives while the rest of docs can still be pruned. - Bumped the Yinian managed runtime patch marker to
2026-05-12-runtime-templates-selfref-v1. - Added managed runtime self-reference creation at install time so ESM imports like
openclaw/plugin-sdk/...resolve under~/.openclaw/runtime/openclaw. - Hardened setup status:
- validates runtime files, workspace, config, and initialization marker.
- resets stale
setupComplete=trueif those files are missing. - renderer settings now reconciles
setupCompletewithyinian:setup:status. - Gateway start is gated by verified setup plus authenticated Yinian session.
- Fixed NianxxPlay bundle filtering so compiled
generated-resultsroute code ships whilepublic/generated-resultsuser output remains excluded. - Verification:
pnpm run typecheck: passed.- script syntax checks for after-pack / Nianxx bundle / OpenClaw bundle: passed.
pnpm exec zx scripts/bundle-openclaw.mjs: passed, runtime templates verified.- managed-runtime simulation with self-reference:
dist/extensions/codex/prompt-overlay.jsimports successfully. pnpm run build:vite: passed with existing Vite warnings.- targeted tests passed:
model-diagnostics,diagnostics-routes,optional-native-cleanup. pnpm test: passed, 94 files / 628 tests, with the existing MaxListeners warning.pnpm run package:pilot: passed.- resource checks passed: OpenClaw templates present, NianxxPlay compiled generated-results route present,
public/generated-resultsabsent.
2026-05-12 Clean Install Follow-up And Arm64 Pilot Package
- Added internal-pilot model auth packaging and initialization seeding:
scripts/prepare-internal-model-auth.mjsresources/yinian-internal/model-auth-profiles.jsonin pilot builds- setup status now treats missing model auth as not initialized.
- Added OpenClaw package roots to office skill runtime dependency resolution.
- Re-ran verification:
pnpm run typecheck: passed.pnpm vitest run tests/unit/model-diagnostics.test.ts tests/unit/diagnostics-routes.test.ts tests/unit/optional-native-cleanup.test.ts tests/unit/yinian-store.test.ts tests/unit/openclaw-auth.test.ts tests/unit/gateway-events.test.ts: passed, 40 tests.pnpm test: passed, 94 files / 628 tests; existing MaxListeners warnings remain.pnpm run package:pilot: passed.- managed runtime simulation with
node_modules/openclaw -> ..: passed.
- Generated new Apple Silicon pilot installer:
release/智念助手-0.1.0-mac-arm64.dmg(about 1.5 GB)- copied to
/Users/inmanx/Desktop/智念助手-0.1.0-mac-arm64-20260512.dmg
- Release resource checks passed:
- OpenClaw
AGENTS.md,TOOLS.md,HEARTBEAT.mdtemplates present. - NianxxPlay generated-results route present.
- six preinstalled skills present.
- optional clipboard native module absent.
- no
*.appdirectories in preinstalled skills.
- OpenClaw
- macOS signing status:
- Developer ID code signature verifies.
- Notarization was skipped by electron-builder due missing notarize options, so Gatekeeper still reports
Unnotarized Developer ID.
2026-05-12 NianxxPlay Demo Asset And Runner Fix
- Fixed the NianxxPlay "生成示例" sample video path:
- moved the Wujiang reference video/cover into formal built-in starter assets under
public/starter/promo/. - updated
starter-content.tsandcontent/seedance-starter/catalog.jsonto reference/starter/promo/wujiang-reference.mp4and.jpg. - kept
public/generated-resultsexcluded from desktop bundles, so user generated history remains out of customer packages.
- moved the Wujiang reference video/cover into formal built-in starter assets under
- Fixed the visible extra Dock process risk:
- NianxxPlay standalone now prefers the bundled Node binary in
Resources/bin/node. - it only falls back to
process.execPath + ELECTRON_RUN_AS_NODEif bundled Node is missing.
- NianxxPlay standalone now prefers the bundled Node binary in
- Verification:
- NianxxPlay
npm test: passed, 3 files / 12 tests. - NianxxPlay
npm run build: passed with existingany-promise/registerwarning. - desktop
pnpm run typecheck: passed. - desktop
pnpm run build:vite: passed with existing Vite warnings. NIANXX_PLAY_BUNDLE_ENV=1 node scripts/prepare-nianxx-play-bundle.mjs: passed.- bundle/release resource scans confirm the starter mp4/jpg are included and
public/generated-results/public/uploadsremain excluded. pnpm run package:mac:pilot:arm64: passed.codesign --verify --deep --strict: passed; notarization still not configured.
- NianxxPlay
- Deliverable:
/Users/inmanx/Desktop/智念助手-0.1.0-mac-arm64-20260512-video-node.dmg
2026-05-12 Design And HTML Slides Skill Split
- Upgraded the app-bundled
designskill into a general design director/design-system capability. - Added a new app-bundled
html-slidesskill for browser-based presentation decks and PPTX-to-HTML conversion. - Copied
beautiful-html-templatesindex.json,templates/, andruntime/intohtml-slidesreferences; screenshots remain excluded. - Copied lightweight
frontend-slidesreferences: viewport base CSS, animation patterns, PPTX extraction script, and license. - Updated
resources/skills/preinstalled-manifest.jsonwith new versions andhtml-slidesauto-enable. - Ran
pnpm run bundle:preinstalled-skills; build output now includesdesignandhtml-slideswith updated lock entries. - Synced local app-managed test skills into
~/.openclaw/skills/designand~/.openclaw/skills/html-slides. - Verification:
- design database smoke command passed.
extract-pptx.pypy_compile passed for build and local copies.- OpenClaw lists
designandhtml-slidesas eligible and enabled. - resource scans found 32 bundled templates, no screenshots, no
.appdirectories, and license files present.
- a temporary 8-slide HTML deck passed 1280x720, 1440x900, and 390x844 no-overflow checks.
2026-05-13 Task And Skill Management Clarification
- Started a new implementation pass for the user's request:
- move ability-pack quick-task management back into the ability-pack area.
- preserve the older scheduled-task creation design, including push channel selection.
- add
@skill insertion support in task editing.
- Restored planning context from existing
task_plan.md,findings.md, andprogress.md; session catchup reported no additional unsynced output. - Confirmed local git history at
0abc481had the ability-pack quick-task tab as the default skills page surface. - Confirmed the older Cron page still had the push-channel design: delivery mode, channel/account/target selection, and
deliverypayload fields. - Implemented the product clarification:
- ability-pack page exposes quick-task management again and supports editing existing quick tasks.
- user-facing copy now calls this concept “快捷能力” / “Quick Capability” instead of “快捷任务” to avoid collision with Task Center tasks.
- Task Center quick tab is now a run-now surface and points users to ability packs for quick-capability management.
- Task Center scheduled-task dialog preserves push delivery configuration.
- manual and scheduled task editors support
@skill insertion and insert the existing skill trigger phrase.
- Verification:
pnpm run typecheck: passed.pnpm vitest run tests/unit/yinian-skills-page.test.tsx tests/unit/tasks-page.test.tsx: passed, 9 tests.pnpm test: passed, 97 files / 638 tests; existing MaxListeners warnings remain.
- Browser visual verification was attempted through the in-app browser twice, but the browser connection timed out before a page snapshot could be captured. The running Vite/Electron dev server continued HMR updates without compile errors.
2026-05-13 Playwright Chromium Runtime Hardening
- Started hardening after customer confirmed a stuck
npx playwright install chromiumprocess was killed by stuck recovery. - Added
electron/utils/playwright-runtime.tsfor app-scoped Playwright browser cache and install-lock paths. - Gateway launch env now sets
PLAYWRIGHT_BROWSERS_PATH,PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD, andYINIAN_PLAYWRIGHT_INSTALL_LOCK_PATHfor embedded tasks. - The app-scoped Playwright cache now best-effort symlinks already-complete Chromium installs from the default Playwright cache, so existing browsers remain usable without re-downloading.
- Office runtime diagnostics now include a warning-level
playwright-chromiumcheck showing whether Playwright and the Chromium executable are available. - Updated
html-slidesruntime policy and preinstalled skill bundling sanitation to forbid task-timenpx playwright install chromium. - Bumped preinstalled
pdfandhtml-slidesversions so app-managed skill sync can pick up the new guardrails. - Regenerated
build/preinstalled-skills. - Verification:
pnpm run typecheck: passed.pnpm run bundle:preinstalled-skills: passed.pnpm vitest run tests/unit/playwright-runtime.test.ts: passed, 2 tests.- Real Playwright probe with
PLAYWRIGHT_BROWSERS_PATH=~/.openclaw/runtime/ms-playwright: Chromium executable exists after symlink mirroring.
2026-05-13 Cron Run Final-State Reconciliation
- Investigated the reported case where a task showed failure while the desktop artifact existed.
- Confirmed the local "写笑话" cron run produced
/Users/inmanx/Desktop/joke.docx, while the cron run summary still reportedstatus: errorfrom an intermediate edit-tool failure. - Confirmed the same run's trajectory artifact recorded
finalStatus: successand the final assistant success text. - Updated Task Center cron job transformation to reconcile failed cron summaries against the corresponding run trajectory:
- if the trajectory final status is successful, the last run is exposed as successful.
- the stale intermediate tool error is preserved only as a warning/reconciliation note.
- cron session fallback messages use the recovered final assistant summary instead of a false failed message.
- Verification:
pnpm run typecheck: passed.pnpm vitest run tests/unit/chat-history-actions.test.ts tests/unit/cron-routes.test.ts tests/unit/tasks-page.test.tsx tests/unit/cron-store-fetch-dedupe.test.ts: passed, 32 tests.pnpm test: passed, 98 files / 652 tests; existing MaxListeners warnings remain.
2026-05-13 Cron Conversation Live Refresh
- Fixed the case where a Task Center run did not show this run's query or response hint until manual refresh.
- Backend cron fallback history now emits the task query as a visible user message instead of a hidden system message.
- Backend running/empty fallback states now emit visible assistant messages.
- Manual Task Center triggers now optimistically append the task query and a running assistant placeholder to the fixed task conversation, keep the conversation in active-running state, then refresh the conversation after the trigger completes.
- Gateway agent events for isolated cron run sessions like
agent:main:cron:<jobId>:run:<sessionId>are folded back into the fixed task conversationagent:main:cron:<jobId>. - Cron completion events force a foreground history refresh for the fixed task conversation so the current run appears without manual refresh.
- Verification:
pnpm run typecheck: passed.pnpm vitest run tests/unit/gateway-events.test.ts tests/unit/cron-store-fetch-dedupe.test.ts tests/unit/cron-routes.test.ts tests/unit/tasks-page.test.tsx: passed, 25 tests.pnpm vitest run tests/unit/chat-history-actions.test.ts tests/unit/chat-session-actions.test.ts tests/unit/chat-runtime-event-handlers.test.ts tests/unit/gateway-events.test.ts tests/unit/cron-store-fetch-dedupe.test.ts tests/unit/cron-routes.test.ts tests/unit/tasks-page.test.tsx: passed, 61 tests.pnpm test: passed, 98 files / 655 tests; existing MaxListeners warnings remain.
2026-05-13 Sidebar Navigation Restructure
- Reworked the left sidebar into clearer zones:
- Home/Today remains the first entry.
- Conversation now sits directly under Home/Today in its own container, with New Chat and History.
- Task Center is followed by pinned quick task triggers.
- Only five pinned quick tasks are shown in the sidebar.
- App Center and Knowledge now live in the footer utility group above Settings.
- Added
tests/unit/sidebar-layout.test.tsxto lock the requested order and pinned-task cap. - Started a Vite dev server for review at
http://127.0.0.1:5199/after the existing5188endpoint returned502. - Verification:
pnpm run typecheck: passed.pnpm vitest run tests/unit/sidebar-layout.test.tsx: passed, 1 test.pnpm vitest run tests/unit/sidebar-layout.test.tsx tests/unit/tasks-page.test.tsx tests/unit/task-center-store.test.ts: passed, 7 tests.pnpm run build:vite: passed with existing Vite chunk/dynamic-import warnings.pnpm test: passed, 99 files / 656 tests; existing MaxListeners warnings remain.pnpm exec playwright test tests/e2e/yinian-delivery-smoke.spec.ts: passed, 1 test.
2026-05-13 App-Scoped Local Preference Recovery
- Investigated why quick capabilities and account remarks appeared to fail.
- Found the existing data was still present under the old renderer origin
http://localhost:5173, while the app had been started on a new dev origin. The localStorage origin shift made the data invisible rather than deleting it. - Restarted the dev app on
http://localhost:5173for immediate recovery. - Added an Electron app-level
local-preferencesstore and/api/local-preferencesHost API route. - Quick capabilities now:
- hydrate from app-level preferences when the current origin has no local data.
- push existing origin-local data into app-level preferences on startup.
- save future add/edit/delete/toggle changes to the app-level copy.
- YINIAN local preferences now sync desktop user name, workspace display name, and channel account remarks through the app-level preference store.
- Confirmed migrated data includes:
- quick capabilities:
写word文章,做网页. - account remarks:
徐明微信,小石的微信,徐明飞书,宗琦A2A.
- quick capabilities:
- Verification:
pnpm run typecheck: passed.pnpm vitest run tests/unit/quick-tasks-store.test.ts tests/unit/yinian-local-prefs.test.ts: passed, 4 tests.pnpm vitest run tests/unit/yinian-skills-page.test.tsx tests/unit/tasks-page.test.tsx tests/unit/sidebar-layout.test.tsx tests/unit/quick-tasks-store.test.ts tests/unit/yinian-local-prefs.test.ts: passed, 16 tests.pnpm run build:vite: passed with existing Vite chunk/dynamic-import warnings.pnpm test: passed, 101 files / 660 tests; existing MaxListeners warnings remain.pnpm exec playwright test tests/e2e/yinian-delivery-smoke.spec.ts: passed, 1 test.
2026-05-13 商品中心 Web 应用接入
- Started implementation for adding “商品中心” to App Center.
- Confirmed target URL
https://ticket.nianxx.cn/is reachable and appears embeddable based on response headers. - Found current App Center only lists
nianxx-play;webviewitem handling still opens the browser externally, so this task needs a real internal web host route. - Added built-in Product Center app metadata,
/app-center/product-centerroute, internal iframe host page, reload/external actions, and zh/en copy. - Added Product Center launch URL builder with embed context, workspace/user context, and a future short-lived SSO ticket slot.
- Added focused unit tests for App Center routing and Product Center launch URL behavior.
- Browser plugin preview timed out twice while connecting to the in-app browser; switched to the existing Electron E2E smoke path and added Product Center assertions there.
- First E2E run failed because
disthad not been rebuilt, so the launched Electron app did not include the new Product Center card. - Second E2E run reached
product-center-pagebut failed on locale-specific iframe title lookup; addeddata-testid="product-center-frame"and updated the assertion. - Verification passed:
pnpm vitest run tests/unit/app-center.test.tsx tests/unit/product-center-url.test.tspnpm run typecheckpnpm run build:vitepnpm exec playwright test tests/e2e/yinian-delivery-smoke.spec.ts
2026-05-13 桌面任务提醒与业务回答渲染
- 将 cron 任务的 Gateway 终态通知接入 Electron 系统通知:完成、需复核、失败分别显示“任务已完成 / 任务需复核 / 任务需要处理”。
- 通知点击会聚焦主窗口并导航到
/tasks?task=<jobId>,任务中心会高亮目标任务。 - 新增
electron/utils/cron-desktop-reminder.ts,覆盖 cron session 解析、运行去重、通知文案和路由生成。 - 新增
src/pages/Chat/business-answer.ts,聊天消息会从“状态/依据/影响/下一步”等标签提取业务摘要,并在 assistant markdown 上方渲染摘要面板。 - 更新隐藏业务回答准则,要求业务回复优先输出稳定段落标签,便于 UI 结构化渲染。
- Verification passed:
pnpm vitest run tests/unit/cron-desktop-reminder.test.ts tests/unit/chat-message.test.tsx tests/unit/tasks-page.test.tsx tests/unit/business-guidance.test.tspnpm run typecheckpnpm run build:vite
2026-06-03 Agent 系统级文档管理
- 用户要求在设置中增加系统级文档管理模块,覆盖 soul、agent、tool 这类文档。
- 已确认项目根目录为
/Users/inmanx/Documents/念/yinian-desktop,工作树存在多项既有未提交改动;本次会限定在系统文档管理相关文件。 - 已在
task_plan.md添加本次阶段,当前进入路径/API/设置页结构调研。 - 已确认 OpenClaw 实际使用的文档文件是 per-agent workspace 下的
SOUL.md、AGENTS.md、TOOLS.md,默认模板位于 OpenClaw runtime 的docs/reference/templates/。 - 新增
electron/utils/agent-system-documents.ts和 Host API 路由/api/agent-system-documents,支持按 Agent 读取、保存、恢复模板。 - 新增设置页
系统文档tab 和AgentSystemDocumentsSettings组件,支持选择 Agent、切换 soul/agent/tool、编辑、保存、恢复模板。 - 新增测试并通过:
pnpm exec vitest run tests/unit/agent-system-documents.test.ts tests/unit/agent-system-documents-routes.test.ts tests/unit/agent-system-documents-settings.test.tsx
- 完整相关验证通过:
-
pnpm exec vitest run tests/unit/agent-system-documents.test.ts tests/unit/agent-system-documents-routes.test.ts tests/unit/agent-system-documents-settings.test.tsx tests/unit/settings-advanced-model-config.test.tsx -
pnpm exec tsc --noEmit --pretty false -
pnpm run build:vite(仅保留既有 dynamic-import/chunk-size warnings) -
pnpm exec playwright test tests/e2e/yinian-delivery-smoke.spec.ts
-
- Note: an initial E2E attempt timed out because it launched Electron while
build:vitewas rewritingdist; a clean rerun passed.
2026-05-13 聊天页字体与 UI 统一
- 用户反馈对话字体和整体 UI 与其它页面不一致。
- 使用
ui-ux-pro-max取了一次设计建议,但最终以项目现有design-system/智念助手/MASTER.md为准:成熟 B 端工作台、系统中文字体、slate/navy、8px 圆角、少阴影。 - 更新全局字体:
body使用-apple-system / BlinkMacSystemFont / PingFang SC / Microsoft YaHei / Segoe UI / sans-serif,输入控件继承字体。 - 聊天页外层改为智念标准面板;消息区域为浅 slate 背景;空态改成无框轻量状态,避免卡片套卡片。
- 消息气泡、业务摘要面板、工具状态条、执行过程卡、文件/图片卡、输入框、快捷任务 chip、知识库选择器都收敛到同一套边框/底色/字号。
- Visual QA:
test-results/yinian-visual/02-chat.png已重新生成并查看,聊天首屏字体和 UI 气质与工作台更一致。 - Verification passed:
pnpm vitest run tests/unit/chat-message.test.tsxpnpm run typecheckpnpm run build:vitepnpm exec playwright test tests/e2e/yinian-delivery-smoke.spec.tspnpm exec playwright test --config=playwright.legacy.config.ts tests/e2e/yinian-visual-smoke.spec.ts
2026-05-14 客户安装初始化凭据失败加固
- Reviewed the customer setup screenshot and traced it to
electron/utils/yinian-initializer.tsplussrc/pages/Setup/index.tsx. - Confirmed local
build/yinian-internal/model-auth-profiles.jsonis a benign non-pilot manifest (bundled=false), while the machine does have usable localminimax:defaultauth material for rebuilding a pilot package. - Identified a renderer bug: when initialization returns
initialized=false, pending steps are turned into failed steps, so准备文档处理环境can be shown as failed even when initialization stopped earlier at model auth. - Added
src/pages/Setup/initialization.tsso first-run result mapping keeps pending steps pending, calculates partial progress from completed steps, and shows failed-step details in the red error panel. - Updated
electron/utils/yinian-initializer.tsso missing/disabled internal model auth manifests produce a clear package/credential error instead of the generic “凭据未配置”. - Updated
scripts/prepare-internal-model-auth.mjsso ordinary non-pilot packaging logs that customer pilot installers must usepackage:pilotorYINIAN_BUNDLE_MODEL_AUTH=1. - Added tests:
tests/unit/setup-initialization.test.tstests/unit/yinian-initializer.test.ts
- Verification passed:
pnpm vitest run tests/unit/setup-initialization.test.ts tests/unit/yinian-initializer.test.tspnpm run typecheck
- Rebuilt the Apple Silicon customer pilot package with bundled internal model auth:
pnpm run package:mac:pilot:arm64release/智念助手-0.1.0-mac-arm64.dmgrelease/智念助手-0.1.0-mac-arm64.zip
- Packaged resource verification confirmed
release/mac-arm64/智念助手.app/Contents/Resources/resources/yinian-internal/model-auth-profiles.jsonhasbundled=trueand two MiniMax profile ids. - Release verification passed:
codesign --verify --deep --strict --verbose=2 release/mac-arm64/智念助手.apphdiutil verify release/智念助手-0.1.0-mac-arm64.dmg
2026-05-13 旅游资源订购 Login-State Follow-Up
- Renamed the Product Center surface to “旅游资源订购” in zh copy and “Travel Resource Ordering” in en copy.
- Checked
ticket.nianxx.cnscripts and confirmed the embedded site stores its session token/user in localStorage keysticketService.tokenandticketService.user. - Switched the embedded container from iframe to Electron
<webview>withpartition="persist:yinian-travel-resource-ordering"so the embedded web app keeps its own persistent localStorage/cookie state across route changes and app restarts. - Added unit and E2E assertions for the persistent webview partition.
- Verification passed:
pnpm vitest run tests/unit/app-center.test.tsx tests/unit/product-center-url.test.ts tests/unit/product-center-page.test.tsxpnpm run typecheckpnpm run build:vitepnpm exec playwright test tests/e2e/yinian-delivery-smoke.spec.ts
2026-05-13 快速视频创作 Rename And English Coverage
- Renamed the former “智念视频助手” display surface to “快速视频创作” in Chinese copy.
- Updated English copy to “Quick Video Creation”.
- Added an English App Center unit test covering both built-in apps and checking that raw translation keys are not visible.
- Verification passed:
pnpm vitest run tests/unit/app-center.test.tsx tests/unit/product-center-page.test.tsx tests/unit/product-center-url.test.tspnpm run typecheckpnpm run build:vitepnpm exec playwright test tests/e2e/yinian-delivery-smoke.spec.ts
2026-05-13 快速视频创作内置 Web 英文覆盖
- Investigated the remaining English coverage gap reported by the user.
- Confirmed the desktop wrapper copy is covered by
appCenteri18n, while the embedded NianxxPlay Next app still contains hard-coded Chinese UI/content. - Added a new planning section for passing desktop language into the embedded app and covering visible English text inside the embedded Web surface.
- Desktop NianxxPlay host now adds
zhinianLang=zh|ento embedded URLs. - NianxxPlay source now has an embedded English bridge that persists
zhinianLang, translates visible text/attributes/default form examples, and keeps working after client-side page changes. - Added focused tests for the desktop URL language parameter and the NianxxPlay translation helper.
- Extended the bridge with phrase-level coverage for the default live prompt so the English embedded studio first screen no longer exposes continuous Chinese copy.
- Spot-checked the English embedded studio and planning pages with Playwright; the studio first screen and planning page had no continuous Chinese matches after translation. Projects may still show user/history titles, but the system-generated “宣传片创作台” prefix is covered.
- Rebuilt the NianxxPlay standalone output and refreshed the desktop bundled runtime under
build/apps/nianxx-play. - Stopped the stale bundled NianxxPlay child process that was still listening on
127.0.0.1:3000; the desktop host will start the refreshed bundle the next time Quick Video Creation is opened. - Verification passed:
pnpm vitest run tests/unit/nianxx-play-url.test.ts tests/unit/app-center.test.tsx/Users/inmanx/Documents/NianxxPlay:npm test/Users/inmanx/Documents/NianxxPlay:npm run buildNIANXX_PLAY_SKIP_BUILD=1 pnpm run prepare:nianxx-playpnpm run typecheckpnpm run build:vite- Playwright page probe against
http://127.0.0.1:3010/studio?zhinianEmbed=1&zhinianLang=en pnpm exec playwright test tests/e2e/yinian-delivery-smoke.spec.ts
2026-05-13 WhatsApp 二维码生成检查
- 调查 WhatsApp 二维码链路:前端扫码 Modal、Host API
/api/channels/whatsapp/start、主进程WhatsAppLoginManager、QR PNG 渲染和channel:whatsapp-qr事件。 - 用临时 HOME 拉起登录管理器,避免触碰真实
~/.openclaw凭据;当前网络下 Baileys 对wss://web.whatsapp.com/ws/chat连续WebSocket Error (),直接ws连接也超时。 - 新增
electron/utils/whatsapp-proxy.ts,让 WhatsApp WebSocket 使用应用代理设置,优先ALL_PROXY/SOCKS,再用 HTTPS/基础代理,并支持web.whatsapp.com绕过规则。 - 更新
electron/utils/whatsapp-login.ts:为 Baileys 注入 HTTP/SOCKS proxy agent,连接失败时保留最后错误并提示检查网络或高级设置代理;QR 渲染异常也会发出 error 事件。 - 更新
src/lib/host-api.ts和src/components/channels/ChannelConfigModal.tsx:Host API unified 非 2xx 不再被吞掉,扫码启动失败时前端会恢复状态并显示错误。 - 补充 WhatsApp 网络/代理失败的 zh/en/ja/ru 本地化提示。
- 将
socks-proxy-agent加入 OpenClaw runtime bundle 依赖列表。 - 新增/更新测试:
tests/unit/whatsapp-proxy.test.tstests/unit/host-api.test.ts
- Verification passed:
pnpm run typecheckpnpm exec vitest run tests/unit/host-api.test.ts tests/unit/whatsapp-proxy.test.ts tests/unit/channel-routes.test.tspnpm run build:vite
2026-05-13 OpenClaw 内核升级
- 用户要求更新 OpenClaw 内核。
- 当前项目依赖为
openclaw@2026.4.29。 - 查询 npm dist-tags:stable latest 为
2026.5.7,beta 为2026.5.12-beta.4;本次按稳定版 latest 处理。 - 已将根项目
devDependencies.openclaw升级到2026.5.7,并刷新pnpm-lock.yaml。 - 重新运行
pnpm exec zx scripts/bundle-openclaw.mjs,build/openclaw/package.json和node build/openclaw/openclaw.mjs --version均确认内置版本为2026.5.7。 - 同步更新
scripts/bundle-openclaw.mjs与electron/gateway/runtime-deps.ts中的新版生成代码匹配片段,覆盖 main-session restart recovery 和 stuck-session active abort 边界。 - 检查新版 bundle:关键自定义边界仍在产物中,包括
OPENCLAW_DISABLE_AGENTS_SKILLS、OPENCLAW_DISABLE_MAIN_SESSION_RESTART_RECOVERY、YINIAN_OPENCLAW_STUCK_ACTIVE_ABORT_MS和桌面 webchat fast raw model path。 - 部分旧补丁片段在 2026.5.7 中已由上游结构变更/等价逻辑替代,bundle 日志仍会提示旧片段不存在;已逐项核对关键行为没有缺失。
- Verification passed:
pnpm run typechecknode scripts/assert-electron-runtime-deps.mjspnpm exec vitest run tests/unit/openclaw-cli.test.ts tests/unit/openclaw-proxy.test.ts tests/unit/channel-config.test.ts tests/unit/channel-routes.test.ts tests/unit/whatsapp-proxy.test.ts tests/unit/host-api.test.tspnpm run build:vitepnpm test(106 files / 675 tests; existing MaxListeners warnings remain)pnpm exec playwright test tests/e2e/yinian-delivery-smoke.spec.ts
2026-06-04 应用中心清理后项目体检
- Started a focused post-cleanup audit after removing the two App Center built-in apps.
- Scope: App Center registry/routes, NianxxPlay/Product Center residues, Host API route list, packaging resources, README/i18n/tests, and current dirty worktree separation.
- Residual scan result: no production references to the removed apps remain; only negative test assertions mention
app-center-item-product-centerandapp-center-item-nianxx-play. build/apps/nianxx-playhas been removed;build/appsis currently empty.- Current dev service is still running through Vite/Electron from
pnpm dev. - Removed stale
selectedItemId/selectItemstate from the App Center store and removed the empty README App Center screenshot heading. - Verification passed:
pnpm exec vitest run tests/unit/app-center.test.tsx tests/unit/app-routes.test.tspnpm exec tsc --noEmit --pretty falsepnpm run build:vitegit diff --checkpnpm test(111 files / 712 tests; existing MaxListeners warnings only)
2026-06-04 Git Push Preparation
- User requested pushing the current project to the git remote while avoiding secrets/tokens/API/env material and keeping customer quick-start usability.
- Remote target:
origin->https://git.nianxx.cn/wangxuming/NianToB.git; current branch:main. .env.examplenow contains placeholders only and explicitly tells users to keep real values in.env.local, CI secrets, local shell, or private deployment channels.- Added
*.docxto.gitignoreso generated local report documents are not accidentally committed. - Confirmed ignored:
.env.localbuild/yinian-internal/model-auth-profiles.jsonrelease/智念助手-0.1.0-mac-arm64.zip- generated
.docxreports
- Secret scans:
- tracked file scan for common key/token patterns: no matches.
- untracked new source file scan for common key/token patterns: no matches.
- Final pre-stage verification passed:
git diff --checkpnpm exec tsc --noEmit --pretty falsepnpm test(111 files / 712 tests; existing MaxListeners warnings only)
- Created commit
84128db(Refine desktop setup and remove bundled app center apps) and pushed it toorigin/main. - Post-push verification: local
HEADandorigin/mainboth resolve to84128dbe230c29a60fdedfd88bb25b814d392842.
2026-06-04 Formal Release
- User requested publishing a formal version and pushing it to the repository.
- Stopped the running dev Vite/Electron processes before packaging.
- Existing package version was
0.1.0; local tags already occupyv0.1.1throughv0.1.23, plusv0.1.24-alpha.*. - Selected formal non-prerelease version
0.1.24because exact tagv0.1.24is not present locally or remotely. - Updated
package.jsonto0.1.24. - Important process note:
pnpm version 0.1.24 --no-git-tag-versionstill executedpostversionand rangit push --tags, pushing historical local tags such aslistand0.1.21-beta.1toorigin; it did not create or pushv0.1.24. - Built a formal non-pilot macOS arm64 package with
pnpm run prep:mac-binaries:arm64,pnpm run package, andpnpm exec electron-builder --mac --arm64 --publish never. - Release artifacts:
release/智念助手-0.1.24-mac-arm64.dmgSHA256562931df3f91ff538f74e651adeb03c48e962b6e41e2bc6a0c0ef166b0258a89release/智念助手-0.1.24-mac-arm64.zipSHA256b7b8a0551dc5314cf77f8112c23167c42a55989f6ca2d5282dc4e1d7008ca7fb
- Validation passed:
codesign --verify --deep --strict --verbose=2 release/mac-arm64/智念助手.apphdiutil verify release/智念助手-0.1.24-mac-arm64.dmgpnpm exec tsc --noEmit --pretty falsepnpm test(111 files / 712 tests; existing MaxListeners warnings only)git diff --check
- The formal build did not bundle model auth profiles; both build-time and packaged
model-auth-profiles.jsonreport"bundled": false. - Resource scan found no
.env*, cleared App Center bundled apps,NianxxPlay, orProductCenterresources in the packaged app. - Apple notarization credentials are unset;
electron-builderskipped notarization and Gatekeeper assessment reportsUnnotarized Developer ID. - Created release commit
98a5760(Release version 0.1.24) and annotated tagv0.1.24. - Pushed
mainand only the newv0.1.24tag toorigin; remotev0.1.24^{}resolves to98a5760.