Add comprehensive PRD and terminal UX improvements

- Add PRD.md with detailed product requirements documentation
- Unify tmux screen size presets to consistent 24-row height
- Add Ctrl+Down keyboard shortcut to scroll terminal to bottom

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-20 18:03:59 -05:00
parent 164c7ee990
commit 66f072a5e6
3 changed files with 1437 additions and 6 deletions
+1424
View File
File diff suppressed because it is too large Load Diff
+10 -3
View File
@@ -198,6 +198,13 @@
} }
async function handleKeydown(event: KeyboardEvent) { async function handleKeydown(event: KeyboardEvent) {
// Ctrl+Down scrolls to bottom (don't send to tmux)
if (event.ctrlKey && event.key === 'ArrowDown') {
event.preventDefault();
scrollToBottom();
return;
}
if (!isAlive) return; if (!isAlive) return;
// Prevent default for all keys we handle // Prevent default for all keys we handle
@@ -450,7 +457,7 @@
class="px-1 py-0.5 rounded-sm text-[10px] font-mono transition-colors {screenMode === 'portrait' ? 'bg-cyan-600 text-white' : 'bg-zinc-700 hover:bg-zinc-600 text-zinc-200'} disabled:opacity-50" class="px-1 py-0.5 rounded-sm text-[10px] font-mono transition-colors {screenMode === 'portrait' ? 'bg-cyan-600 text-white' : 'bg-zinc-700 hover:bg-zinc-600 text-zinc-200'} disabled:opacity-50"
title="Portrait (50x60)" title="Portrait (50x60)"
> >
<svg xmlns="http://www.w3.org/2000/svg" class="h-3 w-2.5 inline-block" fill="none" viewBox="0 0 10 16" stroke="currentColor" stroke-width="1.5"> <svg xmlns="http://www.w3.org/2000/svg" class="h-2.5 w-2 inline-block" fill="none" viewBox="0 0 10 16" stroke="currentColor" stroke-width="1.5">
<rect x="1" y="1" width="8" height="14" rx="1" /> <rect x="1" y="1" width="8" height="14" rx="1" />
</svg> </svg>
</button> </button>
@@ -470,7 +477,7 @@
class="px-1 py-0.5 rounded-sm text-[10px] font-mono transition-colors {screenMode === 'desktop' ? 'bg-cyan-600 text-white' : 'bg-zinc-700 hover:bg-zinc-600 text-zinc-200'} disabled:opacity-50" class="px-1 py-0.5 rounded-sm text-[10px] font-mono transition-colors {screenMode === 'desktop' ? 'bg-cyan-600 text-white' : 'bg-zinc-700 hover:bg-zinc-600 text-zinc-200'} disabled:opacity-50"
title="Split screen (100x40)" title="Split screen (100x40)"
> >
<svg xmlns="http://www.w3.org/2000/svg" class="h-3 w-3.5 inline-block" fill="none" viewBox="0 0 20 14" stroke="currentColor" stroke-width="1.5"> <svg xmlns="http://www.w3.org/2000/svg" class="h-2.5 w-3.5 inline-block" fill="none" viewBox="0 0 20 14" stroke="currentColor" stroke-width="1.5">
<rect x="1" y="1" width="8" height="12" rx="1" /> <rect x="1" y="1" width="8" height="12" rx="1" />
<rect x="11" y="1" width="8" height="12" rx="1" /> <rect x="11" y="1" width="8" height="12" rx="1" />
</svg> </svg>
@@ -481,7 +488,7 @@
class="px-1 py-0.5 rounded-sm text-[10px] font-mono transition-colors {screenMode === 'fullscreen' ? 'bg-cyan-600 text-white' : 'bg-zinc-700 hover:bg-zinc-600 text-zinc-200'} disabled:opacity-50" class="px-1 py-0.5 rounded-sm text-[10px] font-mono transition-colors {screenMode === 'fullscreen' ? 'bg-cyan-600 text-white' : 'bg-zinc-700 hover:bg-zinc-600 text-zinc-200'} disabled:opacity-50"
title="Fullscreen (180x60)" title="Fullscreen (180x60)"
> >
<svg xmlns="http://www.w3.org/2000/svg" class="h-3 w-4 inline-block" fill="none" viewBox="0 0 22 14" stroke="currentColor" stroke-width="1.5"> <svg xmlns="http://www.w3.org/2000/svg" class="h-2.5 w-4 inline-block" fill="none" viewBox="0 0 22 14" stroke="currentColor" stroke-width="1.5">
<rect x="1" y="1" width="20" height="12" rx="1" /> <rect x="1" y="1" width="20" height="12" rx="1" />
</svg> </svg>
</button> </button>
+3 -3
View File
@@ -339,10 +339,10 @@
;; Screen size presets for different device orientations ;; Screen size presets for different device orientations
(def ^:private screen-sizes (def ^:private screen-sizes
{:fullscreen {:width 180 :height 60} {:fullscreen {:width 180 :height 24}
:desktop {:width 100 :height 40} :desktop {:width 100 :height 24}
:landscape {:width 65 :height 24} :landscape {:width 65 :height 24}
:portrait {:width 40 :height 35}}) :portrait {:width 40 :height 24}})
(defn resize-session (defn resize-session
"Resize a tmux session window to a preset size. "Resize a tmux session window to a preset size.