Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pull] main from pSpitzner:main #1

Open
wants to merge 28 commits into
base: main
Choose a base branch
from
Open

[pull] main from pSpitzner:main #1

wants to merge 28 commits into from

Conversation

pull[bot]
Copy link

@pull pull bot commented Oct 4, 2024

See Commits and Changes for more details.


Created by pull[bot]

Can you help keep this open source service alive? 💖 Please sponsor : )

* started playing around with interactive import sessions

* more explorations

* moved frontend message logic out of useSocket

* updated some comments

* emitting from worker to frontend works, also sending candidate selection
added a bunch of typing for beets AlbumInfo, TrackInfo and managed (poorly) to serialize them.

* reconnecting to existing session will likely require async. for now starting new session.
added types to frontend. candidates and prompts communication works, with some rough edges.

* parallel gui selections!

* status reporting and session reconnecting

* reconnect and folders for selection

* added simple match preview and source icons

* added hook for text diffs and dependencies

* started styling of candidates

* added penalty icons

* a bunch of progress around html-based candidate preview.

* diff typing and some icon tweaks

* reordered penalty icons

* progress on trackChangs view

* removed single-track icons. and more blur on hover was needed

* added trackchanges heading.

* adaptive heading for track changes

* with the track change design, being more verbose in album and artist is consistent.

* missing tracks and unmatched tracks added to preview.

* fixed 1-base indexing for tracks.

* started cleaning backend for interactive import session. currently non-functional.

* Renamed import to importer because it is a reserved keyword. Also moved
the websocket routes into their own folder (Terminal and Importer).

Added a text input to define the path of the import, for debugging.

No output in frontend thus far, but connection and init seems to work.

* Socket export seem to work after using namespaces correctly.
Frontend still broken

* Back-end is working now and communication of states is working!
Front-end needs fixing according to new types tho. Also status updates
are not reimplemented yet.

* readded terminal.py file (guess got lost during rename)

* context menu: escape paths when copying

* fixed frontend and improved (?) music-info typings

* moved details of candidate preview to their own file.

* fixed most of the types, i hope. now candidate-selection persists across reloads.

* fixed default choice reporting to backend.

* apply button now works, but we need to think about how to abort and unmounting after we are done.

* Streamlined the import candidate details:

Moved the files for candidate formatting into its own folder
and removed some unnecessary css declarations.

Enhanced the grid layout of the trackChanges class
for proper number alignment.

Adjusted font sizes for trackChanges to overall fit more content.

Added a temporary component to view the current candidate changes.

* optimized track changes for mobile and limited hover width

* fixed config parsing problem.

* added questions / issues with beets we could inquire with someone who knows beets better

* separated inbox and basic disk logic.

* started rework of album-folder logic - with tests ;)

* new album folder logic looking good. `is_album_folder` is slower but now checks
multidisc consistent with beets. `all_album_folders` (used by inbox!) is some 20% faster
but still ~75 sec to scan ~250gb of muisc folders via lan from spinning discs.
we still need to handle this better - large inboxes are still not doable.

* updated dict structure generator for multi-disc albums, and to use os.walk.
some 10% faster than glob. also sessions should now work on multi-disk albums.

* updated changelog

* working duplicate detection on candidate level. beets config needs to have `import/duplicates = ask`
showing duplicates works, todo: handle them and tidy up.

* dealing with duplicates, also limited number of candidates to show to 5...
I attached the duplicate action to the selection state (instead of candidate).
Also was lazy and re-used the existing socket-event (candidatechoice).
we should probably tidy this up a bit more. but it seems to work.

* converted candidate state identifier from index to uuid. also new convention:
for dataclasses, define all attributes with default values (that should not be set)
in the __post__ init, so it remains easy to see whats needed for the constructor,
since we do not code an __init__ function.

* added duct-tapy way to create an asis candidate in the backend.

* handling asis option and disabled apply button when no duplicate action selected
(todo: check that default duplicate action from config works)

* simplified asis logic - need no attribute, just reuse/abuse the id. also added badge,
and reordered the display. badge needs better styling: fix height and width
and maybe create some character padding / centering.

* added candidate search by id. not neat but works. we need to go async.

* Modal for adding candidates, and implemented search by artist + album.
Not quite there yet but feels like a good point to do another high-level planning session before finalizing

* updated questions, removed old file

* moved blocking loop from state to session, added feedback for frontend mutation

* Wait for search on backend.

* Refactored candidate search slightly.

* A bit of cleanup: removed socket terminal hook in favor for generic
socket hook.

* Added a small component to select a folder from the inboxes as I was a bit
annoyed by typing the path again and again...

I had to update mui for this as I wanted to use autocomplete. Hope this
produces no issues.

* Choose candidate after new candidates and some minor fixes

* Communicator only emit to other clients.

* moved playground to import. syncing url-path with folder selection box

* bugfix my refactor and added context menu item for interactive import

* Moved hooks into their own folder, also added a hook to sync state with
searchparams.

* Mainly import cleanup:
- Added abort session ws endpoint
- added more details to status messages, fully typed now
- added abort button in frontend depending on current state
- fixed issues with initial state set by clients, this produces a deadlock
 if multiple clients are connected and all want to reset the candidate

* Import page styling overhaul, not perfect but I like it way more.

WIP: Apply button still needs some work i.e. it is broken atm and does
not work, also styling of the apply btn is not too nice.

* added charwdith argument to similarity badge to allow consistent horizontal alignement with 'asis'

* fixed context menu link and improved apply button

* renamed importstatusmessage to importstatus

* renamed selector and selection

* (A bit more) graceful handling of session ends. Added abort state to status
but then realized we likely dont need it yet.
Layout should be more streamlined for the (common) case that we only import one selection.
I'd group all buttons at the end (check length of the selectionstates
to either place apply+abort outside, or inline with duplicate and search)

* added meta data source icon for asis candidate

* BottomBar for import. Needs work, but need to look at whole body behaviour together.
(currently scroll only takes place on inner container, which looks weird.
i think we need a helper css to get limited-width for wide windows to avoid the nested containers!)

* improvements to line wrapping on import

* Moved to terminal route

* @sm the terminal import context menu actions are broken, since the terminalcontext
is not global anymore. any ideas for workarounds?

* added our own ContainerWidth class.
Library-Search still needs work.
And Search and Library List views seem a bit broken for me currently - no items showing.
(sporadically)
Maybe since MUI upgrade?

* Blur is now restricted to navbar only

* Fixed double click problem with routing from navbar. Was an issue in the
useQueryParamsState hook.
Updated tanstack to latest version.

* Added more and more passive aggressive feedback depending on the current
candidate.

* Added a indicator for asis.

* Very subtle hover effect for the mouse in the navbar.

* Added autoimport icon, this required me to add a vite svg handler, which
auto parses svgs as react components.

* Removed dependency on flask_rq2, should work now without it only using
rq. Needs some more testing tho.

* Intersection observer working

* Fixed styling

* Readded border styling

* Auto bottom align on small mobile devices

* fixed import button bar alignment and import session navigation (url)

* updated changelog, version bump

* pnpm fix, and context menu terminal actions restored

---------

Co-authored-by: Sebastian Mohr <sebastian@mohrenclan.de>
@pull pull bot added the ⤵️ pull label Oct 4, 2024
pSpitzner and others added 27 commits October 7, 2024 17:32
- fixes connection issues in production mode
- disables vite minifying
See changelog v0.1.0

---------

Co-authored-by: Sebastian Mohr <sebastian@mohrenclan.de>
had an update and somehow our params parsing does not work anymore
for the library viewer. Needs some more work.
have no online metadata, but manually cleaned data in tags
There are some errors but should be relatively easy to fix!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants