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.
- package/dist/cli.js +135 -31
- 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 {
|
|
@@ -2332,9 +2308,28 @@ async function nextIssueCommand() {
|
|
|
2332
2308
|
return;
|
|
2333
2309
|
}
|
|
2334
2310
|
console.log(`
|
|
2335
|
-
|
|
2336
|
-
console.log(` ${
|
|
2337
|
-
console.log(
|
|
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.
|
|
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.
|
|
39
|
-
"@miketromba/issy-core": "^0.7.
|
|
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
|
}
|