From b83360db35ea7be85fe1afde760e0437a89c9ee3 Mon Sep 17 00:00:00 2001 From: Bryan1029384756 <23323626+Bryan1029384756@users.noreply.github.com> Date: Mon, 20 Apr 2026 17:09:04 -0500 Subject: [PATCH] bump --- .claude/settings.local.json | 13 +- CLAUDE.md | 1 + Discord Backup Bot/.gitignore | 4 + Discord Backup Bot/README.md | 115 +++ Discord Backup Bot/config.example.json | 7 + Discord Backup Bot/package-lock.json | 327 +++++++ Discord Backup Bot/package.json | 15 + Discord Backup Bot/src/backfill.js | 132 +++ Discord Backup Bot/src/db.js | 30 + Discord Backup Bot/src/discord.js | 15 + Discord Backup Bot/src/downloader.js | 69 ++ Discord Backup Bot/src/index.js | 80 ++ Discord Backup Bot/src/live.js | 153 +++ Discord Backup Bot/src/schema.sql | 68 ++ Discord Backup Bot/src/writers.js | 142 +++ apps/electron/main.cjs | 257 ++++- apps/electron/preload.cjs | 21 + apps/electron/src/platform/index.js | 21 + convex/_generated/api.d.ts | 4 + convex/audit.ts | 4 + convex/auth.ts | 6 + convex/channelKeys.ts | 138 +++ convex/importer.ts | 677 +++++++++++++ convex/importerActions.ts | 241 +++++ convex/members.ts | 4 + convex/messages.ts | 136 ++- convex/polls.ts | 14 +- convex/roles.ts | 18 + convex/schema.ts | 34 +- packages/platform-web/src/index.js | 8 + .../channel/ChannelAccessPanel.module.css | 125 +++ .../components/channel/ChannelAccessPanel.tsx | 253 +++++ .../channel/ChannelSettingsModal.module.css | 33 + .../channel/ChannelSettingsModal.tsx | 63 +- .../components/channel/MessageActionBar.tsx | 20 +- .../src/components/channel/Messages.tsx | 10 +- .../MobileChannelSettingsPage.module.css | 32 + .../channel/MobileChannelSettingsPage.tsx | 68 +- .../src/components/channel/PollCard.tsx | 66 +- .../src/components/layout/AppLayout.tsx | 14 +- .../src/components/settings/GhostsTab.tsx | 309 ++++++ .../src/components/settings/ImportTab.tsx | 814 ++++++++++++++++ .../settings/MobileServerSettings.tsx | 8 + .../settings/ServerSettingsModal.tsx | 340 ++++++- .../components/settings/UserSettingsModal.tsx | 134 +++ packages/shared/src/platform/types.js | 19 + packages/shared/src/utils/importRunner.ts | 911 ++++++++++++++++++ packages/shared/src/utils/importSession.ts | 155 +++ 48 files changed, 6079 insertions(+), 49 deletions(-) create mode 100644 Discord Backup Bot/.gitignore create mode 100644 Discord Backup Bot/README.md create mode 100644 Discord Backup Bot/config.example.json create mode 100644 Discord Backup Bot/package-lock.json create mode 100644 Discord Backup Bot/package.json create mode 100644 Discord Backup Bot/src/backfill.js create mode 100644 Discord Backup Bot/src/db.js create mode 100644 Discord Backup Bot/src/discord.js create mode 100644 Discord Backup Bot/src/downloader.js create mode 100644 Discord Backup Bot/src/index.js create mode 100644 Discord Backup Bot/src/live.js create mode 100644 Discord Backup Bot/src/schema.sql create mode 100644 Discord Backup Bot/src/writers.js create mode 100644 convex/importer.ts create mode 100644 convex/importerActions.ts create mode 100644 packages/shared/src/components/channel/ChannelAccessPanel.module.css create mode 100644 packages/shared/src/components/channel/ChannelAccessPanel.tsx create mode 100644 packages/shared/src/components/settings/GhostsTab.tsx create mode 100644 packages/shared/src/components/settings/ImportTab.tsx create mode 100644 packages/shared/src/utils/importRunner.ts create mode 100644 packages/shared/src/utils/importSession.ts diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 326ae65..b3aea9c 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -66,7 +66,18 @@ "Bash(awk 'NR>=535 && NR<=560 {print NR\": \"$0}' packages/shared/src/components/settings/UserSettingsModal.tsx)", "Bash(awk 'NR>=460 && NR<=480 {print NR\": \"$0}' packages/shared/src/components/settings/UserSettingsModal.tsx)", "Bash(python3 -)", - "Bash(awk 'NR>=525 && NR<=540 {print NR\": \"$0}' packages/shared/src/components/settings/UserSettingsModal.tsx)" + "Bash(awk 'NR>=525 && NR<=540 {print NR\": \"$0}' packages/shared/src/components/settings/UserSettingsModal.tsx)", + "Bash(sqlite3 data/backup.db \".schema\")", + "Bash(sqlite3 data/backup.db \"SELECT COUNT\\(*\\) as message_count FROM messages;\")", + "Bash(sqlite3 data/backup.db \"SELECT * FROM channels LIMIT 5;\")", + "Bash(sqlite3 data/backup.db \"SELECT id, channel_id, author_id, content, created_at, edited_at, deleted_at, replied_to_id FROM messages LIMIT 3;\")", + "Bash(sqlite3 data/backup.db \"SELECT COUNT\\(*\\) as attachment_count, SUM\\(CASE WHEN downloaded = 1 THEN 1 ELSE 0 END\\) as downloaded FROM attachments;\")", + "Bash(sqlite3 data/backup.db \"SELECT id, message_id, filename, size, content_type, local_path FROM attachments LIMIT 3;\")", + "Bash(sqlite3 data/backup.db \"SELECT COUNT\\(*\\) as reaction_count FROM reactions; SELECT COUNT\\(*\\) as embed_count FROM embeds; SELECT COUNT\\(*\\) as author_count FROM authors;\")", + "Bash(sqlite3 data/backup.db \"SELECT * FROM reactions LIMIT 3;\")", + "Bash(sqlite3 data/backup.db \"SELECT * FROM embeds LIMIT 2;\")", + "Bash(sqlite3 data/backup.db \"SELECT id, username, display_name, avatar_url FROM authors LIMIT 5;\")", + "Bash(sqlite3 data/backup.db \"SELECT message_id, content, edited_at FROM message_edits LIMIT 3;\")" ] } } diff --git a/CLAUDE.md b/CLAUDE.md index d603bea..b026fca 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -133,6 +133,7 @@ All platform-specific APIs are accessed via the `usePlatform()` hook: - Push-to-talk: `voiceSettings.inputMode` is `'voice-activity'` (default) or `'push-to-talk'`. Paired with the `voice.pushToTalk` keybind (marked `pressAndHold: true`). `KeybindContext` dispatches `brycord:keybind:voice.pushToTalk:down` / `:up` events — pressAndHold actions never `preventDefault`, so binding PTT to a letter still lets you type. `VoiceContext` reads the settings via the `brycord:voice-settings-changed` window event, listens for the PTT events, and routes them through a configurable release-delay timer before reconciling the LiveKit mic track. All mic-on/mic-off sources (user mute, deafen, server mute, PTT gate) converge on a single `setMicrophoneEnabled` effect - Plaintext cache: `SearchDatabase` has a `plaintext_cache` table (per-channel cap of 500) that persists decrypted message bodies encrypted at rest by the existing search DB key. `SearchContext` exposes `cachePlaintexts` / `getChannelPlaintexts`. `Messages.tsx` seeds the in-memory `decryptionCache` from it on cold channel open (source-scoped on the full ciphertext so edits naturally invalidate), and writes back after each successful decrypt batch. Cuts the "empty bubbles then fill in" wave on app restart - Webcam video: camera publish already lived in `VoiceContext.setCamera` via LiveKit `setCameraEnabled`. Now also propagates `isCameraOn` through `voiceStates.updateState`. `CameraTile` attaches a participant's camera track to a `