Files
logbuch/next.config.ts
T
Matthias G 5072ff7249 Ship a Logbuch skill and record token use
- docs/skill.md teaches a Claude what Logbuch is for, how an entry sounds
  and in which order the calls go, served at GET /api/v1/skill and as a
  download next to the spec and the guide
- a test keeps the skill from drifting: frontmatter, only endpoints that
  exist, house rules
- resolveClient stamps last_used_at, the access list said never used even
  after eleven entries
2026-08-03 10:40:48 +02:00

42 lines
1.1 KiB
TypeScript

import type { NextConfig } from 'next'
import createNextIntlPlugin from 'next-intl/plugin'
const sharpNative = [
'./node_modules/.pnpm/@img+sharp-libvips-*/**',
'./node_modules/.pnpm/@img+sharp-linux*/**',
'./node_modules/@img/**',
]
const config: NextConfig = {
output: 'standalone',
outputFileTracingIncludes: {
'/api/v1/style-guide': ['./docs/style-guide.md'],
'/api/v1/skill': ['./docs/skill.md'],
'/admin/api/files/skill': ['./docs/skill.md'],
'/admin/api/files/style-guide': ['./docs/style-guide.md'],
'/': ['./node_modules/drizzle-orm/**'],
'/api/v1/media': sharpNative,
'/admin/media': sharpNative,
'/admin/media/[slug]': sharpNative,
'/admin/entries/[id]': sharpNative,
'/admin/entries/new': sharpNative,
},
typedRoutes: true,
experimental: {
useTypeScriptCli: true,
serverActions: {
bodySizeLimit: '16mb',
},
},
images: {
formats: ['image/webp'],
deviceSizes: [480, 640, 960, 1200, 1600, 1920],
imageSizes: [96, 160, 240, 320],
minimumCacheTTL: 31536000,
},
}
const withNextIntl = createNextIntlPlugin('./src/i18n/request.ts')
export default withNextIntl(config)