feat: redesign chat transcript + fix streaming/persistence lifecycle — v0.50.70 (PR #587 by @aronprins)
Redesign chat transcript + fix streaming/persistence lifecycle — v0.50.70 Squash-merges PR #587 by @aronprins (Aron Prins). Full credit to @aronprins for all feature and fix work. Transcript redesign: unified --msg-rail/--msg-max CSS variables, user turns as tinted cards, thinking cards as bordered panels, error card treatment, day-change separators, composer fade. Approval/clarify as composer flyouts: cards slide up from behind composer top, overflow:hidden + translateY clip prevents travel visibility, focus({preventScroll:true}). Streaming lifecycle: DOM order user→thinking→tool cards→response, no mid-stream jump. Live tool cards inserted before [data-live-assistant]. Persistence: reasoning attached before s.save(), _restore_reasoning_metadata on reload, role=tool rows preserved in S.messages, CLI-session tool-result fallback. Workspace panel FOUC fix: [data-workspace-panel] set at parse time. Docs: docs/ui-ux/index.html + two-stage-proposal.html. Maintainer additions (433b867): CHANGELOG v0.50.70, version badge, usage badge loop simplification. Reviewed and approved by @nesquena (independent review). 1361 tests passing.
This commit is contained in:
@@ -80,3 +80,24 @@ def test_workspace_panel_restore_before_sync():
|
||||
assert sync_pos >= 0, "syncWorkspacePanelState call must be present in boot IIFE"
|
||||
assert restore_pos < sync_pos, \
|
||||
"Workspace panel restore must happen BEFORE syncWorkspacePanelState() so the correct mode is applied"
|
||||
|
||||
|
||||
def test_workspace_panel_preload_marker_restored_in_head():
|
||||
"""index.html must preload the workspace panel state before the main stylesheet paints."""
|
||||
marker = "document.documentElement.dataset.workspacePanel"
|
||||
css_link = '<link rel="stylesheet" href="static/style.css">'
|
||||
marker_pos = HTML.find(marker)
|
||||
css_pos = HTML.find(css_link)
|
||||
assert marker_pos >= 0, "index.html must preload documentElement.dataset.workspacePanel from localStorage"
|
||||
assert css_pos >= 0, "main stylesheet link missing from index.html"
|
||||
assert marker_pos < css_pos, \
|
||||
"workspace panel preload marker must be set before style.css loads to avoid first-paint flash"
|
||||
|
||||
|
||||
def test_workspace_panel_mode_syncs_document_dataset():
|
||||
"""_setWorkspacePanelMode must update documentElement.dataset.workspacePanel for runtime parity."""
|
||||
fn_idx = BOOT_JS.find("function _setWorkspacePanelMode(")
|
||||
fn_end = BOOT_JS.find("\n}", fn_idx) + 2
|
||||
fn_body = BOOT_JS[fn_idx:fn_end]
|
||||
assert "document.documentElement.dataset.workspacePanel" in fn_body, \
|
||||
"_setWorkspacePanelMode must keep documentElement.dataset.workspacePanel in sync with the panel state"
|
||||
|
||||
Reference in New Issue
Block a user