From 109010289f034d3136e2498fcbee1fc402edeb1e Mon Sep 17 00:00:00 2001 From: Jacob Owens Date: Mon, 23 Mar 2026 15:26:24 -0700 Subject: [PATCH 1/5] feat: notification system with unread indicators, browser/desktop notifications, and Tauri app setup --- .gitignore | 2 +- ROADMAP.md | 6 +- apps/api/src/app.ts | 2 + .../v1/notification-settings/handlers.ts | 61 ++ .../routes/v1/notification-settings/index.ts | 12 + .../routes/v1/notification-settings/routes.ts | 57 ++ .../routes/v1/notification-settings/schema.ts | 11 + apps/desktop/package.json | 3 +- apps/desktop/src-tauri/Cargo.lock | 539 +++++++++++++++++- apps/desktop/src-tauri/Cargo.toml | 1 + .../src-tauri/capabilities/default.json | 2 +- apps/desktop/src-tauri/src/lib.rs | 1 + apps/realtime/src/index.ts | 18 +- apps/realtime/src/services/read-states.ts | 127 ++++- apps/web/package.json | 1 + .../settings/notification-settings.tsx | 171 ++++++ .../components/settings/settings-dialog.tsx | 3 + .../sidebar/channel-panel/channel-list.tsx | 17 +- .../components/sidebar/dm-panel/dm-list.tsx | 30 +- apps/web/src/context/unread-context.tsx | 158 +++++ apps/web/src/hooks/use-auto-mark-read.ts | 68 +++ .../src/hooks/use-browser-notifications.ts | 69 +++ apps/web/src/lib/notification-dispatcher.ts | 90 +++ apps/web/src/routes/_authenticated.tsx | 28 +- .../_authenticated/$guildSlug/$channelId.tsx | 2 + .../src/routes/_authenticated/dms/$dmId.tsx | 2 + packages/db/src/schemas/index.ts | 1 + .../src/schemas/user-notification-settings.ts | 69 +++ packages/realtime-types/src/events.ts | 10 + pnpm-lock.yaml | 15 + 30 files changed, 1552 insertions(+), 24 deletions(-) create mode 100644 apps/api/src/routes/v1/notification-settings/handlers.ts create mode 100644 apps/api/src/routes/v1/notification-settings/index.ts create mode 100644 apps/api/src/routes/v1/notification-settings/routes.ts create mode 100644 apps/api/src/routes/v1/notification-settings/schema.ts create mode 100644 apps/web/src/components/settings/notification-settings.tsx create mode 100644 apps/web/src/context/unread-context.tsx create mode 100644 apps/web/src/hooks/use-auto-mark-read.ts create mode 100644 apps/web/src/hooks/use-browser-notifications.ts create mode 100644 apps/web/src/lib/notification-dispatcher.ts create mode 100644 packages/db/src/schemas/user-notification-settings.ts diff --git a/.gitignore b/.gitignore index 8126520..8c27453 100644 --- a/.gitignore +++ b/.gitignore @@ -29,7 +29,7 @@ dist # Rust (Tauri) target/ - +**/src-tauri/gen/schemas # Debug npm-debug.log* diff --git a/ROADMAP.md b/ROADMAP.md index bee1964..a68636c 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -56,8 +56,10 @@ - [x] Typing indicators - [x] Pinned messages panel - [ ] Thread support -- [ ] Desktop app (Tauri) with native notifications for mentions, DMs, etc. -- [ ] Notification preferences +- [x] Desktop app (Tauri) — native window wrapper, notification plugin wired up +- [x] Desktop/browser notifications — notification:bootstrap on connect, unread state context, auto-mark-as-read, browser Notification API + Tauri native notifications +- [x] Notification preferences — user_notification_settings table, API (get/update), settings UI (desktop/DM notification levels, permission request) +- [x] Unread indicators (Discord-style) — channel/DM text highlights, mention badges, left-side unread pill - [x] Reaction tooltips (who reacted with each emoji) - [x] User profile popover (bio, status, online indicator, ally actions) - [x] Remember last visited channel per guild (localStorage) diff --git a/apps/api/src/app.ts b/apps/api/src/app.ts index c160c0d..c61a5bf 100644 --- a/apps/api/src/app.ts +++ b/apps/api/src/app.ts @@ -10,6 +10,7 @@ import channelsRouter from "@/routes/v1/channels/index" import dmsRouter from "@/routes/v1/dms/index" import guildsRouter from "@/routes/v1/guilds/index" import invitesRouter from "@/routes/v1/invites/index" +import notificationSettingsRouter from "@/routes/v1/notification-settings/index" import privacySettingsRouter from "@/routes/v1/privacy-settings/index" import uploadsRouter from "@/routes/v1/uploads/index" import usersRouter from "@/routes/v1/users/index" @@ -44,6 +45,7 @@ const routes = app .route("/v1", channelsRouter) .route("/v1", guildsRouter) .route("/v1", invitesRouter) + .route("/v1", notificationSettingsRouter) .route("/v1", privacySettingsRouter) .route("/v1", dmsRouter) .route("/v1", uploadsRouter) diff --git a/apps/api/src/routes/v1/notification-settings/handlers.ts b/apps/api/src/routes/v1/notification-settings/handlers.ts new file mode 100644 index 0000000..8654f5b --- /dev/null +++ b/apps/api/src/routes/v1/notification-settings/handlers.ts @@ -0,0 +1,61 @@ +import { db, eq, schema } from "@repo/db" +import * as HttpStatusCodes from "@/lib/helpers/http/status-codes" +import type { AppRouteHandler } from "@/lib/types/app-types" +import type { + GetNotificationSettingsRoute, + UpdateNotificationSettingsRoute, +} from "./routes" + +const DEFAULT_SETTINGS = { + desktopNotifications: "all_messages" as const, + dmNotifications: "all_messages" as const, +} + +export const getNotificationSettings: AppRouteHandler< + GetNotificationSettingsRoute +> = async (c) => { + const currentUser = c.var.user + + const settings = await db + .select({ + desktopNotifications: + schema.userNotificationSettings.desktopNotifications, + dmNotifications: schema.userNotificationSettings.dmNotifications, + }) + .from(schema.userNotificationSettings) + .where(eq(schema.userNotificationSettings.userId, currentUser.id)) + .limit(1) + .then((rows) => rows[0]) + + return c.json(settings ?? DEFAULT_SETTINGS, HttpStatusCodes.OK) +} + +export const updateNotificationSettings: AppRouteHandler< + UpdateNotificationSettingsRoute +> = async (c) => { + const currentUser = c.var.user + const body = c.req.valid("json") + + const updated = await db + .insert(schema.userNotificationSettings) + .values({ + userId: currentUser.id, + ...body, + }) + .onConflictDoUpdate({ + target: schema.userNotificationSettings.userId, + set: body, + }) + .returning({ + desktopNotifications: + schema.userNotificationSettings.desktopNotifications, + dmNotifications: schema.userNotificationSettings.dmNotifications, + }) + .then((rows) => rows[0]) + + if (!updated) { + return c.json(DEFAULT_SETTINGS, HttpStatusCodes.OK) + } + + return c.json(updated, HttpStatusCodes.OK) +} diff --git a/apps/api/src/routes/v1/notification-settings/index.ts b/apps/api/src/routes/v1/notification-settings/index.ts new file mode 100644 index 0000000..2c11491 --- /dev/null +++ b/apps/api/src/routes/v1/notification-settings/index.ts @@ -0,0 +1,12 @@ +import { createRouter } from "@/lib/helpers/app/create-app" +import * as handlers from "@/routes/v1/notification-settings/handlers" +import * as routes from "@/routes/v1/notification-settings/routes" + +const notificationSettingsRouter = createRouter() + .openapi(routes.getNotificationSettings, handlers.getNotificationSettings) + .openapi( + routes.updateNotificationSettings, + handlers.updateNotificationSettings + ) + +export default notificationSettingsRouter diff --git a/apps/api/src/routes/v1/notification-settings/routes.ts b/apps/api/src/routes/v1/notification-settings/routes.ts new file mode 100644 index 0000000..5ddb501 --- /dev/null +++ b/apps/api/src/routes/v1/notification-settings/routes.ts @@ -0,0 +1,57 @@ +import { createRoute } from "@hono/zod-openapi" +import * as HttpStatusCodes from "@/lib/helpers/http/status-codes" +import jsonContent from "@/lib/helpers/openapi/json-content" +import { + internalServerErrorSchema, + unauthorizedSchema, +} from "@/lib/helpers/openapi/schemas" +import { sessionAuthMiddleware } from "@/middleware/session-auth" +import { + getNotificationSettingsResponseSchema, + updateNotificationSettingsBodySchema, + updateNotificationSettingsResponseSchema, +} from "./schema" + +export const getNotificationSettings = createRoute({ + path: "/notification-settings", + method: "get", + summary: "Get notification settings", + description: "Returns the current user's notification settings.", + tags: ["Notification Settings"], + middleware: [sessionAuthMiddleware] as const, + responses: { + [HttpStatusCodes.OK]: jsonContent({ + schema: getNotificationSettingsResponseSchema, + description: "Notification settings", + }), + [HttpStatusCodes.UNAUTHORIZED]: unauthorizedSchema, + [HttpStatusCodes.INTERNAL_SERVER_ERROR]: internalServerErrorSchema, + }, +}) + +export type GetNotificationSettingsRoute = typeof getNotificationSettings + +export const updateNotificationSettings = createRoute({ + path: "/notification-settings", + method: "patch", + summary: "Update notification settings", + description: "Updates the current user's notification settings.", + tags: ["Notification Settings"], + middleware: [sessionAuthMiddleware] as const, + request: { + body: jsonContent({ + schema: updateNotificationSettingsBodySchema, + description: "Notification settings to update", + }), + }, + responses: { + [HttpStatusCodes.OK]: jsonContent({ + schema: updateNotificationSettingsResponseSchema, + description: "Updated notification settings", + }), + [HttpStatusCodes.UNAUTHORIZED]: unauthorizedSchema, + [HttpStatusCodes.INTERNAL_SERVER_ERROR]: internalServerErrorSchema, + }, +}) + +export type UpdateNotificationSettingsRoute = typeof updateNotificationSettings diff --git a/apps/api/src/routes/v1/notification-settings/schema.ts b/apps/api/src/routes/v1/notification-settings/schema.ts new file mode 100644 index 0000000..53cd266 --- /dev/null +++ b/apps/api/src/routes/v1/notification-settings/schema.ts @@ -0,0 +1,11 @@ +import { + notificationSettingsResponseSchema, + updateNotificationSettingsSchema, +} from "@repo/db/schema" + +export const getNotificationSettingsResponseSchema = + notificationSettingsResponseSchema +export const updateNotificationSettingsBodySchema = + updateNotificationSettingsSchema +export const updateNotificationSettingsResponseSchema = + notificationSettingsResponseSchema diff --git a/apps/desktop/package.json b/apps/desktop/package.json index fd7c5e7..e22fd5f 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -4,7 +4,8 @@ "description": "", "main": "index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "dev": "pnpm tauri dev", + "build": "pnpm tauri build" }, "keywords": [], "author": "", diff --git a/apps/desktop/src-tauri/Cargo.lock b/apps/desktop/src-tauri/Cargo.lock index ee56b49..0a655b8 100644 --- a/apps/desktop/src-tauri/Cargo.lock +++ b/apps/desktop/src-tauri/Cargo.lock @@ -85,6 +85,7 @@ dependencies = [ "tauri", "tauri-build", "tauri-plugin-log", + "tauri-plugin-notification", ] [[package]] @@ -93,6 +94,137 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +[[package]] +name = "async-broadcast" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" +dependencies = [ + "event-listener", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-channel" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c96bf972d85afc50bf5ab8fe2d54d1586b4e0b46c97c50a0c9e71e2f7bcd812a" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "pin-project-lite", + "slab", +] + +[[package]] +name = "async-io" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" +dependencies = [ + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix", + "slab", + "windows-sys 0.61.2", +] + +[[package]] +name = "async-lock" +version = "3.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-process" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" +dependencies = [ + "async-channel", + "async-io", + "async-lock", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener", + "futures-lite", + "rustix", +] + +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "async-signal" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c" +dependencies = [ + "async-io", + "async-lock", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix", + "signal-hook-registry", + "slab", + "windows-sys 0.61.2", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "async-trait" +version = "0.1.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "atk" version = "0.18.2" @@ -200,6 +332,19 @@ dependencies = [ "objc2", ] +[[package]] +name = "blocking" +version = "1.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" +dependencies = [ + "async-channel", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + [[package]] name = "borsh" version = "1.6.1" @@ -444,6 +589,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "convert_case" version = "0.4.0" @@ -819,6 +973,33 @@ version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" +[[package]] +name = "endi" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099" + +[[package]] +name = "enumflags2" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "env_filter" version = "0.1.4" @@ -846,6 +1027,37 @@ dependencies = [ "typeid", ] +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "event-listener" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener", + "pin-project-lite", +] + [[package]] name = "fastrand" version = "2.3.0" @@ -998,6 +1210,19 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" +[[package]] +name = "futures-lite" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + [[package]] name = "futures-macro" version = "0.3.32" @@ -1386,6 +1611,12 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + [[package]] name = "hex" version = "0.4.3" @@ -1876,6 +2107,12 @@ dependencies = [ "libc", ] +[[package]] +name = "linux-raw-sys" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" + [[package]] name = "litemap" version = "0.8.1" @@ -1906,6 +2143,18 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" +[[package]] +name = "mac-notification-sys" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29a16783dd1a47849b8c8133c9cd3eb2112cfbc6901670af3dba47c8bbfb07d3" +dependencies = [ + "cc", + "objc2", + "objc2-foundation", + "time", +] + [[package]] name = "markup5ever" version = "0.14.1" @@ -2053,6 +2302,20 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" +[[package]] +name = "notify-rust" +version = "4.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21af20a1b50be5ac5861f74af1a863da53a11c38684d9818d82f1c42f7fdc6c2" +dependencies = [ + "futures-lite", + "log", + "mac-notification-sys", + "serde", + "tauri-winrt-notification", + "zbus", +] + [[package]] name = "num-conv" version = "0.2.0" @@ -2169,6 +2432,7 @@ checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ "bitflags 2.11.0", "block2", + "libc", "objc2", "objc2-core-foundation", ] @@ -2234,6 +2498,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" +[[package]] +name = "ordered-stream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + [[package]] name = "pango" version = "0.18.3" @@ -2259,6 +2533,12 @@ dependencies = [ "system-deps", ] +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + [[package]] name = "parking_lot" version = "0.12.5" @@ -2487,6 +2767,17 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "piper" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c835479a4443ded371d6c535cbfd8d31ad92c5d23ae9770a61bc155e4992a3c1" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + [[package]] name = "pkg-config" version = "0.3.32" @@ -2501,7 +2792,7 @@ checksum = "740ebea15c5d1428f910cd1a5f52cebf8d25006245ed8ade92702f4943d91e07" dependencies = [ "base64 0.22.1", "indexmap 2.13.0", - "quick-xml", + "quick-xml 0.38.4", "serde", "time", ] @@ -2519,6 +2810,20 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "polling" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix", + "windows-sys 0.61.2", +] + [[package]] name = "potential_utf" version = "0.1.4" @@ -2647,6 +2952,15 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "quick-xml" +version = "0.37.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" +dependencies = [ + "memchr", +] + [[package]] name = "quick-xml" version = "0.38.4" @@ -2708,6 +3022,16 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.5", +] + [[package]] name = "rand_chacha" version = "0.2.2" @@ -2728,6 +3052,16 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.5", +] + [[package]] name = "rand_core" version = "0.5.1" @@ -2746,6 +3080,15 @@ dependencies = [ "getrandom 0.2.17", ] +[[package]] +name = "rand_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +dependencies = [ + "getrandom 0.3.4", +] + [[package]] name = "rand_hc" version = "0.2.0" @@ -2942,6 +3285,19 @@ dependencies = [ "semver", ] +[[package]] +name = "rustix" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" +dependencies = [ + "bitflags 2.11.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", +] + [[package]] name = "rustversion" version = "1.0.22" @@ -3251,6 +3607,16 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "signal-hook-registry" +version = "1.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +dependencies = [ + "errno", + "libc", +] + [[package]] name = "simd-adler32" version = "0.3.8" @@ -3686,6 +4052,25 @@ dependencies = [ "time", ] +[[package]] +name = "tauri-plugin-notification" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01fc2c5ff41105bd1f7242d8201fdf3efd70749b82fa013a17f2126357d194cc" +dependencies = [ + "log", + "notify-rust", + "rand 0.9.2", + "serde", + "serde_json", + "serde_repr", + "tauri", + "tauri-plugin", + "thiserror 2.0.18", + "time", + "url", +] + [[package]] name = "tauri-runtime" version = "2.10.1" @@ -3786,6 +4171,31 @@ dependencies = [ "toml 0.9.12+spec-1.1.0", ] +[[package]] +name = "tauri-winrt-notification" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b1e66e07de489fe43a46678dd0b8df65e0c973909df1b60ba33874e297ba9b9" +dependencies = [ + "quick-xml 0.37.5", + "thiserror 2.0.18", + "windows", + "windows-version", +] + +[[package]] +name = "tempfile" +version = "3.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" +dependencies = [ + "fastrand", + "getrandom 0.4.2", + "once_cell", + "rustix", + "windows-sys 0.61.2", +] + [[package]] name = "tendril" version = "0.4.3" @@ -4089,9 +4499,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ "pin-project-lite", + "tracing-attributes", "tracing-core", ] +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "tracing-core" version = "0.1.36" @@ -4141,6 +4563,17 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +[[package]] +name = "uds_windows" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f6fb2847f6742cd76af783a2a2c49e9375d0a111c7bef6f71cd9e738c72d6e" +dependencies = [ + "memoffset", + "tempfile", + "windows-sys 0.61.2", +] + [[package]] name = "unic-char-property" version = "0.9.0" @@ -4989,6 +5422,9 @@ name = "winnow" version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" +dependencies = [ + "memchr", +] [[package]] name = "winnow" @@ -5200,6 +5636,67 @@ dependencies = [ "synstructure", ] +[[package]] +name = "zbus" +version = "5.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca82f95dbd3943a40a53cfded6c2d0a2ca26192011846a1810c4256ef92c60bc" +dependencies = [ + "async-broadcast", + "async-executor", + "async-io", + "async-lock", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "enumflags2", + "event-listener", + "futures-core", + "futures-lite", + "hex", + "libc", + "ordered-stream", + "rustix", + "serde", + "serde_repr", + "tracing", + "uds_windows", + "uuid", + "windows-sys 0.61.2", + "winnow 0.7.15", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "5.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897e79616e84aac4b2c46e9132a4f63b93105d54fe8c0e8f6bffc21fa8d49222" +dependencies = [ + "proc-macro-crate 3.5.0", + "proc-macro2", + "quote", + "syn 2.0.117", + "zbus_names", + "zvariant", + "zvariant_utils", +] + +[[package]] +name = "zbus_names" +version = "4.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffd8af6d5b78619bab301ff3c560a5bd22426150253db278f164d6cf3b72c50f" +dependencies = [ + "serde", + "winnow 0.7.15", + "zvariant", +] + [[package]] name = "zerocopy" version = "0.8.47" @@ -5279,3 +5776,43 @@ name = "zmij" version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" + +[[package]] +name = "zvariant" +version = "5.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5708299b21903bbe348e94729f22c49c55d04720a004aa350f1f9c122fd2540b" +dependencies = [ + "endi", + "enumflags2", + "serde", + "winnow 0.7.15", + "zvariant_derive", + "zvariant_utils", +] + +[[package]] +name = "zvariant_derive" +version = "5.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b59b012ebe9c46656f9cc08d8da8b4c726510aef12559da3e5f1bf72780752c" +dependencies = [ + "proc-macro-crate 3.5.0", + "proc-macro2", + "quote", + "syn 2.0.117", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f75c23a64ef8f40f13a6989991e643554d9bef1d682a281160cf0c1bc389c5e9" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "syn 2.0.117", + "winnow 0.7.15", +] diff --git a/apps/desktop/src-tauri/Cargo.toml b/apps/desktop/src-tauri/Cargo.toml index 074cc3d..283564a 100644 --- a/apps/desktop/src-tauri/Cargo.toml +++ b/apps/desktop/src-tauri/Cargo.toml @@ -23,3 +23,4 @@ serde = { version = "1.0", features = ["derive"] } log = "0.4" tauri = { version = "2.10.3", features = [] } tauri-plugin-log = "2" +tauri-plugin-notification = "2" diff --git a/apps/desktop/src-tauri/capabilities/default.json b/apps/desktop/src-tauri/capabilities/default.json index 8e906f7..c85f85d 100644 --- a/apps/desktop/src-tauri/capabilities/default.json +++ b/apps/desktop/src-tauri/capabilities/default.json @@ -3,5 +3,5 @@ "identifier": "default", "description": "enables the default permissions", "windows": ["main"], - "permissions": ["core:default"] + "permissions": ["core:default", "notification:default"] } diff --git a/apps/desktop/src-tauri/src/lib.rs b/apps/desktop/src-tauri/src/lib.rs index 9c3118c..9c17c7f 100644 --- a/apps/desktop/src-tauri/src/lib.rs +++ b/apps/desktop/src-tauri/src/lib.rs @@ -1,6 +1,7 @@ #[cfg_attr(mobile, tauri::mobile_entry_point)] pub fn run() { tauri::Builder::default() + .plugin(tauri_plugin_notification::init()) .setup(|app| { if cfg!(debug_assertions) { app.handle().plugin( diff --git a/apps/realtime/src/index.ts b/apps/realtime/src/index.ts index 220e9d8..5633c93 100644 --- a/apps/realtime/src/index.ts +++ b/apps/realtime/src/index.ts @@ -48,7 +48,7 @@ import { enforceDmMessageRateLimit, enforceGuildMessageRateLimit, } from "@/services/rate-limit" -import { markChannelRead } from "@/services/read-states" +import { getUnreadStatesForUser, markChannelRead } from "@/services/read-states" type SocketData = { user: Session["user"] @@ -279,6 +279,19 @@ async function initializeConnection(socket: RealtimeSocket) { }, }) + // Bootstrap unread state asynchronously (non-blocking) + getUnreadStatesForUser(socket.data.user.id) + .then((bootstrap) => { + socket.emit("notification:bootstrap", bootstrap) + }) + .catch((err) => { + console.error("Failed to bootstrap unread states:", { + socketId: socket.id, + userId: socket.data.user.id, + error: err, + }) + }) + return true } catch (error) { console.error( @@ -610,7 +623,10 @@ io.on("connection", (socket) => { lastReadMessageId: parsed.lastReadMessageId, }) + // Broadcast to other tabs/devices for this user socket.to(userRoom(socket.data.user.id)).emit("channel:read-state", state) + // Also send back to the requesting socket + socket.emit("channel:read-state", state) ack?.({ ok: true, state }) } catch (error) { ack?.({ ok: false, error: toErrorMessage(error) }) diff --git a/apps/realtime/src/services/read-states.ts b/apps/realtime/src/services/read-states.ts index 367b729..28392b2 100644 --- a/apps/realtime/src/services/read-states.ts +++ b/apps/realtime/src/services/read-states.ts @@ -1,5 +1,19 @@ -import { and, count, db, desc, eq, gt, ne, schema, sql } from "@repo/db" -import type { ChannelReadState } from "@repo/realtime-types" +import { + and, + count, + db, + desc, + eq, + gt, + inArray, + ne, + schema, + sql, +} from "@repo/db" +import type { + ChannelReadState, + NotificationBootstrap, +} from "@repo/realtime-types" import { assertUserCanAccessChannel } from "./channel-access" type MarkChannelReadInput = { @@ -48,7 +62,9 @@ export async function markChannelRead( if (latestMessage) { lastReadMessageId = latestMessage.id - lastReadAt = latestMessage.createdAt + // Use current time to avoid precision mismatches between + // JS Date (ms) and Postgres timestamp (μs) + lastReadAt = new Date() } } @@ -132,3 +148,108 @@ export async function markChannelRead( mentionCount: Number(mentionCountRow?.count ?? 0), } } + +/** + * Get unread message and mention counts for all channels a user is a member of. + * Used to bootstrap the frontend unread state on socket connect. + */ +export async function getUnreadStatesForUser( + userId: string +): Promise { + // Get DM/group DM channel IDs via channel_member + const dmMemberships = await db + .select({ channelId: schema.channelMember.channelId }) + .from(schema.channelMember) + .where(eq(schema.channelMember.userId, userId)) + + // Get guild channel IDs via guild_member -> channels + const guildMemberships = await db + .select({ guildId: schema.guildMember.guildId }) + .from(schema.guildMember) + .where(eq(schema.guildMember.userId, userId)) + + let guildChannelIds: string[] = [] + if (guildMemberships.length > 0) { + const guildIds = guildMemberships.map((m) => m.guildId) + const guildChannels = await db + .select({ id: schema.channel.id }) + .from(schema.channel) + .where(inArray(schema.channel.guildId, guildIds)) + guildChannelIds = guildChannels.map((c) => c.id) + } + + const channelIds = [ + ...new Set([...dmMemberships.map((m) => m.channelId), ...guildChannelIds]), + ] + + if (channelIds.length === 0) { + return { readStates: [] } + } + + // Get existing read states for these channels + const readStates = await db + .select({ + channelId: schema.channelReadState.channelId, + lastReadAt: schema.channelReadState.lastReadAt, + lastReadMessageId: schema.channelReadState.lastReadMessageId, + }) + .from(schema.channelReadState) + .where( + and( + eq(schema.channelReadState.userId, userId), + inArray(schema.channelReadState.channelId, channelIds) + ) + ) + + const readStateMap = new Map(readStates.map((rs) => [rs.channelId, rs])) + + // For each channel, compute unread and mention counts + const results = await Promise.all( + channelIds.map(async (channelId) => { + const readState = readStateMap.get(channelId) + const lastReadAt = readState?.lastReadAt ?? new Date(0) + + const [unreadRow, mentionRow] = await Promise.all([ + db + .select({ count: count() }) + .from(schema.message) + .where( + and( + eq(schema.message.channelId, channelId), + gt(schema.message.createdAt, lastReadAt), + ne(schema.message.authorId, userId) + ) + ) + .then((rows) => rows[0]), + db + .select({ count: count() }) + .from(schema.messageMention) + .where( + and( + eq(schema.messageMention.channelId, channelId), + eq(schema.messageMention.mentionedUserId, userId), + gt(schema.messageMention.createdAt, lastReadAt) + ) + ) + .then((rows) => rows[0]), + ]) + + const unreadCount = Number(unreadRow?.count ?? 0) + const mentionCount = Number(mentionRow?.count ?? 0) + + // Only include channels with unread activity + if (unreadCount === 0 && mentionCount === 0) return null + + return { + channelId, + unreadCount, + mentionCount, + lastReadMessageId: readState?.lastReadMessageId ?? null, + } + }) + ) + + return { + readStates: results.filter((r): r is NonNullable => r !== null), + } +} diff --git a/apps/web/package.json b/apps/web/package.json index 6d41372..b63adac 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -22,6 +22,7 @@ "@tailwindcss/postcss": "^4.1.18", "@tanstack/react-query": "^5.90.21", "@tanstack/react-router": "^1.120.3", + "@tauri-apps/plugin-notification": "^2.3.3", "@tiptap/extension-link": "^3.20.0", "@tiptap/extension-mention": "^3.20.0", "@tiptap/markdown": "^3.20.0", diff --git a/apps/web/src/components/settings/notification-settings.tsx b/apps/web/src/components/settings/notification-settings.tsx new file mode 100644 index 0000000..14250d2 --- /dev/null +++ b/apps/web/src/components/settings/notification-settings.tsx @@ -0,0 +1,171 @@ +import { Button } from "@repo/ui/components/button" +import { Label } from "@repo/ui/components/label" +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@repo/ui/components/select" +import { Separator } from "@repo/ui/components/separator" +import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query" +import { Bell, Loader2 } from "lucide-react" +import { useEffect, useState } from "react" +import { toast } from "sonner" +import { apiClient } from "@/lib/api-client" +import { + getNotificationPermission, + requestNotificationPermission, +} from "@/lib/notification-dispatcher" + +type NotificationSettings = { + desktopNotifications: "all_messages" | "mentions_only" | "nothing" + dmNotifications: "all_messages" | "nothing" +} + +const DESKTOP_NOTIFICATION_OPTIONS = [ + { value: "all_messages", label: "All Messages" }, + { value: "mentions_only", label: "Mentions Only" }, + { value: "nothing", label: "Nothing" }, +] as const + +const DM_NOTIFICATION_OPTIONS = [ + { value: "all_messages", label: "All Messages" }, + { value: "nothing", label: "Nothing" }, +] as const + +export function NotificationSettings() { + const queryClient = useQueryClient() + const [permissionState, setPermissionState] = useState< + "granted" | "denied" | "default" + >("default") + + useEffect(() => { + getNotificationPermission().then(setPermissionState) + }, []) + + const { data: settings, isPending } = useQuery({ + queryKey: ["notification-settings"], + queryFn: async () => { + const res = await apiClient.v1["notification-settings"].$get() + if (!res.ok) throw new Error("Failed to fetch notification settings") + return res.json() as Promise + }, + }) + + const { mutate: updateSettings } = useMutation({ + mutationFn: async (update: Partial) => { + const res = await apiClient.v1["notification-settings"].$patch({ + json: update, + }) + if (!res.ok) throw new Error("Failed to update notification settings") + return res.json() as Promise + }, + onSuccess: (data) => { + queryClient.setQueryData(["notification-settings"], data) + }, + onError: () => { + toast.error("Failed to update notification setting") + }, + }) + + const handleChange = (key: keyof NotificationSettings, value: string) => { + updateSettings({ [key]: value }) + } + + const handleRequestPermission = async () => { + const granted = await requestNotificationPermission() + setPermissionState(granted ? "granted" : "denied") + if (granted) { + toast.success("Notifications enabled") + } else { + toast.error("Notification permission denied") + } + } + + if (isPending) { + return ( +
+ +
+ ) + } + + return ( +
+
+

Notifications

+

+ Control how and when you receive notifications. +

+
+ + + + {permissionState !== "granted" && ( +
+ +
+

Enable Desktop Notifications

+

+ {permissionState === "denied" + ? "Notifications are blocked. Please enable them in your browser settings." + : "Allow Townhall to send you desktop notifications."} +

+
+ {permissionState === "default" && ( + + )} +
+ )} + +
+
+ +

+ Choose what triggers a desktop notification. +

+ +
+ +
+ +

+ Choose whether you get notified for new direct messages. +

+ +
+
+
+ ) +} diff --git a/apps/web/src/components/settings/settings-dialog.tsx b/apps/web/src/components/settings/settings-dialog.tsx index f465eb0..8c1ff0a 100644 --- a/apps/web/src/components/settings/settings-dialog.tsx +++ b/apps/web/src/components/settings/settings-dialog.tsx @@ -38,6 +38,7 @@ import { import { useMemo, useState } from "react" import { useSettings } from "@/context/settings-context" import { MyAccountSettings } from "./my-account-settings" +import { NotificationSettings } from "./notification-settings" import { PrivacySafetySettings } from "./privacy-safety-settings" interface SettingsNav { @@ -126,6 +127,8 @@ export function SettingsDialog() {
{activeItem === "My Account" ? ( + ) : activeItem === "Notifications" ? ( + ) : activeItem === "Privacy & Safety" ? ( ) : ( diff --git a/apps/web/src/components/sidebar/channel-panel/channel-list.tsx b/apps/web/src/components/sidebar/channel-panel/channel-list.tsx index 9a33bdf..a62302c 100644 --- a/apps/web/src/components/sidebar/channel-panel/channel-list.tsx +++ b/apps/web/src/components/sidebar/channel-panel/channel-list.tsx @@ -38,6 +38,7 @@ import { } from "lucide-react" import { AnimatePresence, motion } from "motion/react" import { useCallback, useState } from "react" +import { useUnread } from "@/context/unread-context" import { apiClient } from "@/lib/api-client" import type { Channel, ListChannelsResponse } from "@/lib/api-types" import { canDeleteChannels, canManageChannels } from "@/lib/permissions" @@ -559,6 +560,11 @@ function SortableChannelItem({ const [editOpen, setEditOpen] = useState(false) const [deleteOpen, setDeleteOpen] = useState(false) + const { getUnreadCount, getMentionCount } = useUnread() + const unreadCount = active ? 0 : getUnreadCount(ch.id) + const mentionCount = active ? 0 : getMentionCount(ch.id) + const hasUnread = unreadCount > 0 + const style = { transform: CSS.Translate.toString(transform), transition, @@ -577,15 +583,24 @@ function SortableChannelItem({ className={cn( "group relative flex w-full items-center gap-2 rounded-lg px-2 py-[6px] text-[14px] hover:bg-foreground/[0.06] cursor-pointer", active && "bg-foreground/[0.06] font-medium text-foreground", - !active && "text-muted-foreground", + !active && hasUnread && "font-medium text-foreground", + !active && !hasUnread && "text-muted-foreground", menuOpen && "bg-foreground/[0.06]" )} > {active && (
)} + {!active && hasUnread && ( +
+ )} {ch.name} + {mentionCount > 0 && ( + + {mentionCount} + + )} {canManage && ( void }) { + const { getUnreadCount, getMentionCount } = useUnread() + const unreadCount = active ? 0 : getUnreadCount(channelId) + const mentionCount = active ? 0 : getMentionCount(channelId) + const hasUnread = unreadCount > 0 + const preview = isGroupDM && lastMessageAuthor && lastMessage ? `${lastMessageAuthor}: ${lastMessage}` @@ -118,18 +127,26 @@ function DMItem({ onClick={onClick} className={cn( "group relative flex w-full items-center gap-2.5 rounded-lg px-2 py-1.5 hover:bg-foreground/[0.06]", - active - ? "bg-foreground/[0.06] text-foreground" - : "text-muted-foreground" + active && "bg-foreground/[0.06] text-foreground", + !active && hasUnread && "text-foreground", + !active && !hasUnread && "text-muted-foreground" )} > + {!active && hasUnread && ( +
+ )} {isGroupDM ? ( ) : ( )}
-
+
{name}
{preview && ( @@ -138,6 +155,11 @@ function DMItem({
)}
+ {mentionCount > 0 && ( + + {mentionCount} + + )} ) } diff --git a/apps/web/src/context/unread-context.tsx b/apps/web/src/context/unread-context.tsx new file mode 100644 index 0000000..670a25e --- /dev/null +++ b/apps/web/src/context/unread-context.tsx @@ -0,0 +1,158 @@ +import type { ReactNode } from "react" +import { + createContext, + useCallback, + useContext, + useEffect, + useState, +} from "react" +import { useSocket } from "./socket-context" + +type UnreadState = { + unreadCount: number + mentionCount: number +} + +type UnreadContextValue = { + stateMap: Map + markChannelRead: (channelId: string, lastReadMessageId?: string) => void +} + +const UnreadContext = createContext({ + stateMap: new Map(), + markChannelRead: () => {}, +}) + +export function useUnread() { + const { stateMap, markChannelRead } = useContext(UnreadContext) + + const getUnreadCount = useCallback( + (channelId: string) => stateMap.get(channelId)?.unreadCount ?? 0, + [stateMap] + ) + + const getMentionCount = useCallback( + (channelId: string) => stateMap.get(channelId)?.mentionCount ?? 0, + [stateMap] + ) + + return { getUnreadCount, getMentionCount, markChannelRead } +} + +export function UnreadProvider({ children }: { children: ReactNode }) { + const socket = useSocket() + const [stateMap, setStateMap] = useState>( + () => new Map() + ) + + useEffect(() => { + if (!socket) return + + const onBootstrap = (payload: { + readStates: Array<{ + channelId: string + unreadCount: number + mentionCount: number + lastReadMessageId: string | null + }> + }) => { + const newMap = new Map() + for (const rs of payload.readStates) { + newMap.set(rs.channelId, { + unreadCount: rs.unreadCount, + mentionCount: rs.mentionCount, + }) + } + setStateMap(newMap) + } + + const onUnread = (payload: { + channelId: string + unreadCountDelta: number + }) => { + setStateMap((prev) => { + const next = new Map(prev) + const current = next.get(payload.channelId) ?? { + unreadCount: 0, + mentionCount: 0, + } + next.set(payload.channelId, { + ...current, + unreadCount: current.unreadCount + payload.unreadCountDelta, + }) + return next + }) + } + + const onMention = (payload: { channelId: string }) => { + setStateMap((prev) => { + const next = new Map(prev) + const current = next.get(payload.channelId) ?? { + unreadCount: 0, + mentionCount: 0, + } + next.set(payload.channelId, { + ...current, + mentionCount: current.mentionCount + 1, + }) + return next + }) + } + + const onReadState = (payload: { + channelId: string + unreadCount: number + mentionCount: number + }) => { + setStateMap((prev) => { + const next = new Map(prev) + if (payload.unreadCount === 0 && payload.mentionCount === 0) { + next.delete(payload.channelId) + } else { + next.set(payload.channelId, { + unreadCount: payload.unreadCount, + mentionCount: payload.mentionCount, + }) + } + return next + }) + } + + socket.on("notification:bootstrap", onBootstrap) + socket.on("notification:unread", onUnread) + socket.on("notification:mention", onMention) + socket.on("channel:read-state", onReadState) + + return () => { + socket.off("notification:bootstrap", onBootstrap) + socket.off("notification:unread", onUnread) + socket.off("notification:mention", onMention) + socket.off("channel:read-state", onReadState) + } + }, [socket]) + + const markChannelRead = useCallback( + (channelId: string, lastReadMessageId?: string) => { + if (!socket) return + + // Optimistically clear + setStateMap((prev) => { + const next = new Map(prev) + next.delete(channelId) + return next + }) + + socket.emit("channel:mark-read", { + channelId, + lastReadMessageId, + }) + }, + [socket] + ) + + return ( + + {children} + + ) +} diff --git a/apps/web/src/hooks/use-auto-mark-read.ts b/apps/web/src/hooks/use-auto-mark-read.ts new file mode 100644 index 0000000..45b84d6 --- /dev/null +++ b/apps/web/src/hooks/use-auto-mark-read.ts @@ -0,0 +1,68 @@ +import type { RealtimeMessage } from "@repo/realtime-types" +import { useEffect, useRef } from "react" +import { useSocket } from "@/context/socket-context" +import { useUnread } from "@/context/unread-context" + +const DEBOUNCE_MS = 1000 + +export function useAutoMarkRead(channelId: string | undefined) { + const { markChannelRead } = useUnread() + const socket = useSocket() + const timerRef = useRef | null>(null) + const channelIdRef = useRef(channelId) + channelIdRef.current = channelId + + const debouncedMarkRead = () => { + if (!channelIdRef.current) return + if (timerRef.current) clearTimeout(timerRef.current) + timerRef.current = setTimeout(() => { + if (channelIdRef.current) { + markChannelRead(channelIdRef.current) + } + }, DEBOUNCE_MS) + } + + // Mark read on mount + useEffect(() => { + if (!channelId) return + debouncedMarkRead() + return () => { + if (timerRef.current) clearTimeout(timerRef.current) + } + }, [channelId]) + + // Mark read when tab becomes visible + useEffect(() => { + if (!channelId) return + + const onVisibilityChange = () => { + if (document.visibilityState === "visible") { + debouncedMarkRead() + } + } + + document.addEventListener("visibilitychange", onVisibilityChange) + return () => { + document.removeEventListener("visibilitychange", onVisibilityChange) + } + }, [channelId]) + + // Mark read when new messages arrive while focused + useEffect(() => { + if (!socket || !channelId) return + + const onMessageCreated = (message: RealtimeMessage) => { + if ( + message.channelId === channelIdRef.current && + document.visibilityState === "visible" + ) { + debouncedMarkRead() + } + } + + socket.on("message:created", onMessageCreated) + return () => { + socket.off("message:created", onMessageCreated) + } + }, [socket, channelId]) +} diff --git a/apps/web/src/hooks/use-browser-notifications.ts b/apps/web/src/hooks/use-browser-notifications.ts new file mode 100644 index 0000000..acc9cff --- /dev/null +++ b/apps/web/src/hooks/use-browser-notifications.ts @@ -0,0 +1,69 @@ +import type { + MentionNotification, + UnreadNotification, +} from "@repo/realtime-types" +import { useQuery } from "@tanstack/react-query" +import { useEffect } from "react" +import { useSocket } from "@/context/socket-context" +import { apiClient } from "@/lib/api-client" +import { showNotification } from "@/lib/notification-dispatcher" + +type NotificationSettings = { + desktopNotifications: "all_messages" | "mentions_only" | "nothing" + dmNotifications: "all_messages" | "nothing" +} + +/** + * Fires browser/desktop notifications for incoming messages and mentions + * based on user's notification preferences. + * Only fires when the tab is not focused. + */ +export function useBrowserNotifications() { + const socket = useSocket() + const { data: settings } = useQuery({ + queryKey: ["notification-settings"], + queryFn: async () => { + const res = await apiClient.v1["notification-settings"].$get() + if (!res.ok) throw new Error("Failed to fetch notification settings") + return res.json() as Promise + }, + }) + + useEffect(() => { + if (!socket) return + + const onMention = (payload: MentionNotification) => { + if (document.visibilityState === "visible") return + if (settings?.desktopNotifications === "nothing") return + + const mentionType = + payload.type === "everyone_mention" ? "@everyone" : "a mention" + + showNotification("New Mention", `You received ${mentionType}`, { + tag: `mention-${payload.messageId}`, + }) + } + + const onUnread = (payload: UnreadNotification) => { + if (document.visibilityState === "visible") return + if (settings?.desktopNotifications !== "all_messages") return + + // For DMs, check dmNotifications setting + if (payload.guildId === null && settings?.dmNotifications === "nothing") { + return + } + + showNotification("New Message", "You have a new message", { + tag: `unread-${payload.channelId}`, + }) + } + + socket.on("notification:mention", onMention) + socket.on("notification:unread", onUnread) + + return () => { + socket.off("notification:mention", onMention) + socket.off("notification:unread", onUnread) + } + }, [socket, settings]) +} diff --git a/apps/web/src/lib/notification-dispatcher.ts b/apps/web/src/lib/notification-dispatcher.ts new file mode 100644 index 0000000..46049a6 --- /dev/null +++ b/apps/web/src/lib/notification-dispatcher.ts @@ -0,0 +1,90 @@ +const isTauri = () => + typeof window !== "undefined" && "__TAURI_INTERNALS__" in window + +export async function requestNotificationPermission(): Promise { + if (isTauri()) { + try { + const { requestPermission, isPermissionGranted } = await import( + "@tauri-apps/plugin-notification" + ) + if (await isPermissionGranted()) return true + const result = await requestPermission() + return result === "granted" + } catch { + return false + } + } + + if (!("Notification" in window)) return false + if (Notification.permission === "granted") return true + if (Notification.permission === "denied") return false + + const result = await Notification.requestPermission() + return result === "granted" +} + +export function getNotificationPermissionSync(): + | "granted" + | "denied" + | "default" { + if (isTauri()) return "default" + if (!("Notification" in window)) return "denied" + return Notification.permission +} + +export async function getNotificationPermission(): Promise< + "granted" | "denied" | "default" +> { + if (isTauri()) { + try { + const { isPermissionGranted } = await import( + "@tauri-apps/plugin-notification" + ) + return (await isPermissionGranted()) ? "granted" : "default" + } catch { + return "denied" + } + } + + if (!("Notification" in window)) return "denied" + return Notification.permission +} + +export async function showNotification( + title: string, + body: string, + options?: { + tag?: string + onClick?: () => void + } +) { + if (isTauri()) { + try { + const { sendNotification } = await import( + "@tauri-apps/plugin-notification" + ) + sendNotification({ title, body }) + } catch { + // Tauri notification plugin not available + } + return + } + + if (!("Notification" in window) || Notification.permission !== "granted") { + return + } + + const notification = new Notification(title, { + body, + tag: options?.tag, + icon: "/favicon.ico", + }) + + if (options?.onClick) { + notification.onclick = () => { + window.focus() + options.onClick?.() + notification.close() + } + } +} diff --git a/apps/web/src/routes/_authenticated.tsx b/apps/web/src/routes/_authenticated.tsx index c2d92b6..2c1d43f 100644 --- a/apps/web/src/routes/_authenticated.tsx +++ b/apps/web/src/routes/_authenticated.tsx @@ -12,6 +12,13 @@ import { SettingsDialog } from "../components/settings/settings-dialog" import { Sidebar } from "../components/sidebar" import { SettingsProvider } from "../context/settings-context" import { SocketProvider } from "../context/socket-context" +import { UnreadProvider } from "../context/unread-context" +import { useBrowserNotifications } from "../hooks/use-browser-notifications" + +function BrowserNotifications() { + useBrowserNotifications() + return null +} const LAST_PATH_KEY = "townhall:last-path" @@ -68,15 +75,18 @@ function AuthenticatedLayout() { return ( - -
- - - - - -
-
+ + + +
+ + + + + +
+
+
) } diff --git a/apps/web/src/routes/_authenticated/$guildSlug/$channelId.tsx b/apps/web/src/routes/_authenticated/$guildSlug/$channelId.tsx index 745859d..1f2990d 100644 --- a/apps/web/src/routes/_authenticated/$guildSlug/$channelId.tsx +++ b/apps/web/src/routes/_authenticated/$guildSlug/$channelId.tsx @@ -16,6 +16,7 @@ import { MessageList } from "@/components/chat/message-list" import { TypingIndicator } from "@/components/chat/typing-indicator" import { useRightSidebar } from "@/components/sidebar/right-panel/right-sidebar-context" import { useSocket } from "@/context/socket-context" +import { useAutoMarkRead } from "@/hooks/use-auto-mark-read" import { useBlockedUserIds } from "@/hooks/use-blocked-users" import { useFileUpload } from "@/hooks/use-file-upload" import { useMessageDeletion } from "@/hooks/use-message-deletion" @@ -53,6 +54,7 @@ function ChannelView() { const { msgId } = Route.useSearch() const navigate = Route.useNavigate() const socket = useSocket() + useAutoMarkRead(channelId) const queryClient = useQueryClient() const { view, setView, clearView } = useRightSidebar() const { data: session } = authClient.useSession() diff --git a/apps/web/src/routes/_authenticated/dms/$dmId.tsx b/apps/web/src/routes/_authenticated/dms/$dmId.tsx index c0b463e..e6414cd 100644 --- a/apps/web/src/routes/_authenticated/dms/$dmId.tsx +++ b/apps/web/src/routes/_authenticated/dms/$dmId.tsx @@ -10,6 +10,7 @@ import { ChatHeader } from "@/components/chat/header" import { MessageList } from "@/components/chat/message-list" import { TypingIndicator } from "@/components/chat/typing-indicator" import { useSocket } from "@/context/socket-context" +import { useAutoMarkRead } from "@/hooks/use-auto-mark-read" import { useBlockedUserIds } from "@/hooks/use-blocked-users" import { useFileUpload } from "@/hooks/use-file-upload" import { useMessageDeletion } from "@/hooks/use-message-deletion" @@ -46,6 +47,7 @@ function DMConversation() { const { msgId } = Route.useSearch() const navigate = Route.useNavigate() const socket = useSocket() + useAutoMarkRead(dmId) const queryClient = useQueryClient() const { data: session } = authClient.useSession() const currentUserId = session?.user.id diff --git a/packages/db/src/schemas/index.ts b/packages/db/src/schemas/index.ts index 0a7cdaf..b9bff76 100644 --- a/packages/db/src/schemas/index.ts +++ b/packages/db/src/schemas/index.ts @@ -15,6 +15,7 @@ export * from "./notification-events" export * from "./sessions" export * from "./two-factors" export * from "./user-blocks" +export * from "./user-notification-settings" export * from "./user-privacy-settings" export * from "./users" export * from "./verifications" diff --git a/packages/db/src/schemas/user-notification-settings.ts b/packages/db/src/schemas/user-notification-settings.ts new file mode 100644 index 0000000..19e9318 --- /dev/null +++ b/packages/db/src/schemas/user-notification-settings.ts @@ -0,0 +1,69 @@ +import { relations } from "drizzle-orm" +import { pgEnum, pgTable, timestamp, uuid } from "drizzle-orm/pg-core" +import { createInsertSchema, createSelectSchema } from "drizzle-zod" +import { user } from "./users" + +export const desktopNotificationEnum = pgEnum("desktop_notification", [ + "all_messages", + "mentions_only", + "nothing", +]) + +export const dmNotificationEnum = pgEnum("dm_notification", [ + "all_messages", + "nothing", +]) + +export const userNotificationSettings = pgTable("user_notification_settings", { + id: uuid("id").defaultRandom().primaryKey(), + userId: uuid("user_id") + .notNull() + .unique() + .references(() => user.id, { onDelete: "cascade" }), + desktopNotifications: desktopNotificationEnum("desktop_notifications") + .default("all_messages") + .notNull(), + dmNotifications: dmNotificationEnum("dm_notifications") + .default("all_messages") + .notNull(), + createdAt: timestamp("created_at").defaultNow().notNull(), + updatedAt: timestamp("updated_at") + .defaultNow() + .$onUpdate(() => new Date()) + .notNull(), +}) + +export const selectUserNotificationSettingsSchema = createSelectSchema( + userNotificationSettings +) +export const insertUserNotificationSettingsSchema = createInsertSchema( + userNotificationSettings +).omit({ + id: true, + createdAt: true, + updatedAt: true, +}) + +export const notificationSettingsResponseSchema = + selectUserNotificationSettingsSchema.pick({ + desktopNotifications: true, + dmNotifications: true, + }) + +export const updateNotificationSettingsSchema = + insertUserNotificationSettingsSchema + .pick({ + desktopNotifications: true, + dmNotifications: true, + }) + .partial() + +export const userNotificationSettingsRelations = relations( + userNotificationSettings, + ({ one }) => ({ + user: one(user, { + fields: [userNotificationSettings.userId], + references: [user.id], + }), + }) +) diff --git a/packages/realtime-types/src/events.ts b/packages/realtime-types/src/events.ts index 4e662ba..a6b21b7 100644 --- a/packages/realtime-types/src/events.ts +++ b/packages/realtime-types/src/events.ts @@ -220,6 +220,15 @@ export type MentionNotification = { createdAt: string } +export type NotificationBootstrap = { + readStates: Array<{ + channelId: string + unreadCount: number + mentionCount: number + lastReadMessageId: string | null + }> +} + export const guildMemberJoinedPayloadSchema = z.object({ guildId: z.string().uuid(), }) @@ -298,6 +307,7 @@ export interface ServerToClientEvents { "message:reaction:updated": (payload: RealtimeMessageReactionUpdated) => void "message:embeds:updated": (payload: RealtimeMessageEmbedsUpdated) => void "message:pin:toggled": (payload: RealtimeMessagePinToggled) => void + "notification:bootstrap": (payload: NotificationBootstrap) => void "notification:unread": (payload: UnreadNotification) => void "notification:mention": (payload: MentionNotification) => void "channel:read-state": (payload: ChannelReadState) => void diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6729804..3f41fbd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -169,6 +169,9 @@ importers: '@tanstack/react-router': specifier: ^1.120.3 version: 1.159.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@tauri-apps/plugin-notification': + specifier: ^2.3.3 + version: 2.3.3 '@tiptap/extension-link': specifier: ^3.20.0 version: 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0) @@ -3134,6 +3137,9 @@ packages: resolution: {integrity: sha512-cHHDnewHozgjpI+MIVp9tcib6lYEQK5MyUr0ChHpHFGBl8Xei55rohFK0I0ve/GKoHeioaK42Smd8OixPp6CTg==} engines: {node: '>=12'} + '@tauri-apps/api@2.10.1': + resolution: {integrity: sha512-hKL/jWf293UDSUN09rR69hrToyIXBb8CjGaWC7gfinvnQrBVvnLr08FeFi38gxtugAVyVcTa5/FD/Xnkb1siBw==} + '@tauri-apps/cli-darwin-arm64@2.10.1': resolution: {integrity: sha512-Z2OjCXiZ+fbYZy7PmP3WRnOpM9+Fy+oonKDEmUE6MwN4IGaYqgceTjwHucc/kEEYZos5GICve35f7ZiizgqEnQ==} engines: {node: '>= 10'} @@ -3205,6 +3211,9 @@ packages: engines: {node: '>= 10'} hasBin: true + '@tauri-apps/plugin-notification@2.3.3': + resolution: {integrity: sha512-Zw+ZH18RJb41G4NrfHgIuofJiymusqN+q8fGUIIV7vyCH+5sSn5coqRv/MWB9qETsUs97vmU045q7OyseCV3Qg==} + '@tiptap/core@3.20.0': resolution: {integrity: sha512-aC9aROgia/SpJqhsXFiX9TsligL8d+oeoI8W3u00WI45s0VfsqjgeKQLDLF7Tu7hC+7F02teC84SAHuup003VQ==} peerDependencies: @@ -8949,6 +8958,8 @@ snapshots: '@tanstack/virtual-file-routes@1.154.7': {} + '@tauri-apps/api@2.10.1': {} + '@tauri-apps/cli-darwin-arm64@2.10.1': optional: true @@ -8996,6 +9007,10 @@ snapshots: '@tauri-apps/cli-win32-ia32-msvc': 2.10.1 '@tauri-apps/cli-win32-x64-msvc': 2.10.1 + '@tauri-apps/plugin-notification@2.3.3': + dependencies: + '@tauri-apps/api': 2.10.1 + '@tiptap/core@3.20.0(@tiptap/pm@3.20.0)': dependencies: '@tiptap/pm': 3.20.0 From d14391716dc4e0dd62895fef35d80dd8248bcdb6 Mon Sep 17 00:00:00 2001 From: Jacob Owens Date: Sun, 29 Mar 2026 11:01:52 -0700 Subject: [PATCH 2/5] feat: Improve notifications, desktop support, and auth emails - Add Resend email integration to auth package with new env vars - Enrich unread notifications with author name, content preview, and channel name for better browser/Tauri notifications - Fix notification bootstrap race by awaiting unread state before joining user presence room - Add optimistic rollback for failed mark-read acknowledgements - Skip auto-mark-read when tab is not visible - Allow tauri://localhost in CORS origins for desktop app - Fix Tauri config identifier and frontendDist path - Fix channel list layout so badge and menu don't overlap - Improve login/signup pages with PasswordInput, loading, and errors - Add `pnpm desktop` script and switch Turbo UI to stream mode --- apps/desktop/src-tauri/icons/128x128.png | Bin 11059 -> 15930 bytes apps/desktop/src-tauri/icons/128x128@2x.png | Bin 23137 -> 46543 bytes apps/desktop/src-tauri/icons/32x32.png | Bin 2225 -> 1789 bytes apps/desktop/src-tauri/icons/64x64.png | Bin 0 -> 5042 bytes .../src-tauri/icons/Square107x107Logo.png | Bin 9202 -> 9372 bytes .../src-tauri/icons/Square142x142Logo.png | Bin 12530 -> 14223 bytes .../src-tauri/icons/Square150x150Logo.png | Bin 13032 -> 15714 bytes .../src-tauri/icons/Square284x284Logo.png | Bin 25943 -> 40949 bytes .../src-tauri/icons/Square30x30Logo.png | Bin 2078 -> 1246 bytes .../src-tauri/icons/Square310x310Logo.png | Bin 28507 -> 46178 bytes .../src-tauri/icons/Square44x44Logo.png | Bin 3419 -> 2216 bytes .../src-tauri/icons/Square71x71Logo.png | Bin 6027 -> 4743 bytes .../src-tauri/icons/Square89x89Logo.png | Bin 7551 -> 6744 bytes apps/desktop/src-tauri/icons/StoreLogo.png | Bin 3971 -> 2698 bytes .../android/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../icons/android/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2309 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 0 -> 17468 bytes .../android/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 2434 bytes .../icons/android/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2162 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 0 -> 9482 bytes .../android/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2337 bytes .../android/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 6436 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 0 -> 27544 bytes .../mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 7080 bytes .../android/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 12195 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 0 -> 49255 bytes .../mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 13592 bytes .../android/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 18655 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 0 -> 74959 bytes .../mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 20875 bytes .../android/values/ic_launcher_background.xml | 4 + apps/desktop/src-tauri/icons/icon.icns | Bin 277003 -> 1147267 bytes apps/desktop/src-tauri/icons/icon.ico | Bin 37710 -> 270398 bytes apps/desktop/src-tauri/icons/icon.png | Bin 49979 -> 131502 bytes .../src-tauri/icons/ios/AppIcon-20x20@1x.png | Bin 0 -> 713 bytes .../icons/ios/AppIcon-20x20@2x-1.png | Bin 0 -> 1875 bytes .../src-tauri/icons/ios/AppIcon-20x20@2x.png | Bin 0 -> 1875 bytes .../src-tauri/icons/ios/AppIcon-20x20@3x.png | Bin 0 -> 3543 bytes .../src-tauri/icons/ios/AppIcon-29x29@1x.png | Bin 0 -> 1132 bytes .../icons/ios/AppIcon-29x29@2x-1.png | Bin 0 -> 3363 bytes .../src-tauri/icons/ios/AppIcon-29x29@2x.png | Bin 0 -> 3363 bytes .../src-tauri/icons/ios/AppIcon-29x29@3x.png | Bin 0 -> 6597 bytes .../src-tauri/icons/ios/AppIcon-40x40@1x.png | Bin 0 -> 1875 bytes .../icons/ios/AppIcon-40x40@2x-1.png | Bin 0 -> 5664 bytes .../src-tauri/icons/ios/AppIcon-40x40@2x.png | Bin 0 -> 5664 bytes .../src-tauri/icons/ios/AppIcon-40x40@3x.png | Bin 0 -> 11049 bytes .../src-tauri/icons/ios/AppIcon-512@2x.png | Bin 0 -> 285653 bytes .../src-tauri/icons/ios/AppIcon-60x60@2x.png | Bin 0 -> 11049 bytes .../src-tauri/icons/ios/AppIcon-60x60@3x.png | Bin 0 -> 20560 bytes .../src-tauri/icons/ios/AppIcon-76x76@1x.png | Bin 0 -> 5259 bytes .../src-tauri/icons/ios/AppIcon-76x76@2x.png | Bin 0 -> 15638 bytes .../icons/ios/AppIcon-83.5x83.5@2x.png | Bin 0 -> 18469 bytes apps/desktop/src-tauri/src/icon.png | Bin 0 -> 448921 bytes apps/desktop/src-tauri/tauri.conf.json | 4 +- apps/realtime/src/index.ts | 31 +-- apps/realtime/src/services/channel-access.ts | 2 + apps/realtime/src/services/notifications.ts | 11 + apps/web/public/townhallicon.png | Bin 0 -> 556844 bytes apps/web/src/components/auth/auth-layout.tsx | 23 ++ .../src/components/auth/password-input.tsx | 34 +++ .../sidebar/channel-panel/channel-list.tsx | 106 ++++----- apps/web/src/context/unread-context.tsx | 21 +- apps/web/src/hooks/use-auto-mark-read.ts | 1 + .../src/hooks/use-browser-notifications.ts | 15 +- apps/web/src/lib/notification-dispatcher.ts | 7 +- apps/web/src/routes/check-email.tsx | 96 ++++++++ apps/web/src/routes/forgot-password.tsx | 134 +++++++++++ apps/web/src/routes/login.tsx | 161 +++++++++----- apps/web/src/routes/reset-password.tsx | 170 ++++++++++++++ apps/web/src/routes/signup.tsx | 209 +++++++++++------- package.json | 1 + packages/auth/package.json | 3 +- packages/auth/src/lib/auth.ts | 64 +++++- packages/env/src/server.ts | 4 +- packages/realtime-types/src/events.ts | 3 + pnpm-lock.yaml | 54 +++++ turbo.json | 2 +- 77 files changed, 952 insertions(+), 213 deletions(-) create mode 100644 apps/desktop/src-tauri/icons/64x64.png create mode 100644 apps/desktop/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 apps/desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png create mode 100644 apps/desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png create mode 100644 apps/desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png create mode 100644 apps/desktop/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png create mode 100644 apps/desktop/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png create mode 100644 apps/desktop/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png create mode 100644 apps/desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png create mode 100644 apps/desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png create mode 100644 apps/desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png create mode 100644 apps/desktop/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png create mode 100644 apps/desktop/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png create mode 100644 apps/desktop/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 apps/desktop/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png create mode 100644 apps/desktop/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png create mode 100644 apps/desktop/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 apps/desktop/src-tauri/icons/android/values/ic_launcher_background.xml create mode 100644 apps/desktop/src-tauri/icons/ios/AppIcon-20x20@1x.png create mode 100644 apps/desktop/src-tauri/icons/ios/AppIcon-20x20@2x-1.png create mode 100644 apps/desktop/src-tauri/icons/ios/AppIcon-20x20@2x.png create mode 100644 apps/desktop/src-tauri/icons/ios/AppIcon-20x20@3x.png create mode 100644 apps/desktop/src-tauri/icons/ios/AppIcon-29x29@1x.png create mode 100644 apps/desktop/src-tauri/icons/ios/AppIcon-29x29@2x-1.png create mode 100644 apps/desktop/src-tauri/icons/ios/AppIcon-29x29@2x.png create mode 100644 apps/desktop/src-tauri/icons/ios/AppIcon-29x29@3x.png create mode 100644 apps/desktop/src-tauri/icons/ios/AppIcon-40x40@1x.png create mode 100644 apps/desktop/src-tauri/icons/ios/AppIcon-40x40@2x-1.png create mode 100644 apps/desktop/src-tauri/icons/ios/AppIcon-40x40@2x.png create mode 100644 apps/desktop/src-tauri/icons/ios/AppIcon-40x40@3x.png create mode 100644 apps/desktop/src-tauri/icons/ios/AppIcon-512@2x.png create mode 100644 apps/desktop/src-tauri/icons/ios/AppIcon-60x60@2x.png create mode 100644 apps/desktop/src-tauri/icons/ios/AppIcon-60x60@3x.png create mode 100644 apps/desktop/src-tauri/icons/ios/AppIcon-76x76@1x.png create mode 100644 apps/desktop/src-tauri/icons/ios/AppIcon-76x76@2x.png create mode 100644 apps/desktop/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png create mode 100644 apps/desktop/src-tauri/src/icon.png create mode 100644 apps/web/public/townhallicon.png create mode 100644 apps/web/src/components/auth/auth-layout.tsx create mode 100644 apps/web/src/components/auth/password-input.tsx create mode 100644 apps/web/src/routes/check-email.tsx create mode 100644 apps/web/src/routes/forgot-password.tsx create mode 100644 apps/web/src/routes/reset-password.tsx diff --git a/apps/desktop/src-tauri/icons/128x128.png b/apps/desktop/src-tauri/icons/128x128.png index 77e7d2338e9d8ccffc731198dc584906627c903f..dfd7df26e7cdbec8fc973cb28da808ef840c1707 100644 GIT binary patch literal 15930 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 literal 11059 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 NR#Hi#PRuyu{{dThfb9SP literal 12530 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 IM6N<$g7Cm5Jpcdz diff --git a/apps/desktop/src-tauri/icons/Square150x150Logo.png b/apps/desktop/src-tauri/icons/Square150x150Logo.png index dc2b22cea563cca761896877ed8d72502c8fa241..f13469c29091c53018ad2cc74ee3bcedfb5de56f 100644 GIT binary patch literal 15714 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 literal 25943 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 diff --git a/apps/desktop/src-tauri/icons/Square30x30Logo.png b/apps/desktop/src-tauri/icons/Square30x30Logo.png index 60bf0eadf75c86e5d25cc1da13fe5ecc2c39c559..bc05cdd416131743f77535282b287c2d2ecce833 100644 GIT binary patch delta 1227 zcmV;+1T_1e5Z(!pBYy;?Nkl)YMq2#$=Nw*_}D(^*wXW%$(WX zBn7EXSTZx`<2mp1yk8R|xC}seh?fGmxPPcX`(1Hp?fJR(G=DOqx{5fQ)Rtf80XA#* zJr`@5h6%AU3pYA{7gm!6v=0k&?U`j}^Qq4`_GVEZ#|67e zIZTV-jzN_);9%wu=PD5FCWh;}*68&27C%cFy{^p9gt1XZ(j?~^T%C`YYJM^tc)(fu zj#=nzK?UsX4_i2LTw(FM3|BApu(GJpXgV1x)_G{us(+f3(EgKi5=AC0j-pdQXN1LX zHI6(N}V%hytDZ5ZsxxHch4yk|Lx2Q2lcq+p%RI^)xX`I8AwzLwzW zxdxI$;!r{_wlp3;s&L}P7+1bZvGhZR?hX(|aDPc9h+^Ig*a$ZfQR%@h-7ubcA;L?i zo0vHqBNn=UzpY`Gbna{{YhuZ@hmXcG9^u5x2A96m;1&+cINJ`146ZvvY5csA_vJnyS3upLp*tEmT>BgCMF+=FxDo#^}z^6Tfmdg#(3q;k^Eh=rAm(uUA!N=tj8Z8pE!h! zZ^?uycFK^+^&=d6KE`8DDeP=9cDD%Ye}5XJJ(DMlT?wPH35AJig;v|Gw;6DX;|VQ-&t5|`+ut{ z4}^kSuWXq0#SiB?6ZUEZ%1Nqd1%eYhDeBhpK!UF_1^YNUkZQJ<a zA3~t3TVnU5eCuJrJ!wH>q9k&ot~(+Z=&muK!RqB%p~AXcQ!2BbN2YuaP+~C#fG4Ey z-PL9-bwa1)+RJ*O=qu6eOH7cA`LzH5002ovPDHLkV1knURww`f delta 2066 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

VOk+>WoFCBI^5-hJc*yz2g4fQhDRK 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 diff --git a/apps/desktop/src-tauri/icons/Square44x44Logo.png b/apps/desktop/src-tauri/icons/Square44x44Logo.png index 8756459b63d6e8dd6003b97613befbe2743441cb..80cf66e598fdbe7c2f67f0a38b7ed9f3fee2424e 100644 GIT binary patch delta 2205 zcmV;O2x9l!8mJMFBYy~QNklyKxqZO4uS*pUd16CuJUK`0VJ zQGy~cjua#mC5Qz=*&vw>VS`|WSh3-=VZ(-O`3R6$MD~UdjDiD5!6b34$ew(N9f!md z&-BdnO!s?rx%GQh^`^(uLPD}7Mtaj-@71fib?>?7e!9dB_J3F2@B)7iP`F>N>*4Pi z=Y zTKkRDb(po>9LVjH>iqCYBU{jPgoJ^Cm_Qajx~HSQJgT&8pqvSct>y?vrXn9_^ZXYk zmah~aaQH`H|9^hi!ybYe^M%6Isy4$XgKSeVENc$eE5=y!hAdf9`#HJ2*l($tF*g#L zIm}UJmH|<25M|#m_mz9@1tqsZB}(o?({N{&5EvB7=z~i6C^=OrMWLM_i6+?#@9$Hh zVY8Z+2})j6;XV0I?2c{k!3k@ZGV{zA(rRW}g?IQRF7d@?#6qeY_}4-O7s2>_uSOFKe>ycZ`J4#Kui z&drA28iku*b`|PMVfTK*(QogGR(|?2xUdvGdY!wwS&9iA(MJXDpNf$Qw zV$YXEiH77Vgta$TS%ejVJHSt$7-IR|8b|If@W#s;laYBAj6xoQ>~QO$#N;)+4J^uO zI&VCk$kP{R6hVn810@*@uZp>Ey;I@QC+6^>dph{QZ3@5o$r_$JF~Q!O37x*otCK*N zaDQ(`XFSc_wh@@L3zN}D*$W*P4hLrhOArcq=fSV^aP0A2=pK+|C0g#kqrmYWE#TB| zHt~mFY+$tNLOC^P$i)f{tG&v277PcCMSn_6?=PKPW@0VE?LDAy@3AhrdkF8Go8Z?! zSjFP$u~o@EpY7p&A1qN#*jbBXASVuv9e*6%KiNjhYP+D3MqRr>LTl98tShE|^OYLU z{(b@+B)o8Hj9>n2gg^go(~kdnYJ!*kGC_Y%gwoNWGbL!x+ei};nvK>h@%z&_;VC;V zHHi;fy0i0Tx4Hr@KV4bVfBn02*c<_`J!Qtap{}BEcxU#YplEtWorw^vXTY#RlYa+f zoXg4K$>p$>D0IB$Y7xVXsZ?IIlhXn{)?w0)=3m#Y`? z)i5vzMff|jYPcOB8YlB~W;D4rGPost?7k9rKhVJ)!V2B}rQ@YdMzv%@a)Co1(KvKh z7oYiJ7q7lp;mn`LID5LnyB9Tz4u33jgq)MJERbvpx}(6gb_sWy`x6Nymq$6Gr!%y zMZtcjYhI@&s;168lZI3Ma==+Qxd>B>^Dn-ju`VXBCbbQ>Z!OlM<+6NB9hw5Af@5bMo%`baqe$p3~mCBeXB3p1z!H^7;DQKUpU^Cc?HftKfz@=)Ps)+JRa`i z?6YHmMJ>WRZK#m@`Luu&I)B|UTgy|5rfg_JN2f>Dd9J)=@IvwlF*)JVqN^w`U8t<1 zU4C80wZgyO)E1xXlC`a^$hGV;IFr%E;*&v1zDzUc63Tn6PfjS*Zxo|m5z;_2SqkgX zn#S;ocBdDO8D2Jmn0&(ARK_aHY;kTvv!Nol4>tuMCmD7_r88mJhkxcQ#*T{)7LSgcr7UwK+{D%WcHEY}~fyCs-rBK`Y ziU~R{_s$Z_?bG3F)O5bm4T()!hkp3p5=X?_m#@?~@#9qyfb8baofu>Ip0sXCDHn;FS@eHq?p zVF?>#>KI&NHp7;Z;G-fZkyHDlSZ-IwIT0%iO5#3fyP|m-54(CRslI*4^mSM0C2+g# z)TTko+5{Z(8EP{?dRj`FG(20GuYI#4=BC^`L$64kkj+3%f~Q zHJ(dJ4>*=4lsK7+$!ONSAxd(SY#(ZnKuJE~>93p<8Lp0Lu)V;(!!0kJTpAnn@DR2= zmK92V(vT} delta 3417 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 diff --git a/apps/desktop/src-tauri/icons/Square71x71Logo.png b/apps/desktop/src-tauri/icons/Square71x71Logo.png index 2c8023cc824417a29378a68471b8fb3af33fdeb0..afd39c102a43206b0aa408b3764039eeab3aa901 100644 GIT binary patch literal 4743 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 VPmp`%>^cAd002ovPDHLkV1oai>LLID literal 6027 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�rop@t+= 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 V#?y`xQ)U1F002ovPDHLkV1n!EW;y@> diff --git a/apps/desktop/src-tauri/icons/StoreLogo.png b/apps/desktop/src-tauri/icons/StoreLogo.png index 17d142c0a43208db62ca28b86a3239329ac93aea..ca3f6963c46985e1a7ef9dd826b68adc0c4b0081 100644 GIT binary patch delta 2690 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 literal 3971 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 diff --git a/apps/desktop/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml b/apps/desktop/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..2ffbf24 --- /dev/null +++ b/apps/desktop/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/apps/desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png b/apps/desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..7acb94199e0b027c9b65e362fefdb3ebbf55e6ef GIT binary patch literal 2309 zcmV+g3HtVlP)`+l}#=VRyF9|<3&B0(sKqJjXCib0VO0|uxA28i#35fUQ?Oc)^nLI_nI zF+hw;sYE~^Kmt)wkV-{VO4W$8v?U>l9mmh{``@$K=XcL}&-U}PU!@9UN6*hW_ug~% zckQ+J&GCQmlkY3Buf)C*yHnykLCwgwehY+C@@dKEGLJugM`+DPm5pxanU(ErkZ%`4#sdqYz{UC6FYXNR4%x3wU{QvgRQ^kOAvsuty(P(A zLvr1&YeuFvYry`Omg{7$GwTA>IFjSauljiO0=k_(fwl^*EtN1iU_xkJE43;LH2eBg zX3vmah&Q=X`|qtnCahWAjez7_$f@}gx7hs(wtr}GhtdkIfl`NL{qAl&p?yf?Y(t`* z$sx)uDNbWh)(Pwdbg~3*q=8E1?NlmMD(C+qrL02Q>m<%Ff97JewsA~v47iL>?7rPs zxpP>)?NQPF{x|Wc7mUwbpmC~*_eNC9OU&fFlz0?gLHVb4N?tWl+Orpi*>CI~q*NiF z17z+YDiuhD((JtE(u%#;*yvEI8=hp2dk?0n6L|<%Cx-G_tVa|W@ zpVmH%{DYKO!G>j$=td#EgD1u-QA8mOqOjjIjrr2`$(o566=alOgRX4VceXZrR2#Bi z9(Cr@d(mh?5o5Q?4&E5Ag!UT}+k=>6Y-5XXNMf0Gg?!k!hgm0xMiKd@4ySm83k4Si}j+$XAs$xywV;4WG0HIYVTY)!eo z$~b;M;jcgK;OQTbrby)Is;JHg`t@|=NepK~!y$O>8PSqT+UMR{;93sy)< zq6nlW7c#P8WR&~lm+JV~XB(1F3IqB7(?4v1MVf<43WYCt

{canManage && ( { if (!socket) return - // Optimistically clear + let snapshot: UnreadState | undefined setStateMap((prev) => { const next = new Map(prev) + snapshot = prev.get(channelId) next.delete(channelId) return next }) - socket.emit("channel:mark-read", { - channelId, - lastReadMessageId, - }) + socket.emit( + "channel:mark-read", + { channelId, lastReadMessageId }, + (res: { ok: boolean }) => { + if (!res.ok && snapshot) { + const restore = snapshot + setStateMap((prev) => { + const next = new Map(prev) + next.set(channelId, restore) + return next + }) + } + } + ) }, [socket] ) diff --git a/apps/web/src/hooks/use-auto-mark-read.ts b/apps/web/src/hooks/use-auto-mark-read.ts index 45b84d6..6b6c88f 100644 --- a/apps/web/src/hooks/use-auto-mark-read.ts +++ b/apps/web/src/hooks/use-auto-mark-read.ts @@ -25,6 +25,7 @@ export function useAutoMarkRead(channelId: string | undefined) { // Mark read on mount useEffect(() => { if (!channelId) return + if (document.visibilityState !== "visible") return debouncedMarkRead() return () => { if (timerRef.current) clearTimeout(timerRef.current) diff --git a/apps/web/src/hooks/use-browser-notifications.ts b/apps/web/src/hooks/use-browser-notifications.ts index acc9cff..b480f2b 100644 --- a/apps/web/src/hooks/use-browser-notifications.ts +++ b/apps/web/src/hooks/use-browser-notifications.ts @@ -34,7 +34,8 @@ export function useBrowserNotifications() { const onMention = (payload: MentionNotification) => { if (document.visibilityState === "visible") return - if (settings?.desktopNotifications === "nothing") return + if (!settings) return + if (settings.desktopNotifications === "nothing") return const mentionType = payload.type === "everyone_mention" ? "@everyone" : "a mention" @@ -46,14 +47,22 @@ export function useBrowserNotifications() { const onUnread = (payload: UnreadNotification) => { if (document.visibilityState === "visible") return - if (settings?.desktopNotifications !== "all_messages") return + if (!settings) return + if (settings.desktopNotifications !== "all_messages") return // For DMs, check dmNotifications setting if (payload.guildId === null && settings?.dmNotifications === "nothing") { return } - showNotification("New Message", "You have a new message", { + const title = payload.authorName + const body = payload.contentPreview + ? payload.channelName + ? `#${payload.channelName}: ${payload.contentPreview}` + : payload.contentPreview + : "Sent an attachment" + + showNotification(title, body, { tag: `unread-${payload.channelId}`, }) } diff --git a/apps/web/src/lib/notification-dispatcher.ts b/apps/web/src/lib/notification-dispatcher.ts index 46049a6..ed04d7d 100644 --- a/apps/web/src/lib/notification-dispatcher.ts +++ b/apps/web/src/lib/notification-dispatcher.ts @@ -63,7 +63,12 @@ export async function showNotification( const { sendNotification } = await import( "@tauri-apps/plugin-notification" ) - sendNotification({ title, body }) + // Tauri notifications don't support click callbacks natively + sendNotification({ + title, + body, + ...(options?.tag && { tag: options.tag }), + }) } catch { // Tauri notification plugin not available } diff --git a/apps/web/src/routes/check-email.tsx b/apps/web/src/routes/check-email.tsx new file mode 100644 index 0000000..cacad33 --- /dev/null +++ b/apps/web/src/routes/check-email.tsx @@ -0,0 +1,96 @@ +import { authClient } from "@repo/auth/client" +import { Button } from "@repo/ui/components/button" +import { + Card, + CardContent, + CardFooter, + CardHeader, +} from "@repo/ui/components/card" +import { useMutation } from "@tanstack/react-query" +import { createFileRoute, Link } from "@tanstack/react-router" +import { Loader2, Mail, MailCheck } from "lucide-react" +import { AuthLayout } from "../components/auth/auth-layout" + +export const Route = createFileRoute("/check-email")({ + component: CheckEmailPage, + validateSearch: (search: Record) => ({ + email: (search.email as string) ?? "", + }), +}) + +function CheckEmailPage() { + const { email } = Route.useSearch() + + const { + mutate: resendEmail, + isPending, + isSuccess, + } = useMutation({ + mutationFn: async () => { + if (!email) return + const { error } = await authClient.sendVerificationEmail({ + email, + callbackURL: "/login", + }) + if (error) + throw new Error(error.message ?? "Failed to resend verification email") + }, + }) + + return ( + + + +
+ +
+
+

+ Check your email +

+

+ We sent a verification link to +

+ {email &&

{email}

} +
+
+ +

+ Click the link in the email to verify your account. If you don't see + it, check your spam folder. +

+
+ + {email && ( + + )} + + Back to sign in + + +
+
+ ) +} diff --git a/apps/web/src/routes/forgot-password.tsx b/apps/web/src/routes/forgot-password.tsx new file mode 100644 index 0000000..67d5f40 --- /dev/null +++ b/apps/web/src/routes/forgot-password.tsx @@ -0,0 +1,134 @@ +import { authClient } from "@repo/auth/client" +import { Button } from "@repo/ui/components/button" +import { + Card, + CardContent, + CardDescription, + CardFooter, + CardHeader, + CardTitle, +} from "@repo/ui/components/card" +import { Input } from "@repo/ui/components/input" +import { Label } from "@repo/ui/components/label" +import { useMutation } from "@tanstack/react-query" +import { createFileRoute, Link } from "@tanstack/react-router" +import { AlertCircle, ArrowLeft, Loader2, MailCheck } from "lucide-react" +import { type FormEvent, useState } from "react" +import { AuthLayout } from "../components/auth/auth-layout" + +export const Route = createFileRoute("/forgot-password")({ + component: ForgotPasswordPage, +}) + +function ForgotPasswordPage() { + const [email, setEmail] = useState("") + + const { + mutate: sendReset, + isPending, + isSuccess, + error, + } = useMutation({ + mutationFn: async () => { + const { error } = await authClient.requestPasswordReset({ + email, + redirectTo: "/reset-password", + }) + if (error) throw new Error(error.message ?? "Failed to send reset email") + }, + }) + + if (isSuccess) { + return ( + + + +
+ +
+
+

+ Check your email +

+

+ If an account exists for{" "} + {email}, we + sent a password reset link. +

+
+
+ + + + Back to sign in + + +
+
+ ) + } + + return ( + + + + + Reset password + + + Enter your email and we'll send you a reset link + + +
{ + e.preventDefault() + sendReset() + }} + > + + {error && ( +
+ + {error.message} +
+ )} +
+ + setEmail(e.target.value)} + autoComplete="email" + required + /> +
+
+ + + + + Back to sign in + + +
+
+
+ ) +} diff --git a/apps/web/src/routes/login.tsx b/apps/web/src/routes/login.tsx index 38bf79a..66d52a1 100644 --- a/apps/web/src/routes/login.tsx +++ b/apps/web/src/routes/login.tsx @@ -4,7 +4,6 @@ import { Card, CardContent, CardDescription, - CardFooter, CardHeader, CardTitle, } from "@repo/ui/components/card" @@ -12,7 +11,9 @@ import { Input } from "@repo/ui/components/input" import { Label } from "@repo/ui/components/label" import { useMutation } from "@tanstack/react-query" import { createFileRoute, Link, useNavigate } from "@tanstack/react-router" +import { AlertCircle, Loader2 } from "lucide-react" import { type FormEvent, useEffect, useState } from "react" +import { PasswordInput } from "../components/auth/password-input" export const Route = createFileRoute("/login")({ component: LoginPage, @@ -36,66 +37,116 @@ function LoginPage() { error, } = useMutation({ mutationFn: async () => { - const { error } = await authClient.signIn.email({ email, password }) - if (error) throw new Error(error.message ?? "Failed to sign in") + const { error } = await authClient.signIn.email({ + email, + password, + }) + if (error) { + // 403 = email not verified — better-auth re-sends the verification email automatically + if (error.status === 403) { + navigate({ to: "/check-email", search: { email } }) + return + } + throw new Error(error.message ?? "Failed to sign in") + } }, onSuccess: () => navigate({ to: "/" }), }) return ( -
- - - Login - - Enter your credentials to access your account - - -
{ - e.preventDefault() - signIn() - }} +
+
+ - - {error && ( -

{error.message}

- )} -
- - setEmail(e.target.value)} - required - /> -
-
- - setPassword(e.target.value)} - required - /> -
-
- - -

- Don't have an account?{" "} - - Sign up - -

-
- - + Townhall + Townhall + +
+ + + Welcome back + + Sign in to your Townhall account + + + +
{ + e.preventDefault() + signIn() + }} + > +
+ {error && ( +
+ + {error.message} +
+ )} +
+ + setEmail(e.target.value)} + autoComplete="email" + required + /> +
+
+
+ + + Forgot password? + +
+ setPassword(e.target.value)} + autoComplete="current-password" + required + /> +
+
+ +

+ Don't have an account?{" "} + + Sign up + +

+
+
+
+
+
+
+
) } diff --git a/apps/web/src/routes/reset-password.tsx b/apps/web/src/routes/reset-password.tsx new file mode 100644 index 0000000..99cba57 --- /dev/null +++ b/apps/web/src/routes/reset-password.tsx @@ -0,0 +1,170 @@ +import { authClient } from "@repo/auth/client" +import { Button } from "@repo/ui/components/button" +import { + Card, + CardContent, + CardDescription, + CardFooter, + CardHeader, + CardTitle, +} from "@repo/ui/components/card" +import { Label } from "@repo/ui/components/label" +import { useMutation } from "@tanstack/react-query" +import { createFileRoute, Link, useNavigate } from "@tanstack/react-router" +import { AlertCircle, CheckCircle2, Loader2 } from "lucide-react" +import { type FormEvent, useState } from "react" +import { AuthLayout } from "../components/auth/auth-layout" +import { PasswordInput } from "../components/auth/password-input" + +export const Route = createFileRoute("/reset-password")({ + component: ResetPasswordPage, + validateSearch: (search: Record) => ({ + token: (search.token as string) ?? "", + }), +}) + +function ResetPasswordPage() { + const navigate = useNavigate() + const { token } = Route.useSearch() + const [password, setPassword] = useState("") + const [confirmPassword, setConfirmPassword] = useState("") + + const { + mutate: resetPassword, + isPending, + isSuccess, + error, + } = useMutation({ + mutationFn: async () => { + if (password !== confirmPassword) { + throw new Error("Passwords do not match") + } + const { error } = await authClient.resetPassword({ + newPassword: password, + token, + }) + if (error) throw new Error(error.message ?? "Failed to reset password") + }, + }) + + if (!token) { + return ( + + + +
+ +
+
+

+ Invalid reset link +

+

+ This password reset link is invalid or has expired. +

+
+
+ + + Request a new reset link + + +
+
+ ) + } + + if (isSuccess) { + return ( + + + +
+ +
+
+

+ Password reset! +

+

+ Your password has been successfully reset. +

+
+
+ + + +
+
+ ) + } + + return ( + + + + + Set new password + + Enter your new password below + +
{ + e.preventDefault() + resetPassword() + }} + > + + {error && ( +
+ + {error.message} +
+ )} +
+ + setPassword(e.target.value)} + minLength={8} + autoComplete="new-password" + required + /> +
+
+ + setConfirmPassword(e.target.value)} + minLength={8} + autoComplete="new-password" + required + /> +
+
+ + + +
+
+
+ ) +} diff --git a/apps/web/src/routes/signup.tsx b/apps/web/src/routes/signup.tsx index 4e93d20..85c120d 100644 --- a/apps/web/src/routes/signup.tsx +++ b/apps/web/src/routes/signup.tsx @@ -4,7 +4,6 @@ import { Card, CardContent, CardDescription, - CardFooter, CardHeader, CardTitle, } from "@repo/ui/components/card" @@ -12,7 +11,9 @@ import { Input } from "@repo/ui/components/input" import { Label } from "@repo/ui/components/label" import { useMutation } from "@tanstack/react-query" import { createFileRoute, Link, useNavigate } from "@tanstack/react-router" +import { AlertCircle, Loader2 } from "lucide-react" import { type FormEvent, useEffect, useState } from "react" +import { PasswordInput } from "../components/auth/password-input" export const Route = createFileRoute("/signup")({ component: SignUpPage, @@ -43,88 +44,144 @@ function SignUpPage() { username, email, password, + callbackURL: "/login", }) if (error) throw new Error(error.message ?? "Failed to create account") }, - onSuccess: () => navigate({ to: "/" }), + onSuccess: () => + navigate({ + to: "/check-email", + search: { email }, + }), }) return ( -
- - - Sign up - Create your Townhall account - -
{ - e.preventDefault() - signUp() - }} +
+
+ - - {error && ( -

{error.message}

- )} -
- - setName(e.target.value)} - required - /> -
-
- - setUsername(e.target.value)} - required - /> -
-
- - setEmail(e.target.value)} - required - /> -
-
- - setPassword(e.target.value)} - minLength={8} - required - /> -
-
- - -

- Already have an account?{" "} - - Sign in - -

-
- - + Townhall + Townhall + +
+ + + Create your account + + Enter your information below to get started + + + +
{ + e.preventDefault() + signUp() + }} + > +
+ {error && ( +
+ + {error.message} +
+ )} +
+
+ + setName(e.target.value)} + autoComplete="name" + required + /> +
+
+ + setUsername(e.target.value)} + autoComplete="username" + required + /> +
+
+
+ + setEmail(e.target.value)} + autoComplete="email" + required + /> +
+
+ + setPassword(e.target.value)} + minLength={8} + autoComplete="new-password" + required + /> +

+ Must be at least 8 characters long. +

+
+
+ +

+ Already have an account?{" "} + + Sign in + +

+
+
+
+
+
+

+ By clicking continue, you agree to our{" "} + + Terms of Service + {" "} + and{" "} + + Privacy Policy + + . +

+
+
) } diff --git a/package.json b/package.json index fe86c68..592800e 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "generate:auth-schema": "pnpm --filter @repo/auth exec npx @better-auth/cli@latest generate --output ../../packages/db/src/generated-schema.ts", "db:push": "pnpm --filter @repo/db db:push", "db:studio": "pnpm --filter @repo/db db:studio", + "desktop": "pnpm --filter desktop dev", "prepare": "husky" }, "devDependencies": { diff --git a/packages/auth/package.json b/packages/auth/package.json index 46e8ba3..f0d5e19 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -11,7 +11,8 @@ "@repo/db": "workspace:*", "@repo/env": "workspace:*", "better-auth": "^1.4.18", - "ioredis": "^5.10.0" + "ioredis": "^5.10.0", + "resend": "^6.9.4" }, "devDependencies": { "@repo/typescript-config": "workspace:*" diff --git a/packages/auth/src/lib/auth.ts b/packages/auth/src/lib/auth.ts index c867368..f15ede2 100644 --- a/packages/auth/src/lib/auth.ts +++ b/packages/auth/src/lib/auth.ts @@ -5,6 +5,7 @@ import { drizzleAdapter } from "better-auth/adapters/drizzle" import { betterAuth } from "better-auth/minimal" import { admin, organization, twoFactor, username } from "better-auth/plugins" import Redis from "ioredis" +import { Resend } from "resend" import { ac, admin as adminRole, @@ -14,6 +15,7 @@ import { } from "./permissions" const redis = new Redis(env.REDIS_URL) +const resend = new Resend(env.RESEND_API_KEY) const defaultGuildChannels = { uncategorized: [ @@ -122,17 +124,73 @@ export const auth = betterAuth({ }, }, }, - trustedOrigins: - env.NODE_ENV === "development" + trustedOrigins: [ + ...(env.NODE_ENV === "development" ? [ "http://localhost:3000", "http://localhost:3001", "http://127.0.0.1:3000", "http://127.0.0.1:3001", ] - : [], + : []), + "tauri://localhost", + ], emailAndPassword: { enabled: true, + requireEmailVerification: true, + async sendResetPassword({ user, url }) { + resend.emails + .send({ + from: env.EMAIL_FROM, + to: user.email, + subject: "Reset your Townhall password", + html: ` +
+

Reset Your Password

+

Click the button below to reset your password.

+
Reset Password +

If you didn't request a password reset, you can safely ignore this email.

+
+ `, + }) + .then(({ data, error }) => { + if (error) { + console.error("Failed to send reset password email:", error) + } else { + console.log("Reset password email sent:", data?.id) + } + }) + }, + }, + emailVerification: { + sendOnSignIn: true, + async sendVerificationEmail({ user, url }) { + console.error( + `[TOWNHALL EMAIL] Sending verification email to ${user.email} from ${env.EMAIL_FROM}` + ) + try { + const { data, error } = await resend.emails.send({ + from: env.EMAIL_FROM, + to: user.email, + subject: "Verify your Townhall email", + html: ` +
+

Welcome to Townhall

+

Click the button below to verify your email address and get started.

+ Verify Email +

If you didn't create a Townhall account, you can safely ignore this email.

+
+ `, + }) + if (error) { + console.error("[TOWNHALL EMAIL] Resend error:", JSON.stringify(error)) + } else { + console.error("[TOWNHALL EMAIL] Sent successfully, id:", data?.id) + } + } catch (err) { + console.error("[TOWNHALL EMAIL] Exception:", err) + } + }, }, advanced: { cookiePrefix: "townhall", diff --git a/packages/env/src/server.ts b/packages/env/src/server.ts index 623542b..3a0d61c 100644 --- a/packages/env/src/server.ts +++ b/packages/env/src/server.ts @@ -21,7 +21,7 @@ const addProtocol = (url: string) => { /** 20 MB default — keep in sync with client.ts */ const DEFAULT_MAX_FILE_UPLOAD_SIZE = 20 * 1024 * 1024 const DEFAULT_REALTIME_CORS_ORIGIN = - "http://localhost:3000,http://localhost:3001" + "http://localhost:3000,http://localhost:3001,tauri://localhost" const serverSchema = z.object({ NODE_ENV: z @@ -42,6 +42,8 @@ const serverSchema = z.object({ S3_BUCKET_NAME: z.string().min(1), S3_REGION: z.string().default("auto"), S3_PUBLIC_URL: z.string().url(), + RESEND_API_KEY: z.string().min(1), + EMAIL_FROM: z.string().default("Townhall "), }) export const env = serverSchema.parse(process.env) diff --git a/packages/realtime-types/src/events.ts b/packages/realtime-types/src/events.ts index a6b21b7..86f145a 100644 --- a/packages/realtime-types/src/events.ts +++ b/packages/realtime-types/src/events.ts @@ -209,6 +209,9 @@ export type UnreadNotification = { guildId: string | null messageId: string unreadCountDelta: number + authorName: string + contentPreview: string | null + channelName: string | null } export type MentionNotification = { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3f41fbd..a0c66c0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -422,6 +422,9 @@ importers: ioredis: specifier: ^5.10.0 version: 5.10.0 + resend: + specifier: ^6.9.4 + version: 6.9.4 devDependencies: '@repo/typescript-config': specifier: workspace:* @@ -2940,6 +2943,9 @@ packages: '@socket.io/redis-emitter@5.1.0': resolution: {integrity: sha512-QQUFPBq6JX7JIuM/X1811ymKlAfwufnQ8w6G2/59Jaqp09hdF1GJ/+e8eo/XdcmT0TqkvcSa2TT98ggTXa5QYw==} + '@stablelib/base64@1.0.1': + resolution: {integrity: sha512-1bnPQqSxSuc3Ii6MhBysoWCg58j97aUjuCSZrGSmDxNqtytIi0k8utUenAwTZN4V5mXXYGsVUI9zeBqy+jBOSQ==} + '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} @@ -4235,6 +4241,9 @@ packages: fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + fast-sha256@1.3.0: + resolution: {integrity: sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==} + fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} @@ -5243,6 +5252,9 @@ packages: pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + postal-mime@2.7.3: + resolution: {integrity: sha512-MjhXadAJaWgYzevi46+3kLak8y6gbg0ku14O1gO/LNOuay8dO+1PtcSGvAdgDR0DoIsSaiIA8y/Ddw6MnrO0Tw==} + postcss-load-config@6.0.1: resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} engines: {node: '>= 18'} @@ -5532,6 +5544,15 @@ packages: reselect@5.1.1: resolution: {integrity: sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==} + resend@6.9.4: + resolution: {integrity: sha512-/M3dsJzu5OgozqVsA4Psd/1L7EdePgOIIxClas453GOQYFG3VHc2ZyCHZFlvqsc9aZCCd2BJRRqZgWC8D9c7/g==} + engines: {node: '>=20'} + peerDependencies: + '@react-email/render': '*' + peerDependenciesMeta: + '@react-email/render': + optional: true + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -5713,6 +5734,9 @@ packages: standard-as-callback@2.1.0: resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} + standardwebhooks@1.0.0: + resolution: {integrity: sha512-BbHGOQK9olHPMvQNHWul6MYlrRTAOKn03rOe4A8O3CLWhNf4YHBqq2HJKKC+sfqpxiBY52pNeesD6jIiLDz8jg==} + statuses@2.0.2: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} @@ -5790,6 +5814,9 @@ packages: engines: {node: '>=16 || 14 >=14.17'} hasBin: true + svix@1.86.0: + resolution: {integrity: sha512-/HTvXwjLJe1l/MsLXAO1ddCYxElJk4eNR4DzOjDOEmGrPN/3BtBE8perGwMAaJ2sT5T172VkBYzmHcjUfM1JRQ==} + tabbable@6.4.0: resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==} @@ -6041,6 +6068,10 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + uuid@10.0.0: + resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} + hasBin: true + uuid@11.1.0: resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} hasBin: true @@ -8762,6 +8793,8 @@ snapshots: transitivePeerDependencies: - supports-color + '@stablelib/base64@1.0.1': {} + '@standard-schema/spec@1.1.0': {} '@standard-schema/utils@0.3.0': {} @@ -10017,6 +10050,8 @@ snapshots: fast-safe-stringify@2.1.1: {} + fast-sha256@1.3.0: {} + fast-uri@3.1.0: {} fast-xml-builder@1.0.0: {} @@ -11195,6 +11230,8 @@ snapshots: mlly: 1.8.0 pathe: 2.0.3 + postal-mime@2.7.3: {} + postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.2): dependencies: lilconfig: 3.1.3 @@ -11600,6 +11637,11 @@ snapshots: reselect@5.1.1: {} + resend@6.9.4: + dependencies: + postal-mime: 2.7.3 + svix: 1.86.0 + resolve-from@4.0.0: {} resolve-from@5.0.0: {} @@ -11896,6 +11938,11 @@ snapshots: standard-as-callback@2.1.0: {} + standardwebhooks@1.0.0: + dependencies: + '@stablelib/base64': 1.0.1 + fast-sha256: 1.3.0 + statuses@2.0.2: {} stdin-discarder@0.2.2: {} @@ -11968,6 +12015,11 @@ snapshots: tinyglobby: 0.2.15 ts-interface-checker: 0.1.13 + svix@1.86.0: + dependencies: + standardwebhooks: 1.0.0 + uuid: 10.0.0 + tabbable@6.4.0: {} tagged-tag@1.0.0: {} @@ -12206,6 +12258,8 @@ snapshots: util-deprecate@1.0.2: {} + uuid@10.0.0: {} + uuid@11.1.0: {} validate-npm-package-name@7.0.2: {} diff --git a/turbo.json b/turbo.json index 9ad5f39..d51f876 100644 --- a/turbo.json +++ b/turbo.json @@ -1,6 +1,6 @@ { "$schema": "https://turborepo.dev/schema.json", - "ui": "tui", + "ui": "stream-with-experimental-timestamps", "tasks": { "build": { "dependsOn": ["^build"], From 4eec7ef9c20835542fa4e07fe9340e5229159d77 Mon Sep 17 00:00:00 2001 From: Jacob Owens Date: Mon, 30 Mar 2026 21:51:13 -0700 Subject: [PATCH 3/5] feat: fixed the login to use proper email verification, updated auth page styles, and made pinned messages open the right panel when collapsed --- .../onboarding/onboarding-dialog.tsx | 173 +++++++++++++++++- .../_authenticated/$guildSlug/$channelId.tsx | 10 +- apps/web/src/routes/check-email.tsx | 2 +- apps/web/src/routes/login.tsx | 3 +- apps/web/src/routes/signup.tsx | 42 ++--- packages/auth/src/lib/auth.ts | 4 +- packages/env/src/server.ts | 2 +- 7 files changed, 195 insertions(+), 41 deletions(-) diff --git a/apps/web/src/components/onboarding/onboarding-dialog.tsx b/apps/web/src/components/onboarding/onboarding-dialog.tsx index b699901..6f9aa42 100644 --- a/apps/web/src/components/onboarding/onboarding-dialog.tsx +++ b/apps/web/src/components/onboarding/onboarding-dialog.tsx @@ -11,14 +11,19 @@ import { } from "@repo/ui/components/dialog" import { Input } from "@repo/ui/components/input" import { Label } from "@repo/ui/components/label" +import { cn } from "@repo/ui/lib/utils" import { sluggify } from "@repo/utils/slug" import { useQueryClient } from "@tanstack/react-query" import { useNavigate } from "@tanstack/react-router" -import { ArrowLeft, Loader2, Plus, Users } from "lucide-react" -import { useEffect, useState } from "react" +import { ArrowLeft, Check, Loader2, Plus, Users, X } from "lucide-react" +import { useCallback, useEffect, useRef, useState } from "react" import { apiClient } from "@/lib/api-client" -type Step = "welcome" | "create" | "join" +type Step = "username" | "welcome" | "create" | "join" + +const MIN_USERNAME_LENGTH = 3 +const MAX_USERNAME_LENGTH = 30 +const USERNAME_REGEX = /^[a-zA-Z0-9_.]+$/ function normalizeSlugInput(value: string) { return value @@ -43,7 +48,12 @@ function parseInviteCode(value: string) { } export function OnboardingDialog({ open }: { open: boolean }) { - const [step, setStep] = useState("welcome") + const { data: session } = authClient.useSession() + const hasUsername = !!( + session?.user?.username && + session.user.username.length >= MIN_USERNAME_LENGTH + ) + const [step, setStep] = useState(hasUsername ? "welcome" : "username") const [name, setName] = useState("") const [slug, setSlug] = useState("") const [slugEdited, setSlugEdited] = useState(false) @@ -53,6 +63,75 @@ export function OnboardingDialog({ open }: { open: boolean }) { const queryClient = useQueryClient() const navigate = useNavigate() + // Username step state + const [username, setUsername] = useState("") + const [usernameAvailability, setUsernameAvailability] = useState< + "idle" | "checking" | "available" | "taken" | "invalid" + >("idle") + const usernameCheckTimer = useRef | null>(null) + + useEffect(() => { + return () => { + if (usernameCheckTimer.current) clearTimeout(usernameCheckTimer.current) + } + }, []) + + const handleUsernameChange = useCallback((value: string) => { + setUsername(value) + if (usernameCheckTimer.current) clearTimeout(usernameCheckTimer.current) + + const trimmed = value.trim() + if (!trimmed) { + setUsernameAvailability("idle") + return + } + if ( + trimmed.length < MIN_USERNAME_LENGTH || + trimmed.length > MAX_USERNAME_LENGTH || + !USERNAME_REGEX.test(trimmed) + ) { + setUsernameAvailability("invalid") + return + } + + setUsernameAvailability("checking") + usernameCheckTimer.current = setTimeout(async () => { + try { + const { data } = await authClient.isUsernameAvailable({ + username: trimmed, + }) + setUsernameAvailability((prev) => + prev === "checking" ? (data?.available ? "available" : "taken") : prev + ) + } catch { + setUsernameAvailability((prev) => (prev === "checking" ? "idle" : prev)) + } + }, 500) + }, []) + + const handleSetUsername = async (e: React.FormEvent) => { + e.preventDefault() + const trimmed = username.trim() + if (!trimmed || usernameAvailability !== "available") return + setError(null) + setLoading(true) + try { + const { error } = await authClient.updateUser({ + username: trimmed, + displayUsername: trimmed, + }) + if (error) { + setError(error.message ?? "Failed to set username") + return + } + setStep("welcome") + } catch { + setError("Something went wrong. Please try again.") + } finally { + setLoading(false) + } + } + useEffect(() => { if (!slugEdited) { setSlug(sluggify(name)) @@ -88,7 +167,11 @@ export function OnboardingDialog({ open }: { open: boolean }) { }) if (res.error) { - setError(res.error.message ?? "Failed to create guild") + const message = (res.error.message ?? "Failed to create guild").replace( + /organization/gi, + "Guild" + ) + setError(message) return } @@ -161,6 +244,86 @@ export function OnboardingDialog({ open }: { open: boolean }) { {/* Right content panel */}
+ {step === "username" && ( + <> + + + Choose a username + + + Pick a unique username for your Townhall identity. + + + +
+
+ +
+ handleUsernameChange(e.target.value)} + disabled={loading} + autoFocus + className={cn( + "pr-9", + usernameAvailability === "available" && + "border-green-500 focus-visible:ring-green-500/50", + (usernameAvailability === "taken" || + usernameAvailability === "invalid") && + "border-destructive focus-visible:ring-destructive/50" + )} + /> +
+ {usernameAvailability === "checking" && ( + + )} + {usernameAvailability === "available" && ( + + )} + {usernameAvailability === "taken" && ( + + )} + {usernameAvailability === "invalid" && ( + + )} +
+
+

+ 3–30 characters. Letters, numbers, underscores, and + periods only. +

+ {usernameAvailability === "taken" && ( +

+ That username is already taken. +

+ )} + {usernameAvailability === "invalid" && + username.trim().length > 0 && ( +

+ Username must be 3–30 characters using only letters, + numbers, underscores, and periods. +

+ )} +
+ + {error &&

{error}

} + + +
+ + )} + {step === "welcome" && ( <> diff --git a/apps/web/src/routes/_authenticated/$guildSlug/$channelId.tsx b/apps/web/src/routes/_authenticated/$guildSlug/$channelId.tsx index 1f2990d..54389ff 100644 --- a/apps/web/src/routes/_authenticated/$guildSlug/$channelId.tsx +++ b/apps/web/src/routes/_authenticated/$guildSlug/$channelId.tsx @@ -56,7 +56,8 @@ function ChannelView() { const socket = useSocket() useAutoMarkRead(channelId) const queryClient = useQueryClient() - const { view, setView, clearView } = useRightSidebar() + const { view, setView, clearView, isCollapsed, toggleCollapsed } = + useRightSidebar() const { data: session } = authClient.useSession() const currentUserId = session?.user.id const blockedUserIds = useBlockedUserIds() @@ -194,12 +195,15 @@ function ChannelView() { }) const togglePinnedMessages = useCallback(() => { - if (view?.type === "pinned-messages") { + if (view?.type === "pinned-messages" && !isCollapsed) { setView({ type: "guild-members", guildSlug, channelId }) } else { setView({ type: "pinned-messages", guildSlug, channelId }) + if (isCollapsed) { + toggleCollapsed() + } } - }, [view, setView, guildSlug, channelId]) + }, [view, setView, guildSlug, channelId, isCollapsed, toggleCollapsed]) const { replyingTo, setReplyingTo, clearReply } = useReplyState() diff --git a/apps/web/src/routes/check-email.tsx b/apps/web/src/routes/check-email.tsx index cacad33..398555c 100644 --- a/apps/web/src/routes/check-email.tsx +++ b/apps/web/src/routes/check-email.tsx @@ -30,7 +30,7 @@ function CheckEmailPage() { if (!email) return const { error } = await authClient.sendVerificationEmail({ email, - callbackURL: "/login", + callbackURL: `${window.location.origin}/`, }) if (error) throw new Error(error.message ?? "Failed to resend verification email") diff --git a/apps/web/src/routes/login.tsx b/apps/web/src/routes/login.tsx index 66d52a1..8d50e26 100644 --- a/apps/web/src/routes/login.tsx +++ b/apps/web/src/routes/login.tsx @@ -40,6 +40,7 @@ function LoginPage() { const { error } = await authClient.signIn.email({ email, password, + callbackURL: `${window.location.origin}/`, }) if (error) { // 403 = email not verified — better-auth re-sends the verification email automatically @@ -54,7 +55,7 @@ function LoginPage() { }) return ( -
+
{ const { error } = await authClient.signUp.email({ name, - username, email, password, - callbackURL: "/login", + callbackURL: `${window.location.origin}/`, }) if (error) throw new Error(error.message ?? "Failed to create account") }, @@ -56,7 +54,7 @@ function SignUpPage() { }) return ( -
+
{error.message}
)} -
-
- - setName(e.target.value)} - autoComplete="name" - required - /> -
-
- - setUsername(e.target.value)} - autoComplete="username" - required - /> -
+
+ + setName(e.target.value)} + autoComplete="name" + required + />
diff --git a/packages/auth/src/lib/auth.ts b/packages/auth/src/lib/auth.ts index f15ede2..b49c330 100644 --- a/packages/auth/src/lib/auth.ts +++ b/packages/auth/src/lib/auth.ts @@ -164,7 +164,9 @@ export const auth = betterAuth({ }, emailVerification: { sendOnSignIn: true, - async sendVerificationEmail({ user, url }) { + sendOnSignUp: true, + autoSignInAfterVerification: true, + async sendVerificationEmail({ user, url, token }) { console.error( `[TOWNHALL EMAIL] Sending verification email to ${user.email} from ${env.EMAIL_FROM}` ) diff --git a/packages/env/src/server.ts b/packages/env/src/server.ts index 3a0d61c..0269751 100644 --- a/packages/env/src/server.ts +++ b/packages/env/src/server.ts @@ -43,7 +43,7 @@ const serverSchema = z.object({ S3_REGION: z.string().default("auto"), S3_PUBLIC_URL: z.string().url(), RESEND_API_KEY: z.string().min(1), - EMAIL_FROM: z.string().default("Townhall "), + EMAIL_FROM: z.string().default("Townhall "), }) export const env = serverSchema.parse(process.env) From 57ae7200a5660b94116d63daaba30c579b3b84c2 Mon Sep 17 00:00:00 2001 From: Jacob Owens Date: Mon, 30 Mar 2026 21:55:13 -0700 Subject: [PATCH 4/5] fix: fixed race conditions in notifications bootstrap --- apps/realtime/src/index.ts | 8 ++++---- apps/web/src/hooks/use-browser-notifications.ts | 5 +++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/apps/realtime/src/index.ts b/apps/realtime/src/index.ts index 18c072f..0619ca8 100644 --- a/apps/realtime/src/index.ts +++ b/apps/realtime/src/index.ts @@ -282,10 +282,8 @@ async function initializeConnection(socket: RealtimeSocket) { }, }) - await socket.join(userPresenceRoom) - - // Bootstrap unread state before joining userRoom so live notifications - // arriving between join and bootstrap don't get wiped + // Bootstrap unread state BEFORE joining userRoom so live notifications + // arriving after join don't get wiped by a later bootstrap emit try { const bootstrap = await getUnreadStatesForUser(socket.data.user.id) socket.emit("notification:bootstrap", bootstrap) @@ -297,6 +295,8 @@ async function initializeConnection(socket: RealtimeSocket) { }) } + await socket.join(userPresenceRoom) + return true } catch (error) { console.error( diff --git a/apps/web/src/hooks/use-browser-notifications.ts b/apps/web/src/hooks/use-browser-notifications.ts index b480f2b..bbe0a08 100644 --- a/apps/web/src/hooks/use-browser-notifications.ts +++ b/apps/web/src/hooks/use-browser-notifications.ts @@ -37,6 +37,11 @@ export function useBrowserNotifications() { if (!settings) return if (settings.desktopNotifications === "nothing") return + // For DM mentions, check dmNotifications setting + if (payload.guildId === null && settings.dmNotifications === "nothing") { + return + } + const mentionType = payload.type === "everyone_mention" ? "@everyone" : "a mention" From 6706d09edb83afdd6fc20a3947181c1c4ce4ba1d Mon Sep 17 00:00:00 2001 From: Jacob Owens Date: Mon, 30 Mar 2026 22:12:29 -0700 Subject: [PATCH 5/5] fix: fixed bugs in new auth pages --- .../onboarding/onboarding-dialog.tsx | 6 ++++++ .../src/hooks/use-browser-notifications.ts | 2 +- apps/web/src/routes/login.tsx | 9 +++++++-- packages/auth/src/lib/auth.ts | 20 +++++++------------ 4 files changed, 21 insertions(+), 16 deletions(-) diff --git a/apps/web/src/components/onboarding/onboarding-dialog.tsx b/apps/web/src/components/onboarding/onboarding-dialog.tsx index 6f9aa42..1b74188 100644 --- a/apps/web/src/components/onboarding/onboarding-dialog.tsx +++ b/apps/web/src/components/onboarding/onboarding-dialog.tsx @@ -54,6 +54,12 @@ export function OnboardingDialog({ open }: { open: boolean }) { session.user.username.length >= MIN_USERNAME_LENGTH ) const [step, setStep] = useState(hasUsername ? "welcome" : "username") + // Sync step with session hydration — session may be null on first render + useEffect(() => { + if (hasUsername && step === "username") { + setStep("welcome") + } + }, [hasUsername, step]) const [name, setName] = useState("") const [slug, setSlug] = useState("") const [slugEdited, setSlugEdited] = useState(false) diff --git a/apps/web/src/hooks/use-browser-notifications.ts b/apps/web/src/hooks/use-browser-notifications.ts index bbe0a08..091a3fb 100644 --- a/apps/web/src/hooks/use-browser-notifications.ts +++ b/apps/web/src/hooks/use-browser-notifications.ts @@ -56,7 +56,7 @@ export function useBrowserNotifications() { if (settings.desktopNotifications !== "all_messages") return // For DMs, check dmNotifications setting - if (payload.guildId === null && settings?.dmNotifications === "nothing") { + if (payload.guildId === null && settings.dmNotifications === "nothing") { return } diff --git a/apps/web/src/routes/login.tsx b/apps/web/src/routes/login.tsx index 8d50e26..37b4d67 100644 --- a/apps/web/src/routes/login.tsx +++ b/apps/web/src/routes/login.tsx @@ -46,12 +46,17 @@ function LoginPage() { // 403 = email not verified — better-auth re-sends the verification email automatically if (error.status === 403) { navigate({ to: "/check-email", search: { email } }) - return + return { needsVerification: true } } throw new Error(error.message ?? "Failed to sign in") } + return { needsVerification: false } + }, + onSuccess: (result) => { + if (!result?.needsVerification) { + navigate({ to: "/" }) + } }, - onSuccess: () => navigate({ to: "/" }), }) return ( diff --git a/packages/auth/src/lib/auth.ts b/packages/auth/src/lib/auth.ts index b49c330..e26e874 100644 --- a/packages/auth/src/lib/auth.ts +++ b/packages/auth/src/lib/auth.ts @@ -167,11 +167,8 @@ export const auth = betterAuth({ sendOnSignUp: true, autoSignInAfterVerification: true, async sendVerificationEmail({ user, url, token }) { - console.error( - `[TOWNHALL EMAIL] Sending verification email to ${user.email} from ${env.EMAIL_FROM}` - ) - try { - const { data, error } = await resend.emails.send({ + resend.emails + .send({ from: env.EMAIL_FROM, to: user.email, subject: "Verify your Townhall email", @@ -184,14 +181,11 @@ export const auth = betterAuth({
`, }) - if (error) { - console.error("[TOWNHALL EMAIL] Resend error:", JSON.stringify(error)) - } else { - console.error("[TOWNHALL EMAIL] Sent successfully, id:", data?.id) - } - } catch (err) { - console.error("[TOWNHALL EMAIL] Exception:", err) - } + .then(({ error }) => { + if (error) { + console.error("Failed to send verification email:", error.message) + } + }) }, }, advanced: {