From 11553305330f0d504253995bec7bdba09c6a672e Mon Sep 17 00:00:00 2001 From: Alfonso Noriega Date: Tue, 17 Mar 2026 11:07:54 +0100 Subject: [PATCH 1/3] Add admin hoted app local spec --- .../models/extensions/extension-instance.ts | 2 ++ .../models/extensions/load-specifications.ts | 2 ++ .../models/extensions/specifications/admin.ts | 36 +++++++++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 packages/app/src/cli/models/extensions/specifications/admin.ts diff --git a/packages/app/src/cli/models/extensions/extension-instance.ts b/packages/app/src/cli/models/extensions/extension-instance.ts index bf90ce1f6b5..318617ab2b7 100644 --- a/packages/app/src/cli/models/extensions/extension-instance.ts +++ b/packages/app/src/cli/models/extensions/extension-instance.ts @@ -533,6 +533,8 @@ export class ExtensionInstance [], +}) + +export default adminSpecificationSpec From 9296db7f345bc551184c2b5925ceecef5739f28e Mon Sep 17 00:00:00 2001 From: Alfonso Noriega Date: Tue, 17 Mar 2026 16:51:01 +0100 Subject: [PATCH 2/3] Fix admin spec: use createConfigExtensionSpecification with proper schema and config keys --- packages/app/src/cli/models/extensions/specifications/channel.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/app/src/cli/models/extensions/specifications/channel.ts b/packages/app/src/cli/models/extensions/specifications/channel.ts index abe89c4a4e0..a52710c4f4c 100644 --- a/packages/app/src/cli/models/extensions/specifications/channel.ts +++ b/packages/app/src/cli/models/extensions/specifications/channel.ts @@ -6,6 +6,7 @@ const FILE_EXTENSIONS = ['json', 'toml', 'yaml', 'yml', 'svg'] const channelSpecificationSpec = createContractBasedModuleSpecification({ identifier: 'channel_config', + uidStrategy: 'single', buildConfig: { mode: 'copy_files', filePatterns: FILE_EXTENSIONS.map((ext) => joinPath(SUBDIRECTORY_NAME, '**', `*.${ext}`)), From 4acc557a3434470ff08d59524495b041b111e907 Mon Sep 17 00:00:00 2001 From: Alfonso Noriega Date: Thu, 26 Mar 2026 15:21:57 +0100 Subject: [PATCH 3/3] Remove unused AdminSpecIdentifier export from admin.ts Co-Authored-By: Claude Sonnet 4.6 --- .../app/src/cli/models/extensions/specification.ts | 3 ++- .../src/cli/models/extensions/specifications/admin.ts | 10 ++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/app/src/cli/models/extensions/specification.ts b/packages/app/src/cli/models/extensions/specification.ts index a4564c6889f..1f2c939ea10 100644 --- a/packages/app/src/cli/models/extensions/specification.ts +++ b/packages/app/src/cli/models/extensions/specification.ts @@ -289,7 +289,7 @@ export function createConfigExtensionSpecification( spec: Pick< CreateExtensionSpecType, - 'identifier' | 'appModuleFeatures' | 'buildConfig' | 'uidStrategy' | 'clientSteps' + 'identifier' | 'appModuleFeatures' | 'buildConfig' | 'uidStrategy' | 'clientSteps' | 'transformRemoteToLocal' >, ) { return createExtensionSpecification({ @@ -299,6 +299,7 @@ export function createContractBasedModuleSpecification { let parsedConfig = configWithoutFirstClassFields(config) if (spec.appModuleFeatures().includes('localization')) { diff --git a/packages/app/src/cli/models/extensions/specifications/admin.ts b/packages/app/src/cli/models/extensions/specifications/admin.ts index 888b1fd5bc2..b7aa03027d2 100644 --- a/packages/app/src/cli/models/extensions/specifications/admin.ts +++ b/packages/app/src/cli/models/extensions/specifications/admin.ts @@ -1,10 +1,16 @@ import {createContractBasedModuleSpecification} from '../specification.js' -export const AdminSpecIdentifier = 'admin' - const adminSpecificationSpec = createContractBasedModuleSpecification({ identifier: 'admin', uidStrategy: 'single', + transformRemoteToLocal: (remoteContent) => { + return { + admin: { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + static_root: (remoteContent as any).admin.static_root, + }, + } + }, buildConfig: { mode: 'copy_files', filePatterns: [],