Changelog
Full release history for KUMA Timer — macOS & Windows professional countdown timer.
- Windows: "Install and Relaunch" now actually completes. The app could stay locked in memory after quitting for an update, so the installer couldn't replace it and nothing came back — it now exits cleanly, installs, and reopens by itself. (Existing Windows users: install this version manually once — every update after that is in-app.)
- Windows: a failed update reopens your current version instead of leaving you with no running app.
- Ulanzi TC001 firmware v3.27 (reflash via the web flasher): HH:MM:SS now uses a tall, clean font when the progress bar is off (no more squashed digits), sharper 2/7/9 digits, and the device's native clock no longer leaks back after a power-cycle.
- Keep the countdown on wireless LED displays during a message. New "Mirror SMS to wireless displays" toggle (Settings → Connections) — turn it off and SMS goes only to the host / web / app while the Ulanzi or S3 BOX keeps showing the timer.
- Progress bar direction — fill left→right or right→left (Settings → Display → Bar Direction).
- Frame-accurate (FR) clock no longer pauses at each :00, and wireless LED time now matches the host in FR mode (was one second behind).
- Overtime blink now works on the LED for HH:MM:SS / FR formats (previously only MM:SS blinked past zero).
- Host display keeps the progress bar visible during a banner SMS.
- Ulanzi TC001 firmware update (reflash via the web flasher): orange warning zone fixed, double-click the left button for battery %, 180° rotation flips the whole display, and the progress bar stays on-screen while a message scrolls.
- Windows: the in-app updater now self-updates correctly instead of opening a browser download. (Install this version manually once — every update after that is in-app.)
- Wireless LED displays show clean time in frame-accurate modes. Ulanzi TC001 and ESP32-S3-BOX drop the frame digits (which don't fit the matrix) and show MM:SS / HH:MM:SS — on both Local and Cloud connections.
- Frame digits no longer glitch under heavy CPU load (e.g. KUMA on the same machine as Watchout or a media server). Count-up also animates frames smoothly now.
- LED Cloud link is always visible in Settings → Connections — copy the setup URL for first-time device pairing without switching modes first.
- Windows: LED connection mode (Local/Cloud) selection now renders correctly; Test and remove-screen buttons fixed.
- New "Hide tooltips" option (Settings → Display) for a cleaner panel.
- macOS: Avenir Next is now the default timer font (existing setups keep their chosen font).
New
- Frame-accurate countdown now works in Round clock style. MM:SS:FR and HH:MM:SS:FR display inside the ring — the font auto-sizes to fit the extra digits. RounDOT (BBC pip / Wharton dot-matrix) remains frame-display-free by design.
Fixed
- Mac DMG is now notarized. v1.14.0 and v1.14.1 shipped unnotarized due to a missing keychain profile on the build machine — first launch required right-click → Open. v1.14.2 passes Apple notarization and opens without any Gatekeeper prompt.
Fixed
- In-app update no longer wedges when /Applications/KUMA Timer.app has read-only permissions. v1.14.0's updater quit the running app, then failed with
rm: Permission denied and never relaunched anything. The relauncher now retries with chmod, and if that still fails, asks for your password once and finishes the swap with admin rights (same UX as a macOS App Store update). If the password prompt is cancelled, the old app re-launches so you're never left with a closed window.
Existing v1.14.0 users: the broken updater is baked into your running copy, so you'll need to install v1.14.1 manually this time — download the DMG below and drag it into Applications. Every future update will use the fixed relauncher.
New
- Frame-accurate countdown for video workflows. New
MM:SS:FR and HH:MM:SS:FR clock formats for Watchout / QLab / vMix integrations — frames count down through each second so the director sees a SMPTE-style timecode racing toward zero. Settings → Display → Clock Format → pick FR variant → choose your frame rate (23.976 / 24 / 25 / 29.97 / 30 / 50 / 60). Visible on the main display, NDI output, and Presenter View. More →
- TCP / UDP show control. Drive KUMA from Watchout V6, QLab, or any ASCII-capable console on port 36702. Commands:
START, STOP, RESET, SET 5:30, SETRUN 10:00, ADD 60, SUB 30, PRESET 2, CUE NEXT and more. Enable in Settings → Connections. Full reference →
- Round-zero timer fonts. Helvetica Neue, SF Pro Display, Avenir Next, Arial Rounded MT Bold, Segoe UI added to Settings → Display → Timer Font alongside the classic monospace list — perfectly oval zeros for the broadcast look. Default unchanged.
Fixed
- Single-seat licences re-activate cleanly after a HWID change. Customers who reinstalled, upgraded macOS, or moved to a fresh user account used to wedge at "already registered" until manual deregister. Single-seat purchases now use the same auto-eviction logic as volume licences. Existing customers migrated server-side, no action needed.
New
- Wireless secondary displays — two options. Pair KUMA with an ESP32-S3-BOX-3 (320×240 IPS LCD, ~$40) via one-click web flasher, or a Ulanzi TC001 pixel-matrix display (8×32 RGB LEDs, ~$50). Both mirror the countdown, zone colours, background colour, overtime blink, progress bar and SMS messages. Full Local (LAN/UDP) and Cloud (relay, different Wi-Fi) modes. Flash your device →
- Redesigned Settings dialog. Sidebar navigation replaces the old tab bar — 8 sections, keyboard shortcuts Ctrl/⌘+1–8, search bar. All toggles are now pill-style Enable buttons so the layout stays stable whether a feature is on or off.
- License key auto-formats as you type. Mixed case, spaces and missing dashes are fixed automatically on paste or entry.
Fixed
- Adjacent progress-bar offset on Windows fullscreen. The offset spinbox had no effect after v1.13.7's Win32 rework — fixed.
- Entering > 59 minutes in MM:SS mode. KUMA now prompts to switch to HH:MM:SS and converts automatically (e.g. 120 min → 2:00:00). Switching back leaves minutes as-is.
Fixed
- Windows: fullscreen on a secondary monitor now actually goes fullscreen. Earlier the window stayed at a smaller-than-screen size on external 4K monitors when paired with a 1× laptop screen — DPI scaling mismatch let the first paint land at the wrong size. Now sized edge-to-edge from the first frame.
- macOS: the system menu bar no longer shows through the timer display. When you push KUMA to a secondary monitor, the timer now paints OVER the menu bar instead of sitting beneath it.
Fixed
- NDI ROUND mode matches the host pixel-by-pixel. Font size, ring colour and the time-of-day arc all follow the host display 1:1. Previously NDI viewers saw a slightly oversized font, a stuck cyan ring (instead of the zone colour you set), and the analogue second-hand drawing on the wrong half of the dial every other minute.
- Time-of-Day ring no longer freezes as a full white circle. Affected the rare case where you'd configured separate Display styles for TIMER and CLOCK modes; the CLOCK view ignored its own style and forced a 100 %-filled ring. Now matches whatever you picked for CLOCK.
New
- Scan a QR to pair your iPhone / iPad. KUMA shows a QR; the Companion app reads it and connects in one tap. Two flavours: Pair this host (just this Mac/Pi) or Pair my fleet (one scan → live list of every host under your licence). Requires KUMA Companion 1.4 on iPad/iPhone.
- Configurable overtime blink. Choose 1 sec on / 1 sec off (default) or ½ sec / ½ sec. Blink edges now land on second boundaries instead of drifting at a half-second offset.
- Settings → Connections cleaner. One master toggle, password at the top, per-client sections (Browser pages / KUMA Companion / Stream Deck), advanced options tucked under their own header.
Bug fixes
- Audio cues reliable on Windows. Last-5-second ticks and time-up gong play on the second, every time.
- Time-of-Day inherits your bg colour on the analogue clock face (RoundDOT stays classic black by design).
- Smaller bugs: Settings dialog crash on open, CDEther status dot in Direct-Attach mode, IP addresses truncated in Connections, OVERTIME box left over after switching to Time-of-Day.
New
- Lower CPU on every platform. Running countdown with NDI active now uses roughly half the CPU of v1.13.0 on the same machine. New default NDI mode: 720p × 15 fps; switching to higher modes shows a CPU-cost notice so you can make an informed call.
- Time Glide — change duration / target time mid-glide. No more Cancel → edit → Apply round-trip. Edit the spinboxes while a glide is running and the engine re-targets automatically.
- macOS: steady blink and tick when KUMA is unfocused. Projector clocks no longer visibly slow down when you switch focus to PowerPoint, OBS or another app.
- Thomas-feedback batch. Progress bar offset works live and accepts 0 px. OVERTIME box auto-fits its text at large timer sizes. Time Cut strategy moved to a single Glide / Jump dropdown.
Bug fixes
- Squashed a handful of small bugs here and there — nothing show-stopping.
New
- Volume licence is now supported.
New
- OVERTIME box overlay — block label next to the digits when the timer crosses 00:00. Custom text, colours, size, position, distance.
- PVM transparent background with auto-refocus — the slideshow shows through, focus returns to PowerPoint / Keynote without an extra click.
- Keyboard-driven time entry — S jumps to the first time field, Tab cycles fields, Enter sets, Space starts.
- Adjacent progress-bar position — bar tucked directly below the digits.
Changed
- Timer size is now a signed % delta from auto-fit (-90…+500 %, 0 = auto).
Fixed
- Count Up → status sync, OVERTIME label across all overtime modes, OSC publishes
OVERTIME as a distinct status.
- Windows secondary-monitor fullscreen no longer leaves a 1-px desktop edge visible.
New
- Time Jump — stealth alternative to Time Glide. Hides countdown cuts as small skips landing on round boundaries; the last 3 minutes always tick at normal speed. Pick GLIDE or JUMP per show.
- MM:SS warning thresholds — Orange and Red colour transitions with second precision (e.g. Orange at 03:30, Red at 01:15).
- Per-zone colour overrides — configurable text + background colours for the orange and red warning zones.
- Overtime text colour override — counterpart to the existing background colour override.
- Manual font-size override for the timer (px), with 0 = auto-fit.
- Count-Up button toggle — second press returns to STANDBY.
Fixed
- Time-of-Day mode no longer pulses red when the underlying timer state is in overtime.
- CDEther LCD blinks in sync with the host display.
- Audio cues use threshold-cross detection so they never get skipped by a JUMP that bypasses the exact threshold value.
- iOS Companion Live Activity at 0:00 turns red immediately.
- v1.11 → v1.12 config migration so existing minute-only thresholds carry forward.
Fixed
- SMS sent via relay (iOS Companion / web admin) now appears in PVM mode.
- Background image presets are back in Settings → Display.
- PVM cursor no longer flashes to a resize-arrow as easily.
Fixed
- Presenter View Mode (PVM) crashed the app on enable — regression from the v1.11.3 timer-layout refactor.
Added
- Resume Direct-Attach prompt at startup if it was active in your previous session.
- Remaining trial days shown in the macOS title bar.
Fixed
- Direct-Attach UI cleanup — clear split between standard broadcast (router) and no-router mode.
- Orphan DHCP child adoption after KUMA restart; Disable now reliably stops it.
- Virtual interfaces (Tailscale, Docker, etc.) hidden from the interface picker.
- "Advanced IP settings" disclosure keeps the section clean for the 99% case.
Fixed
- Direct-Attach Mode on macOS — child PID detection.
Fixed
- Release notes in the in-app updater dialog were stale.
Added
- Direct-Attach DHCP Mode — connect a CDEther directly to your laptop without a router. Settings → Connections → CDEther → Direct-Attach Mode → Enable.
Fixed
- Start / Pause / Reset over Bitfocus Companion and web admin now work on Lite tier.
- CDEther broadcast simplified — matches the Interspace manual; resolves Windows broadcast issues introduced in v1.11.2.
- Removed misleading "Switch to Lite" / "Back to Trial" buttons. Trial now runs linearly from install.
- Windows: no more console flashes; faster startup.
Added
- Capability negotiation with iOS Companion — host now advertises a feature flag list in
/api/status so the iPad app can gate its UI on what this host actually supports, instead of guessing from the version string.
- In-app updater — macOS DMG and Windows EXE self-update with code-signature verification and silent relaunch.
- Audio cue routing — separate toggles for iOS / Web / NDI mirroring; iPad now plays cues from its own clock for tight cadence over cloud relay.
- NDI custom background image, RounDOT vertical breathing room, multi-hour cue display (H:MM:SS).
- Raspberry Pi AppImage back in the release matrix — NDI disabled by default while we wait on Vizrt licensing clarification, otherwise full feature parity with desktop.
Fixed
- Bonjour now advertises the primary-interface IP so the iPad finds the host even when the Mac has multiple network interfaces (VPN, Ethernet + Wi-Fi).
- iPad timer second cadence smoother under variable cloud-relay latency.
- SMS / HIDE TIMER / progress-bar parity across host, NDI, web viewer and iPad.
- Lite-tier gates: SMS API, remote control, audio cue companion mirror, presets/cues clamp.
- Settings dialog: native colour pickers, label alignment, Time-of-Day text colour, multi-hour preset/cue editing.
Added
- Audio Cues — chimes at orange/red/time-up thresholds, opt-in BBC GTS pips and Limitimer-style red-zone beep, custom WAV/MP3 upload, iOS Companion mirror toggle.
- Settings UX overhaul — search bar, ⌘1..⌘N tab shortcuts, tab renames (Overtime → Behaviour, Misc → Privacy), footer "More ···" menu, daily auto-backup.
Fixed
- Display colour out of sync across host / NDI / web / iOS — all four surfaces now match. Reported by Sorin Iliescu.
- Audio cue dedup in overtime modes (no repeat-fire at 00:00, no double time-up gong in Count Up).
Fixed
- Build pipeline binary version mismatch
Added
- Round-clock CLOCK mode "snake eats tail" second-hand
- Threshold-anchored progress-bar gradient
- Round-clock HH:MM:SS digits scale up
Fixed
- Bonjour service registration
- iPad NWBrowser self-heal
Added
- Stages mode LAN auto-promote (Bonjour discovery + /api/status code match)
/api/status exposes remote_control_code
Fixed
- KUMA Live event push latency (~150 ms)
Fixed
- Cloud-relay state push latency (down from ~17 s to ~150 ms)
- More state-changing actions trigger immediate relay push
Added
- Pairing code visible from Pi web admin (Connections tab)
Fixed
- Pi web admin showing old £6 price
Fixed
- Local actions reach iPad / web viewers in ~150 ms
Fixed
- Display progress-bar gradient smoothness
- Pi web admin SMS toggle wording
Fixed
- iPad portrait timer rendering size
- PAUSE remote-action latency over cloud
- Overtime / colour state propagation
Changed
- Default colour thresholds (orange 3 min, red 1 min)
- NDI output disabled by default with NIC binding "Auto"
Fixed
- Web admin port changes apply without restart
Added
- Authoritative colour transitions (Companion + web mirror)
Fixed
- Licence persistence across config wipes
Added
- Latency chip in Companion Controller header
- Universal Links — pairing-code QRs open Companion directly
- Relay v1.2.1 — telemetry, kill buttons, country lookup
Changed
- Companion About sheet drops the licence field
Changed
- Lite startup popup remembers your choice
Fixed
- Tick-boundary drift between Mac and iPad
New
- "Adjust Time" Bitfocus action (±MM:SS)
- Host
add_seconds API command
Fixed
- LITE 1-hour ceiling enforcement
Fixed
- LITE preset write 59:59 hard-cap
New
- Second-precision presets (HH:MM:SS picker)
Fixed
- HH:MM:SS auto-format for durations ≥ 1 hour
Changed
- Price update — £6 → £8 one-off
Fixed
- Companion timer jump on PAUSE
- Overtime state propagation to Companion
New
- Live Activity on iPhone & iPad Lock Screen
- iPad layout overhaul (Pro / Air)
- Screen stays awake in Controller / Monitor modes
Changed
- Web Mirror Password gates Companion API
New
- KUMA Companion for iPhone & iPad — Controller + Monitor
New
- Lite / Trial / Full tier model
- Full licence £6 one-off (one machine, move via deregister portal)
- License Info dialogue (Settings → License Info)
Changed
- Lite limits — 10 presets (59 min each), 10 cues (59:59 each), MM:SS only
- Full-tier features split (SMS, NDI, LTC, KUMA Live, PVM, CDEther, LimiTimer, Time Glide etc.)
- Quick-Entry Keyboard now Pi-kiosk only
Fixed
- Online licence re-verification at startup
- Companion on Lite — OSC SMS now respects the tier
New
- KUMA Live — internet share via QR link
- Ring gradient mode
- Separate auto-start toggles (Cue / Preset)
- Ring & bar background colours
- Timezone picker (50 IANA zones)
Changed
- Display settings redesign
- Blink-on-overtime across all outputs
- Round timer text 20% larger
- Limitimer USB port filter
Fixed
- Pause from Count Up mode
- Web mirror gradient progress bar crash
- PVM mode display / NDI / web freeze
New
- Update popup with changelog
- Redesigned SET row (HH/MM/SS spinboxes)
New
- QR code for /control panel
- SMS templates
- Keyboard shortcuts (Space / R / H)
New
- COUNT UP mode (across all outputs)
- LimiTimer health check + auto-reconnect
New
- CDEther MAC/ARP discovery
- Background image (JPEG/PNG/GIF)
- Smooth ring + progress-bar animations (~30 fps)
- Time of Day IANA timezone
New
- Single-instance guard
- Touch keyboard (numeric pad + QWERTY)
- Bug report dialogue
- Ring style setting (Progress / Solid / Outline)
- Web overlay polish
New
- SMS Fullscreen mode
- Dsan LimiTimer (RS-485, DSAN PCT-2 protocol)
- Multi-monitor support
New
- Microsoft Store availability
- NDI runtime bundled on Windows
New
- Round Clock mode (display, NDI, PVM, Web Mirror)
- Ring direction (Countdown / Fill up)
- Smooth SMS scroll
New
- NDI TX output (1920×1080)
- Web Controller (password-protected)
- Timer font selector
- Status bar with hover tooltips
New
- Companion: Previous Cue, Set Display Mode, Low Time Warning, Cue is active feedback
- Companion module: 113 unit tests, ESLint, MIT LICENSE + README
- Cue dialogue asks for Hours in HH:MM:SS format
Changed
- Companion module ID —
pltech-kumatimer-http → pltech-kumatimer
- Companion module rewritten in TypeScript (ESM, yarn 4, strict mode)
- Companion buttons gain colour states (LIVE / RESUME / SHOW / status)
- Preset buttons show real values (
5M, 10M…)
Fixed
- Companion STOP preset, ±1m IDs, Cue load crash, polling guard
- Web mirror HH:MM:SS font scaling
New
- Companion HTTP module — dynamic Cue presets from cuesheet
/api/status exposes presets[] + cues[]
Changed
- Companion poll cadence (feedbacks 500 ms, cue/preset 10 s)
Fixed
- Web mirror HH:MM:SS overflow
New
- Companion HTTP/JSON API (replaces OSC-only)
- API Reference page
- SMS overhaul (history, presets, auto-scroll)
- Cue inline edit, next-cue button, cue name on display
- Auto-update checker via
latest.json
Changed
- Default OSC port 8000 → 9000
- Connections tab split (HTTP API / OSC)
New
- LTC receiver (SMPTE timecode from audio input)
- Presenter View Mode (PVM)
- Bitfocus Companion OSC module
/kuma/settime OSC command
- Public website + auto-update
Fixed
- LTC decoder calibration + sync scan
- SSL certs on Windows (
certifi)
- NSMicrophoneUsageDescription on macOS
New
- SMS auto-scroll speed
- Early LTC receiver implementation
New
- Windows installer (Inno Setup)
- OSC status feedback
- GitHub Actions CI (macOS + Windows)
- HELP.md user guide
Fixed
- macOS 26 Tahoe crash (Qt permission plugin)
- BCD encoding + cue list bugs
- OSC warp / preset minute conversion
New
- Dynamic UI (fullscreen scaling, sidebar, cogwheel settings)
- Hardware ID + telemetry
New
- Smooth Warp 2.0
- About window + professional icons
- Restore Defaults
- Background telemetry
New
- Countdown timer (MM:SS / HH:MM:SS)
- OSC remote control
- Web Mirror
- Cuesheet with named speakers
- Send Message to Screen (SMS)
- Overtime count-up with colour warnings
- Presenter View Mode