sentry-tui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Billy Vong
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,116 @@
1
+ # sentry-tui
2
+
3
+ sentry.io in your terminal — a TUI client built with [OpenTUI](https://opentui.com),
4
+ mirroring Sentry's real information architecture and screen layouts.
5
+
6
+ ## Status
7
+
8
+ Hackweek 2026. The Issues path is built end to end; other nav sections are
9
+ honest stubs.
10
+
11
+ - [x] Phase 1 — app shell, focus ring, theme, command catalog
12
+ - [x] Phase 2 — API client, auth, domain types
13
+ - [x] Phase 2.5 — loading states
14
+ - [x] Phase 3 — issue stream
15
+ - [x] Phase 4 — issue detail + stack traces
16
+ - [x] Phase 5 — triage actions
17
+ - [x] Phase 6 — OAuth device-flow login
18
+
19
+ Next: command palette, org/project switcher, and the remaining nav sections.
20
+
21
+ ## Install
22
+
23
+ Every route below installs the same self-contained binary — no Bun, Node, or
24
+ npm needed at runtime.
25
+
26
+ ```bash
27
+ # Homebrew
28
+ brew install billyvg/tap/sentry-tui
29
+
30
+ # Shell installer → ~/.local/bin (set SENTRY_TUI_INSTALL_DIR to change that)
31
+ curl -fsSL https://raw.githubusercontent.com/billyvg/sentry-tui/main/install.sh | bash
32
+
33
+ # npm — one-off, or installed globally
34
+ npx sentry-tui
35
+ npm install -g sentry-tui
36
+ ```
37
+
38
+ `sentry-tui` and `@billyvg/sentry-tui` are the same package; the platform
39
+ binary arrives as an optional dependency, so you download one binary rather
40
+ than four. Binaries are also attached to every
41
+ [release](https://github.com/billyvg/sentry-tui/releases).
42
+
43
+ Supported: macOS and Linux, on arm64 and x64. Windows and musl-based Linux
44
+ (Alpine) aren't built — run from source there.
45
+
46
+ ### From source
47
+
48
+ Running from source needs **Bun ≥ 1.3.0**. OpenTUI reaches its native renderer
49
+ through `bun:ffi`; the Node backend wants `node:ffi`, which is Node 26.1+ behind
50
+ `--experimental-ffi`, so Bun is the supported path.
51
+
52
+ ```bash
53
+ git clone https://github.com/billyvg/sentry-tui
54
+ cd sentry-tui
55
+ bun install
56
+ bun start
57
+ ```
58
+
59
+ ## Authentication
60
+
61
+ ```bash
62
+ sentry-tui login # OAuth device flow — opens your browser
63
+ sentry-tui status # who you're signed in as, and for how long
64
+ sentry-tui logout # forget the stored credentials
65
+ ```
66
+
67
+ `login` prints a short code, opens <https://sentry.io/oauth/device/>, and waits
68
+ for you to approve it (RFC 8628). Starting the TUI with no credentials offers
69
+ the same flow. Access tokens are renewed automatically; Sentry rotates the
70
+ refresh token on each renewal, so the new pair is written back immediately.
71
+
72
+ Use `--no-browser` to print the URL instead of opening one, and `SENTRY_URL` +
73
+ `SENTRY_CLIENT_ID` to log in to a self-hosted install (needs Sentry ≥ 26.1.0 and
74
+ a **public** OAuth application from Settings → Account → API → Applications).
75
+
76
+ ### Personal token instead
77
+
78
+ Create one at <https://sentry.io/settings/account/api/auth-tokens/> with these
79
+ scopes — the same set `login` requests:
80
+
81
+ ```
82
+ org:read project:read event:read event:write member:read team:read
83
+ ```
84
+
85
+ ```bash
86
+ export SENTRY_AUTH_TOKEN=sntryu_…
87
+ ```
88
+
89
+ Resolution order is `SENTRY_AUTH_TOKEN` → `SENTRY_TOKEN` → the credential file.
90
+ Environment tokens are used exactly as given and never refreshed.
91
+
92
+ ### Files
93
+
94
+ | Path | Holds |
95
+ | --------------------------------------- | ----------------------------------------------- |
96
+ | `~/.config/sentry-tui/config.json` | preferences (default org), rewritten by the app |
97
+ | `~/.config/sentry-tui/credentials.json` | tokens, written `0600` |
98
+
99
+ Secrets live apart from the file the app has to keep writable. A token left in
100
+ `config.json` by an older build is moved across on the next run.
101
+
102
+ ## Development
103
+
104
+ ```bash
105
+ bun run dev # watch mode
106
+ bun test # test suite
107
+ bun run typecheck # tsc --noEmit
108
+ ```
109
+
110
+ Set `SENTRY_TUI_LATENCY=3000` to inject artificial API latency and exercise
111
+ loading states.
112
+
113
+ ## Keys
114
+
115
+ `?` for the full list. The basics: `j`/`k` move, `tab` switches pane,
116
+ `enter` opens, `r` resolves, `a` archives, `q` quits.
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ // Bin entry for the unscoped `sentry-tui` alias, which exists so that
3
+ // `npx sentry-tui` works. All it does is hand off to the real package.
4
+ import { main } from "@billyvg/sentry-tui/launch";
5
+
6
+ main();
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "description": "sentry.io in your terminal — a TUI client for Sentry",
3
+ "license": "MIT",
4
+ "author": "Billy Vong",
5
+ "homepage": "https://github.com/billyvg/sentry-tui#readme",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/billyvg/sentry-tui.git"
9
+ },
10
+ "bugs": {
11
+ "url": "https://github.com/billyvg/sentry-tui/issues"
12
+ },
13
+ "name": "sentry-tui",
14
+ "version": "0.1.0",
15
+ "keywords": [
16
+ "sentry",
17
+ "tui",
18
+ "terminal",
19
+ "cli",
20
+ "errors",
21
+ "observability",
22
+ "opentui"
23
+ ],
24
+ "type": "module",
25
+ "bin": {
26
+ "sentry-tui": "bin/sentry-tui.mjs"
27
+ },
28
+ "files": [
29
+ "bin",
30
+ "README.md",
31
+ "LICENSE"
32
+ ],
33
+ "engines": {
34
+ "node": ">=18.0.0"
35
+ },
36
+ "dependencies": {
37
+ "@billyvg/sentry-tui": "0.1.0"
38
+ }
39
+ }