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.
Files changed (2) hide show
  1. package/dist/cli.js +113 -28
  2. 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.log(`
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.0",
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.0",
39
- "@miketromba/issy-core": "^0.7.0",
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
  }