feat(creator-studio): two-row masthead with site logo and user avatar

顶栏改为知乎式两行结构:第一行左侧站点 LOGO、右侧当前用户头像,
第二行只保留正文工具条并居中,同时移除「Jio / 写文章」字样。

- bootstrap payload 新增 site/viewer 身份字段(复用 jio_get_site_logo_url
  与 jio_get_avatar_url,前端不拼 URL、不做权限判断)
- 拆分 draft 类型、TinyMCE 块运行时、顶栏组件,index.tsx 1065 → 735 行
- 清理死代码:未调用的 keepCaretInsideCode、永远无法打开的代码语言弹窗
  (setCodeLanguage 只会收到 null,codeTargetRef 从未赋值)及其样式,
  以及顶栏移除后失效的 bar-left/brand/mode/save-draft/ghost/primary 规则
- 契约测试、本地预览与截图脚本同步到新 DOM

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
kate522andClaude Opus 5 committed 2026-11-08 22:20:10 +08:00
1 parent 5f31c58df2
commit 1970db0b56
17 files changed
+602 -580

No files matched your search

+3 -1
View File
@@ -74,12 +74,14 @@ if (!EDGE) {
await new Promise((r) => setTimeout(r, 3000));
const state = await page.evaluate(() => ({
hasMasthead: !!document.querySelector('.jio-creator__masthead'),
hasBrandLogo: !!document.querySelector('.jio-creator__brand-logo'),
hasAvatar: !!document.querySelector('.jio-creator__me-avatar'),
hasBar: !!document.querySelector('.jio-creator__bar'),
hasToolbar: !!document.querySelector('.jio-creator__toolbar-tools'),
hasTinyMce: !!window.tinymce?.get('jio-creator-content'),
hasEditorFrame: !!document.querySelector('.mce-tinymce iframe, .tox-tinymce iframe'),
hasTitle: !!document.querySelector('.jio-creator__title textarea'),
hasSaveDraft: !!document.querySelector('.jio-creator__save-draft'),
toolbarActions: Array.from(document.querySelectorAll('.jio-creator__toolbar-tools button')).map((button) => button.getAttribute('aria-label') || button.textContent.trim()),
saveText: (document.querySelector('.jio-creator__save') || {}).textContent,
rejections: window.__jioRejections || [],