From ad54f602256db212a3655e7d81d44ee7bb411528 Mon Sep 17 00:00:00 2001 From: Bryan1029384756 <23323626+Bryan1029384756@users.noreply.github.com> Date: Fri, 17 Apr 2026 21:44:01 -0500 Subject: [PATCH] 1.1.2 --- apps/android/android/app/build.gradle | 2 +- apps/electron/package.json | 2 +- apps/web/package.json | 2 +- convex/voiceState.ts | 8 + packages/shared/package.json | 2 +- .../src/assets/icons/hashtag-pinned.svg | 10 + .../shared/src/assets/icons/voice-pinned.svg | 12 + .../src/components/channel/LinkEmbed.tsx | 9 +- .../src/components/channel/MessageGroup.tsx | 41 ++ .../MobileChannelActionsSheet.module.css | 53 +++ .../channel/MobileChannelActionsSheet.tsx | 84 ++++ .../MobileChannelSettingsPage.module.css | 319 ++++++++++++++ .../channel/MobileChannelSettingsPage.tsx | 354 +++++++++++++++ .../channel/MobileMessageActionsSheet.tsx | 21 +- .../channel/MobileReactionsDrawer.module.css | 131 ++++++ .../channel/MobileReactionsDrawer.tsx | 161 +++++++ .../src/components/layout/AppLayout.tsx | 60 ++- .../layout/ChannelListContextMenu.tsx | 34 +- .../components/layout/GuildNavbar.module.css | 86 +++- .../src/components/layout/GuildNavbar.tsx | 410 +++++++++++++++++- .../layout/MobileCreateCategoryPage.tsx | 101 +++++ .../layout/MobileCreateChannelPage.module.css | 203 +++++++++ .../layout/MobileCreateChannelPage.tsx | 176 ++++++++ .../components/voice/PiPOverlay.module.css | 250 ----------- .../src/components/voice/PiPOverlay.tsx | 133 ------ .../components/voice/VoiceCallView.module.css | 18 + .../src/components/voice/VoiceCallView.tsx | 29 +- packages/shared/src/contexts/VoiceContext.jsx | 152 ++++++- packages/ui/src/BottomSheet.module.css | 16 +- packages/ui/src/BottomSheet.tsx | 113 +++-- 30 files changed, 2517 insertions(+), 475 deletions(-) create mode 100644 packages/shared/src/assets/icons/hashtag-pinned.svg create mode 100644 packages/shared/src/assets/icons/voice-pinned.svg create mode 100644 packages/shared/src/components/channel/MobileChannelActionsSheet.module.css create mode 100644 packages/shared/src/components/channel/MobileChannelActionsSheet.tsx create mode 100644 packages/shared/src/components/channel/MobileChannelSettingsPage.module.css create mode 100644 packages/shared/src/components/channel/MobileChannelSettingsPage.tsx create mode 100644 packages/shared/src/components/channel/MobileReactionsDrawer.module.css create mode 100644 packages/shared/src/components/channel/MobileReactionsDrawer.tsx create mode 100644 packages/shared/src/components/layout/MobileCreateCategoryPage.tsx create mode 100644 packages/shared/src/components/layout/MobileCreateChannelPage.module.css create mode 100644 packages/shared/src/components/layout/MobileCreateChannelPage.tsx delete mode 100644 packages/shared/src/components/voice/PiPOverlay.module.css delete mode 100644 packages/shared/src/components/voice/PiPOverlay.tsx diff --git a/apps/android/android/app/build.gradle b/apps/android/android/app/build.gradle index 2eb3f8b..6fb1a9e 100644 --- a/apps/android/android/app/build.gradle +++ b/apps/android/android/app/build.gradle @@ -8,7 +8,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 27 - versionName "1.1.1" + versionName "1.1.2" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" aaptOptions { // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. diff --git a/apps/electron/package.json b/apps/electron/package.json index 223bc0e..4eef553 100644 --- a/apps/electron/package.json +++ b/apps/electron/package.json @@ -1,7 +1,7 @@ { "name": "@discord-clone/electron", "private": true, - "version": "1.1.1", + "version": "1.1.2", "description": "Brycord - Electron app", "author": "Moyettes", "type": "module", diff --git a/apps/web/package.json b/apps/web/package.json index f97a667..de3e051 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,7 +1,7 @@ { "name": "@discord-clone/web", "private": true, - "version": "1.1.1", + "version": "1.1.2", "type": "module", "scripts": { "dev": "vite", diff --git a/convex/voiceState.ts b/convex/voiceState.ts index a89188e..1a6aa60 100644 --- a/convex/voiceState.ts +++ b/convex/voiceState.ts @@ -159,6 +159,13 @@ export const getAll = query({ avatarUrl: string | null; joinSoundUrl: string | null; watchingStream: string | null; + // Unix ms of when this voiceState row was created — used by the + // sidebar to render the "time in channel" indicator for the + // current user. `_creationTime` is populated by Convex + // automatically on insert, and since the join/move/afk paths + // always delete + insert (never patch across channels) it also + // correctly restarts on a channel hop. + joinedAt: number; }>> = {}; for (const s of states) { @@ -183,6 +190,7 @@ export const getAll = query({ avatarUrl, joinSoundUrl, watchingStream: s.watchingStream ?? null, + joinedAt: s._creationTime, }); } diff --git a/packages/shared/package.json b/packages/shared/package.json index 62f16fb..6e1326f 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -1,7 +1,7 @@ { "name": "@discord-clone/shared", "private": true, - "version": "1.1.1", + "version": "1.1.2", "type": "module", "main": "src/App.tsx", "dependencies": { diff --git a/packages/shared/src/assets/icons/hashtag-pinned.svg b/packages/shared/src/assets/icons/hashtag-pinned.svg new file mode 100644 index 0000000..b5d2e2b --- /dev/null +++ b/packages/shared/src/assets/icons/hashtag-pinned.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/packages/shared/src/assets/icons/voice-pinned.svg b/packages/shared/src/assets/icons/voice-pinned.svg new file mode 100644 index 0000000..59db318 --- /dev/null +++ b/packages/shared/src/assets/icons/voice-pinned.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/shared/src/components/channel/LinkEmbed.tsx b/packages/shared/src/components/channel/LinkEmbed.tsx index ac58221..bb99c71 100644 --- a/packages/shared/src/components/channel/LinkEmbed.tsx +++ b/packages/shared/src/components/channel/LinkEmbed.tsx @@ -224,6 +224,13 @@ function DirectMediaEmbed({ // of web video; when the real metadata lands and differs slightly // the ResizeObserver catches it, but the gross box is already // there. + // + // Appending `#t=0.1` is a media-fragment hint that forces the + // browser to seek to 0.1s, which makes it decode and paint that + // frame as a pseudo-poster. Android WebView otherwise renders a + // blank rectangle for `