@hakam-aldeen-kh/blix 0.4.1 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -21
- package/package.json +2 -3
- package/CHANGELOG.md +0 -129
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ a dockable panel with a waterfall, diffing, replay and HAR/cURL export.
|
|
|
8
8
|
The entire panel is eliminated from production builds — see
|
|
9
9
|
[Production elimination](#production-elimination).
|
|
10
10
|
|
|
11
|
-
Release notes are in [CHANGELOG.md](CHANGELOG.md).
|
|
11
|
+
Release notes are in [CHANGELOG.md](https://github.com/Hakam-aldeen-Kh/blix/blob/main/CHANGELOG.md).
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
|
@@ -830,8 +830,10 @@ Three ways to toggle it:
|
|
|
830
830
|
| Where | Note |
|
|
831
831
|
| --- | --- |
|
|
832
832
|
| Toolbar button | Hidden in the compact layout |
|
|
833
|
-
| **⋯ More actions** overflow menu |
|
|
834
|
-
| `Shift+L` |
|
|
833
|
+
| **⋯ More actions** overflow menu | — |
|
|
834
|
+
| `Shift+L` | — |
|
|
835
|
+
|
|
836
|
+
All three require the panel to be mounted.
|
|
835
837
|
|
|
836
838
|
**Turning it on is retroactive.** The toggle does not mean "from now on".
|
|
837
839
|
Switching it on writes every entry already sitting in the live buffer — the
|
|
@@ -887,7 +889,7 @@ for your payloads and no way to tell a secret from any other string.
|
|
|
887
889
|
| Bound | Value |
|
|
888
890
|
| --- | --- |
|
|
889
891
|
| Records | 200 |
|
|
890
|
-
| Total size | 24 MB |
|
|
892
|
+
| Total size | 24 MB — HTTP entries only |
|
|
891
893
|
| Per payload field | 512 KB |
|
|
892
894
|
| Eviction | oldest first, once either bound is exceeded |
|
|
893
895
|
| Time-based expiry | none |
|
|
@@ -897,26 +899,21 @@ records or 24 MB of newer traffic push it out, or when you clear it yourself.
|
|
|
897
899
|
On a low-traffic app with preserve-log left on, a captured token stays in the
|
|
898
900
|
browser profile indefinitely.
|
|
899
901
|
|
|
900
|
-
> **Realtime frames are an exception to the size bound.** They are stored
|
|
901
|
-
> without truncation and are under-counted against the byte budget — a record
|
|
902
|
-
> is charged a flat allowance regardless of how many frames it carries, and a
|
|
903
|
-
> connection can hold hundreds. A long-lived realtime session can therefore
|
|
904
|
-
> occupy considerably more on disk than the 24 MB figure implies, and eviction
|
|
905
|
-
> will not reclaim it. The record and size caps hold for HTTP entries.
|
|
906
|
-
> Tracked in [#N](https://github.com/Hakam-aldeen-Kh/blix/issues/N).
|
|
907
|
-
|
|
908
902
|
To purge, use the persisted-size label in the status bar — the one reading
|
|
909
903
|
`12 saved · 3.4 MB`. It is the control: click once to arm it, at which point
|
|
910
904
|
it changes to `Purge saved log?`, and click again to delete the database.
|
|
911
905
|
|
|
912
906
|
Switching preserve-log **off** also clears the stored entries, so turning it
|
|
913
|
-
off is itself a way to drop everything Blix has written.
|
|
914
|
-
|
|
907
|
+
off is itself a way to drop everything Blix has written.
|
|
908
|
+
|
|
909
|
+
Both paths clear the captured entries; Purge additionally deletes the
|
|
910
|
+
IndexedDB database itself. **Your panel preferences survive either way** —
|
|
911
|
+
they are mirrored to `localStorage`, and a fresh database is re-seeded from
|
|
912
|
+
that mirror on the next boot. There is no UI or API for clearing them.
|
|
915
913
|
|
|
916
914
|
**The purge control is only rendered while preserve-log is on**, so once you
|
|
917
|
-
have switched it off there is nothing left in the UI to press
|
|
918
|
-
|
|
919
|
-
outright; switch off when clearing the entries is enough.
|
|
915
|
+
have switched it off there is nothing left in the UI to press. There is no
|
|
916
|
+
programmatic API for either path.
|
|
920
917
|
|
|
921
918
|
### Threat model
|
|
922
919
|
|
|
@@ -931,7 +928,7 @@ Export and copy move captured data out of the browser entirely:
|
|
|
931
928
|
| --- | --- |
|
|
932
929
|
| HAR export | Decrypted request and response bodies |
|
|
933
930
|
| JSON / NDJSON export | Everything captured — frames, Redux diffs, timings |
|
|
934
|
-
| **Copy as cURL** / **Copy as fetch** | Headers and bodies, with
|
|
931
|
+
| **Copy as cURL** / **Copy as fetch** | Headers and bodies, with the four redacted headers masked — so the output is not a working request |
|
|
935
932
|
|
|
936
933
|
HAR is the one to watch. It is a plain JSON file carrying your decrypted
|
|
937
934
|
bodies, and it is the artifact most likely to end up attached to a ticket.
|
|
@@ -941,8 +938,9 @@ bodies, and it is the artifact most likely to end up attached to a ticket.
|
|
|
941
938
|
- **Leave preserve-log off unless you actively need it.** It is off by
|
|
942
939
|
default. In-memory capture already gives you the entire panel; the toggle
|
|
943
940
|
buys you nothing but survival across a reload.
|
|
944
|
-
- **
|
|
945
|
-
|
|
941
|
+
- **Clear the log after any session that captured an auth flow** —
|
|
942
|
+
switching preserve-log off is enough; Purge additionally deletes the
|
|
943
|
+
database, though neither removes your panel preferences.
|
|
946
944
|
- **Use the Redux `ignore` option** for action types that carry credentials or
|
|
947
945
|
personal data, so they are never captured in the first place. See
|
|
948
946
|
[Redux](#redux--createreduxmonitormiddlewareoptions).
|
|
@@ -973,4 +971,4 @@ The `/capture` entry exports `attachHttpMonitor`, `captureEncrypted`,
|
|
|
973
971
|
|
|
974
972
|
## License
|
|
975
973
|
|
|
976
|
-
MIT — see [LICENSE](
|
|
974
|
+
MIT — see [LICENSE](https://github.com/Hakam-aldeen-Kh/blix/blob/main/LICENSE).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hakam-aldeen-kh/blix",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "Dev-tools panel for React apps — HTTP, Redux, Query and Realtime monitoring.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"devtools",
|
|
@@ -63,8 +63,7 @@
|
|
|
63
63
|
"./package.json": "./package.json"
|
|
64
64
|
},
|
|
65
65
|
"files": [
|
|
66
|
-
"dist"
|
|
67
|
-
"CHANGELOG.md"
|
|
66
|
+
"dist"
|
|
68
67
|
],
|
|
69
68
|
"engines": {
|
|
70
69
|
"node": ">=18"
|
package/CHANGELOG.md
DELETED
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to this project are documented in this file.
|
|
4
|
-
|
|
5
|
-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
-
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
-
|
|
8
|
-
## [0.4.1] - 2026-08-24
|
|
9
|
-
|
|
10
|
-
### Changed
|
|
11
|
-
|
|
12
|
-
- Documentation only — no code change.
|
|
13
|
-
- Added a Security section documenting what Blix captures, what reaches
|
|
14
|
-
IndexedDB and when, the four redacted header names, retention limits and
|
|
15
|
-
how to purge.
|
|
16
|
-
- Documented `preserve-log`: its default, the three toggles, and that
|
|
17
|
-
switching it on writes the session already in the buffer.
|
|
18
|
-
- Corrected the `dbName` section, which claimed the log persists across a
|
|
19
|
-
reload by default. It does not — persistence is opt-in.
|
|
20
|
-
- Noted that the package is ESM-only.
|
|
21
|
-
- Added `SECURITY.md`.
|
|
22
|
-
|
|
23
|
-
## [0.4.0] - 2026-08-24
|
|
24
|
-
|
|
25
|
-
Identical in code to 0.3.3. It exists only to correct the version number: 0.3.3
|
|
26
|
-
was a feature release with a type-level break and should never have been a patch
|
|
27
|
-
bump. 0.3.3 is deprecated on npm in favour of this release. Everything below is
|
|
28
|
-
new relative to 0.3.2, not to 0.3.3.
|
|
29
|
-
|
|
30
|
-
### Added
|
|
31
|
-
|
|
32
|
-
- Twelve panel themes, behind a new toolbar button. Dark: Midnight (default),
|
|
33
|
-
Carbon, Nord, Tokyo Night, One Dark, Mocha, Dracula, Gruvbox. Light: Daylight,
|
|
34
|
-
GitHub, Latte, Solar. Hovering or arrow-keying an entry applies it to the panel
|
|
35
|
-
behind the menu; moving away restores the previous one. The default preference
|
|
36
|
-
is `auto`, which follows the host app's light/dark class on `<html>`. The
|
|
37
|
-
choice is persisted with the panel's other preferences.
|
|
38
|
-
- A format switch on every payload pane — Tree, Table, JSON, YAML, Text. It
|
|
39
|
-
applies to request and response bodies, realtime frames, the encrypted
|
|
40
|
-
envelope, Redux actions and both Redux state views. Copy returns whichever
|
|
41
|
-
format is on screen (Table copies CSV, YAML copies YAML). The choice is
|
|
42
|
-
persisted.
|
|
43
|
-
- Folding in the JSON view, with a **Collapse all** action; Alt-click in the Tree
|
|
44
|
-
expands or collapses an entire subtree.
|
|
45
|
-
- Keyboard navigation in the payload tree (arrow keys to move, expand, collapse
|
|
46
|
-
and step in/out; Enter to toggle) and in menus (arrows, Home/End, Enter, and
|
|
47
|
-
Esc to close and return focus to the button that opened it). The `?` cheatsheet
|
|
48
|
-
documents both, plus the theme picker and the formats.
|
|
49
|
-
- An export menu with six formats — HAR, JSON, NDJSON, Markdown table (to the
|
|
50
|
-
clipboard), CSV and a cURL script — and a **Shown** / **All** scope toggle that
|
|
51
|
-
shows both counts. Export previously always took the unfiltered buffer,
|
|
52
|
-
whatever the list was showing; Shown is now the default. CSV is written with a
|
|
53
|
-
UTF-8 BOM so Excel reads non-ASCII correctly.
|
|
54
|
-
- A store slice picker on the Redux **State** tab. It opens on the slice the
|
|
55
|
-
selected action wrote to when the action touched exactly one, marks every slice
|
|
56
|
-
the action changed, and keeps `root` selectable.
|
|
57
|
-
- **Copy as fetch** in the row context menu, alongside Copy as cURL.
|
|
58
|
-
- Horizontal scrolling for the tab row and the slice picker when they overflow,
|
|
59
|
-
with edge fades, wheel support and arrow buttons.
|
|
60
|
-
- Accessible names and pressed/expanded state on the toolbar controls, and
|
|
61
|
-
tab/tablist roles on the tab and slice strips.
|
|
62
|
-
|
|
63
|
-
### Changed
|
|
64
|
-
|
|
65
|
-
- The **Preview** and **Response** tabs are merged into a single **Response**
|
|
66
|
-
tab. Both previously rendered the same field — one as a tree, one as raw JSON —
|
|
67
|
-
so the rendering is now chosen with the format switch instead of by picking a
|
|
68
|
-
tab.
|
|
69
|
-
- `MonitorPrefs`, exported from `@hakam-aldeen-kh/blix/capture`, gained two
|
|
70
|
-
required fields: `theme: string` and `dataFormat: string`. This is a
|
|
71
|
-
compile-time break for anyone constructing a `MonitorPrefs` object literal.
|
|
72
|
-
`BlixProps` and every function signature in `/capture` are unchanged.
|
|
73
|
-
- HAR download filename: `network-<timestamp>.har` → `blix-<timestamp>.har`.
|
|
74
|
-
Every other export uses the same `blix-<timestamp>.<ext>` form.
|
|
75
|
-
- A press anywhere outside an open menu now dismisses it, including inside the
|
|
76
|
-
panel; previously only a press outside the panel root did, so a menu left open
|
|
77
|
-
over the panel could only be closed with Esc or its own button. The press is
|
|
78
|
-
not swallowed — it still selects the row or activates the button underneath.
|
|
79
|
-
- The status bar and the detail pane's empty states name what a row is in the
|
|
80
|
-
active section — requests, connections, actions or queries — instead of calling
|
|
81
|
-
every row a "request".
|
|
82
|
-
- Every colour the panel paints now comes from the active theme's tokens: status
|
|
83
|
-
colours, method and section accents, waterfall bars, timing segments and JSON
|
|
84
|
-
syntax highlighting. The previous split, with a light palette in CSS and a
|
|
85
|
-
duplicate dark one in JS, is gone.
|
|
86
|
-
- WebSocket, Redux and Query rows take their section's accent colour rather than
|
|
87
|
-
the shared fallback that HTTP verbs fell through to.
|
|
88
|
-
- The docked badge reads "Blix" rather than "Dev", and the toolbar shows a BLIX
|
|
89
|
-
wordmark beside the status dot.
|
|
90
|
-
|
|
91
|
-
### Fixed
|
|
92
|
-
|
|
93
|
-
- Generated downloads revoke their object URL on the next task instead of
|
|
94
|
-
immediately after the click, which could race the browser's read of the blob
|
|
95
|
-
and save an empty file in Safari.
|
|
96
|
-
|
|
97
|
-
## [0.3.3] - 2026-08-24 — DEPRECATED
|
|
98
|
-
|
|
99
|
-
Released in error as a patch bump: it was a feature release that also added two
|
|
100
|
-
required fields to the publicly exported `MonitorPrefs` type. Superseded by
|
|
101
|
-
0.4.0, which is identical in code. Deprecated on npm — use 0.4.0. Its contents
|
|
102
|
-
are listed under 0.4.0.
|
|
103
|
-
|
|
104
|
-
## [0.3.2] - 2026-08-19
|
|
105
|
-
|
|
106
|
-
### Added
|
|
107
|
-
|
|
108
|
-
- `./package.json` as an export subpath, a top-level `types` field, `engines`
|
|
109
|
-
declaring Node >= 18, and package metadata (repository, homepage, bugs,
|
|
110
|
-
keywords).
|
|
111
|
-
|
|
112
|
-
### Changed
|
|
113
|
-
|
|
114
|
-
- `peerDependencies` narrowed from `*` to `axios ^1.0.0`,
|
|
115
|
-
`@reduxjs/toolkit ^2.0.0` and `@tanstack/react-query ^5.0.0`. Narrowing a peer
|
|
116
|
-
range is breaking by convention and this shipped as a patch — though 0.3.2 was
|
|
117
|
-
the first version on the public npm registry, so no npm consumer could have
|
|
118
|
-
been affected.
|
|
119
|
-
- License: `UNLICENSED` → MIT.
|
|
120
|
-
- Published to the public npm registry instead of GitHub Packages.
|
|
121
|
-
|
|
122
|
-
### Fixed
|
|
123
|
-
|
|
124
|
-
- `tapQueryClient`'s disposer now clears the client's internal tapped mark. A
|
|
125
|
-
dispose-then-reinstall cycle — exactly what React Strict Mode does to an effect
|
|
126
|
-
returning this disposer — hit the idempotency guard and became a permanent
|
|
127
|
-
no-op, leaving the Query tab silently empty for the rest of the session.
|
|
128
|
-
|
|
129
|
-
Versions before 0.3.2 were published to GitHub Packages and are not available on the public npm registry.
|