Bundle of small UI/UX fixes plus a build hygiene tweak.
* List pagination — Home (`/`) and `/authors/[id]` silently capped at
the backend default of 50 with no UI to advance. New reusable
`Pager.svelte` (Prev/Next + numbered with ellipsis), URL-synced
`?page=N`, and filter/search/sort reset to page 1 so users aren't
stranded on an out-of-range page. Count label now shows a range
("Showing 51–100 of 237").
* Stale page title — Pages without a `<svelte:head><title>` left the
document title at whatever the last manga / author / collection page
set it to. Move static-route titles into a route-id → title map in
the root layout and invert every dynamic title to brand-first
(`Mangalord | {X}`) for consistency.
* Admin filter bar — `/admin/mangas` search input had `flex: 1` and
ballooned across the row, shoving the sync-state select + Search
button to the far right. Cap at 24rem, vertical-align the row, and
promote the previously aria-only "Sync state" label to visible text.
* Build hygiene — `backend/target` had grown to 68 GiB. Cleaned and
added `[profile.dev] debug = "line-tables-only"` (and `[profile.test]`
too) to cut future dev builds by ~50–70% while keeping line numbers
in backtraces.
Also: configure vitest to resolve Svelte's browser entry so
`@testing-library/svelte` can mount components in jsdom — needed for
the new `Pager.svelte.test.ts`.
Bump 0.48.0 -> 0.49.1.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
33 lines
1.1 KiB
TypeScript
33 lines
1.1 KiB
TypeScript
import { sveltekit } from '@sveltejs/kit/vite';
|
|
import { defineConfig, loadEnv } from 'vite';
|
|
|
|
export default defineConfig(({ mode }) => {
|
|
// Pull in .env so VITE_PORT / BACKEND_URL pin the dev URL across runs.
|
|
// Empty prefix loads every key, not just VITE_*.
|
|
const env = { ...process.env, ...loadEnv(mode, process.cwd(), '') };
|
|
return {
|
|
plugins: [sveltekit()],
|
|
server: {
|
|
port: Number(env.VITE_PORT ?? 5173),
|
|
strictPort: env.VITE_PORT != null,
|
|
proxy: {
|
|
'/api': {
|
|
target: env.BACKEND_URL ?? 'http://localhost:8080',
|
|
changeOrigin: true
|
|
}
|
|
}
|
|
},
|
|
test: {
|
|
environment: 'jsdom',
|
|
include: ['src/**/*.test.ts'],
|
|
globals: false
|
|
},
|
|
resolve: {
|
|
// Use Svelte's browser entry under vitest so component tests can
|
|
// mount with @testing-library/svelte. The default (server entry)
|
|
// throws lifecycle_function_unavailable on mount().
|
|
conditions: mode === 'test' ? ['browser'] : []
|
|
}
|
|
};
|
|
});
|