Changelog
All notable changes to sadiqk2/nativephp-symfony-desktop-bundle.
The format is Keep a Changelog and this
project follows Semantic Versioning — with
the caveat every 0.x carries: the minor number is where breaking changes live
until 1.0.0.
[Unreleased]
[0.1.1] - 2026-09-09
The package is renamed. native-symfony/desktop-bundle was never published:
Packagist blocks vendor names carrying a framework's trademark, so 0.1.0 could
not be submitted under it. This release is 0.1.0's code under a name that can be.
Changed
- Renamed to
sadiqk2/nativephp-symfony-desktop-bundlefromnative-symfony/desktop-bundle. No class, service id, configuration key or console command changed — a Composer vendor name and a PHP namespace are separate things, andNative\Symfony\Desktop\is untouched. Nobody can be installing the old name, because it was never on Packagist.
[0.1.0] - 2026-09-08
First public release. The desktop half of the port is complete and has been verified by a packaged application that was built and run, not only by tests.
Added
- All 118 runtime endpoints, wrapped by area:
WindowManager(22),AppManager,SystemManager(11),MenuManager,MenuBarManager,DialogManager,NotificationManager,ClipboardManager,SettingsManager,ScreenManager,ShellManager,PowerMonitorManager,DockManager,GlobalShortcutManager,ChildProcessManager,ProgressBar,RuntimeInfo,DebugLoggerandUpdaterManager.ClientInterfaceis the escape hatch for anything a wrapper does not cover. - All 46 pushed events, as typed classes dispatched through Symfony's own
dispatcher. Unknown names still dispatch, as a
NativeEvent— apps name their own events for shortcuts, menu items and notifications, so that path is load-bearing rather than a fallback. AppBootstrapper, autoconfigured and aliased by a compiler pass: implement it and whatever it does on/bootedis your application's startup.- A testing kit —
FakeRuntime,RuntimeExpectationsandRuntimeEventSimulator— that records against the real wire rather than stubbing a manager, so a test cannot assert a payload the runtime never sends. - Commands:
native:install,native:manifest,native:doctor,native:run,native:build,native:config,native:php-iniandnative:schedule-tick. RuntimePatcher, which retargets the runtime's hardcoded Laravel strings at your application in the copynative:install --publishwrites, and carries five runtime bug fixes with it. Non-strict hunks: a target that has moved — usually because the fix landed upstream — is reported, not fatal.RuntimeRoutesAccessMap, which keeps an application's ownaccess_controloff/_native/api/while the shared-secret gate is enforcing. Without it,access_control: ^/makesPOST /_native/api/booteda 401, the runtime discards it, and the app opens a window that does nothing forever.native:doctor, which asks the router directly whether the two runtime endpoints resolve to this bundle's controllers and exits non-zero when they do not. This runtime's failure mode is silence, so the check is not ceremony.
Notes
- The bundle deliberately does not vendor the Electron runtime. Requiring
nativephp/desktopwould pullilluminate/contractsandlaravel/promptsinto a Symfony application;native:install --source=copies it instead. native:configandnative:php-inimust print nothing but JSON. The runtime runs them before its API server exists andJSON.parses their stdout, so anything an application echoes during console boot breaks the parse silently.