feat(chronik): rename route and heading to Aktivitäten
Some checks failed
CI / Unit & Component Tests (push) Failing after 2m48s
CI / OCR Service Tests (push) Successful in 31s
CI / Backend Unit Tests (push) Failing after 2m43s

/chronik → /aktivitaeten; heading updated in all three locales.
Component folder (lib/components/chronik/) stays unchanged — internal
implementation detail, not user-facing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Marcel
2026-04-22 09:28:09 +02:00
parent 4f671824dd
commit fd93f1a4da
15 changed files with 23 additions and 20 deletions

View File

@@ -10,7 +10,7 @@ import { test, expect } from '@playwright/test';
const AUTHENTICATED_PAGES = [
{ name: 'home', path: '/' },
{ name: 'persons', path: '/persons' },
{ name: 'chronik', path: '/chronik' },
{ name: 'aktivitaeten', path: '/aktivitaeten' },
{ name: 'admin', path: '/admin' }
];

View File

@@ -758,7 +758,7 @@
"dropzone_release": "Loslassen zum Hochladen",
"chronik_page_title": "Chronik",
"chronik_page_title": "Aktivitäten",
"chronik_for_you_caption": "Für dich",
"chronik_for_you_count": "{count} neu",
"chronik_mark_read_aria": "Als gelesen markieren",
@@ -790,10 +790,10 @@
"chronik_empty_first_run_body": "Sobald jemand aus der Familie Dokumente hochlädt oder transkribiert, erscheint hier die Aktivität.",
"chronik_empty_filter_title": "Nichts in dieser Ansicht",
"chronik_empty_filter_body": "In diesem Filter gibt es keine Einträge.",
"chronik_error_title": "Die Chronik konnte nicht geladen werden.",
"chronik_error_title": "Die Aktivitäten konnten nicht geladen werden.",
"chronik_error_retry": "Erneut versuchen",
"chronik_load_more": "Mehr laden",
"chronik_loading": "Lädt …",
"chronik_load_more_announcement": "{count} weitere Einträge geladen",
"chronik_view_all": "Zur Chronik →"
"chronik_view_all": "Alle Aktivitäten →"
}

View File

@@ -758,7 +758,7 @@
"dropzone_release": "Release to upload",
"chronik_page_title": "Chronicle",
"chronik_page_title": "Activity",
"chronik_for_you_caption": "For you",
"chronik_for_you_count": "{count} new",
"chronik_mark_read_aria": "Mark as read",
@@ -790,10 +790,10 @@
"chronik_empty_first_run_body": "As soon as someone in the family uploads or transcribes a document, the activity will show up here.",
"chronik_empty_filter_title": "Nothing in this view",
"chronik_empty_filter_body": "There are no entries for this filter.",
"chronik_error_title": "The chronicle could not be loaded.",
"chronik_error_title": "Activity could not be loaded.",
"chronik_error_retry": "Try again",
"chronik_load_more": "Load more",
"chronik_loading": "Loading …",
"chronik_load_more_announcement": "{count} more entries loaded",
"chronik_view_all": "Open chronicle →"
"chronik_view_all": "All activity →"
}

View File

@@ -758,7 +758,7 @@
"dropzone_release": "Suelta para subir",
"chronik_page_title": "Crónica",
"chronik_page_title": "Actividades",
"chronik_for_you_caption": "Para ti",
"chronik_for_you_count": "{count} nuevas",
"chronik_mark_read_aria": "Marcar como leído",
@@ -790,10 +790,10 @@
"chronik_empty_first_run_body": "En cuanto alguien de la familia suba o transcriba un documento, la actividad aparecerá aquí.",
"chronik_empty_filter_title": "Nada en esta vista",
"chronik_empty_filter_body": "No hay entradas para este filtro.",
"chronik_error_title": "No se pudo cargar la crónica.",
"chronik_error_title": "No se pudieron cargar las actividades.",
"chronik_error_retry": "Reintentar",
"chronik_load_more": "Cargar más",
"chronik_loading": "Cargando …",
"chronik_load_more_announcement": "{count} entradas más cargadas",
"chronik_view_all": "Abrir crónica →"
"chronik_view_all": "Todas las actividades →"
}

View File

@@ -56,7 +56,7 @@ function timestamp(item: ActivityFeedItemDTO): string {
{m.feed_caption()}
</h2>
<a
href="/chronik"
href="/aktivitaeten"
aria-label={m.feed_show_all()}
class="font-sans text-xs text-ink-3 transition-colors hover:text-ink">{m.feed_show_all()}</a
>

View File

@@ -61,9 +61,9 @@ describe('DashboardActivityFeed', () => {
await expect.element(badge).not.toBeInTheDocument();
});
it('links the "show all" footer to /chronik, not /documents', async () => {
it('links the "show all" footer to /aktivitaeten, not /documents', async () => {
render(DashboardActivityFeed, { feed: [] });
const link = page.getByRole('link', { name: /alle anzeigen/i });
await expect.element(link).toHaveAttribute('href', '/chronik');
await expect.element(link).toHaveAttribute('href', '/aktivitaeten');
});
});

View File

@@ -128,7 +128,7 @@ let { notifications, onMarkRead, onMarkAllRead, onClose }: Props = $props();
<div class="border-t border-line px-4 py-2">
<a
href="/chronik"
href="/aktivitaeten"
onclick={onClose}
class="text-xs font-medium text-ink-2 transition-colors hover:text-ink"
>

View File

@@ -45,7 +45,7 @@ function href(n: NotificationItem): string {
{m.chronik_inbox_zero_title()}
</p>
<a
href="/chronik?filter=fuer-dich"
href="/aktivitaeten?filter=fuer-dich"
class="font-sans text-xs text-ink-3 underline decoration-accent underline-offset-2 transition-colors hover:text-ink"
>
{m.chronik_inbox_zero_link()}

View File

@@ -40,7 +40,7 @@ describe('ChronikFuerDichBox', () => {
onMarkRead: vi.fn(),
onMarkAllRead: vi.fn()
});
const link = document.querySelector('a[href="/chronik?filter=fuer-dich"]');
const link = document.querySelector('a[href="/aktivitaeten?filter=fuer-dich"]');
expect(link).not.toBeNull();
});

View File

@@ -10,7 +10,7 @@ vi.mock('$lib/api.server', () => ({
}));
function buildUrl(search = ''): URL {
return new URL(`http://localhost/chronik${search}`);
return new URL(`http://localhost/aktivitaeten${search}`);
}
function mockSuccess() {
@@ -26,7 +26,7 @@ beforeEach(() => {
vi.clearAllMocks();
});
describe('chronik/load — core', () => {
describe('aktivitaeten/load — core', () => {
it('requests only unread notifications for Für-dich', async () => {
mockSuccess();
await load({ fetch, url: buildUrl() } as never);
@@ -78,7 +78,7 @@ describe('chronik/load — core', () => {
});
});
describe('chronik/load — kinds param per filter', () => {
describe('aktivitaeten/load — kinds param per filter', () => {
it('omits kinds for filter=alle (server defaults to ROLLUP_ELIGIBLE)', async () => {
mockSuccess();
await load({ fetch, url: buildUrl() } as never);

View File

@@ -102,7 +102,10 @@ const hasEmail = $derived(!!data.user?.email);
</form>
<div class="mt-4 border-t border-line pt-4">
<a href="/chronik" class="text-sm font-medium text-ink-2 transition-colors hover:text-ink">
<a
href="/aktivitaeten"
class="text-sm font-medium text-ink-2 transition-colors hover:text-ink"
>
{m.notification_history_view_link()}
</a>
</div>