Skip to content

Commit bab10d2

Browse files
committed
added menu and editor shortcut preview
1 parent 3ebfa38 commit bab10d2

5 files changed

Lines changed: 91 additions & 65 deletions

File tree

README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@
22

33
A lightweight CLI-based IDE with integrated AI assistance through Ollama. Features a split-window terminal interface with an integrated code editor and AI assistant for creating, editing, and testing scripts and markdown documents.
44

5-
![Terminal Intelligence Preview](images/ti-4th-b-view.png)
5+
### Menu View & Shotcuts
6+
Quick overview of current menu shotcuts and key combinations
7+
8+
![TI Help Menu](images/menu-guide.png)
69
---
710

8-
[**Additional Screenshot Showcase →**](SHOWCASE.md)
11+
# [**Additional Screenshot Showcase →**](SHOWCASE.md)
912

1013
## Features
1114

SHOWCASE.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ This document showcases the various features and views of Terminal Intelligence
44

55
## Main Interface Views
66

7+
### Menu View & Shotcuts
8+
Quick overview of current menu shotcuts and key combinations
9+
10+
![TI Help Menu](images/menu-guide.png)
11+
712
### First View - Split Window Interface
813
The main split-window interface showing the code editor on the left and AI assistant on the right.
914

images/menu-guide.png

108 KB
Loading

internal/ui/app.go

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@ type App struct {
7070
showBackupPicker bool // Whether backup picker dialog is showing
7171
showChatLoader bool // Whether chat loader dialog is showing
7272
showHelp bool // Whether help dialog is showing
73-
showEditorHelp bool // Whether editor shortcuts dialog is showing
7473
showLanguageInstallPrompt bool // Whether language install prompt is showing
7574
languageToInstall string // Language name for installation prompt
7675
fileTypeForInstall string // File type that triggered install check
@@ -493,15 +492,6 @@ func (a *App) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
493492
return a, nil
494493
}
495494

496-
// Handle editor shortcuts dialog
497-
if a.showEditorHelp {
498-
switch msg.String() {
499-
case "esc", "ctrl+e", "q":
500-
a.showEditorHelp = false
501-
}
502-
return a, nil
503-
}
504-
505495
// Handle file picker dialog
506496
if a.showFilePicker {
507497
switch msg.String() {
@@ -844,11 +834,6 @@ func (a *App) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
844834
a.showHelp = !a.showHelp
845835
return a, nil
846836

847-
case "ctrl+e":
848-
// Toggle editor shortcuts help
849-
a.showEditorHelp = !a.showEditorHelp
850-
return a, nil
851-
852837
case "ctrl+a":
853838
// Save entire AI chat history to .ti/ folder
854839
history := a.aiPane.GetHistory()
@@ -1339,11 +1324,6 @@ func (a *App) View() string {
13391324
return a.renderHelpDialog()
13401325
}
13411326

1342-
// Show editor shortcuts dialog if needed
1343-
if a.showEditorHelp {
1344-
return a.renderEditorHelpDialog()
1345-
}
1346-
13471327
// Show chat loader dialog if needed
13481328
if a.showChatLoader {
13491329
pickerStyle := lipgloss.NewStyle().

internal/ui/help.go

Lines changed: 81 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,8 @@ func (a *App) renderHelpDialog() string {
1212
Foreground(lipgloss.Color("15")).
1313
Background(lipgloss.Color("62")).
1414
Padding(0, 1).
15-
Width(60).
1615
Align(lipgloss.Center)
1716

18-
titleBar := titleStyle.Render("⌨ Keyboard Shortcuts")
19-
20-
// Help content with sections
2117
sectionStyle := lipgloss.NewStyle().
2218
Bold(true).
2319
Foreground(lipgloss.Color("62"))
@@ -29,66 +25,108 @@ func (a *App) renderHelpDialog() string {
2925
descStyle := lipgloss.NewStyle().
3026
Foreground(lipgloss.Color("252"))
3127

32-
var helpText string
28+
// Left column - General shortcuts
29+
var leftColumn string
30+
leftColumn += titleStyle.Width(60).Render("⌨ Keyboard Shortcuts") + "\n\n"
3331

3432
// File section
35-
helpText += sectionStyle.Render("── File ──────────────────────────────────────") + "\n"
36-
helpText += keyStyle.Render(" Ctrl+O") + descStyle.Render(" Open file") + "\n"
37-
helpText += keyStyle.Render(" Ctrl+N") + descStyle.Render(" New file") + "\n"
38-
helpText += keyStyle.Render(" Ctrl+S") + descStyle.Render(" Save file") + "\n"
39-
helpText += keyStyle.Render(" Ctrl+X") + descStyle.Render(" Close file") + "\n"
40-
helpText += keyStyle.Render(" Ctrl+R") + descStyle.Render(" Run current script") + "\n"
41-
helpText += keyStyle.Render(" Ctrl+K") + descStyle.Render(" Kill running process (in terminal mode)") + "\n"
42-
helpText += keyStyle.Render(" Ctrl+B") + descStyle.Render(" Backup Picker (Restore previous versions)") + "\n"
43-
helpText += keyStyle.Render(" Ctrl+Q") + descStyle.Render(" Quit") + "\n"
44-
helpText += "\n"
33+
leftColumn += sectionStyle.Render("── File ──────────────────────────────────────") + "\n"
34+
leftColumn += keyStyle.Render(" Ctrl+O") + descStyle.Render(" Open file") + "\n"
35+
leftColumn += keyStyle.Render(" Ctrl+N") + descStyle.Render(" New file") + "\n"
36+
leftColumn += keyStyle.Render(" Ctrl+S") + descStyle.Render(" Save file") + "\n"
37+
leftColumn += keyStyle.Render(" Ctrl+X") + descStyle.Render(" Close file") + "\n"
38+
leftColumn += keyStyle.Render(" Ctrl+R") + descStyle.Render(" Run current script") + "\n"
39+
leftColumn += keyStyle.Render(" Ctrl+K") + descStyle.Render(" Kill running process (in terminal mode)") + "\n"
40+
leftColumn += keyStyle.Render(" Ctrl+B") + descStyle.Render(" Backup Picker (Restore previous versions)") + "\n"
41+
leftColumn += keyStyle.Render(" Ctrl+Q") + descStyle.Render(" Quit") + "\n"
42+
leftColumn += "\n"
4543

4644
// AI section
47-
helpText += sectionStyle.Render("── AI ────────────────────────────────────────") + "\n"
48-
helpText += keyStyle.Render(" Ctrl+Y") + descStyle.Render(" List code blocks (Execute/Insert/Return)") + "\n"
49-
helpText += keyStyle.Render(" Ctrl+P") + descStyle.Render(" Insert selected code into editor") + "\n"
50-
helpText += keyStyle.Render(" Ctrl+A") + descStyle.Render(" Save full chat history to .ti/ folder") + "\n"
51-
helpText += keyStyle.Render(" Ctrl+L") + descStyle.Render(" Load saved chat from .ti/ folder") + "\n"
52-
helpText += keyStyle.Render(" Ctrl+T") + descStyle.Render(" Clear chat / New chat") + "\n"
53-
helpText += "\n"
45+
leftColumn += sectionStyle.Render("── AI ────────────────────────────────────────") + "\n"
46+
leftColumn += keyStyle.Render(" Ctrl+Y") + descStyle.Render(" List code blocks (Execute/Insert/Return)") + "\n"
47+
leftColumn += keyStyle.Render(" Ctrl+P") + descStyle.Render(" Insert selected code into editor") + "\n"
48+
leftColumn += keyStyle.Render(" Ctrl+A") + descStyle.Render(" Save full chat history to .ti/ folder") + "\n"
49+
leftColumn += keyStyle.Render(" Ctrl+L") + descStyle.Render(" Load saved chat from .ti/ folder") + "\n"
50+
leftColumn += keyStyle.Render(" Ctrl+T") + descStyle.Render(" Clear chat / New chat") + "\n"
51+
leftColumn += "\n"
5452

5553
// Navigation section
56-
helpText += sectionStyle.Render("── Navigation ────────────────────────────────") + "\n"
57-
helpText += keyStyle.Render(" Tab") + descStyle.Render(" Cycle: Editor → AI Input → AI Response") + "\n"
58-
helpText += keyStyle.Render(" ↑↓") + descStyle.Render(" Scroll line by line") + "\n"
59-
helpText += keyStyle.Render(" PgUp/PgDn") + descStyle.Render(" Scroll page") + "\n"
60-
helpText += keyStyle.Render(" Home/End") + descStyle.Render(" Jump to top/bottom") + "\n"
61-
helpText += keyStyle.Render(" Esc") + descStyle.Render(" Back") + "\n"
62-
helpText += keyStyle.Render(" Ctrl+E") + descStyle.Render(" Show Editor Shortcuts") + "\n"
63-
helpText += "\n"
54+
leftColumn += sectionStyle.Render("── Navigation ────────────────────────────────") + "\n"
55+
leftColumn += keyStyle.Render(" Tab") + descStyle.Render(" Cycle: Editor → AI Input → AI Response") + "\n"
56+
leftColumn += keyStyle.Render(" ↑↓") + descStyle.Render(" Scroll line by line") + "\n"
57+
leftColumn += keyStyle.Render(" PgUp/PgDn") + descStyle.Render(" Scroll page") + "\n"
58+
leftColumn += keyStyle.Render(" Home/End") + descStyle.Render(" Jump to top/bottom") + "\n"
59+
leftColumn += keyStyle.Render(" Esc") + descStyle.Render(" Back") + "\n"
60+
leftColumn += "\n"
6461

6562
// Agent Commands section
66-
helpText += sectionStyle.Render("── Agent Commands ────────────────────────────") + "\n"
67-
helpText += keyStyle.Render(" /fix") + descStyle.Render(" Force agentic mode (AI modifies code)") + "\n"
68-
helpText += keyStyle.Render(" /ask") + descStyle.Render(" Force conversational mode (no changes)") + "\n"
69-
helpText += keyStyle.Render(" /preview") + descStyle.Render(" Preview changes before applying") + "\n"
70-
helpText += keyStyle.Render(" /model") + descStyle.Render(" Show current agent and model info") + "\n"
71-
helpText += keyStyle.Render(" /config") + descStyle.Render(" Edit configuration settings") + "\n"
72-
helpText += keyStyle.Render(" /help") + descStyle.Render(" Show this help message") + "\n"
73-
helpText += "\n"
63+
leftColumn += sectionStyle.Render("── Agent Commands ────────────────────────────") + "\n"
64+
leftColumn += keyStyle.Render(" /fix") + descStyle.Render(" Force agentic mode (AI modifies code)") + "\n"
65+
leftColumn += keyStyle.Render(" /ask") + descStyle.Render(" Force conversational mode (no changes)") + "\n"
66+
leftColumn += keyStyle.Render(" /preview") + descStyle.Render(" Preview changes before applying") + "\n"
67+
leftColumn += keyStyle.Render(" /model") + descStyle.Render(" Show current agent and model info") + "\n"
68+
leftColumn += keyStyle.Render(" /config") + descStyle.Render(" Edit configuration settings") + "\n"
69+
leftColumn += keyStyle.Render(" /help") + descStyle.Render(" Show this help message") + "\n"
70+
71+
// Right column - Editor shortcuts
72+
var rightColumn string
73+
rightColumn += titleStyle.Width(60).Render("✏ Editor Shortcuts") + "\n\n"
74+
75+
// Delete operations
76+
rightColumn += sectionStyle.Render("── Delete ────────────────────────────────────") + "\n"
77+
rightColumn += keyStyle.Render(" Alt+D, D") + descStyle.Render(" Delete current line") + "\n"
78+
rightColumn += keyStyle.Render(" Alt+L") + descStyle.Render(" Delete current line (single key)") + "\n"
79+
rightColumn += keyStyle.Render(" Alt+D, W") + descStyle.Render(" Delete word from cursor") + "\n"
80+
rightColumn += keyStyle.Render(" Alt+W") + descStyle.Render(" Delete word from cursor (single key)") + "\n"
81+
rightColumn += keyStyle.Render(" Alt+D, 1-9") + descStyle.Render(" Delete N lines from cursor") + "\n"
82+
rightColumn += "\n"
83+
84+
// Undo / Redo
85+
rightColumn += sectionStyle.Render("── Undo / Redo ───────────────────────────────") + "\n"
86+
rightColumn += keyStyle.Render(" Alt+U") + descStyle.Render(" Undo last change") + "\n"
87+
rightColumn += keyStyle.Render(" Alt+R") + descStyle.Render(" Redo last undone change") + "\n"
88+
rightColumn += "\n"
89+
90+
// Navigation
91+
rightColumn += sectionStyle.Render("── Navigation ────────────────────────────────") + "\n"
92+
rightColumn += keyStyle.Render(" Alt+G") + descStyle.Render(" Go to end of file") + "\n"
93+
rightColumn += keyStyle.Render(" Alt+H") + descStyle.Render(" Go to top of file") + "\n"
94+
rightColumn += keyStyle.Render(" ↑↓←→") + descStyle.Render(" Move cursor") + "\n"
95+
rightColumn += keyStyle.Render(" Home/End") + descStyle.Render(" Jump to line start/end") + "\n"
96+
rightColumn += "\n"
97+
98+
// Editing
99+
rightColumn += sectionStyle.Render("── Editing ───────────────────────────────────") + "\n"
100+
rightColumn += keyStyle.Render(" Enter") + descStyle.Render(" Insert new line") + "\n"
101+
rightColumn += keyStyle.Render(" Backspace") + descStyle.Render(" Delete char before cursor") + "\n"
102+
rightColumn += keyStyle.Render(" Delete") + descStyle.Render(" Delete char at cursor") + "\n"
103+
104+
// Style both columns
105+
columnStyle := lipgloss.NewStyle().
106+
Width(64).
107+
Padding(1, 2)
108+
109+
leftBox := columnStyle.Render(leftColumn)
110+
rightBox := columnStyle.Render(rightColumn)
111+
112+
// Join columns horizontally
113+
content := lipgloss.JoinHorizontal(lipgloss.Top, leftBox, rightBox)
74114

75115
// Footer
76116
footerStyle := lipgloss.NewStyle().
77117
Foreground(lipgloss.Color("240")).
78-
Align(lipgloss.Center).
79-
Width(60)
118+
Align(lipgloss.Center)
80119

81120
footer := footerStyle.Render("Press Esc or Ctrl+H to close")
82121

83122
// Dialog box
84123
dialogStyle := lipgloss.NewStyle().
85124
Border(lipgloss.RoundedBorder()).
86125
BorderForeground(lipgloss.Color("62")).
87-
Padding(1, 2).
88-
Width(64)
126+
Padding(1, 2)
89127

90128
dialog := dialogStyle.Render(
91-
lipgloss.JoinVertical(lipgloss.Left, titleBar, "", helpText, footer),
129+
lipgloss.JoinVertical(lipgloss.Left, content, "", footer),
92130
)
93131

94132
return lipgloss.Place(a.width, a.height, lipgloss.Center, lipgloss.Center, dialog)

0 commit comments

Comments
 (0)