Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@ frontend/dist/*
*.swp
.idea/
.vscode/
.nexum-data/
4 changes: 4 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ issues:
# Deferred Close() failures are not actionable here.
- linters: [errcheck]
source: "defer .*\\.Close\\(\\)"
# grpcurl's reflection API returns jhump/protoreflect/desc types; we can't
# migrate off the deprecated package without leaving grpcurl.
- linters: [staticcheck]
text: "SA1019: .*protoreflect/desc"
# The nested scaffold under frontend/hypr is a separate module artifact.
exclude-dirs:
- frontend
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,17 @@ Build, send, and inspect HTTP requests from a native desktop app powered by a Go

<img src="examples/hypr.png" alt="Hypr screenshot" width="820">

<br>

<img src="docs/images/ws.png" alt="Hypr WebSocket panel" width="820">

</div>

## Features

- ⚡ **Native & fast** — a single self-contained binary; the HTTP engine runs in Go, not a bundled browser runtime.
- 🗂️ **Tabbed requests** — work on multiple requests side by side.
- 🔌 **WebSocket & gRPC** — open live WebSocket streams or invoke gRPC methods (via server reflection); connections and output persist alongside your saved requests.
- 🧩 **Header editor** — manage request headers as simple key/value pairs.
- 📥 **Import from cURL** — paste a `curl` command and it's parsed, populated, and run instantly.
- 🎨 **Syntax-highlighted responses** — pretty-printed JSON bodies and response headers.
Expand Down
12 changes: 9 additions & 3 deletions app.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,19 @@ import (
"io"
"net/http"
"strings"
"sync"
"time"

"github.com/gorilla/websocket"
)

// App struct
type App struct {
ctx context.Context
client *http.Client
store *Store
ctx context.Context
client *http.Client
store *Store
wsMu sync.Mutex
wsConns map[string]*websocket.Conn
}

// NewApp creates a new App application struct
Expand All @@ -35,6 +40,7 @@ func (a *App) startup(ctx context.Context) {
Transport: tr,
}
a.ctx = ctx
a.wsConns = make(map[string]*websocket.Conn)

var err error
a.store, err = newStore()
Expand Down
Binary file added docs/images/ws.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading