slashvibe-mcp 0.5.22 → 0.5.24

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/index.js CHANGED
@@ -217,7 +217,9 @@ async function getPresenceFooter() {
217
217
  // when it will actually resolve. See ROOM-PRESENCE-BRIDGE.md.
218
218
  const liveRooms = others.filter(u => u.isLive && u.broadcastRoom);
219
219
  if (liveRooms.length > 0) {
220
- const base = process.env.VIBE_ROOM_URL_BASE; // e.g. https://vibeconferencing.com/
220
+ // Confirmed room-join format (coltrane lane, Jul 9): /room/<slug> serves
221
+ // 200; env override kept for other room backends.
222
+ const base = process.env.VIBE_ROOM_URL_BASE || 'https://vibeconferencing.com/room/';
221
223
  footer += '\n';
222
224
  footer += liveRooms.slice(0, 3).map(u => {
223
225
  const where = `🔴 @${u.handle} live in the ${u.broadcastRoom}`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "slashvibe-mcp",
3
- "version": "0.5.22",
3
+ "version": "0.5.24",
4
4
  "mcpName": "io.github.vibecodinginc/vibe",
5
5
  "description": "Social layer for Claude Code - DMs, presence, Matrix multiplayer rooms, and connection between AI-assisted developers",
6
6
  "main": "index.js",
package/store/api.js CHANGED
@@ -1214,7 +1214,17 @@ async function sendArtifactCard(to, card) {
1214
1214
  }
1215
1215
  }
1216
1216
 
1217
+ // The "slower" primitive — set your one notification pace (normal|slower|quiet).
1218
+ async function setNotificationPace(pace) {
1219
+ try {
1220
+ return await request('POST', '/api/settings/notifications', { action: 'set_pace', pace });
1221
+ } catch (e) {
1222
+ return { success: false, error: e.message };
1223
+ }
1224
+ }
1225
+
1217
1226
  module.exports = {
1227
+ setNotificationPace,
1218
1228
  // Session
1219
1229
  registerSession,
1220
1230
  setSessionId,
package/tools/status.js CHANGED
@@ -29,13 +29,13 @@ const SPECIAL_MODES = ['guided', 'freeform'];
29
29
 
30
30
  const definition = {
31
31
  name: 'vibe_status',
32
- description: 'Set your mood/status. Options: shipping, thinking, afk, debugging, pairing, deep, celebrating, struggling, away, back, clear',
32
+ description: 'Set your mood/status, or your notification pace. Mood: shipping, thinking, afk, debugging, pairing, deep, celebrating, struggling, away, back, clear. Pace: slower (only ping when away), quiet (no pushes), normal.',
33
33
  inputSchema: {
34
34
  type: 'object',
35
35
  properties: {
36
36
  mood: {
37
37
  type: 'string',
38
- description: 'Your mood (shipping, thinking, afk, debugging, pairing, deep, celebrating, struggling, away, back, clear)'
38
+ description: 'A mood (shipping, thinking, afk, debugging, pairing, deep, celebrating, struggling, away, back, clear) OR a notification pace (slower, quiet, normal)'
39
39
  },
40
40
  message: {
41
41
  type: 'string',
@@ -57,6 +57,25 @@ async function handler(args) {
57
57
  const moodKey = mood.toLowerCase().replace(/[^a-z]/g, '');
58
58
  const handle = config.getHandle();
59
59
 
60
+ // The "slower" primitive (ratified in the Living Room): one notification pace
61
+ // across every surface, not a per-channel mute. `slower` = only ping me when
62
+ // I've stepped away; `quiet` = hold all pushes (badge still updates); `normal`
63
+ // = default. A first-class human command.
64
+ const PACE = { slower: 'slower', quiet: 'quiet', normal: 'normal', faster: 'normal' };
65
+ if (PACE[moodKey]) {
66
+ const pace = PACE[moodKey];
67
+ const result = await store.setNotificationPace(pace);
68
+ if (result?.success === false) {
69
+ return { display: `Couldn't set pace: ${result.error || 'unknown error'}` };
70
+ }
71
+ const blurb = {
72
+ slower: '🐢 **slower** — you\'ll only get pushed when you\'ve stepped away. The board still shows everything, quietly.',
73
+ quiet: '🤫 **quiet** — no pushes; unread still counts silently. Say `vibe status normal` to turn them back on.',
74
+ normal: '🔔 **normal** — notifications back to default.',
75
+ }[pace];
76
+ return { display: blurb };
77
+ }
78
+
60
79
  // Handle special modes (guided/freeform)
61
80
  if (moodKey === 'guided') {
62
81
  config.setGuidedMode(true);