Skip to content

feat(visual-skin): replace legacy skin market with declarative skin packs - #3865

Open
kev1n77 wants to merge 8 commits into
openBitFun:mainfrom
kev1n77:fmy/skin
Open

kev1n77 wants to merge 8 commits into
openBitFun:mainfrom
kev1n77:fmy/skin

Conversation

@kev1n77

@kev1n77 kev1n77 commented Nov 10, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Replace the legacy skin marketplace and publishing flow with declarative Visual Skin Packs. Users can import a JSON or ZIP package, preview it, activate it, and remove it from Appearance settings. Packages can change supported paint tokens, artwork, surface materials, component parts, and interaction-state styling while product layout and behavior remain owned by the application.

  • Add bounded archive parsing, package validation, IndexedDB storage, transactional selection/removal, invalid-record reporting, and display-resource cleanup.
  • Compose artwork across shell, navigation, workbench, chat, editor, terminal, and empty-state surfaces; preserve independent reading materials and avoid repainting skin backgrounds during unrelated chat updates.
  • Ship the openbitfun-skin-designer authoring Skill with the production-parser-based validator/packer and an optional Aurora Paper starter.
  • Remove the old skin-market frontend/server/service, desktop commands, deployment files, publishing tool, and old authoring Skill; regenerate capability and remote-operation projections.
  • Repair the resulting feature-gate and retained market-test references. Make Chromium fixtures portable across hosted Linux CI and explicit mouse/touch input capabilities, with retried asynchronous profile cleanup.

Type and Areas

Type: Feature, refactor, UI/UX, docs, tests, dependency cleanup.

Areas: Shared Web UI, design-system components, Desktop command registration, product-domain registries, market services, built-in Skills, and deployment documentation.

Motivation / Impact

The new workflow lets authors distribute local, validated visual overlays without deploying a skin marketplace. Skin packages cannot inject executable CSS, JavaScript, HTML, external-resource URLs, or layout/geometry changes. Existing built-in theme presets remain available. New visual-skin packages and selection are stored separately in the current Web UI host's IndexedDB; there is no automatic installation of the example or cross-device skin synchronization.

This is a replacement of the legacy marketplace workflow, not an archive-format migration: old skin-market services, publishing tools, and commands are removed. Previously imported Appearance data is not converted into the new visual-skin format by this PR.

Verification

All 14 checks passed at 5207c71a8c73493f6a05cbe908f1a217880e3464: complete CI run and Repository Object Sizes.

  • Web UI: 1,257 test files and 14,760 tests passed; Web UI and mobile-web builds succeeded, together with mobile account, persistence, concurrency, and layout regressions.
  • Rust and CLI: Windows, Linux, and macOS checks passed, including the applicable Core, desktop, and workspace contracts.
  • Linux x64/arm64 CLI and Relay builds, installer tests, package checks, and Relay runtime image validation passed. Shell deploy contracts and Windows DSH profile packaging passed.

Local checks for the CI fixes:

  • Visual-skin tests: 18 files, 145 tests passed, including explicit mouse/touch browser coverage.
  • Retained market image contracts: 3 tests passed. Core-boundary contract tests: 157 passed.
  • Web UI type checking, i18n audit, Appearance contract audit, and theme visual contract passed.
  • Minimal-feature Rust checks passed for Core (agent-runtime,git) and Services Integrations (miniapp-market), both with --locked --no-default-features.
  • git diff --check passed.

The local full core-boundary checker was blocked by an existing ignored, broken HarmonyOS dependency junction under oh_modules; that directory was left unchanged. CI's full core-boundary checker passed. The optional local check:web:appearance aggregate also reports an existing Dialog typography-token violation in design-system/packages/ui/src/components/Dialog/Dialog.module.css; that file is unchanged by this PR. CI's configured theme gates passed.

Reviewer Notes

  • The branch contains eight linear skin commits, with no upstream-sync merge commits in the PR range. Most deleted lines are the retired marketplace and old authoring resources.
  • This work is AI-assisted. Testing level: automated local and CI coverage; native WebView visual acceptance, long-session/GPU/decoded-image-memory profiling, and live remote scenarios remain unverified.
  • Local browser/DOM fixtures and registry tests do not establish real SSH workspaces, mobile/IM remote control, Peer Device Mode, or Detached Dispatch behavior. Skin selection belongs to the rendering Web UI host; registry changes remove the retired market commands.
  • No before/after native product screenshots are included. The optional starter is a syntax example, not a visually accepted built-in skin.

Checklist

  • This PR is focused and does not include secrets, temporary prompts, generated scratch files, or unrelated artifacts.
  • Relevant verification is recorded above, or skipped checks are explained.
  • User-facing strings, docs, and locales are updated where applicable.

Add bounded ZIP imports, public paint contracts, mode resolution, IndexedDB storage, preview and activation. Keep failed storage operations consistent, isolate invalid records, and release unretained image resources. Cover import limits, state rollback, ownership and projection regressions.
Expose component paint ownership and clip artwork independently from content and interaction geometry. Integrate shell, navigation, workbench, welcome, chat, editor and terminal surfaces; cover shared backgrounds, corner underlays and readable content in browser fixtures.
Expose artwork through scene backgrounds while giving settings, catalogs, external sessions, disclosures and calendar content local reading materials. Keep headings and toolbar actions transparent and paint the calendar as one plane with edge clearance. Add component and browser regression coverage.
Add localized skin management with previews, activation, explicit deletion and invalid-record errors. Use a responsive package gallery, keep detailed projection diagnostics out of ordinary cards, and document the system and focused checks.
Register create-visual-theme and separate the importable paint contract from the optional design template and visual acceptance checklist. Add a canonical example and contract/init/validate/pack tooling that uses the production parser, plus authoring and bundled-example regression tests.
@kev1n77
kev1n77 force-pushed the fmy/skin branch 3 times, most recently from 14a16b4 to 1f046fa Compare November 10, 2026 13:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant