Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
41ea41b
docs: add winget as the easy Windows install method (#249)
sewandev Jun 21, 2026
d51153e
ci: separate lint job and integrate swatinem/rust-cache (#250)
sewandev Jun 25, 2026
a563fce
build(deps): bump actions/cache from 4 to 6 (#251)
dependabot[bot] Aug 3, 2026
1eaa553
build(deps): bump actions/upload-artifact from 4 to 7 (#252)
dependabot[bot] Aug 3, 2026
ee4de59
build(deps): bump actions/download-artifact from 4 to 8 (#253)
dependabot[bot] Aug 3, 2026
5038ef6
build(deps): bump actions/checkout from 6 to 7 (#254)
dependabot[bot] Aug 3, 2026
0a386c0
build(deps): bump bytes from 1.11.1 to 1.12.0 (#255)
dependabot[bot] Aug 3, 2026
9a4d5ad
build(deps): bump ratatui from 0.30.1 to 0.30.2 (#257)
dependabot[bot] Aug 3, 2026
e568709
build(deps): bump zip from 2.4.2 to 8.6.0 (#258)
dependabot[bot] Aug 3, 2026
8ef9418
build(deps): bump github/codeql-action from 4 to 4.37.3 (#265)
dependabot[bot] Aug 3, 2026
b63c6b9
Ensure required CI check reports lint failures (#266)
jsgrrchg Aug 9, 2026
e0c7878
Serialize Spotify remote skip commands (#267)
jsgrrchg Aug 9, 2026
1265029
Use a monotonic clock for stream stall detection (#268)
jsgrrchg Aug 9, 2026
ab0f320
build(deps): bump rand from 0.9.4 to 0.10.1 (#259)
dependabot[bot] Aug 10, 2026
2be1a96
build(deps): bump clap from 4.6.1 to 4.6.6 (#270)
dependabot[bot] Sep 3, 2026
659311c
build(deps): bump rand from 0.10.1 to 0.10.2 (#271)
dependabot[bot] Sep 3, 2026
b50db58
build(deps): bump thiserror from 2.0.18 to 2.0.20 (#272)
dependabot[bot] Sep 3, 2026
2f81923
build(deps): bump github/codeql-action from 4.37.3 to 4.37.9 (#274)
dependabot[bot] Sep 3, 2026
ceaaaa6
chore: release v1.5.8 (#275)
sewandev Sep 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 36 additions & 22 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,31 @@ on:
branches: [develop]

jobs:
check:
name: Check & lint (${{ matrix.os }})
lint:
name: Lint & Format (Linux)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7

- name: Install Linux dependencies
run: |
sudo apt-get update
sudo apt-get install -y pkg-config libasound2-dev

- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
with:
components: clippy, rustfmt

- name: cargo fmt
run: cargo fmt --check

- name: cargo clippy
run: cargo clippy --all-features -- -D warnings

test:
name: Test (${{ matrix.os }})
needs: lint
runs-on: ${{ matrix.os }}

strategy:
Expand All @@ -17,7 +40,7 @@ jobs:
os: [windows-latest, macos-latest, ubuntu-latest]

steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7

- name: Install Linux dependencies
if: runner.os == 'Linux'
Expand All @@ -27,34 +50,25 @@ jobs:

- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
with:
components: clippy, rustfmt

- name: cargo fmt
run: cargo fmt --check

- name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ${{ runner.os }}-cargo-
- name: Rust Cache
uses: swatinem/rust-cache@v2

- name: cargo check
run: cargo check --all-features

- name: cargo test
run: cargo test --all-features

- name: cargo clippy
run: cargo clippy --all-features -- -D warnings

required_check:
name: Check & lint
needs: check
needs: [lint, test]
if: ${{ always() }}
runs-on: ubuntu-latest
steps:
- run: echo "All checks passed!"
- name: Verify required jobs
run: |
if [ "${{ needs.lint.result }}" != "success" ] || \
[ "${{ needs.test.result }}" != "success" ]; then
exit 1
fi
6 changes: 3 additions & 3 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,22 +19,22 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7

- name: Install Linux dependencies
run: |
sudo apt-get update
sudo apt-get install -y pkg-config libasound2-dev

- name: Initialize CodeQL
uses: github/codeql-action/init@v4
uses: github/codeql-action/init@v4.37.9
with:
languages: rust

- name: Build
run: cargo build --all-features

- name: Perform CodeQL analysis
uses: github/codeql-action/analyze@v4
uses: github/codeql-action/analyze@v4.37.9
with:
category: "/language:rust"
2 changes: 1 addition & 1 deletion .github/workflows/labels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
sync:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
- uses: EndBug/label-sync@v2
with:
config-file: .github/labels.yml
Expand Down
20 changes: 10 additions & 10 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@ jobs:
runs-on: windows-latest

steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7

- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
with:
targets: x86_64-pc-windows-msvc

- name: Cache cargo registry
uses: actions/cache@v4
uses: actions/cache@v6
with:
path: |
~/.cargo/registry
Expand All @@ -42,7 +42,7 @@ jobs:
Copy-Item "target\x86_64-pc-windows-msvc\release\reverbic.exe" "dist\reverbic-$version-x86_64-windows.exe"

- name: Upload Windows artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: release-windows
path: dist/*
Expand All @@ -61,15 +61,15 @@ jobs:
asset_arch: aarch64

steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7

- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}

- name: Cache cargo registry
uses: actions/cache@v4
uses: actions/cache@v6
with:
path: |
~/.cargo/registry
Expand All @@ -94,7 +94,7 @@ jobs:
tar -C "$staging" -czf "dist/$archive" reverbic

- name: Upload macOS artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: release-macos-${{ matrix.target }}
path: dist/*.tar.gz
Expand All @@ -106,7 +106,7 @@ jobs:
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7

- name: Install Linux dependencies
run: |
Expand All @@ -119,7 +119,7 @@ jobs:
targets: x86_64-unknown-linux-gnu

- name: Cache cargo registry
uses: actions/cache@v4
uses: actions/cache@v6
with:
path: |
~/.cargo/registry
Expand All @@ -144,7 +144,7 @@ jobs:
tar -C "$staging" -czf "dist/$archive" reverbic

- name: Upload Linux artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: release-linux-x86_64
path: dist/*.tar.gz
Expand All @@ -160,7 +160,7 @@ jobs:

steps:
- name: Download release artifacts
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
path: dist
merge-multiple: true
Expand Down
21 changes: 20 additions & 1 deletion CHANGELOG.es.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,20 @@ Versionado: [Semantic Versioning](https://semver.org/)

## [Sin publicar]

## [1.5.8] - 2026-09-07

### Added
- Soporte oficial de instalación mediante Winget: Reverbic ahora se puede instalar en Windows con `winget install Sewandev.Reverbic` como método recomendado junto al script de PowerShell.

### Fixed
- Los comandos de pista siguiente/anterior en el modo remoto de Spotify ahora se serializan a través de una cola FIFO, permitiendo una sola solicitud en curso a la vez. Esto evita condiciones de carrera y ejecuciones fuera de orden al saltar pistas rápidamente, descarta respuestas obsoletas de dispositivos anteriores y mantiene sincronizado el estado de reproducción remoto.
- La detección de descargas estancadas en streams ahora utiliza un reloj monotónico (`ProgressClock` con `std::time::Instant`) en lugar de marcas de tiempo del reloj del sistema. Esto evita falsas alertas de estancamiento o demoras en la reconexión provocadas por correcciones de NTP, cambios manuales de hora o ajustes de zona horaria.
- El flujo de CI ahora propaga de forma fiable los fallos de lint y formato al check de estado obligatorio, garantizando que las comprobaciones de PR fallen cuando el análisis de código o formato detecta problemas.

### Changed
- Flujo de CI optimizado: se separaron las revisiones de formato y clippy en un trabajo inicial de fallo rápido y se integró `swatinem/rust-cache` para acelerar notablemente las ejecuciones de compilación y pruebas.
- Actualización general de dependencias: Ratatui 0.30.2, Zip 8.6.0, Bytes 1.12.0, Clap 4.6.6, Rand 0.10.2, Thiserror 2.0.20, y actualización de acciones en los workflows de GitHub.

## [1.5.7] - 2026-06-21

### Added
Expand Down Expand Up @@ -332,7 +346,12 @@ Versionado: [Semantic Versioning](https://semver.org/)
- Templates de issues (bug, feature, pregunta)
- Logo y assets embebidos en el ejecutable (sin dependencias externas)

[Sin publicar]: https://github.com/sewandev/Reverbic/compare/v1.5.3...HEAD
[Sin publicar]: https://github.com/sewandev/Reverbic/compare/v1.5.8...HEAD
[1.5.8]: https://github.com/sewandev/Reverbic/compare/v1.5.7...v1.5.8
[1.5.7]: https://github.com/sewandev/Reverbic/compare/v1.5.6...v1.5.7
[1.5.6]: https://github.com/sewandev/Reverbic/compare/v1.5.5...v1.5.6
[1.5.5]: https://github.com/sewandev/Reverbic/compare/v1.5.4...v1.5.5
[1.5.4]: https://github.com/sewandev/Reverbic/compare/v1.5.3...v1.5.4
[1.5.3]: https://github.com/sewandev/Reverbic/compare/v1.5.2...v1.5.3
[1.5.2]: https://github.com/sewandev/Reverbic/compare/v1.5.1...v1.5.2
[1.5.1]: https://github.com/sewandev/Reverbic/compare/v1.5.0...v1.5.1
Expand Down
21 changes: 20 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,20 @@ Versioning: [Semantic Versioning](https://semver.org/)

## [Unreleased]

## [1.5.8] - 2026-09-07

### Added
- Official Winget installation support: Reverbic can now be installed on Windows with `winget install Sewandev.Reverbic` as the recommended package manager method alongside the PowerShell script.

### Fixed
- Spotify remote next/previous commands are now serialized through a FIFO queue, allowing only one skip request in flight at a time. This eliminates race conditions and out-of-order execution when rapidly skipping tracks, ignores stale responses from previously active devices, and keeps remote playback state accurately in sync.
- Stream download stall detection now uses a monotonic clock (`ProgressClock` backed by `std::time::Instant`) instead of wall-clock Unix timestamps. This prevents false underruns or delayed stream reconnects caused by NTP adjustments, manual clock updates, or timezone changes.
- CI workflows now reliably propagate lint and formatting failures to the required status check, ensuring PR checks fail whenever upstream linting fails.

### Changed
- Streamlined CI workflow: separated format and clippy checks into an initial fast-fail lint job and integrated `swatinem/rust-cache` to significantly accelerate build and test pipelines.
- Dependency updates across the board: Ratatui 0.30.2, Zip 8.6.0, Bytes 1.12.0, Clap 4.6.6, Rand 0.10.2, Thiserror 2.0.20, and updated GitHub Actions steps.

## [1.5.7] - 2026-06-21

### Added
Expand Down Expand Up @@ -332,7 +346,12 @@ Versioning: [Semantic Versioning](https://semver.org/)
- Issue templates (bug, feature, question)
- Logo and assets embedded in the executable (no external dependencies)

[Unreleased]: https://github.com/sewandev/Reverbic/compare/v1.5.3...HEAD
[Unreleased]: https://github.com/sewandev/Reverbic/compare/v1.5.8...HEAD
[1.5.8]: https://github.com/sewandev/Reverbic/compare/v1.5.7...v1.5.8
[1.5.7]: https://github.com/sewandev/Reverbic/compare/v1.5.6...v1.5.7
[1.5.6]: https://github.com/sewandev/Reverbic/compare/v1.5.5...v1.5.6
[1.5.5]: https://github.com/sewandev/Reverbic/compare/v1.5.4...v1.5.5
[1.5.4]: https://github.com/sewandev/Reverbic/compare/v1.5.3...v1.5.4
[1.5.3]: https://github.com/sewandev/Reverbic/compare/v1.5.2...v1.5.3
[1.5.2]: https://github.com/sewandev/Reverbic/compare/v1.5.1...v1.5.2
[1.5.1]: https://github.com/sewandev/Reverbic/compare/v1.5.0...v1.5.1
Expand Down
Loading