issy 0.7.0 → 0.7.1
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/dist/cli.js +113 -28
- package/package.json +3 -3
package/dist/cli.js
CHANGED
|
@@ -2126,6 +2126,9 @@ async function resolvePosition(opts) {
|
|
|
2126
2126
|
last: opts.last
|
|
2127
2127
|
}, opts.excludeId);
|
|
2128
2128
|
}
|
|
2129
|
+
function hasHelpFlag(commandArgs) {
|
|
2130
|
+
return commandArgs.includes("--help") || commandArgs.includes("-h");
|
|
2131
|
+
}
|
|
2129
2132
|
async function listIssues(options) {
|
|
2130
2133
|
const allIssues = await getAllIssues();
|
|
2131
2134
|
const queryParts = [];
|
|
@@ -2210,34 +2213,7 @@ async function searchIssuesCommand(query, options) {
|
|
|
2210
2213
|
}
|
|
2211
2214
|
async function createIssueCommand(options) {
|
|
2212
2215
|
if (!options.title) {
|
|
2213
|
-
console.
|
|
2214
|
-
Create New Issue`);
|
|
2215
|
-
console.log("-".repeat(40));
|
|
2216
|
-
const prompt = (question) => {
|
|
2217
|
-
process.stdout.write(question);
|
|
2218
|
-
return new Promise((resolve2) => {
|
|
2219
|
-
let input = "";
|
|
2220
|
-
process.stdin.setRawMode?.(false);
|
|
2221
|
-
process.stdin.resume();
|
|
2222
|
-
process.stdin.setEncoding("utf8");
|
|
2223
|
-
process.stdin.once("data", (data) => {
|
|
2224
|
-
input = data.toString().trim();
|
|
2225
|
-
resolve2(input);
|
|
2226
|
-
});
|
|
2227
|
-
});
|
|
2228
|
-
};
|
|
2229
|
-
options.title = await prompt("Title: ");
|
|
2230
|
-
options.priority = await prompt("Priority (high/medium/low) [medium]: ");
|
|
2231
|
-
options.scope = await prompt("Scope (small/medium/large) []: ");
|
|
2232
|
-
options.type = await prompt("Type (bug/improvement) [improvement]: ");
|
|
2233
|
-
options.labels = await prompt("Labels (comma-separated) []: ");
|
|
2234
|
-
if (!options.priority)
|
|
2235
|
-
options.priority = "medium";
|
|
2236
|
-
if (!options.type)
|
|
2237
|
-
options.type = "improvement";
|
|
2238
|
-
}
|
|
2239
|
-
if (!options.title) {
|
|
2240
|
-
console.error("Title is required");
|
|
2216
|
+
console.error("Title is required. Use --title or -t to specify.");
|
|
2241
2217
|
process.exit(1);
|
|
2242
2218
|
}
|
|
2243
2219
|
try {
|
|
@@ -2416,6 +2392,21 @@ Examples:
|
|
|
2416
2392
|
}
|
|
2417
2393
|
switch (command) {
|
|
2418
2394
|
case "list": {
|
|
2395
|
+
if (hasHelpFlag(args.slice(1))) {
|
|
2396
|
+
console.log(`Usage: issy list [options]
|
|
2397
|
+
|
|
2398
|
+
List all open issues in roadmap order.
|
|
2399
|
+
|
|
2400
|
+
Options:
|
|
2401
|
+
--all, -a Include closed issues
|
|
2402
|
+
--priority, -p <p> Filter by priority (high, medium, low)
|
|
2403
|
+
--scope <s> Filter by scope (small, medium, large)
|
|
2404
|
+
--type, -t <t> Filter by type (bug, improvement)
|
|
2405
|
+
--search, -s <q> Fuzzy search issues
|
|
2406
|
+
--sort <s> Sort: roadmap (default), priority, created, updated, id
|
|
2407
|
+
`);
|
|
2408
|
+
return;
|
|
2409
|
+
}
|
|
2419
2410
|
const { values } = parseArgs({
|
|
2420
2411
|
args: args.slice(1),
|
|
2421
2412
|
options: {
|
|
@@ -2432,6 +2423,16 @@ Examples:
|
|
|
2432
2423
|
break;
|
|
2433
2424
|
}
|
|
2434
2425
|
case "search": {
|
|
2426
|
+
if (hasHelpFlag(args.slice(1))) {
|
|
2427
|
+
console.log(`Usage: issy search <query> [options]
|
|
2428
|
+
|
|
2429
|
+
Fuzzy search issues by title and content.
|
|
2430
|
+
|
|
2431
|
+
Options:
|
|
2432
|
+
--all, -a Include closed issues (default: open only)
|
|
2433
|
+
`);
|
|
2434
|
+
return;
|
|
2435
|
+
}
|
|
2435
2436
|
const query = args[1];
|
|
2436
2437
|
if (!query) {
|
|
2437
2438
|
console.error("Usage: issy search <query>");
|
|
@@ -2448,6 +2449,13 @@ Examples:
|
|
|
2448
2449
|
break;
|
|
2449
2450
|
}
|
|
2450
2451
|
case "read": {
|
|
2452
|
+
if (hasHelpFlag(args.slice(1))) {
|
|
2453
|
+
console.log(`Usage: issy read <id>
|
|
2454
|
+
|
|
2455
|
+
Display a specific issue and all its details.
|
|
2456
|
+
`);
|
|
2457
|
+
return;
|
|
2458
|
+
}
|
|
2451
2459
|
const id = args[1];
|
|
2452
2460
|
if (!id) {
|
|
2453
2461
|
console.error("Usage: issy read <id>");
|
|
@@ -2457,10 +2465,40 @@ Examples:
|
|
|
2457
2465
|
break;
|
|
2458
2466
|
}
|
|
2459
2467
|
case "next": {
|
|
2468
|
+
if (hasHelpFlag(args.slice(1))) {
|
|
2469
|
+
console.log(`Usage: issy next
|
|
2470
|
+
|
|
2471
|
+
Show the next issue to work on (first open issue in roadmap order).
|
|
2472
|
+
`);
|
|
2473
|
+
return;
|
|
2474
|
+
}
|
|
2460
2475
|
await nextIssueCommand();
|
|
2461
2476
|
break;
|
|
2462
2477
|
}
|
|
2463
2478
|
case "create": {
|
|
2479
|
+
if (hasHelpFlag(args.slice(1))) {
|
|
2480
|
+
console.log(`Usage: issy create [options]
|
|
2481
|
+
|
|
2482
|
+
Create a new issue. --title is required.
|
|
2483
|
+
|
|
2484
|
+
Options:
|
|
2485
|
+
--title, -t <t> Issue title
|
|
2486
|
+
--body, -b <b> Markdown body content
|
|
2487
|
+
--priority, -p <p> Priority: high, medium, low (default: medium)
|
|
2488
|
+
--scope <s> Scope: small, medium, large
|
|
2489
|
+
--type <t> Type: bug, improvement (default: improvement)
|
|
2490
|
+
--labels, -l <l> Comma-separated labels
|
|
2491
|
+
--before <id> Insert before this issue in roadmap
|
|
2492
|
+
--after <id> Insert after this issue in roadmap
|
|
2493
|
+
--first Insert at the beginning of the roadmap
|
|
2494
|
+
--last Insert at the end of the roadmap
|
|
2495
|
+
|
|
2496
|
+
Examples:
|
|
2497
|
+
issy create --title "Fix login bug" --type bug --priority high --after 0002
|
|
2498
|
+
issy create --title "Add dark mode" --last
|
|
2499
|
+
`);
|
|
2500
|
+
return;
|
|
2501
|
+
}
|
|
2464
2502
|
const { values } = parseArgs({
|
|
2465
2503
|
args: args.slice(1),
|
|
2466
2504
|
options: {
|
|
@@ -2481,6 +2519,29 @@ Examples:
|
|
|
2481
2519
|
break;
|
|
2482
2520
|
}
|
|
2483
2521
|
case "update": {
|
|
2522
|
+
if (hasHelpFlag(args.slice(1))) {
|
|
2523
|
+
console.log(`Usage: issy update <id> [options]
|
|
2524
|
+
|
|
2525
|
+
Update an existing issue.
|
|
2526
|
+
|
|
2527
|
+
Options:
|
|
2528
|
+
--title, -t <t> New title
|
|
2529
|
+
--body, -b <b> New markdown body content
|
|
2530
|
+
--priority, -p <p> New priority: high, medium, low
|
|
2531
|
+
--scope <s> New scope: small, medium, large
|
|
2532
|
+
--type <t> New type: bug, improvement
|
|
2533
|
+
--labels, -l <l> New labels (comma-separated)
|
|
2534
|
+
--before <id> Move before this issue in roadmap
|
|
2535
|
+
--after <id> Move after this issue in roadmap
|
|
2536
|
+
--first Move to the beginning of the roadmap
|
|
2537
|
+
--last Move to the end of the roadmap
|
|
2538
|
+
|
|
2539
|
+
Examples:
|
|
2540
|
+
issy update 0001 --priority low --after 0003
|
|
2541
|
+
issy update 0002 --title "Renamed issue" --first
|
|
2542
|
+
`);
|
|
2543
|
+
return;
|
|
2544
|
+
}
|
|
2484
2545
|
const id = args[1];
|
|
2485
2546
|
if (!id) {
|
|
2486
2547
|
console.error("Usage: issy update <id> [options]");
|
|
@@ -2506,6 +2567,13 @@ Examples:
|
|
|
2506
2567
|
break;
|
|
2507
2568
|
}
|
|
2508
2569
|
case "close": {
|
|
2570
|
+
if (hasHelpFlag(args.slice(1))) {
|
|
2571
|
+
console.log(`Usage: issy close <id>
|
|
2572
|
+
|
|
2573
|
+
Close an issue by ID.
|
|
2574
|
+
`);
|
|
2575
|
+
return;
|
|
2576
|
+
}
|
|
2509
2577
|
const id = args[1];
|
|
2510
2578
|
if (!id) {
|
|
2511
2579
|
console.error("Usage: issy close <id>");
|
|
@@ -2515,6 +2583,23 @@ Examples:
|
|
|
2515
2583
|
break;
|
|
2516
2584
|
}
|
|
2517
2585
|
case "reopen": {
|
|
2586
|
+
if (hasHelpFlag(args.slice(1))) {
|
|
2587
|
+
console.log(`Usage: issy reopen <id> [options]
|
|
2588
|
+
|
|
2589
|
+
Reopen a closed issue.
|
|
2590
|
+
|
|
2591
|
+
Options:
|
|
2592
|
+
--before <id> Insert before this issue in roadmap
|
|
2593
|
+
--after <id> Insert after this issue in roadmap
|
|
2594
|
+
--first Insert at the beginning of the roadmap
|
|
2595
|
+
--last Insert at the end of the roadmap
|
|
2596
|
+
|
|
2597
|
+
Examples:
|
|
2598
|
+
issy reopen 0001 --last
|
|
2599
|
+
issy reopen 0001 --before 0003
|
|
2600
|
+
`);
|
|
2601
|
+
return;
|
|
2602
|
+
}
|
|
2518
2603
|
const id = args[1];
|
|
2519
2604
|
if (!id) {
|
|
2520
2605
|
console.error("Usage: issy reopen <id>");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "issy",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.1",
|
|
4
4
|
"description": "AI-native issue tracking. Markdown files in .issues/, managed by your coding assistant.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
"lint": "biome check src bin"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@miketromba/issy-app": "^0.7.
|
|
39
|
-
"@miketromba/issy-core": "^0.7.
|
|
38
|
+
"@miketromba/issy-app": "^0.7.1",
|
|
39
|
+
"@miketromba/issy-core": "^0.7.1",
|
|
40
40
|
"update-notifier": "^7.3.1"
|
|
41
41
|
}
|
|
42
42
|
}
|