Skip to content

Commit bc10f19

Browse files
committed
Release 0.2.1
1 parent 99db73d commit bc10f19

115 files changed

Lines changed: 9425 additions & 2864 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
name: CI
22

3+
permissions:
4+
contents: read
5+
6+
concurrency:
7+
group: ci-${{ github.workflow }}-${{ github.ref }}
8+
cancel-in-progress: true
9+
310
on:
411
pull_request:
512
workflow_dispatch:
@@ -12,23 +19,27 @@ jobs:
1219
verify:
1320
name: Verify
1421
runs-on: ${{ matrix.os }}
22+
timeout-minutes: 25
1523
strategy:
1624
matrix:
1725
os: [ubuntu-latest, macos-latest, windows-latest]
1826
node-version: [22.x, 24.x]
1927
steps:
2028
- name: Checkout
21-
uses: actions/checkout@v4
29+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
2230

2331
- name: Setup Node
24-
uses: actions/setup-node@v4
32+
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
2533
with:
2634
node-version: ${{ matrix.node-version }}
2735
cache: npm
2836

2937
- name: Install
3038
run: npm ci
3139

40+
- name: Audit required runtime dependencies
41+
run: npm audit --omit=dev --omit=optional --audit-level=high
42+
3243
- name: Typecheck
3344
run: npm run check
3445

@@ -59,15 +70,16 @@ jobs:
5970
name: Playback Smoke
6071
runs-on: ubuntu-latest
6172
if: github.event_name != 'pull_request'
73+
timeout-minutes: 15
6274
strategy:
6375
matrix:
6476
node-version: [22.x, 24.x]
6577
steps:
6678
- name: Checkout
67-
uses: actions/checkout@v4
79+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
6880

6981
- name: Setup Node
70-
uses: actions/setup-node@v4
82+
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
7183
with:
7284
node-version: ${{ matrix.node-version }}
7385
cache: npm
@@ -84,15 +96,16 @@ jobs:
8496
docs:
8597
name: Docs
8698
runs-on: ubuntu-latest
99+
timeout-minutes: 20
87100
strategy:
88101
matrix:
89102
node-version: [22.x, 24.x]
90103
steps:
91104
- name: Checkout
92-
uses: actions/checkout@v4
105+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
93106

94107
- name: Setup Node
95-
uses: actions/setup-node@v4
108+
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
96109
with:
97110
node-version: ${{ matrix.node-version }}
98111
cache: npm
@@ -102,6 +115,10 @@ jobs:
102115
working-directory: apps/docs
103116
run: npm ci
104117

118+
- name: Audit production dependencies
119+
working-directory: apps/docs
120+
run: npm audit --omit=dev --audit-level=high
121+
105122
- name: Typecheck
106123
working-directory: apps/docs
107124
run: npm run check

CHANGELOG.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,49 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.2.1] - 2026-08-22
11+
12+
### Added
13+
14+
- Added compact and micro layouts that keep every screen navigable in small
15+
terminal windows, including responsive Now Playing visualizers and settings.
16+
- Added complete library backup and restore from Settings or the `:export` and
17+
`:import` commands, with validation and an automatic safety copy before an
18+
existing library is replaced.
19+
- Expanded the receiver collection to 60 styles, including Sumi Ocean, Liftoff,
20+
Planetarium, Skyline, Golden Gate, Alpine, and other scenic displays.
21+
22+
### Changed
23+
24+
- Anchored the gapless square-cell listening activity grid to January, made
25+
Ultracode the default receiver, and grouped the 60 retained styles by visual
26+
family. Retired TV Static, Sunspot, Plasma, Metaballs, and Moonlit Tide with
27+
safe preference migration; rebuilt Fire and Stormfront; and replaced Sumi
28+
Mountains with the layered blue Sumi Ocean.
29+
- Reorganized Settings into labeled, paginated sections and tightened the full
30+
layout so the Now Playing receiver and footer use the available space more
31+
consistently.
32+
- Reworked mpv communication around one reusable IPC connection, keeping rapid
33+
volume changes responsive while preserving the last confirmed player state
34+
when a command fails.
35+
36+
### Fixed
37+
38+
- Restored mouse and trackpad wheel navigation for overflowing menus and lists
39+
while keeping mouse reporting screen-aware so native terminal scrollback stays
40+
available elsewhere. Added a Settings opt-out and legacy X10 mouse fallback.
41+
- Protected library and cache writes from concurrent RadioCLI processes, and
42+
recovered unfinished listening sessions from their last saved heartbeat.
43+
- Made Radio Browser searches and cached station lists more resilient to slow,
44+
stale, or partially unavailable directory mirrors.
45+
- Added a second-press confirmation for `q` and `Ctrl+C` so an accidental key
46+
press does not stop playback and exit.
47+
48+
### Security
49+
50+
- Sanitized terminal control and bidirectional text sequences from external
51+
station data, and tightened permissions on locally stored library files.
52+
1053
## [0.2.0] - 2026-07-08
1154

1255
### Added
@@ -221,6 +264,7 @@ Initial public release.
221264
[0.1.8]: https://github.com/Ciphore/RadioCLI/releases/tag/v0.1.8
222265
[0.1.9]: https://github.com/Ciphore/RadioCLI/releases/tag/v0.1.9
223266
[0.2.0]: https://github.com/Ciphore/RadioCLI/releases/tag/v0.2.0
267+
[0.2.1]: https://github.com/Ciphore/RadioCLI/releases/tag/v0.2.1
224268
[0.1.4]: https://github.com/Ciphore/RadioCLI/releases/tag/v0.1.4
225269
[0.1.3]: https://github.com/Ciphore/RadioCLI/releases/tag/v0.1.3
226270
[0.1.2]: https://github.com/Ciphore/RadioCLI/releases/tag/v0.1.2

0 commit comments

Comments
 (0)