- Multi-provider AI analysis (Anthropic, OpenAI, Ollama, Algorithmic) - server-only guards on all provider files; client bundle fix - /settings page with provider status, Ollama model picker, preferences - Song search box on /analyze replacing raw MBID input (debounced, keyboard nav) - Auto-register song via MusicBrainz on POST /api/tracks (no more 404) - Fix WAV duration bug: last section songEnd was double-counting elapsed time - Registry sync comment updated for self-hosted HTTPS git servers Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
55 lines
1.9 KiB
TypeScript
55 lines
1.9 KiB
TypeScript
import type { Metadata } from "next";
|
|
import "./globals.css";
|
|
|
|
export const metadata: Metadata = {
|
|
title: {
|
|
default: process.env.NEXT_PUBLIC_APP_NAME ?? "ClickTrack",
|
|
template: `%s | ${process.env.NEXT_PUBLIC_APP_NAME ?? "ClickTrack"}`,
|
|
},
|
|
description:
|
|
"Self-hosted click track generator for cover bands. Search songs, view community tempo maps, and download metronomic WAV files.",
|
|
};
|
|
|
|
export default function RootLayout({
|
|
children,
|
|
}: {
|
|
children: React.ReactNode;
|
|
}) {
|
|
return (
|
|
<html lang="en">
|
|
<body className="min-h-screen bg-zinc-950 text-zinc-100 antialiased">
|
|
<header className="border-b border-zinc-800 px-6 py-4">
|
|
<div className="mx-auto flex max-w-4xl items-center justify-between">
|
|
<a href="/" className="text-xl font-bold tracking-tight text-green-400">
|
|
{process.env.NEXT_PUBLIC_APP_NAME ?? "ClickTrack"}
|
|
</a>
|
|
<nav className="flex gap-6 text-sm text-zinc-400">
|
|
<a href="/" className="hover:text-zinc-100 transition-colors">
|
|
Search
|
|
</a>
|
|
<a href="/analyze" className="hover:text-zinc-100 transition-colors">
|
|
Analyze
|
|
</a>
|
|
<a href="/settings" className="hover:text-zinc-100 transition-colors">
|
|
Settings
|
|
</a>
|
|
<a
|
|
href="https://github.com/your-org/clicktrack"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
className="hover:text-zinc-100 transition-colors"
|
|
>
|
|
GitHub
|
|
</a>
|
|
</nav>
|
|
</div>
|
|
</header>
|
|
<main className="mx-auto max-w-4xl px-6 py-10">{children}</main>
|
|
<footer className="border-t border-zinc-800 px-6 py-6 text-center text-xs text-zinc-600">
|
|
ClickTrack — open source, self-hosted. Tempo data from the community registry.
|
|
</footer>
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|