17776 Commits
Author SHA1 Message Date
Florent BEAUCHAMP 70b0824dc4 feat(backups): improve full mirror backup performances (#10537)
XO-3135 and XO-3134
2026-10-09 19:04:29 +02:00
Marie Garde 4a9d434559 feat(xo6): add emergency shutdown button host (#10412) 2026-10-09 08:42:23 +02:00
Alina D 341bd0301d feat(xo6/new-vm-form): allow resizing existing template disks when a … (#10359) 2026-10-08 20:13:29 +02:00
Pierre Donias 70be55528f fix(lite): do not reuse window.origin protocol and port when overriding master host (#9955)
When overriding the pool master with `?master=<host>`, XO Lite kept the page's
protocol and port and only swapped the hostname (e.g. `https://proxy:8443` +
`?master=192.168.1.10` → `https://192.168.1.10:8443`). Requests sent directly to
hosts also always used the page's protocol, regardless of the master's.

Everything now follows the XAPI connection (one commit each):

1. **Master override** (`xen-api.store.ts`): the value is parsed as a URL,
   `https://` by default, port and protocol allowed. An invalid value falls back
   to the default host instead of crashing XO Lite.
2. **RRD stats** (`xen-api.ts`, `getResource`): use the XAPI protocol.
3. **VM and host consoles**: `wss:` if XAPI is `https:`, `ws:` otherwise.
4. **Unreachable hosts check**: pings hosts with the XAPI protocol, so the
   certificates modal checks the right URLs.
2026-10-08 16:08:03 +02:00
Joris K 71ff8b0d24 feat(xo6/lite): add shortcut to focus the treeview search (#10492)
* feat(lite): add searchbar in the treeview

* add changelog and improvement

* feedback

* review feedback

* feat(xo6/lite): add shortcut to focus the treeview search

* add changelog

* added mac shortcut

* feedback
2026-10-08 16:03:37 +02:00
Florent BEAUCHAMP 33caeacb49 fix(nbd-client): better handling of reconnection (#10456)
* fix(nbd-client): better handling of reconnection

don't let a failure of an already remplaced trasnport impact the
current transport
2026-10-08 14:19:20 +02:00
Elise-F 854e5dbd89 fix(xo6): add missing condition to the detach job (#10543) 2026-10-08 13:48:27 +02:00
Pierre Donias c069b7e9c7 fix(lite/vm-creation): keep UEFI firmware when setting boot order (#10521)
Introduced by #8317

`VM.set_HVM_boot_params` replaces the whole map, so setting the boot order for a
network install or a VM without disk dropped the firmware set just before, and
the VM booted in BIOS mode.
2026-10-08 11:18:30 +02:00
Thierry Goettelmann 8338851c4c feat(web-core,web,lite): add UiPanelCardTitle component (#10289)
* feat(web-core,web,lite): add UiPanelCardTitle component

Figma's "Panel title v3" describes three formats — plain text, linked
title, title with an id — which the existing VtsCardObjectTitle only
covered partially, and which several cards had reimplemented inline with
their own flex/gap rules.

Rather than three components, the parts are independent and optional: a
`to` or `href` makes the title a link, an icon or an id is shown when
passed, and `size` replaces Figma's `level`, which described the
appearance in terms of hierarchy.

Adopting it in the side panel cards drops their local title styles, and
brings them back to the 0.8rem title-to-content gap the design system
specifies.

* chore(lite): add the ui-panel-card-title story route

The generated route-map entry was omitted when the story was added.

* fix(web): address review feedback

Task infos and warnings are arrays, so their counters read `length`
directly instead of going through `Object.keys` and a non-null assertion
that only held thanks to the parent's `v-if`.

Add the changelog entries for the side panel card titles.

See XO-2885

* feat(web-core,web,lite): migrate side panel cards to UiPanelCardTitle

Replace the remaining `UiCardTitle` usages in side panel cards with
`UiPanelCardTitle`, so every panel card title shares the same layout.

To cover the cases the old titles handled, `UiPanelCardTitle` gains
`label`, `action` and `more-actions` slots, and tighter spacing between
the title and its id.

See XO-2885
2026-10-08 11:01:20 +02:00
Elise-F 7edeb7a253 feat(lite): add detach action on host (#10520)
* update changelog file

* feedback one

* feat(host): add action reboot on host

* feat(lite): add forget action on host

* feedback

* feat(lite): add detach action on host

* update changelog

* fix modal translations

* add 'host is running' condition to the job and fix translations

* feedback
2026-10-08 10:16:29 +02:00
Mathieu 1a012bdd94 fix(web-core/web): handle SSE for non XAPI objects (#10450) 2026-10-08 09:15:10 +02:00
Sandrine Barrucand 493aa7f15d feat(xo6/pool): add validation to pool connection form (#10484) 2026-10-07 16:40:31 +02:00
Alina D cb1e45b6b0 feat(xo6): allow removing existing (template) disks in the New VM form (#10292) 2026-10-07 16:02:11 +02:00
Killian 0ff6196e72 feat(xo-server/backups,rest-api): stream changes of the VM backup archives over SSE (#10472)
The cache now announces what a listing finds and what a journal replay
changes, as `add`, `update` and `remove` events carrying the archive and its
previous value, on an emitter the app exposes as `app.vmBackupArchives`. What
was last announced for a repository outlives its entry, so a repository read
again from scratch only announces what really changed. A repository which is
removed or disabled goes through the new `forgetVmBackupRepository()`, which
announces all its archives as removed. A listener which throws is logged and no
longer fails the listing.

The REST API adds `backup-archive` to the SSE collections. It is bound to
`app.vmBackupArchives` the way `task` is, and filtered by `backup-archive:read`
through the same path as every other non-XAPI collection.

Nothing polls the repositories: changes are pushed whenever any client lists a
repository. The first listing after a restart sends every archive it already
holds as `add`.

XO-2992
XO-2993
2026-10-07 11:58:55 +02:00
Bastien Nollet 2ee51a3694 fix(load-balancer): process tags in each pool separately & other fixes 2026-10-07 11:25:38 +02:00
Bastien Nollet 87aca3ff5e feat(load-balancer): smarter migration restrictions 2026-10-07 11:25:38 +02:00
Bastien Nollet 305e66becc feat(load-balancer): vm-to-host affinity 2026-10-07 11:25:38 +02:00
b-Nollet d3fea1296d feat(load-balancer): various minor improvements 2026-10-07 11:25:38 +02:00
Elise-F 8c4e4d110a feat(lite): add action restart toolstack on host (#10480)
* update changelog file

* feedback one

* feat(host): add action reboot on host

* feat(lite): add forget action on host

* feat(host): Add restart toolstack action for hosts with HA disabled

* feat(icon status): Add a power status icon to the treeview and to the host header

* update changelog files

* fix rebase

* feedback
2026-10-06 15:29:41 +02:00
Florent BEAUCHAMP cc8f039341 fix(backups): allow a deadlocked merge to recover (#10424)
* fix(backups): properly throw an error if a disk is missing from a chain to merge
but accept it if the merge was interrupted at the cleanup phase
* fix(backups): a merge with 0 or 1 disk is a warning
* fix(backups): don't try to merge chain that are out of retention
this fix will allow broken to recover after a while ( depending on
retention and full backup interval )
* fix: defense in depth against deletion
 every path this class compares it against is normalized (disk paths, alias targets), so
 it must be too: a raw path would e.g. make #cleanOrphanDataFiles fail to exclude the VDI
 directory from the data directories it sweeps, and delete every unclaimed file in it
* fix(backups): better handling of missing disks during a merge
* ensure we never delete ancestries of a differential disk
2026-10-06 15:05:55 +02:00
ayoub-el-kajji-v 59c8935e37 fix(backups): delete first not working in replication (#10452)
* fix(backups): delete old entries before starting a new replication
2026-10-06 14:52:50 +02:00
Thomas Moraine 779e448f21 docs(users): recommend enabling OTP authentication (#10539)
Strongly recommend OTP (TOTP) authentication to mitigate brute force attacks on passwords.
2026-10-06 14:43:39 +02:00
Elise-F 3a64afb226 feat(lite): add enable and disable actions on host (#10337)
* update changelog file

* feedback one

* feat(host): add action reboot on host

* add header state

* feat(lite): add forget action on host

* feat(lite): add enable and disable actions on host

* update changelog file

* fix rebase

* fix rebase

* feedback one

* add redirect after forget action
2026-10-06 13:55:14 +02:00
Marie GardeandClaude Opus 5.5 cfdf0de9ee feat(xo6): Add create form backup repository (#10271)
* feat(xo6): create and edit backup repository form

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* fix post rebase

* add tests

* feedback

* feedback

* rebase ok

---------

Co-authored-by: Claude Opus 5.5 <[email protected]>
2026-10-06 11:39:18 +02:00
Pierre Donias d6e6e963bf feat(xo-web/ip-pools): show IP format example (#10522) 2026-10-06 11:09:50 +02:00
Pierre Donias 29c7c0e6f1 fix(web-core/remote-resource): clear error after a successful fetch (#10516)
Introduced by #8855

lastError was never reset, so one failed poll kept hasError true and
dashboard cards in error state until reload.
2026-10-06 11:07:05 +02:00
Joris K 72a9959a3c fix(xo6): update modal events to handle confirm actions correctly (#10417) 2026-10-06 11:03:16 +02:00
Sylvère e5d4c665a4 refactor(web/core): tasks-related refactor for ongoing My Tasks work (#10265) 2026-10-06 10:53:01 +02:00
MlssFrncJrg 0070c7f709 fix(xo-lite/XO6): exclude ISO SR guest tools from selector in VM creation (#10430) 2026-10-06 10:36:47 +02:00
Mathieu a84584d24e feat(rest-api): POST acl-roles support list of privileges (#10470) 2026-10-06 10:21:35 +02:00
Joris K 786610cba3 feat(lite): add search bar in the treeview (#10414)
* feat(lite): add searchbar in the treeview

* improve open close treeview, and a pool dashboard that displays a scrollbar when the screen is minimized

* add changelog and improvement

* feedback

* feedback

* review feedback

* feedback add story
2026-10-06 10:09:35 +02:00
Mathieu 08e6e1bf49 ci(vectura): only run on the changes of the branch (#10528)
GitHub filters a push on the diff with the previous push of the branch: after
a rebase on `master`, or a merge of it, this diff contains the vectura changes
landed on `master` meanwhile, and the workflow rebuilds vectura on branches
which do not touch it.

A pull request is filtered on the diff with its merge base instead, i.e. the
changes of the branch only. Pushes still run the workflow on `master`.
2026-10-06 09:27:15 +02:00
Elise-F 5999d53e0b feat: release 6.9.1 (#10533) 2026-10-05 17:18:51 +02:00
Elise-F decc09117d feat: patch technical release (#10529) 2026-10-05 15:47:30 +02:00
Sylvère d11cf2d2fc fix(xo6): prevent unwanted inherited route params (#10511) 2026-10-05 14:35:02 +02:00
Mathieu abdddcf105 fix(web/web-core): fix invalid VM-snapshot's VDIs (#10510)
introduced by 57414dafce
2026-10-05 14:01:13 +02:00
spacotte-vates 8c2f38c004 fix(backups): fix synchronized backup snapshop showing as vm in task log (#10518)
* fix(backups): fix synchronized backup snapshop showing as vm in task log
2026-10-05 11:32:42 +02:00
Pierre Donias 5de02b6c19 docs(PULL_REQUEST_TEMPLATE): point to internal review process instead of duplicating it (#10517)
The review process was documented both here and in the internal PR process
doc, and the two had drifted apart. Keep the internal doc as the single
source of truth and only give external contributors what they need.
2026-10-05 09:59:05 +02:00
Florent BEAUCHAMP 440624a09c Fix(backups): incremental distributed replication (#10519)
`AggregatedIncrementalXapiWriter.checkBaseVdis()` didn't forward
`contentKeys` to its sub-writers, so the second run of a multi-SR
replication failed with `Cannot read properties of undefined (reading 'get')`.

Also adds QA tests for distributed replication and copyRetention.

Introduced by 680b81088
2026-10-05 09:54:47 +02:00
ayoub-el-kajji-v 718b348e85 fix(backups): use schedule.id instead of scheduleId in replica retention (#10491)
fix(backups): use schedule from props for replica retention instead of scheduleId
2026-10-02 17:07:55 +02:00
Mathieu 278f7d1706 fix(vectura): build against glibc 2.31 so V2V runs on Debian 11 XOAs (#10513)
XOA appliances still run Debian 11, whose glibc is 2.31. The vectura binary
bundled with @xen-orchestra/vmware-explorer was linked against glibc 2.34,
so it did not start there (`GLIBC_2.32 not found`): the prerequisite check
of the VMware import page failed and V2V imports could not run.

zig now links it against glibc 2.31. Below 2.34, libpthread and libdl are
libraries of their own, so check-binary.sh allows them. The bundled binary
is rebuilt with the same version, and the docs say Debian 11 and Ubuntu
20.04 instead of Debian 12 and Ubuntu 22.04.

Introduced by dc57333f5
2026-10-02 16:34:10 +02:00
ayoub-el-kajji-v b59c8f3d20 fix(xo-web): disable restat-toolstack for HA_enabled pool hosts in home (#10497) 2026-10-01 17:33:54 +02:00
Joris K 7711b6d6f5 fix(xo6/lite): fix video RAM displayed in bytes instead of MiB (#10486) 2026-10-01 16:40:18 +02:00
Mathieu b0c0d9361a fix(xen-api): fix HTTP/2 for server behind HTTP proxy (#10507)
Introduced by 11eed70
fix Forum#12502
2026-10-01 14:51:46 +02:00
Mathieu 83fdb2ed1f docs(changelog): vCenter is still supported by V2V (#10502)
The 6.9.0 entry for the VDDK removal said a vCenter address is no longer
supported. vectura reads the disks through a vCenter as well as directly
from an ESXi host; only ESXi 6.x is refused, because its data port does not
announce "SHA256 supported".
2026-10-01 09:47:14 +02:00
Elise-F c9eaa7a617 feat(lite): 0.26.0 (#10501) xo-lite-v0.26.0 2026-10-01 08:54:52 +02:00
Elise-F a2bd181d35 feat: release 6.9.0 (#10499) 2026-09-30 18:12:53 +02:00
Elise-F 989cd48559 feat: technical release (#10496) 2026-09-30 15:53:45 +02:00
ayoub-el-kajji-v b2f0bfc907 fix(xo-web): disable restart toolstack button when HA enabled on pool (#10340) 2026-09-30 14:57:50 +02:00
spacotte-vates ce26dc2231 fix(backups): prevent failed CR to accumulate replicas (#10404)
* fix(backups): prevent failed CR to accumulate replicas
2026-09-30 14:44:42 +02:00