Repository navigation
Feat/2026.14.4 - #31
Merged
Merged
Conversation
Long image tags, mount paths and lists of containers made the resource tables wider than the page. They now use fixed column widths and wrap inside each column.
… as task, policy from an update - Store search matches every word in any order and case, and treats dashes, dots and underscores as spaces. It ranks in the database (the app's own name first, then ids, then summaries) instead of sorting the first 500 matches by name, which could drop the app you typed when many summaries matched. - The Store says when a package list failed to sync, or has not been downloaded because no machine uses it, instead of an empty tab. An admin can press Sync now (POST /api/v1/catalog/sync/). - An app's page has Save as task beside Install..., which saves the task and opens it in the task editor. - Apps > By update has a Policy... button on each row and for the selected rows. A Linux package becomes an app rule, and a Windows update turns on patching for its classification.
…llouts
A playbook can declare inputs in the same shape as a task's inputs:.
Each step maps them onto its task's inputs with ${{ inputs.x }}
references, and a task input with the same id as a playbook input gets
its value without a mapping.
Values come from whoever runs the playbook:
- an automation (Automation.inputs, for a task or a playbook);
- a rollout (inputs in the start request, for a task or a playbook);
- a task that calls it inline with type: playbook and params.inputs,
whose values may refer to the calling task's own inputs.
Auto-enrolment has nobody to fill inputs in, so a playbook can only
auto-enrol when every required text input has a default. The inputs
are validated when the playbook is saved, and also when it is
imported or exported as community YAML.
…'s inputs Resolving an inline playbook's steps passed the deploy request's raw inputs dict as the values to substitute. A key named like a step's task input, even one the calling task does not declare, replaced the value the playbook had resolved and validated for that step. Only the playbook's resolved values are substituted now. The calling task's own inputs are already substituted into the playbook reference, and checked against its declarations, before expansion.
…hem in rollouts and automations
QA-28 gave the server playbook inputs, per-step mappings, automation.inputs and
rollout inputs; nothing in the UI could produce any of them, so the feature was
reachable only from a shell.
The declared-inputs form the deploy dialog already had is now shared:
inputsFormMount/inputsFormRead in vigil-pickers.js take a container and starting
values, which is what the rollout start dialog and the automation's Inputs
dialog both need. The playbook editor keeps its declarations in _blInputs and
posts them; the step inspector writes a task's declared inputs onto the step
under the key the API parses; the automation editor stores values for the picked
target's declared inputs and keeps the old per-action override editor as
'Advanced: override action params'.
The editor's Inputs note had to be wrapped in {% verbatim %}: the literal
${{ inputs.<id> }} is Django template syntax to the parser, and the render test
in test_inputs_ui.py is what keeps it that way.
The topology view (QA-31/QA-32) needs what a host has never told us: its interface addresses, what it listens on, and which machines it talks to. Only Host.ip_address, container ports and the firewall existed before. The agent collects a network block every 5 minutes and rides it on the check-in under the same absent-means-keep-the-last-snapshot contract as the other optional collectors. Socket enumeration needs root on macOS, so an AccessDenied ships the interfaces it did get with partial: true rather than dropping the whole block. Connections are aggregated on the host they talk to, counting on the local port for inbound sessions — an inbound aggregate keyed on the ephemeral remote port would never count past one. The server keeps one HostNetwork row per host, clipped and validated on the way in (addresses, ports, protocol and direction whitelists, list caps) so a broken or hostile agent cannot fill the database through these lists.
…s and links GET /api/v1/hosts/topology/ gives the topology page everything it draws, for the hosts the user can see: - sites and tags; - IPv4 subnets the hosts share; - per host: its addresses and primary IP, listening ports (marked public when they bind more than loopback), a firewall summary, stacks with their containers and ports, and its busiest destinations outside the fleet; - unmanaged devices with an IP; - links between hosts and devices, built from each host's connections. The same connection seen from both ends counts once. The number of queries does not grow with the number of hosts.
…ernet node and tag labels stay clear
…t dialog lays out, Save as task names the task
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.
Summary
/api/v1/tasks/editor-templates/./api/v1/hosts/topology/endpoint returns hosts, addresses, ports, firewalls, stacks and links.Notes
Test plan