free-coding-models 0.2.14 → 0.2.15
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 +7 -0
- package/package.json +1 -1
- package/src/key-handler.js +25 -4
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
+
## 0.2.15
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
- **Changelog scrolling experience**: Circular wrap-around scrolling in changelog details (N key) — up at the top now wraps to the bottom, down at the bottom wraps to the top. PageUp/PageDown also wrap for seamless infinite browsing, just like the main TUI list navigation. Home/End still jump to absolute first/last positions for quick access.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
5
12
|
## 0.2.14
|
|
6
13
|
|
|
7
14
|
### Fixed
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "free-coding-models",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.15",
|
|
4
4
|
"description": "Find the fastest coding LLM models in seconds — ping free models from multiple providers, pick the best one for OpenCode, Cursor, or any AI coding assistant.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"nvidia",
|
package/src/key-handler.js
CHANGED
|
@@ -852,10 +852,31 @@ export function createKeyHandler(ctx) {
|
|
|
852
852
|
const viewportRows = Math.max(1, state.terminalRows || 1)
|
|
853
853
|
const maxScrollOffset = Math.max(0, totalChangelogLines - viewportRows)
|
|
854
854
|
|
|
855
|
-
|
|
856
|
-
if (key.name === '
|
|
857
|
-
|
|
858
|
-
|
|
855
|
+
// 📖 Circular wrap-around scrolling: up at top → bottom, down at bottom → top
|
|
856
|
+
if (key.name === 'up') {
|
|
857
|
+
state.changelogScrollOffset = state.changelogScrollOffset > 0
|
|
858
|
+
? state.changelogScrollOffset - 1
|
|
859
|
+
: maxScrollOffset
|
|
860
|
+
return
|
|
861
|
+
}
|
|
862
|
+
if (key.name === 'down') {
|
|
863
|
+
state.changelogScrollOffset = state.changelogScrollOffset < maxScrollOffset
|
|
864
|
+
? state.changelogScrollOffset + 1
|
|
865
|
+
: 0
|
|
866
|
+
return
|
|
867
|
+
}
|
|
868
|
+
if (key.name === 'pageup') {
|
|
869
|
+
state.changelogScrollOffset = state.changelogScrollOffset >= pageStep
|
|
870
|
+
? state.changelogScrollOffset - pageStep
|
|
871
|
+
: maxScrollOffset - (pageStep - state.changelogScrollOffset - 1)
|
|
872
|
+
return
|
|
873
|
+
}
|
|
874
|
+
if (key.name === 'pagedown') {
|
|
875
|
+
state.changelogScrollOffset = state.changelogScrollOffset + pageStep <= maxScrollOffset
|
|
876
|
+
? state.changelogScrollOffset + pageStep
|
|
877
|
+
: (state.changelogScrollOffset + pageStep - maxScrollOffset - 1)
|
|
878
|
+
return
|
|
879
|
+
}
|
|
859
880
|
if (key.name === 'home') { state.changelogScrollOffset = 0; return }
|
|
860
881
|
if (key.name === 'end') { state.changelogScrollOffset = maxScrollOffset; return }
|
|
861
882
|
}
|