Skip to main content

DSH-better-sidebar/tests/fixtures/aggregate-better-sidebar

2.4kStars182Forks140Issues4Watchers

The aggregate dual-mount test fixture included in the DSH-better-sidebar repository simulates the aggregate bundle preemptive mounting scenario, verifying that the plugin's own bundle patch automatically yields during repeated mounting to avoid crashes.

Evidence5/5methodologySourceInstallMaintenanceDSH versionSecurity scan
Machine-auditedInstall commandRepo verifieddsh-plugin topicLicenseREADMEAI wiki

ⓘ This plugin is a sub-package of the omdsh-dev/DSH-better-sidebar monorepo — stars and activity count the whole repository.

Language
TypeScript
License
MIT
Branch
main
deepseekdeepseek-harnessdshdsh-better-sidebardsh-pluginsidebar

Install

cmdweb profile
$ dsh plugin --profile web add github:omdsh-dev/DSH-better-sidebar#path:tests/fixtures/aggregate-better-sidebar

Run the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial

Install via your agent

Install the DeepSeek Harness plugin omdsh-dev/DSH-better-sidebar/tests/fixtures/aggregate-better-sidebar for me: review the repository at https://github.com/omdsh-dev/DSH-better-sidebar first, then run the install command and verify the plugin loads successfully.

Paste this instruction to the DSH Web GUI assistant — it will install and verify for you.

One-Sentence Positioning

This is the CI test fixture package bundled with the DSH-better-sidebar repository, used in end-to-end tests to replicate the scenario where "aggregate bundle preempts main plugin mounting", verifying that the main plugin's own bundle patch yields proactively during remounting instead of causing dsh web to crash due to duplicate /sidebar/api routes.

Core Capabilities

  • Mounts a bundle named dsh-better-sidebar in cordis patch with an independent entry id (aggregate-better-sidebar), simulating how aggregate packages like @linxin666/dsh-web-ui-all preemptively bundle the main plugin into their own entry
  • Triggers the guard expression on the main plugin's own cordis.patch.yml (introduced in PR #200), which detects when a bundle with the same package name is already enabled and mounted, then sets its own mount entry to disabled, preventing both lines from taking effect and causing duplicate /sidebar/api prefix route registration
  • Provides a no-op lib/index.js (export function apply() {}) as a placeholder entry for npm pack validity, ensuring the packed tarball conforms to the minimum contract of dsh plugin add
  • Called by the repository's own scripts/e2e-aggregate-mount.sh, which completes packing, installation, startup, and assertion in a fresh scratch profile following the real sequence of "fixture first → main plugin second"

Technical Implementation

  • Language: TypeScript compiled output (ESM), but this fixture's code itself is an empty function; the actual "functionality" is written in cordis.patch.yml
  • Key Dependencies: None — this is an independent package that neither depends on the main plugin's runtime nor introduces third-party libraries; the only "reference" is the mount declaration name: 'dsh-better-sidebar' in cordis.patch.yml
  • Architecture Pattern: cordis patch injection — writes a bundle entry into ~/.dsh/profiles/web/cordis.patch.yml via - insert: { id, name }; the bundle's name field is how cordis identifies "same package" (not the npm package name), which is why the fixture's package.json#name can be fixture-aggregate-better-sidebar
  • Entry File: lib/index.js (no-op placeholder); the actual mount surface is cordis.patch.yml

Applicable Scenarios

Only for the DSH-better-sidebar repository's own CI to run aggregate dual-mount smoke tests — simulating how a third-party aggregate package (e.g., dsh-web-ui-all) preempts installation of dsh-better-sidebar into the user profile with an independent entry id, verifying that the main plugin's own bundle patch automatically yields in this case, letting the aggregate entry take over the sidebar instead of crashing. If you're not a maintainer of this repository or running its CI, this package is of no use to you.

Prerequisites and Compatibility

DependencyMinimum VersionDescription
DSH0.1.0-rc.8+Fixture follows main repository in adapting to DSH 0.1.0-rc.8 (README.md:56, AGENTS.md pinned note)
Node.jsNot declaredPackage itself doesn't declare engines; actual CI requires Node ≥ 20 as stated in main repository README.md:113
PlatformCross-platformFixture body is cross-platform, but the "main plugin" it simulates depends on node-pty precompiled binaries on different platforms
Native ModulesNoneFixture itself doesn't introduce any native modules
Parent RepositoryDSH-better-sidebarMust be used with main plugin to reproduce full CI process; fixture itself is just the advance trigger

Installation

dsh plugin --profile web add github:omdsh-dev/DSH-better-sidebar/tests/fixtures/aggregate-better-sidebar

Note: This command is only to demonstrate dsh plugin add syntax support. The fixture's real usage is the repository's own scripts/e2e-aggregate-mount.sh, which uses npm pack to create a tarball and installs it into a temporary scratch profile as file:<tarball>.

Configuration

This plugin requires no additional configuration.

The fixture's own package.json has no config/dsh.bundle.config fields, and cordis.patch.yml only has entry id and bundle name without any configuration passed; it's just a mount declaration and doesn't modify dsh-better-sidebar's runtime behavior.

FAQ

Q: Is this package for regular users to install?

A: No. It's a CI test fixture bundled with the DSH-better-sidebar repository (package.json explicitly states "private": true, version pinned to 0.0.0), neither published to npm nor should be installed via the plugin marketplace. It has only one actual usage: the repository's scripts/e2e-aggregate-mount.sh in CI uses npm pack to create a tarball and installs it via file: path into a fresh scratch profile.

Q: What's its relationship with the main plugin dsh-better-sidebar?

A: It's a shell package with only a cordis.patch.yml that uses insert to mount a bundle with name dsh-better-sidebar into cordis with an independent entry id (aggregate-better-sidebar). Cordis therefore sees two different entry ids both mounting the same bundle name, and this conflict triggers the main plugin's own yield guard expression (introduced in PR #200, the when condition in cordis.patch.yml).

Q: What can be seen in the UI after installation?

A: Nothing. lib/index.js is an empty no-op apply(), the package itself doesn't register any UI, expose any services, or mount any routes; it just "reserves" a mount declaration for the main plugin, the actual sidebar UI is provided by the main plugin (or aggregate entry).

Q: What bug does this fixture prevent?

A: It prevents the "duplicate prefix route" crash fixed by PR #200. When an aggregate bundle (e.g., dsh-web-ui-all) preempts mounting dsh-better-sidebar with an independent id, and the main plugin's own bundle patch arrives later, if both lines take effect they will register the /sidebar/api prefix route twice, causing the entire dsh web startup to fail; the main plugin's cordis.patch.yml guard expression detects an existing enabled mount with the same package name and automatically sets its own line to disabled. This fixture is the fixed reproducer of this behavior in CI.

Q: Can I install it in a production profile?

A: Technically yes — it's a valid npm package and dsh plugin add will accept it; but it makes no sense. After installation it will only add one more mount declaration to your cordis patch without bringing any new functionality, and will instead trigger the main plugin's yield guard (equivalent to installing a useless copy; when actually running, the main plugin or aggregate entry is still working).

Difficulty Level

Expert — because it's not for end users, only for the repository's own CI scripts to read; the only "access" path is cloning the repository and running bash scripts/e2e-aggregate-mount.sh. Understanding it requires first understanding the main plugin's cordis.patch.yml guard expression, the design intent of PR #200, and the cordis loader's handling order for the same bundle name.

Known Issues and Limitations

  • lib/index.js is a no-op, the package itself has no runtime behavior; even if incorrectly installed into a real profile, it won't provide anything to the UI — it's just a declaration placeholder at the cordis patch layer
  • package.json#name is written as fixture-aggregate-better-sidebar (not the real dsh-better-sidebar), but cordis.patch.yml's name field is dsh-better-sidebar; cordis identifies "same package" by bundle name rather than npm package name, so the fixture can use any npm package name as long as the name field aligns with the main plugin
  • Version pinned to 0.0.0, private: true, won't be uploaded to npm via npm publish; the only distribution method is npm pack to create tarball within the repository
  • Fixture's DSH version adaptation with the main plugin is implicitly synchronized: the main repository states "this version adapts to DSH 0.1.0-rc.8" in README.md:56, the fixture follows the main repository's releases and has no DSH version assertions of its own

Read the usage guide →

Install steps, key points, FAQ and compatibility for this plugin — auto-derived from indexed fields.

Listing badge

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/omdsh-dev/DSH-better-sidebar/tests/fixtures/aggregate-better-sidebar)

Paste this markdown into your GitHub README to link back to this listing. The badge only states the listing — not a security endorsement.

← Back to plugin directory