Skip to content
v0.21.3 2026-09-29
- Fixed: on some Windows 11 laptops the booth screen went black a moment after the camera came on, then started again, over and over, and the admin drawer could never be opened. The screen was crashing just as the first-start Help drawer opened, and because the "welcomed" mark had not been saved yet, every restart was another first start. The mark is now saved before the drawer opens
- If the screen crashes three times inside a minute, OhSnap restarts by itself with hardware graphics turned off. That is the usual cure when one laptop's graphics driver disagrees with the booth. It is remembered for this version only, so the next update tries the graphics card again
- If the screen still keeps crashing, OhSnap stops and shows a plain page with Start the booth again, Export diagnostics and Quit, instead of looping. Your photos and settings are untouched
- The self-test has a new line, The screen: it says whether the screen has crashed and whether hardware graphics are off
- Export diagnostics now includes the screen crashes and, when there is one, the newest crash report Windows saved. Crash reports stay on the laptop unless you send the zip
v0.21.2 2026-09-22
- The Sinfonia CS2, in the driver's own words: Windows lists the printer as "Sinfonia CHC-S6145" and the cut is the Print Size "4x6 in (split)". The profile's message, the self-test's printer line, Printing problems, Help and the guide now say exactly that, where 0.21.1 could only say "the paper size with 2 x 6 in its name"
- The self-test's printer line, for a recognised printer, names the one setting in Windows that OhSnap cannot make for you, and says to print a sample strip after it
- A CS2 that Windows lists by its bare model name (CHC-S6145) is recognised too
- Printing problems: what to do if the split is set and the sheet still comes out uncut, and the one thing worth reporting if it does
v0.21.1 2026-09-22
- The Sinfonia CS2 has a print profile of its own: Output, Printing, Print fit, `Sinfonia CS2, strips cut by the printer`. One press sets 4 x 6 paper, the strip twice side by side, 300 dpi, no margins and no cut guide, because the CS2 cuts the sheet itself when its driver's paper size is the 2 x 6 one. The button's message and the guide say exactly which driver setting that is
- The booth recognises the printer: when Windows lists a printer OhSnap knows by name (a Sinfonia CS2, a DNP or another dye-sub, a Canon SELPHY) a line under the printer list offers its profile, one press, until it is applied. Nothing is changed without that press
- The self-test's printer line now says whether a recognised printer has its profile applied, and what to press if it has not
- Printing problems and Help: the case of two strips on one uncut 4 x 6 sheet (the driver's paper size is not the 2 x 6 one) and its opposite, a single photo in two halves, each with the one setting that fixes it
- The guide's print fit section carries the CS2 profile, the recognition line and the driver's cut setting; the site is this version
v0.21.0 2026-09-20
- Nothing new for a guest in this one. It is the release where we tried to break the booth every way we could think of a venue doing it, measured what happened, fixed what we found and left a test behind. None of it has yet run on a real Windows machine; that is the client's test, and it comes next
- An all-night event, measured: a test now takes hundreds of whole guest trips in a row (single photos, strips, backgrounds, filters, green screen) and counts what the booth keeps between them. Over 500 trips in a row every photo was saved and sent to the printer, memory grew at a rate of about 1 MB per thousand trips, no extra pictures or listeners were held, and the last trip was as quick as the first. The same for the part of the app that saves: two thousand photos across two events, and the two-thousandth saves as fast as the first (it used to take three times as long)
- A guest who pressed the button in the split second while the booth was re-opening its camera was told "Camera is not running" and their press was lost. The press is now held and used the moment the camera is there
- A guest who picked a filter or a strip layout and then had their countdown cancelled handed that pick to the next guest. The pick now goes whenever the booth returns to idle, however it got there
- A full disk, a read-only folder or a USB stick pulled mid-event: a photo that cannot be saved is now said in plain words ("the disk is full"), never as an error code with a file path in it, and a setting that cannot be saved says so in the drawer while you are looking at it rather than quietly being gone at the next start. Nothing of the kind is ever shown over the guest screen
- Your settings keep a copy of the last good save. If the settings file is damaged (a power cut mid-write, a hand edit gone wrong) the booth comes back on that copy rather than on factory settings, and says so in the log
- Upgrading from an old version no longer leaves newer settings inside a group (the pose pictures, the Printing badge, a custom grid) unset; nothing you had chosen was ever lost. A settings file from an early version is now part of the tests
- A very busy folder: when the numbered names for one moment were used up, the next photo went to Pictures\OhSnap instead of your own folder. It now stays in your folder under a name of its own. This mattered most to a filename template with no time in it
- The log is bounded at 2 MB however long the booth stays open; it used to be trimmed only when the app started
- If the booth's start-up is held up by one part that never answers, the rest carries on after eight seconds and the log names the part. The camera, which starts last, can no longer be kept waiting for ever
- Printing: a printer driver that fails in an unexpected way can no longer take the booth down with it, and a print that neither starts nor fails is given up on with a sentence rather than waited for without end
- An event export left half written by quitting the app is cleared at the next start
- The booth updating itself: a download that breaks off is picked up where it stopped, if the site says the file has not changed; the checksum still decides whether the finished file is used
- Sharing to a phone: the small server that hands a guest their photo now limits wrong guesses from one phone. A guest who finds their photo is never caught by the limit. It also drops a connection that stops mid-request within seconds. Eleven ways of asking it for a file outside the photo folder are tested and refused
- Every message the booth's own page can send to the rest of the app is now tested with hostile values (enormous strings, odd paths, wrong types): five weaknesses found and closed, and ceilings put where there were none. The page is our own code and none of these could be reached from the guest screen
- The self-test's free space line names the drive it measured, and warns if two different drives report exactly the same free space, which is the sign of a mapped drive being misread
- The guide and the in-app Help have been read end to end against the app: nine places where they named a setting by an old label or an old count are corrected, the self-test now sends you to Diagnostics, Venue for the daily limit (it said Output), each of this release's changes has its sentence, and a test now fails if the guide names a label the app does not show
- This site: a title word in the light theme that was blue on blue, a phone-width title that touched its picture, and labels on the countdown lab that were hard to read are fixed; every link, anchor and security header on the site is now checked by a test
v0.20.0 2026-09-20
- A self-test for the booth: Diagnostics, Run the self-test. Sixteen checks in a few seconds, each one marked Good, Look at this or Wrong with one plain sentence and what to do about it: the photo folder takes a write and has room, today's folder and the newest photo in it, the printers Windows lists and what it says about yours (offline, out of paper), the cameras, starting with Windows, whether the update password can be kept safely, the clock, this site and the update folder, and the settings file. Copy gives the whole list as text to paste into an email, and the diagnostics zip carries it too. It starts no program and shows no password
- The first number of a booth's first countdown no longer stays blank for a moment and then jumps in size: the typeface you chose for the countdown or the branding is fetched as soon as you choose it, not in the middle of a guest's first photo
- Swipe on the review screen, off until you switch it on (Output, Countdown and review): on a touch screen the guest drags the photo right to keep it or left to take it again. The photo follows the finger and slides back if they let go too soon, a line under it says what to do in words you can change, and every button works as before
- Green screen, against a wall that is not evenly lit: the key now follows the cloth's colour through shadow and brightness rather than treating a shaded green as a different colour, so one lamp on one side no longer uses up the tolerance. On our test wall (a gradient, a shadow, a wrinkle, sensor noise, fine hair, green bounce on the guest) the cloth left behind went from 2.0 % to none, the green rim was cut by a third, and the spill slider now does what it says from end to end. A black jumper and a white shirt are safe however far the key is turned. Still off until you switch it on, and the screen and the print still match exactly. Look, Green screen has a new fold, Hard to key?, with three plain answers
- The booth updating itself has now been run from our build machine against this site, as a booth on an old version would: the password gate, the 86 MB download, the checksum on arrival and again before the run, and seven ways of being refused (a wrong password, a changed checksum, a file that does not exist among them). What only a Windows machine can show, the installer running and the booth coming back by itself, is pinned against the installer's own source so an upgrade of our build tools cannot quietly remove it
- The installer behind the password may be kept by your own browser but no longer by any shared cache on the way
- The venue card, the one sheet to print and tape inside the booth, now covers events, exporting an event, what the booth does at night when it updates itself, and Printing problems; still one sheet of A4 or of Letter
- This site: the drifting camera and confetti pictures keep to the margins on every inner page and leave small screens alone; they sat on a title or a long heading before. Six pictures no page used are gone
- The drawer: a picture on Branding's empty media list, and the confetti cannon fires when you finish the quick start in Help
- The guide and the in-app Help cover the self-test, the green screen's new answers and the swipe, with every panel picture taken again, the self-test's among them with its sixteen lines showing
v0.19.0 2026-09-20
- Events: a list of named jobs (a wedding, a fair, a Saturday night), each with its own photo folder, an optional branding preset and its own count of photos and prints. Switching is one press and the very next photo lands in the new folder; the event in use shows in the drawer header. Removing an event never removes a photo, and a booth set up before 0.19 keeps its event name
- Three more sets of pose tracker pictures: Film, Sparks and Pops, each with a picture for a photo still to come, a photo taken and the Printing badge, with thumbnails at the Output toggle
- The Printing badge's word is yours: the badges are blank pictures lettered by the booth, so the word and its typeface are settings and a venue can say it in its own language
- Two new pose tracker moves: a line that draws itself from one photo to the next, and a handoff where the photo just taken passes the light to the one to come. Both in the per-moment lists on Look, with previews
- Portrait screens checked end to end at 1080 x 1920: strip layouts, the review screen, the waiting prompt, the pose tracker and the guest picks, with nothing clipped, nothing overlapping and every button at least 48 px. Found and fixed on the way: the pose row no longer sits on the review buttons in portrait
- The guest filter and layout pictures also keep clear of overlays, not only of the logo and text lines
- The drawer: every panel's banner is now two or three separate cut-outs on its title card, each bobbing or swaying at its own pace and still under Motion off; a lettered burst answers a save and a print; a character welcomes you in Help; Diagnostics shows a shield when all is well. The drawer no longer scrolls sideways
- Export an event: one zip of that event's photos, saved where you pick in the ordinary Windows save window, with a progress line and then Show in folder or Open with Windows. A long night is written one photo at a time, and a half-written zip never carries the name you chose. Emailing photos from the booth is not coming; this replaces it
- Gallery: an Open button on every photo hands it to whatever Windows opens a picture with
- Every word a guest reads is yours to change: the review buttons, "1 of 3", the pose prompt, the line under the QR code, the Printing word and what the screen says when the camera or the printer lets you down. Look, Words on the guest screen, a row for each; leave a row empty for the booth's own English. A venue in Spain types Spanish. The pose prompt, the photo limit message and the Printing badge's word you may already have set keep working and win
- The drawer's ten tabs show every label in full at 1366 x 768, large text included
- The booth can update itself, off until you switch it on: Diagnostics, Update this booth by itself. Type the download password once (it is kept encrypted by Windows and never shown again), and choose when: as you quit OhSnap, or in a quiet window of hours you set, when no photo has been taken for a quarter of an hour; after a quiet-window update the booth starts again by itself. The installer comes from this site only, is checked against the published checksum when it arrives and again just before it runs, is never an older version, and anything that goes wrong is a line in Diagnostics while the booth keeps running
- Green screen, off until you switch it on: Look, Green screen. Pick the cloth's colour by pressing on the live camera picture, then set how much of it goes, how soft the edge is and how hard the green bounce is pulled off the guest, with a live preview. Your ordinary background shows through, on the screen and in the photo alike, cut by the same rule so the print matches what the guest saw. Works for a blue cloth too. Even lighting on the cloth matters more than any slider, and the panel says so
- This site: a cut-out beside every one of the guide's sections, a layered title card at the top of each page in place of the photo banner, and a lettered burst on the download button once it unlocks
- The guide and the in-app Help cover all of it: new sections for Words on the guest screen, Green screen, Events and Updating itself, four new how-tos in Help, and every panel picture taken again with the ten-tab drawer
v0.18.0 2026-09-19
- The row of little pictures that counts the photos comes alive, and every part of it is yours to set: how the row arrives and leaves, how a photo still to come looks, the one being taken now, the moment it is taken (a bounce, a flash, rings of light, a stamp, a sticker slapped on, speed lines), how taken ones idle, and how much it all moves: Subtle, Lively, or None for states with no movement. Look, Pose tracker motion, with a Preview that plays a set on the stage
- After the set the row can stay lit until the booth is ready, go at once, or stay greyed on the waiting screen as a hint to the next guest. An optional sound as each photo is taken; silent until you pick one
- A large Printing picture: as the sheet goes to the printer a picture fills the middle of the screen so the queue can see the print is coming. Its own switch, picture, size, place, entrance, exit and seconds, with a preview. Every mode has it, a single photo included, and the next guest's countdown takes it away at once
- Your own pictures: the client's artwork for a photo still to come, a photo taken, the printing badge, the large Printing picture and each number of the countdown, picked from the branding files with Replace and Back to bundled. A file deleted later quietly goes back to the bundled picture
- Live miniatures in the drawer: the row as guests will see it, with every state at once, and the countdown played from your own settings, both redrawn as you change anything, each with Play it again
- Countdown numbers fit every screen: checked at 1366 x 768, 1920 x 1080, a portrait 1080 x 1920 and 4K. A 4K kiosk shows the numbers as large as a 1080p one, nothing leaves a portrait screen at the largest size, and the pop entrance no longer jumps before it leaves
- The guest filter and layout pictures keep clear of the client's logo, overlays and text lines, wherever those are put and whatever their size; the branding never moves, the buttons do
- The next guest always gets a clean booth: a slow printer's Printing badge no longer lands on the next guest's row, and a press straight after a print, during review, during the cooldown or in the middle of an exit always ends on exactly the waiting screen you configured
- The admin drawer is a game menu: a cut-out banner on a title card for every panel, sticker tabs, an even paper ground, pictures for empty lists and messages, and cards, rows, toasts and windows that arrive in varied moves with no two neighbours alike. Diagnostics, Admin drawer, Motion in this drawer: None, Subtle or Lively. None of it reaches the guest's screen. The card tilt is gone
- Single photo mode offers the large Printing picture too
- The guide and the in-app Help cover all of the above, and every picture in the guide was taken again with the new drawer
- This site: cut-out art beside every section, an even dotted ground, sections that arrive in varied ways as you scroll (stilled by your system's reduce-motion setting), and text that no longer jumps when the fonts arrive. The pointer tilt is gone
- Browser demo: open any screen from the address, for example /try/booth/?open=look&theme=dark or ?state=review
v0.17.0 2026-09-19
- Printing problems: a new window on Output, Printing. Pick what you see on the paper (nothing comes out; tiny, in a corner; white bands; an edge cut off; off-centre; sideways; too many or too few prints; colours; a printer that vanishes; what only Windows can change). Each one says why, has the settings that fix it right there, and the top line is what Windows says about the printer at that moment: ready, offline, out of paper, door open
- A 4 x 6 print is filled: Photo shape "Same as the paper" saves the photo in the paper's shape, so there are no white bands and the frame, logo and text stay whole. The Classic booth: 4 x 6 single button now sets it. The idle screen shades the little the photo will not hold. Fixed shapes too: 3 : 2, 4 : 3, 5 : 4 and square
- Custom paper size: any sheet from 25 to 500 mm, typed in millimetres, for media that is not in the list
- Save what OhSnap sends as a PDF: the exact page, on the Desktop, to tell a wrong setting from a driver that changes the page
- Buttons that open the driver's Printing preferences, Printer properties, the print queue and Windows printer settings, and Print through the Windows dialog to try any driver option for one print
- New print settings: colour or black and white, the resolution asked of the driver, how long to wait for a slow driver (20 to 600 seconds), and sending a refused job again up to three times (never after a timeout, that job may still come out)
- The print fit reaches further: scale 50 to 150 %, move up to 30 mm either way
- The printer line on the Output panel says what Windows reports (paused, offline, out of paper) instead of only counting printers; the page drawing shows a single photo in its real shape, so white bands show before paper is spent
- A camera that dies in the middle of a strip: finish with the last photo repeated (as before), or drop the set and print nothing. Your choice, under Printing problems
- Copy print settings for support: every print setting, the printer's status and the last print lines of the log, on the clipboard
v0.16.1 2026-09-19
- A venue card on the site (ohsnap.gamingworld.uk/venue): one printed sheet for the booth with the start-up order, the keys, and what to do when the camera, the printer or the button stops; the guide and the in-app Help point to it
- With printing on Automatic, a photo the guest retook is no longer sent to the printer (it had just been deleted, so the job failed with a red message over the next countdown)
- The Classic booth: 2 x 6 strip of 3 button now also resets anything left over that changes the photo count or the strips across the page (one photo in every cell, two different strips, a print profile's one-across)
- A new booth starts on 4 x 6 paper. Paper "Printer default" is renamed "Not set": with no paper chosen Windows is asked for A4, which is what made a strip come out small in a corner. A booth already set up keeps what it had
- A capture card that is plugged in but sends no picture yet (the DSLR is asleep) no longer holds up the start of the booth or a later change of camera; the booth carries on and keeps retrying by itself
- A camera change made in the middle of a photo is applied however that photo ends, and a cancelled photo that fails late can no longer stop the next one
- The guest's layout pick can no longer change in the middle of a set of photos
- Waking the laptop from sleep is no longer taken for a frozen screen (the booth used to reload itself once after every wake)
- Copy diagnostics works in the installed app (the clipboard permission was refused)
- A photo or a settings change is no longer lost when an antivirus scan or OneDrive holds the new file for a moment: the save waits and tries again
- A settings file edited by hand and saved with a byte-order mark (Notepad, PowerShell) is read instead of being set aside as corrupt; an event named after a word Windows reserves (con, nul, com1) can be saved
v0.16.0 2026-09-19
- One photo in every cell: Output, Photo mode, Photos on the strip. One countdown, one photo, and the whole strip or sheet is filled with it; the previews and the sample print show it
- Let the guest choose the layout (off by default, for a booth whose guests can see and touch the screen): the layouts you tick appear as small samples along the bottom of the idle screen, a tap picks one for that visit, and the photo count, the saved sheet and the printed page follow; the next guest starts from your layout again. Next strip layout and Previous strip layout can be bound to buttons
- The sample guests in the layout pictures, the page preview and the sample print are now the same drawings, with their numbers kept clear of the edges
- The site's browser-tab icon is the camera on the burst, like the app's
v0.15.0 2026-09-19
- Your branding on the screen and on the photo: any number of logos, stickers and badges, dragged, resized by the corners and turned by a knob right on the stage; each one on the screen, the photo or both, and on the guest screens you choose, so a corner logo can stay up through the countdown and the review; opacity, multiply and screen blends, a white or black plate behind a logo
- A live picture of what comes out on Branding and Photo mode, made by the same code that makes the file; with a strip it is the printed page, copies side by side with the cut lines
- Strips: a footer logo and a line of text in the bare paper of the classic layouts (or of any layout, top or bottom), a frame of its own for strips, branding once over the strip or on every photo
- Any grid on any paper: a custom layout of 1 to 4 columns and 1 to 8 rows at any sheet size, printed 1 to 4 across; new built-in layouts (2 pose strip, six and eight poses on a 4 x 6, one pose over a footer); the "1 of 8" under the countdown, the little counting pictures and the previews follow; every layout is drawn with sample guests
- A brand colour, accent and font for the countdown, the wait prompt and the Keep button
- Media manager: every branding file with its size, what uses it, rename, replace (every place that used the old file shows the new one) and delete; SVG (checked for scripts and outside links), AVIF and BMP
- Print fit: scale, move in millimetres, gap between strips, rotate, a hairline cut guide, strips across the page, one-click profiles for dye-sub 4 x 6 two-up, dye-sub 2 x 6 media, Canon SELPHY and inkjet or laser; a test page with strip boxes, cut lines and rulers; "Print a sample strip" that saves nothing; A6, 3.5 x 5 and 8 x 10 paper; a Printing problems guide that separates what OhSnap fixes from what only Windows or the driver can
- The camera looks after itself: one that stops is tried again every 5 seconds, then less often; a capture card frozen on one picture is restarted after 5 seconds; plugging a camera in or out redraws the Cameras panel; a printer that was off is looked for again before the next print
- Diagnostics: a Camera line (device, size, last error, retries) and Export diagnostics, one zip on the Desktop with the settings, the log and the camera and printer facts, no photos and no PIN
- A new icon: a comic camera on the yellow burst, in the installer and on the site too
v0.14.0 2026-09-19
- A row of little pictures can count the photos of a set off on screen (cameras, gold stars, candy hearts, flash bulbs or plain numbers; off until ticked); the two strips on a 4 x 6 can carry the same photos or different ones; every dropdown, tick, slider, number box and colour well in the drawer and on the site is drawn in the comic style
v0.13.0 2026-09-19
- Classic photo booth in one click: "4 x 6 single" and "2 x 6 strip of 3" buttons on Output; a countdown before every photo with "1 of 3" under the numbers; one press can run the whole set or every photo can wait for its own press (any bound button, with a timeout so a guest who walks off never leaves the booth stuck); 2 x 6 paper; the update check gives up in 6 s with no internet
v0.12.0 2026-09-19
- Classic photo booth strips (3 or 4 landscape poses over a paper footer for a logo or text line, two-up on a 4 x 6 like every 2 x 6 strip); the camera list no longer waits on a disabled or busy default camera, the Device picker is always on the panel and stays pickable when the saved camera is gone, a camera that will not start says which one and why; DSLR and capture card how-to in Help and the guide
v0.11.0 2026-09-18
- Review QR card prints the address, not the token; guide pictures retaken with the Venue and Share to phone fieldsets
- Browser demo: polite answers for photo:count (its own photos), app:autostart, app:heartbeat and app:watchdog
- smoke-venue: the lockout half of the PIN run in its own function (functions under 50 lines)
- Venue safety, words: a Help how-to for the PIN and venue limits, and the guide's Locking the admin panel and Venue settings sections with their contents chips
- Venue safety, renderer half: admin PIN pad (big inked keypad, mouse, touch and digit keys, Escape cancels, three wrong tries lock it for 30 s with a countdown) in front of the hub, Quit and windowed; the hub closes itself after ui.admin_idle_min and locks again; the daily cap swaps the idle prompt for capture.cap_message and ignores the trigger; heartbeat every 5 s from boot; Diagnostics Venue fieldset (PIN typed twice, return to idle, cap and message, auto-start, watchdog line); smoke-venue
- Venue safety, main half: today's photo count against capture.daily_cap (photo:count, and on every photo:save result), app:autostart around the login item settings, app:heartbeat with a 30 s watchdog that reloads a hung renderer (never with devtools or --dev), app:watchdog for Diagnostics; defaults for daily_cap, cap_message, admin_idle_min; main-venue tests
- Home page: the drawer copy mentions the PIN
- Browser demo: share:status says share to phone needs the installed app, share:token and share:restart refuse politely
- Share to phone docs: a Help how-to that opens Output, a Share to phone (QR) section in the operator guide with its contents chip and the Mobile Hotspot recipe, and the QR in the home page's review step
- Share to phone, renderer side: a vendored single-file QR encoder (byte mode, level M, versions 1-10, checked module for module against qrcode-generator), the review QR card beside the photo when share.enabled (unbranded, gone on every way out of review, still under reduced motion, thicker with high contrast, bigger with big buttons), the Output panel's Share to phone fieldset with status, Test QR and a Mobile Hotspot fold-out; smoke-share scenario
- Share to phone, main side: a tiny HTTP server off by default (share.enabled), GET /p/<token> page and /p/<token>/photo only, 16-byte tokens scoped to the photo folder and expiring after share.ttl_min, LAN IPv4 pick with hotspot first and a host override, share:status/token/restart channels, stop on disable and quit; main tests
- Changelog page keeps only what changed for an operator (handoff, docs, CI and hygiene commits filtered out at build time); the gutter cut-outs start outside the content column so they never show through the guide or changelog prose
- Countdown lab on phones: no camera cut-out behind the headline
- Site on phones: the SmartScreen box no longer clips its prose (grid columns may shrink past the code block), and the burst and gamepad cut-outs hide below 900px instead of showing through the text; orchestration notes for the worktree session
- Ship checks once: deploy-nocheck for ship.sh; installer drops the seven serialport prebuilds that cannot run on win32-x64 and packs at maximum compression
v0.10.1 2026-09-18
- Site without the generated-UI tells: glass.css becomes surface.css (solid panels, ink outlines, hard shadows), no gradient or shimmer text, no drifting blobs or motes, no labels above headlines, no stat counters, no magnetic buttons, ripple or scroll-in fades, tilt at a fifth, flat nav and download strip, changelog rules instead of side bars, scrollbars black or white with blue and yellow; guide and home copy say sound is opt-in; guide pictures show the new drawer; smoke-try names any HTTP error
- Drawer without the generated-UI tells: solid inked comic panels instead of glass, no blobs, gradients, glows, pulses or springs, the tilt at a fifth of its old lean, a palette icon for Look instead of sparkles, scrollbars in black or white with a blue thumb and yellow hover (never grey); stage review and chips ease instead of bounce; smoke asserts all of it plus a silent default booth
- Sound is opt-in: tick and shutter off by default; Look > Sounds has the switches and built-in varieties (tick: beep, soft blip, woodblock, arcade, chime, drum; shutter: camera click, soft click, film camera, pop, ta-da), synthesised so no audio ships; own files still win
v0.10.0 2026-09-18
- Site polish: light theme fixes (hero kbd, 404 burst no longer stretched, centred lede), scroll progress line under the nav, nav firms up once scrolled, hover lift on steps, stats, TOC, changelog entries and guide pictures; all still under reduced motion
- Mood loop: idle.ambient plays one of the bundled countdown clips screened over the idle stage (Look > Attract mode, with a strength slider), paused outside idle, none on a still stage; smoke-polish covers play, pause, still and None; one guide bullet
- Countdown: under a sticker the text numeral is visibility hidden with no animation (the entrance keyframes animated its opacity back up); smoke asserts it
- Countdown lab at /fx/countdown (unlisted, noindex): the app's own countdown CSS, fonts, sticker sets and clips through the browser demo tree on a mock stage with live controls and a gallery; countdown-lists.js holds the option lists so the lab and the app share them; four backdrop clips bundled (party burst, paper confetti, gold sparkles, light swirl) drawn on black and screen-blended over the camera
- Countdown stickers: six bundled sets (comic, neon, balloon, candy, doodle, caramel), 30 numerals at 512 px with alpha, 561 KB; tools/count/publish.py keeps the chosen drafts in source/ and writes countdown-sets.js and CREDITS.md; clip.py generates backdrop clips on black through the videos endpoint
- Site: glass, motion and a perfect Lighthouse pass
- Admin motion: a softer press ripple
- Hardening from the 2026-09-18 audit: URL import refuses private hosts and streams with a byte cap, preset import has file, asset and count ceilings, the photo folder check resolves symlinks, media permission is video only, the renderer CSP gains base-uri and form-action and drops file:, workflow actions pinned by SHA, Dependabot, editorconfig, gitattributes
- Countdown: motion in and out (11 entrances, 7 exits), size, position, tick length, effects, sticker sets and backdrop clips as additive countdown.* keys; countdown.css and countdown-motion.css split out of stage.css; Look gains Countdown motion and pictures fieldsets and a Preview; tools/count generates numeral stickers on green and cuts them out; smoke-countdown.mjs
- Admin glass and motion: translucent drawer, cards, modal and toasts over the live picture with the site's halftone and confetti art; drifting head, breathing burst, flowing active tab, wandering blobs, pulsing primary buttons; gliding tab indicator, card tilt and glare, press ripple, focus bloom, sliding switches, staggered card entrance, springy toasts; richer review settle, button spring and chip pop on the stage; smoke-polish asserts every hook and reduced motion
v0.9.2 2026-09-16
- Site: dark by default, comic art generated through the capped tools/art (banners, splash cut-outs, textures, card pictures, a real OG image), hero poster with ken-burns and flash, page banners, parallax splash pieces, halftone texture, ticker, floating cards; reduced motion stills all of it
v0.9.1 2026-09-16
- Browser demo: /try page and /try/booth/ serving the renderer on a browser bridge (IndexedDB photos and assets, localStorage config, real file picker, downloads, the app's preset format), own CSP and camera permission, corner note for touch, try-sync before every build, try_test.go and smoke-try in check, /try in the site checker
v0.9.0 2026-09-16
- Spectacular: drawer with bundled Nunito/Bangers, burst head, icon tabs, cards, dark theme and larger text; Gallery optional (ui.gallery); prompt font/size/effect, logo effect, countdown colour/font; text outline, glow and entrance on stage and photo; five more fonts; motion switch; polish smoke, guide and landing See it
v0.8.0 2026-09-16
- Gallery, any key, readability: Today/All days with totals, select and delete a batch, Show in folder and Print per card; Any key (kbd:*) trigger and idle-only bindings; high contrast and big buttons on Look; guide Gallery section and pictures
v0.7.0 2026-09-16
- Help and first run: Help panel with a live quick start and how-tos (Ctrl+Shift+H), first launch opens it once, chords on every panel head and tab, opaque wider drawer, guide with pictures of every panel, shots tools
v0.6.0 2026-09-16
- Live look: filters on stage and photo, guest filter strip, countdown styles with a get-ready line, sound files and voice numerals, attract mode with a photo wall, Look panel (Ctrl+Shift+L)
v0.5.0 2026-09-16
- Photo modes: a cancel mid-encode leaves a new trip alone; two-up print waits for both copies to decode
- Photo modes: burst, strip (2x2 / 1x3 / 1x4, two-up print), animated GIF, filmstrip review with per-frame reshoot
v0.4.2 2026-09-16
- Print: 60 s driver timeout, real test pattern, Postcard paper, toast docs (UKKO lessons)
v0.4.1 2026-09-16
- Photos: atomic writes (.part then rename) for the photo, the raw frame and the copy
v0.4.0 2026-09-16
- App 0.4: photo folder control, formats, printing, button behaviour, even admin tabs
v0.3.2 2026-09-16
- App: Quit OhSnap button in the admin hub; site: how to open the admin panel
v0.3.1 2026-09-16
- App: show the pointer while the admin layer is open; site: full unsigned-installer warning steps
v0.3.0 2026-09-16
- App 0.3: inputs (learn mode, gamepad, MIDI, serial, HID burst, global hotkeys)
v0.2.0 2026-09-16
- App 0.2: backgrounds, branding, gallery, presets
v0.1.0 2026-09-15
- App 0.1: kiosk shell, capture flow, admin hub, tests
- Site, release pipeline and installer scaffolding for OhSnap!