Repository files navigation

SiYuan community bazaar

English | 简体中文

Bazaar package development samples

Submitting a bazaar package

If you have developed a plugin, theme, icon, template or widget and want to list it in the SiYuan community bazaar, follow these steps:

  1. Fork this repository

    Fork siyuan-note/bazaar on GitHub. If you have already forked, sync with the latest main branch first.

  2. Edit the bazaar package list TXT file

    In the repo root there are five list files: plugins.txt, themes.txt, icons.txt, templates.txt, widgets.txt. Add one line to the file that matches your package type. Format: owner/repo (owner is your GitHub username or org name, repo is the bazaar package repository name).

    • One owner/repo per line, with no extra commas or empty lines.
    • Example: siyuan-note/plugin-sample.
    • Each PR may only be one of: add exactly 1 new package; change maintainer (add 1 new owner/repo and delete the old owner/repo with the same type and same GitHub repository name); or delist one or more packages only. Do not mix adding/changing with unrelated delistings in the same PR.
  3. Open a PR

    Commit your changes and open a Pull Request to the main branch of this repo.

  4. Wait for review and merge

    The PR Check workflow runs automatically to verify that the new package meets bazaar rules (e.g. release, required files, metadata fields). Maintainers will also review. Please make changes as requested.

    If the PR Check workflow fails, update your changes using the check output. Do not open a new pull request. After you fix the package repo (e.g. update the Latest Release / package.zip), a scheduled job runs about every 20 minutes and re-checks open PRs that are not yet ci-passed by activity (Release changes are prioritized; idle PRs are checked less often) and updates the check comment. Maintainers can also add the Check label or run the workflow manually for an immediate re-check.

  5. Successfully listed

    After the review passes and the PR is merged, the bazaar index will update within minutes and the package will appear in the SiYuan bazaar (you may need to restart SiYuan once to refresh the bazaar index cache).

Updating a bazaar package

No need to open another PR. Release a new version in your package repository. The bazaar index will pull updates automatically.

Under normal circumstances, the community bazaar repo updates the index and deploys every one to three hours. You can check the deployment status on the Stage workflow page.

If it has not been updated for a long time, there may be an issue with the update (for example, the metadata version was not bumped). First check whether your repository has an open Stage check failure issue (label stage-fail); you can also inspect the latest Stage workflow logs.

Changing maintainers

If the original author can no longer maintain a listed bazaar package, a new maintainer may take it over. Changing maintainers requires a dedicated PR (one package per PR) and will only be merged after the original maintainer confirms.

Submission process

  1. Prepare the new repository

    The new maintainer should have a GitHub repository that can publish Releases (common approaches: fork the original repository, or have the original author transfer the repository). The repository must contain a valid bazaar package and publish a Latest Release that includes package.zip.

  2. Edit the bazaar package list TXT file

    In the list file for the corresponding type: remove the old owner/repo line and add the new owner/repo line.

    • Example: change alice/foo-plugin to bob/foo-plugin.
    • The name in the package metadata should stay the same as the previously listed package so users still recognize it as the same bazaar package; the url must be updated to the new repository address.
    • A maintainer change counts as a package update: the manifest version must be higher than the previously listed version, and you must publish a Latest Release with a new package.zip.
  3. Open a PR and ask the original maintainer to confirm

    After opening a Pull Request to the main branch of this repository, @ the original maintainer in the PR, explain why you are taking over and your maintenance plan, and ask them to confirm they agree to the change.

    If the original maintainer does not agree, the PR will not be merged.

  4. Wait for review and merge

    PR Check will verify the new repository against the listing rules. After the original maintainer confirms and checks pass, maintainers will merge the PR. Once merged, the bazaar index will update to the new owner/repo.

About download counts and other statistics

Bazaar package statistics are currently keyed by owner/repo. After a maintainer change, statistics from the old repository (such as download counts) are not inherited by default.

To migrate statistics, all of the following are required:

  1. The new maintainer requests the migration in the PR, or by opening a new issue in this repository;
  2. The original author replies and agrees;
  3. After confirmation, a SiYuan maintainer migrates the data manually on the server side.

Why is the repo named bazaar?

The name is inspired by the book The Cathedral and the Bazaar. The goal is not to be unconventional, but to continue the tradition of open source software.

Other questions

Please open an issue.

About

SiYuan community marketplace

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

SiYuan community bazaar

English | 简体中文

Bazaar package development samples

Submitting a bazaar package

If you have developed a plugin, theme, icon, template or widget and want to list it in the SiYuan community bazaar, follow these steps:

  1. Fork this repository

    Fork siyuan-note/bazaar on GitHub. If you have already forked, sync with the latest main branch first.

  2. Edit the bazaar package list TXT file

    In the repo root there are five list files: plugins.txt, themes.txt, icons.txt, templates.txt, widgets.txt. Add one line to the file that matches your package type. Format: owner/repo (owner is your GitHub username or org name, repo is the bazaar package repository name).

    • One owner/repo per line, with no extra commas or empty lines.
    • Example: siyuan-note/plugin-sample.
    • Each PR may only be one of: add exactly 1 new package; change maintainer (add 1 new owner/repo and delete the old owner/repo with the same type and same GitHub repository name); or delist one or more packages only. Do not mix adding/changing with unrelated delistings in the same PR.
  3. Open a PR

    Commit your changes and open a Pull Request to the main branch of this repo.

  4. Wait for review and merge

    The PR Check workflow runs automatically to verify that the new package meets bazaar rules (e.g. release, required files, metadata fields). Maintainers will also review. Please make changes as requested.

    If the PR Check workflow fails, update your changes using the check output. Do not open a new pull request. After you fix the package repo (e.g. update the Latest Release / package.zip), a scheduled job runs about every 20 minutes and re-checks open PRs that are not yet ci-passed by activity (Release changes are prioritized; idle PRs are checked less often) and updates the check comment. Maintainers can also add the Check label or run the workflow manually for an immediate re-check.

  5. Successfully listed

    After the review passes and the PR is merged, the bazaar index will update within minutes and the package will appear in the SiYuan bazaar (you may need to restart SiYuan once to refresh the bazaar index cache).

Updating a bazaar package

No need to open another PR. Release a new version in your package repository. The bazaar index will pull updates automatically.

Under normal circumstances, the community bazaar repo updates the index and deploys every one to three hours. You can check the deployment status on the Stage workflow page.

If it has not been updated for a long time, there may be an issue with the update (for example, the metadata version was not bumped). First check whether your repository has an open Stage check failure issue (label stage-fail); you can also inspect the latest Stage workflow logs.

Changing maintainers

If the original author can no longer maintain a listed bazaar package, a new maintainer may take it over. Changing maintainers requires a dedicated PR (one package per PR) and will only be merged after the original maintainer confirms.

Submission process

  1. Prepare the new repository

    The new maintainer should have a GitHub repository that can publish Releases (common approaches: fork the original repository, or have the original author transfer the repository). The repository must contain a valid bazaar package and publish a Latest Release that includes package.zip.

  2. Edit the bazaar package list TXT file

    In the list file for the corresponding type: remove the old owner/repo line and add the new owner/repo line.

    • Example: change alice/foo-plugin to bob/foo-plugin.
    • The name in the package metadata should stay the same as the previously listed package so users still recognize it as the same bazaar package; the url must be updated to the new repository address.
    • A maintainer change counts as a package update: the manifest version must be higher than the previously listed version, and you must publish a Latest Release with a new package.zip.
  3. Open a PR and ask the original maintainer to confirm

    After opening a Pull Request to the main branch of this repository, @ the original maintainer in the PR, explain why you are taking over and your maintenance plan, and ask them to confirm they agree to the change.

    If the original maintainer does not agree, the PR will not be merged.

  4. Wait for review and merge

    PR Check will verify the new repository against the listing rules. After the original maintainer confirms and checks pass, maintainers will merge the PR. Once merged, the bazaar index will update to the new owner/repo.

About download counts and other statistics

Bazaar package statistics are currently keyed by owner/repo. After a maintainer change, statistics from the old repository (such as download counts) are not inherited by default.

To migrate statistics, all of the following are required:

  1. The new maintainer requests the migration in the PR, or by opening a new issue in this repository;
  2. The original author replies and agrees;
  3. After confirmation, a SiYuan maintainer migrates the data manually on the server side.

Why is the repo named bazaar?

The name is inspired by the book The Cathedral and the Bazaar. The goal is not to be unconventional, but to continue the tradition of open source software.

Other questions

Please open an issue.

About

SiYuan community marketplace

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SiYuan community bazaar

English | 简体中文

Bazaar package development samples

Submitting a bazaar package

If you have developed a plugin, theme, icon, template or widget and want to list it in the SiYuan community bazaar, follow these steps:

  1. Fork this repository

    Fork siyuan-note/bazaar on GitHub. If you have already forked, sync with the latest main branch first.

  2. Edit the bazaar package list TXT file

    In the repo root there are five list files: plugins.txt, themes.txt, icons.txt, templates.txt, widgets.txt. Add one line to the file that matches your package type. Format: owner/repo (owner is your GitHub username or org name, repo is the bazaar package repository name).

    • One owner/repo per line, with no extra commas or empty lines.
    • Example: siyuan-note/plugin-sample.
    • Each PR may only be one of: add exactly 1 new package; change maintainer (add 1 new owner/repo and delete the old owner/repo with the same type and same GitHub repository name); or delist one or more packages only. Do not mix adding/changing with unrelated delistings in the same PR.
  3. Open a PR

    Commit your changes and open a Pull Request to the main branch of this repo.

  4. Wait for review and merge

    The PR Check workflow runs automatically to verify that the new package meets bazaar rules (e.g. release, required files, metadata fields). Maintainers will also review. Please make changes as requested.

    If the PR Check workflow fails, update your changes using the check output. Do not open a new pull request. After you fix the package repo (e.g. update the Latest Release / package.zip), a scheduled job runs about every 20 minutes and re-checks open PRs that are not yet ci-passed by activity (Release changes are prioritized; idle PRs are checked less often) and updates the check comment. Maintainers can also add the Check label or run the workflow manually for an immediate re-check.

  5. Successfully listed

    After the review passes and the PR is merged, the bazaar index will update within minutes and the package will appear in the SiYuan bazaar (you may need to restart SiYuan once to refresh the bazaar index cache).

Updating a bazaar package

No need to open another PR. Release a new version in your package repository. The bazaar index will pull updates automatically.

Under normal circumstances, the community bazaar repo updates the index and deploys every one to three hours. You can check the deployment status on the Stage workflow page.

If it has not been updated for a long time, there may be an issue with the update (for example, the metadata version was not bumped). First check whether your repository has an open Stage check failure issue (label stage-fail); you can also inspect the latest Stage workflow logs.

Changing maintainers

If the original author can no longer maintain a listed bazaar package, a new maintainer may take it over. Changing maintainers requires a dedicated PR (one package per PR) and will only be merged after the original maintainer confirms.

Submission process

  1. Prepare the new repository

    The new maintainer should have a GitHub repository that can publish Releases (common approaches: fork the original repository, or have the original author transfer the repository). The repository must contain a valid bazaar package and publish a Latest Release that includes package.zip.

  2. Edit the bazaar package list TXT file

    In the list file for the corresponding type: remove the old owner/repo line and add the new owner/repo line.

    • Example: change alice/foo-plugin to bob/foo-plugin.
    • The name in the package metadata should stay the same as the previously listed package so users still recognize it as the same bazaar package; the url must be updated to the new repository address.
    • A maintainer change counts as a package update: the manifest version must be higher than the previously listed version, and you must publish a Latest Release with a new package.zip.
  3. Open a PR and ask the original maintainer to confirm

    After opening a Pull Request to the main branch of this repository, @ the original maintainer in the PR, explain why you are taking over and your maintenance plan, and ask them to confirm they agree to the change.

    If the original maintainer does not agree, the PR will not be merged.

  4. Wait for review and merge

    PR Check will verify the new repository against the listing rules. After the original maintainer confirms and checks pass, maintainers will merge the PR. Once merged, the bazaar index will update to the new owner/repo.

About download counts and other statistics

Bazaar package statistics are currently keyed by owner/repo. After a maintainer change, statistics from the old repository (such as download counts) are not inherited by default.

To migrate statistics, all of the following are required:

  1. The new maintainer requests the migration in the PR, or by opening a new issue in this repository;
  2. The original author replies and agrees;
  3. After confirmation, a SiYuan maintainer migrates the data manually on the server side.

Why is the repo named bazaar?

The name is inspired by the book The Cathedral and the Bazaar. The goal is not to be unconventional, but to continue the tradition of open source software.

Other questions

Please open an issue.

About

SiYuan community marketplace

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SiYuan community bazaar

English | 简体中文

Bazaar package development samples

Submitting a bazaar package

If you have developed a plugin, theme, icon, template or widget and want to list it in the SiYuan community bazaar, follow these steps:

  1. Fork this repository

    Fork siyuan-note/bazaar on GitHub. If you have already forked, sync with the latest main branch first.

  2. Edit the bazaar package list TXT file

    In the repo root there are five list files: plugins.txt, themes.txt, icons.txt, templates.txt, widgets.txt. Add one line to the file that matches your package type. Format: owner/repo (owner is your GitHub username or org name, repo is the bazaar package repository name).

    • One owner/repo per line, with no extra commas or empty lines.
    • Example: siyuan-note/plugin-sample.
    • Each PR may only be one of: add exactly 1 new package; change maintainer (add 1 new owner/repo and delete the old owner/repo with the same type and same GitHub repository name); or delist one or more packages only. Do not mix adding/changing with unrelated delistings in the same PR.
  3. Open a PR

    Commit your changes and open a Pull Request to the main branch of this repo.

  4. Wait for review and merge

    The PR Check workflow runs automatically to verify that the new package meets bazaar rules (e.g. release, required files, metadata fields). Maintainers will also review. Please make changes as requested.

    If the PR Check workflow fails, update your changes using the check output. Do not open a new pull request. After you fix the package repo (e.g. update the Latest Release / package.zip), a scheduled job runs about every 20 minutes and re-checks open PRs that are not yet ci-passed by activity (Release changes are prioritized; idle PRs are checked less often) and updates the check comment. Maintainers can also add the Check label or run the workflow manually for an immediate re-check.

  5. Successfully listed

    After the review passes and the PR is merged, the bazaar index will update within minutes and the package will appear in the SiYuan bazaar (you may need to restart SiYuan once to refresh the bazaar index cache).

Updating a bazaar package

No need to open another PR. Release a new version in your package repository. The bazaar index will pull updates automatically.

Under normal circumstances, the community bazaar repo updates the index and deploys every one to three hours. You can check the deployment status on the Stage workflow page.

If it has not been updated for a long time, there may be an issue with the update (for example, the metadata version was not bumped). First check whether your repository has an open Stage check failure issue (label stage-fail); you can also inspect the latest Stage workflow logs.

Changing maintainers

If the original author can no longer maintain a listed bazaar package, a new maintainer may take it over. Changing maintainers requires a dedicated PR (one package per PR) and will only be merged after the original maintainer confirms.

Submission process

  1. Prepare the new repository

    The new maintainer should have a GitHub repository that can publish Releases (common approaches: fork the original repository, or have the original author transfer the repository). The repository must contain a valid bazaar package and publish a Latest Release that includes package.zip.

  2. Edit the bazaar package list TXT file

    In the list file for the corresponding type: remove the old owner/repo line and add the new owner/repo line.

    • Example: change alice/foo-plugin to bob/foo-plugin.
    • The name in the package metadata should stay the same as the previously listed package so users still recognize it as the same bazaar package; the url must be updated to the new repository address.
    • A maintainer change counts as a package update: the manifest version must be higher than the previously listed version, and you must publish a Latest Release with a new package.zip.
  3. Open a PR and ask the original maintainer to confirm

    After opening a Pull Request to the main branch of this repository, @ the original maintainer in the PR, explain why you are taking over and your maintenance plan, and ask them to confirm they agree to the change.

    If the original maintainer does not agree, the PR will not be merged.

  4. Wait for review and merge

    PR Check will verify the new repository against the listing rules. After the original maintainer confirms and checks pass, maintainers will merge the PR. Once merged, the bazaar index will update to the new owner/repo.

About download counts and other statistics

Bazaar package statistics are currently keyed by owner/repo. After a maintainer change, statistics from the old repository (such as download counts) are not inherited by default.

To migrate statistics, all of the following are required:

  1. The new maintainer requests the migration in the PR, or by opening a new issue in this repository;
  2. The original author replies and agrees;
  3. After confirmation, a SiYuan maintainer migrates the data manually on the server side.

Why is the repo named bazaar?

The name is inspired by the book The Cathedral and the Bazaar. The goal is not to be unconventional, but to continue the tradition of open source software.

Other questions

Please open an issue.

About

SiYuan community marketplace

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

SiYuan community bazaar

English | 简体中文

Bazaar package development samples

Submitting a bazaar package

If you have developed a plugin, theme, icon, template or widget and want to list it in the SiYuan community bazaar, follow these steps:

  1. Fork this repository

    Fork siyuan-note/bazaar on GitHub. If you have already forked, sync with the latest main branch first.

  2. Edit the bazaar package list TXT file

    In the repo root there are five list files: plugins.txt, themes.txt, icons.txt, templates.txt, widgets.txt. Add one line to the file that matches your package type. Format: owner/repo (owner is your GitHub username or org name, repo is the bazaar package repository name).

    • One owner/repo per line, with no extra commas or empty lines.
    • Example: siyuan-note/plugin-sample.
    • Each PR may only be one of: add exactly 1 new package; change maintainer (add 1 new owner/repo and delete the old owner/repo with the same type and same GitHub repository name); or delist one or more packages only. Do not mix adding/changing with unrelated delistings in the same PR.
  3. Open a PR

    Commit your changes and open a Pull Request to the main branch of this repo.

  4. Wait for review and merge

    The PR Check workflow runs automatically to verify that the new package meets bazaar rules (e.g. release, required files, metadata fields). Maintainers will also review. Please make changes as requested.

    If the PR Check workflow fails, update your changes using the check output. Do not open a new pull request. After you fix the package repo (e.g. update the Latest Release / package.zip), a scheduled job runs about every 20 minutes and re-checks open PRs that are not yet ci-passed by activity (Release changes are prioritized; idle PRs are checked less often) and updates the check comment. Maintainers can also add the Check label or run the workflow manually for an immediate re-check.

  5. Successfully listed

    After the review passes and the PR is merged, the bazaar index will update within minutes and the package will appear in the SiYuan bazaar (you may need to restart SiYuan once to refresh the bazaar index cache).

Updating a bazaar package

No need to open another PR. Release a new version in your package repository. The bazaar index will pull updates automatically.

Under normal circumstances, the community bazaar repo updates the index and deploys every one to three hours. You can check the deployment status on the Stage workflow page.

If it has not been updated for a long time, there may be an issue with the update (for example, the metadata version was not bumped). First check whether your repository has an open Stage check failure issue (label stage-fail); you can also inspect the latest Stage workflow logs.

Changing maintainers

If the original author can no longer maintain a listed bazaar package, a new maintainer may take it over. Changing maintainers requires a dedicated PR (one package per PR) and will only be merged after the original maintainer confirms.

Submission process

  1. Prepare the new repository

    The new maintainer should have a GitHub repository that can publish Releases (common approaches: fork the original repository, or have the original author transfer the repository). The repository must contain a valid bazaar package and publish a Latest Release that includes package.zip.

  2. Edit the bazaar package list TXT file

    In the list file for the corresponding type: remove the old owner/repo line and add the new owner/repo line.

    • Example: change alice/foo-plugin to bob/foo-plugin.
    • The name in the package metadata should stay the same as the previously listed package so users still recognize it as the same bazaar package; the url must be updated to the new repository address.
    • A maintainer change counts as a package update: the manifest version must be higher than the previously listed version, and you must publish a Latest Release with a new package.zip.
  3. Open a PR and ask the original maintainer to confirm

    After opening a Pull Request to the main branch of this repository, @ the original maintainer in the PR, explain why you are taking over and your maintenance plan, and ask them to confirm they agree to the change.

    If the original maintainer does not agree, the PR will not be merged.

  4. Wait for review and merge

    PR Check will verify the new repository against the listing rules. After the original maintainer confirms and checks pass, maintainers will merge the PR. Once merged, the bazaar index will update to the new owner/repo.

About download counts and other statistics

Bazaar package statistics are currently keyed by owner/repo. After a maintainer change, statistics from the old repository (such as download counts) are not inherited by default.

To migrate statistics, all of the following are required:

  1. The new maintainer requests the migration in the PR, or by opening a new issue in this repository;
  2. The original author replies and agrees;
  3. After confirmation, a SiYuan maintainer migrates the data manually on the server side.

Why is the repo named bazaar?

The name is inspired by the book The Cathedral and the Bazaar. The goal is not to be unconventional, but to continue the tradition of open source software.

Other questions

Please open an issue.

About

SiYuan community marketplace

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SiYuan community bazaar

English | 简体中文

Bazaar package development samples

Submitting a bazaar package

If you have developed a plugin, theme, icon, template or widget and want to list it in the SiYuan community bazaar, follow these steps:

  1. Fork this repository

    Fork siyuan-note/bazaar on GitHub. If you have already forked, sync with the latest main branch first.

  2. Edit the bazaar package list TXT file

    In the repo root there are five list files: plugins.txt, themes.txt, icons.txt, templates.txt, widgets.txt. Add one line to the file that matches your package type. Format: owner/repo (owner is your GitHub username or org name, repo is the bazaar package repository name).

    • One owner/repo per line, with no extra commas or empty lines.
    • Example: siyuan-note/plugin-sample.
    • Each PR may only be one of: add exactly 1 new package; change maintainer (add 1 new owner/repo and delete the old owner/repo with the same type and same GitHub repository name); or delist one or more packages only. Do not mix adding/changing with unrelated delistings in the same PR.
  3. Open a PR

    Commit your changes and open a Pull Request to the main branch of this repo.

  4. Wait for review and merge

    The PR Check workflow runs automatically to verify that the new package meets bazaar rules (e.g. release, required files, metadata fields). Maintainers will also review. Please make changes as requested.

    If the PR Check workflow fails, update your changes using the check output. Do not open a new pull request. After you fix the package repo (e.g. update the Latest Release / package.zip), a scheduled job runs about every 20 minutes and re-checks open PRs that are not yet ci-passed by activity (Release changes are prioritized; idle PRs are checked less often) and updates the check comment. Maintainers can also add the Check label or run the workflow manually for an immediate re-check.

  5. Successfully listed

    After the review passes and the PR is merged, the bazaar index will update within minutes and the package will appear in the SiYuan bazaar (you may need to restart SiYuan once to refresh the bazaar index cache).

Updating a bazaar package

No need to open another PR. Release a new version in your package repository. The bazaar index will pull updates automatically.

Under normal circumstances, the community bazaar repo updates the index and deploys every one to three hours. You can check the deployment status on the Stage workflow page.

If it has not been updated for a long time, there may be an issue with the update (for example, the metadata version was not bumped). First check whether your repository has an open Stage check failure issue (label stage-fail); you can also inspect the latest Stage workflow logs.

Changing maintainers

If the original author can no longer maintain a listed bazaar package, a new maintainer may take it over. Changing maintainers requires a dedicated PR (one package per PR) and will only be merged after the original maintainer confirms.

Submission process

  1. Prepare the new repository

    The new maintainer should have a GitHub repository that can publish Releases (common approaches: fork the original repository, or have the original author transfer the repository). The repository must contain a valid bazaar package and publish a Latest Release that includes package.zip.

  2. Edit the bazaar package list TXT file

    In the list file for the corresponding type: remove the old owner/repo line and add the new owner/repo line.

    • Example: change alice/foo-plugin to bob/foo-plugin.
    • The name in the package metadata should stay the same as the previously listed package so users still recognize it as the same bazaar package; the url must be updated to the new repository address.
    • A maintainer change counts as a package update: the manifest version must be higher than the previously listed version, and you must publish a Latest Release with a new package.zip.
  3. Open a PR and ask the original maintainer to confirm

    After opening a Pull Request to the main branch of this repository, @ the original maintainer in the PR, explain why you are taking over and your maintenance plan, and ask them to confirm they agree to the change.

    If the original maintainer does not agree, the PR will not be merged.

  4. Wait for review and merge

    PR Check will verify the new repository against the listing rules. After the original maintainer confirms and checks pass, maintainers will merge the PR. Once merged, the bazaar index will update to the new owner/repo.

About download counts and other statistics

Bazaar package statistics are currently keyed by owner/repo. After a maintainer change, statistics from the old repository (such as download counts) are not inherited by default.

To migrate statistics, all of the following are required:

  1. The new maintainer requests the migration in the PR, or by opening a new issue in this repository;
  2. The original author replies and agrees;
  3. After confirmation, a SiYuan maintainer migrates the data manually on the server side.

Why is the repo named bazaar?

The name is inspired by the book The Cathedral and the Bazaar. The goal is not to be unconventional, but to continue the tradition of open source software.

Other questions

Please open an issue.

About

SiYuan community marketplace

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SiYuan community bazaar

English | 简体中文

Bazaar package development samples

Submitting a bazaar package

If you have developed a plugin, theme, icon, template or widget and want to list it in the SiYuan community bazaar, follow these steps:

  1. Fork this repository

    Fork siyuan-note/bazaar on GitHub. If you have already forked, sync with the latest main branch first.

  2. Edit the bazaar package list TXT file

    In the repo root there are five list files: plugins.txt, themes.txt, icons.txt, templates.txt, widgets.txt. Add one line to the file that matches your package type. Format: owner/repo (owner is your GitHub username or org name, repo is the bazaar package repository name).

    • One owner/repo per line, with no extra commas or empty lines.
    • Example: siyuan-note/plugin-sample.
    • Each PR may only be one of: add exactly 1 new package; change maintainer (add 1 new owner/repo and delete the old owner/repo with the same type and same GitHub repository name); or delist one or more packages only. Do not mix adding/changing with unrelated delistings in the same PR.
  3. Open a PR

    Commit your changes and open a Pull Request to the main branch of this repo.

  4. Wait for review and merge

    The PR Check workflow runs automatically to verify that the new package meets bazaar rules (e.g. release, required files, metadata fields). Maintainers will also review. Please make changes as requested.

    If the PR Check workflow fails, update your changes using the check output. Do not open a new pull request. After you fix the package repo (e.g. update the Latest Release / package.zip), a scheduled job runs about every 20 minutes and re-checks open PRs that are not yet ci-passed by activity (Release changes are prioritized; idle PRs are checked less often) and updates the check comment. Maintainers can also add the Check label or run the workflow manually for an immediate re-check.

  5. Successfully listed

    After the review passes and the PR is merged, the bazaar index will update within minutes and the package will appear in the SiYuan bazaar (you may need to restart SiYuan once to refresh the bazaar index cache).

Updating a bazaar package

No need to open another PR. Release a new version in your package repository. The bazaar index will pull updates automatically.

Under normal circumstances, the community bazaar repo updates the index and deploys every one to three hours. You can check the deployment status on the Stage workflow page.

If it has not been updated for a long time, there may be an issue with the update (for example, the metadata version was not bumped). First check whether your repository has an open Stage check failure issue (label stage-fail); you can also inspect the latest Stage workflow logs.

Changing maintainers

If the original author can no longer maintain a listed bazaar package, a new maintainer may take it over. Changing maintainers requires a dedicated PR (one package per PR) and will only be merged after the original maintainer confirms.

Submission process

  1. Prepare the new repository

    The new maintainer should have a GitHub repository that can publish Releases (common approaches: fork the original repository, or have the original author transfer the repository). The repository must contain a valid bazaar package and publish a Latest Release that includes package.zip.

  2. Edit the bazaar package list TXT file

    In the list file for the corresponding type: remove the old owner/repo line and add the new owner/repo line.

    • Example: change alice/foo-plugin to bob/foo-plugin.
    • The name in the package metadata should stay the same as the previously listed package so users still recognize it as the same bazaar package; the url must be updated to the new repository address.
    • A maintainer change counts as a package update: the manifest version must be higher than the previously listed version, and you must publish a Latest Release with a new package.zip.
  3. Open a PR and ask the original maintainer to confirm

    After opening a Pull Request to the main branch of this repository, @ the original maintainer in the PR, explain why you are taking over and your maintenance plan, and ask them to confirm they agree to the change.

    If the original maintainer does not agree, the PR will not be merged.

  4. Wait for review and merge

    PR Check will verify the new repository against the listing rules. After the original maintainer confirms and checks pass, maintainers will merge the PR. Once merged, the bazaar index will update to the new owner/repo.

About download counts and other statistics

Bazaar package statistics are currently keyed by owner/repo. After a maintainer change, statistics from the old repository (such as download counts) are not inherited by default.

To migrate statistics, all of the following are required:

  1. The new maintainer requests the migration in the PR, or by opening a new issue in this repository;
  2. The original author replies and agrees;
  3. After confirmation, a SiYuan maintainer migrates the data manually on the server side.

Why is the repo named bazaar?

The name is inspired by the book The Cathedral and the Bazaar. The goal is not to be unconventional, but to continue the tradition of open source software.

Other questions

Please open an issue.

About

SiYuan community marketplace

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

SiYuan community bazaar

English | 简体中文

Bazaar package development samples

Submitting a bazaar package

If you have developed a plugin, theme, icon, template or widget and want to list it in the SiYuan community bazaar, follow these steps:

  1. Fork this repository

    Fork siyuan-note/bazaar on GitHub. If you have already forked, sync with the latest main branch first.

  2. Edit the bazaar package list TXT file

    In the repo root there are five list files: plugins.txt, themes.txt, icons.txt, templates.txt, widgets.txt. Add one line to the file that matches your package type. Format: owner/repo (owner is your GitHub username or org name, repo is the bazaar package repository name).

    • One owner/repo per line, with no extra commas or empty lines.
    • Example: siyuan-note/plugin-sample.
    • Each PR may only be one of: add exactly 1 new package; change maintainer (add 1 new owner/repo and delete the old owner/repo with the same type and same GitHub repository name); or delist one or more packages only. Do not mix adding/changing with unrelated delistings in the same PR.
  3. Open a PR

    Commit your changes and open a Pull Request to the main branch of this repo.

  4. Wait for review and merge

    The PR Check workflow runs automatically to verify that the new package meets bazaar rules (e.g. release, required files, metadata fields). Maintainers will also review. Please make changes as requested.

    If the PR Check workflow fails, update your changes using the check output. Do not open a new pull request. After you fix the package repo (e.g. update the Latest Release / package.zip), a scheduled job runs about every 20 minutes and re-checks open PRs that are not yet ci-passed by activity (Release changes are prioritized; idle PRs are checked less often) and updates the check comment. Maintainers can also add the Check label or run the workflow manually for an immediate re-check.

  5. Successfully listed

    After the review passes and the PR is merged, the bazaar index will update within minutes and the package will appear in the SiYuan bazaar (you may need to restart SiYuan once to refresh the bazaar index cache).

Updating a bazaar package

No need to open another PR. Release a new version in your package repository. The bazaar index will pull updates automatically.

Under normal circumstances, the community bazaar repo updates the index and deploys every one to three hours. You can check the deployment status on the Stage workflow page.

If it has not been updated for a long time, there may be an issue with the update (for example, the metadata version was not bumped). First check whether your repository has an open Stage check failure issue (label stage-fail); you can also inspect the latest Stage workflow logs.

Changing maintainers

If the original author can no longer maintain a listed bazaar package, a new maintainer may take it over. Changing maintainers requires a dedicated PR (one package per PR) and will only be merged after the original maintainer confirms.

Submission process

  1. Prepare the new repository

    The new maintainer should have a GitHub repository that can publish Releases (common approaches: fork the original repository, or have the original author transfer the repository). The repository must contain a valid bazaar package and publish a Latest Release that includes package.zip.

  2. Edit the bazaar package list TXT file

    In the list file for the corresponding type: remove the old owner/repo line and add the new owner/repo line.

    • Example: change alice/foo-plugin to bob/foo-plugin.
    • The name in the package metadata should stay the same as the previously listed package so users still recognize it as the same bazaar package; the url must be updated to the new repository address.
    • A maintainer change counts as a package update: the manifest version must be higher than the previously listed version, and you must publish a Latest Release with a new package.zip.
  3. Open a PR and ask the original maintainer to confirm

    After opening a Pull Request to the main branch of this repository, @ the original maintainer in the PR, explain why you are taking over and your maintenance plan, and ask them to confirm they agree to the change.

    If the original maintainer does not agree, the PR will not be merged.

  4. Wait for review and merge

    PR Check will verify the new repository against the listing rules. After the original maintainer confirms and checks pass, maintainers will merge the PR. Once merged, the bazaar index will update to the new owner/repo.

About download counts and other statistics

Bazaar package statistics are currently keyed by owner/repo. After a maintainer change, statistics from the old repository (such as download counts) are not inherited by default.

To migrate statistics, all of the following are required:

  1. The new maintainer requests the migration in the PR, or by opening a new issue in this repository;
  2. The original author replies and agrees;
  3. After confirmation, a SiYuan maintainer migrates the data manually on the server side.

Why is the repo named bazaar?

The name is inspired by the book The Cathedral and the Bazaar. The goal is not to be unconventional, but to continue the tradition of open source software.

Other questions

Please open an issue.

About

SiYuan community marketplace

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages