mirror of
https://github.com/anotherhadi/spilltea.git
synced 2026-05-20 09:42:34 +02:00
Compare commits
3 Commits
v0.0.3
..
6aa377acd8
| Author | SHA1 | Date | |
|---|---|---|---|
| 6aa377acd8 | |||
| 2f4765bf37 | |||
| fac335a16e |
Binary file not shown.
|
After Width: | Height: | Size: 906 KiB |
@@ -0,0 +1,41 @@
|
||||
Output ./.github/assets/demo.gif
|
||||
Require spilltea
|
||||
|
||||
Set Shell "zsh"
|
||||
Set FontSize 32
|
||||
Set Width 1600
|
||||
Set Height 1900
|
||||
|
||||
Type "spilltea"
|
||||
Sleep 800ms
|
||||
Enter
|
||||
Sleep 3s
|
||||
|
||||
Down@800ms 2
|
||||
Up@800ms 1
|
||||
Enter@800ms 1
|
||||
|
||||
Wait+Screen /hadi.icu/
|
||||
Sleep 3s
|
||||
|
||||
Ctrl+Y
|
||||
Sleep 3s
|
||||
|
||||
Down@1.9 4
|
||||
Escape@1.3 1
|
||||
|
||||
Ctrl+R
|
||||
Sleep 3s
|
||||
Type "e"
|
||||
Sleep 1s
|
||||
Escape
|
||||
Sleep 1s
|
||||
Type "s"
|
||||
Sleep 6s
|
||||
|
||||
Type "1"
|
||||
Sleep 2s
|
||||
Type "f"
|
||||
Sleep 2s
|
||||
Type "2"
|
||||
Sleep 2s
|
||||
|
||||
@@ -20,6 +20,8 @@ Spilltea is a **terminal-native HTTP(S) interception proxy**. It sits between yo
|
||||
|
||||
It is intentionally minimal. No Electron, no browser, no bloat. Just a fast, keyboard-driven tool that gets out of your way.
|
||||
|
||||
<img alt="demo" src="./.github/assets/demo.gif" width="700" />
|
||||
|
||||
## Features
|
||||
|
||||
- **Intercept**: Pause requests and responses in-flight. Inspect and modify them (even with your favorite editor) before forwarding.
|
||||
@@ -31,6 +33,45 @@ It is intentionally minimal. No Electron, no browser, no bloat. Just a fast, key
|
||||
- **cURL / HTTPie**: Copy any request as a curl or httpie command to your clipboard.
|
||||
- **Markdown Export**: Export any request and its response as a clean Markdown snippet, ready to drop into a report.
|
||||
|
||||
## Installation
|
||||
|
||||
<details>
|
||||
<summary>Go install</summary>
|
||||
|
||||
```sh
|
||||
go install github.com/anotherhadi/spilltea/cmd/spilltea@latest
|
||||
```
|
||||
|
||||
Requires Go 1.22+. The binary will be placed in `$GOPATH/bin` (or `~/go/bin`).
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Nix (temporary run, no install)</summary>
|
||||
|
||||
```sh
|
||||
nix run github:anotherhadi/spilltea
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>NixOS (flake)</summary>
|
||||
|
||||
Add spilltea to your flake inputs:
|
||||
|
||||
```nix
|
||||
inputs.spilltea.url = "github:anotherhadi/spilltea";
|
||||
```
|
||||
|
||||
Then add the package to your system or home-manager packages:
|
||||
|
||||
```nix
|
||||
environment.systemPackages = [ inputs.spilltea.packages.${pkgs.system}.default ];
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## Project Management
|
||||
|
||||
Spilltea organizes work into **projects**. Each project maps to a SQLite database file that stores all intercepted traffic for that session & a log files.
|
||||
|
||||
@@ -15,7 +15,7 @@ import (
|
||||
|
||||
func (m Model) View() tea.View {
|
||||
if m.width == 0 || m.manager == nil {
|
||||
return tea.NewView(style.S.Faint.Render("\nno plugins loaded"))
|
||||
return tea.NewView(lipgloss.Place(m.width, m.height, lipgloss.Center, lipgloss.Center, style.S.Faint.Render(" (._.)~*.'\n no plugins loaded")))
|
||||
}
|
||||
|
||||
listH, detailH := style.SplitH(m.height, m.renderStatusBar(), 0.4)
|
||||
|
||||
@@ -12,6 +12,7 @@ import (
|
||||
|
||||
"charm.land/bubbles/v2/key"
|
||||
tea "charm.land/bubbletea/v2"
|
||||
"charm.land/lipgloss/v2"
|
||||
"github.com/anotherhadi/spilltea/internal/db"
|
||||
"github.com/anotherhadi/spilltea/internal/keys"
|
||||
"github.com/anotherhadi/spilltea/internal/style"
|
||||
@@ -259,11 +260,11 @@ func (m *Model) refreshBody() {
|
||||
m.requestViewport.SetXOffset(0)
|
||||
|
||||
if e.Sending {
|
||||
m.responseViewport.SetContent(style.HighlightHTTP("Sending..."))
|
||||
m.responseViewport.SetContent(lipgloss.Place(m.responseViewport.Width(), m.responseViewport.Height(), lipgloss.Center, lipgloss.Center, style.S.Faint.Render(" (ノ◕ヮ◕)ノ*:・゚\n sending...")))
|
||||
} else if e.ResponseRaw != "" {
|
||||
m.responseViewport.SetContent(style.HighlightHTTP(e.ResponseRaw))
|
||||
} else {
|
||||
m.responseViewport.SetContent("")
|
||||
m.responseViewport.SetContent(lipgloss.Place(m.responseViewport.Width(), m.responseViewport.Height(), lipgloss.Center, lipgloss.Center, style.S.Faint.Render(" ( •_•)>⌐■\npress send to fire")))
|
||||
}
|
||||
m.responseViewport.SetYOffset(0)
|
||||
m.responseViewport.SetXOffset(0)
|
||||
|
||||
Reference in New Issue
Block a user