Skip to content

Release: advanced overrides, refined UI, and Store assets - #12

Merged
vannt-dev merged 83 commits into
mainfrom
develop
Aug 8, 2026
Merged

Release: advanced overrides, refined UI, and Store assets#12
vannt-dev merged 83 commits into
mainfrom
develop

Conversation

@vannt-dev

@vannt-dev vannt-dev commented Aug 8, 2026

Copy link
Copy Markdown
Owner

Summary

  • add advanced response mocking for status, delay, request/response headers, redirects, failures, GraphQL operations, and reusable profiles
  • refactor background, UI, styles, and tests into focused modules under 500 lines
  • standardize popup and DevTools panel controls, dialogs, modal scrolling, validation, save/apply feedback, and retry handling
  • improve worker rehydration, debugger lifecycle, per-domain persistence, rapid-save ordering, and import/export validation
  • add Chrome Web Store screenshot assets, README gallery, packaging/release automation, and a reproducible screenshot command

Verification

  • npm run check: 113/113 tests passed
  • npm run smoke: 15/15 real-browser extension checks passed
  • Store screenshots verified as PNG at 1280x800

vannt-dev added 30 commits April 2, 2026 09:47
- Add privacy_policy.md (required for Chrome Web Store)
- Update manifest description to clarify developer-only use
- Add pattern validation in UI to reject invalid regex
- Remove duplicate type definitions (typings/, src/types/)
- Consolidate types in src/shared.ts
- Include privacy policy in store package
- Add tab navigation (Captured APIs / Overridden / Rules)
- Add URL redirect with wildcard substitution at request stage
- Add search, collapsible API type sections, and copy cURL
- Add info button linked to comprehensive usage guide (guide.html)
- Add English and Vietnamese usage guides (USE-EN.md, USE.md)
- Update README with detailed pattern reference and storage table
- Sharpen 16x16 and 48x48 icons with improved downscaling
(cherry picked from commit 0b6c6a57d46881bb8b74ddbada6f75d7b86c22e4)
…ness fixes

- currentDomain race condition: changed single string to Map<number, string>
- Debounced persistRecentApis and storeResponseBody writes (500ms)
- AttachDebugger error handling with cleanup on failure
- Added cleanupTabData on tab remove/detach
- Per-domain storage keys (overrides_<origin>, enabled_<origin>)
- Fixed isSelected class not being applied on API items
- Removed dead code (utils.ts) and unused functions
- Fixed test-harness.mjs domainKey mirroring for backward compat
- Save enabled under global flat key instead of domain-prefixed key
- Auto-migrate existing domain-specific enabled_<origin> keys
- Keep overrides per-domain with flat fallback
- Deduplicate storage keys in init when currentDomain is empty
- Extract shared utils into src/utils.ts to eliminate duplication
… pass

- ui.ts: track the live port and reset it on onDisconnect so
  startApiStream() actually reconnects after Chrome suspends the MV3
  service worker (previously it silently stopped streaming forever)
- background.ts: share pattern-matching logic with utils.ts via
  importScripts instead of duplicating it; narrow chrome.runtime.onMessage
  handling to the declared Msg union instead of casting to any; extract
  toFetchHeaders() to remove 3x duplicated header-mapping code
- remove dead code: unused storage-keys.ts, unused clearApisInBackground()
- add ESLint (typescript-eslint) and wire eslint+prettier into lint-staged,
  which previously had no config at all despite the pre-commit hook
  invoking it
- reduce startApiStream polling interval (2s -> 15s) now that onDisconnect
  handles reconnection reactively
…-staged.config.mjs)

package.json's lint-staged key was silently ignored because
lint-staged.config.mjs already existed and takes precedence, so the
eslint --fix wiring added for it never actually ran. Move that wiring
into lint-staged.config.mjs instead and drop the dead key from
package.json.
…t/export

Covers three related additions to the override rule system: enabling/
disabling individual rules, matching rules by HTTP method, and
importing/exporting a domain's rules as JSON. Approved by user during
brainstorming; implementation plan to follow.
…nd import/export

7 TDD tasks covering: OverrideRule schema + matchesMethod helper,
background.ts enforcement, UI tab-classification split (wouldApply),
per-rule checkbox, modal method field, and JSON export/import with
merge/replace. Each task independently buildable, lintable, and testable.
…take

These were raw npm test console captures accidentally committed alongside
the Task 3 fix; add them to .gitignore to prevent recurrence.
vannt-dev added 29 commits July 10, 2026 22:33
@vannt-dev
vannt-dev merged commit 42c17bf into main Aug 8, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant