610 Commits

Author SHA1 Message Date
Edward Sammut Alessi
e9b71f0ba9
fix(frontend): only show machine patches for currently visible machine
Only show patches for the currently viewed machine on the Patches tab of a clustered or unclustered machine.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-05-05 08:52:56 +02:00
Edward Sammut Alessi
a524554c74
fix(frontend): fix editing labels on machine class
Fix bug which was preventing editing labels for machine classes.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-05-05 08:32:22 +02:00
Edward Sammut Alessi
c14ee1019e
refactor(frontend): refactor all but the last tlist use of watch.setup
Refactor the final use cases of watch.setup (excluding TList) to be useResourceWatch. TList must be tackled on its own in #1534

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-05-04 18:49:20 +02:00
Edward Sammut Alessi
efbd089ffb
feat(frontend): add qol machine updates to omni frontend
Add some QoL updates for machine management to Omni frontend.

1. Add a copy machine UUID button to the cluster machine page
2. Add a toggle between hostnames and UUIDs to the machines list page (copy will copy what it sees, preference is saved)
3. Add kernel args tabs to machine and cluster machine pages, to allow editing kernel args. The "Update kernel args" button from machines list dropdown menu will now redirect to here instead of opening a modal.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-30 14:06:57 +02:00
Edward Sammut Alessi
718d61a6b4
chore(frontend): bump dependencies
Bump frontend dependencies

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-29 18:02:02 +02:00
Edward Sammut Alessi
d3592671ec
feat: download talosctl directly from factory
Download talosctl binaries from factory instead of Github

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-29 17:06:25 +02:00
Edward Sammut Alessi
b2671d08d0
refactor(frontend): create downloadfile helper
Create a downloadFile helper to stop repeating the anchor link creation logic

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-29 16:52:15 +02:00
Edward Sammut Alessi
dc9baca82f
refactor(frontend): refactor downloadtalosctl modal to new modal system
Refactor the DownloadTalosctl modal to the new Modal system.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-29 16:52:14 +02:00
Oguz Kilcan
06d8140d78
feat: add join token/talos version placeholders in installation media
InstallationMediaConfig can now use empty strings for talosVersion and joinToken, which resolve to the current stable version and default token at download time.

The create wizard adds "Automatic" options to the version and token dropdowns, and the download modal shows version/token/arch pickers for all presets.

Co-authored-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
Signed-off-by: Oguz Kilcan <oguz.kilcan@siderolabs.com>
Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-29 14:34:30 +02:00
Utku Ozdemir
f9dd849153
feat: introduce powered off machine state and power on support
Machines that were shutting down and then disconnect are now shown as "Powered Off" in the UI instead of being stuck in "Shutting Down" with a greyed-out unreachable state.

For machines managed by a static infra provider, shutting down a machine now prevents the provider from automatically powering it back on due to cluster allocation. The provider honors the shutdown request until the machine goes through a deallocation cycle, at which point the request is considered stale.

Intentionally powered-off machines are also excluded from the "disconnected machines" list on the frontend when destroying a cluster, to avoid them being force-destroyed.

The shutdown modal in the frontend now calls a new management API endpoint instead of the Talos API directly. The CLI gains \`omnictl machine shutdown\` and \`omnictl machine power-on\` commands.

Closes siderolabs/omni#1634.
Part of siderolabs/omni-infra-provider-bare-metal#103.

Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
2026-04-24 13:57:12 +02:00
Edward Sammut Alessi
921389a59c
fix(frontend): fix eula handling to prevent being stuck on /eula
If initial EULA request fails, we will show AppUnavailable instead of sending to /eula. If you navigate directly /eula and its already accepted, navigate away to the Home page.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-24 09:38:00 +02:00
Artem Chernyshev
725f41d4ee
fix: properly display service account expiration time in the UI
The old code was incorrectly picking the public key.

Fixes: https://github.com/siderolabs/omni/issues/2717

Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
2026-04-23 21:19:54 +03:00
Edward Sammut Alessi
c5a4310570
feat(frontend): add support modal to omni
Add a support modal to Omni, providing links to github issues, support, docs, community links, and office hours.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-23 15:46:42 +02:00
Edward Sammut Alessi
66383890b8
feat(frontend): show disks and devices in machines/machine page
Show disks and devices for machines in the machines/machine page, even for maintenance mode machines.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-23 15:21:01 +02:00
Edward Sammut Alessi
1e31079e4e
fix(frontend): fix indeterminate state for update extensions modal
Fix the indeterminate state for UpdateExtensions modal. It was never setting up the watch, so the information was not available. As part of this, refactored it to useResourceWatch and the new modal system and created stories for it. Also started moving refactored modals from views/modals into components/modals, as they are more of a component than a view anyway.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-23 14:56:36 +02:00
Edward Sammut Alessi
6d7e4f454e
feat(frontend): allow quickly switching between cluster machines
Allow quickly switching between cluster machines on the cluster machine page via a select dropdown. Reactivity was not working on most of the pages due to getContext only being checked once in setup, so had to fix a lot of things there.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-23 13:26:04 +02:00
Edward Sammut Alessi
c98b1187ea
fix(frontend): clear page state when keys are cleared
After clearing keys, use location.replace instead of router.replace to do a full page reload to clear any invalid key related state. This addresses an issue where user might see a blank screen if something breaks with their keys whilst still having a valid auth session. Usually an invalid auth session triggers a redirect to the auth provider, causing the same state reset. This also fixes a flakey test in e2e-talemu suite which was suffering from this.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-22 12:59:18 +02:00
Edward Sammut Alessi
f89955b43d
refactor(frontend): remove last use of <watch> component
Remove the last usage of the <Watch> component.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-22 12:40:58 +02:00
Edward Sammut Alessi
be67f710f8
feat: allow reader access to join token
Explicitly allow readers to read join tokens

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-21 16:28:32 +02:00
Oguz Kilcan
475e3660d7
feat: add Talos version end-of-support notifications and metrics
* Track machines running Talos versions approaching or past end of support relative to MinTalosVersion.
* Replace the config-driven non-ImageFactory deprecation notification with hardcoded constants and add two new notifications (approaching end of support, end of support reached) with corresponding Prometheus metrics.
* Add startup validation hooks (currently disabled) that will refuse to start when unsupported machines are detected.
* Fix frontend notification namespace from Default to Ephemeral.

Signed-off-by: Oguz Kilcan <oguz.kilcan@siderolabs.com>
2026-04-20 17:11:49 +02:00
Edward Sammut Alessi
cc0adefcad
fix(frontend): select default join token in installation media wizard
Select the default join token in the installation media wizard. Also bump tsconfig to ES2023 (which is baseline widely available) to get access to .toSorted().

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-20 09:41:14 +02:00
Oguz Kilcan
0987fa9e8f
chore: prepare omni with talos v1.13.0-rc
Prepare omni for upcoming talos version 1.13

Signed-off-by: Oguz Kilcan <oguz.kilcan@siderolabs.com>
2026-04-17 16:58:24 +02:00
Edward Sammut Alessi
a3fd0b1c4c
feat(frontend): allow re-saving omni support bundle
After download completes on the Omni support bundle, the user may click save again to save the bundle again without having to initiate the download again. This helps incase you accidentally click out of the first save, or deleted it, or anything like that. If you want a fresh bundle, you can still get that when you close & re-open the modal.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-16 15:19:52 +02:00
Edward Sammut Alessi
dc5e289c1f
feat(frontend): show notifications in the frontend
Show Omni notifications in UI as a dismissable banner

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-15 18:42:20 +02:00
Edward Sammut Alessi
9fd6e9e14b
fix(frontend): open external eula link in a new tab
Open external EULA link in a new tab with _blank

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-15 16:57:05 +02:00
Edward Sammut Alessi
488b020b2e
feat: add more filters to audit logs
Add multiple new filters to audit logs. Through the UI, there will be a generic search box and the ability to sort columns. Through the CLI, there will be support for the same plus also direct filters for event_type, resource_type, resource_id, cluster_id, and actor.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-15 11:03:54 +02:00
Utku Ozdemir
590ea2e370
feat: add per-key creation and last-active tracking for service accounts
Add creation timestamps and per-key last-active tracking to service account key listings. The `omnictl serviceaccount list` command now shows KEY CREATED and KEY LAST ACTIVE columns for each public key, alongside the existing SA-level LAST ACTIVE.

A new PublicKeyLastActive resource tracks per-key usage. The activity interceptor now extracts the signing key fingerprint from the auth context and records last-used timestamps per key, with independent debouncing. The ServiceAccountStatusController aggregates this data into the service account status for display.

A cleanup controller removes PublicKeyLastActive resources when their corresponding public key is torn down.

Closes: siderolabs/omni#2661
Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
2026-04-14 21:12:30 +02:00
Edward Sammut Alessi
186f02b45f
chore(frontend): bump frontend dependencies
Bump all frontend dependencies

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-14 11:06:46 +02:00
Edward Sammut Alessi
572162547a
feat(frontend): update talos version text on installation media wizard
Update the text shown when selecting the Talos version on the Installation Media wizard to be the latest recommended version, rather than the latest.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-14 09:02:44 +02:00
Edward Sammut Alessi
cad3713552
feat: implement eula guard for omni
Implement a guard for Omni to prevent usage until users accept an EULA through the UI or a startup flag.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-13 16:49:51 +02:00
Oguz Kilcan
0d92cc0d0f
feat: allow force destroying machine requests
Machine requests are now created without a controller owner, allowing operators and admins to teardown stuck or unwanted requests directly. The controller replaces destroyed requests automatically to maintain the desired machine count. Includes a migration to clear ownership on existing requests.

Signed-off-by: Oguz Kilcan <oguz.kilcan@siderolabs.com>
2026-04-13 10:35:35 +02:00
Justin Garrison
507becf140
feat: toggle info buttons if already opened
Changes the behavior of info buttons to close the panel if it's already
open

Signed-off-by: Justin Garrison <justin.garrison@siderolabs.com>
2026-04-13 09:52:00 +02:00
Edward Sammut Alessi
0773827cca
fix(frontend): disable workload proxy checkbox if disabled on instance
If Omni is running with workload proxying disabled, then disable the checkbox to enable workload proxying on the frontend.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-10 14:18:06 +02:00
Edward Sammut Alessi
f0dd48f374
feat(frontend): place machine labels on new line for cluster scale/create
When creating or scaling a cluster, for the list of machines keep the labels on a new line, as in the main machines page.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-01 11:06:12 +02:00
Edward Sammut Alessi
5edcef1fb2
refactor(frontend): drop the views/cluster folder
Drop the views/cluster folder and move all children up to views/

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-03-27 19:45:16 +01:00
Edward Sammut Alessi
65c6b80472
refactor(frontend): drop the components/common folder
Drop the components/common folder and move all children up to components/

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-03-27 19:45:15 +01:00
Edward Sammut Alessi
cc71b5b52d
refactor(frontend): drop the views/omni folder
Drop the views/omni folder and move all children up to views/

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-03-27 19:45:03 +01:00
Edward Sammut Alessi
2bb49a9542
fix(frontend): fix useclusterpermissions not reacting to cluster changes
Fix useClusterPermissions to react when it's cluster parameter changes

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-03-27 16:37:07 +01:00
Artem Chernyshev
6efb0f2f0a
feat: support Kubernetes manifests in the cluster templates
Fixes: https://github.com/siderolabs/omni/issues/2172

Leverage kubernetes manifest resources and expose them through cluster
templates.

Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
2026-03-26 14:10:14 +03:00
Edward Sammut Alessi
73f3079fcc
fix(frontend): hide machine tutorial card if we have machines
Currently we erroneously show the machine tutorial card if we have machines in an instance but they get filtered out for some reason. This is not necessary as the user has already been able to have machines join his instance.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-03-26 00:02:23 +01:00
Edward Sammut Alessi
fe7c1beba7
fix(frontend): fix ui error on cluster all nodes page
Fix a UI error on the cluster all nodes page and add E2E tests to validate that and other cluster specific sidebar pages.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-03-25 22:44:30 +01:00
Edward Sammut Alessi
e46d9420b0
fix(frontend): prevent invalid auth states in frontend
- Update interceptor to invalidate keys if a signed request is rejected with a 401 whilst having keys stored in the frontend.
- Update some k8s proxy response codes from 401 to more correct ones 500/403 for the relevant cases

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-03-25 14:28:16 +01:00
Edward Sammut Alessi
b720fc307c
fix(frontend): prevent saving unconfirmed keys
Update public key confirmation logic to cater for a situation where an auth0 login was required, but keys were saved before being confirmed.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-03-25 14:23:53 +01:00
Edward Sammut Alessi
7cb5ba3c2a
feat(frontend): introduce browsable audit logs in the frontend
Introduce browsable audit logs in the frontend.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-03-24 13:40:06 +01:00
Edward Sammut Alessi
2b39af7252
refactor(frontend): abort useresource get/list queries on unmount
Abort useResourceGet and useResourceList queries when components unmount.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-03-24 13:39:54 +01:00
Utku Ozdemir
26798512e8
chore: bump deps, rekres, Talos 1.12.6, Kubernetes 1.35.3
Bump all dependencies. Update default Talos version to 1.12.6 and default Kubernetes version to 1.35.3.

Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
2026-03-24 10:33:53 +01:00
Edward Sammut Alessi
53f94596a8
fix(frontend): address login race conditions
Bring back router guards to block entering pages that have certain auth requirements, and wait for nextTick when setting local storage based items due to pre flush syncing behavior.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-03-23 14:23:55 +01:00
Artem Chernyshev
ada0360837
feat: add a way to sync Kubernetes manifests in Omni
Manifests support two modes:
- `FULL` - Omni will keep the manifest in sync always.
- `ONE_TIME` - Omni will apply the manifest only if it doesn't exist. If the manifest is removed by hand and then changed in Omni it will be applied too.

Manifests are applied using service side apply, Omni now has three inventories: `omni-internal-inventory`, `omni-user-inventory` and `omny-sync-one-time`:

- User inventory will be used for user managed manifests.
- Internal one will be used for the manifests which are created by Omni controllers (workloadproxy, advanced healtcheck service).
- One time inventory is used with NoPrune enabled. If the manifest is
  applied it's just removed from the list of applied manifests: that
  ensures that manifests changes are not going happen.

Manifests also support setting namespace to all namespaced resources. It might be useful for the huge manifest files which are supplied without the namespace (similar to `kubectl apply -n namespace -f manifest.yaml`).

Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
2026-03-23 15:29:49 +03:00
Edward Sammut Alessi
3b2f6daa6d
feat(frontend): refactor watch to allow watch singletons outside of components
Refactor Watch class to use effectScope instead of component lifecycle (e.g. onMounted). This allows us to register listeners outside of components, and as a result create singletons for certain resources. In this case, useFeatures is now a singleton. So we only listen to features once, across the entire app, no matter many times we request for features.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-03-20 18:03:32 +01:00
Edward Sammut Alessi
027ff314c6
fix(frontend): respect embedded discovery checkbox in cluster create
During cluster creation the embedded discovery checkbox was not being respected. This fixes it to correctly use v-model, and simplfies the code a bit by reactively computing enabled/disabled staff off of useFeatures.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-03-20 17:10:26 +01:00