openvibers/openvibe.chat Commits
N-1 fixtures re-recorded from a2d100d, the Chat release now in production, with Live's widget at 06cf38b (npm run n-1:record).
Changes
@@@ -1,38 +1,41 @@{"service": "chat",-- "release": "88202c14a966a312f05ceda17983cadec9918854",-- "recorded_at": "2026-09-27T22:05:25.723Z",++ "release": "a2d100db6ae74616273cfb3d9e96188c68d1cc1f",++ "recorded_at": "2026-09-27T23:24:33.583Z","note": "N-1 fixture: written by `npm run n-1:record`, replayed by test/n-1.test.js","clients": {-- "live": "efab01493b4d5d790e96d141f3fe8aa37766a9bd"++ "live": "06cf38b12faa92ce5ee8bc335ce5f0110b1c6537"},"manifest": {"service": "chat",-- "release": "88202c14a966",-- "released_at": "2026-09-27T22:00:25.000Z",-- "booted_at": "2026-09-27T22:05:20.815Z",-- "contracts_version": "0.57.0",++ "release": "a2d100db6ae7",++ "released_at": "2026-09-27T23:14:50.000Z",++ "booted_at": "2026-09-27T23:24:28.601Z",++ "contracts_version": "0.71.0","packages": {"openvibe-shared": "1.22.0","openvibe-sdk": "0.11.0",-- "openvibe-contracts": "0.57.0"++ "openvibe-contracts": "0.71.0"},"min_client_release": null,"mixed_version_window_hours": 24,"components": {"shell": {"kind": "script",-- "version": "88202c14a966"++ "version": "a2d100db6ae7"},"server": {"kind": "server",-- "version": "88202c14a966"++ "version": "a2d100db6ae7"}},"assets": {},"schema_generation": null,"schema_compatible_from": null,"contract_ranges": {},++ "client_generation": null,++ "min_client_generation": null,++ "shell": null,"metrics_url": "/release-metrics"},"dynamic_calls": 52,@@@ -1,7 +1,7 @@{"service": "chat",-- "release": "88202c14a966a312f05ceda17983cadec9918854",-- "recorded_at": "2026-09-27T22:05:25.723Z",++ "release": "a2d100db6ae74616273cfb3d9e96188c68d1cc1f",++ "recorded_at": "2026-09-27T23:24:33.583Z","note": "N-1 fixture: written by `npm run n-1:record`, replayed by test/n-1.test.js","user_version": 0,"schema": [@@@ -93,7 +93,8 @@"chat_meta": []},"lazy": [-- "CREATE TABLE IF NOT EXISTS token_revocations ( subject_id TEXT PRIMARY KEY, valid_after_ms INTEGER NOT NULL, reason TEXT, updated_at INTEGER NOT NULL )"++ "CREATE TABLE IF NOT EXISTS token_revocations ( subject_id TEXT PRIMARY KEY, valid_after_ms INTEGER NOT NULL, reason TEXT, updated_at INTEGER NOT NULL )",++ "CREATE TABLE IF NOT EXISTS account_data_events ( id TEXT PRIMARY KEY, kind TEXT NOT NULL, subject TEXT NOT NULL, outcome TEXT, sent_at TEXT, applied_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')) )"],"statements": ["DELETE FROM audio_requests WHERE state IN ('played', 'skipped', 'failed') AND COALESCE(finished_at, created_at) < ?",@@@ -103,6 +104,7 @@"DELETE FROM channel_sounds WHERE id = ?","DELETE FROM dm_blocks WHERE blocker_id = ? AND blocked_id = ?","DELETE FROM dm_blocks WHERE id = ?",++ "DELETE FROM dm_conversations WHERE id NOT IN (SELECT conversation_id FROM dm_participants)","DELETE FROM dm_messages WHERE id = ?","DELETE FROM dm_participants WHERE conversation_id = ? AND user_id = ?","DELETE FROM emotes WHERE id = ?",@@@ -111,8 +113,11 @@"DELETE FROM live_mirror_outbox WHERE seq <= ?","DELETE FROM room_attachments WHERE room_id = ? AND service = ? AND resource = ?","DELETE FROM room_members WHERE room_id = ? AND user_id = ?",++ "DELETE FROM room_messages WHERE room_id = ?",++ "DELETE FROM rooms WHERE id = ?","DELETE FROM tts_voice_overrides WHERE identity_key = ?","DELETE FROM user_tags WHERE user_id = ? AND tag_id = ?",++ "INSERT INTO account_data_events (id, kind, subject, outcome) VALUES (?, ?, ?, ?)","INSERT INTO audio_requests (room, stream_id, channel_user_id, kind, state, requested_by, identity_key, label, payload, dedupe_key, created_at) VALUES (?, ?, ?, ?, 'queued', ?, ?, ?, ?, ?, ?)","INSERT INTO bridge_applied (key, result, applied_at) VALUES (?, ?, ?)","INSERT INTO bridge_refs (boot, ref, id, at) VALUES (?, ?, ?, ?) ON CONFLICT(boot, ref) DO UPDATE SET id = excluded.id, at = excluded.at",@@@ -150,7 +155,9 @@"INSERT OR IGNORE INTO dm_participants (conversation_id, user_id, subject_id) VALUES (?, ?, ?)","INSERT OR IGNORE INTO stream_first_chats (chatter_key, channel_user_id) VALUES (?, ?)","INSERT OR IGNORE INTO user_tags (user_id, tag_id, source) VALUES (?, ?, ?)",++ "INSERT OR REPLACE INTO account_data_events (id, kind, subject, outcome, sent_at) VALUES (?, ?, ?, ?, ?)","INSERT OR REPLACE INTO hidden_relay_users (channel_id, platform, external_username, action, reason, created_by) VALUES (?, ?, ?, ?, ?, ?)",++ "SELECT * FROM account_data_events WHERE id = ?","SELECT * FROM audio_requests WHERE id = ?","SELECT * FROM audio_requests WHERE id = ? AND room = ? AND state = 'playing'","SELECT * FROM audio_requests WHERE id = ? AND room = ? AND state IN ('queued', 'playing')",@@@ -199,6 +206,7 @@"SELECT 1 FROM dm_participants WHERE conversation_id = ? AND user_id = ?","SELECT 1 FROM hidden_relay_users WHERE platform = ? AND external_username = ? AND (channel_id = ? OR channel_id IS NULL)","SELECT 1 FROM network_blocks WHERE blocker_subject = ? AND blocked_subject = ? AND active = 1",++ "SELECT 1 FROM room_members WHERE room_id = ? LIMIT 1","SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = ?","SELECT 1 FROM stream_first_chats WHERE chatter_key = ? AND channel_user_id = ?","SELECT COALESCE(MAX(id), 0) AS m FROM ctx_streams",@@@ -223,6 +231,7 @@"SELECT MAX(id) AS id FROM chat_messages","SELECT MAX(id) AS id FROM room_messages WHERE room_id = ?","SELECT MIN(timestamp) AS t FROM chat_messages WHERE anon_id = ? AND user_id IS NULL AND is_deleted = 0",++ "SELECT authority FROM table_authority WHERE table_name = ?","SELECT blocker_subject FROM network_blocks WHERE blocked_subject = ? AND active = 1","SELECT c.* FROM dm_conversations c JOIN dm_participants p1 ON p1.conversation_id = c.id AND p1.user_id = ? JOIN dm_participants p2 ON p2.conversation_id = c.id AND p2.user_id = ? WHERE c.is_group = 0","SELECT c.id, c.name, c.is_group, c.updated_at, (SELECT dm.message FROM dm_messages dm WHERE dm.conversation_id = c.id ORDER BY dm.created_at DESC LIMIT 1) AS last_message, (SELECT dm.sender_id FROM dm_messages dm WHERE dm.conversation_id = c.id ORDER BY dm.created_at DESC LIMIT 1) AS last_sender_id, (SELECT dm.created_at FROM dm_messages dm WHERE dm.conversation_id = c.id ORDER BY dm.created_at DESC LIMIT 1) AS last_message_at, (SELECT COUNT(*) FROM dm_messages dm WHERE dm.conversation_id = c.id AND dm.created_at > p.last_read_at AND dm.sender_id != ?) AS unread_count FROM dm_conversations c JOIN dm_participants p ON p.conversation_id = c.id AND p.user_id = ? ORDER BY COALESCE((SELECT dm.created_at FROM dm_messages dm WHERE dm.conversation_id = c.id ORDER BY dm.created_at DESC LIMIT 1), c.created_at) DESC",@@@ -274,6 +283,7 @@"SELECT s.*, u.username, u.display_name, u.avatar_url, u.profile_color, ms.slug AS managed_stream_slug, ms.title AS managed_stream_title FROM ctx_streams s LEFT JOIN ctx_users u ON s.user_id = u.id LEFT JOIN ctx_managed_streams ms ON s.managed_stream_id = ms.id","SELECT s.*, u.username, u.display_name, u.avatar_url, u.profile_color, ms.slug AS managed_stream_slug, ms.title AS managed_stream_title FROM ctx_streams s LEFT JOIN ctx_users u ON s.user_id = u.id LEFT JOIN ctx_managed_streams ms ON s.managed_stream_id = ms.id WHERE s.id = ?","SELECT s.*, u.username, u.display_name, u.avatar_url, u.profile_color, ms.slug AS managed_stream_slug, ms.title AS managed_stream_title FROM ctx_streams s LEFT JOIN ctx_users u ON s.user_id = u.id LEFT JOIN ctx_managed_streams ms ON s.managed_stream_id = ms.id WHERE s.user_id = ? ORDER BY s.created_at DESC LIMIT ?",++ "SELECT sent_at FROM account_data_events WHERE id = ?","SELECT seq, event_id, event FROM events_outbox WHERE sent_at IS NULL ORDER BY seq LIMIT 100","SELECT seq, tbl, op, pk FROM live_mirror_outbox ORDER BY seq LIMIT ?","SELECT subject_id FROM ctx_users WHERE id = ?",@@@ -285,6 +295,7 @@"SELECT valid_after_ms FROM token_revocations WHERE subject_id = ?","SELECT value FROM chat_meta WHERE key = ?","SELECT voice, pitch, speed, gap FROM tts_voice_overrides WHERE identity_key = ?",++ "UPDATE account_data_events SET sent_at = ? WHERE id = ?","UPDATE audio_requests SET attempts = attempts + 1 WHERE id = ?","UPDATE audio_requests SET state = 'failed', finished_at = ?, error = 'expired', actor = 'system' WHERE state = 'queued' AND created_at < ?","UPDATE audio_requests SET state = 'played', finished_at = ?, error = 'delivered before a restart' WHERE state = 'playing'",@@@ -319,6 +330,7 @@"UPDATE room_messages SET is_deleted = 1, deleted_by = ? WHERE id = ?","UPDATE rooms SET message_count = message_count + 1, last_message_at = CURRENT_TIMESTAMP WHERE id = ?","UPDATE rooms SET name = ?, topic = ?, visibility = ?, slow_seconds = ?, join_role = ? WHERE id = ?",++ "UPDATE rooms SET owner_subject = NULL WHERE id = ?","UPDATE table_authority SET authority = ? WHERE table_name = ?"]}
@@ -1,38 +1,41 @@
@@ -1,38 +1,41 @@
{
{
"service": "chat",
"service": "chat",
- "release": "88202c14a966a312f05ceda17983cadec9918854",
- "recorded_at": "2026-09-27T22:05:25.723Z",
+ "release": "a2d100db6ae74616273cfb3d9e96188c68d1cc1f",
+ "recorded_at": "2026-09-27T23:24:33.583Z",
"note": "N-1 fixture: written by `npm run n-1:record`, replayed by test/n-1.test.js",
"note": "N-1 fixture: written by `npm run n-1:record`, replayed by test/n-1.test.js",
"clients": {
"clients": {
- "live": "efab01493b4d5d790e96d141f3fe8aa37766a9bd"
+ "live": "06cf38b12faa92ce5ee8bc335ce5f0110b1c6537"
},
},
"manifest": {
"manifest": {
"service": "chat",
"service": "chat",
- "release": "88202c14a966",
- "released_at": "2026-09-27T22:00:25.000Z",
- "booted_at": "2026-09-27T22:05:20.815Z",
- "contracts_version": "0.57.0",
+ "release": "a2d100db6ae7",
+ "released_at": "2026-09-27T23:14:50.000Z",
+ "booted_at": "2026-09-27T23:24:28.601Z",
+ "contracts_version": "0.71.0",
"packages": {
"packages": {
"openvibe-shared": "1.22.0",
"openvibe-shared": "1.22.0",
"openvibe-sdk": "0.11.0",
"openvibe-sdk": "0.11.0",
- "openvibe-contracts": "0.57.0"
+ "openvibe-contracts": "0.71.0"
},
},
"min_client_release": null,
"min_client_release": null,
"mixed_version_window_hours": 24,
"mixed_version_window_hours": 24,
"components": {
"components": {
"shell": {
"shell": {
"kind": "script",
"kind": "script",
- "version": "88202c14a966"
+ "version": "a2d100db6ae7"
},
},
"server": {
"server": {
"kind": "server",
"kind": "server",
- "version": "88202c14a966"
+ "version": "a2d100db6ae7"
}
}
},
},
"assets": {},
"assets": {},
"schema_generation": null,
"schema_generation": null,
"schema_compatible_from": null,
"schema_compatible_from": null,
"contract_ranges": {},
"contract_ranges": {},
+ "client_generation": null,
+ "min_client_generation": null,
+ "shell": null,
"metrics_url": "/release-metrics"
"metrics_url": "/release-metrics"
},
},
"dynamic_calls": 52,
"dynamic_calls": 52,
@@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
{
{
"service": "chat",
"service": "chat",
- "release": "88202c14a966a312f05ceda17983cadec9918854",
- "recorded_at": "2026-09-27T22:05:25.723Z",
+ "release": "a2d100db6ae74616273cfb3d9e96188c68d1cc1f",
+ "recorded_at": "2026-09-27T23:24:33.583Z",
"note": "N-1 fixture: written by `npm run n-1:record`, replayed by test/n-1.test.js",
"note": "N-1 fixture: written by `npm run n-1:record`, replayed by test/n-1.test.js",
"user_version": 0,
"user_version": 0,
"schema": [
"schema": [
@@ -93,7 +93,8 @@
@@ -93,7 +93,8 @@
"chat_meta": []
"chat_meta": []
},
},
"lazy": [
"lazy": [
- "CREATE TABLE IF NOT EXISTS token_revocations ( subject_id TEXT PRIMARY KEY, valid_after_ms INTEGER NOT NULL, reason TEXT, updated_at INTEGER NOT NULL )"
+ "CREATE TABLE IF NOT EXISTS token_revocations ( subject_id TEXT PRIMARY KEY, valid_after_ms INTEGER NOT NULL, reason TEXT, updated_at INTEGER NOT NULL )",
+ "CREATE TABLE IF NOT EXISTS account_data_events ( id TEXT PRIMARY KEY, kind TEXT NOT NULL, subject TEXT NOT NULL, outcome TEXT, sent_at TEXT, applied_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')) )"
],
],
"statements": [
"statements": [
"DELETE FROM audio_requests WHERE state IN ('played', 'skipped', 'failed') AND COALESCE(finished_at, created_at) < ?",
"DELETE FROM audio_requests WHERE state IN ('played', 'skipped', 'failed') AND COALESCE(finished_at, created_at) < ?",
@@ -103,6 +104,7 @@
@@ -103,6 +104,7 @@
"DELETE FROM channel_sounds WHERE id = ?",
"DELETE FROM channel_sounds WHERE id = ?",
"DELETE FROM dm_blocks WHERE blocker_id = ? AND blocked_id = ?",
"DELETE FROM dm_blocks WHERE blocker_id = ? AND blocked_id = ?",
"DELETE FROM dm_blocks WHERE id = ?",
"DELETE FROM dm_blocks WHERE id = ?",
+ "DELETE FROM dm_conversations WHERE id NOT IN (SELECT conversation_id FROM dm_participants)",
"DELETE FROM dm_messages WHERE id = ?",
"DELETE FROM dm_messages WHERE id = ?",
"DELETE FROM dm_participants WHERE conversation_id = ? AND user_id = ?",
"DELETE FROM dm_participants WHERE conversation_id = ? AND user_id = ?",
"DELETE FROM emotes WHERE id = ?",
"DELETE FROM emotes WHERE id = ?",
@@ -111,8 +113,11 @@
@@ -111,8 +113,11 @@
"DELETE FROM live_mirror_outbox WHERE seq <= ?",
"DELETE FROM live_mirror_outbox WHERE seq <= ?",
"DELETE FROM room_attachments WHERE room_id = ? AND service = ? AND resource = ?",
"DELETE FROM room_attachments WHERE room_id = ? AND service = ? AND resource = ?",
"DELETE FROM room_members WHERE room_id = ? AND user_id = ?",
"DELETE FROM room_members WHERE room_id = ? AND user_id = ?",
+ "DELETE FROM room_messages WHERE room_id = ?",
+ "DELETE FROM rooms WHERE id = ?",
"DELETE FROM tts_voice_overrides WHERE identity_key = ?",
"DELETE FROM tts_voice_overrides WHERE identity_key = ?",
"DELETE FROM user_tags WHERE user_id = ? AND tag_id = ?",
"DELETE FROM user_tags WHERE user_id = ? AND tag_id = ?",
+ "INSERT INTO account_data_events (id, kind, subject, outcome) VALUES (?, ?, ?, ?)",
"INSERT INTO audio_requests (room, stream_id, channel_user_id, kind, state, requested_by, identity_key, label, payload, dedupe_key, created_at) VALUES (?, ?, ?, ?, 'queued', ?, ?, ?, ?, ?, ?)",
"INSERT INTO audio_requests (room, stream_id, channel_user_id, kind, state, requested_by, identity_key, label, payload, dedupe_key, created_at) VALUES (?, ?, ?, ?, 'queued', ?, ?, ?, ?, ?, ?)",
"INSERT INTO bridge_applied (key, result, applied_at) VALUES (?, ?, ?)",
"INSERT INTO bridge_applied (key, result, applied_at) VALUES (?, ?, ?)",
"INSERT INTO bridge_refs (boot, ref, id, at) VALUES (?, ?, ?, ?) ON CONFLICT(boot, ref) DO UPDATE SET id = excluded.id, at = excluded.at",
"INSERT INTO bridge_refs (boot, ref, id, at) VALUES (?, ?, ?, ?) ON CONFLICT(boot, ref) DO UPDATE SET id = excluded.id, at = excluded.at",
@@ -150,7 +155,9 @@
@@ -150,7 +155,9 @@
"INSERT OR IGNORE INTO dm_participants (conversation_id, user_id, subject_id) VALUES (?, ?, ?)",
"INSERT OR IGNORE INTO dm_participants (conversation_id, user_id, subject_id) VALUES (?, ?, ?)",
"INSERT OR IGNORE INTO stream_first_chats (chatter_key, channel_user_id) VALUES (?, ?)",
"INSERT OR IGNORE INTO stream_first_chats (chatter_key, channel_user_id) VALUES (?, ?)",
"INSERT OR IGNORE INTO user_tags (user_id, tag_id, source) VALUES (?, ?, ?)",
"INSERT OR IGNORE INTO user_tags (user_id, tag_id, source) VALUES (?, ?, ?)",
+ "INSERT OR REPLACE INTO account_data_events (id, kind, subject, outcome, sent_at) VALUES (?, ?, ?, ?, ?)",
"INSERT OR REPLACE INTO hidden_relay_users (channel_id, platform, external_username, action, reason, created_by) VALUES (?, ?, ?, ?, ?, ?)",
"INSERT OR REPLACE INTO hidden_relay_users (channel_id, platform, external_username, action, reason, created_by) VALUES (?, ?, ?, ?, ?, ?)",
+ "SELECT * FROM account_data_events WHERE id = ?",
"SELECT * FROM audio_requests WHERE id = ?",
"SELECT * FROM audio_requests WHERE id = ?",
"SELECT * FROM audio_requests WHERE id = ? AND room = ? AND state = 'playing'",
"SELECT * FROM audio_requests WHERE id = ? AND room = ? AND state = 'playing'",
"SELECT * FROM audio_requests WHERE id = ? AND room = ? AND state IN ('queued', 'playing')",
"SELECT * FROM audio_requests WHERE id = ? AND room = ? AND state IN ('queued', 'playing')",
@@ -199,6 +206,7 @@
@@ -199,6 +206,7 @@
"SELECT 1 FROM dm_participants WHERE conversation_id = ? AND user_id = ?",
"SELECT 1 FROM dm_participants WHERE conversation_id = ? AND user_id = ?",
"SELECT 1 FROM hidden_relay_users WHERE platform = ? AND external_username = ? AND (channel_id = ? OR channel_id IS NULL)",
"SELECT 1 FROM hidden_relay_users WHERE platform = ? AND external_username = ? AND (channel_id = ? OR channel_id IS NULL)",
"SELECT 1 FROM network_blocks WHERE blocker_subject = ? AND blocked_subject = ? AND active = 1",
"SELECT 1 FROM network_blocks WHERE blocker_subject = ? AND blocked_subject = ? AND active = 1",
+ "SELECT 1 FROM room_members WHERE room_id = ? LIMIT 1",
"SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = ?",
"SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = ?",
"SELECT 1 FROM stream_first_chats WHERE chatter_key = ? AND channel_user_id = ?",
"SELECT 1 FROM stream_first_chats WHERE chatter_key = ? AND channel_user_id = ?",
"SELECT COALESCE(MAX(id), 0) AS m FROM ctx_streams",
"SELECT COALESCE(MAX(id), 0) AS m FROM ctx_streams",
@@ -223,6 +231,7 @@
@@ -223,6 +231,7 @@
"SELECT MAX(id) AS id FROM chat_messages",
"SELECT MAX(id) AS id FROM chat_messages",
"SELECT MAX(id) AS id FROM room_messages WHERE room_id = ?",
"SELECT MAX(id) AS id FROM room_messages WHERE room_id = ?",
"SELECT MIN(timestamp) AS t FROM chat_messages WHERE anon_id = ? AND user_id IS NULL AND is_deleted = 0",
"SELECT MIN(timestamp) AS t FROM chat_messages WHERE anon_id = ? AND user_id IS NULL AND is_deleted = 0",
+ "SELECT authority FROM table_authority WHERE table_name = ?",
"SELECT blocker_subject FROM network_blocks WHERE blocked_subject = ? AND active = 1",
"SELECT blocker_subject FROM network_blocks WHERE blocked_subject = ? AND active = 1",
"SELECT c.* FROM dm_conversations c JOIN dm_participants p1 ON p1.conversation_id = c.id AND p1.user_id = ? JOIN dm_participants p2 ON p2.conversation_id = c.id AND p2.user_id = ? WHERE c.is_group = 0",
"SELECT c.* FROM dm_conversations c JOIN dm_participants p1 ON p1.conversation_id = c.id AND p1.user_id = ? JOIN dm_participants p2 ON p2.conversation_id = c.id AND p2.user_id = ? WHERE c.is_group = 0",
"SELECT c.id, c.name, c.is_group, c.updated_at, (SELECT dm.message FROM dm_messages dm WHERE dm.conversation_id = c.id ORDER BY dm.created_at DESC LIMIT 1) AS last_message, (SELECT dm.sender_id FROM dm_messages dm WHERE dm.conversation_id = c.id ORDER BY dm.created_at DESC LIMIT 1) AS last_sender_id, (SELECT dm.created_at FROM dm_messages dm WHERE dm.conversation_id = c.id ORDER BY dm.created_at DESC LIMIT 1) AS last_message_at, (SELECT COUNT(*) FROM dm_messages dm WHERE dm.conversation_id = c.id AND dm.created_at > p.last_read_at AND dm.sender_id != ?) AS unread_count FROM dm_conversations c JOIN dm_participants p ON p.conversation_id = c.id AND p.user_id = ? ORDER BY COALESCE((SELECT dm.created_at FROM dm_messages dm WHERE dm.conversation_id = c.id ORDER BY dm.created_at DESC LIMIT 1), c.created_at) DESC",
"SELECT c.id, c.name, c.is_group, c.updated_at, (SELECT dm.message FROM dm_messages dm WHERE dm.conversation_id = c.id ORDER BY dm.created_at DESC LIMIT 1) AS last_message, (SELECT dm.sender_id FROM dm_messages dm WHERE dm.conversation_id = c.id ORDER BY dm.created_at DESC LIMIT 1) AS last_sender_id, (SELECT dm.created_at FROM dm_messages dm WHERE dm.conversation_id = c.id ORDER BY dm.created_at DESC LIMIT 1) AS last_message_at, (SELECT COUNT(*) FROM dm_messages dm WHERE dm.conversation_id = c.id AND dm.created_at > p.last_read_at AND dm.sender_id != ?) AS unread_count FROM dm_conversations c JOIN dm_participants p ON p.conversation_id = c.id AND p.user_id = ? ORDER BY COALESCE((SELECT dm.created_at FROM dm_messages dm WHERE dm.conversation_id = c.id ORDER BY dm.created_at DESC LIMIT 1), c.created_at) DESC",
@@ -274,6 +283,7 @@
@@ -274,6 +283,7 @@
"SELECT s.*, u.username, u.display_name, u.avatar_url, u.profile_color, ms.slug AS managed_stream_slug, ms.title AS managed_stream_title FROM ctx_streams s LEFT JOIN ctx_users u ON s.user_id = u.id LEFT JOIN ctx_managed_streams ms ON s.managed_stream_id = ms.id",
"SELECT s.*, u.username, u.display_name, u.avatar_url, u.profile_color, ms.slug AS managed_stream_slug, ms.title AS managed_stream_title FROM ctx_streams s LEFT JOIN ctx_users u ON s.user_id = u.id LEFT JOIN ctx_managed_streams ms ON s.managed_stream_id = ms.id",
"SELECT s.*, u.username, u.display_name, u.avatar_url, u.profile_color, ms.slug AS managed_stream_slug, ms.title AS managed_stream_title FROM ctx_streams s LEFT JOIN ctx_users u ON s.user_id = u.id LEFT JOIN ctx_managed_streams ms ON s.managed_stream_id = ms.id WHERE s.id = ?",
"SELECT s.*, u.username, u.display_name, u.avatar_url, u.profile_color, ms.slug AS managed_stream_slug, ms.title AS managed_stream_title FROM ctx_streams s LEFT JOIN ctx_users u ON s.user_id = u.id LEFT JOIN ctx_managed_streams ms ON s.managed_stream_id = ms.id WHERE s.id = ?",
"SELECT s.*, u.username, u.display_name, u.avatar_url, u.profile_color, ms.slug AS managed_stream_slug, ms.title AS managed_stream_title FROM ctx_streams s LEFT JOIN ctx_users u ON s.user_id = u.id LEFT JOIN ctx_managed_streams ms ON s.managed_stream_id = ms.id WHERE s.user_id = ? ORDER BY s.created_at DESC LIMIT ?",
"SELECT s.*, u.username, u.display_name, u.avatar_url, u.profile_color, ms.slug AS managed_stream_slug, ms.title AS managed_stream_title FROM ctx_streams s LEFT JOIN ctx_users u ON s.user_id = u.id LEFT JOIN ctx_managed_streams ms ON s.managed_stream_id = ms.id WHERE s.user_id = ? ORDER BY s.created_at DESC LIMIT ?",
+ "SELECT sent_at FROM account_data_events WHERE id = ?",
"SELECT seq, event_id, event FROM events_outbox WHERE sent_at IS NULL ORDER BY seq LIMIT 100",
"SELECT seq, event_id, event FROM events_outbox WHERE sent_at IS NULL ORDER BY seq LIMIT 100",
"SELECT seq, tbl, op, pk FROM live_mirror_outbox ORDER BY seq LIMIT ?",
"SELECT seq, tbl, op, pk FROM live_mirror_outbox ORDER BY seq LIMIT ?",
"SELECT subject_id FROM ctx_users WHERE id = ?",
"SELECT subject_id FROM ctx_users WHERE id = ?",
@@ -285,6 +295,7 @@
@@ -285,6 +295,7 @@
"SELECT valid_after_ms FROM token_revocations WHERE subject_id = ?",
"SELECT valid_after_ms FROM token_revocations WHERE subject_id = ?",
"SELECT value FROM chat_meta WHERE key = ?",
"SELECT value FROM chat_meta WHERE key = ?",
"SELECT voice, pitch, speed, gap FROM tts_voice_overrides WHERE identity_key = ?",
"SELECT voice, pitch, speed, gap FROM tts_voice_overrides WHERE identity_key = ?",
+ "UPDATE account_data_events SET sent_at = ? WHERE id = ?",
"UPDATE audio_requests SET attempts = attempts + 1 WHERE id = ?",
"UPDATE audio_requests SET attempts = attempts + 1 WHERE id = ?",
"UPDATE audio_requests SET state = 'failed', finished_at = ?, error = 'expired', actor = 'system' WHERE state = 'queued' AND created_at < ?",
"UPDATE audio_requests SET state = 'failed', finished_at = ?, error = 'expired', actor = 'system' WHERE state = 'queued' AND created_at < ?",
"UPDATE audio_requests SET state = 'played', finished_at = ?, error = 'delivered before a restart' WHERE state = 'playing'",
"UPDATE audio_requests SET state = 'played', finished_at = ?, error = 'delivered before a restart' WHERE state = 'playing'",
@@ -319,6 +330,7 @@
@@ -319,6 +330,7 @@
"UPDATE room_messages SET is_deleted = 1, deleted_by = ? WHERE id = ?",
"UPDATE room_messages SET is_deleted = 1, deleted_by = ? WHERE id = ?",
"UPDATE rooms SET message_count = message_count + 1, last_message_at = CURRENT_TIMESTAMP WHERE id = ?",
"UPDATE rooms SET message_count = message_count + 1, last_message_at = CURRENT_TIMESTAMP WHERE id = ?",
"UPDATE rooms SET name = ?, topic = ?, visibility = ?, slow_seconds = ?, join_role = ? WHERE id = ?",
"UPDATE rooms SET name = ?, topic = ?, visibility = ?, slow_seconds = ?, join_role = ? WHERE id = ?",
+ "UPDATE rooms SET owner_subject = NULL WHERE id = ?",
"UPDATE table_authority SET authority = ? WHERE table_name = ?"
"UPDATE table_authority SET authority = ? WHERE table_name = ?"
]
]
}
}