deuk-agent-rule 2.4.2 → 2.4.3
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/CHANGELOG.ko.md +6 -0
- package/CHANGELOG.md +68 -61
- package/package.json +1 -1
- package/scripts/cli-ticket-logic.mjs +13 -9
- package/scripts/cli-utils.mjs +1 -1
package/CHANGELOG.ko.md
CHANGED
|
@@ -6,6 +6,12 @@
|
|
|
6
6
|
|
|
7
7
|
형식은 [Keep a Changelog](https://keepachangelog.com/ko/1.1.0/)를 기반으로 하며, 이 프로젝트는 [유의적 버전(Semantic Versioning)](https://semver.org/spec/v2.0.0.html)을 준수합니다.
|
|
8
8
|
|
|
9
|
+
## [2.4.3] - 2026-04-18
|
|
10
|
+
|
|
11
|
+
### 변경됨 (Changed)
|
|
12
|
+
- **ticket:** 티켓 ID 포맷을 `NNN-topic-hostname` (예: `001-add-feature-joy-nucb`)으로 변경. 레거시 `ticket_NNN_hostname_topic` 형식 대체
|
|
13
|
+
- **ticket:** INDEX.json 파싱 시 기존 포맷과 신규 포맷 모두 역호환 지원
|
|
14
|
+
|
|
9
15
|
## [2.4.2] - 2026-04-18
|
|
10
16
|
|
|
11
17
|
### 수정됨 (Fixed)
|
package/CHANGELOG.md
CHANGED
|
@@ -4,67 +4,74 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
-
## [2.4.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
- **
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
- **
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
- **
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
- **
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
- **
|
|
59
|
-
- **
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
|
|
7
|
+
## [2.4.3] - 2026-04-18
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- **ticket:** new ID format `NNN-topic-hostname` (e.g. `001-add-feature-joy-nucb`) replacing legacy `ticket_NNN_hostname_topic` format
|
|
12
|
+
- **ticket:** backward-compatible parsing supports both old and new formats in INDEX.json
|
|
13
|
+
|
|
14
|
+
## [2.4.2] - 2026-04-18
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- **cli:** add update notifier for checking latest npm version
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- **ticket:** resolve discrepancy between filename and ticket ID generation
|
|
25
|
+
- **ticket:** strictly enforce 8-character limit on hostname slug
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
|
|
30
|
+
- add reasons for global installation
|
|
31
|
+
- **changelog:** sync korean changelog with v2.4.0
|
|
32
|
+
|
|
33
|
+
## [2.4.1] - 2026-04-18
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
### Added
|
|
37
|
+
|
|
38
|
+
- **cli:** add update notifier for checking latest npm version
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
### Fixed
|
|
42
|
+
|
|
43
|
+
- **ticket:** strictly enforce 8-character limit on hostname slug
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
### Changed
|
|
47
|
+
|
|
48
|
+
- add reasons for global installation
|
|
49
|
+
- **changelog:** sync korean changelog with v2.4.0
|
|
50
|
+
|
|
51
|
+
## [2.4.0] - 2026-04-18
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
### Added
|
|
55
|
+
|
|
56
|
+
- **init:** add obsolete template cleanup for cleaner migration
|
|
57
|
+
- **rules:** add TICKET VERIFICATION RULE to original agents.md
|
|
58
|
+
- **ticket:** add priority property to tickets
|
|
59
|
+
- **ticket:** add sequential hostname-aware ticket naming (NNN-hostname-topic)
|
|
60
|
+
- **ticket:** auto-sequence numbering and hostname-based naming (limit 8 chars)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
### Fixed
|
|
64
|
+
|
|
65
|
+
- **rules:** force use of local latest deuk-agent-rule to avoid npx cache issues
|
|
66
|
+
- **scripts:** correct log output for OSS repository url example
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
### Changed
|
|
70
|
+
|
|
71
|
+
- add Step 4 (Ticket Verification) to README files
|
|
72
|
+
- clarify global installation and OS-specific permissions
|
|
73
|
+
- enforce ticket reference in implementation artifacts
|
|
74
|
+
|
|
68
75
|
## [2.3.2] - 2026-04-17
|
|
69
76
|
|
|
70
77
|
|
package/package.json
CHANGED
|
@@ -190,7 +190,7 @@ export function performUpgradeMigration(cwd, opts = {}) {
|
|
|
190
190
|
const project = meta.project || detectProjectFromBody(content);
|
|
191
191
|
|
|
192
192
|
const newMeta = {
|
|
193
|
-
id: meta.id || `
|
|
193
|
+
id: meta.id || `000-legacy-${statSync(abs).mtimeMs}`,
|
|
194
194
|
title,
|
|
195
195
|
status,
|
|
196
196
|
submodule: meta.submodule || (content.includes("DeukPack") ? "DeukPack" : ""),
|
|
@@ -486,20 +486,23 @@ export function getHostnameSlug() {
|
|
|
486
486
|
|
|
487
487
|
/**
|
|
488
488
|
* Computes next sequential 3-digit ticket number by scanning all entries
|
|
489
|
-
* in the current INDEX.json
|
|
490
|
-
*
|
|
491
|
-
* but the number is always calculated from the current local INDEX state.
|
|
489
|
+
* in the current INDEX.json. Parses both legacy (`ticket_NNN_*`) and
|
|
490
|
+
* new (`NNN-topic-hostname`) formats for backward compatibility.
|
|
492
491
|
*
|
|
493
492
|
* @param {object[]} existingEntries - entries array from INDEX.json
|
|
494
493
|
* @returns {{ num: number, hostname: string }}
|
|
495
494
|
*/
|
|
496
495
|
export function computeNextTicketNumber(existingEntries) {
|
|
497
496
|
const hostname = getHostnameSlug();
|
|
498
|
-
//
|
|
499
|
-
const
|
|
497
|
+
// Legacy: ticket_NNN_* | New: NNN-*
|
|
498
|
+
const legacyRe = /^ticket_(\d{3,})_/;
|
|
499
|
+
const newRe = /^(\d{3,})-/;
|
|
500
500
|
let max = 0;
|
|
501
501
|
for (const e of (existingEntries || [])) {
|
|
502
|
-
const
|
|
502
|
+
const id = String(e.id || '');
|
|
503
|
+
const mLegacy = id.match(legacyRe);
|
|
504
|
+
const mNew = id.match(newRe);
|
|
505
|
+
const m = mLegacy || mNew;
|
|
503
506
|
if (m) {
|
|
504
507
|
const n = parseInt(m[1], 10);
|
|
505
508
|
if (n > max) max = n;
|
|
@@ -510,7 +513,8 @@ export function computeNextTicketNumber(existingEntries) {
|
|
|
510
513
|
|
|
511
514
|
/**
|
|
512
515
|
* Sequential hostname-aware ticket ID.
|
|
513
|
-
* Format:
|
|
516
|
+
* Format: NNN-<topic-slug>-<hostname>
|
|
517
|
+
* Example: 001-add-feature-joy-nucb
|
|
514
518
|
* NNN starts at 001 and increments per local INDEX.json state.
|
|
515
519
|
*
|
|
516
520
|
* @param {string} topicSlug
|
|
@@ -520,7 +524,7 @@ export function generateTicketId(topicSlug, existingEntries) {
|
|
|
520
524
|
const { num, hostname } = computeNextTicketNumber(existingEntries);
|
|
521
525
|
const numStr = String(num).padStart(3, '0');
|
|
522
526
|
const slug = toSlug(topicSlug || 'ticket').slice(0, 32);
|
|
523
|
-
return
|
|
527
|
+
return `${numStr}-${slug}-${hostname}`;
|
|
524
528
|
}
|
|
525
529
|
|
|
526
530
|
/**
|
package/scripts/cli-utils.mjs
CHANGED
|
@@ -73,7 +73,7 @@ export function formatTimestampForFile(d = new Date()) {
|
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
export function makeEntryId() {
|
|
76
|
-
return `
|
|
76
|
+
return `000-fallback-${Date.now().toString(36)}`;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
export function detectProjectFromBody(body) {
|