Skip to content

Fix/2026.14.2 - #29

Merged
ConnorHaggerty merged 9 commits into
mainfrom
fix/2026.14.2
Oct 11, 2026
Merged

ConnorHaggerty merged 9 commits into
mainfrom
fix/2026.14.2

Conversation

@ConnorHaggerty

@ConnorHaggerty ConnorHaggerty commented Oct 11, 2026 •

Copy link
Copy Markdown
Member

Fixes

  • Saving a new stack in the editor works again. Since 2026.14.1 it was sent without its host and name, and the server answered "Not found".
  • "Update container" re-runs a compose container under its own project. Before, a Portainer stack (/data/compose/49) became project "49" and failed with "container name already in use".
  • Static files get content-hashed names in the image, so a cache in front of Vigil (Cloudflare keeps them 4 hours) can no longer serve last release's scripts with the new page.
  • An admin of one site does not find another site's update policies in search.

Stack editor

  • Edit button next to each managed stack's name on the Containers page.
  • Live name check as you type, and the server refuses a running compose project's name.
  • X to close; the header no longer lets content show above it; scrolling past the end stays in the editor.
  • Show values reports errors where you clicked, and only appears when there are saved values.

New

  • Search everything: a sidebar page and Ctrl+K over hosts, containers, stacks, apps, CVEs, tasks, playbooks, policies and firing alerts, each scoped like its own page.
  • Host tags: a combobox that lists existing tags, creates new ones, and saves each pick at once. Policy "Hosts tagged" gets a Pick button.
  • Every TOTP confirmation uses the one dialog (deploy, rollouts, host approval, playbooks, policies, rebuild, disabling TOTP).

update_container re-upped a compose service without -p, so compose named
the project after the folder. For a Portainer stack (/data/compose/49) that
made it "49", the running container belonged to another project, and the
re-up failed on its container_name: 'The container name "/searxng" is
already in use'. Pass the project from the container's label, as the stack
actions already do.
A stack Vigil manages gets an Edit button next to its name on the
Containers page, running or down. The Managed by Vigil bar above now holds
only New stack and the managed stacks with no row on the page (saved, never
deployed), instead of a chip for every stack.
Scripts loaded from fixed URLs like /static/js/vigil-stacks.js, so a cache
in front of Vigil (Cloudflare's browser TTL is 4 hours) served the 2026.14.0
script with the 2026.14.1 page after an upgrade. The old script still built
the modal stack editor, so the full-screen editor, its YAML highlighting and
the blank new-stack form never showed.

The image now sets VIGIL_HASHED_STATIC=1: collectstatic writes hashed copies
(manifest storage) and pages link those, served as immutable. Source-map
comments in the vendored libraries are left alone; they name .map files
Vigil does not ship. Tests and source checkouts keep plain names.
…u type, and closes with an X

A new stack written in the editor was sent without its host or name since
the Git source picker went in (4956962), so the server refused every one.

- The name is checked as you type: lowercase letters, digits, _ and -, not
  a stack Vigil already has on the host, and not a compose project already
  running there. Save waits until it is valid.
- The server refuses a running project's name too: deploying under it would
  take over that project's containers. A project with no containers left
  frees its name.
- An X at the end of the editor bar closes it (asking first if unsaved).
- The bar reaches up through the page's top padding, so nothing scrolled
  past it shows above it.
- Scrolling past the end of the compose file stays in the editor, and the
  colored text and line numbers always have room to follow the textarea.
- Show values says what happened next to where you clicked: an error, no
  saved variables, or how many values it shows. It only appears when there
  are saved values.
Eight places asked for the code their own way: a field on the deploy,
rollout start and enrolment screens, a whole modal for rollout halt and
resume, fields on the policy and playbook pages, one in the rebuild dialog,
and the browser's own prompt() to turn TOTP off. All now open totpPrompt,
after the form's own checks pass, titled for what it confirms.

totpPrompt takes a title, and Escape closes only the dialog, not the modal
it was opened over. First-run setup keeps its field: there the code proves
the authenticator was enrolled. With one dialog, a hardware key can later
be offered in one place.
The host drawer had a text field and a Pick button that only filled the
field: a pick saved nothing until Add was pressed, and two picks saved as
one tag "a, b". The field is now a combobox: it lists the existing tags
with how many machines carry them, offers "Create tag" for a new name,
refuses Vigil's own inventory tags (os:, pkg: ...), works from the keyboard,
and saves each pick at once.

The update policy's "Hosts tagged" field gets the Pick button every other
tag field has, including inventory tags.
Ported from Jackil's Search Everything: a Search page in the sidebar with
one box, and Ctrl+K (or / when not typing) jumps to it from anywhere.
GET /api/v1/search/?q= searches hosts (name, OS, IP, tags), containers
(name, image), stacks, apps (one result per name with its host count),
open CVEs (grouped, worst severity first), task definitions, playbooks,
update policies and firing alerts, at most 8 of each.

Each kind is filtered the way its own page is: hosts and everything on
them by site scope, stacks and update policies for admins only, tasks the
user's own plus community ones. A result opens where it lives: a host's
monitor, a container's host, the stack editor, the task, playbook or
policy editor.
… policies

A policy belongs to one site, but the search's admin check passes for a
user who is admin in any site, so a West admin found Lab's policies by
name. Narrow them to the sites the user can see, and test that a one-site
admin finds nothing of another site's hosts, containers, stacks, alerts or
policies.
@ConnorHaggerty
ConnorHaggerty merged commit df18983 into main Oct 11, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant