lablup / lablup/backend.ai-webui
App config: serve the domain appearance document and unify the theme bootstrap
- Dominant language
- TypeScript
- Stars
- 133
- Forks
- 81
- Avg merge
- 1d 11h
- Merged PRs (30d)
- 344
Description
### Summary
Serve the domain appearance document from app config and unify the theme bootstrap. Middle PR of the app-config stack (base: FR-3605's v2 document; top: theme-family/Branding ticket). PR: #8860 (rebased onto the FR-3605 branch).
### Scope
- **GraphQL schema sync** — copy the backend's checked-in supergraph into `data/schema.graphql` (26.9.0 app config APIs: `myAppConfigs`, `publicAppConfigs`, `myAppConfigFragmentsByNames`, `scopedAppConfigFragmentsByNames`, `myUpsertAppConfigFragments`, `scopedUpsertAppConfigFragments`, `DomainV2.entityId`), regenerate Relay artifacts, map the `JSON` scalar in `relay-base.config.js`. Ripple: model-definition `name`/`modelPath`/`port` turned nullable on preset outputs → normalize in `AdminDeploymentPresetSettingPageContent`.
- **Storage** — the domain document is stored wholesale under the `appearance` subKey of `publicConfigByDomain` (anonymous-readable, superadmin-writable).
- **Bootstrap unification** — `loadCustomThemeConfig()` (index.tsx, one shot) fetches `theme.json` and the anonymous domain document (`POST /func/v2/app-config/public/get`) in parallel, resolves **domain slice wins wholesale, else theme.json**, dispatches a single `custom-theme-loaded`. Pre-login the domain comes from config.toml `general.apiDomainName` (BA-7405/BA-7406); post-login the session domain wins.
- **No refresh state machine** — a session that could not fetch (fresh Electron install with no endpoint, transient failure) keeps `theme.json` until the next reload (accepted per design review).
### Acceptance criteria
- The domain's v2 appearance document served from app config themes the WebUI without any operator `theme.json` on the web server.
- With no domain document, `theme.json` behavior is unchanged.
JIRA Issue: FR-1964
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.