claude-starter 1.3.2 → 1.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +34 -4
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -447,6 +447,16 @@ function runListMode(limit) {
|
|
|
447
447
|
function createApp() {
|
|
448
448
|
const allSessions = loadAllSessions();
|
|
449
449
|
const meta = loadMeta();
|
|
450
|
+
|
|
451
|
+
// Apply meta customTitles — these take priority over JSONL titles
|
|
452
|
+
// so renames persist even after continuing a conversation
|
|
453
|
+
for (const session of allSessions) {
|
|
454
|
+
const sm = meta.sessions[session.sessionId];
|
|
455
|
+
if (sm && sm.customTitle) {
|
|
456
|
+
session.customTitle = sm.customTitle;
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
|
|
450
460
|
let filteredSessions = [...allSessions];
|
|
451
461
|
let selectedIndex = -1; // -1 = "New Session", 0+ = session index
|
|
452
462
|
let filterText = '';
|
|
@@ -532,6 +542,16 @@ function createApp() {
|
|
|
532
542
|
});
|
|
533
543
|
|
|
534
544
|
function updateFooter() {
|
|
545
|
+
if (isSearchMode) {
|
|
546
|
+
const keys = [
|
|
547
|
+
'{#e0af68-fg}{bold}↵{/} {#e0af68-fg}Confirm{/}',
|
|
548
|
+
'{#7aa2f7-fg}{bold}↑↓{/} {#7aa2f7-fg}Navigate{/}',
|
|
549
|
+
'{#565f89-fg}{bold}⌫{/} {#565f89-fg}Delete char{/}',
|
|
550
|
+
'{#565f89-fg}{bold}Esc{/} {#565f89-fg}Clear{/}',
|
|
551
|
+
];
|
|
552
|
+
footer.setContent(`\n ${keys.join(' {#414868-fg}│{/} ')}`);
|
|
553
|
+
return;
|
|
554
|
+
}
|
|
535
555
|
const keys = [
|
|
536
556
|
'{#9ece6a-fg}{bold}n{/} {#9ece6a-fg}New{/}',
|
|
537
557
|
'{#7aa2f7-fg}{bold}↵{/} {#7aa2f7-fg}Resume{/}',
|
|
@@ -654,6 +674,10 @@ function createApp() {
|
|
|
654
674
|
const session = filteredSessions[selectedIndex];
|
|
655
675
|
loadSessionDetail(session);
|
|
656
676
|
|
|
677
|
+
// Meta customTitle takes priority over JSONL
|
|
678
|
+
const sm = meta.sessions[session.sessionId];
|
|
679
|
+
if (sm && sm.customTitle) session.customTitle = sm.customTitle;
|
|
680
|
+
|
|
657
681
|
const color = getProjectColor(session.project, projectColorMap);
|
|
658
682
|
let c = '';
|
|
659
683
|
const sep = ` {#414868-fg}${'─'.repeat(44)}{/}`;
|
|
@@ -843,11 +867,13 @@ function createApp() {
|
|
|
843
867
|
}
|
|
844
868
|
|
|
845
869
|
screen.key(['down'], () => {
|
|
846
|
-
if (renameMode || popupOpen
|
|
870
|
+
if (renameMode || popupOpen) return;
|
|
871
|
+
if (isSearchMode) { isSearchMode = false; updateHeader(); updateFooter(); screen.render(); }
|
|
847
872
|
moveSelection(1);
|
|
848
873
|
});
|
|
849
874
|
screen.key(['up'], () => {
|
|
850
|
-
if (renameMode || popupOpen
|
|
875
|
+
if (renameMode || popupOpen) return;
|
|
876
|
+
if (isSearchMode) { isSearchMode = false; updateHeader(); updateFooter(); screen.render(); }
|
|
851
877
|
moveSelection(-1);
|
|
852
878
|
});
|
|
853
879
|
screen.key(['home'], () => {
|
|
@@ -880,7 +906,9 @@ function createApp() {
|
|
|
880
906
|
// Search
|
|
881
907
|
screen.key(['/'], () => {
|
|
882
908
|
if (renameMode || isSearchMode) return;
|
|
883
|
-
isSearchMode = true;
|
|
909
|
+
isSearchMode = true;
|
|
910
|
+
if (!filterText) filterText = ''; // keep existing filterText if any
|
|
911
|
+
updateHeader(); updateFooter(); screen.render();
|
|
884
912
|
});
|
|
885
913
|
|
|
886
914
|
screen.on('keypress', (ch, key) => {
|
|
@@ -948,7 +976,7 @@ function createApp() {
|
|
|
948
976
|
}
|
|
949
977
|
|
|
950
978
|
if (!isSearchMode) return;
|
|
951
|
-
if (key.name === 'return' || key.name === 'enter') { isSearchMode = false; renderAll(); return; }
|
|
979
|
+
if (key.name === 'return' || key.name === 'enter') { isSearchMode = false; searchJustConfirmed = true; renderAll(); return; }
|
|
952
980
|
if (key.name === 'escape') { isSearchMode = false; filterText = ''; applyFilter(); return; }
|
|
953
981
|
// Only accept printable characters (exclude control chars like \r \n \t)
|
|
954
982
|
if (ch && ch.length === 1 && ch.charCodeAt(0) >= 32 && !key.ctrl && !key.meta) { filterText += ch; selectedIndex = -1; applyFilter(); }
|
|
@@ -1007,10 +1035,12 @@ function createApp() {
|
|
|
1007
1035
|
// Track the rename confirm popup and its session for Enter handling
|
|
1008
1036
|
let renameConfirmPopup = null;
|
|
1009
1037
|
let renameConfirmSession = null;
|
|
1038
|
+
let searchJustConfirmed = false;
|
|
1010
1039
|
|
|
1011
1040
|
screen.key(['enter'], () => {
|
|
1012
1041
|
if (renameMode) return;
|
|
1013
1042
|
if (renameJustFinished) return;
|
|
1043
|
+
if (searchJustConfirmed) { searchJustConfirmed = false; return; }
|
|
1014
1044
|
// Handle rename confirm popup Enter
|
|
1015
1045
|
if (renameConfirmPopup && popupOpen) {
|
|
1016
1046
|
const session = renameConfirmSession;
|