adam-p/markdown-here
41.1
Weak · 25 September 2026
63.8k
lines of production code
JavaScript
primary language
4
measurements over time
What this system is
Features
Added ESLint configuration and project metadata files
The project now includes an ESLint configuration file (.eslintrc.json) that enforces a strict set of JavaScript coding standards, including rules for spacing, semicolons, and error handling. Additionally, the repository has been updated with standard project metadata files, including a Contributor License Agreement (for both individuals and entities), a CONTRIBUTING guide, a LICENSE file (MIT), a Makefile for build automation, and a PRIVACY policy document.
(repo-wide) · high confidence
Added store listing assets for the extension
Added new store assets including a description, reviewer notes, and sample Markdown files for screenshots and captions. These files provide the text and content used to market the extension in browser and add-on stores, detailing its Markdown rendering capabilities, supported platforms (Gmail, Thunderbird, etc.), and usage instructions.
store-assets · high confidence
Automated build process for Chrome, Firefox, and Thunderbird extensions
A new build script (utils/build.js) has been added to automate the creation of extension packages for Chrome, Firefox, and Thunderbird. The script generates compressed ZIP archives for each platform, applying specific filtering rules to include only the necessary files (such as manifest.json, common assets, and platform-specific configurations) while excluding test directories and OS-specific temporary files. This ensures that each browser's unique requirements are met during the build process.
utils · high confidence
Behavioural changes
Chrome upgrade notification and background script refactoring
The Chrome extension now displays a popup notification when the extension is updated or first installed, allowing users to view changelog details. This is supported by a refactored background script that uses a service worker-compatible architecture, and a new content script that handles rendering requests and the 'forgot-to-render' check on a per-activation basis rather than via automatic injection.
src/chrome · high confidence
Reduced extension permissions and updated default hotkey
The extension now requests permissions dynamically, meaning it only accesses a page when you click the toolbar button, use the context menu, or press the hotkey, which eliminates the initial browser warning about reading and changing data on all websites. As a result of this architectural change, the toolbar button is now always enabled, and the default hotkey has been changed to Shift+Alt+M because the browser now manages the shortcut. Users who had previously enabled the 'forgot-to-render' check will need to re-enable it, which will prompt for access to specific sites like Gmail.
src/common · high confidence
Updated Highlight.js to v11.11.1
The codebase has been updated to use Highlight.js version 11.11.1. This update includes a new \highlight.js\ core file and a comprehensive set of updated CSS theme files (including \a11y-dark\, \agate\, \atom-one-dark\, and all Base16 themes), ensuring that syntax highlighting for code snippets is rendered with the latest styling and support.
src/common/highlightjs · high confidence
Fixes
Updated DOMPurify to version 3.2.6
The DOMPurify library in src/common/vendor has been updated to version 3.2.6. This update improves HTML sanitization, which helps prevent cross-site scripting (XSS) vulnerabilities by more effectively filtering out dangerous content from user-supplied HTML.
src/common/vendor · high confidence
Test coverage
Added automated test suite for common logic and rendering; Added test page for Markdown Here.
Dependencies
Added build utility dependencies
The \utils\ directory now includes a \package.json\ and \package-lock.json\ that define the build tooling dependencies. Specifically, the \archiver\ library has been updated to version 7.0.1, and the \glob\ dependency has been updated to version 7.1.3.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 32 → 41 (+9.1)
- Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 44 → 38 (-6.5)
- Architecture 100 (new)
- Maturity 59 → 49 (-9.8)
- Readiness 8 → 36 (+27.9)
- Security 84 → 88 (+3.1)
- Accessibility 36 (new)
Resolved (47)
- Boundary-crossing change coupling: markdown-here.js ↔ build.js (src/common/markdown-here.js)
- Boundary-crossing change coupling: options-store.js ↔ build.js (src/common/options-store.js)
- Boundary-crossing change coupling: options.js ↔ build.js (src/common/options.js)
- Boundary-crossing change coupling: utils.js ↔ build.js (src/common/utils.js)
- Change coupling: backgroundscript.js ↔ contentscript.js (src/chrome/backgroundscript.js)
- Change coupling: common-logic.js ↔ utils.js (src/common/common-logic.js)
- Change coupling: markdown-here.js ↔ mdh-html-to-text.js (src/common/markdown-here.js)
- Change coupling: options-iframe.js ↔ options-store.js (src/common/options-iframe.js)
- Change coupling: options-iframe.js ↔ options.js (src/common/options-iframe.js)
- Change coupling: options-iframe.js ↔ utils.js (src/common/options-iframe.js)
- Dimension evaluation failed
- FileTooLong: common/common-logic.js (src/common/common-logic.js)
- FileTooLong: common/markdown-here.js (src/common/markdown-here.js)
- FileTooLong: common/utils.js (src/common/utils.js)
- FileTooLong: test/chai.js (src/common/test/chai.js)
- FileTooLong: test/mocha.js (src/common/test/mocha.js)
- High CVE: [GHSA redacted] (utils/package-lock.json)
- High CVE: [GHSA redacted] (utils/package-lock.json)
- High CVE: [GHSA redacted] (utils/package-lock.json)
- High CVE: [GHSA redacted] (utils/package-lock.json)
- …and 27 more
New (44)
- (anonymous) (cognitive 19) (src/common/jsHtmlToText.js)
- (anonymous) (cognitive 71) (src/common/options-store.js)
- (anonymous) (cyclomatic 16) (src/common/jsHtmlToText.js)
- (anonymous) (cyclomatic 24) (src/common/mdh-html-to-text.js)
- (anonymous) (cyclomatic 44) (src/common/options-store.js)
- (anonymous) (cyclomatic 60) (src/common/common-logic.js)
- (anonymous) (cyclomatic 73) (src/common/markdown-here.js)
- (anonymous)::excludeTagBlocks (cognitive 34) (src/common/mdh-html-to-text.js)
- (anonymous)::makeStylesExplicit (cognitive 23) (src/common/markdown-here.js)
- (anonymous)::markdownHere (cognitive 23) (src/common/markdown-here.js)
- (anonymous)::marked (cognitive 19) (src/common/marked.js)
- (anonymous)::output (cognitive 56) (src/common/marked.js)
- (anonymous)::output (cyclomatic 31) (src/common/marked.js)
- (anonymous)::showHTMLForgotToRenderPrompt::(anonymous)::keyboardCaptureHandler (cognitive 17) (src/common/common-logic.js)
- (anonymous)::strToUTF8Arr (cognitive 19) (src/common/utils.js)
- (anonymous)::tok (cognitive 22) (src/common/marked.js)
- (anonymous)::tok (cyclomatic 23) (src/common/marked.js)
- (anonymous)::token (cognitive 114) (src/common/marked.js)
- (anonymous)::token (cyclomatic 51) (src/common/marked.js)
- (anonymous)::utf8ArrToStr (cognitive 16) (src/common/utils.js)
- …and 24 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
adam-p/markdown-here was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 25 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit e00d005299922198aef968e0cd42b275525c20a6 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-dd72cc24c749.