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:
72
.gitignore
vendored
72
.gitignore
vendored
@@ -1,60 +1,64 @@
|
||||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
||||
|
||||
# dependencies
|
||||
# ── Dependencies ─────────────────────────────────────
|
||||
/node_modules
|
||||
/.pnp
|
||||
.pnp.*
|
||||
|
||||
# Yarn (keep patches/plugins/releases)
|
||||
.yarn/*
|
||||
!.yarn/patches
|
||||
!.yarn/plugins
|
||||
!.yarn/releases
|
||||
!.yarn/versions
|
||||
|
||||
# testing
|
||||
# ── Next.js ──────────────────────────────────────────
|
||||
/.next/
|
||||
/out/
|
||||
/build
|
||||
next-env.d.ts
|
||||
|
||||
# ── TypeScript ────────────────────────────────────────
|
||||
*.tsbuildinfo
|
||||
|
||||
# ── Testing & Coverage ───────────────────────────────
|
||||
/coverage
|
||||
/test-results/
|
||||
/playwright-report/
|
||||
.agent/
|
||||
|
||||
# next.js
|
||||
/.next/
|
||||
/out/
|
||||
|
||||
# production
|
||||
/build
|
||||
|
||||
# misc
|
||||
.DS_Store
|
||||
*.pem
|
||||
|
||||
# debug
|
||||
# ── Logs ─────────────────────────────────────────────
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
.pnpm-debug.log*
|
||||
server.log
|
||||
|
||||
# env files (can opt-in for committing if needed)
|
||||
# ── Environment ──────────────────────────────────────
|
||||
.env*
|
||||
!.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
|
||||
|
||||
# typescript
|
||||
*.tsbuildinfo
|
||||
next-env.d.ts
|
||||
|
||||
# internal dev docs
|
||||
docs/dev/
|
||||
|
||||
# Build cache
|
||||
tsconfig.tsbuildinfo
|
||||
content/about.md
|
||||
|
||||
#content
|
||||
# ── User Content (personal gallery config) ───────────
|
||||
content/settings.yaml
|
||||
content/gallery.yaml
|
||||
content/about.md
|
||||
|
||||
#git-filter-repo
|
||||
git-filter-repo
|
||||
# ── Internal Dev Docs ────────────────────────────────
|
||||
docs/dev/
|
||||
docs/ideas.md
|
||||
@@ -37,7 +37,8 @@ export async function GET(request: NextRequest, { params }: { params: Promise<{
|
||||
|
||||
if (!success) {
|
||||
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 });
|
||||
}
|
||||
|
||||
|
||||
@@ -1395,6 +1395,19 @@
|
||||
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) {
|
||||
.hero {
|
||||
grid-template-columns: 1fr;
|
||||
@@ -1415,8 +1428,26 @@
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
/* Portrait: 2 Spalten — direkt gesetzt, kein !important nötig */
|
||||
.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 {
|
||||
|
||||
@@ -34,7 +34,7 @@ function parseEnv(): Env {
|
||||
|
||||
const rateLimitStr = process.env.RATE_LIMIT_RPM;
|
||||
const rateLimit =
|
||||
rateLimitStr && !isNaN(parseInt(rateLimitStr, 10)) ? parseInt(rateLimitStr, 10) : 600;
|
||||
rateLimitStr && !isNaN(parseInt(rateLimitStr, 10)) ? parseInt(rateLimitStr, 10) : 1500;
|
||||
|
||||
return {
|
||||
IMMICH_API_URL: apiUrl,
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
▲ Next.js 16.1.6
|
||||
- Local: http://localhost:3000
|
||||
- Network: http://0.0.0.0:3000
|
||||
|
||||
✓ Starting...
|
||||
✓ Ready in 33ms
|
||||
Reference in New Issue
Block a user