generated from nhcarrigan/template
feat: productivity suite — task loop, workflow, theming, docs & more (#197)
## Summary A large productivity-focused feature branch delivering a suite of improvements across automation, project management, theming, performance, and documentation. ### Features - **Guided Project Workflow** (#189) — Four-phase workflow panel (Discuss → Plan → Execute → Verify) to keep projects structured from idea to completion - **Automated Task Loop** (#179) — Per-task conversation orchestration with wave-based parallel execution, blocked-task detection, and concurrency control - **Wave-Based Parallel Execution** (#191) — Tasks run in dependency-aware waves with configurable concurrency; independent tasks execute in parallel - **Auto-Commit After Task Completion** (#192) — Task Loop optionally commits after each completed task so progress is never lost - **PRD Creator** (#180) — AI-assisted PRD and task list panel that outputs `hikari-tasks.json` for the Task Loop to consume - **Project Context Panel** (#188) — Persistent `PROJECT.md`, `REQUIREMENTS.md`, `ROADMAP.md`, and `STATE.md` files injected into Claude's context automatically - **Codebase Mapper** (#190) — Generates a `CODEBASE.md` architectural summary so Claude always understands the project structure - **Community Preset Themes** (#181) — Six built-in community themes: Dracula, Catppuccin Mocha, Nord, Solarized Dark, Gruvbox Dark, and Rosé Pine - **In-App Changelog Panel** (#193) — Fetches release notes from GitHub at runtime and displays them inside the app - **Full Embedded Documentation** (#196) — Replaced the single-page help modal with a 12-page paginated docs browser featuring a sidebar TOC, prev/next navigation, keyboard navigation (arrow keys, `?` shortcut), and comprehensive coverage of every feature ### Performance & Fixes - **Lazy Loading & Virtualisation** (#194) — Virtual windowing for conversation history, markdown memoisation, and debounced search for smooth rendering of large sessions - **Ctrl+C Copy Fix** (#195) — `Ctrl+C` now copies selected text as expected; interrupt-Claude behaviour only fires when no text is selected ### UX - Back-to-workflow button in PRD Creator and Task Loop panels for easy navigation - Navigation icon cluster replaced with a single clean dropdown menu ## Closes Closes #179 Closes #180 Closes #181 Closes #188 Closes #189 Closes #190 Closes #191 Closes #192 Closes #193 Closes #194 Closes #195 Closes #196 --- ✨ This PR was created with help from Hikari~ 🌸 Reviewed-on: #197 Co-authored-by: Hikari <hikari@nhcarrigan.com> Co-committed-by: Hikari <hikari@nhcarrigan.com>
This commit was merged in pull request #197.
This commit is contained in:
@@ -0,0 +1,130 @@
|
||||
<h3 class="text-lg font-semibold text-[var(--text-primary)] mb-4">Keyboard Shortcuts</h3>
|
||||
|
||||
<div class="space-y-4 text-sm">
|
||||
<div>
|
||||
<h4 class="font-medium text-[var(--text-primary)] mb-2">General</h4>
|
||||
<table class="w-full">
|
||||
<tbody class="divide-y divide-[var(--border-color)]">
|
||||
<tr>
|
||||
<td class="py-1.5 pr-4"><kbd class="kbd">?</kbd></td>
|
||||
<td class="py-1.5 text-[var(--text-secondary)]">Open this help panel</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="py-1.5 pr-4"><kbd class="kbd">Escape</kbd></td>
|
||||
<td class="py-1.5 text-[var(--text-secondary)]">Close the active panel</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="py-1.5 pr-4"><kbd class="kbd">Ctrl+,</kbd></td>
|
||||
<td class="py-1.5 text-[var(--text-secondary)]">Open settings</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="py-1.5 pr-4"><kbd class="kbd">Ctrl+L</kbd></td>
|
||||
<td class="py-1.5 text-[var(--text-secondary)]">Clear the terminal output</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="py-1.5 pr-4"><kbd class="kbd">Ctrl+C</kbd></td>
|
||||
<td class="py-1.5 text-[var(--text-secondary)]"
|
||||
>Interrupt Claude (when no text is selected)</td
|
||||
>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<h4 class="font-medium text-[var(--text-primary)] mb-2">Font Size</h4>
|
||||
<table class="w-full">
|
||||
<tbody class="divide-y divide-[var(--border-color)]">
|
||||
<tr>
|
||||
<td class="py-1.5 pr-4"><kbd class="kbd">Ctrl++</kbd> / <kbd class="kbd">Ctrl+=</kbd></td>
|
||||
<td class="py-1.5 text-[var(--text-secondary)]">Increase font size</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="py-1.5 pr-4"><kbd class="kbd">Ctrl+-</kbd></td>
|
||||
<td class="py-1.5 text-[var(--text-secondary)]">Decrease font size</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="py-1.5 pr-4"><kbd class="kbd">Ctrl+0</kbd></td>
|
||||
<td class="py-1.5 text-[var(--text-secondary)]">Reset font size to default</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<h4 class="font-medium text-[var(--text-primary)] mb-2">Display Modes</h4>
|
||||
<table class="w-full">
|
||||
<tbody class="divide-y divide-[var(--border-color)]">
|
||||
<tr>
|
||||
<td class="py-1.5 pr-4"><kbd class="kbd">Ctrl+Shift+S</kbd></td>
|
||||
<td class="py-1.5 text-[var(--text-secondary)]">Toggle streamer mode</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="py-1.5 pr-4"><kbd class="kbd">Ctrl+Shift+M</kbd></td>
|
||||
<td class="py-1.5 text-[var(--text-secondary)]">Toggle compact mode</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="py-1.5 pr-4"><kbd class="kbd">Ctrl+`</kbd></td>
|
||||
<td class="py-1.5 text-[var(--text-secondary)]">Toggle debug console</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<h4 class="font-medium text-[var(--text-primary)] mb-2">Code Editor</h4>
|
||||
<table class="w-full">
|
||||
<tbody class="divide-y divide-[var(--border-color)]">
|
||||
<tr>
|
||||
<td class="py-1.5 pr-4"><kbd class="kbd">Ctrl+E</kbd></td>
|
||||
<td class="py-1.5 text-[var(--text-secondary)]">Toggle editor panel (when connected)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="py-1.5 pr-4"><kbd class="kbd">Ctrl+B</kbd></td>
|
||||
<td class="py-1.5 text-[var(--text-secondary)]">Toggle file browser (in editor)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="py-1.5 pr-4"><kbd class="kbd">Ctrl+S</kbd></td>
|
||||
<td class="py-1.5 text-[var(--text-secondary)]">Save current file (in editor)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="py-1.5 pr-4"><kbd class="kbd">Ctrl+W</kbd></td>
|
||||
<td class="py-1.5 text-[var(--text-secondary)]">Close current tab (in editor)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="py-1.5 pr-4"><kbd class="kbd">Ctrl+N</kbd></td>
|
||||
<td class="py-1.5 text-[var(--text-secondary)]">New file (in editor)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<h4 class="font-medium text-[var(--text-primary)] mb-2">Help Panel Navigation</h4>
|
||||
<table class="w-full">
|
||||
<tbody class="divide-y divide-[var(--border-color)]">
|
||||
<tr>
|
||||
<td class="py-1.5 pr-4"><kbd class="kbd">←</kbd> / <kbd class="kbd">↑</kbd></td>
|
||||
<td class="py-1.5 text-[var(--text-secondary)]">Previous page</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="py-1.5 pr-4"><kbd class="kbd">→</kbd> / <kbd class="kbd">↓</kbd></td>
|
||||
<td class="py-1.5 text-[var(--text-secondary)]">Next page</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
kbd.kbd {
|
||||
display: inline-block;
|
||||
padding: 0.1rem 0.35rem;
|
||||
font-size: 0.75rem;
|
||||
font-family: monospace;
|
||||
background: var(--bg-secondary);
|
||||
border: 1px solid var(--border-color);
|
||||
border-radius: 3px;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user