Something went wrong. Try again.
small gleam coding and persistent agent daemon with a detachable cli and a canvas ui forked from okami.mom/albedo
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133<script lang="ts"> import Gesture, { drawn } from './Gesture.svelte'; import { canvasKeys, command, commandsKey, option, redo, shortcut } from './keys';
// Every key the board answers, grouped, for `?`: the palette lists the // commands with their keys too, the canvas's view bar its gestures. Keep // it in step with App.svelte's keydown. const groups: { name: string; keys: [string[], string][] }[] = [ { name: 'panes', keys: [ [['click'], 'a header selects its section, group or canvas'], [[option('←→↑↓')], 'select the window that way'], [['enter'], 'type in it'], [[option('⇧←→↑↓')], 'move it'], [[option('⌃←→↑↓')], 'swap a window'], [[option('/')], 'pick a window by letter'], [[option('P'), '←→↑↓'], 'preselect where the next one goes'], [['W'], 'close it, with everything in it'], [[option('+'), '−', '0'], 'a window’s text zoom'], [[option('F')], 'focus it: it fills the board, or goes back'], [[option('esc')], 'leave a terminal'], [['esc'], 'let go of picks, preselection, focus'], ], }, { name: 'new', keys: [ [['S'], 'session'], [['T'], 'terminal, beside the selected window'], [['N'], 'note'], [['B'], 'board'], ], }, { name: 'sections', keys: [ [[command, 'click'], 'pick a title bar, header or canvas'], [[option('G')], 'make a section of the picked'], ], }, { name: 'boards', keys: [ [['{', '}'], 'previous, next board'], [['F2'], 'rename it'], [['⇧W'], 'close its tab'], [[shortcut('Z'), redo], 'undo, redo a layout change'], ], }, { name: 'canvas', keys: canvasKeys.filter(({ where }) => where !== 'bar').map(({ keys, does }) => [keys, does]), }, { name: 'everywhere', keys: [ [[shortcut('K')], 'search: > commands, @ sessions'], [[commandsKey], 'commands'], [['['], 'sessions'], [['/'], 'filter sessions'], [['A'], 'artifacts'], [['R'], 'refresh sessions'], [[shortcut(',')], 'settings'], [['?'], 'these keys'], ], }, ];</script>
<div class="groups"> {#each groups as group (group.name)} <section> <h3>{group.name}</h3> <dl> {#each group.keys as [keys, does] (does)} <dt> {#each keys as key, at (at)} <kbd>{#if drawn(key)}<Gesture kind={key} />{:else}{key}{/if}</kbd> {/each} </dt> <dd>{does}</dd> {/each} </dl> </section> {/each}</div>
<style> .groups { columns: 2; column-gap: 22px; } section { break-inside: avoid; margin-bottom: 16px; } h3 { margin: 0 0 6px; color: var(--muted); font-size: calc(12px * var(--ui-scale)); font-weight: 600; } dl { display: grid; grid-template-columns: 96px 1fr; align-items: center; gap: 5px 10px; margin: 0; } dt { display: flex; gap: 3px; justify-content: flex-end; } dd { margin: 0; font-size: calc(12.5px * var(--ui-scale)); line-height: 1.3; } kbd { white-space: nowrap; } kbd :global(svg) { display: block; } @media (max-width: 760px) { .groups { columns: 1; } }</style>