Skip to content

Specs for 1.18 (Vector versions, drawing, depth stack, pasted pictures) and 1.19 (Prompt builder) - #39

Merged
NoSQLKnowHow merged 9 commits into
mainfrom
vector-versions-spec
Nov 7, 2026
Merged

NoSQLKnowHow merged 9 commits into
mainfrom
vector-versions-spec

Conversation

@NoSQLKnowHow

Copy link
Copy Markdown
Owner

What this is

Specification only. No code changes: two files change, docs/DESIGN.md and README.md. Nothing here is built; the 1.18 build follows on a separate branch.

What is specified

1.18 (docs/DESIGN.md §35 and §36, decisions #54 and #55, acceptance criteria 185 to 220)

  • Vector versions as one group. A run with several versions becomes one compact card with a grid of previews and a viewer, like Images. Delete version sends one version to the bin for 30 days (the last one sends the run). This fixes the two problems found on 1.17: Delete took every version of a run, and the versions were not grouped.
  • The drawing is shown. The viewer shows what the image model drew beside the vector, with a download. The file has been kept on disk since 1.17 but never served.
  • Stacked (depth). Today's Stacked arrangement already builds cumulative sheets (measured on a constructed picture: 5184 / 1694 / 166 mm² against 3444 / 1469 / 144 side by side). 1.18 names it as depth, adds a Back sheet choice (stack_order), a Height column, an exploded stack view and a per-layer SVG route.
  • Pictures by paste. Ctrl+V works anywhere on the Images tab; a picture pasted or dropped in Generate switches the card to Edit (with Undo); Upscale a picture… takes a drop or a paste; an edit can use up to 8 pictures once the Spark has measured 6 and 8 (the default stays 4).

1.19 (§37, decision #56, criteria 221 to 257)

  • The Prompt builder: a fourth tab where a rough idea is turned into a prompt by an LLM hosted in Ollama (qwen3.8:27b, on the Spark itself) through short questions with tap-to-answer chips.
  • Prompts are saved with every version kept, and can be fleshed out, compared, tagged, searched and filed in the same projects as pictures, which follow them. Every conversation, standing preferences and similar past prompts are kept and recalled.
  • Use in Images and Generate now take a prompt to the Images tab; Vector, Music and Edit prompts have their own.
  • Thinking is on by default and shown live but not stored; the studio never unloads Ollama's model by itself; the Ollama address lives only in the owner's own .env, not in the repository.
  • The prompt rewriter plan (R3, M5e) is withdrawn.

Every question that came up was put to the owner and answered; the decisions are recorded in the tables of §35 to §37.

Notes for review

  • Schema numbers: 1.18 is schema 8, 1.19 is schema 9. STUDIO_MAX_INPUT_IMAGES and STUDIO_EDIT_WARN_UNITS keep their shipped defaults (4 and 8).
  • Claims about Ollama's API were read from its API reference and its model page (dated in §37.1); the figures about speed and memory are arithmetic and are labelled as such, with Spark checks listed in §37.8.
  • No CI exists in this repository; the check is reading it. The tables keep their column counts and the criteria are numbered without gaps (185 to 257).

Generated by Claude Code

…rsion

You made a Vector run with several versions and found two problems: Delete on a version deleted all
of them, and the versions were not grouped the way Images groups a run's pictures. Both reproduced
(real page and server, 3 versions): the card has one Delete button, for the whole run, and shows each
version as a full-width block (1389 px tall, against 230 px for an Images card of 3 pictures).

Your answers: the versions are reached through a viewer, like Images; Delete version goes into the
bin for 30 days, like a picture.

- docs/DESIGN.md: section 35 (what was found, what it looks like, the rules, the server, the small
  choices, criteria 185 to 201, what is not in 1.18); decision #54; a 1.18 row in the version table;
  the header; the two choices of 31.12.9 (no per-vector bin, no viewer) and the known limit of 31.13
  are marked as amended.
- README.md: the "Still to come" row mentions it.

Specification only: nothing is built, no code changed.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_011NDCKtu1QcLwawbdzwmFA1
…eview the Stacked (depth) arrangement

Two more changes from the owner, added to DESIGN.md section 35 (spec only, nothing built):

- The viewer shows the drawing Qwen-Image made beside the vector, with Download drawing.
  Checked first: the drawing is kept on disk as <idx>-source.png but no route serves it and no
  payload names it. New route /api/vectors/{id}/drawing; it goes with its version through the bin.
- A depth arrangement. Measured with the real engine on a constructed picture: today's Stacked
  is already cumulative (5184/1694/166 mm2 against 3444/1469/144 side by side), so N layers
  make N levels. The owner chose "today's Stacked, made clear": named Stacked (depth), a
  stack_order choice for which colour is at the back, a Height column, an exploded stack view
  with a Sheets shown control, a per-layer SVG route, and bleed 0 for flush edges.

Adds rules 10-12, choices 13-18, criteria 202-210, and updates decision 54, the 1.18 row, the
README and the note under 31.12.3 item 3.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_011NDCKtu1QcLwawbdzwmFA1
… Upscale, up to 8

The owner asked whether a picture can be pasted from the clipboard into the prompt area and
added as if uploaded, for a new image and for an edit. Checked first: paste works only in Edit,
only with the cursor in the prompt box, and Generate refuses a picture (a 1.6 choice).

Decided by the owner's answers: a picture pasted or dropped in Generate is taken and the card
becomes Edit (pictures plus a prompt that make a new picture are what Edit is); paste works
anywhere on the page and on Upscale a picture...; up to 8 pictures are specified while the
default stays 4 until the Spark has measured 6 and 8.

Proposed for veto (section 36.5): an Undo on the switch, text winning over a picture in other text
fields, Upscale taking a paste only while focused, no Paste button (needs https).

Page-only change: no server, schema or contract change. Adds section 36, decision 55, criteria
211-220, a Spark measurement (36.7), and amends 21.4, 21.11, decision 26, the 1.18 row, the
header and the README.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_011NDCKtu1QcLwawbdzwmFA1
The owner asked for a Prompt builder tab: type a rough idea and an LLM hosted in Ollama asks
questions to build an image prompt; save prompts and flesh them out; group prompts and their
pictures in projects; keep the conversation memory in the database; and a button that takes a
prompt to the Images tab. Asked two rounds of questions and wrote the answers in.

Decided by the owner's answers: Use in Images and Generate now; memory = every conversation,
standing preferences and similar past prompts; the same projects, pictures following the prompt;
every version kept; tap-to-answer chips, Surprise me / Skip, Write it now, Detail level; settings
that fit, several wordings, a quick-try thumbnail, Revise from a result; Send to Vector and Music,
help writing edits, a prompt from a picture; tags/search/favourites, Compare versions and
preferences per project. Export/import was not chosen.

Checked first: projects exist for runs but not prompts; the server has never made an outbound call;
memory on the Spark is shared. Ollama's API facts (chat with pictures, format as a JSON schema,
keep_alive, unload with an empty chat and keep_alive 0, tags, show) were read from its API
reference. The LLM address and model are still to come from the owner (37.9).

Adds section 37 (schema 9, /api/builder routes, prompt_ref on runs, the LLM's instructions and
answer contract, 32 acceptance criteria 221-252, a Spark/Ollama check list), decision 56, the 1.19
row, and pointers where the Prompt builder replaces the old R3/M5e rewriter plan.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_011NDCKtu1QcLwawbdzwmFA1
…s not used

The owner gave the Ollama address and the model (qwen3.8:27b), agreed to the small choices of
37.6, said yes to withdrawing the prompt rewriter (R3, M5e) and no to using Hermes' LLM server.
The address is kept out of the repository (settings default empty, placeholder in .env.example).

Read from Ollama's library page and thinking reference: qwen3.8:27b is an 18 GB file with a 256K
context and vision, tools and thinking capabilities; the chat call has a think setting, and the
reference does not say how thinking and a structured answer (format) behave together. So:
STUDIO_OLLAMA_THINK (off by default), reasoning text never shown or stored, a Thinking indicator,
and a Spark check that compares thinking off and on. No second vision model is needed.

Marks 37.6 choices 1-13 agreed and adds 14 (thinking off) and 15 (address not in the repository);
adds criteria 253-254; rewrites 37.9 as settled / still waiting (is the address the Spark itself?);
turns the R3/M5e pointers from "proposed to withdraw" into "withdrawn".

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_011NDCKtu1QcLwawbdzwmFA1
The owner said Ollama is on the Spark itself, chose thinking on by default (changing choice 14),
and said the address goes in their own .env (choice 15, unchanged in substance).

Because thinking is on, a reply may take a minute or more before its first visible word (by the
usual arithmetic: an 18 GB model, about 15 tokens a second; to be measured). So the spec adds:
a Think On/Off switch on each message, a live "Show thinking" view that is dropped when the reply
ends (not stored, not sent back), a silence timeout (120 s) with a total cap (900 s) instead of a
first-word timeout, a 16384 default context, and a second ask with thinking off when a structured
answer fails to parse. The memory sharing with the image model is now a settled fact, not a
question; the one open question is whether the studio may unload Ollama's model by itself.

Adds choices 16-19, criteria 255-257, rule 18; updates 37.1, 37.2, 37.4, 37.5, 37.8, 37.9 and
decision 56. The address is still nowhere in the repository.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_011NDCKtu1QcLwawbdzwmFA1
The owner decided: button and hint only. Choice 17 is now decided; 37.9 lists the settled items and
leaves only choices 16, 18 and 19 (show thinking but do not keep it, silence as the main timeout, a
16384 context) for the owner's veto. Decision 56 notes it.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_011NDCKtu1QcLwawbdzwmFA1
The owner decided to show the thinking live without storing it (16) and to use a 120-second silence
timeout with a 900-second cap (18). Asked what "16K context" means, so choice 19 now says in plain
words what the context window is, what counts toward it, why it is 16384 and what a bigger one
costs. Only choice 19 is left for the owner's veto.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_011NDCKtu1QcLwawbdzwmFA1
The owner chose 32768 over the recommended 16384, so long chats and several pictures fit without
trimming. Choice 19 now says what the context window is, what counts toward it, and the price:
memory on top of the 18 GB model on the same pool as Qwen-Image and Hermes. The Spark check
measures it, with 16384 as the fallback. Every question in section 37 is now answered.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_011NDCKtu1QcLwawbdzwmFA1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants