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:
@@ -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>
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user