File tree Expand file tree Collapse file tree 7 files changed +40
-21
lines changed
Expand file tree Collapse file tree 7 files changed +40
-21
lines changed Original file line number Diff line number Diff line change @@ -657,11 +657,15 @@ export const listCommand = buildCommand({
657657 brief : "List issues in a project" ,
658658 fullDescription :
659659 "List issues from Sentry projects.\n\n" +
660- "Target specification :\n" +
660+ "Target patterns :\n" +
661661 " sentry issue list # auto-detect from DSN or config\n" +
662662 " sentry issue list <org>/<proj> # explicit org and project\n" +
663- " sentry issue list <org>/ # all projects in org\n" +
663+ " sentry issue list <org>/ # all projects in org (trailing / required) \n" +
664664 " sentry issue list <project> # find project across all orgs\n\n" +
665+ "The trailing slash on <org>/ is significant — without it, the argument\n" +
666+ "is treated as a project name search (e.g., 'sentry' searches for a\n" +
667+ "project named 'sentry', while 'sentry/' lists all projects in the\n" +
668+ "'sentry' org).\n\n" +
665669 "In monorepos with multiple Sentry projects, shows issues from all detected projects." ,
666670 } ,
667671 parameters : {
Original file line number Diff line number Diff line change @@ -232,10 +232,12 @@ export const listCommand = buildCommand({
232232 brief : "List logs from a project" ,
233233 fullDescription :
234234 "List and stream logs from Sentry projects.\n\n" +
235- "Target specification :\n" +
235+ "Target patterns :\n" +
236236 " sentry log list # auto-detect from DSN or config\n" +
237237 " sentry log list <org>/<proj> # explicit org and project\n" +
238238 " sentry log list <project> # find project across all orgs\n\n" +
239+ "A bare name (no slash) is treated as a project search. Use <org>/<proj>\n" +
240+ "for an explicit target.\n\n" +
239241 "Examples:\n" +
240242 " sentry log list # List last 100 logs\n" +
241243 " sentry log list -f # Stream logs (2s poll interval)\n" +
@@ -248,8 +250,8 @@ export const listCommand = buildCommand({
248250 kind : "tuple" ,
249251 parameters : [
250252 {
251- placeholder : "target " ,
252- brief : "Target: <org>/<project> or <project>" ,
253+ placeholder : "org/project " ,
254+ brief : "<org>/<project> or <project> (search) " ,
253255 parse : String ,
254256 optional : true ,
255257 } ,
Original file line number Diff line number Diff line change @@ -607,13 +607,17 @@ export const listCommand = buildCommand({
607607 brief : "List projects" ,
608608 fullDescription :
609609 "List projects in an organization.\n\n" +
610- "Target specification :\n" +
610+ "Target patterns :\n" +
611611 " sentry project list # auto-detect from DSN or config\n" +
612- " sentry project list <org>/ # list all projects in org (paginated)\n" +
612+ " sentry project list <org>/ # all projects in org (paginated)\n" +
613613 " sentry project list <org>/<proj> # show specific project\n" +
614614 " sentry project list <project> # find project across all orgs\n\n" +
615+ "The trailing slash on <org>/ is significant — without it, the argument\n" +
616+ "is treated as a project name search (e.g., 'sentry' searches for a\n" +
617+ "project named 'sentry', while 'sentry/' lists all projects in the\n" +
618+ "'sentry' org). Cursor pagination (--cursor) requires the <org>/ form.\n\n" +
615619 "Pagination:\n" +
616- " sentry project list <org>/ -c last # continue from last page\n" +
620+ " sentry project list <org>/ -c last # continue from last page\n" +
617621 " sentry project list <org>/ -c <cursor> # resume at specific cursor\n\n" +
618622 "Filtering and output:\n" +
619623 " sentry project list --platform javascript # filter by platform\n" +
Original file line number Diff line number Diff line change @@ -201,19 +201,21 @@ export const viewCommand = buildCommand({
201201 brief : "View details of a project" ,
202202 fullDescription :
203203 "View detailed information about Sentry projects.\n\n" +
204- "Target specification :\n" +
204+ "Target patterns :\n" +
205205 " sentry project view # auto-detect from DSN or config\n" +
206206 " sentry project view <org>/<project> # explicit org and project\n" +
207207 " sentry project view <project> # find project across all orgs\n\n" +
208+ "A bare name (no slash) is treated as a project search. Use <org>/<project>\n" +
209+ "for an explicit target.\n\n" +
208210 "In monorepos with multiple Sentry projects, shows details for all detected projects." ,
209211 } ,
210212 parameters : {
211213 positional : {
212214 kind : "tuple" ,
213215 parameters : [
214216 {
215- placeholder : "target " ,
216- brief : "Target: <org>/<project>, <project>, or omit for auto-detect" ,
217+ placeholder : "org/project " ,
218+ brief : "<org>/<project>, <project> (search) , or omit for auto-detect" ,
217219 parse : String ,
218220 optional : true ,
219221 } ,
Original file line number Diff line number Diff line change @@ -67,10 +67,12 @@ export const listCommand = buildCommand({
6767 brief : "List recent traces in a project" ,
6868 fullDescription :
6969 "List recent traces from Sentry projects.\n\n" +
70- "Target specification :\n" +
70+ "Target patterns :\n" +
7171 " sentry trace list # auto-detect from DSN or config\n" +
7272 " sentry trace list <org>/<proj> # explicit org and project\n" +
7373 " sentry trace list <project> # find project across all orgs\n\n" +
74+ "A bare name (no slash) is treated as a project search. Use <org>/<proj>\n" +
75+ "for an explicit target.\n\n" +
7476 "Examples:\n" +
7577 " sentry trace list # List last 10 traces\n" +
7678 " sentry trace list --limit 50 # Show more traces\n" +
@@ -82,8 +84,8 @@ export const listCommand = buildCommand({
8284 kind : "tuple" ,
8385 parameters : [
8486 {
85- placeholder : "target " ,
86- brief : "Target: <org>/<project> or <project>" ,
87+ placeholder : "org/project " ,
88+ brief : "<org>/<project> or <project> (search) " ,
8789 parse : String ,
8890 optional : true ,
8991 } ,
Original file line number Diff line number Diff line change @@ -24,17 +24,17 @@ import { dispatchOrgScopedList, type OrgListConfig } from "./org-list.js";
2424// ---------------------------------------------------------------------------
2525
2626/**
27- * Positional `target ` parameter shared by all list commands.
27+ * Positional `org/project ` parameter shared by all list commands.
2828 *
29- * Accepts `<org>/`, `<org>/<project>`, or bare `<org>` / `< project>`.
29+ * Accepts `<org>/`, `<org>/<project>`, or bare `<project>` (search) .
3030 * Marked optional so the command falls back to auto-detection when omitted.
3131 */
3232export const LIST_TARGET_POSITIONAL = {
3333 kind : "tuple" as const ,
3434 parameters : [
3535 {
36- placeholder : "target " ,
37- brief : "Target: <org>/, <org>/<project>, or <org> " ,
36+ placeholder : "org/project " ,
37+ brief : "<org>/ (all projects) , <org>/<project>, or <project> (search) " ,
3838 parse : String ,
3939 optional : true as const ,
4040 } ,
Original file line number Diff line number Diff line change @@ -739,10 +739,15 @@ export async function dispatchOrgScopedList<TEntity, TWithOrg>(
739739
740740 // Cursor pagination is only supported in org-all mode
741741 if ( flags . cursor && parsed . type !== "org-all" ) {
742+ const hint =
743+ parsed . type === "project-search"
744+ ? `\n\nDid you mean '${ config . commandPrefix } ${ parsed . projectSlug } /'? ` +
745+ "A bare name searches for a project — add a trailing slash to list an org's projects."
746+ : "" ;
742747 throw new ValidationError (
743- ` The --cursor flag is only supported when listing ${ config . entityPlural } for a specific organization ` +
744- `(e.g., ${ config . commandPrefix } < org> /). ` +
745- `Use ' ${ config . commandPrefix } <org>/' for paginated results.` ,
748+ " The --cursor flag requires the <org>/ pattern " +
749+ `(e.g., ${ config . commandPrefix } my- org/).` +
750+ hint ,
746751 "cursor"
747752 ) ;
748753 }
You can’t perform that action at this time.
0 commit comments