Add full shell, replaceable Omics adapter and bilingual interaction

Implement approved specification #32 and tickets #33-#37. Keep host authentication server-verified and pin session interaction language. Compile scoped base selectors for browser compatibility and retain full gutters during CSS pruning.
This commit is contained in:
Codex
2026-09-13 14:26:39 +02:00
parent 2d1b714ebe
commit d8a29bfbdd
207 changed files with 8570 additions and 2164 deletions
+11 -1
View File
@@ -40,6 +40,7 @@ type descriptor struct {
WorkspaceRepository workspaceRepositoryDescriptor `yaml:"workspaceRepository"`
Authentication authenticationDescriptor `yaml:"authentication"`
ModelCatalog ModelCatalog `yaml:"modelCatalog"`
Shell Shell `yaml:"shell"`
Overrides []string `yaml:"overrides"`
}
@@ -91,6 +92,7 @@ type Installation struct {
WorkspaceRepository WorkspaceRepository
Authentication Authentication
ModelCatalog ModelCatalog
Shell Shell
Overrides []string
}
@@ -128,6 +130,9 @@ func Load(path string) (Installation, error) {
if err := raw.ModelCatalog.NormalizeDefaults(); err != nil {
return Installation{}, err
}
if err := raw.Shell.NormalizeDefaults(); err != nil {
return Installation{}, err
}
if raw.SchemaVersion != 2 {
return Installation{}, errors.New("migration_required: installation schemaVersion must be 2")
@@ -176,6 +181,7 @@ func Load(path string) (Installation, error) {
},
Authentication: authentication,
ModelCatalog: raw.ModelCatalog,
Shell: raw.Shell,
Overrides: make([]string, 0, len(raw.Overrides)),
}
values, err := installation.environmentValues()
@@ -435,7 +441,7 @@ func (i Installation) ComposeFiles() []string {
return files
}
// GeneratedDirectory contains disposable runtime adapters derived from modelCatalog.
// GeneratedDirectory contains disposable model and public frontend runtime projections.
func (i Installation) GeneratedDirectory() string {
return filepath.Join(filepath.Dir(i.Path), "generated")
}
@@ -452,6 +458,10 @@ func (i Installation) GeneratedPiSettingsPath() string {
return filepath.Join(i.GeneratedDirectory(), "pi", "settings.json")
}
func (i Installation) GeneratedFrontendConfigPath() string {
return filepath.Join(i.GeneratedDirectory(), "frontend", "config.js")
}
func (i Installation) ModelProjectionComposePath() string {
return filepath.Join(i.GeneratedDirectory(), "compose.models.yaml")
}