From e006175285bc3cfefdb4d2aef64a2a8ed98cb0c9 Mon Sep 17 00:00:00 2001 From: Davide Scaini Date: Fri, 10 Apr 2026 15:06:45 +0200 Subject: [PATCH] fix: don't redirect to /u/{handle}/ on private (multi-user) instances --- site/src/lib/manifest.ts | 11 +++++++++++ site/src/pages/index.astro | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/site/src/lib/manifest.ts b/site/src/lib/manifest.ts index 3071bc3..2dc52f2 100644 --- a/site/src/lib/manifest.ts +++ b/site/src/lib/manifest.ts @@ -22,6 +22,17 @@ export interface ShardHandle { url: string; } +export function isInstancePrivate(): boolean { + try { + const dataDir = findDataDir(); + if (!dataDir) return false; + const root = JSON.parse(readFileSync(join(dataDir, 'index.json'), 'utf-8')); + return root?.instance?.private === true; + } catch { + return false; + } +} + export function readShardHandles(): ShardHandle[] { try { const dataDir = findDataDir(); diff --git a/site/src/pages/index.astro b/site/src/pages/index.astro index eac5563..2adc560 100644 --- a/site/src/pages/index.astro +++ b/site/src/pages/index.astro @@ -1,11 +1,11 @@ --- import Base from '../layouts/Base.astro'; import ActivityFeed from '../components/ActivityFeed.svelte'; -import { readShardHandles } from '../lib/manifest'; +import { readShardHandles, isInstancePrivate } from '../lib/manifest'; const base = import.meta.env.BASE_URL; const shards = readShardHandles(); -const isSingleUser = shards.length === 1; +const isSingleUser = shards.length === 1 && !isInstancePrivate(); const singleHandle = isSingleUser ? shards[0].handle : null; --- {isSingleUser ? (