intent(browser-tests): CodeRabbit review — tests duplicated the selector expression and could pass while the production selector logic broke
decision(browser-structure): extracted findNavigationContainer into utils/github-navigation.ts because every file under entrypoints/ becomes an extension entrypoint in wxt, so the helper cannot be exported from content.ts for tests
constraint(browser-tests): importing content.ts in vitest is not possible without wxt test shims — defineContentScript is a wxt auto-import global
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
intent(browser): Discord report that the Repomix button no longer appears in the repo header
learned(github-dom): GitHub is rolling out a React-based repo header where ul.pagehead-actions is replaced by ul[data-testid="repo-header-actions"]; logged-out pages still serve the legacy DOM, so the breakage only hits some users
decision(browser): query the new data-testid selector first and keep the legacy selector as a fallback while the rollout is partial, unlike upstream deepwiki-button PR #15 which dropped the legacy selector
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The wxt 0.20 → 0.21 bump in this Dependabot group tightens the generated
tsconfig, surfacing three pre-existing unchecked-index/destructuring
errors in content.ts that fail the Lint Browser Extension check.
- guard: bail out of extractRepositoryInfo when regex groups are undefined
- guard: use optional chaining on pathParts[0] in isRepositoryPage
Behavior is unchanged; both paths were already unreachable with undefined
values at runtime.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Replace deprecated webextension-toolbox with modern WXT framework for improved developer experience and active maintenance. This migration addresses the issue where webextension-toolbox hasn't been updated in 4 years.
Key changes:
- Replace webextension-toolbox with WXT framework
- Restructure project to use entrypoints/ and public/ directories
- Convert background/content scripts to WXT format with defineBackground/defineContentScript
- Add wxt.config.ts for centralized configuration
- Migrate all 11 languages i18n support to new structure
- Update build scripts and dependencies
- Remove deprecated manifest.json (now auto-generated)
- Fix TypeScript configuration to extend WXT types
Benefits:
- Active framework with regular updates
- Better development experience with HMR and Vite integration
- Smaller bundle size and improved build performance
- Modern toolchain with TypeScript-first approach
- Unified cross-browser extension development