Skip to content
This repository was archived by the owner on Jul 13, 2026. It is now read-only.

Commit d4b01e2

Browse files
committed
Version 1.3.1 release
1 parent cad298a commit d4b01e2

14 files changed

Lines changed: 598 additions & 220 deletions

FEATURE_LOG.md

Lines changed: 237 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,237 @@
1+
# DeepShell Feature Development Log
2+
3+
This file tracks new features, improvements, and bug fixes being developed for the next release.
4+
5+
## Version 1.3.1 (Ready for Release)
6+
7+
### 🐛 Bug Fixes
8+
9+
#### Interactive Mode Line Editing Enhancement
10+
**Status:** ✅ Completed
11+
**Date:** 2024-12-19
12+
**Description:** Fixed interactive mode line editing functionality by integrating GNU Readline library.
13+
14+
**Problem Solved:**
15+
- Interactive mode didn't support line editing capabilities
16+
- Arrow keys produced strange characters instead of cursor movement
17+
- Users had to delete entire lines to make corrections instead of editing in-place
18+
19+
**Implementation:**
20+
- Replaced basic `getline()` with GNU Readline library
21+
- Added readline and history support to `read_line()` function
22+
- Updated build dependencies to include `libreadline-dev`
23+
- Enhanced Makefile with `-lreadline` linking
24+
25+
**New Capabilities:**
26+
- ✅ Arrow key navigation (←/→ for cursor movement)
27+
- ✅ Backspace/Delete key support for proper character deletion
28+
- ✅ Command history (↑/↓ arrows to recall previous inputs)
29+
- ✅ Standard terminal editing shortcuts (Home, End, Ctrl+A, Ctrl+E, etc.)
30+
- ✅ In-place line editing without retyping entire commands
31+
- ✅ Persistent command history within interactive sessions
32+
33+
**Technical Changes:**
34+
- Updated `utils.c` - Replaced `read_line()` implementation
35+
- Updated `deepshell.h` - Added readline library headers
36+
- Updated `Makefile` - Added readline dependency and installation instructions
37+
- Updated `README.md` - Added libreadline-dev to prerequisites
38+
39+
**User Impact:**
40+
- Significantly improved interactive mode user experience
41+
- Familiar terminal editing behavior for all users
42+
- Reduced frustration when making command corrections
43+
- Enhanced productivity in interactive sessions
44+
45+
#### Help Menu Formatting Enhancement
46+
**Status:** ✅ Completed
47+
**Date:** 2024-12-19
48+
**Description:** Fixed help menu alignment and visual formatting issues.
49+
50+
**Problem Solved:**
51+
- Help menu had poor visual alignment for longer command flags
52+
- Longer flags (like `-set-key, --set-api-key`) caused explanation text to wrap to new lines
53+
- Inconsistent spacing made the help menu difficult to read
54+
55+
**Implementation:**
56+
- Moved explanation column 10 spaces to the right for better alignment
57+
- Ensured consistent spacing for all command options
58+
- Improved visual flow and readability of help output
59+
60+
**User Impact:**
61+
- Professional, clean help menu presentation
62+
- Easier to scan and find specific command options
63+
- Better user experience when learning the tool
64+
- Consistent formatting across all command descriptions
65+
66+
#### Code Documentation Cleanup
67+
**Status:** ✅ Completed
68+
**Date:** 2024-12-19
69+
**Description:** Removed all references to Python from code comments and documentation.
70+
71+
**Problem Solved:**
72+
- Code comments referenced the original Python implementation
73+
- Confusing references that could mislead developers and users
74+
- Inconsistent documentation that didn't reflect the C implementation
75+
76+
**Implementation:**
77+
- Updated comments in `main.c` to remove Python version references
78+
- Fixed comments in `settings.c` about setup behavior
79+
- Updated README.md example to be language-neutral
80+
- Modified `utils.c` code comment to use C as example instead of Python
81+
- Preserved all explanatory value while removing implementation references
82+
83+
**Files Modified:**
84+
- `main.c` - Cleaned up setup and behavior comments
85+
- `settings.c` - Updated initial setup comments
86+
- `README.md` - Made example query language-neutral
87+
- `utils.c` - Updated code block language identifier comment
88+
89+
**User Impact:**
90+
- Clear, consistent documentation focused on C implementation
91+
- No confusing references to other language versions
92+
- Professional codebase presentation
93+
- Accurate code documentation for future developers
94+
95+
#### Settings Menu Streamlining
96+
**Status:** ✅ Completed
97+
**Date:** 2024-12-19
98+
**Description:** Reorganized settings menu to consolidate API key management under a unified interface.
99+
100+
**Problem Solved:**
101+
- Settings menu had separate options for Gemini and OpenRouter API key management
102+
- Menu was becoming cluttered as more LLM services were added
103+
- Inconsistent organization made navigation less intuitive
104+
105+
**Implementation:**
106+
- Replaced separate "Manage Gemini API Keys" and "Manage OpenRouter API Key" options
107+
- Created new unified "Manage API Keys" menu option (option 3)
108+
- Added service selection submenu that lets users choose which LLM service to manage
109+
- Included helpful Ollama information option explaining it doesn't require API keys
110+
- Renumbered remaining menu options for consistency
111+
112+
**Menu Changes:**
113+
- **Before:** 10 separate options including individual API key management
114+
- **After:** 9 streamlined options with unified API key management
115+
- New menu flow: Main Menu → "Manage API Keys" → Service Selection → Existing Management Interface
116+
117+
**Technical Changes:**
118+
- Added `manage_api_keys_unified()` function in `settings.c`
119+
- Updated main settings menu display and switch statement
120+
- Added function declaration to `deepshell.h`
121+
- Preserved all existing API key management functionality
122+
123+
**User Impact:**
124+
- Cleaner, more organized settings menu
125+
- Intuitive grouping of related functionality
126+
- Scalable design for future LLM service additions
127+
- Consistent user experience across all API key management tasks
128+
- Reduced menu clutter and improved navigation
129+
130+
#### API Key Visibility Enhancement
131+
**Status:** ✅ Completed
132+
**Date:** 2024-12-19
133+
**Description:** Added comprehensive API key viewing capability to both Gemini and OpenRouter key management menus.
134+
135+
**Problem Solved:**
136+
- Users could only see limited API key information (just nicknames and active status)
137+
- No way to view full API key values for verification or troubleshooting
138+
- Inconsistent visibility between what's configured and what's displayed
139+
140+
**Implementation:**
141+
- Added new option "4. Show all API keys & nicknames" to both Gemini and OpenRouter menus
142+
- Displays complete information for each configured API key
143+
- Shows nickname, full API key value, and active status
144+
- Clean formatting with separators between multiple keys
145+
- Only appears when API keys are configured
146+
147+
**Display Format:**
148+
```
149+
--- All [Service] API Keys ---
150+
151+
Nickname: key-name (ACTIVE)
152+
API Key : sk-1234567890abcdef...
153+
---
154+
Nickname: another-key
155+
API Key : sk-0987654321fedcba...
156+
```
157+
158+
**Technical Changes:**
159+
- Updated `manage_gemini_api_keys()` function in `settings.c`
160+
- Updated `manage_openrouter_api_key()` function in `settings.c`
161+
- Added case 4 handlers to both menu switch statements
162+
- Consistent implementation across both services
163+
164+
**User Impact:**
165+
- Complete visibility into configured API keys
166+
- Easy verification of API key values
167+
- Better troubleshooting capabilities
168+
- Consistent experience across all LLM services
169+
- Professional presentation of sensitive information
170+
171+
#### Active API Key Prominence Enhancement
172+
**Status:** ✅ Completed
173+
**Date:** 2024-12-19
174+
**Description:** Enhanced API key management menus to prominently display active API key details upon entry.
175+
176+
**Problem Solved:**
177+
- Users had to navigate through options to see their active API key details
178+
- Only minimal information (nickname + "active" tag) was shown in the summary
179+
- No immediate visibility of the actual API key value being used
180+
181+
**Implementation:**
182+
- Added prominent "Active API Key" section at the top of both Gemini and OpenRouter menus
183+
- Displays both nickname and full API key value for the currently active key
184+
- Reorganized menu layout: Active Key Details → All Keys Summary → Options
185+
- Smart display: only shows when API keys are configured and an active key is set
186+
187+
**New Menu Layout:**
188+
```
189+
--- [Service] API Key Management ---
190+
191+
Active API Key:
192+
Nickname: user-key-name
193+
API Key : sk-1234567890abcdef...
194+
195+
All API keys:
196+
1. user-key-name (active)
197+
2. backup-key
198+
199+
Options:
200+
[menu options...]
201+
```
202+
203+
**Technical Changes:**
204+
- Updated `manage_gemini_api_keys()` function to show active key details first
205+
- Updated `manage_openrouter_api_key()` function with same enhancement
206+
- Used existing `get_active_[service]_key_value()` functions for data retrieval
207+
- Maintained all existing functionality while improving presentation
208+
209+
**User Impact:**
210+
- Immediate visibility of active API key information upon menu entry
211+
- No need to select additional options to see current key details
212+
- Better workflow for API key verification and management
213+
- Enhanced user experience with critical information prominently displayed
214+
- Faster troubleshooting when API key issues arise
215+
216+
---
217+
218+
## Development Notes
219+
220+
### Testing Status
221+
- ✅ Compilation successful with readline integration
222+
- ✅ Manual testing confirms arrow key navigation works
223+
- ✅ Line editing functionality verified in interactive mode
224+
- ✅ Backward compatibility maintained
225+
226+
### Dependencies Added
227+
- `libreadline-dev` - Required for compilation
228+
- Runtime dependency on `libreadline8` (usually pre-installed)
229+
230+
### Future Considerations
231+
- Potential for adding tab completion in interactive mode
232+
- Custom command completion for DeepShell-specific commands
233+
- History persistence across sessions (save/load command history)
234+
235+
---
236+
237+
*This log will be used to generate release notes for version 1.3.1*

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
CC = gcc
55
CFLAGS = -Wall -Wextra -std=c99 -O2
66
LDFLAGS =
7-
LIBS = -lcurl -ljson-c -lpthread
7+
LIBS = -lcurl -ljson-c -lpthread -lreadline
88

99
# Platform detection
1010
ifeq ($(OS),Windows_NT)
@@ -40,7 +40,7 @@ clean:
4040
# Install dependencies (Linux)
4141
install-deps-linux:
4242
sudo apt-get update
43-
sudo apt-get install -y libcurl4-openssl-dev libjson-c-dev
43+
sudo apt-get install -y libcurl4-openssl-dev libjson-c-dev libreadline-dev
4444

4545
# Install dependencies (Windows/MSYS2)
4646
install-deps-windows:

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,12 @@ Designed for developers, researchers, and power users, DeepShell abstracts away
5656
* GCC compiler and build tools
5757
* libcurl4-openssl-dev
5858
* libjson-c-dev
59+
* libreadline-dev
5960

6061
2. **Install Dependencies (Linux):**
6162
```bash
6263
sudo apt-get update
63-
sudo apt-get install -y build-essential libcurl4-openssl-dev libjson-c-dev
64+
sudo apt-get install -y build-essential libcurl4-openssl-dev libjson-c-dev libreadline-dev
6465
```
6566

6667
3. **Clone the Repository:**
@@ -109,7 +110,7 @@ Your settings will be saved to `~/.deepshell/deepshell.conf`.
109110
**Query the active LLM**
110111
```bash
111112
./deepshell -q "What are the benefits of using a CLI for LLM interaction?"
112-
./deepshell --query "Write a python function to calculate a factorial"
113+
./deepshell --query "Write a function to calculate a factorial"
113114
```
114115
115116
### LLM & Model Management

0 commit comments

Comments
 (0)