Skip to content

Releases: dripster82/ar_workspace_manager_for_xreal

V0.9.0

Choose a tag to compare

@dripster82 dripster82 released this 21 Jul 16:53

AR Workspace Manager V0.9.0

🎧 The media player now plays audio — MP3s and M4B audiobooks

Audio files used to hang the player forever on "Loading…", silently playing muted underneath:
the player's whole ready-state was gated on decoding a first video frame, which an audio
file never produces. The player now detects audio-only files the moment decoding starts and
brings them up properly — sound unmuted, transport and scrubber live, resume-position saved and
restored exactly like video.

  • Cover art in AR: audio items show their embedded artwork (M4B/M4A iTunes covers, MP3 ID3
    pictures) at its true aspect ratio — in the corner positions and full view alike.
  • No artwork? No problem: files without art get a clean dark card with the file name, shown
    the instant the file is ready (art swaps in a beat later if found).
  • Plain video files are completely untouched — they stream frames exactly as before.

📖 Chapter-aware Next / Previous

For chaptered files — M4B audiobooks, chaptered MKV/MP4s — the Next/Previous controls (⌃⌥ media
shortcuts and the panel buttons) now navigate chapters the way a CD player navigates tracks:

  • Next jumps to the next chapter; past the last chapter it moves to the next playlist item.
  • Previous restarts the current chapter — or, within the first 3 seconds of one, jumps to
    the chapter before. At the very start of the file it falls back to the playlist.
  • Rapid presses work: Prev-Prev-Prev steps back three chapters deterministically, even though
    libvlc reports positions with a slight lag after each seek.

Unchaptered files keep the old playlist behaviour exactly.

🩺 Media diagnostics

  • The media pipeline now logs every state transition ([media] prefix in Console.app / stderr):
    loads, ready events, the audio-only probe's decisions, and why playback is or isn't running.
  • For files that still refuse to play:
    defaults write uk.co.ketelle.ar.workspace.manager media.vlcVerbose -bool YES
    turns on libvlc's own (very chatty) demux/decoder debug stream.

🛠️ Also fixed

  • Voice control no longer burns CPU in a hot recycle loop when macOS refuses speech
    recognition — it stops cleanly and says why.
  • Release builds never leave the Intel slice behind in build/, and the app warns when it's
    running under Rosetta.

Requirements: XREAL Air/Air 2/Air 2 Pro or One/One Pro, macOS 14+, Apple Silicon or Intel.
Both DMGs are notarized and stapled.

V0.8.0

Choose a tag to compare

@dripster82 dripster82 released this 09 Jul 11:13

AR Workspace Manager V0.8.0

🖱️ Click & drag reliability — a deep input-path cleanup

Three separate root causes of sluggish clicks, phantom drags, and drags sticking to the cursor
were found and fixed:

  • The window-drag detector did synchronous Accessibility work on every left-click
    system-wide
    (up to seconds against slow apps like Electron). Clicks now cost nothing — the
    detection is deferred, async, and only runs during AR.
  • The ⌃⌥-brightness hotkey tap sat in the delivery path of every mouse click's system events
    via the app's main thread. It's now completely inert except while ⌃⌥ is physically held, and
    runs on its own thread.
  • The cursor boundary at the glasses display no longer warps mid-click (clicks near that edge
    could turn into drags).

🗺️ Workspace layout editor, rebuilt

  • Snap to 5° and snap to screen edges toggles (hold ⌘ while dragging to bypass; snapped
    edges glow cyan). Edges and centres align exactly.
  • The map now matches AR faithfully: screen tiles render at true angular size (no more
    inflated minimums), widgets and stacks use their real rendered size and anchoring, and the four
    media corner positions (⌃⌥1–4) show as dashed reference outlines.
  • Degree grid with angle labels, an FOV tag, live yaw/pitch readout while dragging, hover
    highlighting, tooltips on every tile, and zoom % with click-to-reset.
  • The OS display arrangement now honours your layout's topology: screens whose edges touch in
    the map land exactly edge-to-edge — including stacked-beside-tall arrangements the old row
    model couldn't express — with side-by-side vertical offsets preserved.
  • Wide curved canvas controls moved from Settings → Glasses to the Workspace page, and its
    distance slider actually does something now (nearer = bigger, farther = smaller — previously
    the maths cancelled out).

⌨️ New controls

  • ⌃⌥+ / ⌃⌥− — grow/shrink the mouse cursor in steps, with a brightness-style popup showing
    the size (Cursor size +3).
  • Esc dismisses any open popup — help, find-cursor, window picker, settle warning,
    calibration prompt — one per press, most important first.
  • Manual calibration editor (Settings → Glasses): the values ⌃⌥B measures are now visible and
    hand-tunable in 0.1 steps — yaw-drift compensation on all models, mount pitch/roll on
    One-series.

🔊 Mic stays put

If you pick a specific microphone, the app now keeps it when macOS tries to reassign the
input — including when Bluetooth earbuds connect mid-session. Choose "System default" to let
macOS manage it.

🩺 Diagnostics

The ColorSync daemon readout is now a live graph: three hours of history plus a real-time
10-minute pane, sampled every 2 s, with the "pinned" threshold marked — short bursts that release
are normal; a sustained plateau is the stuck state.

🛠️ Also fixed

  • Find-cursor (⌃⌥C) reliably toggles off (it fought the help overlay for a render slot).
  • The "display service didn't settle" warning no longer truncates mid-sentence.

Requirements: XREAL Air/Air 2/Air 2 Pro or One/One Pro, macOS 14+, Apple Silicon or Intel.
Both DMGs are notarized and stapled.

V0.7.1

Choose a tag to compare

@dripster82 dripster82 released this 06 Jul 14:49

AR Workspace Manager V0.7.1

Small, recommended update for everyone on 0.7.0.

🩹 Fixed: a crash during long AR sessions

A rare race condition in the render loop could crash the app mid-session: macOS can
occasionally deliver a display-refresh tick on a second thread while a frame is still
being drawn, and the two colliding frames corrupted internal render state. This was the
root cause behind a family of intermittent crashes some users (and the author) have hit
during multi-hour sessions — including with the new media player running.

Render ticks are now serialized: a colliding tick is simply skipped (one dropped frame
at 120 Hz — invisible), which removes the crash entirely.

Everything else is identical to V0.7.0
— see its notes for the full what's-new (media player, Intel support, update channels,
ColorSync stability work, and more).


Requirements: XREAL Air/Air 2/Air 2 Pro or One/One Pro, macOS 14+, Apple Silicon or Intel.
Both DMGs are notarized and stapled.

V0.7.0

Choose a tag to compare

@dripster82 dripster82 released this 06 Jul 11:49

AR Workspace Manager V0.7.0

🎬 New: Media player

Watch your own videos inside AR on a head-locked screen:

  • Plays almost everything — MP4, MOV, MKV, AVI and more, with subtitles (text and
    image-based) rendered consistently for every file. Playback is powered by bundled
    VLCKit/libVLC. Files can live on your Mac or a mounted network drive.
  • Playlist — add multiple videos, drag to reorder, auto-advance, per-item durations, and
    Loop and Shuffle toggles (shuffle plays everything once before any repeats). Your
    playlist and playback position survive app restarts — stop mid-film and resume days later.
  • Five positions — pin the video to any corner of your view or go full view, from the panel or
    by hotkey: ⌃⌥1–4 corners, ⌃⌥5 full view, ⌃⌥K play/pause, ⌃⌥←/→ ±10 s,
    ⌃⌥↑/↓ next/previous (Previous retraces what actually played, even shuffled), ⌃⌥0 stop.
    A progress bar flashes in-view on every transport action; a scrub slider on the Media page jumps
    anywhere in the file. (The shortcuts help — ⌃⌥H — is now three columns.)
  • Full view keeps the film's aspect ratio with cinematic black bars (an opt-in "stretch to
    fill" toggle restores edge-to-edge), and background screen captures throttle automatically to
    save power while you watch.

🩺 ColorSync stability (Air series)

A macOS bug can drive the colour service to a sustained CPU spin while XREAL glasses are
connected (XREAL's own Nebula app triggers it too). After a week of controlled measurement, the
trigger is now understood — display reconfiguration while the service is mid-burst — and the app
actively avoids it:

  • Settle guard: before starting AR or switching workspaces, the app waits for a calm window
    (a few seconds, bounded) instead of reconfiguring displays into a busy daemon. A small toast
    shows while it waits — press to proceed immediately.
  • Smarter recovery: the capture watchdog no longer rebuilds displays on false alarms
    (static screens legitimately go quiet); a rebuild now requires real evidence of failure.
  • Opt-in alert (Diagnostics) when the service is genuinely stuck for 6+ minutes, with the
    remedy that actually works: unplug the glasses for a minute or two.
  • Diagnostics gained per-session display-churn counters, a session log with crash detection, and
    "Clear saved configs" now clears both registry locations.

🖱️ Click reliability in AR

Fixed clicks near the screen edge bordering the glasses display being swallowed or turning into
phantom drags (files "sticking" to the cursor until Esc). The cursor boundary now acts as a
gentle wall and is never enforced mid-click.

🔊 Slack messages, read aloud

Optional text-to-speech for new Slack messages — "Slack message from Jeff" — with a selectable
system voice (Settings → Slack, off by default, includes a test button and voice-download guide).

🖥️ Intel Macs now supported

Releases ship two builds with friendly names: …-Apple-Silicon.dmg and …-Intel.dmg.
The in-app updater detects your machine's chip at runtime (even under Rosetta) and downloads the
right one automatically.

📅 Calendar widget

Today and Tomorrow are always shown (with "no events" when they're clear), day headers carry
the date — Today (Tue 30 Jun) — and busy days show "+N more" instead of hiding events.

🔄 Update channels

Settings → About now has an Updates dropdown: Stable, Release candidates, or Betas.
Pre-releases only reach users who opt in — and switching back to Stable offers a clean downgrade
to the latest stable build.

🛠️ Fixes & quality of life

  • Voice control — microphone changes apply instantly, the wake-word popup can no longer get
    stuck listening, and your chosen mic is remembered across launches (re-asserted at startup
    even when macOS reassigns the default). New warning when voice listens on a Bluetooth headset
    mic (which forces the headset into low-quality call mode).
  • Connected widgets survive login races — if the Mac hasn't finished joining Wi-Fi when the
    app starts, GitHub / Google Calendar / Slack now show "Waiting for the network — retrying…"
    and reconnect automatically every 20 s instead of failing once and giving up.
  • Fixed a recurring crash (heap corruption in the render pipeline): a video frame-buffer
    lifetime bug plus a capture watchdog that needlessly restarted healthy captures up to
    1,800×/day. Both fixed.
  • Fixed a bug where every click in file-picker dialogs could stall for ~5 seconds.

📄 Licensing

The bundled VLCKit/libVLC is © VideoLAN, LGPL 2.1 — credited on the About page with the license
text included and a link to the source. Dynamically linked, replaceable in the app bundle.


Requirements: XREAL Air/Air 2/Air 2 Pro or One/One Pro, macOS 14+, Apple Silicon or Intel.
Both DMGs are notarized and stapled.

V0.7.0-RC1

V0.7.0-RC1 Pre-release
Pre-release

Choose a tag to compare

@dripster82 dripster82 released this 03 Jul 15:38

AR Workspace Manager V0.7.0-RC1

Release candidate — feature-complete and tested, published for wider testing before the 0.7.0
stable release. If you prefer finished releases only, stay on V0.6.4.

🎬 New: Media player

Watch your own videos inside AR on a head-locked screen:

  • Plays almost everything — MP4, MOV, MKV, AVI and more, with subtitles (text and
    image-based) rendered consistently for every file. Playback is powered by bundled
    VLCKit/libVLC. Files can live on your Mac or a mounted network drive.
  • Playlist — add multiple videos, drag to reorder, auto-advance to the next when one ends.
    Your playlist and playback position survive app restarts.
  • Five positions — pin the video to any corner of your view or go full view, from the panel or
    by hotkey: ⌃⌥1–4 corners, ⌃⌥5 full view, ⌃⌥K play/pause, ⌃⌥←/→ ±10 s,
    ⌃⌥↑/↓ next/previous in the playlist, ⌃⌥0 stop. A progress bar flashes in-view on every
    transport action. (The shortcuts help — ⌃⌥H — is now three columns.)
  • Full-view watching automatically throttles the background screen captures to save power.

🔊 Slack messages, read aloud

Optional text-to-speech for new Slack messages — "Slack message from Jeff" — with a selectable
system voice (Settings → Slack, off by default, includes a test button and voice-download guide).

🖥️ Intel Macs now supported (experimental)

Releases now ship two builds: …-arm64.dmg for Apple Silicon and …-x86_64.dmg for Intel.
The in-app updater picks the right one automatically. Intel support is new — feedback welcome.

📅 Calendar widget

Today and Tomorrow are always shown (with "no events" when they're clear), day headers carry
the date — Today (Tue 30 Jun) — and busy days show "+N more" instead of hiding events.

🔄 Update channels

Settings → About now has an Updates dropdown: Stable, Release candidates, or Betas.
Pre-releases like this one only reach users who opt in — and switching back to Stable offers a
clean downgrade to the latest stable build.

🩺 Stability & diagnostics

  • Fixed a recurring crash (heap corruption in the render pipeline) with two root causes: a
    video frame-buffer lifetime bug, and a capture watchdog that was needlessly restarting healthy
    screen captures up to 1,800×/day. Both fixed.
  • Voice control fixes — microphone changes now apply instantly (no more toggling voice
    off/on), the wake-word popup can no longer get stuck listening, and the timing sliders apply to
    both push-to-talk and wake word. New warning when voice listens on a Bluetooth headset mic
    (which forces the headset into low-quality call mode).
  • ColorSync runaway (Air-series, macOS bug — XREAL's own Nebula app triggers it too): the app
    no longer pretends it can auto-fix it. Instead there's an opt-in alert when the colour
    service has been genuinely stuck for 6+ minutes, with the remedy that actually works (unplug the
    glasses for ~30 s). Diagnostics gained per-session display-churn counters, a session log with
    crash detection, and "Clear saved configs" now correctly clears both registry locations.

📄 Licensing

The bundled VLCKit/libVLC is © VideoLAN, LGPL 2.1 — credited on the About page with the license
text included and a link to the source. Dynamically linked, replaceable in the app bundle.


Requirements: XREAL Air/Air 2/Air 2 Pro or One/One Pro, macOS 14+, Apple Silicon or Intel.
Both DMGs are notarized and stapled.

V0.6.4

Choose a tag to compare

@dripster82 dripster82 released this 30 Jun 15:46

AR Workspace Manager for XREAL V0.6.4

XREAL One / One Pro / One S — automatic per-device calibration

The One-series IMU sits at a slight physical tilt that differs between models, so the previous fixed correction (tuned on the One Pro) left other One models a little off — turning your head could tilt or roll the screen.

This release measures your specific device's mount tilt and corrects it automatically:

  • The first time you start AR with a new One-series device, you'll be asked to calibrate: put the glasses on, look straight ahead, and keep your head level and still for a few seconds.
  • The result is saved per device, so it's a one-time step — your glasses are remembered next time you plug them in.
  • You can re-run it any time from Settings ▸ Calibrate (or ⌃⌥B).
  • If a calibration won't settle, you can still start AR and try again later — you're never locked out.
  • Air-series glasses are unaffected — they're mounted flat and need no tilt correction.

Smoother workspace switching + ColorSync cleanup

Switching workspaces now reuses existing virtual displays when the resolution matches, instead of destroying and recreating them every time. This cuts the macOS colorsync background work that could slowly build up CPU over a long session.

  • New System Health section in Settings shows live ColorSync daemon CPU and profile/config counts, with a "Clean ColorSync now" button.

Notarized and stapled. Requires macOS 14+ on Apple Silicon.

V0.6.3

Choose a tag to compare

@dripster82 dripster82 released this 30 Jun 09:32

AR Workspace Manager for XREAL V0.6.3

Bug fix:

  • Fixed a crash that could happen when starting push-to-talk voice control after the Mac woke from sleep (or after the microphone was changed). The audio engine now fails gracefully with a message instead of quitting the app — just press the shortcut again to retry.

V0.6.2

Choose a tag to compare

@dripster82 dripster82 released this 29 Jun 14:50

AR Workspace Manager for XREAL V0.6.2

Bug fix:

  • Fixed the GitHub widget repeatedly showing "not connected" / "token expired" when your token was actually fine. GitHub returns a 403 when it's rate-limiting requests, and that was being mistaken for an expired token. The widget now stays connected through rate limits and quietly backs off, and the PR-count queries are spaced out to avoid tripping GitHub's secondary rate limit in the first place.

V0.6.1

Choose a tag to compare

@dripster82 dripster82 released this 29 Jun 10:00

AR Workspace Manager for XREAL V0.6.1

Bug fix:

  • Fixed a bug where wake-word voice recognition would stop responding after the first command — it now keeps listening for repeated commands.

V0.6.0

Choose a tag to compare

@dripster82 dripster82 released this 29 Jun 08:42

AR Workspace Manager for XREAL V0.6.0

New

  • List HUD widget — a head-locked checklist in your glasses. Switch each widget between an in-app list (typed in the control panel) or a linked Apple Reminders list (syncs via iCloud; tick items off in the panel and it writes back to Reminders).
  • Apple Calendar support — the Calendar widget can now read Apple Calendar (EventKit), not just Google. Pick the source per widget — Google / Apple / Both (merged & sorted) — and choose which Apple calendars feed it. Apple events also trigger the in-AR meeting alarms.
  • Calendar display options — per widget, set how many events to show (1–10) and the time range: All upcoming / Today only / Today + tomorrow.
  • Voice control — hands-free commands with push-to-talk and a wake word, on-device recognition, editable per-command phrases, a mic-level meter, and a quiet-until-wake popup.
  • Drag boundary overlay — a dot-grid guide appears on transparent screens while you drag windows, to help placement.

Improved

  • Consistent widget sizing — HUD widgets now use two standard sizes so they line up cleanly in a stack: small (clock, power) and medium (Slack, GitHub, Calendar, List).
  • ColorSync runaway watchdog — self-heals the occasional ColorSync CPU spike.