@ciphore/radiocli 0.1.1 → 0.1.2
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/CHANGELOG.md +10 -0
- package/dist/ui/app-state.js +10 -2
- package/dist/ui/use-app-input.js +4 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,15 @@ All notable changes to RadioCLI are documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.1.2] - 2026-05-30
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- Ignored Kitty keyboard release events so Ghostty users do not skip multiple
|
|
13
|
+
tabs from one left/right arrow key press.
|
|
14
|
+
- Ignored Kitty release events for raw media-key transport sequences so learned
|
|
15
|
+
or native media keys do not double-fire on key release.
|
|
16
|
+
|
|
8
17
|
## [0.1.1] - 2026-05-30
|
|
9
18
|
|
|
10
19
|
Initial public release.
|
|
@@ -47,4 +56,5 @@ Initial public release.
|
|
|
47
56
|
backend/volume that already appear in the header and footer. The reclaimed
|
|
48
57
|
rows go to the visualizer.
|
|
49
58
|
|
|
59
|
+
[0.1.2]: https://github.com/Ciphore/RadioCLI/releases/tag/v0.1.2
|
|
50
60
|
[0.1.1]: https://github.com/Ciphore/RadioCLI/releases/tag/v0.1.1
|
package/dist/ui/app-state.js
CHANGED
|
@@ -188,8 +188,13 @@ export function mediaTransportActionForInput(input, mediaKeys = emptyMediaKeyBin
|
|
|
188
188
|
if (keyCode === '20') {
|
|
189
189
|
return 'next';
|
|
190
190
|
}
|
|
191
|
-
const kittyMatches = [...input.matchAll(/\u001B\[(57428|57429|57430|57431|57433|57434|57435|57436)(?:;[
|
|
192
|
-
const
|
|
191
|
+
const kittyMatches = [...input.matchAll(/\u001B\[(57428|57429|57430|57431|57433|57434|57435|57436)(?:;\d+(?::(\d+))?(?:;[\d:]+)?)?u/g)];
|
|
192
|
+
const kittyMatch = kittyMatches.at(-1);
|
|
193
|
+
const kittyCode = kittyMatch?.[1];
|
|
194
|
+
const kittyEventType = kittyMatch?.[2];
|
|
195
|
+
if (kittyEventType === '3') {
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
193
198
|
if (kittyCode === '57431' || kittyCode === '57434' || kittyCode === '57436') {
|
|
194
199
|
return 'previous';
|
|
195
200
|
}
|
|
@@ -209,6 +214,9 @@ export function mediaTransportActionForInput(input, mediaKeys = emptyMediaKeyBin
|
|
|
209
214
|
}
|
|
210
215
|
return null;
|
|
211
216
|
}
|
|
217
|
+
export function shouldHandleKeyboardEvent(eventType) {
|
|
218
|
+
return eventType !== 'release';
|
|
219
|
+
}
|
|
212
220
|
export function normalizeMediaKeyBindings(mediaKeys) {
|
|
213
221
|
return {
|
|
214
222
|
previous: uniqueStrings(mediaKeys?.previous ?? []),
|
package/dist/ui/use-app-input.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useEffect } from 'react';
|
|
2
2
|
import { useInput } from 'ink';
|
|
3
3
|
import { homeItems, settingsItems } from './screen-items.js';
|
|
4
|
-
import { applyTextInput, clamp, favoriteTarget, isEditableInput, isPlainPrintableInput, mediaTransportActionForInput } from './app-state.js';
|
|
4
|
+
import { applyTextInput, clamp, favoriteTarget, isEditableInput, isPlainPrintableInput, mediaTransportActionForInput, shouldHandleKeyboardEvent } from './app-state.js';
|
|
5
5
|
import { parseSgrMouseEvents, primaryMousePress } from './terminal-mouse.js';
|
|
6
6
|
export function useAppInput({ adjustVolume, beginLearningTransportKey, capturingTransportAction, commandMode, commandText, currentItemCount, cycleDisplayColor, cyclePlaybackBackend, cycleReceiverStyle, cycleSleepTimer, editingCountryFilter, editingSearch, executeCommand, filteredCountries, go, lastRawTransportAtRef, lastSubmittedSearchRef, loadCountry, openAdjacentTab, openScreen, playAdjacent, playStation, player, playingStation, moveExploreCursor, moveExploreCursorToCell, refreshProviderHealth, resetLearnedTransportKeys, runSearch, saveLearnedTransportKey, screen, searchQuery, selected, selectedStation, setCapturingTransportAction, setCommandMode, setCommandText, setCountryFilter, setEditingCountryFilter, setEditingSearch, setMessage, setSearchQuery, setSelected, setShowDiagnostics, settingsRef, shutdown, stdin, toggleFavorite, toggleMute, toggleNearbyLocation, toggleRadioGarden, toggleSkipBrokenStreams }) {
|
|
7
7
|
useEffect(() => {
|
|
@@ -71,6 +71,9 @@ export function useAppInput({ adjustVolume, beginLearningTransportKey, capturing
|
|
|
71
71
|
shutdown();
|
|
72
72
|
return;
|
|
73
73
|
}
|
|
74
|
+
if (!shouldHandleKeyboardEvent(key.eventType)) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
74
77
|
if (capturingTransportAction) {
|
|
75
78
|
return;
|
|
76
79
|
}
|