issy 0.7.0 → 0.7.2

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 +135 -31
  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 {
@@ -2332,9 +2308,28 @@ async function nextIssueCommand() {
2332
2308
  return;
2333
2309
  }
2334
2310
  console.log(`
2335
- Next issue:`);
2336
- console.log(` ${"-".repeat(60)}`);
2337
- console.log(` #${issue.id} ${prioritySymbol(issue.frontmatter.priority)} ${typeSymbol(issue.frontmatter.type)} ${issue.frontmatter.title}`);
2311
+ ${"=".repeat(70)}`);
2312
+ console.log(` ${typeSymbol(issue.frontmatter.type)} ${issue.frontmatter.title}`);
2313
+ console.log("=".repeat(70));
2314
+ console.log(` ID: ${issue.id}`);
2315
+ console.log(` Status: ${issue.frontmatter.status.toUpperCase()}`);
2316
+ console.log(` Priority: ${prioritySymbol(issue.frontmatter.priority)} ${issue.frontmatter.priority}`);
2317
+ if (issue.frontmatter.scope) {
2318
+ console.log(` Scope: ${issue.frontmatter.scope}`);
2319
+ }
2320
+ console.log(` Type: ${issue.frontmatter.type}`);
2321
+ if (issue.frontmatter.labels) {
2322
+ console.log(` Labels: ${issue.frontmatter.labels}`);
2323
+ }
2324
+ if (issue.frontmatter.order) {
2325
+ console.log(` Order: ${issue.frontmatter.order}`);
2326
+ }
2327
+ console.log(` Created: ${issue.frontmatter.created}`);
2328
+ if (issue.frontmatter.updated) {
2329
+ console.log(` Updated: ${issue.frontmatter.updated}`);
2330
+ }
2331
+ console.log("-".repeat(70));
2332
+ console.log(issue.content);
2338
2333
  console.log();
2339
2334
  }
2340
2335
  async function main() {
@@ -2416,6 +2411,21 @@ Examples:
2416
2411
  }
2417
2412
  switch (command) {
2418
2413
  case "list": {
2414
+ if (hasHelpFlag(args.slice(1))) {
2415
+ console.log(`Usage: issy list [options]
2416
+
2417
+ List all open issues in roadmap order.
2418
+
2419
+ Options:
2420
+ --all, -a Include closed issues
2421
+ --priority, -p <p> Filter by priority (high, medium, low)
2422
+ --scope <s> Filter by scope (small, medium, large)
2423
+ --type, -t <t> Filter by type (bug, improvement)
2424
+ --search, -s <q> Fuzzy search issues
2425
+ --sort <s> Sort: roadmap (default), priority, created, updated, id
2426
+ `);
2427
+ return;
2428
+ }
2419
2429
  const { values } = parseArgs({
2420
2430
  args: args.slice(1),
2421
2431
  options: {
@@ -2432,6 +2442,16 @@ Examples:
2432
2442
  break;
2433
2443
  }
2434
2444
  case "search": {
2445
+ if (hasHelpFlag(args.slice(1))) {
2446
+ console.log(`Usage: issy search <query> [options]
2447
+
2448
+ Fuzzy search issues by title and content.
2449
+
2450
+ Options:
2451
+ --all, -a Include closed issues (default: open only)
2452
+ `);
2453
+ return;
2454
+ }
2435
2455
  const query = args[1];
2436
2456
  if (!query) {
2437
2457
  console.error("Usage: issy search <query>");
@@ -2448,6 +2468,13 @@ Examples:
2448
2468
  break;
2449
2469
  }
2450
2470
  case "read": {
2471
+ if (hasHelpFlag(args.slice(1))) {
2472
+ console.log(`Usage: issy read <id>
2473
+
2474
+ Display a specific issue and all its details.
2475
+ `);
2476
+ return;
2477
+ }
2451
2478
  const id = args[1];
2452
2479
  if (!id) {
2453
2480
  console.error("Usage: issy read <id>");
@@ -2457,10 +2484,40 @@ Examples:
2457
2484
  break;
2458
2485
  }
2459
2486
  case "next": {
2487
+ if (hasHelpFlag(args.slice(1))) {
2488
+ console.log(`Usage: issy next
2489
+
2490
+ Show the next issue to work on (first open issue in roadmap order).
2491
+ `);
2492
+ return;
2493
+ }
2460
2494
  await nextIssueCommand();
2461
2495
  break;
2462
2496
  }
2463
2497
  case "create": {
2498
+ if (hasHelpFlag(args.slice(1))) {
2499
+ console.log(`Usage: issy create [options]
2500
+
2501
+ Create a new issue. --title is required.
2502
+
2503
+ Options:
2504
+ --title, -t <t> Issue title
2505
+ --body, -b <b> Markdown body content
2506
+ --priority, -p <p> Priority: high, medium, low (default: medium)
2507
+ --scope <s> Scope: small, medium, large
2508
+ --type <t> Type: bug, improvement (default: improvement)
2509
+ --labels, -l <l> Comma-separated labels
2510
+ --before <id> Insert before this issue in roadmap
2511
+ --after <id> Insert after this issue in roadmap
2512
+ --first Insert at the beginning of the roadmap
2513
+ --last Insert at the end of the roadmap
2514
+
2515
+ Examples:
2516
+ issy create --title "Fix login bug" --type bug --priority high --after 0002
2517
+ issy create --title "Add dark mode" --last
2518
+ `);
2519
+ return;
2520
+ }
2464
2521
  const { values } = parseArgs({
2465
2522
  args: args.slice(1),
2466
2523
  options: {
@@ -2481,6 +2538,29 @@ Examples:
2481
2538
  break;
2482
2539
  }
2483
2540
  case "update": {
2541
+ if (hasHelpFlag(args.slice(1))) {
2542
+ console.log(`Usage: issy update <id> [options]
2543
+
2544
+ Update an existing issue.
2545
+
2546
+ Options:
2547
+ --title, -t <t> New title
2548
+ --body, -b <b> New markdown body content
2549
+ --priority, -p <p> New priority: high, medium, low
2550
+ --scope <s> New scope: small, medium, large
2551
+ --type <t> New type: bug, improvement
2552
+ --labels, -l <l> New labels (comma-separated)
2553
+ --before <id> Move before this issue in roadmap
2554
+ --after <id> Move after this issue in roadmap
2555
+ --first Move to the beginning of the roadmap
2556
+ --last Move to the end of the roadmap
2557
+
2558
+ Examples:
2559
+ issy update 0001 --priority low --after 0003
2560
+ issy update 0002 --title "Renamed issue" --first
2561
+ `);
2562
+ return;
2563
+ }
2484
2564
  const id = args[1];
2485
2565
  if (!id) {
2486
2566
  console.error("Usage: issy update <id> [options]");
@@ -2506,6 +2586,13 @@ Examples:
2506
2586
  break;
2507
2587
  }
2508
2588
  case "close": {
2589
+ if (hasHelpFlag(args.slice(1))) {
2590
+ console.log(`Usage: issy close <id>
2591
+
2592
+ Close an issue by ID.
2593
+ `);
2594
+ return;
2595
+ }
2509
2596
  const id = args[1];
2510
2597
  if (!id) {
2511
2598
  console.error("Usage: issy close <id>");
@@ -2515,6 +2602,23 @@ Examples:
2515
2602
  break;
2516
2603
  }
2517
2604
  case "reopen": {
2605
+ if (hasHelpFlag(args.slice(1))) {
2606
+ console.log(`Usage: issy reopen <id> [options]
2607
+
2608
+ Reopen a closed issue.
2609
+
2610
+ Options:
2611
+ --before <id> Insert before this issue in roadmap
2612
+ --after <id> Insert after this issue in roadmap
2613
+ --first Insert at the beginning of the roadmap
2614
+ --last Insert at the end of the roadmap
2615
+
2616
+ Examples:
2617
+ issy reopen 0001 --last
2618
+ issy reopen 0001 --before 0003
2619
+ `);
2620
+ return;
2621
+ }
2518
2622
  const id = args[1];
2519
2623
  if (!id) {
2520
2624
  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.2",
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.2",
39
+ "@miketromba/issy-core": "^0.7.2",
40
40
  "update-notifier": "^7.3.1"
41
41
  }
42
42
  }