···11import { Hono } from "hono";
22import { logger } from "../lib/logger.js";
33+import type { WebAppEnv } from "../lib/theme-resolution.js";
3445/**
56 * POST /logout → calls AppView logout, clears cookie, redirects to /
67 */
78export function createAuthRoutes(appviewUrl: string) {
88- return new Hono()
99+ return new Hono<WebAppEnv>()
910 /**
1011 * POST /logout — logout should be a POST (not a link) to prevent CSRF.
1112 *
+2-1
apps/web/src/routes/mod.ts
···11import { Hono } from "hono";
22import { isProgrammingError } from "../lib/errors.js";
33import { logger } from "../lib/logger.js";
44+import type { WebAppEnv } from "../lib/theme-resolution.js";
4556/**
67 * Single proxy endpoint for all moderation actions.
···1819 * unban → DELETE /api/mod/ban/:id body: { reason }
1920 */
2021export function createModActionRoute(appviewUrl: string) {
2121- return new Hono().post("/mod/action", async (c) => {
2222+ return new Hono<WebAppEnv>().post("/mod/action", async (c) => {
2223 let body: Record<string, string | File>;
2324 try {
2425 body = await c.req.parseBody();