Epic: #159
Depends on: TP-03 (manifest model), TP-10 (ThemeDefinition), shipped in 0.4.2
Source: docs/planned-0.4.3.md, docs/market-tech.md
Goal
Extend querya.theme.v1 and ThemeDefinition with optional marketplace-oriented metadata so themes can later appear in an Extensions → Explore UI without another breaking schema change.
Files
lib/core/theme/parser/querya_theme_manifest.dart
lib/core/theme/theme_definition.dart
lib/core/theme/theme_registry_service.dart
docs/theme-custom-json.md
test/fixtures/themes/ (samples with metadata)
- optional stub:
lib/core/market/extension_manifest.dart (align field names only; no HTTP yet)
Implementation
Add optional manifest fields (backward compatible):
author, homepage, license
tags (string array)
preview (relative asset path or HTTPS URL string — parse only; no remote fetch in this issue)
description (short markdown/plain text)
Map into ThemeDefinition for picker display (subtitle, tooltip, future card layout).
Align naming with future ExtensionManifest from market-tech (id, name, version, type: theme, sha256Checksum stays install-time concern for TP-F4).
Update JSON schema docs and one fixture theme with full metadata.
Acceptance Criteria
- Old theme files without new fields still load unchanged.
- Registry exposes metadata on
ThemeDefinition for UI consumers.
- Theme picker can show author or tags when present (minimal UI — badge or subtitle).
- Docs document every new optional field and defaults.
- No network calls in this issue.
Tests
- Parser accepts fixtures with and without metadata.
- Registry scan preserves metadata on
ThemeDefinition.
- Regression: existing
querya.theme.v1 fixtures still parse.
Epic: #159
Depends on: TP-03 (manifest model), TP-10 (
ThemeDefinition), shipped in 0.4.2Source:
docs/planned-0.4.3.md,docs/market-tech.mdGoal
Extend
querya.theme.v1andThemeDefinitionwith optional marketplace-oriented metadata so themes can later appear in an Extensions → Explore UI without another breaking schema change.Files
lib/core/theme/parser/querya_theme_manifest.dartlib/core/theme/theme_definition.dartlib/core/theme/theme_registry_service.dartdocs/theme-custom-json.mdtest/fixtures/themes/(samples with metadata)lib/core/market/extension_manifest.dart(align field names only; no HTTP yet)Implementation
Add optional manifest fields (backward compatible):
author,homepage,licensetags(string array)preview(relative asset path or HTTPS URL string — parse only; no remote fetch in this issue)description(short markdown/plain text)Map into
ThemeDefinitionfor picker display (subtitle, tooltip, future card layout).Align naming with future
ExtensionManifestfrom market-tech (id,name,version,type: theme,sha256Checksumstays install-time concern for TP-F4).Update JSON schema docs and one fixture theme with full metadata.
Acceptance Criteria
ThemeDefinitionfor UI consumers.Tests
ThemeDefinition.querya.theme.v1fixtures still parse.