Artifact c416f95e362dd5f65bb6353ce7df0c54070f62eee92edfcbdac498151d244c37:
- File
g2.html
— part of check-in
[3d68e9b401]
at
2026-08-16 09:57:16
on branch trunk
— chat: drop DAG archival — keep chat ephemeral like Fossil
Reversed 0001 §5's 'durability is the DAG': minting chat into synced, content-addressed forum artifacts writes casual chatter permanently into the DAG, the opposite of Fossil's deliberate chat ephemerality (server-local, auto-purged, never synced). Chat stays live + the 7-day JetStream window; durable archival becomes a future quarry-specific/S3 concern, not near-term. Removes internal/chatarchive, its wiring and flags, events.KV, and the zitcli forum/technote wrappers it used (they return with v2 web-authored forum). Chat itself is unchanged. (user: dmestas, size: 10794) [annotate] [blame] [check-ins using]
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>edit evil/traversal — quarry</title> <style> :root { --fg: #1a1a1a; --bg: #ffffff; --muted: #6a6a6a; --code-bg: #f4f5f7; } @media (prefers-color-scheme: dark) { :root { --fg: #e8e8e8; --bg: #14161a; --muted: #9a9a9a; --code-bg: #1c2026; } } body { color: var(--fg); background: var(--bg); font: 16px/1.5 system-ui, sans-serif; max-width: 60rem; margin: 0 auto; padding: 1rem; } footer { color: var(--muted); border-top: 1px solid var(--muted); margin-top: 2rem; padding-top: 0.5rem; font-size: 0.85rem; } table { border-collapse: collapse; width: 100%; } th, td { text-align: left; padding: 0.25rem 0.75rem 0.25rem 0; } th { border-bottom: 1px solid var(--muted); } a { color: inherit; } header { display: flex; gap: 1rem; align-items: baseline; flex-wrap: wrap; border-bottom: 1px solid var(--muted); padding-bottom: 0.5rem; } header .site { font-weight: bold; } header form { margin-left: auto; } .tw { overflow-x: auto; } table.tl td { border: 0; padding: 0; vertical-align: top; } table.tl td.tl-graph { position: relative; } svg.tl-head { position: absolute; top: 0; left: 0; display: block; } svg.tl-tail { position: absolute; top: 36px; left: 0; height: calc(100% - 36px); display: block; } tr.tl-date svg.tl-tail, tr.tl-flat svg.tl-tail { top: 0; height: 100%; } .tl-card-flat { padding: 0.45em 0.75em; font-size: 0.95em; } .tl-meta-inline { color: var(--muted); font-size: 85%; } table.tl td.tl-time { white-space: nowrap; width: 3.4rem; padding: 13px 0.5rem 0 0; text-align: right; } table.tl td.tl-time a { color: var(--muted); text-decoration: none; } table.tl td.tl-time a:hover { text-decoration: underline; } table.tl td.tl-slot { width: 100%; padding: 0 0 5px 0.6rem; } table.tl td.tl-datecell { padding: 6px 0 6px 0.6rem; } .tl-card { background: var(--code-bg); border-radius: 1em; padding: 0.75em; } .tl-title { font-weight: 550; } .tl-p { margin: 0.35em 0 0; color: color-mix(in srgb, var(--fg) 78%, var(--muted)); } .tl-meta { color: var(--muted); font-size: 80%; text-align: right; opacity: 0.85; margin-top: 0.5em; } .tl-meta a { text-decoration: none; } .tl-meta a:hover { text-decoration: underline; } @media (max-width: 640px) { body { padding: 0.5rem; } table.tl td.tl-time { width: 2.6rem; font-size: 0.8rem; padding-top: 15px; } .tl-card { padding: 0.75em 0.55em; border-radius: 0.6em; } .tl-meta { font-size: 72%; } } .tl-badge { border: 1px solid var(--muted); border-radius: 3px; padding: 0 0.25rem; font-size: 0.72rem; } .tl-pill { display: inline-block; border: 1px solid var(--muted); border-radius: 6px; padding: 0.05rem 0.5rem; font-weight: bold; margin: 0.55rem 0 0.25rem; } .tl-controls { color: var(--muted); font-size: 0.9rem; display: flex; gap: 0.8rem; align-items: baseline; margin-bottom: 0.4rem; } pre { overflow-x: auto; background: var(--code-bg); padding: 0.5rem; border-radius: 4px; } pre.diff .add { color: #116329; } pre.diff .del { color: #a40e26; } pre.diff .hunk { color: var(--muted); } pre.diff .head { font-weight: bold; } mark { background: #fff3b8; color: inherit; } @media (prefers-color-scheme: dark) { pre.diff .add { color: #56d364; } pre.diff .del { color: #ff7b72; } mark { background: #5c4d00; } } </style> <style> .bg { background-color: #f7f7f7; } .chroma { background-color: #f7f7f7; -webkit-text-size-adjust: none; } .chroma .err { color: #f6f8fa; background-color: #82071e } .chroma .lnlinks { outline: none; text-decoration: none; color: inherit } .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; } .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; } .chroma .hl { background-color: #dedede } .chroma .lnt { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f } .chroma .ln { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f } .chroma .line { display: flex; } .chroma .k { color: #cf222e } .chroma .kc { color: #cf222e } .chroma .kd { color: #cf222e } .chroma .kn { color: #cf222e } .chroma .kp { color: #cf222e } .chroma .kr { color: #cf222e } .chroma .kt { color: #cf222e } .chroma .na { color: #1f2328 } .chroma .nc { color: #1f2328 } .chroma .no { color: #0550ae } .chroma .nd { color: #0550ae } .chroma .ni { color: #6639ba } .chroma .nl { color: #990000; font-weight: bold } .chroma .nn { color: #24292e } .chroma .nx { color: #1f2328 } .chroma .nt { color: #0550ae } .chroma .nb { color: #6639ba } .chroma .bp { color: #6a737d } .chroma .nv { color: #953800 } .chroma .vc { color: #953800 } .chroma .vg { color: #953800 } .chroma .vi { color: #953800 } .chroma .vm { color: #953800 } .chroma .nf { color: #6639ba } .chroma .fm { color: #6639ba } .chroma .s { color: #0a3069 } .chroma .sa { color: #0a3069 } .chroma .sb { color: #0a3069 } .chroma .sc { color: #0a3069 } .chroma .dl { color: #0a3069 } .chroma .sd { color: #0a3069 } .chroma .s2 { color: #0a3069 } .chroma .se { color: #0a3069 } .chroma .sh { color: #0a3069 } .chroma .si { color: #0a3069 } .chroma .sx { color: #0a3069 } .chroma .sr { color: #0a3069 } .chroma .s1 { color: #0a3069 } .chroma .ss { color: #032f62 } .chroma .m { color: #0550ae } .chroma .mb { color: #0550ae } .chroma .mf { color: #0550ae } .chroma .mh { color: #0550ae } .chroma .mi { color: #0550ae } .chroma .il { color: #0550ae } .chroma .mo { color: #0550ae } .chroma .o { color: #0550ae } .chroma .ow { color: #0550ae } .chroma .or { color: #0550ae } .chroma .p { color: #1f2328 } .chroma .c { color: #57606a } .chroma .ch { color: #57606a } .chroma .cm { color: #57606a } .chroma .c1 { color: #57606a } .chroma .cs { color: #57606a } .chroma .cp { color: #57606a } .chroma .cpf { color: #57606a } .chroma .gd { color: #82071e; background-color: #ffebe9 } .chroma .ge { color: #1f2328 } .chroma .gi { color: #116329; background-color: #dafbe1 } .chroma .go { color: #1f2328 } .chroma .gl { text-decoration: underline } .chroma .w { color: #ffffff } @media (prefers-color-scheme: dark) { .bg { color: #e6edf3; background-color: #0d1117; } .chroma { color: #e6edf3; background-color: #0d1117; -webkit-text-size-adjust: none; } .chroma .err { color: #f85149 } .chroma .lnlinks { outline: none; text-decoration: none; color: inherit } .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; } .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; } .chroma .hl { background-color: #6e7681 } .chroma .lnt { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #737679 } .chroma .ln { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #6e7681 } .chroma .line { display: flex; } .chroma .k { color: #ff7b72 } .chroma .kc { color: #79c0ff } .chroma .kd { color: #ff7b72 } .chroma .kn { color: #ff7b72 } .chroma .kp { color: #79c0ff } .chroma .kr { color: #ff7b72 } .chroma .kt { color: #ff7b72 } .chroma .nc { color: #f0883e; font-weight: bold } .chroma .no { color: #79c0ff; font-weight: bold } .chroma .nd { color: #d2a8ff; font-weight: bold } .chroma .ni { color: #ffa657 } .chroma .ne { color: #f0883e; font-weight: bold } .chroma .nl { color: #79c0ff; font-weight: bold } .chroma .nn { color: #ff7b72 } .chroma .py { color: #79c0ff } .chroma .nt { color: #7ee787 } .chroma .nv { color: #79c0ff } .chroma .vc { color: #79c0ff } .chroma .vg { color: #79c0ff } .chroma .vi { color: #79c0ff } .chroma .vm { color: #79c0ff } .chroma .nf { color: #d2a8ff; font-weight: bold } .chroma .fm { color: #d2a8ff; font-weight: bold } .chroma .l { color: #a5d6ff } .chroma .ld { color: #79c0ff } .chroma .s { color: #a5d6ff } .chroma .sa { color: #79c0ff } .chroma .sb { color: #a5d6ff } .chroma .sc { color: #a5d6ff } .chroma .dl { color: #79c0ff } .chroma .sd { color: #a5d6ff } .chroma .s2 { color: #a5d6ff } .chroma .se { color: #79c0ff } .chroma .sh { color: #79c0ff } .chroma .si { color: #a5d6ff } .chroma .sx { color: #a5d6ff } .chroma .sr { color: #79c0ff } .chroma .s1 { color: #a5d6ff } .chroma .ss { color: #a5d6ff } .chroma .m { color: #a5d6ff } .chroma .mb { color: #a5d6ff } .chroma .mf { color: #a5d6ff } .chroma .mh { color: #a5d6ff } .chroma .mi { color: #a5d6ff } .chroma .il { color: #a5d6ff } .chroma .mo { color: #a5d6ff } .chroma .o { color: #ff7b72; font-weight: bold } .chroma .ow { color: #ff7b72; font-weight: bold } .chroma .or { color: #ff7b72; font-weight: bold } .chroma .c { color: #8b949e; font-style: italic } .chroma .ch { color: #8b949e; font-style: italic } .chroma .cm { color: #8b949e; font-style: italic } .chroma .c1 { color: #8b949e; font-style: italic } .chroma .cs { color: #8b949e; font-weight: bold; font-style: italic } .chroma .cp { color: #8b949e; font-weight: bold; font-style: italic } .chroma .cpf { color: #8b949e; font-weight: bold; font-style: italic } .chroma .gd { color: #ffa198; background-color: #490202 } .chroma .ge { font-style: italic } .chroma .gr { color: #ffa198 } .chroma .gh { color: #79c0ff; font-weight: bold } .chroma .gi { color: #56d364; background-color: #0f5323 } .chroma .go { color: #8b949e } .chroma .gp { color: #8b949e } .chroma .gs { font-weight: bold } .chroma .gu { color: #79c0ff } .chroma .gt { color: #ff7b72 } .chroma .gl { text-decoration: underline } .chroma .w { color: #6e7681 } .chroma .na { color: #e6edf3 } .chroma .nx { color: #e6edf3 } .chroma .nb { color: #e6edf3 } .chroma .bp { color: #e6edf3 } .chroma .p { color: #e6edf3 } } </style> <script type="module" src="/assets/datastar.js" defer></script> </head> <body> <header> <a class="site" href="/">quarry</a> <a href="/r/open/timeline">open</a> <nav><a href="/r/open/timeline">timeline</a> <a href="/r/open/wiki">wiki</a> <a href="/r/open/ticket">tickets</a></nav> <form action="/r/open/search" method="get"><input type="search" name="q" placeholder="search" aria-label="search"></form> </header> <main> <h1>edit evil/traversal</h1> <form method="post" action="/r/open/wiki/evil%2Ftraversal/edit"> <p><textarea name="body" rows="20" style="width:100%" placeholder="Markdown">encoded slash test</textarea></p> <p><button type="submit">Save</button> <a href="/r/open/wiki/evil%2Ftraversal">cancel</a></p> </form> </main> <footer>quarry 0.0.0-dev · <a href="/docs">API</a></footer> </body> </html>