Restore settings preferences and simplify services editor

This commit is contained in:
2026-04-02 01:25:38 +03:00
parent 91856beec9
commit f5ae311a82
16 changed files with 934 additions and 333 deletions

View File

@@ -11,7 +11,14 @@ export class StateStore {
try {
const raw = await fs.readFile(this.statePath, 'utf8');
return JSON.parse(raw) as ControlPlaneState;
const state = JSON.parse(raw) as ControlPlaneState;
const migrated = migrateLegacyAdminServices(state);
if (migrated !== state) {
await this.write(migrated);
}
return migrated;
} catch (error) {
if ((error as NodeJS.ErrnoException).code !== 'ENOENT') {
throw error;
@@ -28,3 +35,28 @@ export class StateStore {
await fs.writeFile(this.statePath, `${JSON.stringify(state, null, 2)}\n`, 'utf8');
}
}
function migrateLegacyAdminServices(state: ControlPlaneState): ControlPlaneState {
const legacyServiceIds = new Set(
state.system.services
.filter((service) => (service as { command?: unknown }).command === 'admin')
.map((service) => service.id),
);
if (legacyServiceIds.size === 0) {
return state;
}
return {
...state,
service: {
...state.service,
lastEvent: 'Legacy admin service removed from stored panel state',
},
userRecords: state.userRecords.filter((user) => !legacyServiceIds.has(user.serviceId)),
system: {
...state.system,
services: state.system.services.filter((service) => !legacyServiceIds.has(service.id)),
},
};
}