TUI: add F1 hint to all mode footers, wire F1 in editor, update board hints

- Board footer now shows all actions: D, L, F1, and the full keybinding list
- Detail footer shows [F1] help alongside scroll and edit hints
- Editor footer shows [F1] help hint
- F1 key now handled in editor mode (was only wired in board/detail)
- Stage deleted .project/kanban/backlog/DEW-0016.md

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
Chris Hendrickson 2026-04-25 15:08:14 -04:00
parent 0a00c4f744
commit 4193282325
2 changed files with 6 additions and 44 deletions

View file

@ -1,39 +0,0 @@
---
id: DEW-0016
title: test
type: epic
created: 2026-04-25T17:56:14.779844Z
labels:
- test, label, system
---
Huzzah! Huzzah! Huzzah! Huzzah! Huzzah! Huzzah! Huzzah! Huzzah!
Huzzah!
Huzzah!
Huzzah!
Huzzah!
Huzzah!
Huzzah!
Huzzah!
Huzzah!
Huzzah!
Huzzah!
Huzzah!
Huzzah!
Huzzah!
Huzzah!
Huzzah!
Huzzah!
Huzzah!
Huzzah!
Huzzah!
Huzzah!
Huzzah!
Huzzah!
Huzzah!
Huzzah!
Huzzah!
Huzzah!
Huzzah!
Huzzah!

View file

@ -689,6 +689,9 @@ class TuiCommand extends DewCommand {
default: default:
break; break;
} }
case ControlCharacter.F1:
prevMode = mode;
mode = _Mode.help;
default: default:
continue loop; continue loop;
} }
@ -696,8 +699,6 @@ class TuiCommand extends DewCommand {
redraw(); redraw();
continue loop; continue loop;
} }
// Help mode
if (mode == _Mode.help) { if (mode == _Mode.help) {
// Any key closes help // Any key closes help
mode = prevMode; mode = prevMode;
@ -1180,7 +1181,7 @@ class TuiCommand extends DewCommand {
// Column position indicator + help // Column position indicator + help
console.setForegroundColor(ConsoleColor.white); console.setForegroundColor(ConsoleColor.white);
final pos = numCols > numVisible ? ' [${colIdx + 1}/$numCols cols]' : ''; final pos = numCols > numVisible ? ' [${colIdx + 1}/$numCols cols]' : '';
const help = ' [↑↓] nav [←→] col [</>] move [↵] detail [n] new [e] edit [a] archive [c] comment [?] filter [q] quit'; const help = ' [↑↓] nav [←→] col [</>] move [↵] detail [n] new [e] edit [D] del [a] archive [c] comment [L] link [?] filter [F1] help [q] quit';
console.write(_trunc('$pos$help', w).padRight(w)); console.write(_trunc('$pos$help', w).padRight(w));
console.resetColorAttributes(); console.resetColorAttributes();
} }
@ -1236,7 +1237,7 @@ class TuiCommand extends DewCommand {
final scrollInfo = lines.isNotEmpty final scrollInfo = lines.isNotEmpty
? ' [${s + 1}-${min(s + contentH, lines.length)}/${lines.length}]' ? ' [${s + 1}-${min(s + contentH, lines.length)}/${lines.length}]'
: ''; : '';
console.write(' [↑↓] scroll$scrollInfo [e] edit [b/Esc] back [q] quit'.padRight(w)); console.write(' [↑↓] scroll$scrollInfo [e] edit [b/Esc] back [F1] help [q] quit'.padRight(w));
console.resetColorAttributes(); console.resetColorAttributes();
} }
@ -1669,7 +1670,7 @@ class TuiCommand extends DewCommand {
// Footer hints // Footer hints
final dirtyMarker = es.isDirty ? ' ● unsaved' : ''; final dirtyMarker = es.isDirty ? ' ● unsaved' : '';
final footerHints = '[↑↓] field [←→] value [Enter] edit [d] del [s] save [Esc] discard$dirtyMarker'; final footerHints = '[↑↓] field [←→] value [Enter] edit [d] del [s] save [Esc] discard [F1] help$dirtyMarker';
at(modalTop + modalH - 2, modalLeft + 1, () { at(modalTop + modalH - 2, modalLeft + 1, () {
console.setForegroundColor(ConsoleColor.white); console.setForegroundColor(ConsoleColor.white);
console.write(_trunc(footerHints, innerW)); console.write(_trunc(footerHints, innerW));