Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
126 commits
Select commit Hold shift + click to select a range
c45ed58
Agent enrollment and authenticated channel for fog-agent
mastacontrola Sep 3, 2026
6c81701
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 3, 2026
7acf137
Pending Agents page, and two gates the first commit missed
mastacontrola Sep 3, 2026
0cfcf64
Agent certificate renewal and enrollment tokens
mastacontrola Sep 3, 2026
09e5779
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 3, 2026
a8b673b
First capability: desired state, results, and the hostname block
mastacontrola Sep 3, 2026
667600b
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 3, 2026
7b8f4d2
Agent: give agent-created hosts the default modules; clear the mint form
mastacontrola Sep 3, 2026
db8ee07
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 3, 2026
17ee861
Agent: taskreboot capability and the reboot policy blocks
mastacontrola Sep 3, 2026
290ebb7
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 3, 2026
7980625
Agent: a certificate-bound agent request is a machine request
mastacontrola Sep 3, 2026
1da3999
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 3, 2026
9618f9d
Agent: snapins as payload-only software, shared with the legacy client
mastacontrola Sep 3, 2026
13cc333
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 3, 2026
e449c58
Agent snapins: per-snapin return-code table, status column, TEXT details
mastacontrola Sep 3, 2026
65cf3ed
Regenerate the schema manifest at 417
mastacontrola Sep 3, 2026
0c5228b
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 3, 2026
5bf9f24
Snapin form: say the default return codes are Windows codes
mastacontrola Sep 3, 2026
45eff01
Software management: desired-state packages for the agent, Chocolatey…
mastacontrola Sep 3, 2026
53e804b
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 3, 2026
98407ce
Schema 419: seed the software module by name, its global switch, two …
mastacontrola Sep 3, 2026
8ffd95d
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 3, 2026
68ae1ef
Agent software result route: certificate gate, not a user permission
mastacontrola Sep 3, 2026
e5c2286
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 3, 2026
c20fd76
Software: Chocolatey bootstrap settings, schema 420
mastacontrola Sep 3, 2026
0e1fa02
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 3, 2026
e42ab9c
Agent: power capability, schedules and on-demand actions
mastacontrola Sep 3, 2026
0136201
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 3, 2026
1b831e8
Legacy client info: skip the software module; boot file rows through …
mastacontrola Sep 3, 2026
970c0bc
Agent protocol: the desired state rides the poll answer
mastacontrola Sep 4, 2026
0af913c
Agent: one result route, item reports dispatched by capability
mastacontrola Sep 4, 2026
cd1bd33
Agent: snapin/{id}/file becomes payload/{capability}/{id}
mastacontrola Sep 4, 2026
936040c
Tests: no /agent/v1/ path names a data-model noun
mastacontrola Sep 4, 2026
7c32426
Agent facts: hardware inventory and installed software, schema 421
mastacontrola Sep 4, 2026
510dc52
Poll answer states the fact gate, so the agent can obey it
mastacontrola Sep 4, 2026
de46e20
Installed software: a host tab and a fleet report
mastacontrola Sep 4, 2026
47f4d6e
Inventory: read the agent's bare-MB mem value, not just legacy KB
mastacontrola Sep 4, 2026
801dd18
Merge remote-tracking branch 'origin/working-1.6' into feat/agent-enroll
mastacontrola Sep 4, 2026
e77b5ba
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 4, 2026
47443e6
Agent 401s say why, and formatByteSize picks the unit by magnitude
mastacontrola Sep 4, 2026
871a08c
Merge branch 'fix/export-column-count' into feat/agent-enroll
mastacontrola Sep 4, 2026
31ef692
Agent and return-code columns reach the export pages too
mastacontrola Sep 4, 2026
1d1b29e
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 4, 2026
13e4ed0
formatByteSize is documented as the string it returns, and the report…
mastacontrola Sep 4, 2026
e087828
Merge remote-tracking branch 'origin/working-1.6' into feat/agent-enroll
mastacontrola Sep 4, 2026
82386e2
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 4, 2026
a974fe8
User tracking as sessions, schema 422 (design 0008)
mastacontrola Sep 4, 2026
8506fbd
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 4, 2026
df4deef
Sessions: one clock, or a duration is nonsense
mastacontrola Sep 4, 2026
d19a511
Sessions report: the same clock, a third time
mastacontrola Sep 4, 2026
ad96bb6
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 4, 2026
285f1da
Directory membership as an observation, schema 423 (design 0009)
mastacontrola Sep 4, 2026
389d503
A stale schema must answer the agent API, not redirect it
mastacontrola Sep 4, 2026
925b0b8
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 4, 2026
775245b
Directory: FOG moves the computer object, the machine does not
mastacontrola Sep 4, 2026
e2bee8c
Directory: say what the bind password storage really is, and read it …
mastacontrola Sep 4, 2026
70d55d3
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 4, 2026
a244538
Directory: the row lookup called a method that does not exist
mastacontrola Sep 4, 2026
cb8843b
Tests: every method called through getClass() has to exist
mastacontrola Sep 4, 2026
da20239
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 4, 2026
ebaae55
Name the class at the call site instead of fetching it by string
mastacontrola Sep 4, 2026
3e5dd2a
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 4, 2026
a56bd3a
getclass-to-new: an argument count of three is not the properties form
mastacontrola Sep 4, 2026
9da206f
Name the class at the call site instead of fetching it by string
mastacontrola Sep 4, 2026
5c4083c
Merge refactor/getclass-to-new into feat/agent-enroll
mastacontrola Sep 4, 2026
4232aa5
Backslash-prefix the built-ins in getclass-methods-exist
mastacontrola Sep 4, 2026
f37024e
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 4, 2026
7ebdcd2
getclass-methods-exist: anchor the scan on files, not on call sites
mastacontrola Sep 4, 2026
5af60fe
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 4, 2026
8d6bf6b
Drop the getClass PHPStan extension; the literals are gone
mastacontrola Sep 4, 2026
7c43066
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 4, 2026
913784d
Count the ten new schema steps in the baselined $this pattern
mastacontrola Sep 4, 2026
9773f5d
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 4, 2026
d68014d
Printers: record what a host actually has (design 0010, schema 426)
mastacontrola Sep 4, 2026
29c12a2
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 4, 2026
81cb7db
Printer Deployment report, and the paIsDefault type-change fallout
mastacontrola Sep 4, 2026
8e1f603
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 4, 2026
b75a378
getSetting() returns null for a missing key; say so and cast at the u…
mastacontrola Sep 4, 2026
2c4e781
Baseline the eight folded assertions in the two agent test files
mastacontrola Sep 4, 2026
4effee3
Record the eleven constraints this branch adds in the rehearsal baseline
mastacontrola Sep 4, 2026
4957881
Carry the printer tables through the three baselines
mastacontrola Sep 4, 2026
8888e11
Seed paIsDefault with a value the column can now hold
mastacontrola Sep 4, 2026
e7474ef
Printers: the desired state and the result (design 0010 §5, schema 427)
mastacontrola Sep 4, 2026
c06fe08
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 4, 2026
26c9a70
Carry schema 427 and the printer set tests through the baselines
mastacontrola Sep 4, 2026
d390380
Stop counting $this in schema.php, so adding a step is not a merge co…
mastacontrola Sep 4, 2026
71a69a7
Printers: a result's message arrives in `details`, like every other item
mastacontrola Sep 4, 2026
de7d547
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 4, 2026
aee2ba8
Directory: the agent joins, and the credential stops being ambient
mastacontrola Sep 4, 2026
bb6db0c
Wake relay: reach a subnet FOG owns no machine on
mastacontrola Sep 4, 2026
0ef4a93
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 4, 2026
6086662
Agent: report Secure Boot posture as a fact
mastacontrola Sep 5, 2026
9499c70
Host page: show the agent's check-in, not the legacy client's
mastacontrola Sep 5, 2026
7b443fc
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 5, 2026
258db29
SecureBootFacts: the audit line said "Secure Boot" twice
mastacontrola Sep 5, 2026
fe5c6e7
Host info card: show when the host last checked in
mastacontrola Sep 5, 2026
cd96ab0
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 5, 2026
93aa8d9
Agent Activity: read the agent's audit trail by host
mastacontrola Sep 5, 2026
0797226
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 5, 2026
81618a8
Info card: one-click tasking, and no more "Primary Group"
mastacontrola Sep 5, 2026
7b207c2
Agent Activity: the expanded host was stuck at ten rows
mastacontrola Sep 5, 2026
5d2d2ec
Quick task buttons: filled, because outline fails AA in dark mode
mastacontrola Sep 5, 2026
1509602
Merge remote-tracking branch 'origin/feat/agent-enroll' into feat/qui…
mastacontrola Sep 5, 2026
7c0c451
Catch the two baselines up with the agent work
mastacontrola Sep 5, 2026
5f86499
Merge pull request #1712 from FOGProject/feat/quick-tasking
mastacontrola Sep 5, 2026
e3296a9
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 5, 2026
22dc5ea
Confirm a quick task in a modal, not window.confirm()
mastacontrola Sep 5, 2026
62d26be
Merge pull request #1713 from FOGProject/feat/quicktask-confirm-modal
mastacontrola Sep 5, 2026
56a14d3
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 5, 2026
2e7562b
Agent Activity: group by host in the grid, and expand in it
mastacontrola Sep 5, 2026
9977339
Merge pull request #1715 from FOGProject/fix/agentactivity-rowgroup
mastacontrola Sep 5, 2026
74af35c
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 5, 2026
60b8a9b
Agent Activity: stop paging a grid whose unit is hosts
mastacontrola Sep 5, 2026
832e77e
Merge pull request #1716 from FOGProject/fix/agentactivity-paging
mastacontrola Sep 5, 2026
8738ea9
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 5, 2026
f2370b7
Display Manager goes; Auto Log Out is rebuilt for the agent
mastacontrola Sep 5, 2026
f8ed9fd
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 5, 2026
beda933
Rehearsal baseline: one fewer foreign key, because the table it point…
mastacontrola Sep 5, 2026
9d8cc1d
Host::getAlo() cached the first host's answer and gave it to every ho…
mastacontrola Sep 5, 2026
014635c
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 5, 2026
0cc989a
One module row with no tab took down the whole Global Module Settings…
mastacontrola Sep 5, 2026
2ba68a5
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 5, 2026
68ad677
The Software module gets the settings tab schema 419 promised it
mastacontrola Sep 5, 2026
c6ec659
Generated Files Sync: regenerate translations and PSR2 formatting (#1…
fog-workflows[bot] Sep 5, 2026
9e67e39
A module tab that is not wired end to end now fails the suite
mastacontrola Sep 5, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -483,10 +483,11 @@ reasoning and the rejected alternatives:
- **PHPDoc**: present on classes and methods (`@category`, `@package`, `@author`, `@license`, `@link`)
- **Static globals**: `FOGBase::$HookManager`, `FOGBase::$DB`, etc. — set once, shared everywhere
- **Method chaining**: `Page` and `FOGPage` use fluent interface
- **Class instantiation**: use `FOGBase::getClass('ClassName')` factory, not `new ClassName()` directly
- **Class instantiation**: `new ClassName()` with a `use` import. `getClass()` is
only for a class named by a **variable** (see below)
- **Translation**: `_('string')` for inline gettext; `$foglang['Key']` for pre-defined strings from `text.php`
- **Newer files**: `declare(strict_types=1)` at top; older files do not have this — don't add it retroactively
- **Avoid `new` directly**: use `FOGBase::getClass()` or `FOGBase::getManager()` as appropriate
- **`getManager()`**: still the way to reach a model's manager, unchanged

### Button color and alignment

Expand Down Expand Up @@ -596,7 +597,7 @@ badly — `ou` and `windowskey` become "Ou" and "Windowskey" without it.
## What NOT to Do

- Do not add `declare(strict_types=1)` to files that don't already have it
- Do not instantiate classes with `new ClassName()` where `FOGBase::getClass()` is the established pattern
- Do not call `getClass()` with a string literal -- write `new ClassName()`; `tests/getclass-literals.test.php` refuses it
- Do not use raw `$_GET`/`$_POST` — use `filter_input()` or the already-sanitized values
- Do not echo user data without `Initiator::e()`
- Do not remove hooks, events, or plugin integration points without explicit confirmation
Expand Down
1 change: 0 additions & 1 deletion bin/fk-lab-fixture.php
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,6 @@ function ex(\PDO $pdo, string $sql): int
'snapinJobs' => 'sjHostID',
'tasks' => 'taskHostID',
'hostAutoLogOut' => 'haloHostID',
'hostScreenSettings' => 'hssHostID',
'groupMembers' => 'gmHostID',
'snapinAssoc' => 'saHostID',
'printerAssoc' => 'paHostID',
Expand Down
Loading
Loading