@euraika-labs/pan-ui 0.5.0 → 0.5.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/.next/standalone/package.json +1 -1
- package/README.md +21 -0
- package/bin/pan-ui.mjs +36 -24
- package/hermes.version.json +0 -1
- package/package.json +1 -1
- /package/.next/static/{H9AHLxE6FxdsWBnoBgfVx → QDUlNq5WT0CAVn_0VMUf0}/_buildManifest.js +0 -0
- /package/.next/static/{H9AHLxE6FxdsWBnoBgfVx → QDUlNq5WT0CAVn_0VMUf0}/_ssgManifest.js +0 -0
package/README.md
CHANGED
|
@@ -225,6 +225,27 @@ npm run dev
|
|
|
225
225
|
| `npm run test` | Vitest unit tests |
|
|
226
226
|
| `npm run test:e2e` | Playwright end-to-end tests |
|
|
227
227
|
|
|
228
|
+
## Recent Changes
|
|
229
|
+
|
|
230
|
+
### [0.5.1] — 2026-04-08
|
|
231
|
+
- **Fixed** fork session crash (missing `)` in Python bridge)
|
|
232
|
+
- **Changed** health probe decoupled from binary — Docker and headless deployments report full health status
|
|
233
|
+
- **Added** Docker test image with bundled Hermes Agent, Docker test suites (37 + 28 assertions), full-stack functional test (33 assertions), `.dockerignore`
|
|
234
|
+
|
|
235
|
+
### [0.5.0] — 2026-04-08
|
|
236
|
+
- **Added** vendored Hermes fork (`hermes.version.json`), auto-install wizard, `sync-hermes` / `update` / `version` CLI commands, update banner
|
|
237
|
+
- **Changed** CLI refactored to subcommand structure, profile detection hardened
|
|
238
|
+
|
|
239
|
+
### [0.4.0] — 2026-04-07
|
|
240
|
+
- **Added** automatic gateway management — Pan auto-starts and monitors the Hermes gateway on boot
|
|
241
|
+
- **Changed** simplified to single-process deployment (no separate gateway service needed)
|
|
242
|
+
|
|
243
|
+
### [0.3.0] — 2026-04-07
|
|
244
|
+
- **Added** session source badges (CLI, Discord, Telegram, WhatsApp, …), source filter chips, resume button for external sessions
|
|
245
|
+
- **Fixed** skills Discover tab showing 0 skills, hydration mismatch
|
|
246
|
+
|
|
247
|
+
[Full changelog →](CHANGELOG.md)
|
|
248
|
+
|
|
228
249
|
## Security
|
|
229
250
|
|
|
230
251
|
See [SECURITY.md](SECURITY.md) for reporting vulnerabilities.
|
package/bin/pan-ui.mjs
CHANGED
|
@@ -80,7 +80,6 @@ const HERMES_FORK_REPO = HERMES_VERSION_CONFIG?.repo || 'https://github.com/Eura
|
|
|
80
80
|
const HERMES_PINNED_TAG = HERMES_VERSION_CONFIG?.tag || 'main';
|
|
81
81
|
const HERMES_PINNED_VERSION = HERMES_VERSION_CONFIG?.version || null;
|
|
82
82
|
const HERMES_MIN_VERSION = HERMES_VERSION_CONFIG?.minVersion || '0.7.0';
|
|
83
|
-
const HERMES_MAX_VERSION = HERMES_VERSION_CONFIG?.maxVersion || null;
|
|
84
83
|
// Fallback to upstream install script for manual instructions
|
|
85
84
|
const HERMES_INSTALL_URL = 'https://raw.githubusercontent.com/Euraika-Labs/hermes-agent/main/scripts/install.sh';
|
|
86
85
|
|
|
@@ -109,30 +108,24 @@ function parseHermesVersion(str) {
|
|
|
109
108
|
|
|
110
109
|
/**
|
|
111
110
|
* Check if the installed hermes version is compatible with Pan's requirements.
|
|
112
|
-
*
|
|
113
|
-
*
|
|
111
|
+
* - Below minVersion: incompatible (needs upgrade)
|
|
112
|
+
* - At or above minVersion: compatible (newer versions are fine)
|
|
113
|
+
* Returns { compatible, installed, required, needsUpgrade, message }.
|
|
114
114
|
*/
|
|
115
115
|
function checkHermesCompatibility(versionString) {
|
|
116
116
|
const installed = parseHermesVersion(versionString);
|
|
117
|
-
if (!installed) return { compatible: true, installed: null, message: null }; // can't check, assume ok
|
|
117
|
+
if (!installed) return { compatible: true, installed: null, needsUpgrade: false, message: null }; // can't check, assume ok
|
|
118
118
|
|
|
119
119
|
if (HERMES_MIN_VERSION && compareVersions(installed, HERMES_MIN_VERSION) < 0) {
|
|
120
120
|
return {
|
|
121
121
|
compatible: false,
|
|
122
122
|
installed,
|
|
123
123
|
required: `>=${HERMES_MIN_VERSION}`,
|
|
124
|
+
needsUpgrade: true,
|
|
124
125
|
message: `Hermes ${installed} is too old. Pan requires >=${HERMES_MIN_VERSION}.`
|
|
125
126
|
};
|
|
126
127
|
}
|
|
127
|
-
|
|
128
|
-
return {
|
|
129
|
-
compatible: false,
|
|
130
|
-
installed,
|
|
131
|
-
required: `<${HERMES_MAX_VERSION}`,
|
|
132
|
-
message: `Hermes ${installed} is too new (untested). Pan is tested with <${HERMES_MAX_VERSION}.`
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
return { compatible: true, installed, message: null };
|
|
128
|
+
return { compatible: true, installed, needsUpgrade: false, message: null };
|
|
136
129
|
}
|
|
137
130
|
|
|
138
131
|
function detectHermesHome() {
|
|
@@ -327,14 +320,20 @@ async function syncHermes(force = false) {
|
|
|
327
320
|
const hermesBin = detectHermesBinary();
|
|
328
321
|
if (hermesBin && !force) {
|
|
329
322
|
const version = detectHermesVersion(hermesBin);
|
|
330
|
-
const
|
|
331
|
-
if (
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
323
|
+
const parsed = parseHermesVersion(version);
|
|
324
|
+
if (parsed) {
|
|
325
|
+
if (parsed === HERMES_PINNED_VERSION) {
|
|
326
|
+
console.log(` ${green('✓')} Already on the pinned version (${parsed})`);
|
|
327
|
+
console.log(` ${dim('Use --force to reinstall anyway')}`);
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
if (compareVersions(parsed, HERMES_PINNED_VERSION) > 0) {
|
|
331
|
+
console.log(` ${green('✓')} Installed version (${parsed}) is newer than pinned (${HERMES_PINNED_VERSION}) — nothing to do`);
|
|
332
|
+
console.log(` ${dim('Use --force to downgrade to the pinned version')}`);
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
// Older than pinned — will upgrade
|
|
336
|
+
console.log(` ${dim('Current:')} ${yellow(parsed)} → ${green(HERMES_PINNED_VERSION)}`);
|
|
338
337
|
}
|
|
339
338
|
}
|
|
340
339
|
|
|
@@ -674,10 +673,23 @@ async function setup(forceWizard = false) {
|
|
|
674
673
|
|
|
675
674
|
// Check version compatibility with Pan's pinned range
|
|
676
675
|
const compat = checkHermesCompatibility(version);
|
|
677
|
-
if (!compat.compatible) {
|
|
676
|
+
if (!compat.compatible && compat.needsUpgrade) {
|
|
678
677
|
console.log(` ${yellow('⚠')} ${compat.message}`);
|
|
679
|
-
console.log(` ${dim(`Pan is tested with Hermes
|
|
680
|
-
console.log(
|
|
678
|
+
console.log(` ${dim(`Pan is tested with Hermes >=${HERMES_MIN_VERSION} (${HERMES_FORK_REPO} @ ${HERMES_PINNED_TAG})`)}`);
|
|
679
|
+
console.log('');
|
|
680
|
+
const doUpgrade = (await ask(` ${bold('Upgrade Hermes Agent now? [Y/n]:')} `)).trim().toLowerCase();
|
|
681
|
+
|
|
682
|
+
if (doUpgrade === '' || doUpgrade === 'y' || doUpgrade === 'yes') {
|
|
683
|
+
await syncHermes(true);
|
|
684
|
+
// Re-detect after upgrade
|
|
685
|
+
hermesBin = detectHermesBinary();
|
|
686
|
+
if (hermesBin) {
|
|
687
|
+
const newVersion = detectHermesVersion(hermesBin);
|
|
688
|
+
console.log(` ${green('✓')} Hermes upgraded: ${cyan(hermesBin)}${newVersion ? ` (${newVersion})` : ''}`);
|
|
689
|
+
}
|
|
690
|
+
} else {
|
|
691
|
+
console.log(` ${dim('Skipped. Some features may not work correctly with an older Hermes version.')}`);
|
|
692
|
+
}
|
|
681
693
|
}
|
|
682
694
|
} else {
|
|
683
695
|
console.log(` ${yellow('!')} Hermes Agent not found in PATH`);
|
package/hermes.version.json
CHANGED
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
"repo": "https://github.com/Euraika-Labs/hermes-agent.git",
|
|
8
8
|
"upstream": "https://github.com/NousResearch/hermes-agent.git",
|
|
9
9
|
"minVersion": "0.7.0",
|
|
10
|
-
"maxVersion": "0.8.0",
|
|
11
10
|
"pinnedAt": "2026-04-07T21:45:00Z",
|
|
12
11
|
"upstreamSha": "ca0459d109b9d23ce2b3c4c4cb6e8547a7eada3c"
|
|
13
12
|
},
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|