Files
time/ventures/context-curator/template.html
T

34 lines
13 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="An offline editor for one exploratory span of an agent transcript. Keep the context. Carry the conclusion.">
<title>Context Curator — Keep the finding.</title>
<style>
@font-face{font-family:Curator Serif;font-style:normal;font-weight:400;font-display:swap;src:url("/*__FONT_REGULAR__*/") format("woff2")}@font-face{font-family:Curator Serif;font-style:italic;font-weight:400;font-display:swap;src:url("/*__FONT_ITALIC__*/") format("woff2")}
:root{--paper:#f3efe4;--ink:#202f2b;--muted:#54605a;--red:#a33624;--rule:#a7aa9e;--light:#fcf9f0}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:'Curator Serif',Georgia,serif;font-size:18px;line-height:1.5}body:before{content:'';position:fixed;inset:0;pointer-events:none;opacity:.13;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath filter='url(%23n)' opacity='.22' d='M0 0h120v120H0z'/%3E%3C/svg%3E")}a{color:inherit;text-underline-offset:4px}a:hover{color:var(--red)}main,.masthead,footer{max-width:1220px;margin:auto;padding:0 44px}.masthead{padding-top:23px}.edition,.eyebrow,label,button,.utility,summary,select,input,textarea,.measure{font-family:Arial,Helvetica,sans-serif}.edition{display:flex;justify-content:space-between;gap:15px;font-size:11px;text-transform:uppercase;letter-spacing:1.8px;border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);padding:8px 0}.mast-title{display:flex;justify-content:space-between;align-items:baseline;border-bottom:5px double var(--ink);padding:15px 0 12px}.name{font-size:clamp(30px,4.4vw,58px);font-weight:bold;letter-spacing:-2px}.issue{font-style:italic;font-size:16px}.lead{display:grid;grid-template-columns:2fr 1fr;gap:40px;padding:40px 0 38px;border-bottom:1px solid var(--ink)}.eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:2px;font-weight:bold;color:var(--red);margin:0 0 17px}h1{font-size:clamp(50px,6.2vw,78px);line-height:.98;letter-spacing:-3px;font-weight:normal;margin:0 0 25px}h1 em{color:var(--red)}.dek{max-width:590px;font-size:22px;line-height:1.4;margin:0 0 24px}.cta{display:inline-block;padding:13px 22px;background:var(--ink);color:var(--light);font:bold 14px Arial,Helvetica,sans-serif;text-decoration:none}.cta:hover{background:var(--red);color:white}.lead aside{border-left:1px solid var(--rule);padding-left:30px}.lead aside h2{font-size:27px;line-height:1.2;margin-top:0}.lead aside p{font-size:17px}.margin-note{font-style:italic;color:var(--muted)}.section-head{display:flex;justify-content:space-between;gap:24px;align-items:baseline;padding:27px 0 16px}.section-head h2{font-weight:normal;font-size:34px;margin:0;letter-spacing:-1px}.utility{font-size:12px;color:var(--muted)}.tool{border-top:4px solid var(--ink)}.workbench{display:grid;grid-template-columns:1fr 1.3fr;gap:32px;padding-bottom:22px}.editor{border-right:1px solid var(--rule);padding-right:30px}label{display:block;font-size:12px;font-weight:bold;margin:15px 0 6px}textarea,input,select{font-size:14px;line-height:1.45;color:var(--ink);background:var(--light);border:1px solid var(--rule);padding:10px;width:100%;border-radius:0}textarea{resize:vertical}select{min-width:0}.range{display:grid;grid-template-columns:1fr 1fr;gap:12px}.actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}button{font-size:12px;font-weight:bold;border:1px solid var(--ink);color:var(--ink);background:transparent;padding:10px 13px;cursor:pointer;min-height:40px}button:hover{background:var(--ink);color:var(--light)}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--ink);color:var(--light)}:focus-visible{outline:3px solid var(--red);outline-offset:3px}pre{font:12px/1.6 'Courier New',monospace;white-space:pre-wrap;overflow-wrap:anywhere;margin:0;max-height:440px;overflow:auto;background:var(--light);padding:17px;border:1px solid var(--rule)}.measure{padding:12px 0;font-size:14px;font-weight:bold;color:var(--red);border-bottom:1px solid var(--rule)}.diff-key{font-size:14px;color:var(--muted)}#status{font:13px/1.5 Arial,Helvetica,sans-serif;min-height:40px}summary{cursor:pointer;font-size:13px;padding:12px 0}details pre{max-height:300px}input[type=file]{font-size:12px}.notes{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;padding:27px 0 35px;border-top:1px solid var(--ink);border-bottom:1px solid var(--ink)}.notes article+article{border-left:1px solid var(--rule);padding-left:25px}.notes h3{font-size:23px;font-weight:normal;margin:0 0 12px}.notes p{font-size:16px;margin:0}.number{font-style:italic;color:var(--red)}.price-row{display:grid;grid-template-columns:170px 1fr 1.4fr;border-top:1px solid var(--rule);gap:25px;padding:18px 0;font-size:16px}.price-row strong{font-size:21px;font-weight:normal}.join{display:grid;grid-template-columns:1fr 1.2fr;gap:45px;border-top:4px solid var(--ink);padding:25px 0 35px;margin-top:25px}.join h2{font-size:38px;line-height:1.1;font-weight:normal;margin:0 0 17px}.join p{font-size:17px}.small{font-size:13px!important;color:var(--muted)}#thanks{border-left:3px solid var(--red);padding-left:20px}footer{padding-top:18px;padding-bottom:28px;border-top:1px solid var(--ink);font-size:13px;display:flex;justify-content:space-between;gap:20px}[hidden]{display:none!important}@media(max-width:700px){main,.masthead,footer{padding-left:20px;padding-right:20px}.edition{font-size:9px;letter-spacing:1px}.issue{display:none}.name{letter-spacing:-1px}.lead{grid-template-columns:1fr;gap:25px;padding-top:28px}h1{font-size:49px}.dek{font-size:20px}.lead aside{border-left:0;border-top:1px solid var(--rule);padding:20px 0 0}.lead aside h2{font-size:25px}.section-head{display:block}.workbench,.join{grid-template-columns:1fr;gap:25px}.editor{padding-right:0;border-right:0}.section-head h2{font-size:29px}.notes{grid-template-columns:1fr;gap:22px}.notes article+article{border-left:0;border-top:1px solid var(--rule);padding:18px 0 0}.price-row{grid-template-columns:1fr;gap:6px}footer{display:block}pre{max-height:360px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
</style>
</head>
<body>
<header class="masthead"><div class="edition"><span>A notplanned publication · No. 003</span><span>Local tools / better handoffs</span></div><div class="mast-title"><span class="name">Context Curator</span><span class="issue">A field guide to carrying less.</span></div></header>
<main>
<section class="lead"><div><p class="eyebrow">For developers with a long conversation behind them</p><h1>Keep the finding.<br><em>Cut the detour.</em></h1><p class="dek">Your agent explored six dead ends. The next session needs the conclusion — and everything that still matters around it.</p><a class="cta" href="#join">Join the early access list →</a><p class="small">Free local editor below. No account needed.</p></div><aside><h2>A smaller handoff,<br>with the evidence in view.</h2><p>Select one stretch of a JSON transcript. Write the conclusion yourself. Compare every message, then download a Markdown continuation packet.</p><p class="margin-note">The original stays intact. Undo is one click. Your transcript never leaves this browser.</p><p class="small">Inspired by <a href="https://github.com/openai/codex/issues/14747">openai/codex #14747</a>, closed as “not planned.” This is a manual, standalone workaround, not native session compaction.</p></aside></section>
<section class="tool" id="editor" aria-labelledby="editor-title"><div class="section-head"><h2 id="editor-title">The working edition</h2><span class="utility">Illustrative debugging transcript · editable, not a benchmark</span></div>
<div class="workbench"><div class="editor"><p class="small">The sample removes messages 3–8, retaining the requirements and next task. Try your own transcript using the documented version 1 format.</p><label for="file">Open a JSON transcript (2 MiB / 500 messages maximum)</label><input id="file" type="file" accept=".json,application/json">
<details><summary>Paste JSON / inspect the sample format</summary><label for="source">Transcript JSON</label><textarea id="source" rows="10" spellcheck="false"></textarea><button id="load" type="button">Load this JSON</button><p class="small">Required: <code>{"version":1,"messages":[{"id":"m1","role":"user","content":"…"}]}</code>. Roles: system, user, assistant, tool. Unique string IDs. Extra metadata is retained.</p></details>
<div class="range"><div><label for="first">First message (inclusive)</label><select id="first"></select></div><div><label for="last">Last message (inclusive)</label><select id="last"></select></div></div>
<label for="conclusion">Your replacement conclusion</label><textarea id="conclusion" rows="7" maxlength="100000" spellcheck="false"></textarea>
<div class="actions"><button class="primary" id="apply" type="button">Replace selected span</button><button id="undo" type="button">Undo replacement</button><button id="sample" type="button">Reset to sample</button></div><p id="status" role="status" aria-live="polite"></p>
<div class="actions"><button id="packet" type="button">Download Markdown packet</button><button id="result" type="button">Download curated JSON</button><button id="original" type="button">Save untouched original</button></div><p class="small">Offline copy: <a href="index.html" download="context-curator.html">download this complete editor</a>. Open the saved HTML in your browser. <a href="sample.json" download>Sample JSON</a> · <a href="demo-continuation.md" download>Demo packet</a> · <a href="README.md">Usage &amp; limits</a></p></div>
<div><div class="measure" id="measure" aria-live="polite"></div><p class="diff-key">Complete message diff · − removed · + manual conclusion · unmarked retained.<br>All message fields are shown. No hidden context.</p><pre id="diff" tabindex="0" aria-label="Complete before and after diff"></pre><details><summary>Complete original JSON</summary><pre id="before" tabindex="0"></pre></details><details><summary>Complete curated JSON</summary><pre id="after" tabindex="0"></pre></details></div></div></section>
<section class="notes" aria-label="How it works"><article><h3><span class="number">01 /</span> Mark the detour.</h3><p>Import a transcript you have explicitly exported or converted. Pick one contiguous span. Messages outside it stay unchanged, including their metadata.</p></article><article><h3><span class="number">02 /</span> Write what survived.</h3><p>State the finding, evidence, unresolved questions, and next step. Nothing is summarized by a model. You decide what can safely be left behind.</p></article><article><h3><span class="number">03 /</span> Review &amp; carry forward.</h3><p>Read the full diff. Download the quoted Markdown context for a fresh session. No live agent sessions or configuration are modified. Byte reduction is not a token or cost promise.</p></article></section>
<section aria-labelledby="pricing-title"><div class="section-head"><h2 id="pricing-title">An honest price list.</h2><span class="utility">Paid ideas are early access. No checkout, no billing.</span></div><div class="price-row"><strong>Local edition</strong><span>$0 · available today</span><span>Complete offline editor, sample, undo, diff and exports. No signup required.</span></div><div class="price-row"><strong>Founding workshop</strong><span>$49 one-time · proposed founding price</span><span>Early access idea: a guided transcript-conversion and handoff review. Register interest; not yet delivered.</span></div></section>
<section class="join" id="join" aria-labelledby="join-title"><div><p class="eyebrow">The next edition</p><h2 id="join-title">Less history.<br>More continuity.</h2><p>Get release updates, or signal interest in a guided workshop. The free editor is already yours.</p><p class="small">We use your email for Context Curator updates and your requested early access follow-up; we never share it. Do not put transcript content or secrets in the note.</p></div><div><form id="join-form" method="post" action="/api/signup" enctype="application/x-www-form-urlencoded"><input type="hidden" name="venture" value="context-curator"><input type="hidden" name="website" value=""><label for="email">Email</label><input id="email" name="email" type="email" required autocomplete="email" maxlength="254"><label for="plan">Your edition</label><select id="plan" name="plan" required><option value="free">Free local edition · release updates</option><option value="workshop">Founding workshop · $49 proposed, early access</option></select><label for="note">What would help? (optional)</label><textarea id="note" name="note" rows="2" maxlength="500"></textarea><div class="actions"><button class="primary" type="submit">Join the early access list →</button></div><p class="small">Signup requires the hosted page and a connection. The editor works offline.</p></form><div id="thanks" hidden role="status"><h3>You're on the list.</h3><p>Thanks for joining. Keep using the free local edition while we prepare the next release.</p><a href="#editor">Back to the editor ↑</a></div></div></section>
</main><footer><span>Context Curator · made at notplanned</span><span>No model calls. No trackers. No live-session access. Keep your original.</span></footer>
<script>
/*__CORE__*/
const SAMPLE_TEXT = /*__SAMPLE__*/;
/*__APP__*/
</script>
</body></html>