helixevo 0.2.30 → 0.2.31

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.md ADDED
@@ -0,0 +1,133 @@
1
+ # Changelog
2
+
3
+ All notable changes to HelixEvo are documented here.
4
+
5
+ ## [0.2.30] - 2026-03-23
6
+
7
+ ### Fixed
8
+ - Duplicate key error on Evolution page when iteration IDs collide
9
+ - Update reload timing: 12s countdown + polling for reliable auto-reload
10
+
11
+ ## [0.2.29] - 2026-03-23
12
+
13
+ ### Changed
14
+ - Auto-reload dashboard after update: touches next.config.mjs to trigger Next.js dev mode restart
15
+ - No more manual Ctrl+C + restart needed after clicking "Update Now"
16
+ - Shows countdown timer with progress bar during recompilation
17
+
18
+ ## [0.2.28] - 2026-03-23
19
+
20
+ ### Added — Skill Network Interconnection
21
+ - Graph view nodes are clickable — opens detail panel
22
+ - Detail panel persists across tab switches
23
+ - CoEvolution view fully clickable (parents, children, enhancement pairs, conflict pairs)
24
+ - "Ready to specialize" button runs `helixevo specialize` for that project
25
+ - Cross-link navigation in detail panel (View in Graph, View in Skills, Co-Evolution)
26
+ - Connection badges (inherits, enhances, conflicts) clickable to navigate to connected skills
27
+
28
+ ## [0.2.26] - 2026-03-23
29
+
30
+ ### Added — Graph-Aware Evolution
31
+ - Evolve command reads skill graph and uses relationships for smarter proposals
32
+ - Cluster prompt receives graph context (edges, clusters, relationships)
33
+ - Proposer prompt receives related skill summaries and hierarchical structure guidance
34
+ - Propagation suggestions: LLM can recommend applying fixes to related skills
35
+ - Graph auto-updates after evolution (nodes get new generation/score)
36
+ - ProposalOutput type extended with `propagationSuggestions` field
37
+
38
+ ## [0.2.25] - 2026-03-23
39
+
40
+ ### Changed
41
+ - Real-time streaming output for CLI commands via Server-Sent Events (SSE)
42
+ - CLI output appears line-by-line as each step processes
43
+ - Auto-scroll output panel to bottom as new lines arrive
44
+
45
+ ## [0.2.24] - 2026-03-23
46
+
47
+ ### Changed
48
+ - All dashboard elements clickable: stat cards link to relevant pages
49
+ - Flow diagram arrows wrap properly (no more clipping)
50
+ - Pareto Frontier card links to /frontier, Evolution card links to /evolution
51
+
52
+ ## [0.2.23] - 2026-03-23
53
+
54
+ ### Added
55
+ - Quick Action cards with visual flow diagrams (input → process → output)
56
+ - Research tab rebuilt: pipeline visualization, "Run Research" button, streaming output
57
+ - Context-aware labels on Quick Actions (e.g., "Analyze 10 skills", "Use 7 corrections")
58
+
59
+ ## [0.2.22] - 2026-03-23
60
+
61
+ ### Added
62
+ - Descriptions under each Quick Action button explaining what it does
63
+ - Unresolved Corrections section on Overview page showing pending corrections
64
+ - Evolve button shows pending count: "Evolve (7)"
65
+
66
+ ## [0.2.20] - 2026-03-22
67
+
68
+ ### Changed — Warm Premium Theme
69
+ - Complete redesign with warm palette (#f4f2ee backgrounds, #ddd9d1 borders)
70
+ - Light sidebar matching warm theme (replaced dark sidebar)
71
+ - Teal accent color (#0d7c5f) as primary action color
72
+ - Fixed network page stat badges covering page title
73
+ - Tokyo Night palette for code blocks
74
+
75
+ ## [0.2.16] - 2026-03-22
76
+
77
+ ### Added
78
+ - Stop button for running commands (red "Stop" button during execution)
79
+ - /api/run rewritten with spawn (async, killable) instead of execSync (blocking)
80
+
81
+ ## [0.2.13] - 2026-03-22
82
+
83
+ ### Added
84
+ - Quick Actions bar on Overview page (Organize Skills, Generalize, Evolve, Health Check, Optimize, Research)
85
+ - Commands tab with full reference for all 13 CLI commands
86
+ - /api/run endpoint with whitelisted CLI commands
87
+ - Typical workflow pipeline visualization
88
+
89
+ ## [0.2.12] - 2026-03-22
90
+
91
+ ### Added
92
+ - One-click "Update Now" button on dashboard
93
+ - /api/upgrade endpoint that runs npm install -g helixevo@latest
94
+
95
+ ## [0.2.11] - 2026-03-22
96
+
97
+ ### Changed
98
+ - Dashboard auto-discovers skills when launching (`helixevo dashboard`)
99
+ - Generates skill-graph.json if missing so dashboard shows skills immediately
100
+
101
+ ## [0.2.10] - 2026-03-22
102
+
103
+ ### Fixed
104
+ - Dashboard version display: reads from .helixevo-version marker, env var, or .env.local
105
+ - CLI passes HELIXEVO_VERSION env var when spawning dashboard
106
+
107
+ ## [0.2.9] - 2026-03-22
108
+
109
+ ### Added
110
+ - Dynamic version display: CLI, dashboard sidebar, and guide page all read from package.json
111
+ - Postinstall script shows version + quick start guide after npm install
112
+ - CLI update check with colored banner (cached 24h, non-blocking)
113
+ - Dashboard UpdateBanner component (bottom-right toast)
114
+ - Skill graph generation during init for immediate dashboard data
115
+ - Version-based dashboard update detection (replaces unreliable mtime comparison)
116
+
117
+ ## [0.2.8] - 2026-03-22
118
+
119
+ ### Changed
120
+ - Renamed "golden cases" to "skill tests" across entire codebase
121
+
122
+ ## [0.2.0] - 2026-03-22
123
+
124
+ ### Added — Initial Release
125
+ - Core evolution pipeline: capture → cluster → propose → replay → judge → regress → canary → frontier
126
+ - 3 independent LLM judges (Task Completion, Correction Alignment, Side-Effect Check)
127
+ - Pareto frontier with top-K optimal skill configurations
128
+ - Proactive web research (`helixevo research`)
129
+ - Skill network graph with Mermaid + terminal TUI
130
+ - Next.js dashboard with 6 tabs (Overview, Network, Evolution, Research, Frontier, Guide)
131
+ - `helixevo watch` — always-on learning mode
132
+ - Network health scoring and auto-generalization
133
+ - 13 CLI commands
@@ -0,0 +1,143 @@
1
+ import { readFileSync, existsSync } from 'fs'
2
+ import { join } from 'path'
3
+ import { homedir } from 'os'
4
+ import { VERSION } from '@/lib/version'
5
+
6
+ export const dynamic = 'force-dynamic'
7
+
8
+ function findChangelog(): string {
9
+ const candidates = [
10
+ join(process.cwd(), 'CHANGELOG.md'),
11
+ join(homedir(), 'Documents', 'GitHub', 'helixevo', 'CHANGELOG.md'),
12
+ ]
13
+
14
+ // Also check npm global install
15
+ try {
16
+ const { execSync } = require('child_process')
17
+ const globalPrefix = execSync('npm prefix -g', { encoding: 'utf-8' }).trim()
18
+ candidates.push(join(globalPrefix, 'lib', 'node_modules', 'helixevo', 'CHANGELOG.md'))
19
+ candidates.push(join(globalPrefix, 'node_modules', 'helixevo', 'CHANGELOG.md'))
20
+ } catch {}
21
+
22
+ for (const p of candidates) {
23
+ if (existsSync(p)) {
24
+ return readFileSync(p, 'utf-8')
25
+ }
26
+ }
27
+ return ''
28
+ }
29
+
30
+ interface ChangelogEntry {
31
+ version: string
32
+ date: string
33
+ sections: { title: string; items: string[] }[]
34
+ }
35
+
36
+ function parseChangelog(md: string): ChangelogEntry[] {
37
+ const entries: ChangelogEntry[] = []
38
+ const lines = md.split('\n')
39
+ let current: ChangelogEntry | null = null
40
+ let currentSection: { title: string; items: string[] } | null = null
41
+
42
+ for (const line of lines) {
43
+ const versionMatch = line.match(/^## \[(\d+\.\d+\.\d+)\]\s*-?\s*(.*)/)
44
+ if (versionMatch) {
45
+ if (current) entries.push(current)
46
+ current = { version: versionMatch[1], date: versionMatch[2].trim(), sections: [] }
47
+ currentSection = null
48
+ continue
49
+ }
50
+ const sectionMatch = line.match(/^### (.+)/)
51
+ if (sectionMatch && current) {
52
+ currentSection = { title: sectionMatch[1], items: [] }
53
+ current.sections.push(currentSection)
54
+ continue
55
+ }
56
+ if (line.startsWith('- ') && current) {
57
+ if (!currentSection) {
58
+ currentSection = { title: 'Changes', items: [] }
59
+ current.sections.push(currentSection)
60
+ }
61
+ currentSection.items.push(line.slice(2))
62
+ }
63
+ }
64
+ if (current) entries.push(current)
65
+ return entries
66
+ }
67
+
68
+ export default function ChangelogPage() {
69
+ const md = findChangelog()
70
+ const entries = parseChangelog(md)
71
+
72
+ return (
73
+ <div>
74
+ <div className="page-header">
75
+ <h1 className="page-title">Changelog</h1>
76
+ <p className="page-desc">
77
+ What changed in each version of HelixEvo — currently on v{VERSION}
78
+ </p>
79
+ </div>
80
+
81
+ {entries.length === 0 ? (
82
+ <div className="card">
83
+ <div className="empty-state">
84
+ <div className="empty-state-title">No changelog found</div>
85
+ <div className="empty-state-desc">
86
+ CHANGELOG.md was not found in the package installation.
87
+ </div>
88
+ </div>
89
+ </div>
90
+ ) : (
91
+ <div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>
92
+ {entries.map((entry, i) => (
93
+ <div key={entry.version} className="card" style={{
94
+ borderLeft: i === 0 ? '3px solid var(--green)' : undefined,
95
+ }}>
96
+ <div className="card-body">
97
+ <div style={{ display: 'flex', alignItems: 'center', gap: 10, marginBottom: 12 }}>
98
+ <span style={{
99
+ fontSize: 15, fontWeight: 700, color: 'var(--text)',
100
+ fontFamily: 'var(--font-mono)',
101
+ }}>
102
+ v{entry.version}
103
+ </span>
104
+ {i === 0 && (
105
+ <span className="badge badge-green">latest</span>
106
+ )}
107
+ {entry.version === VERSION && (
108
+ <span className="badge badge-blue">installed</span>
109
+ )}
110
+ {entry.date && (
111
+ <span style={{ fontSize: 11, color: 'var(--text-muted)' }}>{entry.date}</span>
112
+ )}
113
+ </div>
114
+
115
+ {entry.sections.map((section, j) => (
116
+ <div key={j} style={{ marginBottom: j < entry.sections.length - 1 ? 12 : 0 }}>
117
+ <div style={{
118
+ fontSize: 10, fontWeight: 700, color: 'var(--text-muted)',
119
+ textTransform: 'uppercase', letterSpacing: 1.2, marginBottom: 6,
120
+ }}>
121
+ {section.title}
122
+ </div>
123
+ <div style={{ display: 'flex', flexDirection: 'column', gap: 4 }}>
124
+ {section.items.map((item, k) => (
125
+ <div key={k} style={{
126
+ fontSize: 12, color: 'var(--text-secondary)', lineHeight: 1.5,
127
+ paddingLeft: 12,
128
+ borderLeft: '2px solid var(--border)',
129
+ }}>
130
+ {item}
131
+ </div>
132
+ ))}
133
+ </div>
134
+ </div>
135
+ ))}
136
+ </div>
137
+ </div>
138
+ ))}
139
+ </div>
140
+ )}
141
+ </div>
142
+ )
143
+ }
@@ -67,7 +67,9 @@ export default function RootLayout({ children }: { children: React.ReactNode })
67
67
  <div style={{ width: 6, height: 6, borderRadius: '50%', background: 'var(--green)' }} />
68
68
  <span>System Active</span>
69
69
  </div>
70
- <code style={{ fontSize: 10, background: 'var(--bg-section)', padding: '2px 7px', borderRadius: 4 }}>v{VERSION}</code>
70
+ <Link href="/changelog" style={{ textDecoration: 'none' }}>
71
+ <code style={{ fontSize: 10, background: 'var(--bg-section)', padding: '2px 7px', borderRadius: 4, cursor: 'pointer', color: 'var(--text-dim)' }} title="View changelog">v{VERSION}</code>
72
+ </Link>
71
73
  </div>
72
74
  </nav>
73
75
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "helixevo",
3
- "version": "0.2.30",
3
+ "version": "0.2.31",
4
4
  "description": "Self-evolving skill ecosystem for AI agents. Skills and projects co-evolve through multi-judge evaluation and a Pareto frontier.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -16,7 +16,8 @@
16
16
  "dashboard/next-env.d.ts",
17
17
  "dashboard/next.config.mjs",
18
18
  "README.md",
19
- "LICENSE"
19
+ "LICENSE",
20
+ "CHANGELOG.md"
20
21
  ],
21
22
  "scripts": {
22
23
  "build": "bun build src/cli.ts --outdir dist --target node && bun build src/postinstall.ts --outdir dist --target node --entry-naming postinstall.js",