slashvibe-mcp 0.8.7 → 0.8.8

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/config.js CHANGED
@@ -160,11 +160,26 @@ function getOneLiner() {
160
160
  }
161
161
 
162
162
  function isInitialized() {
163
- // Check session first, then shared config
163
+ // A VALID CREDENTIAL IS INITIALISATION. Asking the file was the bug.
164
+ //
165
+ // This checked only for a stored handle, so a config that held a perfectly good token
166
+ // and no `username` reported "not initialized" forever. Tools behind requireInit()
167
+ // refused with "Run `vibe init` first" while presence — which resolves identity from
168
+ // the credential — worked in the same response. One reply, two answers about whether
169
+ // you are signed in.
170
+ //
171
+ // It is reachable by accident: save() writes `username: config.handle ||
172
+ // config.username || existing.username`, and when all three are absent that value is
173
+ // `undefined`, which JSON.stringify DROPS. So the key does not go null, it disappears,
174
+ // and nothing puts it back. Observed on this machine 2026-08-01.
175
+ //
176
+ // The credential is the identity (#107). If one names us, we are initialised — and if
177
+ // one does not, no remembered string should pretend otherwise.
178
+ if (getHandle()) return true;
164
179
  const sessionHandle = getSessionHandle();
165
180
  if (sessionHandle) return true;
166
181
  const config = load();
167
- return config.handle && config.handle.length > 0;
182
+ return !!(config.handle && config.handle.length > 0);
168
183
  }
169
184
 
170
185
  // Session management - unique ID per Claude Code instance
@@ -302,10 +317,21 @@ function saveAuthToken(token) {
302
317
  authMethod: 'github' // Track that this is GitHub OAuth
303
318
  });
304
319
 
305
- // Also save to shared config for persistence across MCP restarts
320
+ // Also save to shared config for persistence across MCP restarts.
321
+ //
322
+ // The handle rides WITH the token. Persisting a credential and no identity is how a
323
+ // config comes to hold a valid token under no name — and save() cannot repair it,
324
+ // because it writes `username: undefined` in that case and JSON.stringify drops the
325
+ // key rather than storing null. The state is invisible and permanent.
306
326
  const cfg = load();
307
327
  cfg.authToken = token;
308
328
  cfg.authMethod = 'github';
329
+ if (!cfg.handle) {
330
+ // Derive it from the credential itself rather than leaving the file anonymous.
331
+ try {
332
+ cfg.handle = require('./auth-store').inspectToken(token).handle || cfg.handle;
333
+ } catch (e) { /* auth-store unavailable at early boot — the token still saves */ }
334
+ }
309
335
  save(cfg);
310
336
  }
311
337
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "slashvibe-mcp",
3
- "version": "0.8.7",
3
+ "version": "0.8.8",
4
4
  "mcpName": "io.github.vibecodinginc/vibe",
5
5
  "description": "Presence + messaging for terminal coding agents (Claude Code, Codex, Cursor) — the /vibe kernel",
6
6
  "main": "index.js",
package/version.json CHANGED
@@ -1,12 +1,11 @@
1
1
  {
2
- "version": "0.8.7",
2
+ "version": "0.8.8",
3
3
  "updated": "2026-08-01",
4
- "changelog": "Three ways /vibe told you something untrue, all on the path a new person walks. Installing failed with \"Could not reach slashvibe.dev\" whenever a cache was over quota — the site was serving fine, and a subsystem setup never uses was refusing you the product. Re-running setup on a machine whose login had expired answered \"/vibe is configured\" and quit, so the one command for fixing it said there was nothing to fix. And asking who was around while signed out reported an empty room instead of saying you were signed out, which is the worst thing this product can get wrong. Logins are now 30 days everywhere; new accounts had been getting one-hour ones.",
4
+ "changelog": "A credential that names you is being signed in. A config could end up holding a perfectly good token and no username — and once that happened nothing put it back — so `vibe dm` answered \"Not initialized, run vibe init\" in the same breath as the footer showing who was online. One reply, two answers. Signing in now records whose token it is, so the file can never go anonymous.",
5
5
  "features": [
6
- "A degraded cache no longer blocks installing",
7
- "An expired login says so, names the account, and signs you back in",
8
- "Signed out reads as signed out, not as an empty room",
9
- "One login lifetime — 30 days, including for brand-new accounts"
6
+ "A valid credential counts as being signed in, no matter what the file says",
7
+ "Signing in records the handle with the token, so it cannot be lost",
8
+ "Sign-in fails with a clear message instead of a crash page when storage is down"
10
9
  ],
11
10
  "deprecated": [],
12
11
  "breaking": false,