Skip to content

Commit 4ab3d5f

Browse files
committed
Merge remote-tracking branch 'origin/main' into feat/init-command
# Conflicts: # .github/workflows/ci.yml # bun.lock # src/commands/project/create.ts
2 parents 32cb8bd + 320fd9d commit 4ab3d5f

71 files changed

Lines changed: 6088 additions & 673 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,11 +170,14 @@ jobs:
170170
- name: Unit Tests
171171
run: bun run test:unit
172172
- name: Isolated Tests
173-
run: bun run test:isolated
174-
- name: Upload Coverage
173+
run: bun run test:isolated --coverage --coverage-reporter=lcov --coverage-dir=coverage-isolated
174+
- name: Merge Coverage Reports
175+
run: bun run script/merge-lcov.ts coverage/lcov.info coverage-isolated/lcov.info > coverage/merged.lcov
176+
- name: Coverage Report
175177
uses: getsentry/codecov-action@main
176178
with:
177179
token: ${{ secrets.GITHUB_TOKEN }}
180+
files: ./coverage/merged.lcov
178181

179182
build-binary:
180183
name: Build Binary (${{ matrix.target }})

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ dist-bin
1313

1414
# code coverage
1515
coverage
16+
coverage-isolated
1617
*.lcov
1718

1819
# test artifacts

AGENTS.md

Lines changed: 8 additions & 111 deletions
Large diffs are not rendered by default.

biome.jsonc

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,23 @@
77
"javascript": {
88
"globals": ["Bun"]
99
},
10+
"linter": {
11+
"rules": {
12+
"style": {
13+
"noRestrictedImports": {
14+
"level": "error",
15+
"options": {
16+
"paths": {
17+
"@stricli/core": {
18+
"importNames": ["buildCommand"],
19+
"message": "Import buildCommand from '../lib/command.js' instead. The wrapper injects telemetry, --log-level, and --verbose."
20+
}
21+
}
22+
}
23+
}
24+
}
25+
}
26+
},
1027
"overrides": [
1128
{
1229
"includes": ["test/**/*.ts"],
@@ -47,6 +64,17 @@
4764
}
4865
}
4966
}
67+
},
68+
{
69+
// command.ts is the canonical wrapper — it must import buildCommand from @stricli/core
70+
"includes": ["src/lib/command.ts"],
71+
"linter": {
72+
"rules": {
73+
"style": {
74+
"noRestrictedImports": "off"
75+
}
76+
}
77+
}
5078
}
5179
]
5280
}

bun.lock

Lines changed: 44 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/astro.config.mjs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,8 @@ export default defineConfig({
185185
items: [
186186
{ label: "Introduction", slug: "" },
187187
{ label: "Installation", slug: "getting-started" },
188+
{ label: "Self-Hosted", slug: "self-hosted" },
189+
{ label: "Configuration", slug: "configuration" },
188190
],
189191
},
190192
{

docs/src/components/FeatureTerminal.astro

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -106,33 +106,39 @@ const { title = "Terminal" } = Astro.props;
106106
height: 0.75rem;
107107
}
108108

109-
/* Table styles */
110-
.feature-terminal-body :global(.table-header) {
111-
color: rgba(255, 255, 255, 0.4);
109+
/* Table box styles */
110+
.feature-terminal-body :global(.table-box) {
111+
font-family: 'JetBrains Mono', ui-monospace, monospace;
112112
font-size: 0.7rem;
113-
text-transform: uppercase;
114-
letter-spacing: 0.03em;
115-
padding-bottom: 0.25rem;
116-
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
113+
line-height: 1.5;
114+
margin: 0;
115+
padding: 0;
116+
background: transparent;
117+
border: none;
118+
color: rgba(255, 255, 255, 0.85);
119+
overflow-x: auto;
117120
}
118121

119-
.feature-terminal-body :global(.table-row) {
120-
font-size: 0.78rem;
122+
.feature-terminal-body :global(.table-box .border) {
123+
color: rgba(255, 255, 255, 0.15);
124+
}
125+
126+
.feature-terminal-body :global(.table-box .header-text) {
127+
color: rgba(255, 255, 255, 0.4);
128+
font-size: 0.7rem;
121129
}
122130

123-
.feature-terminal-body :global(.col-id) {
124-
min-width: 70px;
131+
.feature-terminal-body :global(.red-text) {
132+
color: #ef4444;
125133
}
126134

127-
.feature-terminal-body :global(.col-title) {
128-
flex: 1;
129-
color: rgba(255, 255, 255, 0.7);
135+
.feature-terminal-body :global(.yellow-text) {
136+
color: #eab308;
130137
}
131138

132-
.feature-terminal-body :global(.col-count) {
133-
min-width: 45px;
134-
text-align: right;
135-
color: rgba(255, 255, 255, 0.5);
139+
.feature-terminal-body :global(.alias-hl) {
140+
font-weight: 700;
141+
text-decoration: underline;
136142
}
137143

138144
@media (max-width: 640px) {

docs/src/components/Terminal.astro

Lines changed: 27 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -50,34 +50,13 @@ if (background) {
5050
</div>
5151
<div class="line output dimmed small">Issues from 3 projects:</div>
5252
<div class="line spacer-sm"></div>
53-
<div class="line output table-header">
54-
<span class="col-shortid">SHORT ID</span>
55-
<span class="col-alias">ALIAS</span>
56-
<span class="col-title">TITLE</span>
57-
<span class="col-count">COUNT</span>
58-
<span class="col-fix">FIX</span>
59-
</div>
60-
<div class="line output table-row">
61-
<span class="col-shortid dimmed">FRONTEND-79</span>
62-
<span class="col-alias accent">f-79</span>
63-
<span class="col-title">TypeError: Cannot read property 'map'...</span>
64-
<span class="col-count">2.4k</span>
65-
<span class="col-fix green-text">92%</span>
66-
</div>
67-
<div class="line output table-row">
68-
<span class="col-shortid dimmed">API-2F</span>
69-
<span class="col-alias accent">a-2f</span>
70-
<span class="col-title">ReferenceError: user is not defined</span>
71-
<span class="col-count">891</span>
72-
<span class="col-fix yellow-text">67%</span>
73-
</div>
74-
<div class="line output table-row">
75-
<span class="col-shortid dimmed">MOBILE-4D</span>
76-
<span class="col-alias accent">m-4d</span>
77-
<span class="col-title">NetworkError: Failed to fetch</span>
78-
<span class="col-count">456</span>
79-
<span class="col-fix red-text">23%</span>
80-
</div>
53+
<pre class="table-box"><span class="border">╭─────────┬───────┬───────────────┬────────┬──────┬────────────┬──────────────────────────────────────────╮</span>
54+
<span class="border">│</span> <span class="header-text">LEVEL</span> <span class="border">│</span> <span class="header-text">ALIAS</span> <span class="border">│</span> <span class="header-text">SHORT ID</span> <span class="border">│</span> <span class="header-text">COUNT</span> <span class="border">│</span> <span class="header-text">SEEN</span> <span class="border">│</span> <span class="header-text">FIXABILITY</span> <span class="border">│</span> <span class="header-text">TITLE</span> <span class="border">│</span>
55+
<span class="border">├─────────┼───────┼───────────────┼────────┼──────┼────────────┼──────────────────────────────────────────┤</span>
56+
<span class="border">│</span> <span class="red-text">ERROR</span> <span class="border">│</span> <span class="accent">f-79</span> <span class="border">│</span> <span class="alias-hl">F</span>RONTEND-<span class="alias-hl">79</span> <span class="border">│</span> 2.4k <span class="border">│</span> 2h <span class="border">│</span> <span class="green-text">92%</span> <span class="border">│</span> <span class="dimmed">TypeError: Cannot read property 'map'...</span> <span class="border">│</span>
57+
<span class="border">│</span> <span class="yellow-text">WARN</span> <span class="border">│</span> <span class="accent">a-2f</span> <span class="border">│</span> <span class="alias-hl">A</span>PI-<span class="alias-hl">2F</span> <span class="border">│</span> 891 <span class="border">│</span> 1d <span class="border">│</span> <span class="yellow-text">67%</span> <span class="border">│</span> <span class="dimmed">ReferenceError: user is not defined</span> <span class="border">│</span>
58+
<span class="border">│</span> <span class="red-text">ERROR</span> <span class="border">│</span> <span class="accent">m-4d</span> <span class="border">│</span> <span class="alias-hl">M</span>OBILE-<span class="alias-hl">4D</span> <span class="border">│</span> 456 <span class="border">│</span> 5d <span class="border">│</span> <span class="red-text">23%</span> <span class="border">│</span> <span class="dimmed">NetworkError: Failed to fetch</span> <span class="border">│</span>
59+
<span class="border">╰─────────┴───────┴───────────────┴────────┴──────┴────────────┴──────────────────────────────────────────╯</span></pre>
8160

8261
<div class="line spacer"></div>
8362

@@ -231,10 +210,6 @@ if (background) {
231210
color: #22d3ee;
232211
}
233212

234-
.accent {
235-
color: #a78bfa;
236-
}
237-
238213
.dimmed {
239214
color: rgba(255, 255, 255, 0.4);
240215
}
@@ -269,45 +244,34 @@ if (background) {
269244
border-radius: 3px;
270245
}
271246

272-
.table-header {
273-
color: rgba(255, 255, 255, 0.4);
274-
font-size: 0.65rem;
275-
text-transform: uppercase;
276-
letter-spacing: 0.05em;
277-
padding-bottom: 0.25rem;
278-
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
279-
}
280-
281-
.table-row {
282-
font-size: 0.72rem;
283-
}
284-
285-
.col-shortid {
286-
min-width: 95px;
247+
.table-box {
248+
font-family: 'JetBrains Mono', monospace;
249+
font-size: 0.7rem;
250+
line-height: 1.5;
251+
margin: 0;
252+
padding: 0;
253+
background: transparent;
254+
border: none;
255+
color: rgba(255, 255, 255, 0.85);
256+
overflow-x: auto;
287257
}
288258

289-
.col-alias {
290-
min-width: 45px;
259+
.table-box .border {
260+
color: rgba(255, 255, 255, 0.15);
291261
}
292262

293-
.col-title {
294-
flex: 1;
295-
overflow: hidden;
296-
text-overflow: ellipsis;
297-
white-space: nowrap;
298-
color: rgba(255, 255, 255, 0.7);
263+
.table-box .header-text {
264+
color: rgba(255, 255, 255, 0.4);
265+
font-size: 0.7rem;
299266
}
300267

301-
.col-count {
302-
min-width: 40px;
303-
text-align: right;
304-
color: rgba(255, 255, 255, 0.5);
268+
.accent {
269+
color: #a78bfa;
305270
}
306271

307-
.col-fix {
308-
min-width: 35px;
309-
text-align: right;
310-
font-weight: 500;
272+
.alias-hl {
273+
font-weight: 700;
274+
text-decoration: underline;
311275
}
312276

313277
@media (max-width: 640px) {
@@ -321,13 +285,5 @@ if (background) {
321285
padding: 0 1rem 1rem;
322286
font-size: 0.7rem;
323287
}
324-
325-
.col-shortid {
326-
display: none;
327-
}
328-
329-
.col-alias {
330-
min-width: 40px;
331-
}
332288
}
333289
</style>

docs/src/content/docs/commands/auth.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,22 @@ sentry auth login --token YOUR_TOKEN
3434
5. Authorize the application
3535
6. The CLI automatically receives your token
3636

37+
**Self-Hosted Sentry (26.1.0+):**
38+
39+
For self-hosted instances, set `SENTRY_URL` and `SENTRY_CLIENT_ID` (from a public OAuth application you create on your instance):
40+
41+
```bash
42+
SENTRY_URL=https://sentry.example.com SENTRY_CLIENT_ID=your-client-id sentry auth login
43+
```
44+
45+
On older versions or without an OAuth application, use an API token instead:
46+
47+
```bash
48+
SENTRY_URL=https://sentry.example.com sentry auth login --token YOUR_TOKEN
49+
```
50+
51+
See [Self-Hosted Sentry](../self-hosted/) for full setup details.
52+
3753
### `sentry auth logout`
3854

3955
Remove stored credentials.

docs/src/content/docs/commands/index.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ All commands support the following global options:
2525

2626
- `--help` - Show help for the command
2727
- `--version` - Show CLI version
28+
- `--log-level <level>` - Set log verbosity (`error`, `warn`, `log`, `info`, `debug`, `trace`). Overrides `SENTRY_LOG_LEVEL`
29+
- `--verbose` - Shorthand for `--log-level debug`
2830

2931
## JSON Output
3032

0 commit comments

Comments
 (0)