diff --git a/.env.example b/.env.example index 59962d7..b172816 100644 --- a/.env.example +++ b/.env.example @@ -4,8 +4,8 @@ NODE_ENV=development PORT=3000 -# c3nav Integration (optional - defaults to 38c3) -C3NAV_BASE_URL=https://38c3.c3nav.de +# c3nav Integration (optional - defaults to 39c3) +C3NAV_BASE_URL=https://39c3.c3nav.de # WebSocket Sync Server (required for multi-user location sharing) # For local development: ws://localhost:3001 diff --git a/src/app/[slug]/page.tsx b/src/app/[slug]/page.tsx index ba3ec22..2429191 100644 --- a/src/app/[slug]/page.tsx +++ b/src/app/[slug]/page.tsx @@ -268,7 +268,7 @@ export default function RoomPage() { waypoints={waypoints} currentUserId={currentParticipantId || undefined} currentLocation={currentLocation} - eventId="38c3" + eventId="39c3" isSharing={isSharing} onToggleSharing={handleToggleSharing} onParticipantClick={(p) => { diff --git a/src/app/api/c3nav/[event]/route.ts b/src/app/api/c3nav/[event]/route.ts index c8b7b7b..1fdee97 100644 --- a/src/app/api/c3nav/[event]/route.ts +++ b/src/app/api/c3nav/[event]/route.ts @@ -11,7 +11,7 @@ interface RouteParams { } // Valid c3nav events -const VALID_EVENTS = ['38c3', '37c3', 'eh22', 'eh2025', 'camp2023']; +const VALID_EVENTS = ['39c3', '38c3', '37c3', 'eh22', 'eh2025', 'camp2023']; // Allowed API endpoints (whitelist for security) const ALLOWED_ENDPOINTS = [ diff --git a/src/app/api/c3nav/tiles/[event]/[level]/[z]/[x]/[y]/route.ts b/src/app/api/c3nav/tiles/[event]/[level]/[z]/[x]/[y]/route.ts index e36249f..548d0f6 100644 --- a/src/app/api/c3nav/tiles/[event]/[level]/[z]/[x]/[y]/route.ts +++ b/src/app/api/c3nav/tiles/[event]/[level]/[z]/[x]/[y]/route.ts @@ -15,7 +15,7 @@ interface RouteParams { } // Valid c3nav events -const VALID_EVENTS = ['38c3', '37c3', 'eh22', 'eh2025', 'camp2023']; +const VALID_EVENTS = ['39c3', '38c3', '37c3', 'eh22', 'eh2025', 'camp2023']; export async function GET(request: NextRequest, { params }: RouteParams) { const { event, level, z, x, y } = params; diff --git a/src/app/api/routing/route.ts b/src/app/api/routing/route.ts index 901a9b6..9c6a436 100644 --- a/src/app/api/routing/route.ts +++ b/src/app/api/routing/route.ts @@ -5,7 +5,7 @@ import type { RouteSegment, C3NavRouteRequest } from '@/types'; const OSRM_API = 'https://router.project-osrm.org'; // c3nav routing API -const C3NAV_EVENTS = ['38c3', '37c3', 'eh22', 'eh2025', 'camp2023']; +const C3NAV_EVENTS = ['39c3', '38c3', '37c3', 'eh22', 'eh2025', 'camp2023']; interface RouteRequest { origin: { @@ -222,7 +222,7 @@ async function getIndoorRoute( export async function POST(request: NextRequest) { try { const body: RouteRequest = await request.json(); - const { origin, destination, mode = 'walking', eventId = '38c3', options } = body; + const { origin, destination, mode = 'walking', eventId = '39c3', options } = body; if (!origin || !destination) { return NextResponse.json( diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 585b98b..d43dfa3 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -4,7 +4,7 @@ import './globals.css'; export const metadata: Metadata = { title: 'rMaps - Find Your Friends', description: 'Collaborative real-time friend-finding navigation for events', - keywords: ['maps', 'navigation', 'friends', 'realtime', 'CCC', '38c3'], + keywords: ['maps', 'navigation', 'friends', 'realtime', 'CCC', '39c3'], authors: [{ name: 'Jeff Emmett' }], openGraph: { title: 'rMaps - Find Your Friends', diff --git a/src/app/page.tsx b/src/app/page.tsx index b867d29..6027200 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -161,7 +161,7 @@ export default function HomePage() { type="text" value={roomName} onChange={(e) => setRoomName(e.target.value)} - placeholder="e.g., 38c3-crew" + placeholder="e.g., 39c3-crew" className="input flex-1" maxLength={20} /> diff --git a/src/components/map/C3NavEmbed.tsx b/src/components/map/C3NavEmbed.tsx index 437a1fa..23e9856 100644 --- a/src/components/map/C3NavEmbed.tsx +++ b/src/components/map/C3NavEmbed.tsx @@ -4,7 +4,7 @@ import { useState, useEffect, useRef } from 'react'; import type { Participant } from '@/types'; interface C3NavEmbedProps { - /** Event identifier (e.g., '38c3', 'eh2025') */ + /** Event identifier (e.g., '39c3', 'eh2025') */ eventId?: string; /** Initial location to show */ initialLocation?: string; @@ -22,6 +22,7 @@ interface C3NavEmbedProps { // c3nav event URLs const C3NAV_EVENTS: Record = { + '39c3': 'https://39c3.c3nav.de', '38c3': 'https://38c3.c3nav.de', '37c3': 'https://37c3.c3nav.de', 'eh2025': 'https://eh2025.c3nav.de', @@ -30,7 +31,7 @@ const C3NAV_EVENTS: Record = { }; export default function C3NavEmbed({ - eventId = '38c3', + eventId = '39c3', initialLocation, participants = [], currentUserId, @@ -43,7 +44,7 @@ export default function C3NavEmbed({ const [error, setError] = useState(null); // Get the c3nav base URL for the event - const baseUrl = C3NAV_EVENTS[eventId] || C3NAV_EVENTS['38c3']; + const baseUrl = C3NAV_EVENTS[eventId] || C3NAV_EVENTS['39c3']; // Build the embed URL const embedUrl = new URL(baseUrl); diff --git a/src/components/map/DualMapView.tsx b/src/components/map/DualMapView.tsx index 8ca93c0..abbb326 100644 --- a/src/components/map/DualMapView.tsx +++ b/src/components/map/DualMapView.tsx @@ -57,7 +57,7 @@ export default function DualMapView({ waypoints = [], currentUserId, currentLocation, - eventId = '38c3', + eventId = '39c3', initialMode = 'auto', onParticipantClick, onWaypointClick, diff --git a/src/lib/c3nav.ts b/src/lib/c3nav.ts index e5bf2a8..d2f8d10 100644 --- a/src/lib/c3nav.ts +++ b/src/lib/c3nav.ts @@ -9,8 +9,8 @@ import type { C3NavRouteResponse, } from '@/types'; -// Default to 38c3, can be overridden per-room -const DEFAULT_C3NAV_BASE = 'https://38c3.c3nav.de'; +// Default to 39c3, can be overridden per-room +const DEFAULT_C3NAV_BASE = 'https://39c3.c3nav.de'; export class C3NavClient { private baseUrl: string; diff --git a/src/stores/room.ts b/src/stores/room.ts index 15aa62d..5480113 100644 --- a/src/stores/room.ts +++ b/src/stores/room.ts @@ -283,7 +283,7 @@ export const useRoomStore = create((set, get) => ({ }, destination: destLocation, mode: 'walking', - eventId: room?.settings.eventId || '38c3', + eventId: room?.settings.eventId || '39c3', }), }); diff --git a/src/types/index.ts b/src/types/index.ts index 30ffbb8..caf452e 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -25,7 +25,7 @@ export interface RoomSettings { defaultPrecision: PrecisionLevel; allowGuestJoin: boolean; showC3NavIndoor: boolean; // enable c3nav integration - eventId?: string; // e.g., '38c3', 'eh2025' + eventId?: string; // e.g., '39c3', 'eh2025' } // ============================================================================