issy 0.6.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/README.md +0 -1
- package/dist/cli.js +113 -42
- package/dist/main.js +0 -4
- package/package.json +3 -3
package/README.md
CHANGED
package/dist/cli.js
CHANGED
|
@@ -325,7 +325,6 @@ function parseFrontmatter(content) {
|
|
|
325
325
|
function generateFrontmatter(data) {
|
|
326
326
|
const lines = ["---"];
|
|
327
327
|
lines.push(`title: ${data.title}`);
|
|
328
|
-
lines.push(`description: ${data.description}`);
|
|
329
328
|
lines.push(`priority: ${data.priority}`);
|
|
330
329
|
if (data.scope) {
|
|
331
330
|
lines.push(`scope: ${data.scope}`);
|
|
@@ -481,7 +480,6 @@ async function createIssue(input) {
|
|
|
481
480
|
const filename = `${issueNumber}-${slug}.md`;
|
|
482
481
|
const frontmatter = {
|
|
483
482
|
title: input.title,
|
|
484
|
-
description: input.description || input.title,
|
|
485
483
|
priority,
|
|
486
484
|
scope: scope || undefined,
|
|
487
485
|
type,
|
|
@@ -516,7 +514,6 @@ async function updateIssue(id, input) {
|
|
|
516
514
|
const updatedFrontmatter = {
|
|
517
515
|
...issue.frontmatter,
|
|
518
516
|
...input.title && { title: input.title },
|
|
519
|
-
...input.description && { description: input.description },
|
|
520
517
|
...input.priority && { priority: input.priority },
|
|
521
518
|
...input.scope && { scope: input.scope },
|
|
522
519
|
...input.type && { type: input.type },
|
|
@@ -1917,7 +1914,6 @@ Fuse.config = Config;
|
|
|
1917
1914
|
var FUSE_OPTIONS = {
|
|
1918
1915
|
keys: [
|
|
1919
1916
|
{ name: "frontmatter.title", weight: 1 },
|
|
1920
|
-
{ name: "frontmatter.description", weight: 0.7 },
|
|
1921
1917
|
{ name: "frontmatter.labels", weight: 0.5 },
|
|
1922
1918
|
{ name: "content", weight: 0.3 }
|
|
1923
1919
|
],
|
|
@@ -2130,6 +2126,9 @@ async function resolvePosition(opts) {
|
|
|
2130
2126
|
last: opts.last
|
|
2131
2127
|
}, opts.excludeId);
|
|
2132
2128
|
}
|
|
2129
|
+
function hasHelpFlag(commandArgs) {
|
|
2130
|
+
return commandArgs.includes("--help") || commandArgs.includes("-h");
|
|
2131
|
+
}
|
|
2133
2132
|
async function listIssues(options) {
|
|
2134
2133
|
const allIssues = await getAllIssues();
|
|
2135
2134
|
const queryParts = [];
|
|
@@ -2214,35 +2213,7 @@ async function searchIssuesCommand(query, options) {
|
|
|
2214
2213
|
}
|
|
2215
2214
|
async function createIssueCommand(options) {
|
|
2216
2215
|
if (!options.title) {
|
|
2217
|
-
console.
|
|
2218
|
-
Create New Issue`);
|
|
2219
|
-
console.log("-".repeat(40));
|
|
2220
|
-
const prompt = (question) => {
|
|
2221
|
-
process.stdout.write(question);
|
|
2222
|
-
return new Promise((resolve2) => {
|
|
2223
|
-
let input = "";
|
|
2224
|
-
process.stdin.setRawMode?.(false);
|
|
2225
|
-
process.stdin.resume();
|
|
2226
|
-
process.stdin.setEncoding("utf8");
|
|
2227
|
-
process.stdin.once("data", (data) => {
|
|
2228
|
-
input = data.toString().trim();
|
|
2229
|
-
resolve2(input);
|
|
2230
|
-
});
|
|
2231
|
-
});
|
|
2232
|
-
};
|
|
2233
|
-
options.title = await prompt("Title: ");
|
|
2234
|
-
options.description = await prompt("Description: ");
|
|
2235
|
-
options.priority = await prompt("Priority (high/medium/low) [medium]: ");
|
|
2236
|
-
options.scope = await prompt("Scope (small/medium/large) []: ");
|
|
2237
|
-
options.type = await prompt("Type (bug/improvement) [improvement]: ");
|
|
2238
|
-
options.labels = await prompt("Labels (comma-separated) []: ");
|
|
2239
|
-
if (!options.priority)
|
|
2240
|
-
options.priority = "medium";
|
|
2241
|
-
if (!options.type)
|
|
2242
|
-
options.type = "improvement";
|
|
2243
|
-
}
|
|
2244
|
-
if (!options.title) {
|
|
2245
|
-
console.error("Title is required");
|
|
2216
|
+
console.error("Title is required. Use --title or -t to specify.");
|
|
2246
2217
|
process.exit(1);
|
|
2247
2218
|
}
|
|
2248
2219
|
try {
|
|
@@ -2255,7 +2226,6 @@ Create New Issue`);
|
|
|
2255
2226
|
});
|
|
2256
2227
|
const input = {
|
|
2257
2228
|
title: options.title,
|
|
2258
|
-
description: options.description,
|
|
2259
2229
|
body: options.body,
|
|
2260
2230
|
priority: options.priority,
|
|
2261
2231
|
scope: options.scope,
|
|
@@ -2286,7 +2256,6 @@ async function updateIssueCommand(id, options) {
|
|
|
2286
2256
|
}
|
|
2287
2257
|
const issue = await updateIssue(id, {
|
|
2288
2258
|
title: options.title,
|
|
2289
|
-
description: options.description,
|
|
2290
2259
|
body: options.body,
|
|
2291
2260
|
priority: options.priority,
|
|
2292
2261
|
scope: options.scope,
|
|
@@ -2342,9 +2311,6 @@ async function nextIssueCommand() {
|
|
|
2342
2311
|
Next issue:`);
|
|
2343
2312
|
console.log(` ${"-".repeat(60)}`);
|
|
2344
2313
|
console.log(` #${issue.id} ${prioritySymbol(issue.frontmatter.priority)} ${typeSymbol(issue.frontmatter.type)} ${issue.frontmatter.title}`);
|
|
2345
|
-
if (issue.frontmatter.description !== issue.frontmatter.title) {
|
|
2346
|
-
console.log(` ${issue.frontmatter.description}`);
|
|
2347
|
-
}
|
|
2348
2314
|
console.log();
|
|
2349
2315
|
}
|
|
2350
2316
|
async function main() {
|
|
@@ -2378,7 +2344,6 @@ Commands:
|
|
|
2378
2344
|
|
|
2379
2345
|
create Create a new issue
|
|
2380
2346
|
--title, -t <t> Issue title
|
|
2381
|
-
--description, -d <d> Short description
|
|
2382
2347
|
--body, -b <b> Markdown body content
|
|
2383
2348
|
--priority, -p <p> Priority (high, medium, low)
|
|
2384
2349
|
--scope <s> Scope (small, medium, large)
|
|
@@ -2391,7 +2356,6 @@ Commands:
|
|
|
2391
2356
|
|
|
2392
2357
|
update <id> Update an issue
|
|
2393
2358
|
--title, -t <t> New title
|
|
2394
|
-
--description, -d <d> New description
|
|
2395
2359
|
--body, -b <b> New markdown body content
|
|
2396
2360
|
--priority, -p <p> New priority
|
|
2397
2361
|
--scope <s> New scope
|
|
@@ -2428,6 +2392,21 @@ Examples:
|
|
|
2428
2392
|
}
|
|
2429
2393
|
switch (command) {
|
|
2430
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
|
+
}
|
|
2431
2410
|
const { values } = parseArgs({
|
|
2432
2411
|
args: args.slice(1),
|
|
2433
2412
|
options: {
|
|
@@ -2444,6 +2423,16 @@ Examples:
|
|
|
2444
2423
|
break;
|
|
2445
2424
|
}
|
|
2446
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
|
+
}
|
|
2447
2436
|
const query = args[1];
|
|
2448
2437
|
if (!query) {
|
|
2449
2438
|
console.error("Usage: issy search <query>");
|
|
@@ -2460,6 +2449,13 @@ Examples:
|
|
|
2460
2449
|
break;
|
|
2461
2450
|
}
|
|
2462
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
|
+
}
|
|
2463
2459
|
const id = args[1];
|
|
2464
2460
|
if (!id) {
|
|
2465
2461
|
console.error("Usage: issy read <id>");
|
|
@@ -2469,15 +2465,44 @@ Examples:
|
|
|
2469
2465
|
break;
|
|
2470
2466
|
}
|
|
2471
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
|
+
}
|
|
2472
2475
|
await nextIssueCommand();
|
|
2473
2476
|
break;
|
|
2474
2477
|
}
|
|
2475
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
|
+
}
|
|
2476
2502
|
const { values } = parseArgs({
|
|
2477
2503
|
args: args.slice(1),
|
|
2478
2504
|
options: {
|
|
2479
2505
|
title: { type: "string", short: "t" },
|
|
2480
|
-
description: { type: "string", short: "d" },
|
|
2481
2506
|
body: { type: "string", short: "b" },
|
|
2482
2507
|
priority: { type: "string", short: "p" },
|
|
2483
2508
|
scope: { type: "string" },
|
|
@@ -2494,6 +2519,29 @@ Examples:
|
|
|
2494
2519
|
break;
|
|
2495
2520
|
}
|
|
2496
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
|
+
}
|
|
2497
2545
|
const id = args[1];
|
|
2498
2546
|
if (!id) {
|
|
2499
2547
|
console.error("Usage: issy update <id> [options]");
|
|
@@ -2503,7 +2551,6 @@ Examples:
|
|
|
2503
2551
|
args: args.slice(2),
|
|
2504
2552
|
options: {
|
|
2505
2553
|
title: { type: "string", short: "t" },
|
|
2506
|
-
description: { type: "string", short: "d" },
|
|
2507
2554
|
body: { type: "string", short: "b" },
|
|
2508
2555
|
priority: { type: "string", short: "p" },
|
|
2509
2556
|
scope: { type: "string" },
|
|
@@ -2520,6 +2567,13 @@ Examples:
|
|
|
2520
2567
|
break;
|
|
2521
2568
|
}
|
|
2522
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
|
+
}
|
|
2523
2577
|
const id = args[1];
|
|
2524
2578
|
if (!id) {
|
|
2525
2579
|
console.error("Usage: issy close <id>");
|
|
@@ -2529,6 +2583,23 @@ Examples:
|
|
|
2529
2583
|
break;
|
|
2530
2584
|
}
|
|
2531
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
|
+
}
|
|
2532
2603
|
const id = args[1];
|
|
2533
2604
|
if (!id) {
|
|
2534
2605
|
console.error("Usage: issy reopen <id>");
|
package/dist/main.js
CHANGED
|
@@ -336,7 +336,6 @@ function parseFrontmatter(content) {
|
|
|
336
336
|
function generateFrontmatter(data) {
|
|
337
337
|
const lines = ["---"];
|
|
338
338
|
lines.push(`title: ${data.title}`);
|
|
339
|
-
lines.push(`description: ${data.description}`);
|
|
340
339
|
lines.push(`priority: ${data.priority}`);
|
|
341
340
|
if (data.scope) {
|
|
342
341
|
lines.push(`scope: ${data.scope}`);
|
|
@@ -492,7 +491,6 @@ async function createIssue(input) {
|
|
|
492
491
|
const filename = `${issueNumber}-${slug}.md`;
|
|
493
492
|
const frontmatter = {
|
|
494
493
|
title: input.title,
|
|
495
|
-
description: input.description || input.title,
|
|
496
494
|
priority,
|
|
497
495
|
scope: scope || undefined,
|
|
498
496
|
type,
|
|
@@ -527,7 +525,6 @@ async function updateIssue(id, input) {
|
|
|
527
525
|
const updatedFrontmatter = {
|
|
528
526
|
...issue.frontmatter,
|
|
529
527
|
...input.title && { title: input.title },
|
|
530
|
-
...input.description && { description: input.description },
|
|
531
528
|
...input.priority && { priority: input.priority },
|
|
532
529
|
...input.scope && { scope: input.scope },
|
|
533
530
|
...input.type && { type: input.type },
|
|
@@ -1928,7 +1925,6 @@ Fuse.config = Config;
|
|
|
1928
1925
|
var FUSE_OPTIONS = {
|
|
1929
1926
|
keys: [
|
|
1930
1927
|
{ name: "frontmatter.title", weight: 1 },
|
|
1931
|
-
{ name: "frontmatter.description", weight: 0.7 },
|
|
1932
1928
|
{ name: "frontmatter.labels", weight: 0.5 },
|
|
1933
1929
|
{ name: "content", weight: 0.3 }
|
|
1934
1930
|
],
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "issy",
|
|
3
|
-
"version": "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.
|
|
39
|
-
"@miketromba/issy-core": "^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
|
}
|