acryldev/acryl--plugins-dsh-community-market ↗★ 237

dsh-community-market

Community plugin discovery and managed package operations for ACRYL 适合DSH Desktop用户,用于发现、安装和管理社区插件。

Package
dsh-community-market
Compatibility
Unverified
Harness peer range
0.1.5-alpha.1
Cordis peer range
4.0.2
Version
0.1.0-dev.0
License
MIT
Last updated
Sep 16, 2026

Install

This plugin has no verified bundle, or compatibility checks failed. Read the repository notes first. Read the full README ↗

DSH Community Market

中文说明

DSH Community Market is the open plugin market built into DSH Desktop. It helps people discover community plugins and, on Desktop, install, manage, or remove npm packages that pass the Market Host's checks.

Current status: complete and built into DSH Desktop. The package provides loadable Host and Client entries, persisted user-owned source records, a constrained HTTPS client, standard sources and reviewed cooperating-source adapters, an official Plugin market tab under Settings > Plugins, a sidebar launcher, Host-managed install and receipt-backed uninstall, plus fail-closed enable/disable controls for mutable direct bundles. This is not a claim that listed or installable plugin code is safe.

Available capabilities

The current interface has four views:

  1. Discover shows all normalized listings loaded from the selected source. Clicking any card immediately opens the same action dialog, where Desktop checks for a managed installation before falling back to details or a safe, display-only manual hint.
  2. Installable is a fail-closed structural candidate list derived from the selected source's complete index. It requires reviewed provider verification with a repository_backlink, an exact stable npm version, and a canonical repository, and excludes product-blocked packages. Catalog membership is independent of whether a package is installed, receipted, disabled, or was later uninstalled locally, so those states do not remove its card. Building this list does not query npm for every package; preview and execution separately decide whether a local operation is allowed, and its cards use the same action dialog as Discover.
  3. Installed reconciles valid Market receipts with Desktop's active-profile direct-bundle inventory. Receipt-owned bundles can be uninstalled; mutable bundles can be disabled and enabled again. A disabled receipt-owned bundle keeps both Enable and Uninstall.
  4. Sources selects and manages catalog sources. Exactly one source is browsed at a time.

Clicking a plugin card opens the dialog synchronously and asks the Host whether that exact source/item can use managed installation. A successful preview verifies it against the official npm registry, including identity, repository, integrity, runtime, lifecycle scripts, DSH bundle evidence, and the active profile, then turns the same dialog into an exact confirmation. The Host repeats mutable checks immediately before execution. If managed preview is unavailable, the dialog remains a details view and may show a display-only exact npm command reconstructed by the Host from normalized identity. It never uses a provider command, never sends that command to a Desktop action, and never executes it: opening DSH Terminal only opens Desktop's built-in terminal so the user can review, copy, and run the command themselves. A dsh plugin add launched through that built-in terminal uses Desktop's protected install-recovery boundary; direct pnpm or npm commands in that terminal and commands run in an external system terminal do not. After a successful managed profile change, the user can restart immediately with a one-time Desktop action or choose to restart later. The market is a shell around existing DSH capabilities; it does not invent a second plugin format, package manager, profile store, or privileged installer.

Catalog sources

The market remains open to ongoing cooperation with a wide range of plugin data sources. People may save several sources, but browse exactly one selected source at a time. They may switch the selection or add a source that implements the published catalog contract. Switching source starts a fresh browsing session: the visible list, search, category selection, and pagination are reset. Every source is isolated behind an adapter, and the market UI sees only the same validated, normalized data model.

Anyone can provide, integrate, and use a plugin data source. A conforming source only needs to publish a catalog-source manifest and return data matching the catalog-provider-page schema from its /v1/plugins endpoint, with no custom Market code. An existing API can keep its own format and contact us to join as a cooperating source through a reviewed adapter shipped with Market. A source may provide media.icon; Desktop validates and proxies it before display. Sources without an icon remain valid and receive a local fallback.

Before presenting a selected source, the Host builds one complete, validated local index. A standard source is scanned through its declared cursor and page limits; the reviewed 1024Store adapter reads its full registry once and normalizes it in Schema-bounded chunks. The reviewed dshfind adapter walks its REST pages with one data_version fixed across the complete scan. Search, multi-category OR filtering, category choices, and pagination then run against that complete local index without refetching the provider for each interaction. Every visible page contains at most 50 items, and the category choices cover all categories in the index rather than only pages already shown. Installable is a fail-closed structural subset of the same index and does not change with local installed, receipt, or enabled/disabled state; authoritative npm and local-operation verification begin only when the user previews one candidate.

The Host reuses a completed index until its cache expires (currently five minutes by default). When optional index metadata is returned, scannedAt identifies the completed scan, expiresAt its cache deadline, optional providerRevision the source revision observed consistently across the scan, and cacheStatus whether the response was freshly scanned or reused. An explicit refresh replaces the index and bypasses the underlying catalog-response cache; it is not merely a repaint of the current 50 items.

DSH 1024Store is one of the catalog providers currently cooperating with this project. The market ships a reviewed local adapter for its public API, but the cooperation does not make it enabled by default, preferred in sorting, a fallback when no source is selected, or an endorsement of its listings. That project independently maintains its discovery, validation, website, API, and the separately published dsh-1024store plugin. DSH Community Market is not a fork, repackaging, or official client of that plugin.

dshfind is another optional cooperating catalog source. Its reviewed adapter reads the public REST catalog only after the user adds and selects it. The adapter fixes the first page's data_version for every later page, then serves search, categories, and pagination from the completed local index. dshfind's published anonymous quota means the first complete synchronization may be deliberately throttled and take longer than an ordinary page load. It is not selected by default, preferred, recommended, or used as a fallback.

dshfind may supply a provider-reviewed npm method containing an exact stable version and repository_backlink evidence. The adapter emits package and latestVersion only when exactly one method is npm, verified, repository_backlink, does not require build allowance, and agrees with a supplied install.pkg_name; all other entries remain browse-only. It neither displays nor executes install.cmd and never infers identity from command text. A resulting Installable card is still only a structural candidate: the Host independently revalidates npm, repository, integrity, runtime, lifecycle, bundle, and profile facts during preview and execution. dshfind scores, grades, featured/official labels, risk labels, and installation probes remain provider claims; none is an Anywhere Labs security review or endorsement.

All catalog data is remote and untrusted. A listing means only that a provider supplied metadata; it does not mean that Anywhere Labs reviewed, recommends, or guarantees the plugin.

Safety promise

  • Background browsing never installs a package or executes repository code.
  • Installation starts only after an explicit user action and confirmation.
  • Installable is a Host-produced, fail-closed structural candidate set from the selected catalog, not a renderer guess or proof that npm was checked. A candidate needs reviewed provider verification with repository_backlink, an exact stable npm target, and a canonical repository, and must not be product-blocked. Installation, receipt, uninstall history, and enabled/disabled state never grant or remove catalog membership. Preview performs the first authoritative official-registry and local-action check for that one package; execution repeats mutable checks.
  • The managed installer accepts exact stable npm versions only. It does not install GitHub URLs, mutable ranges or tags, deprecated packages, packages whose target manifest defines preinstall, install, postinstall, or prepare, or packages incompatible with the bundled DSH rc.2 or Node.js runtime.
  • Provider-supplied command strings, install snippets, and repository install instructions are discarded, never displayed as a Host manual hint, and never executed. A separate manual hint, when available, is an exact npm command reconstructed by the Host from normalized identity, marked as not fully verified, and displayed for the user to run at their own discretion. For a qualifying dshfind item, that normalized identity comes only from the reviewed structured npm method, never from install.cmd.
  • The renderer submits only source/item or receipt identifiers for managed operations. The Open DSH Terminal action submits an empty request and never receives, copies, or executes the displayed manual command.
  • The confirmation shows the exact npm package and version plus the active profile. Plugin changes use the existing Desktop-managed DSH plugin service and run one operation at a time; success offers Restart later and Restart now.
  • Before a Market install or a built-in-terminal dsh plugin add, Desktop creates a private recovery snapshot of only the active profile's package.json, pnpm-lock.yaml, and pnpm-workspace.yaml. It does not back up or actively roll back node_modules, read environment variables, or collect separate credential stores. The three allowlisted files are copied as-is and therefore must not contain credentials.
  • A successful protected install remains pending until the next Desktop generation starts the Host successfully and receives a healthy Renderer report within the 30-second deadline. Another protected plugin add is refused in the meantime. If startup fails, Desktop first saves local diagnostic evidence, restores only a recognized before/after configuration image, and relaunches at most once. Unknown file drift is not overwritten and requires manual repair.
  • Uninstall is available only when a valid Market receipt still matches a direct bundle in the active profile. Mutable direct bundles can have their Desktop loading choice disabled or enabled again; this neither changes package ownership nor removes or sandboxes the code.
  • The first release will not include accounts, telemetry, silent installs, automatic plugin updates, or a catalog backend.

These checks establish package identity and a narrow compatibility boundary; they do not review the plugin or its dependency tree for malicious or unsafe behavior. Installed plugins run as local code with the user's permissions. Read Install and uninstall and Security before testing or reviewing package operations.

Documentation

  • Market shell design: product boundary, architecture, profiles, failure behavior, and delivery phases.
  • Install and uninstall: the four views, user workflow, Host verification, receipts, supported targets, and developer integration boundary.
  • Catalog provider contract: source manifests, query parameters, wire and normalized JSON, selected-source behavior, and the implementation handoff.
  • Catalog adapter guide: the direct standard-source path, the reviewed adapter path for an existing API, and a mapping template.
  • Security: trust model, reporting, and non-negotiable installation rules.
  • Desktop plugin services: the desktopProfiles and desktopPnpm contracts used by Market package operations.
  • DSH plugin development: the shared plugin model used by ordinary DSH and Desktop.

Delivery plan

  • Phase 0 — complete: package ownership, documentation, trust boundary, and headless checks.
  • Phase 1 — complete and built in: source selection, user-added conforming sources, one-source-at-a-time browsing, search, plugin details, and loading/empty/error states.
  • Phase 2 — complete and built in: exact stable npm installation into the active profile, configuration-level install recovery, and receipt-backed uninstall through the managed Desktop service.
  • Later: updates and broader compatibility evidence.

Catalog collection, submission review, accounts, rankings, and hosting remain the responsibility of catalog providers rather than this package.

License and attribution

Package code and documentation are licensed under the MIT License. No DSH 1024Store or dshfind catalog snapshot, provider command, or artwork is bundled in this package. DSH 1024Store's public catalog metadata is published under CC0-1.0; its source and provenance remain documented by the upstream catalog project. dshfind remains an independent service whose public metadata is read at runtime under its own published API contract.