Skip to content

merge: sync feat/3.0.0 into Shanghai Electric - #2525

Merged
mehrocc merged 908 commits into
feat/SEC-3.0.0-1016from
codex/merge-3.0-into-sec-20261027
Oct 27, 2026
Merged

mehrocc merged 908 commits into
feat/SEC-3.0.0-1016from
codex/merge-3.0-into-sec-20261027

Conversation

@mehrocc

@mehrocc mehrocc commented Oct 27, 2026 •

Copy link
Copy Markdown
Collaborator

将公共 feat/3.0.0(包含截至 c4f19cd 的更新)合入上海电气 feat/SEC-3.0.0-1016。公共分支只作为来源,本 PR 唯一目标为上海电气。

保留上海电气技能调用、交付文件、子工作流和临时会话清理;适配新版共享聊天、组件入口、租户模型与 Celery 注册。技能停用/删除错误避开发版线编码冲突,使用 11078/11079。合并三语源文案并生成产物。

前端检查所需的兼容修复仅保留在上海电气合并稿中。候选 a571ea7 的代码树与已验证的 1c8cf00 完全一致,后者 GitHub Frontend Quality 已通过;服务器完整 lint、typecheck、两个前端构建通过。相关前端回归 179 项、后端核心与附件归属回归 26 项通过。完整登录业务验收尚未执行。

SDK/应用工场相关 CI 存在公共来源已有失败,其目录与公共分支一致,本轮不扩大业务改动范围。目标环境为 119 A(3001),升级需先备份,并通过正式权限模型升级工具及环境验收。

dolphin and others added 30 commits October 22, 2026 22:26
dolphin and others added 28 commits October 26, 2026 12:40
* feat/3.0.0: (623 commits)
  docs(frontend): consolidate acceptance cases and UI migration scope
  fix(frontend): vendor verified SheetJS archive for offline installs
  fix(platform): restore application copy error handler import
  docs(runtime): record 116 Docker single-app acceptance
  fix(runtime): allow verified control ingress through Docker isolation
  docs(vibe): record K8s single-app deployment acceptance [CI SKIP]
  fix(open-api): load candidate credential server defaults
  docs(preview): record final regression and acceptance scope
  fix(preview): harden citation reopening and shared dev modules
  refactor(preview): remove legacy copies and verify shared entry points
  fix(runtime): compare canonical host firewall parent jumps
  refactor(citation): share reference lists and document previews
  refactor(citation): unify parsing and document resource contracts
  refactor(preview): share PDF rendering with host editing overlays
  docs(vibe): record release integration and focused checks
  docs(vibe): pin closeout handoff to source revision
  feat(vibe): finish runtime governance and security closeout
  fix(vibe): complete secret declaration summaries and empty-value controls
  docs(vibe): close remaining design findings and record focused validation
  feat(vibe): add encrypted app environment settings and confirmed rebuild
  ...
A run where the user picked html only still wrote the report twice: the
"3a(始终)" rule made the model produce output/<name>.md first and the html
second (cofco session a4b4a014: 143 s + 152 s of a 563 s run). The markdown file
is the source of export_docx / export_pdf and the only file the citation audit
reads, so it is now skipped exactly when html is the sole format and the run has
no knowledge base or web search. That half of the condition is resolved when the
prompt is built; the model only applies the user's format choice.

write_file stores whatever it is given, so the model never learned that its page
pulled a CDN script, referenced output/x.png (the srcDoc preview has no base
URL), threw on load or overflowed a phone. check_html closes that loop: a static
pass for non-inline resources, an empty body and missing head metadata, and a
best-effort headless-Chromium pass for script errors, JS fetches, broken images,
overflow and hangs, with a desktop screenshot in scratch/. It is bound with the
export tools, kept out of the researcher, and degrades to the static pass where
no browser can launch. Only ERROR blocks delivery; the pass verdict is printed by
the tool alone.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ations

The deliverable prompt can only say "self-contained HTML"; the design method
and a working page skeleton have to come from somewhere. html-report follows the
existing pack layout and adapts two Anthropic skills (Apache-2.0, license kept):

- frontend-design gives the method: ground the page in its reader and job, write
  a short design plan, review it against a list of generated-page defaults, keep
  one accent, hold a quality floor. Rewritten for Chinese report pages, where
  readability outranks a distinctive look.
- web-artifacts-builder gives the idea of prebuilt components inlined into one
  file. Its React/Vite/Parcel build needs node and the network at bundle time,
  so the pack ships the offline equivalent instead: assets/report-base.html
  with verdict, findings, comparison table, metrics, tags, bars, timeline, dark
  and print styles, checked desktop/phone/dark by eye and by check_html.

The pack needs no code executor. When one is bound, scripts/svg_chart.py draws
a matplotlib chart and writes the SVG into the page's marker itself, so the
model never re-emits 10-30 KB of SVG.

Skills mount strictly by selection, so the seeder now reads
metadata.default-checked and applies it when it first creates the row; the
administrator owns the flag from then on. The slug and every customer-readable
file carry no platform brand, guarded by a test.

check_html no longer counts SVG labels as small text: their computed size is in
user units, before the viewBox scales them.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
In the first real run the comparison table's element column wrapped four-character
names onto two lines at desktop width. A 6.5em floor keeps them on one line; long
labels still wrap.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…to task mode

The workbench vector model tooltip described uses that no longer exist
(workbench file retrieval, Linsight SOP retrieval). The model is now only
used by knowledge spaces: new spaces take it, and changing it rebuilds
every knowledge space. Say that, and spell out the rebuild in the change
confirmation.

Rename the remaining Linsight labels on this page to task mode, write ASR
and TTS tooltips that say what they do, and fix the en/ja tab and field
names ("work", "ワークモデル").

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…itched

Switching the model of a row that was the daily-mode or task-mode default
only replaced models[i].id and left the default ids on the old model. The
next save then sent a chat_default_model_id that was no longer in models,
and the backend rejected it with 10811; the task-mode default was saved
silently pointing at a model outside the list. Move both defaults along
with the row, matching how onRemove already clears them.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
恢复公共发版线的前端质量门,供上海电气同步合并使用。原有失败包括测试代码内的中文断言数据、重复 any 断言、Unicode 空白正则的
no-control-regex 报错,以及语音测试对无参回调的旧调用。

保持运行行为:中文测试期望移到 JSON fixture;技能菜单测试改用英文测试数据;请求 silent
选项使用已有类型声明;两端正则改为等价 Unicode White_Space 属性并保留 BOM/零宽空格;语音测试按当前回调签名调用。通过
ESLint prune 命令只删除旧忽略记录,不增加 suppression。

验证:69 条相关 vitest 回归通过,包含 54 条两端空白边界测试;合并候选的完整类型检查与全量 lint 已通过(或正在收尾,结果以
CI 为准)。两个前端应用已构建成功。发布线单独检查亦在进行,最终以该 PR 的 Frontend Quality 为准。

先合入 feat/3.0.0,再由上海电气同步,遵守发布线优先的历史规则。
This reverts commit 7b10491, reversing
changes made to 437143f.
@mehrocc
mehrocc marked this pull request as ready for review October 27, 2026 07:26
@mehrocc
mehrocc merged commit e3b0b1a into feat/SEC-3.0.0-1016 Oct 27, 2026
4 of 10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants