@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.
Files changed (3) hide show
  1. package/README.md +19 -21
  2. package/package.json +2 -3
  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 | Always available |
834
- | `Shift+L` | Always available |
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. What survives is the
914
- database and your panel preferences, not the captured bodies.
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 and there is
918
- no programmatic API for it either. Use Purge when you want the database gone
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 `Authorization` masked — so the output is not a working request |
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
- - **Purge after any session that captured an auth flow** — and purge *before*
945
- you switch preserve-log back off, or the control disappears on you.
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](./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.1",
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.