OXYGENHUB

The new proposal form lines up with the changes above it, its buttons in one row (closes #315) 8f0efa0729b0

The form was a 720 px card under a full-width panel, Draft with Claude a
second primary button, and the draft checkbox and Open proposal on lines
of their own. Now: full width; Draft with Claude a secondary button under
the editor; the checkbox and Open proposal on one row, the submit last.
Author
Andy McCall @andymccall <[email protected]>
via
agent agent:claude@andymccall <[email protected]> · keyless, under your grant for changes,refs,seal · key 1190f964739b
When
· 2026-10-25 21:01 UTC
Signature
◈ sealed by agent:claude@andymccall
Hash
8f0efa0729b02b703ca4caeb29ee53b6acd7c4e2e403f140617b26430d0e8570
Depends on
119fd17d213f 19bb31ff1f5c 7d2eb590051f d23464c0ac60 de505df5cf8d
Depended on by
nothing yet
In bookmarks
api-unknown-fields diffusion-pin-bookmark main proposal-list-fast
In tags
v0.9.11 v0.9.15 v0.9.16 v0.9.19 v0.9.20 v0.9.21 v0.9.22 v0.9.23 v0.9.24 v0.9.4 v0.9.5 v0.9.6 v0.9.7 v0.9.8 v0.9.9
Edits
4 atoms, 0 tree operations, 2 files

Browse the tree at this change

modified templates/proposal_new.html +6 −4
…
18 unchanged lines
19 19
  <h2>{{ preview.len()|plural("change", "changes") }} would be added to {{ target }}{% if conflicted %} <span class="tag bad">with conflicts</span>{% endif %}</h2>
20 20
  {% for c in preview %}{% call m::change_row(repo, c) %}{% endfor %}
21 21
</section>
22 -
<form class="card wide" method="post" action="{{ repo.url }}/proposals/new">
22 +
<form class="card full proposal-new" method="post" action="{{ repo.url }}/proposals/new">
23 23
  <input type="hidden" name="_csrf" value="{{ shell.csrf }}">
24 24
  <input type="hidden" name="source" value="{{ source }}">
25 25
  <input type="hidden" name="target" value="{{ target }}">
26 26
  <label for="title">Title</label><input type="text" id="title" name="title" required value="{% if !title.is_empty() %}{{ title }}{% else if preview.len() == 1 %}{{ preview[0].title }}{% endif %}">
27 27
  <label for="body">Description (Markdown)</label><textarea id="body" name="body" class="md" rows="8">{{ body }}</textarea>
28 -
  {% if !assistants.is_empty() %}<div class="side-assist">{% for a in assistants %}<button type="submit" class="agent-btn" formaction="{{ repo.url }}/proposals/new/draft" data-stream="{{ repo.url }}/proposals/new/draft/stream" formnovalidate name="assistant" value="{{ a }}" title="{{ a }}, an AI assistant, drafts the description from the changes; you edit it before opening"><img src="/avatar/agent/{{ a }}" alt="" width="16" height="16"> Draft with {{ a }}</button>{% endfor %}</div>{% endif %}
29 -
  <div class="choice"><label><input type="checkbox" name="draft" value="1"> draft: not ready for review</label></div>
30 -
  <button type="submit">OPEN PROPOSAL</button>
28 +
  {% if !assistants.is_empty() %}<div class="assist-row">{% for a in assistants %}<button type="submit" class="agent-btn" formaction="{{ repo.url }}/proposals/new/draft" data-stream="{{ repo.url }}/proposals/new/draft/stream" formnovalidate name="assistant" value="{{ a }}" title="{{ a }}, an AI assistant, drafts the description from the changes; you edit it before opening"><img src="/avatar/agent/{{ a }}" alt="" width="16" height="16"> Draft with {{ a }}</button>{% endfor %}</div>{% endif %}
29 +
  <div class="actions">
30 +
    <label class="choice"><input type="checkbox" name="draft" value="1"> Draft: not ready for review</label>
31 +
    <button type="submit" class="end">OPEN PROPOSAL</button>
32 +
  </div>
31 33
</form>
32 34
{% else if !source.is_empty() %}
33 35
<p class="empty">{{ source }} adds nothing to {{ target }}.</p>
…
2 unchanged lines
modified templates/style.css +8 −0
…
300 unchanged lines
301 301
/* forms */
302 302
form.card { max-width: 460px; background: var(--panel); border: 1px solid var(--line); padding: 18px 20px; margin: 0 0 16px; }
303 303
form.card.wide { max-width: 720px; }
304 +
/* As wide as the panel above it (a new proposal's changes, #315). */
305 +
form.card.full { max-width: none; }
306 +
form .actions > .end, form.card .actions > button.end[type=submit] { margin-left: auto; }
307 +
/* Assistants that fill a form's fields, under the editor: secondary,
308 +
   not the form's submit (#315). */
309 +
form.card .assist-row { display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0 0; }
310 +
form.card .assist-row button.agent-btn { background: var(--panel); color: var(--ink); border: 1px solid var(--line); margin: 0; }
311 +
form.card .assist-row button.agent-btn:hover { border-color: var(--acc); }
304 312
form.card label, .field label { display: block; font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: var(--mute); margin: 10px 0 4px; }
305 313
form.card input[type=text], form.card input[type=password], form.card input[type=email], form.card input[type=search], form.card input[type=number], form.card textarea, form.card select,
306 314
.field input, .field select, .field textarea { width: 100%; background: var(--bg); border: 1px solid var(--line); color: var(--ink); padding: 7px 10px; font: inherit; }
…
991 unchanged lines