Sign inSign up

penrithbeacon/wcp-widget-theme-studio

By penrithbeacon

•Updated 4 months ago

Image
0

1.4K

penrithbeacon/wcp-widget-theme-studio repository overview

⁠WCP Widget: Theme Studio

A Widget Context Protocol (WCP)⁠ widget providing a full theme gallery and custom theme editor for WCP-compatible dashboards. Ships with 15 built-in themes (12 community + 3 Penrith Beacon WCP native) and allows unlimited custom themes, all shareable via URL.

Specification: widgetcontextprotocol.com⁠ | Part of the Penrith Beacon WCP⁠ widget suite.

WCP 2.1.0 certified. Full theme reception, orchestration-aware state, Publish to Web, WCP export.


⁠Components

ComponentDefault sizeDescription
Theme Studio6x4Compact theme card with theme list
Theme Studio FullFull page3-column gallery + editor
Theme GuideFull pageTheme format documentation page

⁠Quick Start

docker run -d \
  --name wcp-widget-theme-studio \
  -p 3740:3740 \
  -v theme_data:/app/data \
  -v theme_published:/app/published \
  -e CONTAINER_NAME=wcp-widget-theme-studio \
  --restart unless-stopped \
  docker.io/penrithbeacon/wcp-widget-theme-studio:latest

⁠Docker Compose

services:
  theme-studio:
    image: docker.io/penrithbeacon/wcp-widget-theme-studio:latest
    container_name: wcp-widget-theme-studio
    ports:
      - "3740:3740"
    volumes:
      - theme_data:/app/data
      - ./published:/app/published
    environment:
      - CONTAINER_NAME=wcp-widget-theme-studio
    restart: unless-stopped

volumes:
  theme_data:

⁠WCP Request Headers

HeaderRequiredDescription
Wcp-Instance-IdYesUnique card instance identifier
Wcp-Dashboard-IdYesDashboard installation identifier
Wcp-VersionYesWCP protocol version of the requesting dashboard
Wcp-Widget-IdYesWidget identifier within the dashboard
Wcp-Orchestration-IdNoActive orchestration identifier (for state scoping)
Wcp-Application-IdNoActive application identifier (for state scoping)

⁠Endpoints

EndpointDescription
GET /wcpContainer Directory — WCP two-tier discovery
GET /widget/wcpWidget Manifest with runtime publish status
OPTIONS /wcpCORS preflight (all widget routes)
GET /widget/Compact theme card (iframe)
GET /widget/indexWidget Index — lists all controls
GET /widget/healthHealth check with container name
GET /widget/icon.svgWidget icon (SVG)
GET /widget/api/guidsComponent UUIDs for orchestration binding
GET /widget/fullFull Theme Studio (3-column gallery + editor)
GET /widget/guideTheme format documentation page
GET /widget/manifestLightweight manifest subset
GET /widget/themes/<id>.pbtheme.jsonDownload a theme as JSON
GET /widget/api/themesList all themes (built-in + custom)
POST /widget/api/customSave a custom theme
DELETE /widget/api/custom/<id>Delete a custom theme
GET /widget/api/export-wcpt/<id>Export theme as .wcpt package
GET /widget/export.wcpSelf-export as .wcp package
POST /widget/publishAccept SPA HTML for Publish to Web
DELETE /widget/publishRemove published SPA
GET /Serve published SPA (if present)

⁠WCP Compatibility

PropertyValue
WCP Version2.1.0
Widget Version1.7.0
Render modeiframe
AuthNone
Default card size6x4
Multi-instanceYes (global theme storage)

⁠Technical Details

PropertyValue
Base imagepython:3.12-slim
Platformslinux/amd64, linux/arm64
Port3740
FrameworkFlask
DependenciesFlask
Persistent storageNamed volume for custom themes

⁠Tags

TagDescription
latestMost recent stable release
1.7.0-wcp2.1.0/widget/index directory page, audit compliance
1.6.0-wcp2.1.0/widget/health returns container name
1.5.0-wcp2.1.0WCP 2.1.0 upgrade, orchestration ID context
1.4.0-wcp2.0.0Container block, manifest image source
1.3.1-wcp1.4.0Server UUID, Container Directory, Wcp-Widget-Id
1.3.0-wcp1.3.1CORS headers, multi-instance support
1.2.0-wcp1.3.0Mandatory components array

⁠Source

Tag summary

Content type

Image

Digest

sha256:4f76133f0…

Size

46.2 MB

Last updated

4 months ago

docker pull penrithbeacon/wcp-widget-theme-studio