Skip to content

v0.3.2

Latest

Choose a tag to compare

@github-actions github-actions released this 10 Sep 00:30
d8a6ce3

0.3.2 (2026-09-10)

Features

  • app: Add a "?" keyboard shortcuts overlay (#219) (8e7ccb7)
  • app: Serve the theme-adaptive favicon on web (#208) (eaded5e)
  • deploy: Allow 'build nocache' over the deploy key (#210) (7b8c27b)
  • deploy: Drop capabilities on the tunnel (#254) (1999923)
  • deploy: Let timers run as a dedicated deploy user (#201) (d8d46ca)
  • deploy: Restricted remote deploys and the deploy-user host setup (#203) (9556bcd)
  • edge: Skip bot fight mode for keyed e2e runs and public product reads (#206) (1cb4479)
  • images: Add a 2560px thumbnail tier for the lightbox (#268) (ad9af5d)

Bug Fixes

  • Acceptance-run fixes for the app CSP header and e2e lanes (#202) (279ca0e)
  • Act on the v0.3.0..HEAD codebase review (#247) (edba860)
  • api: Allow the staging edge key header in CORS preflights (#216) (1c70913)
  • app,docs: Never reuse a leftover preview server in E2E (#229) (487017c)
  • app: Clearer user-facing copy for search and support contact (#218) (9def3fb)
  • app: Finish the heading pass and guard it with lint (#225) (6134d39)
  • app: Give the public profile one h1 and refresh three stale E2E specs (#233) (e2e1501)
  • app: Keep photographs out of Smart Invert and gate the rule (#230) (9300c84)
  • app: Label the last unlabelled controls and gate the rule (#226) (b07000f)
  • app: Read the detail back target from the fetched record (#209) (6aa003e)
  • app: Stop a concurrent product save losing an edit (#264) (ef04261)
  • app: Stop the entry-focus ring outlining the page column (#223) (59583f8)
  • app: V0.3 UI critique and QA follow-ups (#221) (341a24f)
  • app: Web layout regressions found after the prod cutover (#200) (39021c2)
  • backend: Correct the background-work paths behind the upload split (#261) (162d2da)
  • backend: Delete products with components without tripping raiseload (#217) (10e5703)
  • backend: Stop the pg_trgm move cleanly when the superuser owns the extension (#215) (0e84db8)
  • backup: Guard the uploads volume against silent data loss (#269) (5e648ea)
  • backup: Rebuild before stamping, and say what the stamp did (#271) (9a8fee1)
  • ci: Use the suppression comment form CodeQL honors (#251) (bb0c003)
  • deploy: Fail clearly when .env exists but is unreadable (#249) (2771aec)
  • deploy: Give hand-run compose the stack's real identity (#238) (6e0ba3a)
  • deploy: Include /snap/bin in the deploy user's PATH (#204) (f4457df)
  • deploy: Make three release-path failures loud (#260) (8e07f02)
  • deploy: Refuse to render systemd timers as root (#199) (0861c52)
  • deploy: Remove the scratch container's anonymous volume (#246) (764d277)
  • edge: Let CORS preflights past bot fight mode on the api hosts (#214) (47400bd)
  • images: Serve real thumbnails in product lists (#222) (aa91535)
  • infra: Gate cloudflare applies on the plan they apply (#257) (e86e064)
  • Point registration failure and accessibility copy at what's actually true (#207) (84440bd)
  • security: Keep addresses out of logs, narrow the edge exemption (#262) (a747df7)
  • watchdog: Parse restic's Z-suffixed timestamps on the system python (3d3fab2)
  • watchdog: Say why the git probe failed (#272) (38367a0)
  • www: Never reuse a leftover preview server in E2E (#227) (c01084b)

Performance Improvements

  • app: Budget the web export's first-load JavaScript (#243) (d47c4df)
  • auth: Stop transactional email from blocking the response (318eb2c)
  • backend: Benchmark uploads across a spread of photo sizes (#241) (ecb4000)
  • backend: Make the k6 baseline measure something, and fix what it found (#237) (c157b78)
  • docker: Allowlist the backend context and cache Metro across builds (#228) (e3f33d8)
  • docker: Shrink build contexts and drop a dead migrations layer (#224) (72a39c2)
  • docker: Shrink the runtime images (#236) (133016f)
  • images: Take the wide thumbnails off the upload response path (#239) (ecb0174)