Updated 2026-10-17. The installed elementary OS 9 desktop boots on an M1 Pro; the factory arm64 ISO built successfully but has not been booted on hardware. Items are ranked by how often they are hit, how small the fix is and what they depend on. The full detail and evidence are in the repository roadmap. See also customizations and Omarchy parity and the support matrix.
| # | Item | Status | Next step |
| 1 | Launcher search text was hard to read | Fixed 2026-10-14; please confirm | Press Command+Space and type. The colors and font size are in mseries/mseries-launcher.py. |
| 2 | Window buttons on the left, Mac style | Fixed 2026-10-14; please confirm | Check a few windows. Revert by changing the layout in mseries/apply-desktop-settings.py. |
| 3 | Dock Ethernet icon dying on replug | Fixed 2026-10-14; verify on the next replug | A permanent profile bound to the adapter replaces the temporary one NetworkManager kept deleting; the Realtek firmware package is installed. Replug the dock and watch the panel icon. |
| 4 | Lid-open login needs the power button | Closed; docked case untested | The undocked path works. A tracer (mseries-lid-trace) logs the next docked lid close. |
| 5 | Screenshot thumbnail: drag to use without keeping, hold Alt to also keep | Built 2026-10-14; please try | Drag a fresh screenshot into an app with and without Alt, and tell us what happens. See mseries/screenshot-shelf/README.md. |
| 6 | Preview-style markup for images and PDFs | Built 2026-10-14; please try | Click the thumbnail, or use Open With, Markup. Images use Swappy; PDFs open in Papers. PDF signing is not covered. |
| 7 | Omarchy parity gaps | Mostly done | Audio watchdog and rules installed. Still open: the function-key default (running with media keys first; needs your choice) and the microphone mapper. |
| 8 | Touch ID for login | SEP boots; the first Aurora boot then froze (2026-10-17); cause unknown | The Aurora kernel (omacom/linux-aurora) and its Touch ID userspace are installed. The Secure Enclave was disabled in the m1n1 device tree; enabling it and adding an alias brought it up (/dev/sep-bio exists, driver bound, calibration firmware extracted locally). The missing fingerprint sensor node is now ported into the boot device tree, and a Touch ID settings app handles enrollment. The Aurora kernel was booted once: the Secure Enclave came up, then the machine hung about 34 seconds in with no panic logged (details below). Next: find the cause before a second boot, then enroll a finger and wire sudo, polkit and the lock screen. Password stays as fallback. See mseries/aurora-touchid-state.md. |
| 9 | iMessage | Documented; install later | Preferred: Tether (iPhone to Linux, one-time-code handoff; needs BlueZ 5.86, this Mac has 5.85). BlueFerry works with 5.85. BlueBubbles is the fallback. Install after the reinstall. |
| 10 | iCloud password sync | Documented; decide later | Leaning to a Brave extension (icp supports Brave) or Brave Sync. Nothing installed. |
| 11 | Small checks | Needs hardware checks | Brightness keys and level after login; keyboard light on lock and lid; Wi-Fi resume; build and test the Gala keyboard-helper guard (patch written); file the drafted Wingpanel crash report. |
| 12 | Factory image | Release blocker for the image | Boot the built ISO on hardware; package the audio chain and Wi-Fi firmware; test from the image. |
| 13 | Dock display, suspend with a dock, USB-C after resume | Kernel work; fixes staged, untested | Still no dock video. Controlled boots found two DP-IN failures (retry on no-link, and a crash on a stale PHY); both are fixed in the staged kernel patch 0011 and the desktop-crash race has a LightDM wait for the display. None of it has been booted yet. The dock driver still refuses suspend (docked lid mode locks instead); USB-C devices can vanish after resume. Details in mseries/REBOOT-QUEUE.md. |
| 14 | Hotkey app drawers and dock panel | Installed; needs a relogin to test | Control+N toggles a per-app drawer, Control+Alt+N assigns the focused app, a Drawer Shortcuts settings app and a Command+Option dock panel are installed, and the dock can be slid along its edge with Command-drag. Log out and in, then run mseries/check-drawers.sh. The dock slide offset resets when the dock restarts. |
| 15 | ArtCraft apps as Adobe and Office replacements | Not started | Build, license-check and benchmark each Rust app on arm64 before packaging any. |
| 16 | Dock monitor: audio and video out of sync; monitor speakers not usable | Reported 2026-10-18; not measured | The picture works at 1080p60 (4K30 stays dark; 4K60 is not offered by this TV). HDMI audio is off in the driver (marked unstable upstream), so sound plays on the Mac speakers or an AirPlay output, and the lag has not been traced. See mseries/AV-SYNC-EXTERNAL-DISPLAY.md. |
| When | Problem | Fix |
| 2026-10-17 | Touch ID: the Secure Enclave driver bound to nothing, so no fingerprint device existed. | The SEP was disabled in m1n1's embedded j314s device tree, and m1n1 only injects its firmware when the node has an alias. Both patched with a byte-checked swap (backups kept). The driver binds and /dev/sep-bio exists. Sensor calibration firmware extracted locally; the SPI fingerprint node ported into the boot device tree. Fingerprint enrollment has not been tested; the first boot froze before it. |
| 2026-10-17 | The Aurora Touch ID kernel dropped to an initramfs shell. | Its shipped initramfs was an Arch image with no hooks (no cryptsetup, LVM or busybox). Rebuilt from the known-good image with the Aurora modules; the original is kept in /var/backups. |
| 2026-10-17 | No graphical way to enroll a fingerprint. | Added a Touch ID settings app (GTK4) for enrollment and the PAM chain. |
| 2026-10-17 | CodexBar popover flickered and was hard to scan; missing-upstream errors were unclear. | Redesigned with tabs, usage levels and a quiet bar; added a Sessions section (ChatGPT, Claude Code, OpenCode), list-price spend estimate and a clear OpenCode Go quota message; atomic install with a testable wrapper and a headless render probe. |
| 2026-10-17 | Dock drawer panel clicks stole icon clicks, or the gesture never fired. | Panel moved to a Command+Option gesture in the capture phase, tiles kept in step, icon clicks pass through. Drawers toggle moved off Command+number so in-app tab switching works. |
| 2026-10-16 | No quick way to launch or place apps by hotkey. | Added the Gala drawers plugin, assign hotkeys with an on-screen confirmation, live-reloading config and a settings app. Installed; takes effect at the next login. |
| 2026-10-16 | Monitor layouts were lost on every dock plug or unplug. | Display profiles remember the layout per set of attached displays and re-apply on hotplug, polling the DRM connector so a replug is noticed, and never applying a layout across an unplug. A Display Settings app adds drag-and-drop layout, modes, refresh, scale and plain-language diagnostics. |
| 2026-10-16 | No single switch for dark mode. | Added a universal dark mode tool that cuts over at sunset and sunrise and ships in the image payload. |
| 2026-10-16 | The network readout gave no cue near saturation (reported earlier). | Speeds and graph lines turn pastel green when the link saturates (PR 54). |
| 2026-10-16 | Electron apps ran as X11 clients under Xwayland, costing GPU power. | Native-Wayland hint added (savings not yet measured) after a read-only power survey found the ChatGPT app dominating GPU jobs. See the power roadmap. |
| 2026-10-15 | The CPU speed ceiling ignored the power profile. | mseries-power cap or follow modes with a service and test. |
| 2026-10-15 | The watt meter did not show whole-system power, and sat tight against the battery icon. | Reads the SMC total system power; 8 px gap added. |
| 2026-10-15 | The ten-minute password prompt returned after the first fix. | The network usage cache read asked polkit for interactive permission. It now never asks, with a polkit rule for the dump-cache action. Confirmed 2026-10-15: no helper entries across the 14:33 and 14:43 marks. |
| 2026-10-16 | CI failures (user-enhance test, factory unit directory, mkosi build scripts). | Fixed in PR 56. |
| 2026-10-14 | Launcher search text was hard to read. | Explicit colors for the typed text, caret, selection and placeholder, a visible field and larger type (2026-10-14). |
| 2026-10-14 | Window buttons were split across both sides. | Close, minimize and maximize now sit together on the left, Mac style (2026-10-14). |
| 2026-10-14 | Dock Ethernet icon vanished and reappeared on every replug. | NetworkManager was deleting a temporary profile on unplug. A permanent profile bound to the adapter now exists, and the Realtek firmware package is installed (2026-10-14; verify on the next replug). |
| 2026-10-14 | Dock Ethernet, hub and mouse were listed as unverified. | Verified on a Dell WD22TB4 on 2026-10-14. |
| 2026-10-14 | Audio could wedge at logout or resume with no automatic recovery. | Audio watchdog installed (restarts PipeWire and WirePlumber after two failed checks, limited to 3 restarts per 30 minutes, only when unlocked). Two WirePlumber rules installed; they apply at the next login. |
| 2026-10-14 | Lid-open login needing the power button. | Not reproduced. A traced undocked cycle woke and showed the login screen in about 2 seconds; closed unless a docked cycle shows it. |
| 2026-10-14 | A password dialog popped up about every ten minutes for no visible reason. | Automatic timezone was asking the system to change an already-correct timezone. Automatic timezone is now off (also set in the desktop settings script). Please confirm no prompt for 30 minutes. |
| Oct 12-13 | CodexBar quota exhaustion estimates were hidden in tooltips. | The menu bar shows the earliest available quota ETA and its limiting window. Each dropdown limit shows a visible pace forecast or reset countdown; stale and unavailable estimates stay unknown. |
| Oct 12-13 | CodexBar usage could lag by five-minute fetching plus one-minute panel reads. | The native indicator reads snapshots asynchronously every five seconds and requests a throttled refresh when opened. One-minute backend polling is documented and applied on the working desktop. |
| Oct 12-13 | Public status contradicted the recorded M1 Pro desktop boot. | Pages now distinguish the installed transformed system from the unverified factory ISO. |
| Oct 12-13 | CI path filters could skip changes to the transform script, root mkosi config, repositories, or arm64 package manifest. | Added these paths to the M-series validation workflow. |
| Oct 12-13 | The fork's scheduled builds needed elementary's private publishing credentials. | Added a manual experimental arm64 build with retained logs, checksums, and installer artifacts. The first arm64 image build succeeded on October 13. |
| Oct 12-13 | The hardware overlay pruned packages that its final image consumers did not explicitly install. | Added runtime dependencies to both arm64 consumers and a regression test. |
| Oct 12-13 | Overlay cleanup deleted the brightness helper and its desktop autostart entry. | Retained the files and added a regression test using a temporary image tree. |
| Oct 12-13 | ARM installer APT disc metadata used the amd64 directory; the ISO label also triggered a standards warning. | Corrected target architecture selection and normalized the volume label. Rebuilt-image verification is pending. |
| Oct 12-13 | The base image missed systemd-coredump, now included by current elementary OS 9 upstream. | Ported upstream commit 7024fd04646a6a8565bf6805989b59fd72de928c. |
| Oct 12-13 | Porting notes pointed at the retired omarchy-mac quattro branch for current package behavior. | Recorded omacom/omarchy-mac-pkgs as the maintained reference and pinned the audited revision. |
| Oct 12-13 | An older optimization audit listed ambient keyboard lighting as missing, though it was implemented and measured on the M1 Pro. | Corrected the audit and listed the remaining lock, lid, and suspend checks. |
| Oct 12-13 | Package notes said the Asahi speaker packages had no Ubuntu source, but resolute/universe provides the installed versions. | Updated the package manifest and build notes. Factory-image audio packaging remains open. |
| Oct 12-13 | Battery charge limit had no desktop control. | Added a quick-settings switch and an 80% limit service; the limit reads 80% on the M1 Pro. |
| Oct 12-13 | The Mac stayed awake with the display off when the lid closed on a USB4 dock. | Added docked lid mode, which locks instead of retrying suspend. Running; a lid-close test with the dock is pending. |
| Oct 12-13 | Network speed and usage were not visible, and the indicator was not part of the image. | Added the speed graph and usage view, and pinned the build into the Apple Silicon image overlay. |
| Oct 12-13 | No plain-language way to see what failed on the machine. | Added the Local Troubleshooter, briefing and read-only assistant, all running on-device. |
Recorded from earlier owner reports. They are not in the ranked list above yet.
| Issue | Next step | Status |
| App windows do not consistently follow the Mac display's rounded shape. | Define a system-level window-surface policy, then qualify native, third-party, maximized, fullscreen, dialog, and external-display cases. | Needs implementation and visual qualification |
| The red and blue palette still feels harsh in use; existing GTK overrides do not reach every toolkit. | Review shared theme/system settings and check contrast, focus, selection, and warning/error distinction across supported toolkits. | Needs palette review |
| Network usage readouts can fail to recover around Ethernet suspend/resume or reboot. | Compare the indicator and panel rates/history with interface counters before sleep, after wake/startup, and once the interface settles. | Needs reproduction |
| The signal strength dropdown does not feel native to elementary and could be more fully built out. | Review native panel/menu patterns, capture the current behavior, then define the added information and actions. | Owner reported; needs design/reproduction |
| A bug was reported in Tasks, but the affected behavior is unspecified. | Capture the failing flow, expected and actual results, app version, and reproduction steps. | Needs details |
| A bug was reported in Energy Monitor, but the affected behavior is unspecified. | Capture the failing flow, expected and actual results, app version, and reproduction steps. | Needs details |
| Touch ID passkey/WebAuthn user verification is unverified on M1 Pro. | Needs working fingerprint enrollment first (see item 8); then verify passkey creation and sign-in while retaining password/recovery fallback. | Owner requested; waiting on Touch ID boot test |
| Successful authentication is not remembered for a configurable period; duration and reauthentication rules are undefined. | Define duration, scope, idle/lock/suspend expiry, and fresh-verification behavior. | Owner requested; policy to define |