Conversation
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Update non-major dependencies
…ging Restructures the extension to make src/ the single source of truth for both Chrome and Firefox builds, then layers on user-facing improvements: Source dedup - extension-chrome/ and extension-firefox/ are now generated by build.js and gitignored; all shared assets (background.js, popup.*, turndown.js, icons) live in src/. - pretest hook runs build first so manifest/build tests have outputs. - Docs (README, SOURCE_BUILD, PUBLISHING, CLAUDE) updated to describe the generated-output workflow; manifest version bumps now happen in package.json only. Diagnostic logger - src/logger.js + src/log-buffer.js: ring-buffered structured log in chrome.storage.local, captures uncaught errors and unhandled rejections, exposes mdpLog/mdpGetDiagnostics in service workers and the popup. - Popup "Copy diagnostics" link copies a redacted JSON bundle (version, browser, language, usage stats, last 200 log entries) for bug reports. - Native host logs are now rotated daily in ~/.markdown-printer/logs/ with 7-day retention, replacing the single ~/markdown-printer-debug.log. - New bug_report issue template points users at the diagnostics button. Rating prompt - Smart 👍/👎 funnel: positive users land on the appropriate store review page, negative users land on the GitHub issue tracker. Either branch marks the prompt done. Dismiss (×) snoozes 30 days. - Trigger: ≥10 saves AND ≥7 days since install. - src/rating-policy.js holds pure shouldShowRating / detectStore / storeReviewUrl logic; store detection picks Chrome/Firefox/Edge from UA. - Background tracks installedAt and saveCount in chrome.storage.local. Localization - All 14 new UI strings translated across en/fr/he/hi locales. - Pre-existing hardcoded popup strings (Saving.../Saved!/Error - Try again) localized at the same time. Tests - New pure-module test suites for log-buffer (16 tests) and rating-policy (20 tests), covering ring-buffer trimming, Error stringification, every branch of shouldShowRating, snooze precedence, store-detection edge cases, and review URL routing. - manifest tests assert all 18 locale keys exist in every locale and that the Firefox background.scripts array loads log-buffer.js → logger.js → background.js in order. - Total: 5 test suites, 102 tests (was 3 / 66). CI - publish.yml: Chrome now auto-submits for review (removes --chrome-skip-submit-review); PUBLISHING.md updated to match. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Update non-major dependencies
ESLint 10 (bumped in the preceding commit) requires Node >=20.19, >=22.13, or >=24. The previous matrix included 18.x which would fail outright. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Update major dependencies (major)
Adds the diagnostics, rating prompt, and improved logging work from recent commits to the user-facing changelog across all four locales. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
pnpm 11 fails CI with ERR_PNPM_IGNORED_BUILDS when transitive deps want to run install scripts. eslint 10 pulls in unrs-resolver, which builds a native binary. Explicitly approve just that one dep via pnpm.onlyBuiltDependencies so installs succeed in CI. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The previous attempt put onlyBuiltDependencies in package.json, but pnpm 11 removed that field and replaced it with allowBuilds in pnpm-workspace.yaml. Without it, CI fails with ERR_PNPM_IGNORED_BUILDS on unrs-resolver (eslint 10's native resolver). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The pretest hook only fires for `pnpm test`, not `pnpm test:coverage` (the script CI actually runs). Without it, the extension dirs don't exist when manifest tests run, causing 26 failures. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #13 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 1 1
Lines 4 4
Branches 1 1
=========================================
Hits 4 4 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
~/.markdown-printer/logs/(7-day retention) replace the single debug log.extension-chrome/andextension-firefox/are now generated fromsrc/.Merging will trigger auto-tag → publish workflow → uploads to Chrome (auto-submitted), Firefox (auto-submitted), and Edge (manual submit step in Partner Center).
Test plan
pnpm test— 102 tests across 5 suites passpnpm lint— clean on eslint 10pnpm format:check— cleanpnpm build— both extension dirs generated, zips in dist/