Minor release: a browser review page for the design spec, Google's new Nano Banana 2.1 as the default Google image model, and fixes for content that source conversion and PPTX/SVG text round-trips used to lose without a warning.
Image generation
- Google image generation now defaults to Nano Banana 2.1 (
gemini-nano-banana-2.1, GA on 2026-10-06), on the Gemini, OpenRouter (google/gemini-nano-banana-2.1) and fal (google/nano-banana-2.1) backends. Google has deprecatedgemini-3.1-flash-image, but has not announced a shutdown date. Nano Banana 2.1 does not offer512px, so all three backends now reject512pxfor it before sending a request. The wide ratios1:4 4:1 1:8 8:1still work (35508e3).- If your
.envpinsGEMINI_MODEL=gemini-3.1-flash-image(or the OpenRouter/fal equivalent), that setting still wins over the new default. Update or remove the line to switch. - Removed the IDs
gemini-3.1-flash-image-previewandgemini-2.5-flash-image-preview; Google has shut both models down.
- If your
- OpenAI:
OPENAI_BACKGROUND=transparentis now accepted for GPT Image models, includinggpt-image-2(in preview at OpenAI), and is refused only together with JPEG output.gpt-image-2.5-sunburst/gpt-image-2.5-flareand their snapshots acceptOPENAI_QUALITY=xhigh|max.gpt-image-1-miniaccepts input fidelitylowonly. The default staysgpt-image-2(3f98568). - Backend fixes:
- Qwen 2K
2:3/3:2used to produce 3:4 / 4:3 images. - A Volcengine Ark base URL ending in
/api/v3no longer gets/api/v1appended. - Replicate now rejects
21:9, whichflux-1.1-prodoes not offer, before sending the request (06d8f0a).
- Qwen 2K
image_searchhalves originals above Pillow's decompression-warning size (481e057).slice_imageshandles three more cases (964d920, fd20665, adbfdf4):- a ground that is uneven but key-coloured;
- edges and shadows blended with the key colour;
- despill on a ground measured close to the key colour.
Design spec review
- New browser review page for
design_spec.md: one page per section, Part and slide. You can edit one block's Markdown directly. The edit is applied as an exact byte-range replacement with a hash precondition, and its schema is checked before it is written. You can also leave per-block or global comments, which go in a separate sidecar file and never into the spec.check_spec_annotations.pyhands both kinds of feedback to the agent (aec3202, 61ad7ae). - With
refine_specon, a run that confirmed on the page now also reviews the spec on the page; runs confirmed in chat keep reviewing in chat. Approval still happens in chat. Resume returns to Refine Spec if the spec changed after the lock (866efd8).
Source conversion
- DOCX, PPTX, Excel and web converters no longer drop content without a warning. Affected content included nested tables, content controls, endnotes and links inside tables, OMML separators, PPTX field text and numbering continuation, Excel hidden sheets, merged cells and number formats, and more (13ac724, 2d72da6).
pdf_to_mdkeeps body text that repeats a running header or footer, and keeps numeric or labelled paragraphs that sit between tables sharing a header (51c2979, 4eb7b3d). Typst text survives when pandoc cannot evaluate it (176235a).
PPTX ↔ SVG text
- Text baselines now come from one shared font-metric model in both directions, replacing fixed font-size estimates (3d1b7dc, #301).
- Imported text that overflows its frame keeps every line, following DrawingML's default overflow, and stays vertically anchored. Explicit clip and ellipsis are still honoured (c9a8258, d542475).
UI and tooling
- Spec review, confirmation and live preview UIs:
- all detect and store the UI language the same way;
- switching language keeps typed annotations;
- zh-TW uses full-width separators.
Thanks to @kevindesuyo (#305, #306, #307).
- Detached servers keep ANSI colour codes out of their logs (1d76e32). The bundled comparison gallery and logos are smaller (6a9ee2a).