Commit Graph

1102 Commits

Author SHA1 Message Date
Thomas Frans
8d00ca74fc fix: MPRIS loop tokio::select!() panic on exit
This fixes a bug that would cause a panic when quiting the process
normally. `tokio::select!()` was used to await a single branch, which is
useless as it can be replaced by a normal await.
2023-10-14 12:42:24 +02:00
Thomas Frans
51d1b34ccc fix: prevent IPC socket cleanup panic
Prevent a panic when the IPC socket isn't available when the user quits
`ncspot`.
2023-10-14 12:15:38 +02:00
Thomas Frans
a69e2d763b fix: disable cursive_buffered_backend tracing
Disable the useless trace logs from the `cursive_buffered_backend`
crate.
2023-10-12 11:14:51 +02:00
Thomas Frans
a067ab2ae2 feat: move to async POSIX signal handler
Instead of trying to handle signals for every step of the `cursive`
event loop, move the signal handling into its own asynchronous task and
send callbacks to `cursive` when a signal arrives.
2023-10-08 10:47:43 +02:00
Thomas Frans
209d8e260b refactor: remove lazy_static crate
The `lazy_static` crate was superseded by the `once_cell` crate which
has been included in Rust's standard library since version `1.70`.
Remove the `lazy_static` dependency and refactor all use cases to use
`std::sync::OnceLock` instead.

Co-authored-by: Henrik Friedrichsen <henrik@affekt.org>
2023-10-07 17:33:48 +02:00
Thomas Frans
2f365c1551 chore: remove placeholder code
Remove the placeholder entries from the command aliases.
2023-10-07 17:27:00 +02:00
Thomas Frans
b27b067a47 fix: prevent MPRIS D-Bus duplicate name
Append `instance<pid>` to the MPRIS bus name to prevent two instances
from fighting over the same bus name.
2023-10-03 17:29:37 +02:00
Henrik Friedrichsen
edee66aeed Update dependencies 2023-10-01 12:34:14 +02:00
Henrik Friedrichsen
57538e2650 Switch to Crossterm backend by default
- Is capable of 256 colors
- Can handle Shift+Up/Shift+Down/etc. (#1283)
2023-09-29 22:05:12 +02:00
Thomas Frans
fe8f8e78ee style(clippy): enforce clippy use_self lint
Clippy's `use_self` line ensures that `Self` is used instead of the real
name whenever possible. This makes searching easier and cleans up the
code a bit.
2023-09-27 22:06:54 +02:00
Arthur McLain
01e01b59e4 docs: update users.md (#1274)
* Update users.md

* Reformat table

---------

Co-authored-by: Henrik Friedrichsen <henrik@affekt.org>
2023-09-10 22:41:37 +02:00
Henrik Friedrichsen
fcf8223e00 Update dependencies
Adapt to rspotify 0.12 breaking changes
2023-09-10 20:32:07 +02:00
Henrik Friedrichsen
c0c7ea8828 Make worker command delivery more resilient
This may discard commands during reauthentication, but at least it doesn't crash
the application.

May help with #993 and #1257
2023-08-29 21:47:07 +02:00
Henrik Friedrichsen
b4a397c84d Use Rc for UserData as it's !Sync 2023-08-26 15:06:23 +02:00
Henrik Friedrichsen
055a82cb77 Update dependencies 2023-08-26 14:37:46 +02:00
cyqsimon
4942647e1c Improve how we indicate that a command arg is optional 2023-08-21 21:26:17 +02:00
Henrik Friedrichsen
bd80670345 Use step output environment file
See also:
https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
2023-07-24 01:58:13 +02:00
Henrik Friedrichsen
7d9faa7b59 Document add current and save current 2023-07-24 01:32:49 +02:00
Henrik Friedrichsen
17413fbad4 Update GitHub actions for CD pipeline 2023-07-24 01:27:24 +02:00
Henrik Friedrichsen
8e31ff10a8 Bump version to 0.13.4
+ update dependencies
2023-07-23 23:51:38 +02:00
Henrik Friedrichsen
0c13afb46f Fix: fetch album only once
Should speed up display of the context menu

Fixes #1225
2023-07-23 14:49:21 +02:00
Henrik Friedrichsen
bef4742cec Remove duplicate album query 2023-07-23 14:49:21 +02:00
Flynn Duniho
924296ac52 Add add command for adding song to playlist (#1232)
* Add command for adding song to playlist

* edits for code style

* Return playlist dialog via `CommandResult::Modal`

---------

Co-authored-by: Henrik Friedrichsen <henrik@affekt.org>
2023-07-22 16:03:21 +02:00
Henrik Friedrichsen
92cd4f1c8b Handle local tracks in playlist
- Show error on deletion, as we currently do not have a Uri we can pass to the
  Spotify API to delete local files in playlists
- Mark local files in `ListView`

fixes #1213
2023-07-22 15:42:14 +02:00
Henrik Friedrichsen
90b4560a2d Gracefully handle tracks without IDs
As reported in #1231:

Local files in playlists have no IDs. When trying to delete them ncspot crashes
as it tries to extract a track ID.
2023-07-22 15:42:14 +02:00
bentheklutz
2786c6ba34 Sort Artists Ignoring "The" (#1238)
* Sorting QoL

Ignore leading "The" when sorting albums and artists by artist name
in the library.

* Simplify stripping of `The ` prefix in artist

---------

Co-authored-by: Henrik Friedrichsen <henrik@affekt.org>
2023-07-22 13:05:03 +02:00
Henrik Friedrichsen
66bb0746b6 Update to strum 0.25.0 2023-07-22 12:44:50 +02:00
cyqsimon
9709c73324 Recommend Ueberzug++ 2023-07-22 12:34:14 +02:00
Henrik Friedrichsen
83f9e8d224 Update dependencies 2023-07-22 12:31:26 +02:00
hrdl
f74661a15d feat: add save current command 2023-07-07 11:23:47 +02:00
Henrik Friedrichsen
2c61a965f1 Update dependencies 2023-07-02 15:00:17 +02:00
Thomas Frans
0c93cafccf refactor: remove unused screenchange variable
The `screenchange` member variable on `Layout` didn't seem to be used
for anything except for debugging. A comment in `on_layout` makes it
seem like it wasn't meant to be used for debugging purposes but for
actual functionality that wasn't implemented.
2023-06-18 17:04:43 +02:00
Thomas Frans
d644397180 fix: forward mouse events inside layout
After refactoring layout, the if statements were removed in favor of a
single match. This changed the control flow a bit, breaking mouse event
propagation.
2023-06-14 23:03:25 +02:00
Thomas Frans
03cfd4da5f chore: improve release build options 2023-06-13 20:41:37 +02:00
Henrik Friedrichsen
9b0cd76fc5 Bump version to 0.13.3 2023-06-11 22:41:29 +02:00
Henrik Friedrichsen
07c2245bd6 Update dependencies 2023-06-11 22:39:28 +02:00
Thomas Frans
21c26abaa3 docs: add cargo installation method
Since people were having problems when installing from crates.io, it
would be nice to document it to prevent further problems.
2023-06-07 21:06:55 +02:00
Thomas Frans
3587aa1441 docs: remove Snapcraft installation source
The Snapcraft package seems to have been removed. Therefore the links in
the documentation should also be removed.
2023-06-07 21:06:31 +02:00
Thomas Frans
6c990b5bda fix: config option command_key not working 2023-06-06 20:44:14 +02:00
Thomas Frans
ac0bcb4420 fix: prevent tab switching from command line 2023-06-04 22:21:10 +02:00
Thomas Frans
bbd7bcf4aa fix: command line multi-byte prefix panic
Don't index into the command line command as the prefix can be altered
by the user and therefore be a multi-byte unicode character.
2023-06-04 17:30:06 +02:00
Thomas Frans
96bb2ea06b fix: '/' character not working in search view 2023-06-02 23:20:24 +02:00
Thomas Frans
6d2a0552bf refactor: move layout functionality under layout 2023-06-02 23:20:24 +02:00
Thomas Frans
d0efc0868f chore: fix Application::new documentation 2023-06-02 23:20:24 +02:00
Thomas Frans
0c97bd36c3 fix: remove ipc import on non-unix systems 2023-06-02 23:20:24 +02:00
Thomas Frans
c36d3cf272 refactor: move and add functions 2023-06-02 23:20:24 +02:00
Thomas Frans
04cbe8ac20 refactor: move base path config + documentation 2023-06-02 23:20:24 +02:00
Thomas Frans
6be45ece90 chore: document items in the config module
Sometimes the use of an item wasn't clear without reading the code. This
should help with that.
2023-06-02 23:20:24 +02:00
Thomas Frans
3b8de6600f refactor: move panic hook into module 2023-06-02 23:20:24 +02:00
Thomas Frans
abffb3c2a9 refactor: move cli argument parsing to main
Command line arguments are part of the OS process and should be under
main.
2023-06-02 23:20:24 +02:00