Repository navigation
Remove the group page's push-to-all controls (ADR 0038 decision 10, last step) - #1651
Merged
Merged
Conversation
… 10, last step) #1647 marked these deprecated and said they would go in a later release. fog-plugins #36 is what made that release this one: `location` and `ou` each shipped a group tab doing the same push, so removing only the core cards would have left two plugin tabs doing the exact thing the ADR removes. With both converted to HOST_MASSEDIT_*, nothing is left depending on a group-page push. SEVEN controls go, not the six that carried a notice. The group Active Directory card pushes five `hosts` columns through Group::setAD() and was missed when the notices were added in #1647 -- an omission this found by looking for what WRITES to members rather than for what was marked. Removed: the Image tab and its post handler, the Active Directory tab and its post handler, the Printer Configuration card and the printerLevel push, the Display Manager / Auto Logout / Enforce Hostname cards and their pushes, and the General tab's kernel, kernel arguments, init, primary disk, product key and both exit-type fields. Nothing is lost, and that was checked rather than assumed: mass edit already carries image, kernel, kernelArgs, kernelDevice, init, biosexit, efiexit, productKey, printerLevel, useAD, ADDomain, ADOU, ADUser, ADPass, enforce, and the row-backed resolution and autologout. The General tab keeps the group's OWN fields -- name, description and order. Those are not pushed anywhere. Its no-clobber alert goes with the pushes, because there is no longer anything on the form that could clobber. Note that `groups`.`groupKernel`, `groupInit`, `groupPrimaryDisk` and `groupBuilding` are now written by nothing and read by nothing -- a grep finds only the field map itself. They were always write-only; the push went to `hosts`, never to the group. The columns and their API surface are left alone here rather than dropped in the same change. Power Management stays. It creates tasks rather than copying a value, which is the distinction the whole decision turns on. The deprecation gates from #1647 are INVERTED rather than deleted: "the notice is present" and "the control is absent" are statements about the same migration, and the second is the one worth keeping. Two of the new checks pin OVER-deletion -- groupPowermanagement surviving, and the grant tabs still rendering -- because a sweep that took too much would otherwise pass as success. Proven by mutation, each turning it red: restoring the notice, restoring groupImage(), leaving a dispatch arm without its handler, letting setDisp creep back into groupModulePost(), deleting groupPowermanagement, gutting a grant tab, and leaving a JS handler bound to an id nothing renders. Full suite 300/300, phpstan clean on both configs, baseline unchanged and two dead private methods it flagged removed rather than baselined. The group page loses ~700 lines and its JS ~265. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0166dqQEjAs9fhqUw5zCjvxM
This was referenced Sep 2, 2026
This was referenced Sep 2, 2026
osiktech
pushed a commit
to osiktech/fogproject
that referenced
this pull request
Sep 9, 2026
The units table went in with #PENDING because unit F's own commit could not know its PR number. It is FOGProject#1651. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0166dqQEjAs9fhqUw5zCjvxM
osiktech
pushed a commit
to osiktech/fogproject
that referenced
this pull request
Sep 9, 2026
The webroot has carried the mass edit plugin seam since FOGProject#1628, and the Group page's push-to-all controls have been gone since FOGProject#1651 -- but the plugins laid beside it came from v1.6.23, cut before fog-plugins FOGProject#35, FOGProject#36 and FOGProject#37 landed. So a deployed server had location and ou still registering their group tabs, no plugin filling the mass edit's Plugins tab (which hides itself when empty, so it looked like the feature did not exist), and the retired persistentgroups still on disk. v1.6.24 is those three merged changes, and this is the pin that lets an install lay them. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0166dqQEjAs9fhqUw5zCjvxM
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
#1647 marked these deprecated and said they would go in a later release. FOGProject/fog-plugins#36 is what made that release this one —
locationandoueach shipped a group tab doing the same push, so removing only the core cards would have left two plugin tabs doing the exact thing the ADR removes. With both converted toHOST_MASSEDIT_*, nothing is left depending on a group-page push.Seven controls, not the six that carried a notice
The group Active Directory card pushes five
hostscolumns throughGroup::setAD()and was missed when the notices were added in #1647. This found it by looking for what writes to members rather than for what was marked.Removed:
imageuseAD,ADDomain,ADOU,ADUser,ADPassprinterLevelpushprinterLevelresolution(row-backed)autologout(row-backed)enforceNothing is lost, and that was checked rather than assumed — mass edit already carries every one of those.
The General tab keeps the group's own fields: name, description, order. Those are not pushed anywhere. Its no-clobber alert goes with the pushes, because there is no longer anything on the form that could clobber.
Power Management stays. It creates tasks rather than copying a value, which is the distinction the whole decision turns on.
One thing worth knowing
groups.groupKernel,groupInit,groupPrimaryDiskandgroupBuildingare now written by nothing and read by nothing — a grep finds only the field map itself. They were always write-only: the push went tohosts, never to the group. I've left the columns and their API surface alone here rather than dropping them in the same change.Proof
The deprecation gates from #1647 are inverted rather than deleted — "the notice is present" and "the control is absent" are statements about the same migration, and the second is the one worth keeping.
Two of the new checks pin over-deletion:
groupPowermanagementsurviving, and the grant tabs still rendering. A sweep that took too much would otherwise pass as success.Proven by mutation, each turning it red:
groupImage()setDispcreep back intogroupModulePost()groupPowermanagement(over-deletion)Full suite 300/300, phpstan clean on both configs,
phpstan-baseline.neonunchanged — the two dead private methods it flagged were removed rather than baselined.The group page loses ~1000 lines and its JS ~265.
Depends on FOGProject/fog-plugins#36 (merged).
🤖 Generated with Claude Code
https://claude.ai/code/session_0166dqQEjAs9fhqUw5zCjvxM