Skip to content

Commit 6570dfa

Browse files
tsemachhjunie-agent
andcommitted
chore: renumber all versions from 1.0.X to 0.1.X
Co-authored-by: Junie <junie@jetbrains.com>
1 parent 514de92 commit 6570dfa

3 files changed

Lines changed: 33 additions & 33 deletions

File tree

CHANGELOG.md

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,112 +5,112 @@ All notable changes to this project will be documented in this file.
55
The format is based on Keep a Changelog,
66
and this project adheres to Semantic Versioning.
77

8-
## [1.0.20] - 2026-05-03
8+
## [0.1.20] - 2026-05-03
99
### Fixed
1010
- Recording now fetches the response body in `Network.loadingFinished` (restoring the reliable v0.1 flow) instead of `Network.responseReceived`, ensuring the body is fully available before capture. A fallback in `stopRecording` flushes any requests that received response metadata but never got `loadingFinished` (e.g. cached / 304 responses).
1111

12-
## [1.0.19] - 2026-05-03
12+
## [0.1.19] - 2026-05-03
1313
### Fixed
1414
- Recording no longer drops duplicate API calls — each recorded entry now gets a unique timestamp-based key so repeated calls to the same endpoint are all preserved.
1515

16-
## [1.0.18] - 2026-05-03
16+
## [0.1.18] - 2026-05-03
1717
### Fixed
1818
- Replay no longer logs `Uncaught (in promise) Error: Detached while handling command` when the debugger detaches mid-flight (tab navigated/closed, replay stopped, or service worker recycled). All `chrome.debugger.sendCommand` calls in `src/background/replayer.ts` are now routed through a `safeSendCommand` helper that swallows detach-related errors. After a latency wait, replay state is re-checked before sending the response so we don't try to fulfill on a detached debugger.
1919

20-
## [1.0.17] - 2026-05-03
20+
## [0.1.17] - 2026-05-03
2121
### Changed
2222
- Captured Requests table now auto-sizes columns (▶ / Status / Method shrink to content; Path takes the remaining width with truncation + full-URL tooltip) so nothing overflows the popup.
2323
- Removed the per-row match indicator (●) column. The match indicator was unreliable — some matched URLs were not flagged — so it's been disabled until the matcher is fixed; the matched-row green tint is also gone.
2424

25-
## [1.0.16] - 2026-05-03
25+
## [0.1.16] - 2026-05-03
2626
### Changed
2727
- Captured Requests table column order is now **▶ | Status | Method | ● | Path**, so Status is right after the include toggle and Path expands to fill the remaining width.
2828
- Replay hit count is now shown inside the Status badge as `200 (3)` instead of as a separate column, making the table more compact and clearer.
2929
### Fixed
3030
- Per-row match indicator (●) and hit count now update live during replay. The popup listens to `chrome.storage.session` changes for `replayStats`, so each captured replay hit immediately re-renders the row (previously the table only refreshed on `recordingUpdated`/`newApiCall` messages, which the replayer doesn't send).
3131

32-
## [1.0.15] - 2026-05-03
32+
## [0.1.15] - 2026-05-03
3333
### Changed
3434
- Removed the Replay stats panel (Matched / Unmatched / Recent unmatched). The per-row green ● match indicator on the API requests list is now the single source of truth.
3535
- Replay configuration (fallback matching, latency, latency range, URL mappings) is collapsed under a toggleable **Advanced settings** `<details>` block in the Replay tab to reduce vertical clutter.
3636
- Captured Requests table is now fixed-layout: long URLs are truncated in the **Path** cell with the full URL shown on hover via a `title` tooltip.
3737
- **Status** column is now a colored circular badge (green 2xx / blue 3xx / amber 4xx / red 5xx / gray for none); click the badge to edit the status. The numeric value is in the tooltip.
3838
- **Hits** column is now a small colored pill badge with the hit count and a descriptive tooltip.
3939

40-
## [1.0.14] - 2026-05-03
40+
## [0.1.14] - 2026-05-03
4141
### Changed
4242
- Replay status indicator moved above the Record/Replay tab buttons so the current state is visible regardless of the active tab.
4343
- Per-request match indicator: each row in the API requests list now shows a green ● when it has been matched at least once during the current replay (gray when not yet matched, faded when not replaying). Matched rows are highlighted with a subtle green tint. Replaces the previous reliance on the global Matched/Unmatched stats which under-counted because of de-duplication by path.
4444

45-
## [1.0.13] - 2026-05-03
45+
## [0.1.13] - 2026-05-03
4646
### Changed
4747
- Replay stats now only count requests within the recording's URL filter (e.g. `/api`). Out-of-scope analytics calls (e.g. `/ingest/*`) no longer pollute Matched/Unmatched counters.
4848
- "Unmatched" stat is de-emphasized in the popup; "Recent unmatched" is hidden when there are no in-scope unmatched requests.
4949

5050
### Added
5151
- When opening the popup while replay is in progress, the Replay tab is now focused automatically and the popup body is visually marked (blue tint + border) to indicate replay mode.
5252

53-
## [1.0.12] - 2026-05-03
53+
## [0.1.12] - 2026-05-03
5454
### Fixed
5555
- Record tab now shows the full request list right after stopping recording. Two issues caused it to look "still filtered" while the replay/review tab showed everything: (1) the popup's `newApiCall` live-update listener referenced an undeclared `currentRecordingApis` set and threw on every captured request, so the record-tab list was never updated live; (2) `stopRecording` detached the debugger before the recorder's event queue had a chance to drain, so any `responseReceived` handlers still mid-flight were cancelled. Now the popup declares `currentRecordingApis` properly, and `stopRecording` awaits the recorder queue before detaching.
5656

57-
## [1.0.11] - 2026-05-03
57+
## [0.1.11] - 2026-05-03
5858
### Fixed
5959
- Recording now persists requests from `Network.responseReceived` (matching the working v0.1 flow) instead of only from `Network.loadingFinished`. Chrome does not reliably fire `loadingFinished` for some responses (cached, 304 Not Modified, streamed), which previously caused most GETs to be silently dropped — only the POST would survive in the saved recording even though all requests appeared live during recording.
6060
### Added
6161
- Regression test in `tests/unit/recorder.test.ts` covering the case where `Network.loadingFinished` never fires after `responseReceived`.
6262

63-
## [1.0.10] - 2026-05-03
63+
## [0.1.10] - 2026-05-03
6464
### Fixed
6565
- Replay now matches recorded requests by **HTTP method + pathname**, not pathname alone. Previously, when a recording contained both a GET and a POST on the same path (e.g. `/api/items`), only the entry that happened to come first in iteration order was returned for every incoming request — which on busy pages typically meant POSTs replied to GETs and vice‑versa. The fallback (length-based) matcher also now requires method to match.
6666
### Added
6767
- Regression tests in `tests/unit/replayer.test.ts`: an incoming GET selects the GET-recorded response (not the POST) for the same path, and a method mismatch falls through to `continueRequest`.
6868

69-
## [1.0.9] - 2026-05-03
69+
## [0.1.9] - 2026-05-03
7070
### Fixed
7171
- Recording now reliably captures **all** requests on busy pages, not just the first/last. Concurrent network events (`requestWillBeSent` / `responseReceived` / `loadingFinished`) were racing on `chrome.storage.session` reads/writes, causing handlers to overwrite each other's `pendingRequests` and `recordedData` and silently drop most GET requests. The recorder now serializes all events through a per-process promise queue and re-reads the latest state immediately before each `patch`.
7272
### Added
7373
- Regression test `records all of many concurrent GET requests (no lost updates)` in `tests/unit/recorder.test.ts` that interleaves N parallel request lifecycles against an async store.
7474

75-
## [1.0.8] - 2026-05-03
75+
## [0.1.8] - 2026-05-03
7676
### Fixed
7777
- Recording now reliably captures large POST requests (e.g. `/api/votes/voting-percentages`). Removed `Fetch.enable` interception from the recording flow; recording now uses pure `Network.*` debugger events (`requestWillBeSent``responseReceived``loadingFinished`) and `Network.getResponseBody`, matching the working pre-refactor v0.1 behavior. POST bodies that Chrome does not inline are fetched via `Network.getRequestPostData`.
7878
### Changed
7979
- `tests/unit/recorder.test.ts` updated to cover the new `Network.*` flow, including the large-POST regression scenario and UTF-8-safe base64 decoding.
8080

81-
## [1.0.7] - 2026-05-03
81+
## [0.1.7] - 2026-05-03
8282
### Fixed
8383
- POST requests are now reliably recorded even when Chrome does not fire `Network.requestWillBeSent` before `Fetch.requestPaused` (or fires it with a non-matching id). The Fetch handler now synthesizes a request entry from `params.request` when no pending entry exists, applying the recording's URL filter.
8484

8585
### Added
8686
- Unit tests for the recorder (`tests/unit/recorder.test.ts`) covering: POST recorded with no prior `Network.requestWillBeSent`, URL-filter exclusion of non-`/api` requests, and matching by `networkId` when the pending entry exists.
8787

88-
## [1.0.6] - 2026-05-03
88+
## [0.1.6] - 2026-05-03
8989
### Fixed
9090
- POST requests (and other requests with large bodies) no longer silently disappear from recordings. The root cause was that Chrome does not reliably fire `Network.loadingFinished` when Fetch interception is active; requests are now persisted directly inside the `Fetch.requestPaused` handler as soon as the response body is available.
9191
- Response status and headers are now captured from `Fetch.requestPaused` params as a fallback when `Network.responseReceived` has not yet fired.
9292
- POST request bodies (`postData`) are now stored in the recording for future reference.
9393

94-
## [1.0.5] - 2026-05-03
94+
## [0.1.5] - 2026-05-03
9595
### Fixed
9696
- Editing popup now correctly renders non-Latin1 characters (e.g. Hebrew, Arabic, Chinese) in response bodies that were recorded before v1.0.4 and stored as raw base64.
9797

98-
## [1.0.4] - 2026-05-03
98+
## [0.1.4] - 2026-05-03
9999
### Fixed
100100
- Recording no longer silently drops response bodies for POST requests where Chrome assigns a different `networkId` vs `requestId` in the Fetch/Network debugger events (fallback key resolution added).
101101
- Base64-encoded response bodies containing UTF-8 characters are now correctly decoded during recording (replaced bare `atob` with `decodeURIComponent(escape(atob(...)))`).
102102

103-
## [1.0.3] - 2026-05-03
103+
## [0.1.3] - 2026-05-03
104104
### Fixed
105105
- Unicode characters in recorded response bodies no longer cause `btoa` errors during replay (replaced bare `btoa` with a UTF-8-safe base64 encoder).
106106

107-
## [1.0.2] - 2026-05-03
107+
## [0.1.2] - 2026-05-03
108108
### Added
109109
- URL path prefix mapping for cross-environment replay: record on staging (e.g. `/microservice1/api/users`), replay locally (e.g. `/api/users`) using the new **URL Mappings** field in the Replay tab.
110110
- Mappings are persisted with each recording's replay options and restored on selection.
111111
- README workflow documentation for the central-record / local-replay use case.
112112

113-
## [1.0.1] - 2026-04-26
113+
## [0.1.1] - 2026-04-26
114114

115115
### Added
116116
- In-progress recorded URLs preview in the `Record` tab for live visibility while capturing traffic.
@@ -121,7 +121,7 @@ and this project adheres to Semantic Versioning.
121121
### Fixed
122122
- Popup replay/preview interaction stability improvements to keep request inspection and control flows consistent.
123123

124-
## [1.0.0] - 2026-04-26
124+
## [0.1.0] - 2026-04-26
125125

126126
### Added
127127
- Vite + CRX + TypeScript production toolchain with lint, typecheck, build and packaging scripts.

docs/recording-debug-history.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,36 +7,36 @@ Some API calls are not being recorded. The user reports that certain URLs (e.g.
77

88
## What Was Tried (Chronological)
99

10-
### v1.0.3 — Fix `btoa` crash during replay (Unicode)
10+
### v0.1.3 — Fix `btoa` crash during replay (Unicode)
1111
- **Problem:** Replay crashed with `InvalidCharacterError: btoa` for responses containing Hebrew/Unicode.
1212
- **Fix:** Replaced bare `btoa()` with `btoa(unescape(encodeURIComponent(str)))` in `replayer.ts`.
1313
- **Result:** ✅ Replay Unicode crash fixed.
1414

1515
---
1616

17-
### v1.0.4 — Fix POST recording via `networkId`/`requestId` fallback
17+
### v0.1.4 — Fix POST recording via `networkId`/`requestId` fallback
1818
- **Problem:** POST requests (e.g. `voting-percentages`) were not being recorded.
1919
- **Root cause hypothesis:** Chrome assigns different `networkId` vs `requestId` for some requests; the `Fetch.requestPaused` handler looked up `pendingRequests[networkId]` and found nothing.
2020
- **Fix:** Added fallback: if `networkId` lookup fails, try `requestId`.
2121
- **Result:** ❌ Still not working reliably.
2222

2323
---
2424

25-
### v1.0.6 — Move persistence into `Fetch.requestPaused`
25+
### v0.1.6 — Move persistence into `Fetch.requestPaused`
2626
- **Problem:** `Network.loadingFinished` is not reliably fired by Chrome when `Fetch.enable` interception is active.
2727
- **Fix:** Moved `getResponseBody` + persist logic into `Fetch.requestPaused` handler directly.
2828
- **Result:** ❌ Still not working for all requests.
2929

3030
---
3131

32-
### v1.0.7 — Synthesize request entry in `Fetch.requestPaused`
32+
### v0.1.7 — Synthesize request entry in `Fetch.requestPaused`
3333
- **Problem:** When `Network.requestWillBeSent` didn't fire before `Fetch.requestPaused`, no `pendingRequests` entry existed and the request was silently dropped.
3434
- **Fix:** `Fetch.requestPaused` now synthesizes a request entry from `params.request` when no pending entry is found.
3535
- **Result:** ❌ Still not working.
3636

3737
---
3838

39-
### v1.0.8 — Revert to pure `Network.*` flow (drop `Fetch.enable`)
39+
### v0.1.8 — Revert to pure `Network.*` flow (drop `Fetch.enable`)
4040
- **Problem:** The entire `Fetch.enable` approach was unreliable for large bodies.
4141
- **Fix:** Removed `Fetch.enable` entirely. Recorder reverted to the pre-refactor v0.1 flow:
4242
- `Network.requestWillBeSent` → store pending request
@@ -47,43 +47,43 @@ Some API calls are not being recorded. The user reports that certain URLs (e.g.
4747

4848
---
4949

50-
### v1.0.9 — Serialize event handlers (fix race condition)
50+
### v0.1.9 — Serialize event handlers (fix race condition)
5151
- **Problem:** On busy pages, concurrent `Network.*` events raced on `chrome.storage.session` reads/writes, causing handlers to overwrite each other's `pendingRequests`/`recordedData`.
5252
- **Fix:** All `onRecorderEvent` calls serialized through a per-process promise queue; state re-read immediately before each patch.
5353
- **Result:** ✅ Concurrency fixed, but some requests still missing.
5454

5555
---
5656

57-
### v1.0.10 — Match replay by method + pathname
57+
### v0.1.10 — Match replay by method + pathname
5858
- **Problem:** Replay matched only by pathname, so GET and POST on the same path collided.
5959
- **Fix:** Matcher now requires HTTP method to match in addition to pathname.
6060
- **Result:** ✅ Replay matching improved.
6161

6262
---
6363

64-
### v1.0.11 — Persist in `responseReceived`, not `loadingFinished`
64+
### v0.1.11 — Persist in `responseReceived`, not `loadingFinished`
6565
- **Problem:** After stopping recording, only POST requests appeared in the saved list even though all requests were visible live.
6666
- **Root cause:** `Network.loadingFinished` is not reliably fired for cached/304/streamed responses.
6767
- **Fix:** Moved `getResponseBody` + persist into `Network.responseReceived`.
6868
- **Result:** ✅ More requests saved, but still not all.
6969

7070
---
7171

72-
### v1.0.12 — Fix `currentRecordingApis` ReferenceError + drain queue on stop
72+
### v0.1.12 — Fix `currentRecordingApis` ReferenceError + drain queue on stop
7373
- **Problem:** Record tab showed truncated list after stopping; live updates never worked.
7474
- **Fix:** (1) Declared missing `currentRecordingApis = new Set<string>()` in popup. (2) `stopRecording` now awaits the recorder event queue before detaching debugger.
7575
- **Result:** ✅ UI fixed.
7676

7777
---
7878

79-
### v1.0.18 — Swallow debugger detach errors
79+
### v0.1.18 — Swallow debugger detach errors
8080
- **Problem:** `Uncaught Error: Detached while handling command` during replay.
8181
- **Fix:** All `chrome.debugger.sendCommand` calls routed through `safeSendCommand` helper that swallows detach errors.
8282
- **Result:** ✅ Replay error fixed.
8383

8484
---
8585

86-
### v1.0.19 (current, not released) — Unique timestamp-based keys
86+
### v0.1.19 (current, not released) — Unique timestamp-based keys
8787
- **Problem:** When the same endpoint was called multiple times, only the last response was kept (key collision).
8888
- **Fix:** `requestKey` now appends a timestamp: `GET /api/config [200] 2026-05-03T...`
8989
- **Result:** ❓ Not yet confirmed working by user.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "apireplay",
3-
"version": "1.0.20",
3+
"version": "0.1.20",
44
"private": true,
55
"type": "module",
66
"scripts": {

0 commit comments

Comments
 (0)