72 lines
3.8 KiB
Plaintext
72 lines
3.8 KiB
Plaintext
---
|
|
title: Community Workshop
|
|
sidebar_label: Overview
|
|
tags:
|
|
- Workshop
|
|
- Custom Widgets
|
|
- Custom CSS
|
|
---
|
|
|
|
import { WorkshopFlowDiagram } from "@site/src/components/pages/core-concepts/technical-diagrams";
|
|
|
|
# Community Workshop
|
|
|
|
The [Community Workshop](pathname:///workshop) hosts community Custom Widgets and dashboard CSS.
|
|
|
|
:::warning Experimental
|
|
|
|
Workshop content is community-maintained. Review its source and permissions before installation.
|
|
|
|
:::
|
|
|
|
## Content flow
|
|
|
|
<WorkshopFlowDiagram />
|
|
|
|
Workshop also exposes the [Homarr Assistant provider](./homarr-provider). Its model-routing and quota path is separate
|
|
from Custom Widget and CSS submissions.
|
|
|
|
## Install content
|
|
|
|
- Install a Custom Widget from **Management → Custom Widgets → Import from Workshop**.
|
|
- Import dashboard CSS from **Board settings → Custom CSS → Import from Workshop**.
|
|
|
|
Custom Widget credentials stay in your Homarr instance. Ordinary installation does not load the workbench; **Remix in
|
|
workbench** installs a separate local widget and opens its draft. Widgets without data sources need no URL or credentials.
|
|
|
|
Installation records the Workshop endpoint, submission, revision, and content fingerprint. A JSON file import has no
|
|
Workshop identity, even when its name matches a submission. Editor layout and credentials are not part of the portable
|
|
definition. Native integration selections are also local: exports clear their default IDs, and installation binds them
|
|
to existing integrations in your instance. Leaving a selection empty defers setup to each board widget's configuration.
|
|
|
|
## Updates and rollback
|
|
|
|
The workbench's Workshop panel compares a linked installation with its latest revision. Applying an update preserves
|
|
local service URLs, network scopes, and credentials. Changed source identities or authentication destinations require
|
|
installing a separate copy. Locally modified definitions also require a separate copy; Homarr does not merge authored JSX.
|
|
Compatible native integration selections are retained; new options and options whose allowed integration kinds change
|
|
start unconfigured. The review also includes shared-content declarations and their write permissions. Stored board content
|
|
and each user's preferences remain in Homarr and are not included in a submission.
|
|
|
|
Each update retains one previous installed package for rollback. Rollback restores the definition, preserves current
|
|
service URLs and credentials, and works without contacting Workshop. It refuses changed source authentication bindings.
|
|
Changing the configured Workshop endpoint disables upstream updates for installations linked to the previous endpoint.
|
|
|
|
## Publish content
|
|
|
|
Publish a saved Custom Widget from its action menu or workbench. The reviewed saved definition must still match when
|
|
publication starts. Updating a linked submission requires its Workshop author account and preserves its identity,
|
|
screenshots, votes, and comments. A remix creates a new submission with attribution. Publishing succeeds independently of
|
|
linking the resulting submission back to your local widget; a linking failure must not be retried as a new publication.
|
|
|
|
Custom JSX v2 remains supported. Scoped styles, fragments, preferences, shared content, and native capabilities use
|
|
`homarr-custom-widget-v3`; Workshop clients and the Workshop service must support that schema before publishing or
|
|
updating such submissions. Custom CSS and manual submissions can be published from the Workshop website.
|
|
|
|
Sign in to the Workshop and open **Yours** to update or delete submissions and review reports. Signed-in users can vote,
|
|
comment, and report content; Workshop moderators can remove content. Workshop moderation is separate from administration
|
|
of a Homarr instance.
|
|
|
|
See the [Workshop operator guide](/docs/advanced/development/workshop-operator) to host Workshop or
|
|
[Workshop development](/docs/advanced/development/workshop) to run it from the repository.
|