Skip to content

chore(deps): update dependency clean-jsdoc-theme to v5#148

Open
renovate[bot] wants to merge 2 commits into
masterfrom
renovate/clean-jsdoc-theme-5-x
Open

chore(deps): update dependency clean-jsdoc-theme to v5#148
renovate[bot] wants to merge 2 commits into
masterfrom
renovate/clean-jsdoc-theme-5-x

Conversation

@renovate

@renovate renovate Bot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
clean-jsdoc-theme (source) 4.3.35.0.8 age confidence

Release Notes

ankitskvmdam/clean-jsdoc-theme (clean-jsdoc-theme)

v5.0.8

Compare Source

Patch release: a Yarn PnP rendering fix and a version stamp in generated output.

Fixes

  • Empty dist / Cannot read properties of undefined (reading 'context') under Yarn Berry (PnP) (#​342). preact was a direct dependency of the theme's internal packages, so under PnP's strict resolution the server-rendered component tree and preact-render-to-string could bind to two different Preact instances — leaving Preact's internal currentComponent unset and throwing on the first useContext of every page, so every page failed to render. preact is now a peer dependency of the internal packages (rang, dwar, bhasha, setu) and a direct dependency of the installable entry points (clean-jsdoc-theme, @clean-jsdoc-theme/typedoc, @clean-jsdoc-theme/aadesh), so a single Preact instance is always shared, regardless of package manager. (The npm/pnpm hoisted layout already deduped Preact, so only PnP users were affected.)

Features

  • Version stamp in generated pages. Every page now includes <meta name="generator" content="clean-jsdoc-theme <version>" /> (both the JSDoc and TypeDoc flavors), so a built site records which theme version produced it — handy for bug-report triage. Override it with a meta entry whose name is generator.

Docs

  • FAQ: a troubleshooting entry for the PnP empty-dist crash (upgrade to 5.0.8, or set nodeLinker: node-modules), plus notes on the new generator meta default.

Security

No runtime attack-surface change. The Preact fix is manifest-only (dependency declarations moved to peer/direct deps — no code change). The generator <meta> is build-time inline data, HTML-escaped like every other meta value; no eval, no network, no I/O in the renderer for it.

v5.0.7

Compare Source

A patch release focused on dependency security, a small TypeDoc cleanup, and clearer package docs. No breaking changes and no user-facing behavior change.

Security

Cleared all open Socket and Dependabot advisories:

  • esbuild (dwar, production dependency) → ^0.28.1 — resolves the dev-server request / arbitrary-file-read advisories.
  • Dev/build toolchain: happy-dom^20, vitest^4.1.10, vite^8.1.3, turbo^2.10.4.
  • Transitive overrides for markdown-it, linkify-it, shell-quote, fast-uri, brace-expansion, and js-yaml (CVE-2026-53550).

The remaining Socket "obfuscated code" flags on preact / underscore / brace-expansion / es-module-lexer are false positives on minified dist output, not vulnerabilities.

Changed

  • setu / typedoc — removed the inert sectionOrder / clubSidebarItems handling under the TypeDoc flavor. Under TypeDoc the module hierarchy owns the API sidebar and doc groups order via docGroups; these options were accepted but had no effect. No behavior change.

Docs

  • Corrected the TypeDoc sidebar-lever documentation (getting-started, structure-your-sidebar, configuration) across all locales.
  • Made the clean-jsdoc-theme and @clean-jsdoc-theme/typedoc package READMEs standalone, each centered on its own toolchain.

Full changelog: ankitskvmdam/clean-jsdoc-theme@v5.0.6...v5.0.7

v5.0.6

Compare Source

clean-jsdoc-theme v5.0.6

TypeDoc output parity with TypeDoc's default theme. TypeDoc flavor only — JSDoc output is unchanged (byte-identical). This release is a no-op for JSDoc users.

✨ TypeDoc improvements
  • Default-theme sidebar. The TypeDoc sidebar now mirrors TypeDoc's own default theme — a module/folder hierarchy (folders from your source layout, single-child folders merged, clickable + expandable module nodes, members nested and kind-ordered) — instead of global kind buckets. Under the TypeDoc flavor the module hierarchy owns the API sidebar, so @category / @group / @order / sectionOrder / clubSidebarItems no longer shape it (doc groups, menu, and tutorials still apply). These levers are unchanged for the JSDoc template.
  • Inheritance & relationships on class/interface pages: Hierarchy, Implements, and Implemented By sections, plus Inherited from / Overrides / Implementation of member captions.
  • @group tag recognized, @inheritDoc resolved, native TypeDoc projectDocuments rendered as pages, an async modifier badge, and inline object-literal types expanded into linked property tables.
🐛 Fixes
  • Deduplicated relationship rendering and top-level nav headers on TypeDoc pages; root-scope symbols now appear in the sidebar.
📚 Docs
  • Documented the TypeDoc sidebar model and TypeDoc-specific rendering, in English, Hindi, Japanese, and Chinese.
🔒 Security
  • No security-relevant changes in this release.

JSDoc users: no action needed — output is byte-identical to 5.0.5.

v5.0.5

Compare Source

Local images now resolve from every prose source, plus JSDoc staticFiles support and a generated sitemap.xml. Parity across the JSDoc and TypeDoc bridges.

Images
  • Local images referenced from tutorials, the README, and JSDoc / TypeScript doc comments (previously only opts.docs) are copied into the content-hashed _assets/ pipeline and the reference is rewritten — both Markdown ![](…) and raw <img>. Comment images resolve against each symbol's own source file; SVGs are inlined so light/dark follows the theme toggle.
  • JSDoc templates.default.staticFiles is honored: included files are copied verbatim to the output root, and the include directories become fallback search roots, so a bare reference like ![](classes-io.png) resolves and is hashed — no need to rewrite existing comments or tutorials. A file already served from _assets/ is not duplicated at the root.
  • Image syntax shown inside code spans / fenced blocks is left literal — no spurious copy, rewrite, or "could not read image" warning.
Sitemap
  • New siteUrl option: when set, the build emits sitemap.xml at the output root with one <loc> per non-hidden page. Only the URL's origin is used; the deploy sub-path comes from basePath, so the two never double-count.
Security
  • No runtime security-surface changes. Image and staticFiles resolution runs at build time over author-declared paths only — no runtime evaluation and no new network access; siteUrl is used solely to compose the absolute <loc> URLs in sitemap.xml.

Full changelog: ankitskvmdam/clean-jsdoc-theme@v5.0.4...v5.0.5

v5.0.4

Compare Source

TypeDoc support reaches parity with the JSDoc output, plus security hardening.

TypeDoc parity

  • Standalone pages for enums, top-level functions, and variables, with TypeDoc section labels (Constructors / Properties / Accessors / Methods) and an "Enumeration Members" section; module/namespace pages become a kind-grouped index of links.
  • Full TypeScript signatures (shiki-highlighted inline) on member/constructor/function headings, in both flavors. Overloaded functions/methods render every call signature.
  • Declaration blocks lead interface / type-alias / variable pages (interface Name { … }, Name = (p) => R, HTTP_STATUS: { … }), and object-literal constants now list every member with its own doc comment under "Properties" instead of collapsing to one line.
  • Type names hyperlink to the symbols they reference (v4 parity); generics render a "Type Parameters" section; @remarks renders as its own section.
  • New basePath option so a TypeDoc site can be served from a sub-directory (every emitted URL — pages, assets, logos, favicon — is prefixed).
  • A small TypeDoc API example added to the docs site.

Security

  • Removed the new Function eval shim from the module-path resolver — the theme no longer evaluates code at runtime.
  • Added socket.yml to triage build-inherent Socket alerts, dropped the now-unneeded usesEval exception, and scoped the shellAccess rule to the aadesh CLI.

Fixes

  • findStrayBackticks no longer false-positives on valid inline code spans.
  • Both bridges clean their output directory before writing, so stale/renamed pages don't linger in the served site.
  • Dark-theme colors for inline signatures; wrapped signature params are indented and rendered slightly smaller; the JSDoc constructor section is unified.

Full changelog: https://github.com/ankitskvmdam/clean-jsdoc-theme/blob/master/packages/clean-jsdoc-theme/CHANGELOG.md

v5.0.3

Compare Source

Patch release with bug fixes and a TypeDoc parity feature.

Bug fixes

  • index name clash (#​333) — a documented symbol named index no longer overwrites the home page. It now renders at /index/ like any other container, so neither page is lost.
  • Hardened MDX brace escaping (#​333) — inline-code detection now follows CommonMark (a code span can't cross a blank line), so a single unbalanced inline-code backtick in one doc comment can no longer desync escaping across a whole aggregated page (e.g. Globals) and abort it with "Could not parse expression with acorn".
  • Sidebar on tablet/iPad — on widths where both the left sidebar and the mobile table-of-contents bar show, the sidebar's first item is no longer hidden behind the TOC bar.

Improvements

  • Render diagnostics (#​333) — when a page fails to compile, the build now reports the exact line:column plus a code-frame snippet instead of just the slug, so the offending content is easy to locate on large pages.
  • Unbalanced-backtick warnings (#​333) — unbalanced inline-code backticks are surfaced as non-fatal build warnings pointing at the source line, so the authoring slip is easy to find and fix.

TypeDoc

  • docs prose directory (#​334) — the TypeDoc plugin now supports the docs option (plus docGroups / defaultDocGroup), matching the JSDoc bridge: hand-written Markdown/HTML guides render alongside the API. (readme remains TypeDoc's own top-level option.)

Docs: https://ankdev.me/clean-jsdoc-theme/

v5.0.2

Compare Source

Two fixes restoring v4 parity: mobile header controls and target/class on menu entries.

Search + language switcher on mobile

The header search trigger was wrapped in a hidden … md:flex desktop-only container, so the search icon disappeared below the md breakpoint. Search (and the always-present language switcher) are now pulled out of that wrapper, so both stay visible on every breakpoint. Theme and settings remain desktop-only — the mobile nav drawer already hosts them.

target and class are back on menu entries

Both options were dropped from the v5 menu object and are now re-introduced as optional fields, threaded through the whole pipeline (opts schema, setu, the JSDoc + TypeDoc bridges, and rang's sidebar):

  • target overrides the link target. External links still default to _blank, and the noopener rel is dropped when the target isn't _blank.
  • class is merged onto the rendered link.

Both apply to external and built-in/internal entries, and are omitted when unset — so existing menus stay byte-identical.


Docs: https://ankdev.me/clean-jsdoc-theme/

v5.0.1

Compare Source

Code playgrounds, a favicon option, and a refreshed code block.

Playgrounds (#​329)

Open an @example (or a code fence) in CodePen, JSFiddle, or CodeSandbox, prefilled — bringing back and generalizing v4's codepen feature. A code block's header gains an "Open Code in" dropdown; it's fully client-side (form POST / parameterized link — no backend, no API key). Configure with opts.playground (enableForAllExamples, providers, site-wide per-provider options) and the @playground block tag (provider selection, none/off, plus filename= and highlight=). Works in prose too (a js playground fence or a <playground> container) and through both the JSDoc and TypeDoc bridges.

Favicon

New favicon option — a path to an image the theme copies to a content-hashed asset and links as <link rel="icon"> (with the right type). Restores the v4 option v5 had dropped, and is the way to ship an SVG favicon (browsers auto-discover only a root favicon.ico).

Refreshed code block

Each block now has a header bar (a CODE/filename label plus copy and the playground dropdown), per-line highlighting, and configurable code-chrome colors (codeHeaderBg / codeHeaderFg / codeHighlightBg under colors / darkColors) that stay legible in light and dark.


Docs: https://ankdev.me/clean-jsdoc-theme/ · Fixes #​329

v5.0.0: clean-jsdoc-theme v5.0.0

Compare Source

clean-jsdoc-theme v5 is a ground-up rewrite — a complete documentation suite, not a coat of paint on JSDoc's output.

What's new in clean-jsdoc-theme

A real static-site generator, not a CSS theme

Every page is server-rendered to HTML and progressively enhanced with lazy-hydrated Preact islands — each island ships only to the pages that use it. No client framework on the wire, no build config to maintain. Light and dark themes ship out of the box on an OKLCH palette; bring your own colors, Google Fonts, logo, sidebar menu, custom footer, custom <meta> tags, and custom CSS/JS whenever you want them.

Built to work well with LLMs

Alongside every page, v5 emits a companion .md authored for machines to read — so your API reference is as legible to an AI as it is to a human. Every page also carries one-click actions to copy the Markdown or open it straight in Claude, ChatGPT, or Perplexity (all opt-out via copyPage).

LLM support runs deeper than the output, too. We ship downloadable, source-verified agent skills you can drop into any coding assistant: an umbrella clean-jsdoc-theme skill (setup, the full config reference, authoring, the sidebar model, localization, and the package architecture) and a focused migrate-v4-to-v5 skill. They turn an assistant into an expert that can scaffold your config, author your guides, structure your sidebar, and migrate a v4 project — correctly, the first time.

Two kinds of search, zero setup

A Ctrl K fuzzy command palette ranks across titles, descriptions, and full page text, deep-links straight to any class member by name, and remembers your recent and favorite searches. Turn on an optional Pagefind full-text index with a single flag.

Prose and API in one site

Hand-written Markdown guides sit right beside your auto-generated reference — one sidebar, one search index, one URL space. Point opts.docs at a folder of Markdown and the folder layout + a little frontmatter becomes your navigation. {@&#8203;link}, @see, and @tutorial resolve to real cross-page anchors, and every member links to its exact source line.

Rich authoring

Write richer doc comments and prose with first-class components: callouts (GitHub-style > [!NOTE] alerts), <Steps>, synchronized <Tabs>, and sandboxed live embeds (CodePen, YouTube, any site) via an @iframe tag or an ```iframe fence. Organize the sidebar with @category, @order, sectionOrder, menu, and clubSidebarItems; a prev/next pager links adjacent pages in reading order.

A source viewer

Documented source files become read-only Monaco-powered viewer pages that open to the exact #L<n> you linked, themed to match the site.

Localization (i18n) — new

Ship your docs in multiple languages. Declare opts.locales / opts.defaultLocale and the clean-jsdoc CLI builds one static site per language — translated UI chrome, API descriptions (incl. parameter & return descriptions), and prose (a per-locale README.<locale>.md home and a docs.<locale>/ overlay) — with a header language switcher, per-language fonts, and hreflang for SEO. A build with no locales is byte-identical to before. (See "Developer preview" below for TypeDoc's localization status.)

Safer, clearer builds

Theme options are validated up front (typo suggestions, a live Google-Font existence check) and the build prints a Next.js-style report of per-route sizes (with gzip). A single page that fails to compile is skipped and reported — never aborting the whole build.


The package suite

v5 isn't a single template — it's a small set of single-responsibility packages wired into a one-way setu → dwar pipeline, all published to npm and reusable. They ship in lockstep (one shared version).

Core pipeline

  • clean-jsdoc-theme — the JSDoc template / entry point. JSDoc calls its publish() bridge, which orchestrates the pipeline and writes the site.
  • @clean-jsdoc-theme/setu — turns the JSDoc doclet model into a structured SiteManifest (pages, nav, cross-resolved links). No I/O, no HTML.
  • @clean-jsdoc-theme/rang — the Preact component library, MDX element map, and island registry that the renderer bundles.
  • @clean-jsdoc-theme/dwar — a pure renderer: SiteManifest → HTML/CSS/JS (SSR + MDX + esbuild-bundled islands), plus a Pagefind hook.
  • @clean-jsdoc-theme/utils — the shared type contracts, slug rules, and opts-validation/build-report core every package builds against.

Localization

  • @clean-jsdoc-theme/aadesh — the clean-jsdoc CLI that drives the extract → translate → build workflow. The localization steps live under an i18n group (clean-jsdoc i18n extract / i18n prompt / i18n validate), with clean-jsdoc build top-level (it renders the site with or without locales); plus an interactive menu.
  • @clean-jsdoc-theme/bhasha — the pure, browser-safe i18n core (chrome catalog, the t translator, LanguageProvider, and the API key/hash scheme) shared by the build and the UI.

Most users only ever install clean-jsdoc-theme (and @clean-jsdoc-theme/aadesh if they want multiple languages). The rest are internal building blocks — documented and reusable, but not something you wire up by hand.


TypeDoc support — Developer Preview

TypeScript projects can generate the same site through @clean-jsdoc-theme/typedoc, a plugin that feeds TypeDoc's reflections through the same setu → dwar core.

This is a developer preview — it's available to try today, but still maturing, so expect some rough edges. We're shipping it to gather real-world feedback; please give it a spin and let us know what you find.


Getting started

npm install --save-dev clean-jsdoc-theme jsdoc
// jsdoc.json
{
  "source": { "include": ["./src", "./README.md"] },
  "plugins": ["plugins/markdown"],
  "opts": {
    "destination": "dist",
    "recurse": true,
    "template": "node_modules/clean-jsdoc-theme/dist",
    "siteName": "My Library"
  }
}
jsdoc -c jsdoc.json
npx serve dist

Full docs: ankdev.me/clean-jsdoc-theme · TypeDoc: /theme/typedoc-getting-started · Localization: /guides/localize-your-docs


Breaking changes (from v4)

  • Options moved opts.theme_opts.*opts.* (the theme_opts block is gone; options are validated).
  • Renamed: base_urlbasePath, sectionssectionOrder; reshaped: titlesiteName (string or logo set), menu entries → { id, title, link/href, icon }.
  • Custom CSS/JS renamed to customCss/customCssFile + customJs/customJsFile.
  • Removed: the theme picker (default_theme/fallback-* — v5 ships light+dark + a toggle), favicon, homepageTitle, codepen, sort, and others; search is always on. (footer and meta are still supportedfooter now also accepts { file }, and meta keeps its array-of-tags shape.)
  • Output layout changed: SSR HTML + a co-located .md per page; assets live under _assets/ — v4-era hardcoded asset paths break.

Full mapping and before/after config: MIGRATION.md — or hand it to an LLM with the migrate-v4-to-v5 skill and let it do the rename/reshape/verify for you.


Thanks & feedback

v5 is a large rewrite — thank you to everyone who tested the alphas. Found a bug or have a request? Open an issue or start a discussion. If the theme saves you time, consider sponsoring.


Configuration

📅 Schedule: (in timezone America/New_York)

  • Branch creation
    • "after 1am and before 8am"
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Never, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot added dependencies Pull requests that update a dependency file js labels Jun 16, 2026
@sonarqubecloud

Copy link
Copy Markdown

@codecov

codecov Bot commented Jun 16, 2026

Copy link
Copy Markdown

Bundle Report

Bundle size has no change ✅

@codecov

codecov Bot commented Jun 16, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (a594221) to head (0c33d59).
✅ All tests successful. No failed tests found.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff            @@
##            master      #148   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            1         1           
  Lines           75        75           
  Branches        24        24           
=========================================
  Hits            75        75           

Continue to review full report in Codecov by Harness.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update a594221...0c33d59. Read the comment docs.

@renovate
renovate Bot force-pushed the renovate/clean-jsdoc-theme-5-x branch from 0c5042d to 0c33d59 Compare July 22, 2026 02:39
Adjust the JSDoc config to match the clean-jsdoc-theme option format by switching to the dist template path, moving script/CSS/JS and menu settings to top-level keys, and updating the favicon path under docs/static.
@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file js

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant