feat: align session sidebar and cli management

This commit is contained in:
Codex
2026-06-03 09:35:46 +08:00
parent d39d184eae
commit da25cb4c02
16 changed files with 1013 additions and 110 deletions
+12 -1
View File
@@ -67,6 +67,7 @@ console.log("hwlab-cloud-web check: right sidebar extracted");
assert.ok(rightSidebar, "Device Pod right sidebar must exist");
assert.match(html, /data-route="skills"/u, "Cloud Web must expose the skills activity route");
assert.match(html, /id="session-tabs"[^>]*role="tablist"/u, "Cloud Web workspace must expose session tabs");
assert.match(html, /class="session-sidebar"[^>]*id="session-sidebar"/u, "Cloud Web must place sessions in a second-level sidebar");
assert.match(html, /id="skills"[^>]*data-view="skills"/u, "Cloud Web must expose a skills view");
assert.match(html, /id="skill-upload-input"[^>]*webkitdirectory/u, "Skills view must support directory upload");
assertIncludes(app, "/v1/skills", "skills frontend must call /v1/skills");
@@ -82,9 +83,19 @@ assertIncludes(styles, ".skill-prompt-assembly", "skills frontend must style pro
assertIncludes(styles, ".skill-prompt-row", "skills frontend must style prompt assembly refs");
assertIncludes(app, "sessionTabsFromMessages", "workspace frontend must group messages by session");
assertIncludes(app, "activeSessionKey", "workspace frontend must track the active session tab");
assertIncludes(app, "currentSessionView", "workspace frontend must filter conversation rendering by selected session");
assertIncludes(app, "renderSessionSidebar", "workspace frontend must render account-scoped sessions in the second-level sidebar");
assertIncludes(app, "selectSessionSidebarSession", "workspace frontend must switch sessions from the second-level sidebar");
assertIncludes(styles, ".session-tabs", "workspace frontend must style session tabs");
assertIncludes(styles, ".session-tab", "workspace frontend must style individual session tabs");
assertIncludes(app, "sessionTabsFromConversations", "workspace frontend must build session tabs from account conversations");
assertIncludes(app, "/v1/agent/conversations", "workspace frontend must load account-scoped sessions");
assertIncludes(app, "select-conversation", "workspace frontend must switch sessions through workbench select-conversation");
assertIncludes(styles, ".session-sidebar", "workspace frontend must style the second-level session sidebar");
assertIncludes(styles, "grid-template-columns: var(--rail-width) var(--session-sidebar-width)", "workspace shell must place session sidebar to the right of activity rail");
assert.match(cssRule(styles, ".activity-rail"), /overflow-x:\s*hidden;/u, "activity rail must not horizontally scroll");
assert.match(cssRule(styles, ".session-tabs"), /overflow-x:\s*hidden;/u, "session sidebar must not horizontally scroll");
assert.match(cssRule(styles, ".rail-button"), /white-space:\s*nowrap;/u, "activity rail labels must not auto-wrap");
assert.match(cssRule(styles, ".session-tab-label"), /white-space:\s*nowrap;/u, "session labels must not auto-wrap");
console.log("hwlab-cloud-web check: skills contracts verified");
for (const term of [
@@ -10,6 +10,7 @@ export const cloudWebDistFreshnessCommand = cloudWebDistBuildCommand;
export const cloudWebAppSourceFiles = Object.freeze([
"app.ts",
"app-skills.ts",
"app-session-tabs.ts",
"app-device-pod.ts",
"app-conversation.ts",
"app-trace.ts",