Pull Requests
- Add Japanese translation by @mashiro-mikage in #870
- Document 1.5 LDAP nested-group migration gap as wontfix and direct users to 1.6 by @mastacontrola with @Copilot in #894
- Make the str_contains() polyfill agree with the function it replaces by @mastacontrola in #901
- Stop the installer reporting failures on a successful upgrade by @mastacontrola in #902
- Resolve the DB unit to one name instead of three by @mastacontrola in #904
- fix(web): stop isLoaded() gates poisoning association writes (1.5 port) by @mastacontrola in #912
- Add isDirty() to stop assocSetter() re-diffing untouched associations by @darksidemilk in #918
- ci: add push-triggered stub delegating to fog-workflows version check (dev-branch) by @darksidemilk in #923
- docs: link Version Sync Automation doc from README by @darksidemilk in #929
- sync branches by @darksidemilk in #936
- refactor(githooks): make fog-version.sh a pure compute, add apply script by @darksidemilk in #931
- feat(githooks): skip apply-fog-version.sh entirely when nothing drifted by @darksidemilk in #937
- docs: add current-version badges for stable/dev-branch/working-1.6 by @darksidemilk in #942
- Stable Release PR For 1.5.10.2149 - 2026-07-30 by @fog-workflows[bot] in #951
Full Changelog: 1.5.10.1903...1.5.10.2149
Commits
- Add Japanese translation (7d73d9f68)
- Update messages.po (a0a87c242)
- Update messages.po (b55c0919d)
- Update functions.sh (ed2c8b527)
- add ja to function for redhat (846b42cd0)
- Update messages.po (6dd592e9c)
- いくつかの翻訳を追加 (83edfea6f)
- Update messages.po (55bfe31b5)
- Merge PR #870: Add Japanese translation (1eca5450b)
- Fix silent failure and data loss when moving captured images out of /images/dev (edb467547)
- Fix uncaught ValueError 500 when a storage group has no nodes (a7be9a645)
- Harden FOG client endpoints against empty-collection crashes (60edfd044)
- Harden lib/fog against PHP 8 min()/max() ValueError on empty arrays (376f13a89)
- Fix zero-byte HTTP 500 on PHP 7.4 from the
mixedhint on Initiator::e() (10d4bce68) - Make the installer verify the web tier and the schema deploy (d9551e06b)
- Guard multicast/imaging lookups against PHP 8 empty-array errors (fb247b0af)
- Stop udp-sender when its session leaves the active set (6fb7ccada)
- Stop resetting the multicast join counter on every poll (6d060fe34)
- Persist multicast sender ownership and scope sessions to the owning node (fa999c8c1)
- Close the multicast join window and stop reporting phantom deployments (9b53a409c)
- Make the multicast port override a pool and enforce the session cap (e6afb75fb)
- Tier schema-deploy authorization by credential channel (3d0b681d1)
- Reconcile orphaned senders even when multicast is globally disabled (05dc69cda)
- Close the GHSA-gj9f batch findings that are still live on 1.5.x (1bcfafb73)
- Escape the inventory report display columns on 1.5.x (edc5322ec)
- Stop a spoofable pre-auth request clearing a host's encryption key (fb2cc3ecc)
- Escape the multicast sender command line at the sink (19682c75d)
- Send the real path when the image path is the image file (d6ffb8c7c)
- Reject '.' and '..' as snapin filenames here too (f008b9a97)
- Stage only what the commit touches in the pre-commit PSR2 pass (8e30a2fdf)
- Let a FOG Client recover from a lost authorize reply (8c9ea2976)
- Stop passing null where an internal string parameter is expected (c82e5b919)
- Initial plan (8a30ab788)
- Document LDAP nested-group 1.5 wontfix limitation (03de85c26)
- Let the rate-limit reply carry its meaning in the body, like the rest (217707d87)
- Stop every non-AD login enumerating the whole group subtree (5ce3121e4)
- Stop the one entry point that read raw superglobal input (e904a07d9)
- Add the filter-field guard to 1.5 (17bedf0a0)
- Make the filtered /names and /ids routes work on PHP 8 (c35b54599)
- Vet only request filter keys, not PHP-built ones (78633f3c7)
- Compile an uncompilable filter to 1=0, as 1.6 does (ac9e68da5)
- Stop a closed session naming a sender that is already dead (919665769)
- Read multicast service settings by name, not by position (cb2901992)
- Read the other services' settings by name too (9fec3c224)
- Initialise MasterIDs before reading it (b9ea2167c)
- Say string, which is what group tasking returns (3149aa3a2)
- Make the str_contains() polyfill agree with the function it replaces (4531858c3)
- Stop the installer reporting failures on a successful upgrade (e4e5b806c)
- Resolve the DB unit to one name instead of three (82a6a0b5d)
- Send a split partition as one stream instead of one sender per chunk (cae235745)
- Collect the chunks of a split partition for multicast (62ae16e8e)
- Send multicast on the interface the node's address actually routes over (59c2954a2)
- Skip a multicast session whose image is gone instead of killing the daemon (d68ba04f6)
- fix(web): stop isLoaded() gates poisoning association writes (1.5 port) (c5affc40d)
- Say the interface mismatch once, not every tick (1deba033d)
- Add isDirty() to stop assocSetter() re-diffing untouched associations (725c5a75f)
- Say what the storage node Interface field is for (12a6fc4a5)
- Merge branch 'dev-branch' into isdirty-query-reduction-dev (8eaafb137)
- Add isDirty() to stop assocSetter() re-diffing untouched associations (#918) (fd76e7616)
- ci: add push-triggered stub delegating to fog-workflows version check (e2f0da997)
- fix(schema): let the install token deploy a schema on an upgrade (1.5 port) (041bd38b5)
- fix(service): let the supervisor actually reap and re-fork its child (85a7a13a5)
- chore: disable FOG_VERSION check automation (self-triggering loop bug) (97fb5b61d)
- refactor(githooks): extract FOG_VERSION math into a standalone script (8a311fa16)
- fix(service): make daemon failures visible and halve recovery latency (ca63f9d11)
- fix(githooks): exclude the bot's own fixup commits from FOG_VERSION's count (b1ff09ab4)
- fix(githooks): anticipate the fixup commit's own +1 instead of excluding it (d26b9a6e7)
- docs: link Version Sync Automation doc from the versioning section (68c33f418)
- docs: fix Version Sync Automation permalink format (e01c156e0)
- refactor(githooks): make fog-version.sh a pure compute, add apply script (2c64c7fea)
- feat(githooks): skip apply-fog-version.sh entirely when nothing drifted (6db1f7f7a)
- docs: add current-version badges for stable/dev-branch/working-1.6 (f978ef43d)
- Dispatch getPartitions() on the instance, not statically (d8f46c450)
- fix(service): bound the daemon DB read timeout (cfbb131b4)
- fix(db): bound the web tier's DB read timeout too (99980fb9b)
- fix(service): harden killTasking()/isRunning() against a dead process (266ba64cc)
- fix local githook (d1824d9ec)
- fix local precommit (d91d80cb2)
- Adjust version display in readme (15d376930)
Closed Issues Since Last Release
- 1.5 killTasking()/isRunning() throw on an already-exited process (PHP 8); 1.6 already hardened (#945)
- Daemons hang indefinitely on a wedged MySQL: no read timeout, unit stays "active" doing nothing (#944)
- Sweep $databaseFields for columns created by a later schema migration (#928)
- working-1.6: upgrade from any released version deadlocks — schema deploy needs login, login needs schema 275 (ngmGraphColor) (#927)
- Service_persist() can never reap its child: SIGCHLD is SIG_IGN, so waitpid() always fails and the re-fork path is dead code (#917)
- Storage node Interface setting is ignored by multicast (msInterface written, never read) (#908)
- Multicast daemon child exits silently when a queued session's image row is gone (#907)
- Multicast silently skips Split 200MiB partition files (dNpM.img.NNN) (#898)
- Multicast of Split 200MiB images sends only the first chunk of each partition (#897)
- 1.5: every LDAP login on a non-AD directory enumerates the entire group subtree (#896)
- Deleting a snapin orphans its tasks and leaves queued snapin jobs stuck forever (#895)
- LDAP plugin has no LDAPS certificate-verification control, and the failure looks like an unreachable server (#893)
- 1.5: LDAP nested-group setting is unreachable on any install predating the feature (no plugin schema migration path) (#892)
- LDAP: every no-match login enumerates the entire group tree (#891)
- checkcredentials.php returns HTTP 429 when rate limited, which may hide the #!rl body from FOS (#890)
- management/other/index.php fatals when requested directly (#889)
- Saving FOG configuration warns on an uninitialised $items (#888)
- LDAP: every sign-in logs a full exception dump from a second unbind (#887)
- LDAP: association tabs on the LDAP Group page never show a target as associated (#886)
- LDAP: deleting a user, role or user group leaves orphan plugin rows (#885)
- LDAP: resolve nested/transitive group membership (#884)
- LDAP: map directory groups to FOG roles and user groups (#882)
- Bug: Multicast task not killing itself after finishing task. (#820)
- Multicast with multiple Storage Nodes (#815)
- The "Accesscontrol" rule is missing in the Access Controls plugin. (#750)
- multicasting do not wrok (#728)
- User Tracker report producting out-of-memory error (#700)
- Stop udp-sender processes when canceling a session. (#523)