The catalog in apps/desktop/examples/catalog.json is the shared source for example identity, capability coverage, setup requirements and the developer website. Directory names and installed plugin IDs can differ; use pluginId for registry links.
apps/desktop/examples/catalog.json
pluginId
The collection contains 25 plugins organized into Dock tools, creator workflows, everyday tools and developer references spanning all 16 runtime permissions and 34 SDK capability groups. The standalone tooling distributes every source project under dist/examples/ and the catalog under dist/context/example-catalog.json. Both MCP workflows receive the updated authoring skill and examples through the same distributions; CLI/MCP authoring tool schemas remain unchanged; Agent runtime APIs are retired.
dist/examples/
dist/context/example-catalog.json
Examples are classified by the SDK interfaces they use, with six navigation groups: Runtime, Network, Media & frames, Input & Dock, Filesystem & backup, and Projection. Categories describe state publication, event handlers, configuration, storage, visibility, cancellation, logging, service APIs, frame/media APIs, HID, filesystem operations, backup APIs and projection declarations. Workflow names, permissions alone and plugin descriptions do not assign a capability.
The classifier in scripts/classify-example-capabilities.mjs reads the example JavaScript syntax and JSON declarations without executing them. Each category carries explicit SDK type/member references. It separates Canvas from encoded frames, animation from fullscreen, and backup observation from commands. Fixture-only configuration and packaged App icons do not imply settings or projection-image capabilities. Device-only source/static projections do not exercise host-context APIs. Re-run the classifier after changing example code or projection declarations, then refresh the website's distribution mappings with node scripts/sync-example-capabilities.mjs in the platform repository. Every website mapping is checked against the runtime in its shipped submission archive.
scripts/classify-example-capabilities.mjs
node scripts/sync-example-capabilities.mjs
The existing timers, photo album, game, music, video, camera, network cards and control galleries complete the coverage. Each catalog entry names its actual dependencies. Never describe sample data or a passing fixture as live hardware verification.
All 16 permission identifiers in the SDK are represented by example manifests. All 34 source-audited SDK capability groups have at least one example. These are group-level examples, not an exhaustive API-branch suite or proof of physical-device operation.
The source audit finds examples for the frame API (start, Canvas, fonts/icons, present/encoded submit, status, stop), all photo and video methods, and read/write/delete storage. SDK Showcase exposes all five HTTP verbs, all media control commands and all three log levels through its action picker. This establishes an accessible example for those operations, not exhaustive status-code, permission-denial or transport-failure coverage. Visibility, cancellation and unknown write outcomes are demonstrated, but all races and real-device transport paths are not certified by the catalog test.
Focus Pull combines an on-demand Canvas focus diagram, native optical readouts, rotary adjustment and remembered presets. Frame Composer combines authorized local photo display, preloading and six packaged framing masks with thirds/center guides. Both have real calculations or photo operations rather than fixed sample values. Their README files explain modeling and crop-preview limits.
node apps/desktop/scripts/build-visual-plugins.mjs node --test apps/desktop/scripts/test-visual-plugins.mjs node apps/desktop/scripts/check-visual-plugins.mjs
These additions reuse the existing SDK and firmware contract. Both MCP servers and the CLI receive the new editable examples via the common tools distribution; no new SDK methods or tool arguments are introduced.
node apps/desktop/scripts/build-official-examples.mjs node --test apps/desktop/scripts/test-official-examples.mjs node apps/desktop/scripts/check-official-examples.mjs
The first command regenerates the six focused examples' layouts and schemas; hand-authored runtime modules remain intact. The tests verify complete permission/capability coverage, package identities, native execution, unknown outcomes and deliberate ejection. The sandbox script validates runtime behavior, representative actions and captures both initial and active screenshots under .cache/official-examples/ for visual review.
.cache/official-examples/
For the other plugins, pass their directory names to the sandbox script. Keep IDs stable and increment the version when updating a published example. Refresh manifest and asset hashes after layout or image changes. The website's npm run sync:client builds tools, copies this catalog and captures source-bearing .boltsubmission archives with real fixture previews.
npm run sync:client
.boltsubmission
Media Verify, Cut Desk, Cull Desk and Shoot Planner address ingest checking, editing, photo selection and shoot planning. They use task/result/action layouts and explicit, honest state feedback. Read each plugin's README for setup and limits. They do not pretend to control a camera, copy files, observe an editor playhead or confirm an application edit.
node apps/desktop/scripts/build-creator-plugins.mjs node --test apps/desktop/scripts/test-creator-plugins.mjs node apps/desktop/scripts/check-creator-plugins.mjs
Creator tests cover real temporary-file comparisons, 24 MiB streamed hashing, cancellation, incomplete reads, index/mount invalidation, formula accuracy and atomic HID mappings. Rendered ready/active modes are saved in .cache/creator-previews/. No SDK method, firmware protocol or MCP tool contract was added; both authoring distributions consume the updated skill and examples.
.cache/creator-previews/
The 1.1.0 creator release used native dark device panels with shared spacing and typography, distinct task accents and original line symbols. apps/desktop/scripts/creator-interfaces.mjs owns the layouts; apps/desktop/scripts/render-creator-ui-icons.py bakes only symbols, while all labels, values and controls remain live SDK primitives. apps/desktop/scripts/build-creator-plugins.mjs preserves the hand-authored settings, events and fixtures, updates the version and recalculates every image/manifest hash. Run these scripts from the repository root. The symbol authoring step uses Pillow; installed plugins have no Python dependency.
apps/desktop/scripts/creator-interfaces.mjs
apps/desktop/scripts/render-creator-ui-icons.py
apps/desktop/scripts/build-creator-plugins.mjs
Cull Desk exposes all ratings and inspection controls at once. Existing keyboard behavior and the legacy authoring events remain compatible. No runtime SDK or firmware protocol change is required. The shared App/web renderer is used without CSS-only mockups.
Link Lens and Desk Ready use the physical Dock read/subscription API for connection diagnostics and saved workstation comparison. The dock collection also includes Dock Health and Transfer Watch. Link Lens reports negotiated rates, not measured transfer speed or proven cable faults. Desk Ready compares port IDs and saved reported attributes, not serial identity, free storage or application readiness. The current SDK has no PD wattage readout, fan actuator or port power-control API.
dock
node apps/desktop/scripts/build-dock-plugins.mjs node --test apps/desktop/scripts/test-dock-plugins.mjs node apps/desktop/scripts/check-dock-plugins.mjs
The common observer unsubscribes when hidden and rejects late reads. Tests cover bit/byte ambiguity, current versus maximum display modes, missing details, disconnected snapshots, two-step profile saving, changed-state invalidation and failed storage writes. Fixture transitions are separate from live read-only telemetry. SDK types, CLI commands and both MCP contracts are unchanged; both new editable examples, their shared runtime source and docs ship in the regenerated authoring distributions.
Dock Backup adds App-owned, permission-scoped background copying and SHA-256 destination readback. It requires Desktop App 0.3.0 and separate native folder/automation authorization. See plugin-backup.md for supported storage, recovery and live-test boundaries.
plugin-backup.md
All 26 bundled examples now have task-specific native interfaces. Paper surfaces distinguish calculators, verification and reference tools; editing controls use a compact studio console; media keeps artwork prominent; Dock workflows show the actual connection or job state. Original generated landscape studies and record artwork are packaged fallbacks, not claims of live media. The device illustration is the project-owned Dock asset. Text, values and controls remain native and editable.
interface-kit.mjs, workflow-interfaces.mjs and media-interfaces.mjs compose the layouts. build-plugin-interfaces.mjs is the final, idempotent pass after feature generators: it assigns the visual release versions, generates artwork/symbols and recalculates manifest and asset hashes. Existing official feature generators invoke it automatically. Pillow is needed only for source regeneration.
interface-kit.mjs
workflow-interfaces.mjs
media-interfaces.mjs
build-plugin-interfaces.mjs
node apps/desktop/scripts/build-plugin-interfaces.mjs node apps/desktop/scripts/check-plugin-interfaces.mjs
The check uses the real Electron fixture sandbox for all 26 examples and captures initial and representative active/missing-data states at the actual device preview size under .cache/interface-review/final/. Inspect these images separately from validator results. Source images never contain baked UI labels. Preserve the system header, native source bindings, error feedback, write-event context and stream dimensions when editing layouts.
.cache/interface-review/final/
This release changes example presentation and bundled assets. SDK methods, runtime permissions, firmware protocols, CLI commands and both MCP tool schemas are unchanged. The shared tools distribution carries the updated editable examples and this guide to CLI, standalone MCP and Studio MCP consumers. Website submissions are versioned, contain MIT source and remain freely downloadable. Fixture review does not replace live device, camera gateway, editor or external-storage verification.
The public collection now starts with ingest, editing and workstation workflows. Dock Backup shows each destination's copy/readback state independently. Dock Vitals (the stable desk-ready identity) prioritizes differences, exposes current readings and preserves saved setup comparison. Cull Desk has separate Pick, Rate and Inspect modes, plus an optional paired Lightroom Classic adapter. Reference Board defaults to still reference images with direct fit controls. Lens Planner and Framing Study retain their stable package IDs and describe their planning/reference limits accurately.
desk-ready
The native interfaces use the original App’s black surfaces, white text and mint (#53FFAF) actions, with an aligned default control palette in Web/App and LVGL. Progress tracks honor the existing fill property. All text and controls remain native; no custom HTML layout or baked text is part of a plugin package. No runtime permission is added for appearance. Cull Desk's optional adapter declares network access and a host-held pairing token; existing installations must explicitly review the additional permission.
fill
The Lightroom bridge source, protocol tests and Lua adapter are in apps/desktop/plugin-bridges/lightroom-classic. The authoring tools distribute them under dist/bridges/lightroom-classic; both MCP environments receive the setup guidance in this document. It is not a generic shell or application-targeting API. Live Lightroom, real storage and physical-device checks remain distinct from fixtures.
apps/desktop/plugin-bridges/lightroom-classic
dist/bridges/lightroom-classic
The interface palette comes from packages/ui-tokens/src/tokens.json: black (#000000), dark surfaces (#202020), white text, secondary gray (#8D8D94) and mint (#53FFAF) for primary actions, progress and selection. Red (#E6434F) and yellow (#F2C800) convey failure and warning. The website synchronizes this source through npm run sync:brand; it does not define a separate brand palette. Packaged media studies use a tonal palette; user-selected imagery retains its original colors. The website's small interface symbols are keyed to their meaning (for example, upload, package contents and installation), with a shared optical weight. Generic decorative symbols and repeated success ticks are omitted where the text already conveys the information. SDK methods, permissions and projection fields are unchanged.
packages/ui-tokens/src/tokens.json
npm run sync:brand
Official interfaces reserve at least 24 device pixels (12 pixels in the 427x240 preview) below controls, hit targets, feedback and selection indicators. interface-kit.mjs defines CONTENT_BOTTOM=456 and footerY(height); layouts retain button heights and reposition adjacent readings, captions and media to keep them clear of the footer. Backgrounds and full-bleed media may reach the display edge. build-plugin-interfaces.mjs regenerates all 26 examples with patch release versions and refreshed hashes. CLI, standalone MCP and Studio MCP consume the same example sources and authoring guidance; SDK types, projection bounds and firmware rendering are unchanged.
CONTENT_BOTTOM=456
footerY(height)
The current 26 projects are development examples for learning and adaptation. They appear under /examples with an Example label and are separate from the production plugin catalog. They carry no official or featured endorsement. Source, sample previews, interactive demos and downloads remain available; review and refine a project for your own workflow. SDK capabilities, plugin identities and installation/update APIs are unchanged.
/examples
page-deck is a native three-page example with horizontal and vertical swipe targets, a shared footer and no permissions. The source README shows optional Host notification setup. Check it normally, inspect each page by dragging in the preview, then install on firmware advertising pages.swipe.v1. See local page navigation.
page-deck
pages.swipe.v1