Skip to content

v0.3.9

Choose a tag to compare

@github-actions github-actions released this 30 Aug 11:23
· 123 commits to development since this release

What's changed

  • AI: persist generated images as workspace assets
  • AI: apply preset image model, and accept every preset in SetConfig
  • AI: generate a design as editable SVG (backend, DeepSeek/text LLM)
  • AI: turn a generated SVG into an editable design (frontend)
  • Backend: retry the initial DB connect on boot instead of failing once (#16)
  • Docs: add the F28 leverage map and reference pointer
  • AI: restore server-side assistant tool parity via a shared manifest
  • AI: generated decks carry speaker notes
  • AI: append generated pages by default instead of replacing the document
  • AI: close the provider-config gaps
  • Docs: sync F28/F39 feature docs to the shipped code
  • Style: rename exported UPPER_SNAKE constants to camelCase
  • Fix review findings: frontend test gaps, note-cap parity, azure edit capability
  • Apply the full review's findings across the AI config and prompt seams
  • AI: point the save error at the missing base URL
  • Close the review's remaining AI-config and parity gaps
  • AI config: PATCH semantics at the server and true capability gating
  • AI: request natively schema-constrained output from the provider
  • AI: repair-loop feedback with concrete errors in the orchestrator
  • AI: port the prompt rule corpus into every generation prompt
  • AI: review the outline before generating, with generation dials
  • AI: placeholder-first generation imagery with reuse and stock routing
  • Fix the Phase 1 review findings across the generation pipeline
  • Schema v21: optional capacity hints on Placeholder
  • AI: layout-grounded generation with derived content schemas
  • AI: narrative ops - insertAgenda, splitSlide, insertComparison
  • AI: per-slide regeneration with layout re-selection and image diffing
  • Fix the Phase 2 review findings across layout-grounded generation
  • Fix the follow-up review findings on the layout-generation seams
  • AI: ingestion depth - multi-file grounding, office formats, scan detection
  • AI: web search grounding with untrusted-source framing
  • AI: chart values computed from attached data, never estimated
  • AI: streaming generation - SSE progress and instant decks
  • Fix the Phase 3 review findings across ingestion, search, and streaming
  • AI: theme UI, brand-to-theme bridge, and AI theme generation (F28 T19)
  • Editor: extract a reusable layout set from a deck (F28 T20 stage 1)
  • Editor: vision correction and capacity verification for extracted layouts (F28 T20 stages 2+3)
  • Docs: sync the F28 spec with whole-deck layout extraction (T20)
  • Brand: draft a brand kit from a company domain (F28 T21)
  • Docs: record the Phase 4 design-system features (T19, T20, T21)
  • Fix the Phase 4 review findings across themes, extraction, and brand drafts
  • Export: PPTX fidelity golden set + camera bubble in present-and-record (F28 T22)
  • Fix the Phase 5 review findings across PPTX fidelity and recording
  • Editor: make the brand re-skin identity-safe for neighboring undo entries
  • Editor: extend restyle undo identity safety to the node level
  • Docs: catch the F28 capability tables up to the shipped product
  • Docs: add the F28 completion task board (7 phases, 38 tasks)
  • Import: archive-bomb guards on the client zip reader (F28 completion C01)
  • Present: per-transition easing and exit transitions (schema v22, F28 completion C02+C03)
  • Editor: transition gallery picker and animate-all-slides (F28 completion C04+C05)
  • Fix the Phase 1 review findings: exit-only transitions, key drops, swatch churn
  • Engine: Magic Move depth - nested matching, appearance tween, forced match, word morph (F28 completion C06-C10)
  • Fix the Phase 2 review findings: word-morph measurement parity and plan caching
  • Engine: animation depth - motion paths, keyframe channels, spring physics, painter, media triggers (schema v23, F28 completion C11-C15)
  • Fix the Phase 3 review findings: channel boundary holds and trigger fall-through
  • Present: interactivity and delivery - interactions v2, captions, coach, kiosk, phone remote, control hand-off (schema v24, F28 completion C16-C22)
  • Fix the Phase 4 review findings: pairing-code leak, speech loop, CRDT key hygiene
  • Scale and interop: present prefetch, lazy thumbnails, ODP import, markdown outlines (F28 completion C23-C26)
  • Fix the Phase 5 review findings: prefetch memory pin and honest scope notes
  • Assist: accessibility fixes and AI completion - one-click a11y fixes, title sync, chart alt text, Magic Switch, brief interview, critique loop, citations, image themes (F28 completion C27-C34)
  • Fix the Phase 6 review findings: citation integrity, review-outline clobber, CRDT name key, nested-node fixes
  • Collab and sharing: slide status board, named link analytics, iframe embed, reuse slides (F28 completion C35-C38)
  • Fix the Phase 7 review findings: background-image asset carry, picker thumbnail gating, board drag hygiene
  • Docs: add the F40 AI platform task board (generation API, MCP, catalog, template-from-PPTX, adaptive reflow)
  • API: public generation API - scoped keys, headless goja composer, prompt-to-deck endpoint, embedded docs (F40 E01-E06)
  • Fix the Phase 1 (F40) review findings: header-only keys, job-poll tenancy, rune-safe truncation
  • API: MCP server over the generation API + key-activity audit trail (F40 E07-E08)
  • Polish the F40 Phase 2 review findings: share-refusal clarity and the Origin-validation stance
  • Catalog: 16 slide layouts, 33 themes as shared data, 31 deck template seeds, generate-with-theme (F40 E09-E12)
  • Fix the F40 Phase 3 review findings: hue-ladder duplicate, theme choice lost on regenerate, themed-compose coverage
  • Templates: one-click AI template-from-PPTX + templates as first-class generation targets (F40 E13-E14)
  • Fix the F40 Phase 4 review finding: template themes reach the freeform path
  • AI Studio: adaptive reflow for layout-linked slides (F40 E15-E17)
  • AI Studio: harden the reflow review findings (F40 E15-E17)
  • Editor: one assistant bubble per intent in the AI panel
  • Editor: keep the AI chat alive across tool switches and surface its state
  • AI: tell the user WHY a provider call failed, and stop stale models
  • AI Studio: give generated decks a real visual system
  • Editor: let the AI panel collect several attachments in one sitting
  • Editor: drag and drop files onto the AI panel to attach them
  • Fix the review findings from the AI panel and deck-styling work
  • Frontend: clear the standing lint warnings
  • AI: add Moonshot (Kimi) as a first-class provider
  • Docs: correct the provider counts for the Kimi preset
  • Editor: make the AI base URL editable for every provider
  • AI: carry the real failure reason through the generation stream
  • Editor: stop the confirm banner from discarding the user's style choices
  • Editor: give the generation job poll a realistic budget
  • Editor: make one undo actually revert a generation, and never cross designs
  • Fix two gaps in the AI trust fixes
  • Editor: staged progress and a Stop button for AI generation
  • Editor: surface failed slide copy, and stop image slots reading "Text"
  • Editor: make the AI panel operable and announced
  • Make Stop actually reach the long calls
  • Editor: fold async AI results into the turn they continue, and keep focus
  • Editor: give per-slide regeneration a button, and make the style dials stick
  • Dashboard: start a design from a brief
  • Fix three gaps in the discoverability work
  • Dashboard: rebuild the brief field as a proper composer
  • Dashboard: tune the brief composer's proportions
  • Dashboard: centre the hero on the brief, and move the blank-start action
  • Dashboard: attach documents to the brief
  • Dashboard: drag documents onto the brief to attach them
  • Editor: do not lose a dashboard brief when no AI provider is connected
  • AI: give the provider config a home in workspace settings
  • Fix two gaps in the AI settings extraction
  • AI settings: label the fields and fit the settings page
  • Dashboard: tell the two key sections apart, and lead with AI
  • AI settings: drop the card and match the app's field styling
  • AI settings: separate the web-search fields from the model fields
  • AI settings: let the form use the full section width
  • AI settings: move the save action to the end edge
  • Fix the editor panel's copy of the AI form
  • Editor: close the five remaining P1 findings from the AI audit
  • Editor: make the follow-up chips deterministic, and survive a reload
  • Editor: translate the assistant's skip reasons
  • Editor: reach past AI conversations again
  • Dashboard: expose the AI usage limits the server already enforces
  • Fix three gaps in the history and policy work
  • Editor: retry a failed generation with the review you already did
  • Dashboard: say whether this workspace can actually generate
  • AI settings: show that a key is stored, and lift the status to the heading
  • AI: let a workspace disconnect its provider
  • AI settings: rename Disconnect to Reset provider, beside Save
  • UI: a real confirmation dialog, instead of the browser's
  • AI: prove the provider works instead of assuming a saved key does
  • Dashboard: present monthly AI token usage as the estimate it is
  • AI settings: report the right cause, and stop claiming a key that is not there
  • AI: let a workspace pair a text provider with a separate image provider
  • AI settings: keep the image provider's stored model and host across a switch
  • AI settings: say when an optional section could not be read
  • AI: give the image provider's save rejections their own reasons
  • AI settings: check the image provider's key, and cover the form with tests
  • AI: apply the SSRF gate to redirects, not just the configured URL
  • AI settings: give the image provider the same status treatment as the main one
  • AI settings: stop writing an image config that was never asked for
  • Assistant: refuse a turn that neither answers nor acts
  • AI: tell a workspace its providers cannot read images, not that it has none
  • AI: remove the backtracking blowup when stripping a code fence
  • AI search: cap the result list before growing it, not after
  • Backend: say what was unreachable when the DB connect fails (#18)
  • Report a failed sign-in database query as 500, not 401 (#20)

Platform notes

  • Each archive contains just the self-contained hycanvas binary with the frontend embedded; see the README for setup (.env, PostgreSQL). The first-run wizard generates the configuration for you, and .env.example in the repository documents every setting.
  • First run: ./hycanvas service start daemonizes the server (pidfile + logfile next to the binary; Linux, macOS, and Windows) and asks whether to set up in the browser or in the terminal. The browser wizard at /installation/step-1 is unlocked by the one-time access secret it prints; the CLI wizard asks the same questions right there. Other verbs: stop, restart, status, log -f. ./hycanvas start runs in the foreground.
  • The macOS binaries are not signed or notarized. If macOS quarantines the download, run xattr -d com.apple.quarantine hycanvas or right-click the binary and choose Open.
  • ffmpeg is only required for server-side video export; everything else works without it.

What's Changed

  • Retry the initial DB connect on boot instead of failing once by @devadattas in #16
  • Say what was unreachable when the DB connect fails by @devadattas in #18
  • Report a failed sign-in database query as 500, not 401 by @devadattas in #20

Full Changelog: v0.3.8...v0.3.9