Recent development

Summarized from the repository's git history since the last official changelog update.

2026-08-03

  • Implemented and documented the confirmed-profile automation target: on topology changes, the agent restores the full saved display state; when no confirmed profile is set, the existing relative-position apply remains in use.

2026-08-02

  • profile apply now resolves each saved display through a fallback identity chain: exact persistent screen id first, then hardware-bound serial id, then contextual id, so a saved layout keeps working when macOS reassigns screen ids after a dock, cable, or GPU switch.
  • Added magicdisplay profile remap <name> to rewrite a profile's stored display ids to the currently connected displays in one command when an apply can no longer resolve them. It is all-or-nothing and never mutates display state.
  • profile save now records each display's serial and contextual ids alongside its persistent id.
  • The macOS release workflow now installs the produced .pkg and smoke-tests the installed CLI and app, and verifies package signature and notarization on tag builds.
  • The menu bar app now runs commands asynchronously and reports contextual, actionable success and failure results.

2026-08-01

  • Automation now requires an explicitly confirmed layout: enabling automation, installing the agent, or starting it is rejected until a layout has been confirmed, so background display changes cannot start without consent.
  • Added the portable command model behind the menu bar app's first-run setup experience.

Changelog

The official entries below mirror the repository's CHANGELOG.md.

2026-08-07

  • Documented the portable CI gate: .github/workflows/portable-ci.yml runs on an external self-hosted arm64 runner with the system toolchain, not a GitHub-hosted runner. Its availability is outside the repository and not guaranteed. Fork pull requests cannot run on the runner without admin approval, so their jobs queue or skip until a maintainer approves them.
  • Added a portable changelog gate: scripts/check-changelog.sh fails CI when a PR changes tracked files without updating CHANGELOG.md. It resolves the base ref from CHANGELOG_BASE_REF, then origin/main, skipping when neither exists, and includes a self-test covering each outcome.

2026-08-03

  • Added portable tests covering the full agent decision path: how a topology change is detected, whether the confirmed full-state profile is eligible, and the fallback when it is not. The tests exercise the decision logic through fixtures on any host. (#102)
  • The automation agent now restores the confirmed full-state profile when a display topology change is detected. The agent compares the saved confirmed profile against current displays and reapplies it when they diverge, matching the retention PRD. (#98)
  • Saved profiles can now be confirmed as the automation target in layout config. A layout configuration selects one confirmed profile that the agent uses as the reference full-state setup, giving users a predictable target for unattended display restoration. (#97)
  • Added fixture-driven tests covering fallback identity matching for profiles. Tests use captured display metadata to verify that when a saved display cannot be matched by serial, the contextual identity chain resolves the correct profile deterministically. (#87)
  • Decided and documented the full-setup automation target model. The retention docs now state that a confirmed profile, not an ad-hoc display list, is the reference the agent restores, and clarify how full-state and minimal-state automation differ. (#96)

2026-07-29

  • Added code signing and notarization to the release pipeline. Tag builds now sign the CLI, app bundle, and installer package with Developer ID certificates, notarize via xcrun notarytool, and staple the result. The workflow fails loudly if signing or notarization is missing on a tag build. workflow_dispatch builds remain unsigned when secrets are not configured.

2026-07-28

  • Added macOS release workflow that builds CLI, app, and installer package on macOS runners, publishes artifacts on manual dispatch, and creates GitHub Releases with the .pkg attached on version tags. Includes tag-to-Info.plist version consistency guard.

2026-07-27

  • Documented LaunchAgent lifecycle idempotency, single-instance expectations, bounded retry and failure behavior, log and notification signals, and review guardrails for automation, installer, and display-mutation changes.
  • Added a docs index for agent onboarding, PRD and implementation-plan links, validation matrix, and hardware-specific smoke-test boundaries.
  • Added GitHub issue and pull request templates for AI-safe MagicDisplay changes.
  • Added portable CI for Linux-hosted layout tests and non-macOS build-shape validation.
Note: the entries at the top summarize recent development from the repository's git history; the entries below mirror the repository's CHANGELOG.md, which is updated less frequently. For the very latest development activity, see the commit history on GitHub.