diff --git a/pyproject.toml b/pyproject.toml index 028a3bb..c4d4a33 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "ratatoskr" -version = "0.20.16" +version = "0.20.17" description = "Worldtree Conversation API debug TUI — multi-pane observability dashboard" readme = "README.md" requires-python = ">=3.12" diff --git a/src/ratatoskr/web/static/index.html b/src/ratatoskr/web/static/index.html index b949369..2ead4d1 100644 --- a/src/ratatoskr/web/static/index.html +++ b/src/ratatoskr/web/static/index.html @@ -178,6 +178,29 @@ kbd { #app.live { display: flex; } #cols { flex: 1; display: flex; min-height: 0; } +/* ---- collapsible debug panes (independent left/right; #center reflows to fill) ---- */ +.pane-collapse { + width: 22px; height: 22px; display: flex; align-items: center; justify-content: center; + background: transparent; border: 1px solid var(--border-subtle); border-radius: var(--radius-sm); + color: var(--fg-3); cursor: pointer; flex: 0 0 auto; font-size: 13px; line-height: 1; padding: 0; +} +.pane-collapse:hover { background: var(--bg-2); color: var(--fg-0); border-color: var(--border-default); } +.ac-head-row { display: flex; align-items: center; justify-content: space-between; position: relative; } +/* re-open strip: hidden while the pane is open, becomes the full-height handle when collapsed */ +.pane-reopen { display: none; } +#cols.left-collapsed #rail-left { width: 22px !important; flex-basis: 22px !important; overflow: hidden; } +#cols.right-collapsed #affect-console { width: 22px !important; flex-basis: 22px !important; overflow: hidden; } +#cols.left-collapsed #rail-left > *:not(.pane-reopen) { display: none; } +#cols.right-collapsed #affect-console > *:not(.pane-reopen) { display: none; } +#cols.left-collapsed #rail-left .pane-reopen, +#cols.right-collapsed #affect-console .pane-reopen { + display: flex; flex: 1; width: 100%; align-items: center; justify-content: center; + background: transparent; border: none; color: var(--fg-3); cursor: pointer; font-size: 13px; +} +#cols.left-collapsed #rail-left .pane-reopen:hover, +#cols.right-collapsed #affect-console .pane-reopen:hover { background: var(--bg-2); color: var(--fg-0); } +#cols.right-collapsed #affect-resizer { display: none; } + /* eyebrow — mono uppercase wide-tracked (Australis signature) */ .eyebrow { font-family: var(--font-mono); font-size: 9.5px; @@ -554,6 +577,7 @@ body.cot-hidden #cot-toggle { border-color: rgba(66,220,209,0.55); color: var(-- +
@@ -576,6 +600,7 @@ body.cot-hidden #cot-toggle { border-color: rgba(66,220,209,0.55); color: var(-- ⇄ bifrost · not bound
observe-only session
+ @@ -613,7 +638,10 @@ body.cot-hidden #cot-toggle { border-color: rgba(66,220,209,0.55); color: var(--
-
affect · dominant
+
+
affect · dominant
+ +
@@ -711,6 +739,7 @@ body.cot-hidden #cot-toggle { border-color: rgba(66,220,209,0.55); color: var(-- ratatoskr — + @@ -1948,6 +1977,24 @@ async function cancelTurn() { }); })(); +// ---- collapsible debug panes (independent left / right; state persists) ---- +(function () { + const cols = $("cols"); + function apply(side, collapsed) { + cols.classList.toggle(side + "-collapsed", collapsed); + try { localStorage.setItem("ratatoskr-" + side + "-collapsed", collapsed ? "1" : "0"); } catch (_) {} + } + let left = false, right = false; + try { left = localStorage.getItem("ratatoskr-left-collapsed") === "1"; } catch (_) {} + try { right = localStorage.getItem("ratatoskr-right-collapsed") === "1"; } catch (_) {} + cols.classList.toggle("left-collapsed", left); + cols.classList.toggle("right-collapsed", right); + $("collapse-left").addEventListener("click", () => apply("left", true)); + $("reopen-left").addEventListener("click", () => apply("left", false)); + $("collapse-right").addEventListener("click", () => apply("right", true)); + $("reopen-right").addEventListener("click", () => apply("right", false)); +})(); + // ---- composer auto-grow + keyboard ---- $("prompt-input").addEventListener("input", (e) => { const el = e.target; diff --git a/uv.lock b/uv.lock index 6a3d47e..e9c64b5 100644 --- a/uv.lock +++ b/uv.lock @@ -1052,7 +1052,7 @@ wheels = [ [[package]] name = "ratatoskr" -version = "0.20.16" +version = "0.20.17" source = { editable = "." } dependencies = [ { name = "httpx" },