Skip to content

V2 Roadmap

Tim May edited this page Jul 27, 2026 · 8 revisions

V2 Roadmap

Current release: v1.7.0. V2 scope is complete. V1.0.0 shipped the full protocol layer, pages, icon library, behavior modes (tap, toggle, momentary, shift), keystroke recorder, media keys, button LEDs, dark mode, Settings window, launch at login, device self test, and a notarized release pipeline. Everything below is what shipped since, in five tracks; items marked done shipped in the version noted.

This page mirrors the intent of ROADMAP.md in the repo; when they disagree, trust the repo file and open a PR to sync the wiki.

Track 1: Apple-native UI pass — shipped

Goal: a stranger opens the app and assumes Apple shipped it.

  • Sidebar (NavigationSplitView), tile drag-and-drop with Home Screen shift semantics, drag a tile onto a sidebar page to move it there
  • Profile version history in place of undo/redo (autosave snapshots, Settings > History browses/restores, Duplicate Profile is the manual checkpoint)
  • Hover states, animated selection, first-run onboarding, Settings window, native toolbar, in-app Help (Cmd ?)
  • Page +/− always visible (v1.4.72): native segmented control at the top of the sidebar (fixes missing add/delete on some layouts)

Track 2: Connect choreography — shipped

  • LED rainbow cascade on connect, also runs on demand as "Test Device"
  • Brightness fade-in on connect instead of a hard jump (v1.4.1)
  • Haptic tick on page change: shipped v1.4.1, pulled v1.4.2 (fired too late to read as useful feedback)

Track 3: Open source infrastructure — shipped

  • Public repo, MIT license, README, PROTOCOL.md, CONTRIBUTING.md, SECURITY.md, notarized GitHub Releases, Homebrew tap, CI on every push
  • RazerStreamKit split into its own standalone SPM package (v1.4.0), so other apps can depend on just the protocol layer
  • Wiki (install, FAQ, changelog, this roadmap)

Track 4: Features

  1. App-switching pages (v1.2.0): the deck follows the frontmost app to its mapped page; manual page changes always win; Settings > Apps has the mapping editor
  2. Profile import/export
    • Native .razerstream single-profile file, Settings > History > Export/Import (v1.4.1)
    • Loupedeck import: shipped v1.6.1. Settings > History > Import from Loupedeck, shown only when profiles are found. Reads what the Loupedeck software left in Application Support; this device writes to the "Loupedeck40" folder, confirmed from the service log rather than inferred. Pages, tile positions, and labels come across, plus app launches, URLs, keyboard shortcuts, macros (including nested ones), volume, page navigation, mouse click and scroll. Plugin actions (Twitch, Spotify, OBS Studio) have no equivalent and arrive labelled but unassigned, listed in a review step rather than guessed at. Imported pages append to the current profile by default; nothing existing is modified. Still open: tile artwork, and knob rotate macros.
    • Elgato Stream Deck import: not started, needs real sample .streamDeckProfile files
  3. Icon libraries beyond SF Symbols (v1.1.0): bundled Lucide + Bootstrap Icons, user folders of PNG/SVG, a Recent tab (v1.4.0)
    • Custom SVG size normalization (v1.4.72 line): needs reporter confirmation on macOS 26.5.2
  4. Live tiles (self-updating tile/knob content):
    • Clock (v1.1.0)
    • CPU/RAM meter (v1.4.1): bars on a tile, small pie charts on a knob strip (v1.4.6), via the standard Mach host APIs
    • Disk free space (v1.4.5): pick any mounted volume, defaults to the boot drive
    • Still open: now playing with album art (needs Apple's private MediaRemote framework), calendar next-up
  5. Haptics (v1.4.0): buzz on button/knob press and touch, Settings tab with a pattern picker
  6. Two-finger swipe to change pages: shipped v1.4.1, pulled v1.4.2 (this device's physical bezel ridges make the gesture unpleasant, a hardware ergonomics issue independent of the code)
  7. Knob acceleration (v1.4.1): fast turns step Volume/Brightness 3x
  8. Idle dimming (v1.4.1): screen and button LEDs fade after inactivity, off by default; the status light is never touched, so connection state always stays visible; LED writes paced (v1.4.3 line)
  9. Knob rotation presets beyond the basics: [x] Volume, Screen Brightness, Page Navigation, Track (v1.4.1), [x] Button LED Brightness (v1.4.3), [x] Screen + LED Brightness combined (v1.4.4); continuous-turn LED race fixed (v1.4.7 / included in 1.4.72). Still open: mouse scroll as a preset.
  10. Webhooks, Home Assistant/MQTT: not started
  11. Multi-action macros (v1.5.0): .sequence([MacroStep]) with per-step delay; Macro action kind in the inspector.
  12. Plugin API: not started. Concrete requirements gathered from a real Jellyfin-controller use case (see the repo's ROADMAP.md for the detail) point at full-tile/full-knob custom image drawing at 10-20fps plus two-way data, rather than the current declarative tile/knob config shape.

Community requests

  • Loupedeck CT hardware support: blocked on a protocol capture from an actual CT owner; different device from the Stream Controller this app targets
  • Whether RazerStream needs the old Loupedeck software fully uninstalled or just quit first: untested, open question
  • Profile-per-app as an alternative to the current page-per-app-within-one- profile model: a real design fork, not decided
  • Can't add/delete pages (#1): fixed in v1.4.72
  • SVG icons too small (#2): fix shipped in 1.4.72 line; awaiting confirmation

Track 5: Other platforms (community owned)

The maintainer isn't building these; PROTOCOL.md means a port never needs a serial sniffer.

  • Linux kit and CLI: RazerStreamKit is Foundation plus POSIX serial I/O; needs one small device-discovery shim behind #if os(Linux). Good first contribution.
  • Linux GUI (GTK or Qt), Windows (realistically C# against PROTOCOL.md)

Device reports (shipped v1.7.0)

If you own a Loupedeck or Razer deck this app does not drive yet, you can send what is needed to start adding it: Settings > Device > Copy Device Report, then open a device-report issue. No Terminal required.

The report is hardware facts only: USB ids, product strings, macOS version, and firmware when a supported device is connected. No profile contents, no file paths, and the serial number is reported as seen rather than by value, so it is safe to paste publicly. Please do not paste profile files; they carry your shortcuts and URLs.

How to claim work

Open an issue or comment on an existing one, then send a PR. Style rule: no double dashes and no em dashes in comments, docs, or commit messages; join clauses with semicolons instead. See CONTRIBUTING.md.