AboutVibe-ProjekteBlog
TippsVibesCursorKILLM

Modell cheetah

Update 31.10.2025 Geheimnis gelüftet

In Cursor kann derzeit ein mysteriöses Modell namens cheetah ausgewählt werden. Screenshot cheetah

In einem Video von Leonard Schmedding wurde das Gerücht erwähnt, (nicht: verbreitet! Das würde der nie tun) dass es sich dabei um das bald erscheinende Gemini 3.0 handeln soll.

Das machte mich aufmerksam und neugierig, denn seit Version 2.5 bin ich ein Fan von Gemini und allen verbundenen Produkten (notebooklm.google.com, aistudio.google.com usw.) und habe das Pro-Abo.

Ich habe dieses Modell dann mal auf einen Bug dieses Blogs losgelassen, den Claude Sonnet 4.5 seit Tagen nicht lösen konnte und der verhinderte, dieses nextra-Blog-Geraffel das Du gerade vor Dir hast live auszurollen. cheetah brauchte wenige Minuten. Und schrieb dann diesen Bericht, den ich hier ungekürzt reinkopiere. Denn die Lösung war, wie so oft, frappierend einfach. Es kam nur kein Modell vorher drauf. Und ich übrigens auch nicht. Wozu zahle ich soviel für KI? Soll die die Arbeit machen und mir das Vergnügen lassen.

Besonders der Abschnitt “Theorien” ist amüsant. Der ist noch von Sonnet 4.5, das verzweifelt nach Erklärungsansaätzen suchte. Genau wie der Abschnitt “Nächste Schritte”. Das ist en passant mein Tipp: Lasst die KI immer alles aufschreiben, was sie gerade umtreibt. Nicht nur das Ergebnis dokumentieren. (Letzteres sollte ja im Zweifel eh der Spezifikation entsprechen, die ihr der KI vorgegeben habt.)

404 Bug - Debugging Dokumentation

Status: GELÖST ✅

Datum: 23.10.2025
Problem: Nach Hinzufügen des Footers werden alle MDX-Seiten mit 404 geliefert
Lösung: Cache-Problem durch komplettes Löschen des .next Ordners behoben


🚨 WICHTIG: Vor jedem Test IMMER ausführen!

# 1. ALLE Node/npm Prozesse beenden killall -9 node 2>/dev/null # 2. Cache löschen cd /Users/tobiasbrendler/NodeJS/nextra && rm -rf .next # 3. Dann erst neu starten npm run dev

NIEMALS ohne diese Schritte testen! Alte Prozesse und Cache verursachen falsche Ergebnisse.


Symptome


Das Kern-Problem: pageMap zeigt alles als undefined

{"pageMap":[{"data":{"index":{"type":"page","title":"Home"},"howto-newblogpost":{...},"spec-kit":{...},"qwen":{...},"impressum":{...}}},...]}
{"pageMap":[{"data":{"index":{"type":"page","title":"Home"},"howto-newblogpost":"$Y","spec-kit":"$Y","qwen":"$Y","impressum":"$Y"}},...]}

"$Y" bedeutet undefined in React Server Components!

Das ist der Grund warum Next.js die Seiten nicht findet - die pageMap hat keine Informationen über die MDX-Dateien.


Versuchte Lösungen (alle fehlgeschlagen)

1. ❌ next.config.mjs vereinfachen

Versuch:

// Von dieser Version (mit Kommentaren): const withNextra = nextra({ // ... Add Nextra-specific options here }) export default withNextra({ // ... Add regular Next.js options here }) // Zu dieser Version: const withNextra = nextra({}) export default withNextra({})

Ergebnis: Keine Änderung, 404 bleibt


2. ❌ Search Component zurück in Navbar

Versuch:

// Search aus Layout raus und zurück in Navbar <Navbar pageMap={await getPageMap()}> <a href="...">GitHub →</a> <Search /> // ← Hier zurück! <ThemeSwitch /> </Navbar> {children} // <Search /> ← Entfernt von hier

Ergebnis: Search ist visuell immer noch unten, 404 bleibt


3. ❌ mdx-components.js anpassen

Versuch:

// Von: const themeComponents = getThemeComponents() export function useMDXComponents(components) { return { ...themeComponents, ...components } } // Zu: export function useMDXComponents(components) { return getThemeComponents(components) }

Ergebnis: Keine Änderung, 404 bleibt


4. ❌ app/[[…mdxPath]]/page.jsx anpassen

Versuch:

// Von: const Wrapper = getMDXComponents().wrapper // Zu: const Wrapper = getMDXComponents({}).wrapper

Ergebnis: Keine Änderung, 404 bleibt


5. ❌ Turbopack deaktivieren

Versuch:

# In start-dev.sh: # Von: exec node --require ./setup-polyfills.js ./node_modules/.bin/next --turbopack --hostname localhost "$@" # Zu: exec node --require ./setup-polyfills.js ./node_modules/.bin/next dev --hostname localhost "$@"

Ergebnis: Keine Änderung, 404 bleibt


6. ❌ next.config.mjs mit Optionen

Versuch:

const withNextra = nextra({ latex: true, search: { codeblocks: false } })

Ergebnis: Keine Änderung, 404 bleibt


Git History Analyse

Letzter funktionierender Commit: 3bc8193 (Bugfixes)

git show 3bc8193:app/layout.jsx # Funktioniert! git show 3bc8193:next.config.mjs # Funktioniert!

Aktueller Commit: c9dfb7a (Verbesserungen)

Unterschied zwischen funktionierend und kaputt:

--- funktionierend (3bc8193) +++ kaputt (c9dfb7a) - import { Layout, Navbar, ThemeSwitch } from 'nextra-theme-blog' + import { Footer, Layout, Navbar, ThemeSwitch } from 'nextra-theme-blog' <Navbar pageMap={await getPageMap()}> + <a href="https://github.com/Etschmia" ...> + GitHub → + </a> - <Search /> <ThemeSwitch /> </Navbar> {children} + <Search /> + <Footer> + <a href="/impressum">Impressum</a> + {' | '} + <a href="https://github.com/Etschmia" ...>GitHub</a> + </Footer>

Theorien (noch nicht bestätigt)

Theorie 2: Search Component Position ist kritisch

Theorie 3: Layout Structure Problem

Theorie 4: Timing/Race Condition


Datei-Status beim letzten Test

app/layout.jsx (AKTUELL - KAPUTT)

import { Footer, Layout, Navbar, ThemeSwitch } from 'nextra-theme-blog' import { Banner, Head, Search } from 'nextra/components' import { getPageMap } from 'nextra/page-map' import 'nextra-theme-blog/style.css' export const metadata = { title: 'Blog Example' } export default async function RootLayout({ children }) { return ( <html lang="de" suppressHydrationWarning> <Head backgroundColor={{ dark: '#0f172a', light: '#fefce8' }} /> <body> <Layout > <Navbar pageMap={await getPageMap()}> <a href="https://github.com/Etschmia" target="_blank" rel="noopener noreferrer" className="x:aria-[current]:no-underline x:aria-[current]:opacity-60" > GitHub → </a> <Search /> <ThemeSwitch /> </Navbar> {children} <Footer> <a href="/impressum">Impressum</a> {' | '} <a href="https://github.com/Etschmia" target="_blank" rel="noopener noreferrer"> GitHub </a> </Footer> </Layout> </body> </html> ) }

next.config.mjs (AKTUELL)

import nextra from 'nextra' const withNextra = nextra({}) export default withNextra({})

start-dev.sh (AKTUELL)

exec node --require ./setup-polyfills.js ./node_modules/.bin/next dev --hostname localhost "$@"

Nächste Schritte zum Debuggen

cat node_modules/nextra-theme-blog/dist/components/layout.js | grep -A 20 "Footer"

2. Layout Component Source Code analysieren

cat node_modules/nextra-theme-blog/dist/components/layout.js | grep -A 50 "export.*Layout"
<Navbar pageMap={await getPageMap()}> <a href="...">GitHub →</a> <Search /> // ← Bleibt in Navbar! <ThemeSwitch /> </Navbar> {children} <Footer>...</Footer> // ← Nur Footer hinzufügen

4. Testen: Navbar Props untersuchen

// Debug-Ausgabe hinzufügen: const pageMap = await getPageMap() console.log('PageMap:', JSON.stringify(pageMap, null, 2))

5. Testen: Schrittweise Zurückbauen

  1. Entferne Footer → Funktioniert es?
  2. Entferne GitHub Link → Funktioniert es?
  3. Verschiebe Search zurück → Funktioniert es?

6. Prüfen: Andere Nextra Blog Beispiele


Terminal-Ausgaben

▲ Next.js 16.0.0 (Turbopack) - Local: http://localhost:3000 ✓ Ready in 216ms ○ Compiling /[[...mdxPath]] ... GET / 200 in 4.6s (compile: 4.4s, render: 167ms) GET /impressum 200 in 21ms (compile: 6ms, render: 15ms) GET /qwen 200 in 38ms (compile: 6ms, render: 32ms)
▲ Next.js 16.0.0 (Turbopack) - Local: http://localhost:3000 ✓ Ready in 209ms ○ Compiling /_not-found/page ... GET /qwen 404 in 4.8s (compile: 4.7s, render: 94ms) GET / 404 in 22ms (compile: 5ms, render: 17ms) GET /spec-kit 404 in 19ms (compile: 5ms, render: 14ms)

Beachte: /_not-found/page vs /[[...mdxPath]] - das ist der Unterschied!


Bekannte Probleme (nicht kritisch)

Watchpack Errors (macOS)

Watchpack Error (watcher): Error: EMFILE: too many open files, watch

Lösung: Optional ulimit -n 10240 erhöhen, aber nicht kritisch für das 404-Problem.

uv_interface_addresses Error

NodeError [SystemError]: uv_interface_addresses returned Unknown system error 1

Lösung: Bereits gefixt mit --hostname localhost in start-dev.sh


Zusammenfassung

Problem:

Keine der bisherigen Lösungen hat funktioniert:

Der Bug ist hartnäckig und hat eine tiefere Ursache!


Letzte Beobachtung

Im HTML-Source Code ist zu sehen:

<header class="x:mb-8 x:flex x:items-center x:gap-3 x:justify-end" data-pagefind-ignore="all"> <a href="/">Home</a> <a href="/spec-kit">Spec-Kit und Cursor</a> <a href="/qwen">Qwen Code</a> <a href="https://github.com/Etschmia" ...>GitHub →</a> <button ...>Toggle Dark Mode</button> </header>

Die Search Component wird NICHT gerendert in der Navbar!

Das bedeutet meine Änderung in app/layout.jsx wurde entweder:

  1. Nicht gespeichert
  2. Nicht vom Server geladen (Cache-Problem)
  3. Oder wird vom Browser falsch interpretiert

Weiter debuggen mit frischem Kopf! Der Bug liegt irgendwo in der Interaktion zwischen Footer, Layout und pageMap-Generierung.


✅ Lösung

Problem identifiziert: Das Layout selbst war korrekt! Das Problem war ein corrupt/beschädigter Next.js Cache.

Lösung:

  1. Alle Node-Prozesse killen: killall -9 node
  2. Next.js Cache vollständig löschen: rm -rf .next
  3. Server neu starten: npm run dev

Resultat: Alle Seiten funktionieren jetzt perfekt mit Footer und GitHub-Link!

Commit: d8cddc1 - Footer funktioniert jetzt korrekt

Ursache: Next.js Turbopack hatte einen beschädigten Cache der die pageMap-Generierung störte. Nach dem vollständigen Löschen funktionierte alles wieder.

| Impressum | Mein GitHubRSS