From 3822ece7d092c5aad32c31869ec28c31540280b4 Mon Sep 17 00:00:00 2001 From: Malik Warren Date: Thu, 11 Jun 2026 19:41:27 -0400 Subject: [PATCH] =?UTF-8?q?@=20279=5Fdemo=5Fdefault=5Fon=5Ftemplate=20?= =?UTF-8?q?=E2=80=94=20sync=20main=20with=20deployed=20demo=20UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Lands the final demo-mode-ON-by-default gate template (commits 277/278 on demo-submit-on-submit-screen) onto main. Backend (#276) already on main; this is the net proposals_templates.go change that is live on Cloud Run (rev kaimi-dashboard-00018, image aaacec3). Co-Authored-By: Claude Opus 4.8 (1M context) @ --- internal/dashboard/proposals_templates.go | 36 ++++++++++++++++------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/internal/dashboard/proposals_templates.go b/internal/dashboard/proposals_templates.go index bb64175..2b335b8 100644 --- a/internal/dashboard/proposals_templates.go +++ b/internal/dashboard/proposals_templates.go @@ -279,6 +279,9 @@ const workspaceContentTmpl = `{{define "content"}}
The working draft is not available yet.
{{end}} +
@@ -287,14 +290,17 @@ const workspaceContentTmpl = `{{define "content"}}
-
+ @@ -368,8 +374,14 @@ const workspaceContentTmpl = `{{define "content"}} .ed-save-chip { font: 600 11px/1 var(--font-sans); color: var(--st-done); margin-left: 8px; text-transform: none; letter-spacing: 0; } .ed-save-chip.saving { color: var(--ink-3); } .r-actions form { margin: 0; } - .demo-toggle { display: inline-flex; align-items: center; gap: 6px; font: var(--t-small); color: var(--ink-3); cursor: pointer; user-select: none; margin-left: auto; } + .demo-toggle { display: inline-flex; align-items: center; gap: 6px; font: var(--t-small); color: var(--ink-3); cursor: pointer; user-select: none; margin: 16px 0 0; } .demo-toggle input { accent-color: var(--primary, #2563EB); width: 15px; height: 15px; } + .demo-submit { display: flex; align-items: center; gap: 16px; justify-content: space-between; flex-wrap: wrap; margin-top: 12px; padding: 16px 18px; border-radius: var(--r-md); border: 1px solid color-mix(in oklab, var(--st-done) 30%, transparent); background: linear-gradient(180deg, var(--st-done-bg), var(--surface) 70%); } + /* The [hidden] attribute must win over the display:flex above so the demo + toggle can actually hide the submit panel. */ + .demo-submit[hidden] { display: none; } + .demo-submit b { font: 650 14px/1.3 var(--font-sans); color: var(--ink); } + .demo-submit p { font-size: 13px; color: var(--ink-soft); margin: 4px 0 0; line-height: 1.5; max-width: 52ch; } .draft-body { white-space: pre-wrap; background: var(--surface); border: 1px solid var(--border); border-radius: var(--r-md); padding: 12px 14px; font: var(--t-body); color: var(--ink); } .draft-pending { border: 1px dashed var(--border); border-radius: var(--r-md); padding: 12px 14px; font: var(--t-small); color: var(--ink-3); font-style: italic; } @@ -403,16 +415,20 @@ const workspaceContentTmpl = `{{define "content"}} }); }); - // Demo mode: a persisted toggle that reveals the "Save to Google Drive" action - // at the gate, so a presenter can show the full lifecycle without waiting for - // Vera's final pass. Production submit (the ready state) is unaffected. + // Demo mode: shows the "Save to Google Drive" panel at the gate alongside the + // normal review actions, so a presenter (or a hackathon judge self-testing the + // deployed app) can save the package without waiting for Vera's final pass — + // bypassing any open [GAP] markers. ON BY DEFAULT so the path is discoverable + // without flipping a hidden switch; uncheck it for a strict review walkthrough. + // Production submit (the ready state) is unaffected. (function () { var KEY = "kaimi_demo_mode"; function apply(on) { document.querySelectorAll("[data-demo-only]").forEach(function (el) { el.hidden = !on; }); } var toggle = document.querySelector("[data-demo-toggle]"); - var on = localStorage.getItem(KEY) === "1"; + var saved = localStorage.getItem(KEY); + var on = saved === null ? true : saved === "1"; // default ON if (toggle) toggle.checked = on; apply(on); if (toggle) {