Skip to content

Tags: kostyay/httpmon

Tags

v0.1.16

Toggle v0.1.16's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix(tui): replace chafa-go with pure-Go image renderer (#42)

* fix(proxy): create data directory on first run

Fixes #39. proxy.Init() failed when ~/.httpmon/ didn't exist because
config.Load returns defaults without creating the directory.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(tui): replace chafa-go with pure-Go go-termimg for image rendering

chafa-go panics in init() when system glib is not installed, crashing
httpmon on startup for Homebrew users (fixes #38). Replace with
go-termimg which is pure Go with no native dependencies.

Also fix detail viewport height to account for all chrome lines
(header + separator + tab + blank + status bar), making the status
bar visible.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor(tui): extract detailChromeLines constant for viewport height

Replace magic number 5 with named constant across all 3 usage sites
in the detail viewport height calculation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

v0.1.15

Toggle v0.1.15's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat(browse): add linux support for url opening and system proxy (#37)

* feat(browse): add linux support for url opening and system proxy

* docs: update changelog

v0.1.14

Toggle v0.1.14's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: add --browse flag for opening URLs with system proxy (#36)

* feat: add --browse flag for opening URLs with system proxy

* feat(browse): add url flag to launch browser with proxy configured

v0.1.13

Toggle v0.1.13's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: add --browse flag for opening URLs with system proxy (#36)

* feat: add --browse flag for opening URLs with system proxy

* feat(browse): add url flag to launch browser with proxy configured

v0.1.12

Toggle v0.1.12's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat(bodydecoder): add Encoder interface for gRPC-Web/protobuf round-…

…trip (#32)

* feat(bodydecoder): add Encoder interface for gRPC-Web/protobuf round-trip

Add transparent encode/decode pipeline so JS scripts can modify gRPC-Web
and protobuf bodies as JSON. The interceptor decodes binary bodies before
scripts run and re-encodes after if modified.

Key changes:
- New Encoder interface (separate from Decoder) with CanEncode/Encode
- Registry.Encode() type-asserts decoders that also implement Encoder
- RawProtobufDecoder.Encode via ProtoRegistry.EncodeNamed (JSON→proto)
- GRPCWebDecoder.Encode with frame wrapping and trailer preservation
- runScriptsWithCodec helper in interceptor for transparent codec pipeline
- DecoderMetadata.OriginalBody for preserving gRPC-Web trailer frames
- --proto-include CLI flag for additional proto import search dirs
- ProtoRegistry.LoadProtoFiles now accepts variadic includeDirs
- E2E tests: script modifies request/response, passthrough, read-only

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* test(mcpserver): add unit tests for helpers, auth, server, and tool handlers

Coverage 0% → 84.9%. Tests exercise pure functions, auth middleware,
server lifecycle, and all MCP tool handlers via lightweight mocks.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* test(proxy): add 7 gRPC-Web codec e2e tests for edge cases

Cover respondWith on gRPC-Web, dual request+response mutation,
field add/remove, store wire-byte capture, empty body, and
unknown proto field graceful fallback.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor(proxy): simplify setupGRPCProxy return signature

Drop unused *httptest.Server and port from return values;
tighten inline comments.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

v0.1.11

Toggle v0.1.11's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix: use top-level env to fallback HOMEBREW_TAP_TOKEN to GITHUB_TOKEN (

…#30)

Go template conditional in goreleaser env section ensures
HOMEBREW_TAP_TOKEN defaults to GITHUB_TOKEN when unset.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

v0.1.10

Toggle v0.1.10's commit message
feat: add internal/config package and upgrade to Go 1.26 (#22)

* feat: add internal/config package and upgrade to Go 1.26

Add persistent config support via ~/.httpmon/config.json with Load/Save,
CLI flag overrides, and MCP token migration from legacy mcp-token file.
Upgrade Go from 1.25.3 to 1.26.0 and golangci-lint to v2.9.0 to resolve
race detector toolchain mismatch. Update README with MCP server docs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* chore: suppress gosec SSRF/command-injection findings in TUI

These are by-design: repeat/compose send user-initiated requests through
the local proxy, and the editor command comes from $VISUAL/$EDITOR.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: wire config package into main.go

Load persistent config on startup, overlay CLI flags via ApplyFlags.
Use cfg.ProxyPort, cfg.BufferSize, cfg.MCPEnabled, cfg.MCPAddr,
cfg.ThrottlePreset instead of raw flag values. MCP token now managed
via config.LoadOrCreateToken. Pass DataDir into TUI AppConfig for
future settings screen.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: add TUI settings screen (P key)

Centered popup with 7 fields: ProxyPort, MCPEnabled, MCPAddr,
BufferSize, ThrottlePreset, ListMode, TreeGroupBy. Bool/enum fields
toggle on Enter, int/string fields open textinput. Esc saves to disk.
Fields requiring restart show (restart) hint.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: add Settings to action menu (list + detail views)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: update changelog with config + settings screen entry

Promote feat/mcp-server to PR #20 link. Add feat/config-package-go126
section covering persistent config, TUI settings screen, Go 1.26 upgrade.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor: simplify settings screen and remove redundant comments

Extract settingsFieldDisplay to deduplicate format logic, simplify
bool toggle to one-liner, fix struct field alignment, remove comments
that restate obvious code.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* test: add settings modal unit tests

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: update changelog with settings test coverage

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

v0.1.9

Toggle v0.1.9's commit message
feat: add MCP server for LLM-driven HTTP debugging (#20)

* chore: add MCP Go SDK dependency

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: add MCP server design plan

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: add MCP server with 14 tools for LLM-driven HTTP debugging

Implements MCP server as peer to TUI, using same port interfaces.

Tools:
- list_requests, get_request, search_requests, get_request_count, export_har
- set_throttle, get_throttle, replay_request, mock_response
- list_scripts, create_script, get_script, toggle_script, delete_script

CLI: --mcp / --mcp-port flags. Disabled by default.
Transport: Streamable HTTP on configurable port (default 9551).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* test: add MCP server e2e tests (13 test cases)

Tests cover all tool categories:
- Read-only: list, get, search, count, HAR export
- Simulation: throttle, replay, compose
- Scripts: create, list, toggle, delete, get
- Lifecycle: start/stop

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: show MCP server port in TUI status bar

Adds MCPServer interface to ports.go. Status bar displays
"MCP :<port>" when server is active.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: add mock_response tests and fix pattern matching

Add TestMCP_MockResponse and TestMCP_MockViaScript e2e tests.
Mock patterns must use proper glob format (scheme://host/path).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor: simplify MCP server code

- Extract clampLimit, parseFilter, metasToSummaries helpers (tools_read)
- Extract writeScriptFile helper, remove dead enabled logic (tools_script)
- Delegate createMockScript to writeScriptFile (tools_sim)
- Remove dead freePortMCP duplicate (mcp_harness)
- Rename buildHAR param to avoid shadowing store package
- Pre-allocate harHeaders slice

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: add bearer auth, opaque script IDs, addr-based config

- Add bearer token authentication middleware (auto-generated 32-byte
  hex token stored in data dir, optional)
- Replace file_path exposure with opaque script_id (random 16-hex-char
  IDs backfilled into YAML headers on first load)
- Switch --mcp-port to --mcp-addr for full listen address control
- Replace dump_path (user-controlled dir) with dump flag (uses os.TempDir)
- Add auth e2e tests (rejected/wrong-token/valid/no-auth)
- Add get_script not-found test

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: resolve gosec findings and lint issues in MCP server

- Add ReadHeaderTimeout to http.Server (G112)
- Handle f.Close() errors, add #nosec for os.CreateTemp paths (G104/G703)
- Add #nosec annotations for by-design TLS skip and SSRF (G402/G704)
- Fix goimports formatting

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: update changelog for MCP server branch

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

v0.1.8

Toggle v0.1.8's commit message
feat: add process identification for proxied requests (#19)

* docs: add process identification design plan

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: resolve open questions in process identification design

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: add process identification for proxied requests

Resolve which OS process made each proxied HTTP request using
gopsutil. Display process name in list view, support process-based
tree grouping (t cycles flat→host→process→flat), and show PID +
cmdline in detail view.

New packages: internal/procinfo (async resolver with PID cache,
semaphore-bounded concurrency, graceful degradation).

Store changes: FlowMeta.Process field, FlowData.ProcessPID/Cmdline,
RingBuffer.UpdateData for partial data merges.

TUI changes: process column in flat/tree/focus views, process-tree
grouping mode, detail card process section, updated help overlay.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: update changelog with process identification entry

Promote add-logo-assets to v0.1.7, add feat/process-identification
section for PR #19.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: add ProcessPID to FlowMeta, improve test coverage and column layout

Store ProcessPID in FlowMeta alongside the process name so the TUI can
display name(pid) labels. Reorder list columns to place PROCESS after
TYPE. Expand test coverage for procinfo (64.9% to 94.7%), interceptor
response headers, detail rendering, list column formatting, and tree
grouping by process.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

v0.1.7

Toggle v0.1.7's commit message
fix: use homebrew_casks with correct format for goreleaser v2.10+ (#17)

brews is deprecated in goreleaser v2.10+ in favor of homebrew_casks.
Remove directory field (defaults to Casks), add xattr quarantine
removal hook for unsigned macOS binaries.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>