Skip to content

Commit cd68e6a

Browse files
committed
feat: Network Inspector v1, multi-framework improvements, box-model UX fixes
- Network Inspector (y toggle): fetch/XHR capture, call stack, N+1 analysis, GraphQL detection, drift/anomaly detection, TypeScript interface generation - Tooltip DOM tab: Copy HTML + Copy classes, per-attribute copy buttons - Key bindings simplified: x=picker, y=network panel, Esc=close all - Scroll isolation in tooltip + network panel - Right-click during hold-x toggles tooltip dismiss (box-model overlay UX) - Box-model overlay labels now render with dark background badge - N+1 dialog: severity tiers, stats row, Copy all - Call stack in network requests (12 frames, internals filtered)
1 parent 2171f8c commit cd68e6a

30 files changed

Lines changed: 939 additions & 135 deletions

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,8 @@ demo/.vite/
1414
.pw-profile/
1515
screenshots/
1616
playwright-report/
17+
18+
# OAuth / secrets — never commit
19+
client_secret*.json
20+
*.env
21+
.env*

CHANGELOG.md

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
### Added
1111

12-
- **Call stack in network requests** — each captured request now carries the JS call stack that triggered it (up to 12 user-land frames, webpack/node_modules internals filtered out). Displayed in the Overview tab as a scrollable frame list with per-frame copy buttons and a "Copy all" button on the section header. The call stack is also included in the per-request debug bundle (Copy all in the Request tab).
13-
14-
- **N+1 dialog: stats, severity, and Copy all** — the N+1 Patterns overlay now shows for each pattern: a stats row with avg duration, total time wasted, and first/last seen timestamps; a computed burst window in the count pill (replaces the hardcoded "in 3s"); three severity tiers (moderate / high / critical) with distinct colours and matching hint text; and a **Copy all** button in the overlay header that exports a structured N+1 debug bundle (all patterns, full request list per pattern, timing stats).
15-
16-
### Changed
17-
18-
- **Scroll isolation** — the cursor tooltip body and the Network Inspector panel (request list + tab panels) no longer scroll the host page when the cursor is inside them (`overscroll-behavior: contain` + `wheel stopPropagation`).
19-
- **Selected request row** — the focused request in the Network Inspector list now has a stronger indigo left border and background, making it easy to identify while inspecting its detail tabs.
20-
21-
### Removed
22-
23-
- **Smart labels in Overview tab** — the auto-generated human-readable label card has been removed from the Overview tab to reduce visual noise. Labels remain visible in the request list column.
24-
25-
## [0.4.0] - 2026-05-03
26-
27-
### Added
28-
2912
- **Network Inspector** (`y` to toggle) — a floating draggable panel that captures every `fetch` and `XMLHttpRequest` call made by the page in real time, without any proxy or DevTools Protocol required. The capture runs entirely in the MAIN world by patching `window.fetch` and `window.XMLHttpRequest`; captured entries travel over `postMessage` to the isolated-world store before being displayed.
3013

3114
Request entries carry: id, timestamp, method, URL (path + query + host), request headers and body, response headers and body, HTTP status, duration, and a component attribution derived from the call-site stack trace.
@@ -51,13 +34,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
5134

5235
- **Tooltip DOM tab improvements** — the DOM tab in the contextual tooltip now has a **Copy HTML** + **Copy classes** button group (replacing the single "Copy" button) and an attributes table with per-attribute rows showing name, truncated value, and an individual copy button on each row.
5336

37+
- **Call stack in network requests** — each captured request now carries the JS call stack that triggered it (up to 12 user-land frames, webpack/node_modules internals filtered out). Displayed in the Overview tab as a scrollable frame list with per-frame copy buttons and a "Copy all" button on the section header. The call stack is also included in the per-request debug bundle (Copy all in the Request tab).
38+
39+
- **N+1 dialog: stats, severity, and Copy all** — the N+1 Patterns overlay now shows for each pattern: a stats row with avg duration, total time wasted, and first/last seen timestamps; a computed burst window in the count pill (replaces the hardcoded "in 3s"); three severity tiers (moderate / high / critical) with distinct colours and matching hint text; and a **Copy all** button in the overlay header that exports a structured N+1 debug bundle (all patterns, full request list per pattern, timing stats).
40+
5441
### Changed
5542

5643
- **Key bindings** — the binding scheme has been simplified:
5744
- **`x` held** activates the component picker: hover any element to get the indigo highlight and the contextual tooltip floating near the cursor. Click to open the full inspector panel. This replaces the old `y` (hover) and `y + x` (tooltip) combination — `x` alone does everything.
5845
- **`y` keypress** toggles the Network Inspector panel.
5946
- **`Esc`** closes all overlays (tooltip, component panel, Network Inspector panel).
6047
- The `y + x` combo for the tooltip is gone; `y` is now exclusively the Network Inspector toggle.
48+
- **Scroll isolation** — the cursor tooltip body and the Network Inspector panel (request list + tab panels) no longer scroll the host page when the cursor is inside them (`overscroll-behavior: contain` + `wheel stopPropagation`).
49+
- **Selected request row** — the focused request in the Network Inspector list now has a stronger indigo left border and background, making it easy to identify while inspecting its detail tabs.
50+
51+
### Fixed
52+
53+
- **Right-click dismiss** — right-clicking during hold-`x` now toggles the floating tooltip off, so the box-model overlay is fully visible without the tooltip obscuring it. The dismissed state persists across key-release/re-press cycles; only the next right-click restores live tracking.
54+
- **Box-model overlay labels** — the px dimension labels in padding and margin overlay zones now render with a dark background badge, making them legible over any element colour.
55+
56+
### Removed
57+
58+
- **Smart labels in Overview tab** — the auto-generated human-readable label card has been removed from the Overview tab to reduce visual noise. Labels remain visible in the request list column.
6159

6260
## [0.3.0] - 2026-05-01
6361

@@ -150,4 +148,3 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
150148
[0.1.0]: https://github.com/rosoam/peekly/releases/tag/v0.1.0
151149
[0.2.0]: https://github.com/rosoam/peekly/releases/tag/v0.2.0
152150
[0.3.0]: https://github.com/rosoam/peekly/releases/tag/v0.3.0
153-
[0.4.0]: https://github.com/rosoam/peekly/releases/tag/v0.4.0

docs/CHROME_WEB_STORE.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,17 +69,17 @@ Peekly
6969
### Short description
7070

7171
```
72-
Hold y and click to peek at any React component, DOM element, or CSS — fast, seamless, on any site.
72+
Hold x to inspect any component, DOM element, or CSS. Press y for the Network Inspector — fast, seamless, on any site.
7373
```
7474

75-
(Limit: 132 characters. The version above is 110.)
75+
(Limit: 132 characters. The version above is 125.)
7676

7777
### Detailed description
7878

7979
```
8080
Peekly is a near-invisible developer inspector that turns any web page into an interactive component map.
8181
82-
Hold the y key, hover any element, and Peekly highlights the React component under your cursor. Click to open a floating panel with everything you need:
82+
Hold the x key, hover any element, and Peekly highlights the React component under your cursor with a contextual tooltip showing component details (Comp / DOM / CSS / A11y tabs). The tooltip is sticky: release x and it stays on screen for interaction. Click outside or press Esc to dismiss. Click while holding x to open a full floating panel with everything you need:
8383
8484
• Source file — one-click "Open in VS Code / Cursor / WebStorm / Sublime"
8585
• Live re-render counter
@@ -91,7 +91,7 @@ Hold the y key, hover any element, and Peekly highlights the React component und
9191
• Hints for inline functions in props, dangerouslySetInnerHTML, very long classNames
9292
• Owner chain with clickable source links
9393
94-
Hold y + x while hovering for a contextual tooltip that follows the cursor — a mini debugger with tabs for Component / DOM / CSS / A11y. The tooltip is sticky: once it appears, you can release both keys and it stays on screen for interaction. Click outside or press Esc to dismiss.
94+
Press y to toggle the Network Inspector — a floating draggable panel that captures every fetch and XHR request on the page in real time. Filter by method / status / search. See request details (headers, body, TypeScript interface generation), GraphQL analysis, call stack for each request, and N+1 pattern detection with severity tiers.
9595
9696
Plain letter keys are intentional — they're easy to reach with one hand and don't collide with the OS / browser shortcuts that real modifiers (Option, Shift, Ctrl) tend to clash with. Peekly never captures keys while you're typing in a form field.
9797

docs/SPRINT_LOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Peekly — Sprint Log
2+
3+
Entrées de travail non analysées. Alimentées via `/log-peekly`.
4+
5+
<!-- Les nouvelles entrées s'ajoutent automatiquement ici via `log-peekly` -->
6+
7+
## En attente d'analyse
8+
9+
## Intégré au backlog
10+
11+
- [x] [2026-05-06 18:54] clic droit (contextmenu) pendant hold-x toggle la visibilité du panel flottant → P0 · S — bug-ux mouse event guard ✅ livré
12+
- [x] [2026-05-06 18:53] bg manquant derrière les labels px dans les zones padding/margin overlay → P1 · XS — bug-ux CSS fix ✅ livré
13+
- [x] [2026-05-06 17:12] au hover, on doit voir le padding des éléments comme background dans/autour + px et classes impliquées → P1 · M — feature box-model-overlay ⏳ backlog
14+
- [x] [2026-05-06 16:50] le X ne marche pas sur windows.. → P0 · S — bug-critique Windows, keyboard events ✅ livré
15+
- [x] [2026-05-06 16:50] on doit voir aussi les padding et margin au hover des éléments → P1 · S — amélioration-ux tooltip box model ✅ livré

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "peekly",
33
"version": "0.3.0",
4-
"description": "Hold Y and click to peek at any React component, DOM element, or CSS. Hold Y + X for the contextual tooltip — fast, seamless, on any site.",
4+
"description": "Hold x to inspect any component, DOM element, or CSS. Press y for the Network Inspector — fast, seamless, on any site.",
55
"private": true,
66
"type": "module",
77
"license": "MIT",

public/promo/canva-full-1.png

479 KB
Loading

public/promo/canva-full-2-1.png

922 KB
Loading

public/promo/canva-full-2.png

1.16 MB
Loading

public/promo/canva-full.png

780 KB
Loading

public/promo/canva-small-1.png

154 KB
Loading

0 commit comments

Comments
 (0)