Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
07fa578
chore(gui): add docs reference for phased deployments
mzedel May 27, 2026
3f2e3a0
chore(gui): added shared deployment phase types + modes information &…
mzedel May 27, 2026
ee9afd7
feat(gui): added deployment phase definition input to align w/ update…
mzedel May 26, 2026
1c39855
feat(gui): added support for percentage & device count deployment pha…
mzedel May 26, 2026
754aacd
feat(gui): add support for repeating uniform deployment phase patterns
mzedel May 26, 2026
8758010
refactor(gui): track deployment schedule independent of phase definit…
mzedel May 27, 2026
25aa76a
refactor(gui): integrated custom phase pattern support in phase settings
mzedel Aug 6, 2026
9f55fcc
refactor(gui): allow deployment creation despite faulty phase definit…
mzedel May 27, 2026
30a0707
refactor(gui): integrate rollout modes into deployment creation
mzedel May 27, 2026
24784c9
feat(gui): support device-count rollouts in deployment progress
mzedel Aug 6, 2026
7d87f9b
test(gui): adjust tests for phase rework
mzedel Aug 7, 2026
f0b273b
chore(gui): allowed time format alignment across the ui
mzedel Aug 5, 2026
2c83dc8
chore(gui): allowed deployment creation helper components
mzedel Aug 5, 2026
b39d4f1
chore(gui): extended checkbox configuration options to align w/ under…
mzedel Aug 5, 2026
5ed5b85
chore(gui): aligned deployment creation options w/ updated design
mzedel Aug 4, 2026
b4845e3
refactor(gui): integrated deployment options further into rhf
mzedel Aug 4, 2026
a3c7266
feat(gui): made deployment creation more informative via contextual e…
mzedel Aug 5, 2026
16db497
feat(gui): explained & cleared unavailable deployment options
mzedel Aug 6, 2026
b873f8e
test(gui): aligned deployment creation checks w/ software understandi…
mzedel Aug 4, 2026
ebb132c
chore(gui): aligned snapshots w/ the updated deployment creation drawer
mzedel Aug 7, 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
1 change: 1 addition & 0 deletions frontend/src/js/common-ui/DocsLink.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ const useStyles = makeStyles()(theme => ({
export const DOCSTIPS = {
deviceConfig: { id: 'deviceConfig', path: 'add-ons/configure' },
deviceIdentity: { id: 'deviceIdentity', path: 'client-installation/identity' },
dynamicDeployments: { id: 'dynamicDeployments', path: 'overview/deployment#phased-rollouts-and-dynamic-groups' },
dynamicGroups: { id: 'dynamicGroups', path: 'overview/device-group#dynamic-group' },
hostedRegions: { id: 'hostedRegions', path: 'general/hosted-mender-regions' },
limitedDeployments: { id: 'limitedDeployments', path: 'overview/deployment#deployment-to-dynamic-groups' },
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
// Copyright 2026 Northern.tech AS
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

export const rolloutModes = {
percentage: { key: 'percentage', title: 'By percentage of total devices', batchKey: 'batch_size' },
device_count: { key: 'device_count', title: 'By number of devices', batchKey: 'batch_size_devices' }
};

export type RolloutMode = keyof typeof rolloutModes;

export const rolloutPatterns = {
custom: {
key: 'custom',
title: 'Custom',
tip: 'Define each deployment phase individually'
},
uniform: {
key: 'uniform',
title: 'Uniform (repeat until all devices deployed)',
tip: 'Repeat all phases until all devices are deployed'
}
};

export type RolloutPattern = keyof typeof rolloutPatterns;

export const delayUnits = {
minutes: 'minutes',
hours: 'hours',
days: 'days'
};

export const phaseDefaults = {
batchSize: 10,
delay: 7200
};

export const delayDefaults = {
delay: 2,
delayUnit: delayUnits.hours
};

export const phaseLimits = {
maxPerBatchPercentage: 99,
fullBatchPercentage: 100,
maxDefaultBatchDevices: 2000,
fallbackDeviceCount: 100
};
Loading