Files
verdande/web/src/routes/genveje/+page.svelte
T
Kristian WindandClaude Opus 5 62498c2765 feat(sidebar): tallet ved et projekt er opgaver, og folden har en tast
"Hvorfor står der 2 ud for et tomt projekt?" Fordi tallet var member_count — hvor
mange mennesker. Den samme grå kolonne betød tre ting: personer ved projekter,
projekter ved grupper, opgaver ved etiketter. I en opgaveapp læses et tal ved
siden af et projekt som opgaver, og det gjorde manden, der har skrevet appen.

Nu er det åbne opgaver, og det vises når der er noget tilbage frem for når
projektet er delt — som var den gamle betingelse, og grunden til at netop de tre
delte havde et tal. Hvem der ellers er med står på projektets egen side.

Tællingen hentes fra serveren igen, når opgaver flytter sig. Det ville være
hurtigere at lægge til og trække fra lokalt, og det ville være forkert inden for
en dag: en opgave flyttet mellem projekter, en lukket i en anden fane, en
gentagende der lukker og åbner sig selv.

Og sidebjælken kunne allerede foldes — der var bare kun en knap med et rektangel
med en streg i, og det er ikke et ord. Nu gør ⌘B det samme, knappen siger det, og
genvejssiden nævner det.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 12:28:43 +02:00

100 lines
2.2 KiB
Svelte
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<script>
/**
* The shortcuts, listed.
*
* The single-letter navigation this page used to carry — q, t, u — is gone.
* Typing anywhere now starts a task, and one keyboard cannot both spell "tal
* med Anders" and jump to Today on the same "t". Navigation moved into the
* palette, which does more and costs one keystroke.
*/
import { t } from '$lib/i18n.svelte.js';
const groups = $derived([
{
title: t('keys.navigation'),
keys: [
[t('keys.anyLetter'), t('keys.typeToCapture')],
['⌘K / Ctrl+K', t('nav.search')],
['⌘B / Ctrl+B', t('keys.foldSidebar')]
]
},
{
title: t('keys.inQuickAdd'),
keys: [
['#projekt', t('keys.intoProject')],
['@etiket', t('keys.setLabel')],
['p1 – p4', t('keys.priority')],
// The examples stay in both languages, because the parser takes both
// and the point of the line is what you can actually type.
['i morgen, på fredag, om 3 dage', t('keys.date')],
['kl 10, 14:30, 7pm', t('keys.time')],
['Esc', t('keys.clear')]
]
}
]);
</script>
<div class="view">
<h1>{t('keys.title')}</h1>
{#each groups as group}
<section>
<h2>{group.title}</h2>
<dl>
{#each group.keys as [key, what]}
<dt><kbd>{key}</kbd></dt>
<dd>{what}</dd>
{/each}
</dl>
</section>
{/each}
</div>
<style>
.view {
max-width: var(--content-max);
margin: 0 auto;
padding: var(--s6) var(--s4) var(--s8);
}
h1 {
font-size: var(--text-2xl);
margin-bottom: var(--s5);
}
section {
margin-top: var(--s5);
}
h2 {
font-size: var(--text-xs);
font-weight: 560;
text-transform: uppercase;
letter-spacing: 0.06em;
color: var(--ink-faint);
padding-bottom: var(--s2);
border-bottom: 1px solid var(--line);
}
dl {
display: grid;
grid-template-columns: auto 1fr;
gap: var(--s3) var(--s4);
margin: var(--s4) 0 0;
align-items: baseline;
}
dt {
margin: 0;
}
dd {
margin: 0;
color: var(--ink-muted);
font-size: var(--text-sm);
}
kbd {
font-family: var(--font);
font-size: var(--text-xs);
color: var(--ink);
background: var(--surface-raised);
border: 1px solid var(--line-strong);
border-radius: var(--radius-sm);
padding: 2px var(--s2);
white-space: nowrap;
}
</style>