{"_id":"@asterxsk/croctui","_rev":"3-4f77c3df437d22aad6045c17d29ade23","name":"@asterxsk/croctui","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@asterxsk/croctui","version":"0.1.0","keywords":["croc","tui","bubble-tea","file-transfer","p2p"],"author":{"name":"asterxsk"},"license":"MIT","_id":"@asterxsk/croctui@0.1.0","maintainers":[{"name":"asterxsk","email":"flipgamer2605@gmail.com"}],"homepage":"https://github.com/asterxsk/croctui#readme","bugs":{"url":"https://github.com/asterxsk/croctui/issues"},"bin":{"crocgui":"bin/croctui.js","croctui":"bin/croctui.js"},"dist":{"shasum":"7fb52c69e7a6b06a7158afca8519113faa9f7c45","tarball":"https://registry.npmjs.org/@asterxsk/croctui/-/croctui-0.1.0.tgz","fileCount":4,"integrity":"sha512-QEbvNi3LqHPqz/fe+giECa+Em7VlAGkOx+RLO9+irhM8gXSmyyXSFlbqpuE53VlJh7JRN0uA5W7L+o+kDBOepg==","signatures":[{"sig":"MEYCIQCS/PL7vS+TkDBJd1DIACQjlx9LAs9bS0C1sap7zoacFwIhAJru5op8cLRYBYLCwrMm/kvzBHouBYxCkQXs5HcGF256","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8216},"engines":{"node":">=18"},"gitHead":"ee7f131e1225cdf5c28af006429557ef75f2d68c","scripts":{"build":"go build -o bin/croctui-windows-amd64.exe .","postinstall":"node bin/install.js"},"_npmUser":{"name":"asterxsk","email":"flipgamer2605@gmail.com"},"repository":{"url":"git+https://github.com/asterxsk/croctui.git","type":"git"},"_npmVersion":"11.17.0","description":"Croc TUI — peer-to-peer file transfer, keyboard-driven (Go + Bubble Tea)","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/croctui_0.1.0_1786629756918_0.3718050984382042","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.1":{"name":"@asterxsk/croctui","version":"0.1.1","keywords":["croc","tui","bubble-tea","file-transfer","p2p"],"author":{"name":"asterxsk"},"license":"MIT","_id":"@asterxsk/croctui@0.1.1","maintainers":[{"name":"asterxsk","email":"flipgamer2605@gmail.com"}],"homepage":"https://github.com/asterxsk/croctui#readme","bugs":{"url":"https://github.com/asterxsk/croctui/issues"},"bin":{"crocgui":"bin/croctui.js","croctui":"bin/croctui.js"},"dist":{"shasum":"f1533620a77e120cb50b24ddb09043a45c50195f","tarball":"https://registry.npmjs.org/@asterxsk/croctui/-/croctui-0.1.1.tgz","fileCount":4,"integrity":"sha512-vJnXFULivt7qk1W3Kt19mK126Byr7rbGm6YRQxOF2FMjScQJRxmTw/7d0LnHq0xgmVGYgFnDAzEQjFT6Q3mHvw==","signatures":[{"sig":"MEUCIQDPG/z+dOc4gGSvjxUhLNGXVBn9gdTA2v3MMZl1BdQBqQIgGG/4xbb5yXJXsApOvGMd5sbRiM10L9WyVRsqt/x8XFo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13675},"engines":{"node":">=18"},"gitHead":"1972e50f5569c97810e13f2c6f5cddc68324a21e","scripts":{"build":"go build -o bin/croctui-windows-amd64.exe .","postinstall":"node bin/install.js"},"_npmUser":{"name":"asterxsk","email":"flipgamer2605@gmail.com"},"repository":{"url":"git+https://github.com/asterxsk/croctui.git","type":"git"},"_npmVersion":"11.17.0","description":"Croc TUI — peer-to-peer file transfer, keyboard-driven (Go + Bubble Tea)","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/croctui_0.1.1_1786632695494_0.12990776550048166","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."}},"time":{"created":"2026-08-13T14:02:36.615Z","modified":"2026-09-03T11:40:40.381Z","0.1.0":"2026-08-13T14:02:37.053Z","0.1.1":"2026-08-13T14:51:35.718Z"},"bugs":{"url":"https://github.com/asterxsk/croctui/issues"},"author":{"name":"asterxsk"},"license":"MIT","homepage":"https://github.com/asterxsk/croctui#readme","keywords":["croc","tui","bubble-tea","file-transfer","p2p"],"repository":{"url":"git+https://github.com/asterxsk/croctui.git","type":"git"},"description":"Croc TUI — peer-to-peer file transfer, keyboard-driven (Go + Bubble Tea)","maintainers":[{"name":"asterxsk","email":"flipgamer2605@gmail.com"}],"readme":"# croctui 🐊\n\n[![npm version](https://img.shields.io/npm/v/@asterxsk/croctui?color=cb3837&label=npm)](https://www.npmjs.com/package/@asterxsk/croctui)\n[![npm downloads](https://img.shields.io/npm/dm/@asterxsk/croctui)](https://www.npmjs.com/package/@asterxsk/croctui)\n[![Go](https://img.shields.io/badge/go-1.26-00ADD8?logo=go)](https://go.dev)\n[![Bubble Tea](https://img.shields.io/badge/Bubble%20Tea-v1.3-ff6b6b)](https://github.com/charmbracelet/bubbletea)\n[![platform](https://img.shields.io/badge/platform-windows%20%E2%80%A2%20linux%20%E2%80%A2%20macOS-lightgrey)](https://github.com/asterxsk/croctui/releases)\n[![license](https://img.shields.io/badge/license-MIT-blue)](LICENSE)\n\n**Keyboard-driven terminal GUI for [`croc`](https://github.com/schollz/croc) — send anything, anywhere, peer-to-peer.**\n\n```sh\nnpx @asterxsk/croctui\n```\n\nNo Go required. `2.8 kB` npm package — prebuilt binary fetched on install, then runs offline.\n\n```\n ██████╗██████╗  ██████╗  ██████╗\n██╔════╝██╔══██╗██╔═══██╗██╔════╝\n██║     ██████╔╝██║   ██║██║\n██║     ██╔══██╗██║   ██║██║\n╚██████╗██║  ██║╚██████╔╝╚██████╗\n ╚═════╝╚═╝  ╚═╝ ╚═════╝  ╚═════╝\n      securely transfer files peer-to-peer\n```\n\n---\n\n## Features\n\n- **Send** — native file picker (multi-select) → share code (auto-copied by `croc`) → live progress\n- **Receive** — paste code → files land in `Downloads` → live progress\n- **History** — in-session record of every transfer\n- **Auto-install** — offers `winget install schollz.croc` if `croc` is missing\n- **Keyboard-only** — no mouse capture, no click targets. Arrows / `hjkl` / `tab` / `enter` / `esc`.\n- **Full-window TUI** — single accent (`#39` blue), square borders, framed layout that fills the terminal\n- **Zero bloat** — shells out to the real `croc` CLI. No embedded crypto, no relay, always behavior-compatible.\n\n## Quick start\n\n### npx (recommended — no Go needed)\n\n```bash\nnpx @asterxsk/croctui          # latest\nnpx @asterxsk/croctui@0.1.0     # pinned\n\n# also aliased as crocgui\nnpx @asterxsk/croctui --help\n```\n\nThe npm package is `2.8 kB` (unpacked `8.2 kB`). On first run it downloads a prebuilt binary (`croctui-<platform>-<arch>[.exe]`, ~5 MB, stripped) from [GitHub Releases](https://github.com/asterxsk/croctui/releases) and caches it in `bin/`. Subsequent runs are offline. If no release is available and Go is installed, it builds from source.\n\n### Global install\n\n```bash\nnpm i -g @asterxsk/croctui\ncroctui\n# or\ncrocgui\n```\n\n### From source (development)\n\n```bash\ngit clone https://github.com/asterxsk/croctui.git\ncd croctui\ngo run .\n# or\ngo build -o croctui.exe .\n./croctui.exe\ngo test ./...\n```\n\n## Usage\n\n```\nWelcome:  s Send  ·  r Receive  ·  t History  ·  arrows move  ·  enter confirm  ·  q quit\n\nSend:     enter Add files  ·  shift+a Add folder  ·  ↑/↓ move  ·  x delete  ·  space Send  ·  esc Back\n          → code boxed on screen: \"Code: 1234-5678-9012  (code copied to clipboard by croc)\"\nReceive:  type/paste code  ·  enter Start  ·  esc Back\nHistory:  ↑/↓ move  ·  esc Back\nInstall:  enter Install  ·  q Quit\n```\n\nAll transfers stream live — percent, rate, file name — parsed from `croc` stdout.\n\n## How it works\n\n```\nPick files → croc send <files> --yes → code printed → parser → TUI progress\nEnter code → croc --yes --rename <code> --out <Downloads> → parser → TUI progress\n```\n\n`croctui` **shells out** to the real `croc` binary. There is no embedded transfer logic — every flag and behavior is `croc`'s own. `--pass` is the relay password (default `pass123`), not the share code; `croc` generates and auto-copies the code.\n\nParser: `croc/parse.go` regex-parses `Code is:`, `Sending`/`Receiving`, `%` and `B/s` lines into typed `Event`s. Runner: `ui/runner.go` pipes `stdout+stderr` via `io.Pipe` without blocking the Bubble Tea loop.\n\n## Requirements\n\n| | Users (`npx`) | Developers |\n|---|---|---|\n| Node | 18+ | 18+ |\n| Go | not needed | 1.26+ |\n| `croc` | auto-installed via `winget` | `winget install schollz.croc` |\n| Terminal | Real TTY (Windows Terminal recommended) | same |\n| OS | Windows 11 primary · Linux / macOS work (dialog is Windows-only) | same |\n\nPrebuilt binaries: `windows-amd64`, `windows-arm64`, `linux-amd64`, `linux-arm64`, `darwin-amd64`, `darwin-arm64` — built with `-ldflags=\"-s -w\"` on every `v*` tag.\n\n## Tech stack\n\n- **Go 1.26** · **Bubble Tea v1.3** · **lipgloss v1.1** · **bubbles**\n- Single static binary, minimal deps, `go vet` / `go test` clean\n- Native Windows dialog via PowerShell / WinForms (`dialog/`), `winget` installer (`croc/install.go`)\n\n## Project structure\n\n```\ncroctui/\n├── main.go            # Detect croc, run tea.NewProgram(WithAltScreen)\n├── bin/\n│   ├── croctui.js     # npx entry — fetch-or-build, spawn binary\n│   └── install.js     # postinstall fetcher\n├── croc/              # CLI adapter: Detect, SendArgs/ReceiveArgs, ParseLine, Install\n├── dialog/            # Windows file/folder picker\n├── ui/                # Bubble Tea screens: welcome / send / receive / history / install\n├── docs/\n└── .github/workflows/release.yml  # v* → 6-platform build + Release\n```\n\n## Credits\n\nThe transfer engine is [**`croc`**](https://github.com/schollz/croc) by [**Zack Schollz (@schollz)**](https://github.com/schollz) — a peer-to-peer, end-to-end encrypted file transfer tool and the de facto standard for CLI file sharing. `croctui` is a thin, keyboard-driven interface over it; all crypto, relay, PAKE and transfer logic is `croc`'s.\n\nIf `croctui` helps you, please star [`schollz/croc`](https://github.com/schollz/croc).\n\nOther thanks: [Charm](https://charm.sh) for Bubble Tea, lipgloss and bubbles.\n\n## License\n\nMIT — see [LICENSE](LICENSE) (same as `croc` when applicable for vendored behavior).\n\n---\n\n<p align=\"center\">\n  <sub>Built by <a href=\"https://github.com/asterxsk\">@asterxsk</a> · Not affiliated with <a href=\"https://github.com/schollz\">schollz</a> · PRs welcome</sub>\n</p>\n","readmeFilename":"README.md"}