Skip to content

feat(dev): add --demo mode for recording - #27

Merged
Quost merged 1 commit into
mainfrom
feat/demo-mode
Nov 12, 2026
Merged

Quost merged 1 commit into
mainfrom
feat/demo-mode

Conversation

@Quost

@Quost Quost commented Nov 12, 2026

Copy link
Copy Markdown
Owner

What

Menew --demo runs the full, live app (menu bar, popover, command palette, notch, Menew window) with the same fake data as --snapshot, so promo videos never show the maintainer's real clipboard, notes or other data. Documented in CONTRIBUTING.md under "Recording a demo".

How

  • UserDefaults.standard (and @AppStorage) is swapped for its own domain, com.matheusquost.menew.demo: real settings are neither read nor written, even on a crash.
  • Data files go to a temp folder ($TMPDIR/Menew-demo-<pid>) deleted on quit; leftovers from a crash are cleaned on the next demo launch. Paths go through a new AppData.dir.
  • All stores load their demo()/showDemo() data (clipboard, notes, memory, recordings, meetings, agents and usage, profiles, shelf, clocks, automations, screen time, history, battery, Bluetooth, network, processes, displays, uninstaller, startup items).
  • Off in demo: clipboard polling, Automatic Memory, Spotlight indexing (and deleting), widgets, automations, text expander, calendar, agent hook / MCP config writes, Siri phrases, migration, update check.
  • English by default (with matching -AppleLanguages, so app names and durations aren't in the system language); -language pt|de|es|zh still works.
  • Refuses to start while the real Menew is running (shared shortcuts and status items).
  • --snapshot now reuses the shared fake display/network/machine setup; output unchanged (136 images).

Verification

  • ./build.sh passes.
  • Ran a 75 s demo session with the real Menew quit, then quit the demo: all 208 entries in ~/Library/Application Support/Menew kept their modification times, the real prefs plist was untouched, and the temp folder was removed.
  • A temporary self-test (not committed) confirmed every store held only fake data, real-only defaults keys were invisible, and renders of the live popover, palette, all window sections and the notch showed no real data.
  • Not yet checked by eye on screen.

Developer flag only: no new UI strings, screenshots or website changes.

🤖 Generated with Claude Code

`Menew --demo` runs the full app (menu bar, popover, palette, notch,
Menew window) with the same fake data as --snapshot, so promo videos
never show the maintainer's real clipboard, notes or other data.

- UserDefaults.standard is swapped for its own domain
  (com.matheusquost.menew.demo); real settings are neither read nor written
- data files go to a temp folder deleted on quit (stale ones are cleaned
  on the next demo launch)
- clipboard polling, Automatic Memory, Spotlight, widgets, automations,
  text expander, calendar, agent hooks/MCP config writes, Siri phrases,
  migration and the update check stay off
- forces English (and matching -AppleLanguages) unless -language is passed
- refuses to start while the real Menew is running
- --snapshot reuses the shared fake display/network/machine data

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Quost
Quost merged commit 5c94657 into main Nov 12, 2026
10 checks passed
@Quost
Quost deleted the feat/demo-mode branch November 12, 2026 14:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant