Changelog

Every release, straight from GitHub. The app updates itself from the same feed.

0.1.12

Opening film

Aug 4, 2026

First launch now opens with a film. It rises from below the Dock, plays over your desktop rather than covering it, then fades to reveal a welcome screen. "Get started" goes on to the agent picker.

The film composites instead of covering. Its source has no alpha channel, so transparency is derived at playback from luminance: black falls away, the light stays, and the midtones read as an additive glow over whatever is on screen. Nothing is painted behind the player, since a backdrop would fill in exactly the pixels meant to drop out.

Dismissal fades in place. Sliding the panel back down drew attention to it as an object, when at that point the film should simply stop being there.

Welcome is a real onboarding screen, not an overlay: what the app records, what it builds, and what your agents can read, then Get started.

Upgrade note: adding the welcome step shifts every later step's stored position, so this release migrates saved onboarding progress. If you were part way through setup you will resume exactly where you were, not a step further on.

Also removed two pieces of dead Dayflow UI: a welcome view that still drew a screenshot of the old card timeline, and the drawn logo mark that only existed for the coded animation the film replaces.

0.1.11

Cinematic first run

Aug 3, 2026

First run now opens with a proper title sequence instead of dropping you straight onto a form.

The screen goes to near-black and holds a beat. The mark rises from below the fold, its blur and scale resolving as it travels. It lands with a haptic tap and a low note, and the intro card settles in behind it.

Details

  • The landing cue fires slightly before the motion curve settles, so the tap lines up with the mark visually arriving rather than with the animation's last frame
  • The haptic is a no-op on Macs without a Force Touch trackpad, so the sound carries it there. Volume is kept low since it plays unprompted on launch
  • Reduce Motion jumps straight to the end state rather than playing a faster version of the same movement
  • Click or press any key to skip
  • It only plays on a genuinely fresh start. Relaunching part way through setup takes you back to where you were rather than replaying the opening
  • Reset Onboarding replays it, so a reset gives a complete first run
0.1.10

Two-finger scrubbing and a way out of settings

Aug 3, 2026

Scrubbing

  • A two-finger swipe over the timeline now scrubs it, not just click-and-drag. Deltas are converted to time using the track's own scale, so a swipe covers the same ground as dragging the same distance
  • Session markers still take clicks. The scroll catcher has to sit above the track to see swipe events at all, so it passes clicks straight through rather than swallowing them

Settings

  • Added a Timeline button at the top of the sidebar, also bound to Escape. Removing the floating gear in 0.1.3 left settings with no way back

Calendar

  • Replaced upstream's stock graphical date picker, which matched neither the palette nor the scale of the rest of the UI, with a compact month grid: month stepping that stops at the current month, Monday-first columns, today outlined, future days disabled

Self-hosted servers

  • A deployed instance no longer serves this project's marketing page. / returns a short status page naming the endpoints and the token they need; /landing and /changelog are not registered at all. /mcp, /sync, /health, /appcast.xml and /download are unchanged
0.1.9

Recording stability

Aug 3, 2026

Fixes recording stopping shortly after you grant permission.

The cause was a consecutive-failure cap in this fork that upstream Dayflow does not have. After three failed captures it treated the situation as a permission problem: recording switched off and the "allow screen recording" notice appeared, even though the grant was fine.

Upstream's contract is that a failed capture while the grant is intact is transient. Refresh the display if it was a ScreenCaptureKit stream error, otherwise log it and carry on; only stop when the permission check actually reports false. The cap here fired on ordinary events too, because a display reconfigure, display sleep or the lock screen each produce a run of failures. So recording stopped for any of those and then blamed permissions.

That behaviour is restored. The cap originally existed to stop a storm of permission prompts, so that is now handled at its real source: refreshDisplay calls SCShareableContent, which re-presents the system prompt whenever a grant is stale, and it was being called on every failing tick. It is throttled to once a minute, which stops the storm without abandoning recording.

Verified against upstream: the same six places stop recording, for the same reasons, with none extra.

0.1.8

Flat white settings

Aug 3, 2026
  • Settings is plain white edge to edge. The translucent surface introduced in 0.1.4 made dense forms and lists hard to read
  • Removed the stray border at the window corners. It was our own rounded clip on the content panel: macOS already masks the window to its corner radius, so a second rounded shape inside a non-opaque window let the desktop through at the corners
0.1.7

Capture and permission fixes

Aug 3, 2026

Two recording bugs, one of them serious.

The dim was being captured. The scrim added in 0.1.6 covers the whole display, and the capture filter only excluded apps *you* had blocked. So every screenshot taken while Panopticon was frontmost had a 50% black wash baked into it. The scrim panels are now hidden from screen capture entirely. If you ran 0.1.6, captures from that period are affected.

Recording no longer stays dead after a stale permission grant. Capping consecutive capture failures stopped the recorder hammering ScreenCaptureKit when the system's grant had gone stale: but nothing ever re-armed it, so one bad episode killed recording until relaunch, and relaunching into the same stale grant killed it again. The recorder now re-checks when the app comes forward, which is exactly when you have just been to System Settings, and resumes if the grant is healthy and your saved preference was on.

If recording is stuck for you, the system's permission entry itself may be poisoned: CGPreflightScreenCaptureAccess() reports success while every capture fails. This happens when a differently-signed build of the app has run under the same bundle identifier. Reset it and grant once:

```

tccutil reset ScreenCapture com.panopticon.Panopticon

```

Also

  • Taller frame area, so less of the capture is cropped
  • Settings is opaque; dense forms were unreadable through the window's vibrancy
0.1.6

Dim instead of blur

Aug 3, 2026

> ⚠️ Skip this one, go to 0.1.7. The screen dim introduced here was not excluded from screen capture, so any screenshot taken while Panopticon was frontmost had a black wash baked into it. Fixed in 0.1.7.

  • The desktop behind the window is now dimmed with a flat translucent scrim rather than blurred. Blurring fought the window's own vibrancy for the same pixels, and a scrim is cheaper and easier to read against
  • The capture fills the window width and crops a shallow strip off the top and bottom, instead of fitting its aspect ratio. Fitting left it height-limited on a wide window, which is what still put bars down both sides
  • Traffic lights hidden. Cmd+W closes the window; the menu bar item reopens it
  • The activity title moved onto a surface pill. Bare dark text had no dependable contrast now that the backdrop is whatever your wallpaper happens to be
0.1.5

One surface, no side bars

Aug 3, 2026

Fixed the double border around the timeline. Three rounded containers were stacked: a 15pt window inset, a radius-8 panel carrying a white wash, and a radius-12 clip inside that again. Two mismatched radii nested inside each other read as a border. Reduced to one.

Fixed the gap down the sides of the capture. Two causes: the stage was hardcoded to 86% of the window width, and the image layer draws with aspect-fit, so a container whose shape differed from the capture letterboxed it as well. The card is now sized to the capture's own aspect ratio.

New: everything behind the window is blurred while Panopticon is in front, so the timeline reads as the focus.

0.1.4

Window vibrancy

Aug 3, 2026

The surface behind the frame is now your actual desktop showing through the window, not a painted colour.

  • Replaced a hardcoded lavender gradient with a real NSVisualEffectView blending behind the window. The gradient only imitated the colour of one particular wallpaper; it could not track yours, move with the window, or pick up windows underneath
  • The window is now genuinely non-opaque, which is what lets the blend sample anything at all. The titlebar material is cleared too, since it otherwise painted an opaque band across the top
  • The blur stays up when the app loses focus rather than flattening to grey
0.1.3

Frame scrubber

Aug 3, 2026

The timeline is now the captures themselves. The card list is gone; the screenshot fills the window and a track across the bottom scrubs through the day.

New

  • Drag the track, scroll over the frame, or use arrow keys (Shift for ×10). Space plays, -/= zoom, Home/End jump to the ends
  • The track shows a one-hour window, not the whole day. At roughly ten seconds per capture a full day is thousands of frames inside a few hundred pixels, where no single moment is reachable. Zoom runs 15m to 24h, with a fit control to pull back
  • Sessions: runs of captures with no gap over five minutes. On real data this splits a day into a handful of blocks rather than one continuous bar. Each carries a marker showing the app that dominated it, and the chevrons jump between sessions so you skip idle time instead of crawling through it
  • Search the day's activity and jump straight to a moment
  • An empty day offers a jump to your most recent captures instead of looking broken

Removed

  • Day/Week switcher, calendar pill, copy timeline, category filter chips, weekly-hours footer, floating settings button. Chrome is now a search field and gear at the top left with a date pill at the bottom left

Notes on behaviour

  • Position maps to the nearest capture *in time*, by binary search, since scrubbing runs it on every drag delta
  • The scrub window holds still while the playhead moves inside it and only follows when the playhead nears an edge. Recentring on every seek would slide the playhead back under your cursor mid-drag
0.1.2

First notarized build

Jul 30, 2026

The first build macOS will actually open. 0.1.0 was unsigned and 0.1.1 was signed but never notarized, so Gatekeeper rejected both. This one is Developer ID signed, notarized and stapled, and ships as a .dmg.

Signing and distribution

  • Notarized and stapled; the disk image is signed and notarized separately, since a staple on the app does not travel inside its container
  • Sparkle's nested helpers (Autoupdate, Updater.app, the XPC services) are re-signed with our Developer ID and a secure timestamp. They previously shipped with Sparkle's own signature, which codesign --verify --deep accepts but notarization rejects
  • Dropped the com.apple.security.get-task-allow debug entitlement that Xcode was injecting
  • /download now resolves through a stable asset name with no GitHub API call, so it can no longer fall back to the releases page when the unauthenticated rate limit is exhausted
  • Release notes now surface Apple's notarization findings on failure instead of dying with an unexplained stapler error

App

  • Proper app icon

Landing

  • Provider table with real per-client MCP config, GitHub-backed changelog, SF-style icons
0.1.1

Landing page only

Jul 30, 2026

Landing page only. The app is functionally identical to 0.1.0: there is no reason to install this over that.

Landing

  • Real chat wallpapers and full-height conversations in the phone mockups
  • Brand logo throughout
  • Fixed the navigation on narrow screens

> ⚠️ Signed but not notarized. macOS reports it as unverifiable ("cannot be checked for malicious software") and refuses to open it. Start from 0.1.2 or later.

0.1.0

First cut

Jul 30, 2026

First tagged build. Panopticon is a fork of [Dayflow](https://github.com/JerryZLiu/Dayflow), stripped down to one job: record your Mac, turn the day into a structured timeline, and serve it to your agents over MCP.

What's here

  • Periodic screen capture with ScreenCaptureKit, skipping idle stretches and apps you block
  • Local SQLite storage; nothing leaves the machine except what you send to your own LLM
  • LLM analysis into timeline cards (Gemini, Claude Code, Codex, or a local model)
  • MCP server you self-host on Vercel + Neon, with day-snapshot sync from the app
  • Sparkle in-app updates pointed at your own server's /appcast.xml

Removed from upstream Dayflow: monetization, the hosted backend, and the Journal.

> ⚠️ This build is unsigned. macOS will refuse to open it and you cannot auto-update from it. Start from 0.1.2 or later instead.