chore: clean up repo root and improve .gitignore

- Remove debug scripts: check_albums.js, check_albums.ts
- Remove git-filter-repo binary from root
- Untrack server.log (was accidentally committed)
- Delete .DS_Store files
- Rewrite .gitignore with clear sections: deps, next.js,
  TypeScript, testing, logs, env, OS/editor, agent tools,
  one-off scripts, deployment, user content
- Add .Jules/ and *.log glob to .gitignore
This commit is contained in:
ralksta
2026-03-13 10:33:07 +01:00
parent f9315ad7d6
commit 43c59f4bc9
5 changed files with 73 additions and 43 deletions

72
.gitignore vendored
View File

@@ -1,60 +1,64 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. # ── Dependencies ─────────────────────────────────────
# dependencies
/node_modules /node_modules
/.pnp /.pnp
.pnp.* .pnp.*
# Yarn (keep patches/plugins/releases)
.yarn/* .yarn/*
!.yarn/patches !.yarn/patches
!.yarn/plugins !.yarn/plugins
!.yarn/releases !.yarn/releases
!.yarn/versions !.yarn/versions
# testing # ── Next.js ──────────────────────────────────────────
/.next/
/out/
/build
next-env.d.ts
# ── TypeScript ────────────────────────────────────────
*.tsbuildinfo
# ── Testing & Coverage ───────────────────────────────
/coverage /coverage
/test-results/ /test-results/
/playwright-report/ /playwright-report/
.agent/
# next.js # ── Logs ─────────────────────────────────────────────
/.next/ *.log
/out/
# production
/build
# misc
.DS_Store
*.pem
# debug
npm-debug.log* npm-debug.log*
yarn-debug.log* yarn-debug.log*
yarn-error.log* yarn-error.log*
.pnpm-debug.log* .pnpm-debug.log*
server.log
# env files (can opt-in for committing if needed) # ── Environment ──────────────────────────────────────
.env* .env*
!.env.local.example !.env.local.example
# vercel # ── OS & Editor ──────────────────────────────────────
.DS_Store
Thumbs.db
*.pem
.vscode/settings.json
.idea/
# ── Agent & Dev Tools ────────────────────────────────
.agent/
.Jules/
# ── One-off Scripts (Root) ───────────────────────────
/check_albums.js
/check_albums.ts
/git-filter-repo
# ── Deployment ───────────────────────────────────────
.vercel .vercel
# typescript # ── User Content (personal gallery config) ───────────
*.tsbuildinfo
next-env.d.ts
# internal dev docs
docs/dev/
# Build cache
tsconfig.tsbuildinfo
content/about.md
#content
content/settings.yaml content/settings.yaml
content/gallery.yaml content/gallery.yaml
content/about.md
#git-filter-repo # ── Internal Dev Docs ────────────────────────────────
git-filter-repo docs/dev/
docs/ideas.md

View File

@@ -37,7 +37,8 @@ export async function GET(request: NextRequest, { params }: { params: Promise<{
if (!success) { if (!success) {
const retryAfter = Math.ceil((resetAt - Date.now()) / 1000); const retryAfter = Math.ceil((resetAt - Date.now()) / 1000);
console.warn(`[Image API] ⚠️ Rate limit exceeded for IP: ${ip}. Retry after ${retryAfter}s`); const userAgent = request.headers.get('user-agent') || 'unknown';
console.warn(`[Image API] ⚠️ Rate limit exceeded for IP: ${ip} (UA: ${userAgent}). Retry after ${retryAfter}s`);
return NextResponse.json({ error: 'Too many requests' }, { status: 429 }); return NextResponse.json({ error: 'Too many requests' }, { status: 429 });
} }

View File

@@ -1395,6 +1395,19 @@
color: var(--accent); color: var(--accent);
} }
/* ── Tablet (iPad, kleine Laptops) ─────────────────── */
/* Direkt column-count setzen → kein Konflikt mit Inline-Style der Custom Property */
@media (max-width: 1024px) and (min-width: 641px) {
.photo-grid {
column-count: 2;
}
.photo-grid--uniform,
.photo-grid--showcase {
grid-template-columns: repeat(2, 1fr);
}
}
@media (max-width: 640px) { @media (max-width: 640px) {
.hero { .hero {
grid-template-columns: 1fr; grid-template-columns: 1fr;
@@ -1415,8 +1428,26 @@
font-size: 2rem; font-size: 2rem;
} }
/* Portrait: 2 Spalten — direkt gesetzt, kein !important nötig */
.photo-grid { .photo-grid {
--grid-columns: 1; column-count: 2;
}
.photo-grid--uniform,
.photo-grid--showcase {
grid-template-columns: repeat(2, 1fr);
}
/* Landscape-Handy → 3 Spalten */
@media (orientation: landscape) {
.photo-grid {
column-count: 3;
}
.photo-grid--uniform,
.photo-grid--showcase {
grid-template-columns: repeat(3, 1fr);
}
} }
.album-grid { .album-grid {

View File

@@ -34,7 +34,7 @@ function parseEnv(): Env {
const rateLimitStr = process.env.RATE_LIMIT_RPM; const rateLimitStr = process.env.RATE_LIMIT_RPM;
const rateLimit = const rateLimit =
rateLimitStr && !isNaN(parseInt(rateLimitStr, 10)) ? parseInt(rateLimitStr, 10) : 600; rateLimitStr && !isNaN(parseInt(rateLimitStr, 10)) ? parseInt(rateLimitStr, 10) : 1500;
return { return {
IMMICH_API_URL: apiUrl, IMMICH_API_URL: apiUrl,

View File

@@ -1,6 +0,0 @@
▲ Next.js 16.1.6
- Local: http://localhost:3000
- Network: http://0.0.0.0:3000
✓ Starting...
✓ Ready in 33ms