clementine-agent 1.18.158 → 1.18.159

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.
@@ -1762,11 +1762,10 @@ export async function cmdDashboard(opts) {
1762
1762
  if (process.env.NO_BROWSER !== '1') {
1763
1763
  setTimeout(() => {
1764
1764
  try {
1765
- const tokenPath = path.join(BASE_DIR, '.dashboard-token');
1766
- const token = existsSync(tokenPath) ? readFileSync(tokenPath, 'utf-8').trim() : '';
1767
- if (!token)
1768
- return;
1769
- const url = `http://localhost:${childPort}/?token=${token}`;
1765
+ // 1.18.159 open the bare URL. Token comes from the meta tag
1766
+ // in the served HTML (persistent since 1.18.152). Bare URL also
1767
+ // sidesteps Chrome's per-query-string HTML cache entries.
1768
+ const url = `http://localhost:${childPort}`;
1770
1769
  const platform = process.platform;
1771
1770
  const cmd = platform === 'darwin' ? 'open'
1772
1771
  : platform === 'win32' ? 'start'
package/dist/cli/index.js CHANGED
@@ -497,25 +497,23 @@ async function relaunchDashboardDetached(opts = {}) {
497
497
  // print the URL. If it never binds, the URL still prints (user
498
498
  // can retry) but we surface the failure in logs.
499
499
  await new Promise(resolve => setTimeout(resolve, 3000));
500
- let token = '';
501
- try {
502
- const tokenPath = path.join(BASE_DIR, '.dashboard-token');
503
- if (existsSync(tokenPath))
504
- token = readFileSync(tokenPath, 'utf-8').trim();
505
- }
506
- catch { /* token may not be ready yet */ }
507
- if (token) {
508
- const url = `http://localhost:3030/?token=${token}`;
509
- console.log(` Dashboard relaunched: ${url}`);
510
- // 1.18.147 auto-open the browser by default. Restart/update
511
- // already imply user wants the dashboard back; making them copy a
512
- // URL was a UX papercut.
513
- if (opts.open !== false)
514
- openInBrowser(url);
515
- }
516
- else {
517
- console.log(' Dashboard relaunched (token not ready — check `clementine status`).');
518
- }
500
+ // 1.18.159 — print the bare URL, not the `?token=...` flavor.
501
+ // Token is delivered via meta tag in the served HTML (since 1.18.152
502
+ // when token persistence shipped). The token-in-URL flavor was a
503
+ // pre-1.18.152 habit and turned into a footgun: Chrome caches HTML
504
+ // by full URL including query string, so a stale `?token=ABC` cache
505
+ // entry survives across redeploys while bare `localhost:3030` pulls
506
+ // fresh HTML. Restart printing the bare URL also nudges users to
507
+ // bookmark THAT (which keeps working forever) instead of the
508
+ // token-flavored one (which would silently OK after a 1.18.152+
509
+ // restart but caches indefinitely on 1.18.151- installs).
510
+ const url = 'http://localhost:3030';
511
+ console.log(` Dashboard relaunched: ${url}`);
512
+ // 1.18.147 auto-open the browser by default. Restart/update
513
+ // already imply user wants the dashboard back; making them copy a
514
+ // URL was a UX papercut.
515
+ if (opts.open !== false)
516
+ openInBrowser(url);
519
517
  }
520
518
  catch {
521
519
  console.log(' Could not relaunch dashboard — run: clementine dashboard');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clementine-agent",
3
- "version": "1.18.158",
3
+ "version": "1.18.159",
4
4
  "description": "Clementine — Personal AI Assistant (TypeScript)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",