issy 0.5.7 → 0.7.0
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 +3 -2
- package/dist/cli.js +17 -23
- package/dist/main.js +11 -13
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -78,7 +78,7 @@ Once installed globally, you can run commands from your terminal:
|
|
|
78
78
|
issy # Start the web UI
|
|
79
79
|
issy list # List open issues (roadmap order)
|
|
80
80
|
issy next # Show next issue to work on
|
|
81
|
-
issy create --title "Bug" # Create issue
|
|
81
|
+
issy create --title "Bug" # Create an issue
|
|
82
82
|
```
|
|
83
83
|
|
|
84
84
|
### Repository installation
|
|
@@ -127,7 +127,9 @@ issy next # Show next issue to work on
|
|
|
127
127
|
issy search "auth" # Fuzzy search
|
|
128
128
|
issy read 0001 # View issue
|
|
129
129
|
issy create --title "Bug" --after 0002 # Create issue after #0002
|
|
130
|
+
issy create --title "Bug" --body "Details here" --last # Create with body content
|
|
130
131
|
issy update 0001 --before 0003 # Reposition in roadmap
|
|
132
|
+
issy update 0001 --body "New details" # Replace body content
|
|
131
133
|
issy close 0001 # Close issue
|
|
132
134
|
issy reopen 0001 --after 0004 # Reopen and place in roadmap
|
|
133
135
|
issy skill install # Install the AI skill
|
|
@@ -193,7 +195,6 @@ This moves your issues to `.issy/issues/` and assigns roadmap order to all open
|
|
|
193
195
|
```markdown
|
|
194
196
|
---
|
|
195
197
|
title: Fix login redirect
|
|
196
|
-
description: Users get stuck after OAuth callback
|
|
197
198
|
priority: high
|
|
198
199
|
scope: medium
|
|
199
200
|
type: bug
|
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,
|
|
@@ -490,12 +488,13 @@ async function createIssue(input) {
|
|
|
490
488
|
order: input.order || undefined,
|
|
491
489
|
created: formatDate()
|
|
492
490
|
};
|
|
493
|
-
const
|
|
494
|
-
|
|
491
|
+
const body = input.body ?? `
|
|
495
492
|
## Details
|
|
496
493
|
|
|
497
494
|
<!-- Add detailed description here -->
|
|
498
|
-
|
|
495
|
+
`;
|
|
496
|
+
const content = `${generateFrontmatter(frontmatter)}
|
|
497
|
+
${body}
|
|
499
498
|
`;
|
|
500
499
|
await writeFile(join(getIssuesDir(), filename), content);
|
|
501
500
|
return {
|
|
@@ -503,10 +502,7 @@ async function createIssue(input) {
|
|
|
503
502
|
filename,
|
|
504
503
|
frontmatter,
|
|
505
504
|
content: `
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
<!-- Add detailed description here -->
|
|
509
|
-
|
|
505
|
+
${body}
|
|
510
506
|
`
|
|
511
507
|
};
|
|
512
508
|
}
|
|
@@ -518,7 +514,6 @@ async function updateIssue(id, input) {
|
|
|
518
514
|
const updatedFrontmatter = {
|
|
519
515
|
...issue.frontmatter,
|
|
520
516
|
...input.title && { title: input.title },
|
|
521
|
-
...input.description && { description: input.description },
|
|
522
517
|
...input.priority && { priority: input.priority },
|
|
523
518
|
...input.scope && { scope: input.scope },
|
|
524
519
|
...input.type && { type: input.type },
|
|
@@ -529,12 +524,16 @@ async function updateIssue(id, input) {
|
|
|
529
524
|
...input.order && { order: input.order },
|
|
530
525
|
updated: formatDate()
|
|
531
526
|
};
|
|
527
|
+
const updatedContent = input.body !== undefined ? `
|
|
528
|
+
${input.body}
|
|
529
|
+
` : issue.content;
|
|
532
530
|
const content = `${generateFrontmatter(updatedFrontmatter)}
|
|
533
|
-
${
|
|
531
|
+
${updatedContent}`;
|
|
534
532
|
await writeFile(join(getIssuesDir(), issue.filename), content);
|
|
535
533
|
return {
|
|
536
534
|
...issue,
|
|
537
|
-
frontmatter: updatedFrontmatter
|
|
535
|
+
frontmatter: updatedFrontmatter,
|
|
536
|
+
content: updatedContent
|
|
538
537
|
};
|
|
539
538
|
}
|
|
540
539
|
async function closeIssue(id) {
|
|
@@ -1915,7 +1914,6 @@ Fuse.config = Config;
|
|
|
1915
1914
|
var FUSE_OPTIONS = {
|
|
1916
1915
|
keys: [
|
|
1917
1916
|
{ name: "frontmatter.title", weight: 1 },
|
|
1918
|
-
{ name: "frontmatter.description", weight: 0.7 },
|
|
1919
1917
|
{ name: "frontmatter.labels", weight: 0.5 },
|
|
1920
1918
|
{ name: "content", weight: 0.3 }
|
|
1921
1919
|
],
|
|
@@ -2229,7 +2227,6 @@ Create New Issue`);
|
|
|
2229
2227
|
});
|
|
2230
2228
|
};
|
|
2231
2229
|
options.title = await prompt("Title: ");
|
|
2232
|
-
options.description = await prompt("Description: ");
|
|
2233
2230
|
options.priority = await prompt("Priority (high/medium/low) [medium]: ");
|
|
2234
2231
|
options.scope = await prompt("Scope (small/medium/large) []: ");
|
|
2235
2232
|
options.type = await prompt("Type (bug/improvement) [improvement]: ");
|
|
@@ -2253,7 +2250,7 @@ Create New Issue`);
|
|
|
2253
2250
|
});
|
|
2254
2251
|
const input = {
|
|
2255
2252
|
title: options.title,
|
|
2256
|
-
|
|
2253
|
+
body: options.body,
|
|
2257
2254
|
priority: options.priority,
|
|
2258
2255
|
scope: options.scope,
|
|
2259
2256
|
type: options.type,
|
|
@@ -2283,7 +2280,7 @@ async function updateIssueCommand(id, options) {
|
|
|
2283
2280
|
}
|
|
2284
2281
|
const issue = await updateIssue(id, {
|
|
2285
2282
|
title: options.title,
|
|
2286
|
-
|
|
2283
|
+
body: options.body,
|
|
2287
2284
|
priority: options.priority,
|
|
2288
2285
|
scope: options.scope,
|
|
2289
2286
|
type: options.type,
|
|
@@ -2338,9 +2335,6 @@ async function nextIssueCommand() {
|
|
|
2338
2335
|
Next issue:`);
|
|
2339
2336
|
console.log(` ${"-".repeat(60)}`);
|
|
2340
2337
|
console.log(` #${issue.id} ${prioritySymbol(issue.frontmatter.priority)} ${typeSymbol(issue.frontmatter.type)} ${issue.frontmatter.title}`);
|
|
2341
|
-
if (issue.frontmatter.description !== issue.frontmatter.title) {
|
|
2342
|
-
console.log(` ${issue.frontmatter.description}`);
|
|
2343
|
-
}
|
|
2344
2338
|
console.log();
|
|
2345
2339
|
}
|
|
2346
2340
|
async function main() {
|
|
@@ -2374,7 +2368,7 @@ Commands:
|
|
|
2374
2368
|
|
|
2375
2369
|
create Create a new issue
|
|
2376
2370
|
--title, -t <t> Issue title
|
|
2377
|
-
--
|
|
2371
|
+
--body, -b <b> Markdown body content
|
|
2378
2372
|
--priority, -p <p> Priority (high, medium, low)
|
|
2379
2373
|
--scope <s> Scope (small, medium, large)
|
|
2380
2374
|
--type <t> Type (bug, improvement)
|
|
@@ -2386,7 +2380,7 @@ Commands:
|
|
|
2386
2380
|
|
|
2387
2381
|
update <id> Update an issue
|
|
2388
2382
|
--title, -t <t> New title
|
|
2389
|
-
--
|
|
2383
|
+
--body, -b <b> New markdown body content
|
|
2390
2384
|
--priority, -p <p> New priority
|
|
2391
2385
|
--scope <s> New scope
|
|
2392
2386
|
--type <t> New type
|
|
@@ -2471,7 +2465,7 @@ Examples:
|
|
|
2471
2465
|
args: args.slice(1),
|
|
2472
2466
|
options: {
|
|
2473
2467
|
title: { type: "string", short: "t" },
|
|
2474
|
-
|
|
2468
|
+
body: { type: "string", short: "b" },
|
|
2475
2469
|
priority: { type: "string", short: "p" },
|
|
2476
2470
|
scope: { type: "string" },
|
|
2477
2471
|
type: { type: "string" },
|
|
@@ -2496,7 +2490,7 @@ Examples:
|
|
|
2496
2490
|
args: args.slice(2),
|
|
2497
2491
|
options: {
|
|
2498
2492
|
title: { type: "string", short: "t" },
|
|
2499
|
-
|
|
2493
|
+
body: { type: "string", short: "b" },
|
|
2500
2494
|
priority: { type: "string", short: "p" },
|
|
2501
2495
|
scope: { type: "string" },
|
|
2502
2496
|
type: { type: "string" },
|
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,
|
|
@@ -501,12 +499,13 @@ async function createIssue(input) {
|
|
|
501
499
|
order: input.order || undefined,
|
|
502
500
|
created: formatDate()
|
|
503
501
|
};
|
|
504
|
-
const
|
|
505
|
-
|
|
502
|
+
const body = input.body ?? `
|
|
506
503
|
## Details
|
|
507
504
|
|
|
508
505
|
<!-- Add detailed description here -->
|
|
509
|
-
|
|
506
|
+
`;
|
|
507
|
+
const content = `${generateFrontmatter(frontmatter)}
|
|
508
|
+
${body}
|
|
510
509
|
`;
|
|
511
510
|
await writeFile(join(getIssuesDir(), filename), content);
|
|
512
511
|
return {
|
|
@@ -514,10 +513,7 @@ async function createIssue(input) {
|
|
|
514
513
|
filename,
|
|
515
514
|
frontmatter,
|
|
516
515
|
content: `
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
<!-- Add detailed description here -->
|
|
520
|
-
|
|
516
|
+
${body}
|
|
521
517
|
`
|
|
522
518
|
};
|
|
523
519
|
}
|
|
@@ -529,7 +525,6 @@ async function updateIssue(id, input) {
|
|
|
529
525
|
const updatedFrontmatter = {
|
|
530
526
|
...issue.frontmatter,
|
|
531
527
|
...input.title && { title: input.title },
|
|
532
|
-
...input.description && { description: input.description },
|
|
533
528
|
...input.priority && { priority: input.priority },
|
|
534
529
|
...input.scope && { scope: input.scope },
|
|
535
530
|
...input.type && { type: input.type },
|
|
@@ -540,12 +535,16 @@ async function updateIssue(id, input) {
|
|
|
540
535
|
...input.order && { order: input.order },
|
|
541
536
|
updated: formatDate()
|
|
542
537
|
};
|
|
538
|
+
const updatedContent = input.body !== undefined ? `
|
|
539
|
+
${input.body}
|
|
540
|
+
` : issue.content;
|
|
543
541
|
const content = `${generateFrontmatter(updatedFrontmatter)}
|
|
544
|
-
${
|
|
542
|
+
${updatedContent}`;
|
|
545
543
|
await writeFile(join(getIssuesDir(), issue.filename), content);
|
|
546
544
|
return {
|
|
547
545
|
...issue,
|
|
548
|
-
frontmatter: updatedFrontmatter
|
|
546
|
+
frontmatter: updatedFrontmatter,
|
|
547
|
+
content: updatedContent
|
|
549
548
|
};
|
|
550
549
|
}
|
|
551
550
|
async function closeIssue(id) {
|
|
@@ -1926,7 +1925,6 @@ Fuse.config = Config;
|
|
|
1926
1925
|
var FUSE_OPTIONS = {
|
|
1927
1926
|
keys: [
|
|
1928
1927
|
{ name: "frontmatter.title", weight: 1 },
|
|
1929
|
-
{ name: "frontmatter.description", weight: 0.7 },
|
|
1930
1928
|
{ name: "frontmatter.labels", weight: 0.5 },
|
|
1931
1929
|
{ name: "content", weight: 0.3 }
|
|
1932
1930
|
],
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "issy",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
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.0",
|
|
39
|
+
"@miketromba/issy-core": "^0.7.0",
|
|
40
40
|
"update-notifier": "^7.3.1"
|
|
41
41
|
}
|
|
42
42
|
}
|