Files
iptvnator/apps/web/src/app/settings/settings.models.ts
T
4grayandClaude Fable 5.1 6f7973a9fb feat(updater): nightly builds and a stable/nightly update channel (#1608)
* feat(updater): nightly builds and a stable/nightly update channel

Every master push publishes its artifacts as a prerelease of
4gray/iptvnator-nightly instead of the rolling test-master draft, with a
version of <next patch>-nightly.<commit date>.<run number> applied in
every build job. Settings → About gains an Update channel switch;
AppUpdateService re-points electron-updater per check (feed repository,
allowPrerelease, channel name, allowDowngrade reset) and reads release
notes from the repository the requested version belongs to. Channel
switches are forward-only: a nightly build stays until a newer stable
release exists.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* fix(updater): compute the nightly version once and keep re-runs safe

Review follow-ups: the nightly version is resolved by a leading job and
handed to every build job, and the patch is bumped only when the base
tag already exists so the release-cut window stays below the imminent
release. A re-run never deletes a published nightly; only a draft left
by a failed run is replaced. Typed update-status literals in the
remaining specs carry the new channel fields.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* test(packaging): expect the nightly-version prerequisite in the build workflow graph

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-15 17:49:22 +02:00

62 lines
1.1 KiB
TypeScript

import {
AppUpdateChannel,
CoverSize,
EpgViewMode,
StartupBehavior,
StartupWindowMode,
Theme,
VideoPlayer,
} from '@iptvnator/shared/interfaces';
export interface SettingsSection {
id: string;
label: string;
icon: string;
visible: boolean;
}
export interface ThemeOption {
value: Theme;
icon: string;
labelKey: string;
}
export interface StartupBehaviorOption {
value: StartupBehavior;
labelKey: string;
}
export interface StartupWindowModeOption {
value: StartupWindowMode;
labelKey: string;
}
export interface UpdateChannelOption {
value: AppUpdateChannel;
labelKey: string;
}
export interface CoverSizeOption {
value: CoverSize;
icon: string;
labelKey: string;
}
export interface EpgViewModeOption {
value: EpgViewMode;
icon: string;
labelKey: string;
}
export interface SettingsPlayerOption {
id: VideoPlayer;
labelKey: string;
}
export interface SettingsPlaylistDeleteSummary {
total: number;
m3u: number;
xtream: number;
stalker: number;
}