Skip to content
fardavidePublic

About

Client for Frigate NVR

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

101 Commits

Folders and files

Repository files navigation

Aura

A native iOS + macOS SwiftUI client for Frigate NVR — a personal, single-user companion app and portfolio piece.

Features

  • Cameras — live grid of all cameras, with a user-defined order; tap a tile for fullscreen live playback (go2rtc HLS via AVFoundation) with Picture-in-Picture on iOS and pinch-to-zoom + pan.
  • Timeline — a synced multi-camera scrub view: preview tiles over a single continuous scrollable timeline with an activity histogram (Liquid Glass), Hour/Day/Week zoom, and a 30-second live-edge auto-refresh. Play/pause and 1–8× run every camera's full-resolution recording forward together. Tap a tile for that camera on its own time axis: a day-overview bar, a scrubbable activity track with a fixed centre playhead, Hour/Day/Week zoom, and a transport that jumps between activity. iPhone landscape gets a dedicated side-by-side layout throughout.
  • Events — detection event list (thumbnail, label, camera, time) with recorded-clip playback, paging back through history as you scroll. On a Frigate+ server, each event can be confirmed or reported as a false positive.
  • Settings — Frigate server connection (password in Keychain), theme, and camera ordering.

Requirements

  • iOS 26 / macOS 26, Xcode 26.
  • A reachable Frigate 0.17 server.

Tech

Swift 6 (strict concurrency), SwiftUI + @Observable, AVFoundation/AVKit, URLSession + Codable. Feature-vertical Clean Architecture in a local AuraKit package. Zero runtime dependencies (the only package dependency, swift-snapshot-testing, is test-only). See .ai/docs for architecture and decisions.

Build & test

cd AuraKit && swift test                                                        # package logic tests
xcodebuild build -scheme Aura -destination 'generic/platform=iOS Simulator' -quiet
xcodebuild test  -scheme Aura -destination 'platform=iOS Simulator,name=iPhone 17 Pro'  # app + screenshot tests

The screenshot tests render every screen across the full device matrix (iPhone/iPad × portrait/landscape × light/dark) in code, so a single simulator run covers all of them.

CI builds both platforms and runs the tests on every push/PR to main.

Changelog

0.8.2 — 2026-10-12

  • Recording playback runs smoothly at 4× and 8×. Fast-forward works in the Timeline grid and camera detail. Audio stays available at 1× and 2×; faster speeds play video only.

0.8.1 — 2026-10-02

  • New server setups start with the streaming port filled in. Live video defaults to HTTP on port 1984. Local and remote ports remain separately editable, and saved settings stay as they are.

0.8.0 — 2026-10-01

  • Live cameras work with Frigate 0.18. Each server address can use a separate live scheme and port on the same host. Previews, events and recordings keep using the existing API connection.
  • A failed live stream shows an error and Retry. Camera and Timeline live views no longer stay on a black screen or load indefinitely when playback fails.

0.7.8 — 2026-09-27

  • The "downloading" pill on Exports takes you to the download. Tapping it scrolls the list to the clip that's downloading. Before, it looked tappable but did nothing.

0.7.7 — 2026-09-27

  • Every tab has the same header. Cameras, Timeline, Events and Exports now share one header: the title, the Settings gear and the spacing sit in exactly the same place on every tab. On an iPhone on its side, Cameras now shows its title too, with its summary chips just below it.

0.7.6 — 2026-09-27

  • The Cameras settings gear is the same size as everywhere else. It was drawn smaller than the gear on Timeline, Events and Exports.

0.7.5 — 2026-09-26

  • Settings from the Timeline tab. The Timeline header now carries the same gear as Cameras, Events and Exports; on an iPhone on its side it sits atop the scrubber. When the server can't be reached, the Timeline now offers Retry and Settings instead of only saying so.
  • Switching tabs fades instead of cutting. The tab you pick fades in rather than snapping onto the screen.

0.7.4 — 2026-09-25

  • No more black square over a gap in a recording. When the playhead on a camera's timeline sits where nothing was recorded — or while the recording is still loading, or the server can't be reached — the video card now goes away with the picture, and a short message sits in its place on the background. Before, a square-cornered black slab covered the card, in light mode too.
  • The Timeline tab's tiles follow the same rule. A camera with nothing to show keeps its outline and says so on the background instead of filling with a dark box.
  • "Can't reach the server" on the recording screen looks like the rest of the app, matching the live camera screen's own message instead of the system's grey one.

0.7.3 — 2026-09-22

  • Buttons on a white card are visible again in light mode. Their outline was white on white, so controls like Cancel and Play in the clip editor, the play and download buttons on each export, and the transport under the timeline showed only their icon and read as decoration rather than something you could press. They now have an edge you can see. Dark mode is unchanged.
  • The line separating events in the same hour is visible in light mode too, for the same reason.

0.7.2 — 2026-09-21

  • A second server address for your home network. Settings › Server now takes two: the remote one you already had (Tailscale, a VPN, a domain name) and an optional local one. At home the app talks straight to your LAN address; away from it, it falls back to the remote one — without you choosing, and without a switch to remember to flip.
  • The choice is made in milliseconds, not seconds. On cellular there is nothing to check, so the remote address is used immediately. On Wi-Fi the local address gets a single short request and loses the moment it doesn't answer, so arriving at a café costs a fraction of a second.
  • Joining or leaving Wi-Fi re-points the app on its own — walk out of the house and the next screen loads over the remote address.
  • The Server row in Settings says which address is in use right now, so the switch is something you can see rather than infer. It only appears once you have configured two.
  • Nothing changes if you don't want it: leave the local host empty and the app behaves exactly as before, with no extra network checks at all.

0.7.1 — 2026-09-21

  • Cut a clip straight from a camera's timeline. The new Clip control turns the scrub track into a range editor: drag the two handles to set where the clip starts and ends, drag the middle to move the whole thing, and press Create Export. No dates, no times, no second timeline — it is the track you were already looking at.
  • The clip opens at thirty seconds before the playhead to a minute after it, and everything outside it fades back so the part you are cutting is the part you see.
  • Play selection previews exactly the clip you have chosen and returns to its start when it finishes, so you can check it before committing the server to the work.
  • A clip may run across a stretch with no recording — the panel says how much is missing rather than stopping you, because the server exports the footage that exists.
  • The panel follows the export from request to ready and offers the finished clip in the Exports tab. If the server refuses the range it says so and asks you to move a handle, rather than offering a retry that could only fail the same way.
  • A new Minute zoom joins Hour, Day and Week — one point per second, which is what makes a ninety-second clip something you can actually grab. It is available for ordinary scrubbing too.

0.7.0 — 2026-09-20

  • A new Exports tab browses the clips kept on the Frigate server. Newest first, grouped by day, with the camera and time on every card. Tap one to play it, or download a copy to the device through the normal iOS share sheet or macOS save panel — the clip stays on the server and Aura keeps no second library.
  • Clips the server is still cutting say so and cannot be played or downloaded until they are ready; the list follows them until they are.
  • Downloads show real progress, can be cancelled, and keep running while you browse elsewhere in the tab. A failed download explains itself and offers a retry.
  • On its side — and on iPad and Mac — the library sits beside the clip instead of pushing it, so picking a clip never hides the list.

0.6.16 — 2026-09-20

  • A detection confirmed as correct now reads that way at a glance. A small blue check appears before its label in the list, hero card and event screen; reports marked wrong keep their muted crossed-out treatment.

0.6.15 — 2026-09-20

  • Timeline detail now plays the live camera at the live edge instead of reporting that no footage exists there; moving back into history restores recorded playback.
  • Timeline detail now keeps up with a scrub by showing the same quick preview media as the main Timeline tab, then settling onto the full-resolution recording when you release it.

0.6.14 — 2026-09-19

  • A detection reported wrong now reads that way at a glance. Colour and a strikethrough alone didn't stand out enough while scanning the list — a small crossed-out icon now sits before the label too, in the list, the hero card and the event screen.

0.6.13 — 2026-09-19

  • A detection you reported as wrong now visibly fades back. Its label was only a shade lighter than a normal one, so the strikethrough was doing all the work; it now uses the palette's furthest-back ink in both light and dark.

0.6.12 — 2026-09-19

  • Fixed the mangled event row on a detection reported wrong. The "NOT A DOG" badge left no width for anything else, so with a longer label the row broke into "Motorc / ycle", "ALE / RT" and "NOT A MOT / ORCY / CLE". The badge is gone: a reported detection now just reads struck through in muted grey, which the event screen still explains in full underneath ("Reported as not a motorcycle"). Long labels stay on one line, shrinking slightly rather than wrapping or truncating.

0.6.11 — 2026-09-19

  • A reported detection now stays reported. The app used to forget as soon as you left the event, then offer to report it again — and that second attempt failed, because Frigate had already taken the first. The screen now asks the server what verdict is on record when it opens, so it also picks up reports you made from Frigate's web UI or another device.
  • A detection you reported as wrong reads that way at a glance — the label is struck through with a "NOT A DOG" badge, in the event list and on the event screen alike.
  • The reporting panel sits on the bottom edge instead of riding directly under the clip in the middle of the screen; the clip now centres in the space above it.

0.6.10 — 2026-09-19

  • Tell Frigate+ whether a detection was right, from the event screen. Open an event and, if your server has Frigate+ enabled, a panel asks "Is this a dog?" — Yes confirms it, No reports it as a false positive. Either answer puts the snapshot in your Frigate+ dataset, and the panel links straight to plus.frigate.video, which is where you can say it was actually a cat: Frigate's API carries a yes/no verdict and no way to name the right object, so neither this app nor Frigate's own web UI can send the correction itself.
  • The panel is hidden entirely unless the server reports Frigate+ as enabled and the event is one it can accept — a finished, tracked object with a snapshot. Events already in your dataset say so instead of asking again.

0.6.9 — 2026-09-19

  • The Events tab now keeps loading as you scroll. It used to stop at the first 100 events with no way to reach anything older; scrolling to the bottom now fetches the next page, and keeps going until the server has no more history. If a page fails, the list you already have stays put and the footer offers a retry.

0.6.8 — 2026-09-18

  • New "Follow Activity" switch in Settings → Cameras. On (the existing behaviour) the camera with the newest alert moves into the large tile; off, the wall and the Timeline grid stay in your saved Camera Order no matter what is happening. Badges are unaffected either way — the switch governs where a camera sits, never what the screen tells you.
  • The Timeline grid now animates when a camera takes the large tile instead of snapping to the new arrangement; both grids travel on the same curve.

0.6.7 — 2026-09-07

  • Fixed Timeline detail's zoomed video rendering in the wrong place — the interactive layer was quietly ignoring its own top-anchored position and centring itself in the much taller growth area instead, so it visibly diverged from the correctly-placed blurred backdrop beneath it during a pinch.
  • Timeline detail's zoomed picture now extends behind the top bar, matching Live — it used to stop growing at the bar's bottom edge no matter how far zoomed.

0.6.6 — 2026-09-07

  • Pinch-to-zoom now anchors exactly where you pinch, on Live and Timeline detail — it used to measure every pinch against the whole screen rather than the smaller video card sitting inside it, so a pinch on Live's card always zoomed in from the middle regardless of where you actually touched, and Timeline detail's zoom would drift and only seem to grow downward.
  • Live's zoomed picture now extends behind the top and bottom bars, all the way to the true screen edges — it used to stop growing at the gap between them, the same "grow past the card" treatment Timeline detail already has.

0.6.5 — 2026-09-07

  • Timeline detail's zoom no longer feels artificially capped — pinching in used to be unable to reach the true top of the screen, and could show a stray band of misplaced content near the top, because centering the resting card above the panel was accidentally shrinking how far the picture could actually grow.

0.6.4 — 2026-09-07

  • Pinch-to-zoom only blurs what's actually growing past the frame now — it used to blur the whole picture, including the part that was already sharp — and the blur's own corners now match the border's rounding instead of reading as a plain square blur behind a rounded rim.
  • Timeline detail's picture can now fill the whole screen when zoomed, the same as Live — it used to stop growing at its own small card no matter how far you zoomed (phone-upright and iPad/Mac layouts; the landscape-phone rail layout is unchanged for now).
  • Timeline detail's video is centred between the top bar and the panel at rest, matching Live's own centred card, instead of sitting flush against the top with barely a gap — and on wide layouts (iPad/Mac landscape) it now shrinks to fit that gap instead of overlapping the panel and hiding part of the picture behind it.
  • Fixed square corners on the landscape-phone camera timeline — the video's blurred backdrop showed a plain square edge peeking past the rounded border.

0.6.3 — 2026-09-07

  • Timeline's sheet actually sits flush behind the tab bar now — the 0.6.1 fix for this regressed before it shipped; it's back.

0.6.2 — 2026-09-07

  • Pinch-to-zoom now genuinely fills the screen on the Live and Timeline-detail players — the picture used to stay boxed inside its frame no matter how far you zoomed; now it grows past the frame as you pinch (briefly blurring, then sharpening back up), while the frame itself just fades away in place, ending with the picture completely filling the screen, edge to edge.

0.6.1 — 2026-09-06

  • Timeline's sheet sits flush behind the tab bar, matching every other panel, instead of floating with a gap above it.
  • Pinch-to-zoom no longer breaks after swiping back from Timeline detail.
  • Pinch-to-zoom now looks identical on the Live and Timeline-detail screens — both start with the same gradient-rimmed frame, glow softly behind it as you zoom in, then let the frame and glow fade away together as the picture fills the screen.
  • Fixed a stray line that could show across the Settings sheet.
  • The three tabs' titles now look and behave the same — left-aligned with a subtitle, and the content scrolls behind a soft glass backing as you scroll, on Cameras and Events too.

0.6.0 — 2026-09-06

  • A new look: Aurora. A blue→violet→pink gradient runs through every screen — under the glass sheets and panels, on the selected segment, on alert badges and the primary action. The tab bar is now a neutral floating system bar with a coloured active icon; sheets (Timeline, Timeline detail, Settings) sit flush to the bottom, rounded only on top.
  • Cameras gets a hero. Whichever camera has the current alert (or the first camera, if none does) is shown large at the top, with a chip row for today's activity, storage and offline count — replacing the old summary card.
  • Events shows its alerts. A "Latest Alert" card leads the list, rows carry an ALERT tag when Frigate flags them as one, and label chips filter the list — all read from Frigate's own alert/detection classification.
  • Live and Timeline detail get a framed video card with the gradient rim and a floating glass control pill, and Timeline's histogram now colours motion by intensity with a gradient playhead.
  • Settings rows show what they lead to — the server host, the camera count, the app icon preview — before you tap in.
  • Bundles the Urbanist typeface (SIL Open Font License) for headings and titles.

0.5.6 — 2026-08-09

  • A new app icon, and six more to pick from. Aura's icon is a lit ring instead of a stock camera glyph, and Settings › Appearance › App Icon offers six alternates — Heavy, Thin, Sweep, Aurora, Signal and Daylight — that change the Home Screen icon as soon as you tap one. iOS shows its own confirmation when the icon changes; that alert comes from the system, not Aura. The row is absent on macOS, which has no swappable icon.
  • The icon has a real dark version. Previously the system guessed one from the light artwork; now there is a proper dark-mode icon, and the small macOS sizes are drawn rather than shrunk, so the ring stays readable at 16 points.

0.5.5 — 2026-08-03

  • A live stream comes back when you do. Returning to Aura with a camera's live view open used to leave a frozen picture that only playing again fixed by going back to Cameras and reopening the stream. The view now picks the stream back up at the live edge — including when it hands back from a Picture-in-Picture window, and when you had paused it, on the next play. Merely switching windows or dismissing a banner still leaves playback untouched.

0.5.4 — 2026-07-31

  • Timelines open on the hour. The Timeline tab's scrubber now starts at Hour zoom, like a camera's own timeline does — the last stretch of footage is readable the moment the screen opens, instead of squeezed into a few points at Day zoom. The pill and pinch still reach Day and Week.
  • Jump from a camera to its recordings. A camera's live stream has a Timeline button in the title bar that opens that camera's timeline at the live edge, so you can rewind what you are watching without going through the Timeline tab and finding the camera again.

0.5.3 — 2026-07-29

  • The camera timeline shows what happened. At Hour zoom, the scrub track fills with a filmstrip of preview thumbnails — one still for every ten minutes of footage — so you can see what an hour holds before scrubbing to it. Completed hours draw their stills from the recorded previews; the in-progress hour uses its freshest preview frame, upgrading once the hour's preview is assembled. Stretches with nothing recorded stay as empty cells.

0.5.2 — 2026-07-29

  • A camera's timeline puts the picture first. On iPhone the footage now sits at the top of the screen, fully visible above the controls, instead of centred and half-hidden behind them — and the same in landscape, beside the side rail.
  • The recording is zoomable. Pinch, drag and double-tap on a camera's timeline work just like the live view — and zoomed footage slides under the glass controls instead of stopping at an invisible edge.
  • Scrubbing hands playback back. If the recording was playing when you grabbed a timeline — the track, the day bar, or the Timeline tab's scrubber — it resumes when you let go.
  • Throw the timeline. Releasing the camera timeline with speed keeps it gliding and eases it to a stop, like a scroll view.
  • Live stays red. The Live chip no longer flicks back to grey seconds after tapping it — the recording parks on the newest footage and reads as live until you deliberately move away. And when playback catches up with the newest footage, it now picks up whatever was recorded in the meantime and keeps going.
  • Every timeline speaks one design. The Timeline tab's scrubber, the camera timeline's track and its 24-hour day bar now share the same look: green activity bars at the data's resolution, red/orange event markers in their own lane, hatched no-footage stretches. The day bar also marks detections now, not just alerts.
  • The timeline panel's clock shows seconds, and the portrait controls sit on a single row, as designed.

0.5.1 — 2026-07-28

  • The Timeline no longer overwhelms the server. Opening the Timeline (or a camera's own timeline) used to ask Frigate for a whole week of activity in one query, and re-ask every half minute — on a modest machine that could freeze Frigate's API for tens of seconds, long enough to show it offline and drop it from Home Assistant. Activity now loads one day at a time, newest first, and each periodic refresh re-reads only the seconds since the last one.
  • While browsing history on a camera's timeline, the periodic refresh now pauses entirely — same as the Timeline tab — and resumes at the live edge.
  • The camera grid on the Timeline tab now appears as soon as the cameras are known, with the activity strip filling in behind it, so an unreachable activity endpoint no longer blanks the screen.

0.5.0 — 2026-07-28

  • One camera, one time axis. Tapping a camera in the Timeline now opens a proper timeline of its own: the footage with a Liquid-Glass panel against it carrying a 24-hour overview of the day, a scrubbable activity track with the playhead fixed at the centre, and a ruler under it.
  • The track shows that camera's activity rather than the whole system's — motion rising from the baseline, alerts and detections in a lane above it, stretches with nothing recorded hatched, a divider at each midnight and a dashed line at the live edge.
  • Drag the track to scrub, or drag the day bar to jump to any time of day. Step a whole day either way with the arrows beside the date, and switch the track between Hour, Day and Week.
  • The transport gained jump to the previous / next activity and a Live chip that goes red once you are parked at the newest footage.
  • Scrubbing into a stretch with no recording says so on the picture instead of leaving the last frame up, and the readout keeps the time you actually asked for.
  • Adapts per device: the panel floats over the footage on a phone held upright, becomes a rail down the side when you turn it, and spreads out beside the picture on iPad and Mac.

0.4.0 — 2026-07-27

  • The Timeline plays. The scrubber card now carries a transport — play/pause, ten seconds either way, and a 1× / 2× / 4× / 8× speed selector — so the whole grid runs forward together instead of only moving when you drag it.
  • Every camera plays its real recording, not the low-resolution scrub preview. Press play and each tile switches to the footage itself, carrying on from one hour into the next; pause, and the tiles go back to the previews that make scrubbing instant.
  • Playback steps over stretches with nothing recorded rather than sitting on a frozen frame, and stops when it catches up with the present. Pressing play while parked at the live edge backs up a minute so there is something to watch.
  • Taking hold of the scrubber hands the playhead back to you — playback pauses instead of fighting the drag.
  • A camera whose hour holds no footage (or that the server can't serve) stays on its preview material rather than going blank, and rejoins full resolution at the next hour that has footage.

0.3.13 — 2026-07-27

  • Tap a camera on the Timeline to watch its recording at full resolution. Until now the timeline could only be scrubbed through low-resolution previews; the new player streams the recorded footage itself, opening at whatever moment the scrubber was parked on.
  • The player has the transport you'd expect from the Frigate web client: play/pause, skip back and forward ten seconds, and a 1× / 2× / 4× / 8× speed selector. Playback rolls straight on from one hour into the next, and stops when it catches up with the present.
  • Stretches with nothing recorded are called out rather than silently skipped past — the clock keeps showing the real time of the frame on screen even where footage is missing.

0.3.12 — 2026-07-27

  • The camera grid asks the server for its configuration once per load instead of three times — the camera list, the group chips and the recording figures now share a single read, so the screen opens with noticeably less work on the server.
  • The chips and the summary card now keep themselves current: they re-read every couple of minutes while the grid is open, so a group or retention change made on the server shows up without reopening the app. A failed re-read quietly leaves what's on screen alone.

0.3.11 — 2026-07-23

  • Timeline first paint no longer downloads an unbounded activity list on busy servers: the review markers behind the day timeline are now capped, so a camera setup with heavy history opens fast.
  • A stalled connection that keeps trickling bytes can no longer hold a screen loading forever — every server transfer now has a 10-minute ceiling on top of the existing 15-second idle timeout, generous enough never to interrupt a legitimate slow download.

0.3.10 — 2026-07-23

  • Every server read now gives up after 15 seconds instead of hanging for up to a minute on an unresponsive server: the camera grid's groups, storage and activity info, today's event tally, camera stills, the events list, and event thumbnails/clips — completing the timeout hardening the timeline got in 0.3.7/0.3.9.

0.3.9 — 2026-07-23

  • Timeline: fixed the screen getting stuck on its full-screen loading spinner — switching tabs could silently swap in a fresh, never-loaded screen that nothing would ever load (on the Mac this could hit on every visit). The Timeline now keeps the same loaded screen alive across tab switches, like Cameras and Events always did, and the camera-list fetch that gates it now times out instead of hanging on an unresponsive server.

0.3.8 — 2026-07-23

  • Live camera: pinch-to-zoom now reaches 10× (up from 4×), so you can push in much further to read faces, plates, or distant detail. Panning, the double-tap toggle, and the controls staying put are all unchanged.

0.3.7 — 2026-07-23

  • Timeline: fixed the camera tiles getting stuck on their loading spinner and never showing footage — the periodic live-edge refresh was cancelling each tile's first load before it could finish. The first load now always runs to completion, and the timeline no longer waits forever on an unresponsive server.

0.3.6 — 2026-07-23

  • Live camera: the LIVE badge and playback controls no longer tuck under the status bar / notch — they now sit within the safe area while the video still fills the screen edge to edge.

0.3.5 — 2026-07-22

  • Live camera: pinch-to-zoom now scales only the video — the play, mute, and Picture-in-Picture controls stay put at their normal size instead of zooming along with the picture.
  • Live camera: fixed the pinch occasionally snapping to a "zoom to fill" you couldn't pan back out of — that stray behavior is gone for good.
  • Live camera: refreshed on-glass controls (play/pause, mute, Picture-in-Picture, a LIVE badge) that fade out on their own and come back with a tap.

0.3.4 — 2026-07-21

  • Timeline: on Mac and iPad the camera tiles now size themselves to the window — a few cameras fill the screen like a video wall instead of huddling in a corner at thumbnail size.
  • Timeline: pinch to zoom the scrubber — trackpad pinch on Mac, two fingers on iPhone/iPad — smoothly between the Week and Hour densities; the playhead keeps its place while you zoom (the Day/Hour/Week pill included, which used to jump the scrub position).
  • Timeline: cameras with nothing to show no longer collapse into a thin bar — the tile keeps its place in the grid with a proper placeholder.

0.3.3 — 2026-07-21

  • Timeline: the screen now catches up the moment you return to it — reopening the app no longer shows a stale "last time" until the next background tick. Camera tiles pick up newly recorded footage as the timeline grows, so scrubbing to the present shows current previews instead of images frozen at the moment the screen was first opened.

0.3.2 — 2026-07-21

  • Navigation: the tab icons now animate — switching tabs plays a little bounce on the selected tab's icon.

0.3.1 — 2026-07-15

  • Cameras: finished the grid redesign. A summary card up top shows what's happening right now (tap it to jump to that camera), today's event count with a breakdown, and recording disk space + how many days are kept. When your Frigate config defines camera groups, filter chips let you narrow the grid to one group. Tiles now refresh every 2 seconds.

0.3.0 — 2026-07-15

  • Cameras: redesigned grid. Richer live tiles with a LIVE marker, an offline treatment, and activity badges (person / vehicle) when Frigate is tracking something; a live·offline count in the header; and an adaptive layout — a full-width list in portrait, a grid in landscape / on iPad / on Mac. Tiles refresh every few seconds while the grid is open.

0.2.5 — 2026-07-14

  • Settings (macOS): the settings forms and the drilled-in camera-reorder sheet now lay out correctly on Mac.

0.2.4 — 2026-07-14

  • Live (iOS): pinch-to-zoom no longer competes with the player's own built-in zoom, so it's easier to trigger and pans correctly.

0.2.3 — 2026-07-13

  • Live: pinch-to-zoom now zooms about the pinch point rather than the center of the frame.

0.2.2 — 2026-07-13

  • Timeline: live-hour camera tiles now show the current footage instead of freezing on the last frame of the previous hour — the in-progress hour has no preview clip yet, so tiles fall back to the nearest preview frame.

0.2.1 — 2026-07-13

  • Live: the camera stream now recovers automatically after an audio-session interruption.

0.2.0 — 2026-07-06

  • Camera ordering: drag-to-reorder editor in Settings; the camera grid and timeline follow the order live.
  • Settings reorganized: server connection moves to its own sub-screen; theme applies on change.
  • Snapshot tests for the Cameras grid, Events list, and Settings screens; test doubles consolidated into a shared target.

0.1.10 — 2026-07-02

  • Pinch-to-zoom + pan (1x–10x) on the live camera view, on both platforms.

0.1.9 — 2026-06-30

  • iPhone-landscape timeline layout: camera tiles on the left, a full-height vertical scrubber on the right (up = back in time).

0.1.8 — 2026-06-29

  • Timeline auto-refreshes at the live edge every 30 seconds and self-recovers from a dropped connection.
  • GitHub Actions CI: iOS + macOS builds and tests.

0.1.7 — 2026-06-29

  • Scrubber polish: white bordered track, blue playhead, hatched no-footage regions.

0.1.6 — 2026-06-28

  • Liquid-Glass histogram scrubber: motion activity bars colored by severity, date/time readout, Hour/Day/Week zoom.

0.1.5 — 2026-06-28

  • Timeline becomes a single continuous scrollable track with a fixed center playhead (~7-day span).

0.1.4 — 2026-06-28

  • Timeline tab: synced all-camera preview-scrub grid with local seeking and a shared scrub clock.

0.1.3 — 2026-06-28

  • Events: detection list + detail with recorded-clip playback. App becomes a tab bar (Cameras | Events).

0.1.2 — 2026-06-28

  • Live camera detail: fullscreen go2rtc HLS playback with Picture-in-Picture on iOS (verified on-device via TestFlight).

0.1.1 — 2026-06-28

  • Settings (server connection + theme) and the live camera grid; first TestFlight build.

0.1.0 — 2026-06-27

  • Project scaffold: AuraKit package, Cameras data foundation, Frigate camera list + authenticated image loading.

About

Client for Frigate NVR

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages