Releases: glitchedgitz/grroxy
Releases · glitchedgitz/grroxy
v2026.4.3
v2026.4.2
fix: proxy tab reactivity issues
v2026.4.1 - Grroxy Actions
Added Grroxy Action - similar to github acitons.
Added
- Template Actions Engine — Hook-based automation on proxy traffic. Templates run on
before_request,request,responsehooks. Each template has tasks with conditions (dadql) and actions. - Actions:
set,delete,replace(string/regex),create_label,send_request _templatescollection — DB-backed template storage on launcher with migration + default seed- Default templates —
extensions,mime,paths,proxy-configsembedded via//go:embed, seeded on first migration - 3-level enable/disable — Global (
_configs), per-project (_projects.data), per-proxy (_proxies.data.run_templates). New projects and proxies default to enabled. - Live reload — Launcher watches
_templatesfor changes, notifies runninggrroxy-appinstances viaPOST /api/templates/reload /api/templates/check— Validate template YAML (hooks, actions, required keys) before saving/api/templates/info— Returns all available hooks, actions, keys, descriptions, and full syntax reference/api/project/delete— Delete a project, its DB record, and project folder/api/request/modify— Apply template actions to raw HTTP request strings (set, delete, replace)- MCP template tools —
templateList,templateRead,templateGetInfo,templateCreate,templateUpdatefor AI agents (Claude Code, MCP clients) - Frontend AI tools —
templateGetInfo,templateList,templateRead,templateCreate,templateUpdate,templateDelete,templateCheckin AI SDK - Template syntax reference — Full reference in
grx/templates/reference.go, served via/api/templates/infofor AI agents - Settings UI — Global and per-project template toggles in settings, per-proxy toggle in proxy toolbar
- Frontend — DB-backed template list with PocketBase subscription, editor with task disable toggles
- Proxy auto-color — New proxies get a color from the palette automatically. Migration assigns colors to existing proxies with empty color.
- Frontend:
send_requestUI — Template editor now supportssend_requestaction with method, headers, and body fields - Frontend:
deleteaction UI — Template editor now supportsdeleteaction (reusessetUI) - Frontend:
ColorDialogcomponent — Shared color picker used in both proxy manager and template label editor - Frontend: Editable author — Template author is now inline-editable (same as title/description)
- Frontend: Sidebar template status — Disabled templates show dimmed icon in sidebar
- E2E test script —
tests/e2e_test.sh— full integration test: project creation, template CRUD, proxy traffic, label verification, send_request, toggles, restart persistence (20 tests) - Cleanup script —
tests/cleanup.sh— removes test templates and projects
Fixed
- Header matching in
modify.go—RequestUpdateKeyandRequestDeleteKeynow usestrings.TrimRight(h[0], ": ")to handle both"Header:"and"Header: "formats from rawhttp parser - PocketBase JSON field parsing in launcher hooks —
forEachRunningProjectnow handlestypes.JsonRaw,string, andmap[string]anyfor thedatafield instead of silently skipping all projects - Project data preserved on restart —
ResetProjectStates,setProjectStateClose, andOpenProjectnow merge into existingdatafield instead of overwriting (preservestemplatesEnabled) - New projects default to
templatesEnabled: true—CreateNewProjectsets it in the initial data - New proxies default to
run_templates: true—startProxyLogicsets it in proxy data and on the live instance send_requestaction — Fixed: stripshttp:///https://from host, fetches raw request from_reqDB record, normalizes\r\nline endings, fixes Host header for direct replay, setsUrlfield so host shows in DB
Known Issues
- Race condition on
Templates.Templatesmap (concurrent read/write from proxy goroutines and reload handlers) — needssync.RWMutex TemplatesEnabledandRunTemplatesbools needatomic.Boolfor concurrent accessContent-Lengthheader not updated when body changes viasetaction
v2026.3.9
- Using single frontend for electron and binary.
- Apple Developer Signed Binaries
- ZoomSlider, App loading improvements and other misc fixes
[v2026.3.8] Proxy & Intercepting MCP Tools and UX Updates 🚀
Thanks to @Behi_Sec and @Sharo_k_h for suggesting UX improvements and reporting bug.
Includes v0.28.0 and v0.27.1
v0.28.0 - Frontend Updates
- Frontend: Convert to POST / GET — Convert requests between POST and GET, moving params between body and query string. @Behi_Sec
- Frontend: Duplicate tab — Duplicate the active data tab including all persisted filters. @Behi_Sec
- Frontend: Decoder panel stay minimized — Decoder panel stays minimized after user manually minimize it. @Behi_Sec
- Frontend: Toggle sidebar — Show/hide the sidebar. @Behi_Sec
- Frontend: Custom tab names — Ability to name tabs. @Behi_Sec
- Frontend: Open in new tab — Open a request in a new tab from proxy or data tabs. @Behi_Sec
- Frontend: Auto-remove headers — Filter to auto-hide unnecessary headers. @Behi_Sec
- Frontend: Search bar — Unified search icon for general search in Data tab. @Behi_Sec
- Frontend: New request popup — A button to create a new request.
- Frontend: Send request shortcut — Shortcut to send the request
- Intercepted landing page — Browser now opens a custom
intercepted.htmlpage (served viafile://) instead ofgrroxy.com. So we don't capture unwanted traffic. /api/request/parseendpoint — Parse raw HTTP request/response into structured breakdown (method, path, query, headers, body). Uses existingrawhttp.ParseRequestandrawhttp.ParseResponse.- Frontend: Filter AddNew and Edit Popup — Add, edit filters from UI.
- Frontend: Proxy page — Improved UI
- Frontend: Cmd+Enter to send — Keyboard shortcut to send requests.
Fixed
- Proxy Timeout — There waas a 60sec timeout for intercepting the request. @Sharo_k_h
- Proxy Pastebin — Proxy pastebin was not working. @Sharo_k_h
- Frontend: Repeater sort — Fixed repeater index sorting bug. @Sharo_k_h
- Frontend: Proxy pastebin — Fixed proxy pastebin not working. @Sharo_k_h
- Frontend: Long filter view — Fixed broken view when filter is long. @Behi_Sec
- Frontend: Title bar tooltips — Tooltips in title bar were positioned at top-left corner.
- Intercept counter not updating on toggle off — Per-proxy intercept counter now resets to 0 immediately when intercept is disabled.
[2026-MAR] - v0.27.1 - MCP Fixes, Proxy Endpoints & HTTP/2 Parsing
Added
- Proxy HTTP endpoints —
/api/proxy/typetext,/api/proxy/waitforselector,/api/proxy/evaluatefor browser automation via API. - MCP tools —
listHosts,getHostInfo,getNoteForHost,setNoteForHost,modifyHostLabels,modifyHostNotes,interceptToggle,interceptPrintRowsInDetails,interceptGetRawRequestAndResponse,interceptAction,proxyList,proxyStart,proxyStop,proxyScreenshot,proxyClick,proxyElements,proxyType,proxyEval,proxyWaitForSelector,proxyListTabs,proxyOpenTab,proxyNavigateTab,proxyActivateTab,proxyCloseTab,proxyReloadTab,proxyGoBack,proxyGoForward. - Frontend: AI tools —
proxyTypeText,proxyWaitForSelector,proxyEvaluatetool definitions and handlers in AI tools panel. - Frontend: backend API methods —
proxyTypeText,proxyWaitForSelector,proxyEvaluateinbackend_app.ts. - Frontend: MCP tools sorted alphabetically in HudTerminal.
- Frontend: CWD File Explorer — VSCode-style file/folder explorer for browsing, opening, and previewing files from the current working directory.
- File watcher —
fsnotify-based file watcher for CWD explorer live updates. - Chrome
GetElementsimproved — Added input/textarea/select to interactive element selectors; unique CSS selector paths usingnth-of-type.
Changed
proxyStartMCP tool — Removedbrowserandhttpoptions; hardcoded to Chrome with auto-assigned HTTP port.
Fixed
- MCP
interceptTogglenot intercepting —dao.SaveRecord()doesn't triggerOnRecordAfterUpdateRequesthooks; now setsinst.Proxy.Interceptdirectly in memory. - Edited request parsing:
HTTP/2rejected —http.ReadRequestrequiresmajor.minorformat; normalizesHTTP/2→HTTP/2.0. - Edited request parsing: unexpected EOF — Detects linebreak style (
\r\nvs\n) and ensures request ends with double linebreak.
[IMP] Mcp Support, Terminal, Claude Code and Dev UI [v2026.3.7] 🚀
⚠️ Important Fix - Action Required
[BUG][FIXED] Electron left orphan processes on quit — Closing the app now kills the entire process group (grroxy, grroxy-app, grroxy-tool) instead of only the parent. Uses detached: true spawn + process.kill(-pid) for group termination.
Required Actions: Quit grroxy and run below command to kill the orphan processes
# mac/linux
pkill -f 'grroxy-(app|tool)'
# windows
taskkill /F /IM grroxy-app.exe & taskkill /F /IM grroxy-tool.exeAdded
MCP Server
- Built-in MCP server using
mcp-gowith SSE transport for AI tool integration - Tools:
version,getRequestResponseFromID,hostPrintSitemap,hostPrintRowsInDetails,sendRequest - Endpoints:
/mcp/start,/mcp/stop,/mcp/health,/mcp/listtools,/mcp/sse,/mcp/message,/mcp/setup/claude - Claude Code integration —
/mcp/setup/claudewrites.mcp.json+CLAUDE.mdautomatically
Terminal
- Xterm scrollback replay — reconnecting clients receive up to 256KB of buffered output on reload
- Multi-client sessions — up to 10 concurrent WebSocket viewers per terminal session
- Persistent PTY reader — single goroutine per session broadcasts to all clients
Other
- Dev UI — SvelteKit app (
grx/dev) for interactive API testing #36 - Updated Electron build script (
cmd/electron/build.sh,package.json)
Fixed
- Proxy timeouts → 10 min — prevents connection failures when requests are held for manual review
- Stale WebSocket cleanup — all clients closed when a terminal session ends, no more hanging goroutines
- Scrollback buffer compaction — in-place
copy()prevents unbounded array growth - Client cap per session — max 10 concurrent WebSocket connections to prevent resource exhaustion
v2026.3.6
fixed fuzzer and embeded cook in the electron binary
v2026.3.5
Desktop App
Fix error
go install github.com/glitchedgitz/grroxy/cmd/grroxy@latest
go: github.com/glitchedgitz/grroxy/cmd/grroxy@latest (in github.com/glitchedgitz/grroxy@v0.26.1):
The go.mod file for the module providing named packages contains one or
more replace directives. It must not contain directives that would cause
it to be interpreted differently than if it were the main module.
