Skip to content

GLA-68: noise filtering toggle + advanced controls#22

Merged
paoloanzn merged 2 commits into
paolo/gla-67-multi-tab-ui-redesignfrom
codex/paolo/gla-68-noise-filtering-quick-toggle-advanced-category-controls
Mar 7, 2026
Merged

GLA-68: noise filtering toggle + advanced controls#22
paoloanzn merged 2 commits into
paolo/gla-67-multi-tab-ui-redesignfrom
codex/paolo/gla-68-noise-filtering-quick-toggle-advanced-category-controls

Conversation

@paoloanzn
Copy link
Copy Markdown
Member

@paoloanzn paoloanzn commented Mar 7, 2026

Summary

  • add recorder-level noise filtering with default categories and custom URL/domain exclusions
  • add toolbar quick toggle + advanced Filters dialog with persisted settings
  • add Deep Inspection Incoming improvements: no body truncation/cropping, content-type-aware prettify and JSON syntax highlighting
  • include media noise extensions for streaming assets (.m3u8, .m4s)

Validation

  • npm run compile

@linear
Copy link
Copy Markdown

linear Bot commented Mar 7, 2026

GLA-68 Noise filtering — quick toggle + advanced category controls

Overview

Most pages fire dozens of requests we'll never care about — analytics pings, asset fetches, tracking pixels, health checks. This issue introduces a noise-filtering system so the recorder only surfaces requests that are meaningful for API mapping.

The design has two levels: a quick toggle for one-click filtering and an advanced dialog for fine-grained control.


Quick Toggle

A single Filter Noise toggle in the persistent toolbar (alongside Live/Frozen and Export). When enabled, all default filter categories are active. When disabled, every request is recorded unfiltered.

Default state: on.


Default Filter Categories

These are active when the quick toggle is on. Each can be individually overridden in the advanced dialog.

Category What gets excluded
Media Images (image/*), video (video/*), audio (audio/*), fonts (font/*), .woff, .woff2, .ttf, .otf, .eot
Static assets .js, .css, .html, .map, .ico, .svg fetched as documents/scripts/stylesheets
Analytics & tracking Known tracker domains (Google Analytics, Segment, Mixpanel, Amplitude, Hotjar, Sentry, Datadog RUM, etc.) and URL patterns (/collect, /track, /pixel, /beacon)
Prefetch / preload Requests with Purpose: prefetch or Sec-Fetch-Dest: empty that return no body
Health checks & pings URLs matching /health, /ping, /heartbeat, /status; responses with no body or body "ok" / "pong"
Browser internals chrome-extension://, devtools://, blob:, data: URLs

Advanced Dialog

Accessible via a small ⚙ Filters link or cog icon next to the quick toggle. Opens a modal/drawer with:

  • A checkbox per category (all checked = default-on)
  • A custom URL patterns text field — comma-separated substrings or glob patterns; any matching URL is excluded
  • A custom domains field — comma-separated domains to always exclude
  • Reset to defaults button
  • Apply button (closes the dialog and applies immediately)

Settings persist in localStorage so they survive panel close/reopen.


Toolbar Layout

[ ● Live ]   [ Filter Noise ⚙ ]   [ Export ]   [ ⚙ Settings ]

The after "Filter Noise" opens the advanced dialog. The main toggle still enables/disables all filtering with one click.


Implementation Notes

  • Filtering runs inside the request recorder before a request is scored or stored — filtered requests never enter state at all (no processing overhead).
  • The filter predicate should be a pure function (shouldRecord(entry, filterSettings): boolean) so it's independently testable.
  • Changes to filter settings while recording is live take effect immediately (retroactive clearing of already-recorded entries is optional / out of scope).
  • The advanced dialog is non-blocking — user can adjust without stopping recording.

Acceptance Criteria

  • Quick toggle visible in toolbar; default on
  • All six default categories correctly suppress matching requests
  • Advanced dialog opens with per-category checkboxes
  • Custom URL pattern and domain exclusion fields work
  • Settings persist across panel close/reopen
  • Reset to defaults restores original checkbox state
  • Disabling the quick toggle completely bypasses all filters

@paoloanzn paoloanzn merged commit c931ef9 into paolo/gla-67-multi-tab-ui-redesign Mar 7, 2026
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