First Release of Meelo! Yoohoo
What's Changed
Web App
- Fron: Initialize project by @Arthi-chaud in #144
- Front: Release Page by @Arthi-chaud in #155
- Front: Setup Error Handling and fallbacks by @Arthi-chaud in #189
- Front: Album Page by @Arthi-chaud in #190
- Front: Layout adjustments by @Arthi-chaud in #203
- Front: Refactor Player UI by @Arthi-chaud in #217
- Front: Appbar icon is a link to root by @Arthi-chaud in #222
- Front/fix player layout by @Arthi-chaud in #223
- Front: Fix Library Selection by @Arthi-chaud in #226
- Front: Search page by @Arthi-chaud in #227
- Front: audio player enhancement by @Arthi-chaud in #233
- Layout and file management optimization by @Arthi-chaud in #246
- Front: Expandable player by @Arthi-chaud in #256
- Front: Fix expandable player in small views by @Arthi-chaud in #258
- Prisma: Class generation by @Arthi-chaud in #260
- Front: artist page by @Arthi-chaud in #261
- Front: Contextual menus by @Arthi-chaud in #274
- Front: Fix Layout issues with ListItems + Fix audio stream on Safari by @Arthi-chaud in #275
- Album controller: type filter by @Arthi-chaud in #281
- Front: album type filtering by @Arthi-chaud in #283
- Controllers remove array includes by @Arthi-chaud in #287
- Fix border radius by @Arthi-chaud in #294
- Front: Player v2 by @Arthi-chaud in #298
- Front: Fix Illustration Loading on SSR by @Arthi-chaud in #300
- Front: Genre page by @Arthi-chaud in #305
- Front: flexible search by @Arthi-chaud in #308
- Front: playlist system rework by @Arthi-chaud in #311
- Front: Release Page: Fix infinite 'useEffect' by @Arthi-chaud in #313
- Front: Refactorization of SSR Prefetch by @Arthi-chaud in #318
- Front: settings panel by @Arthi-chaud in #322
- Front: Track info Modal by @Arthi-chaud in #326
- Front: Libraries management by @Arthi-chaud in #329
- Front: Player notification by @Arthi-chaud in #333
- Download Release by @Arthi-chaud in #334
- Front: Release page related content sections by @Arthi-chaud in #335
- Front: better video selection release page by @Arthi-chaud in #337
- Better album videos select by @Arthi-chaud in #339
- Front: Controllers for Infinite Views by @Arthi-chaud in #340
- Front: infinite resource view props by @Arthi-chaud in #344
- Front/image optimisation by @Arthi-chaud in #345
- Front: Request Notification permission only if not already granted by @Arthi-chaud in #349
- Front: Fix compatibility issues by @Arthi-chaud in #351
- Front: illustration optimize dimensions by @Arthi-chaud in #353
- Front: Remove White frame on image loading for safari by @Arthi-chaud in #360
- Front: Loading transitions by @Arthi-chaud in #361
- Front: Expanded Player: Fix layout fix on safari when dimensions change by @Arthi-chaud in #365
- Revert "Front: Expanded Player: Fix layout fix on safari when dimensions change" by @Arthi-chaud in #368
- Front: Tile Scrollable Row by @Arthi-chaud in #371
- Front: List Item: Move Trailing component over button by @Arthi-chaud in #374
- Front: 'List Item' component rewrite by @Arthi-chaud in #376
- Dependencies Bump by @Arthi-chaud in #382
- Front: Artist Page: Use Custom 'ListItem' components for Song list by @Arthi-chaud in #394
- Front: Library Settings: Add button to refresh metadata by @Arthi-chaud in #396
- Front: Playlist Control by @Arthi-chaud in #395
- Front release page layout improvement by @Arthi-chaud in #400
- Front: Rework Expanded Player Layout by @Arthi-chaud in #401
- Front: Avoid Scroll-gutter to shift content position by @Arthi-chaud in #406
- Dependencies bump by @Arthi-chaud in #399
- Front: Song page by @Arthi-chaud in #408
- Front: Video Full Screen Button by @Arthi-chaud in #414
- Front: Fix Fullscreen request for Safari by @Arthi-chaud in #415
- Front: Rewrite API wrapping by @Arthi-chaud in #419
- Front: format items' subtitle by @Arthi-chaud in #421
- Videos section by @Arthi-chaud in #420
- Front: Search Page: Fix bad typing of parameters by @Arthi-chaud in #422
- Front: Artist Page: Fix Conditional Render of 'More' Button for album list by @Arthi-chaud in #424
- Front: Artist's Videos Page by @Arthi-chaud in #426
- Front: Artist's Videos query: Fix pagination by @Arthi-chaud in #427
- Front: Model validations by @Arthi-chaud in #430
- Front: Apply Light Color scheme by @Arthi-chaud in #431
- Front: fix track model validation by @Arthi-chaud in #440
Server
- Get album genres by @Arthi-chaud in #154
- Rename model name by @Arthi-chaud in #156
- Illustration: create its own controller by @Arthi-chaud in #157
- Prisma wrapper by @Arthi-chaud in #211
- Prisma: Make names case insensitive by @Arthi-chaud in #213
- Prisma: Rename Tables and enum by @Arthi-chaud in #214
- ParseId Pipe: Use Regex to check if input is strictly a number by @Arthi-chaud in #220
- Remove API Route duplicates by @Arthi-chaud in #221
- Find the versions of a song by @Arthi-chaud in #224
- Library: Refresh a file metadata when md5checksum changed by @Arthi-chaud in #232
- File Service: Stream: Attachment name is a slug by @Arthi-chaud in #237
- Automatically set items as master according to their release data by @Arthi-chaud in #243
- Task module by @Arthi-chaud in #253
- Refactor Sorting Management by @Arthi-chaud in #270
- Sort null at end by @Arthi-chaud in #271
- Better album type recognition by @Arthi-chaud in #285
- Authentication system and role management by @Arthi-chaud in #307
- Slugs: Handle Hyphen-like characters by @Arthi-chaud in #350
- File Service: Sanitize File Name by @Arthi-chaud in #352
- OpenAPI Route Parameter Documentation by @Arthi-chaud in #364
- Server: Bump Prisma Types Generator + Supertest by @Arthi-chaud in #369
- Metadata Service: Fix Merge of Genre's Metadata from tags and path by @Arthi-chaud in #372
- Resync Metadata Task: Optimization by @Arthi-chaud in #373
- Metadata Parsing: Fix Album Date update condition by @Arthi-chaud in #375
- Custom Logger by @Arthi-chaud in #379
- Customizable Assets Directory by @Arthi-chaud in #378
- Setting Service: Fix injection by @Arthi-chaud in #384
- Controller interceptors by @Arthi-chaud in #385
- Rewrite of the Candidate Files fetching by @Arthi-chaud in #386
- Rework Master System by @Arthi-chaud in #387
- Illustration Repository services by @Arthi-chaud in #390
- Housekeeping Task by @Arthi-chaud in #392
- Album Genres: Fetch more efficient by @Arthi-chaud in #393
- Track Service: Get Master Track: Avoid video when possible by @Arthi-chaud in #398
- Metadata Service: Handle 'Main Version' Track Prefix by @Arthi-chaud in #409
- File Registration: Avoid Scanning Cover Files by @Arthi-chaud in #416
- Settings validation: Use 'class-validator' by @Arthi-chaud in #418
- Models: Add registration dates by @Arthi-chaud in #423
- Better search by @Arthi-chaud in #432
- Illustration link optimization by @Arthi-chaud in #436
Exciting New Features π
- Basic Project Functionalities by @Arthi-chaud in #41
- Library controller: Access Library by Id & Slug by @Arthi-chaud in #73
- Sorting parameters by @Arthi-chaud in #87
- Tracklisting by @Arthi-chaud in #89
- Stream source files by @Arthi-chaud in #90
- Genre: Model, Service, Controller & relations by @Arthi-chaud in #101
- Track: Remove Track's Video Prefix on metadata parsing by @Arthi-chaud in #102
- Artist Controller: Check artist exists on song fetch by @Arthi-chaud in #106
- Get Videos by song, album & artist by @Arthi-chaud in #107
- Search Module by @Arthi-chaud in #121
- Increment song play count by @Arthi-chaud in #134
- Lyrics Management by @Arthi-chaud in #138
- Lyrics CRUD Routes by @Arthi-chaud in #140
- Apply metadata by @Arthi-chaud in #145
Improvement, Optmizations & Enhancements π
- Library: On deletion, delete related tracks & files + controller deletion route by @Arthi-chaud in #104
- Album WhereInput: Fix 'byArtist' field by @Arthi-chaud in #105
- Get only Album Artists by @Arthi-chaud in #118
- Base Repository Service by @Arthi-chaud in #119
- Illustration Extraction: Better logs by @Arthi-chaud in #127
- Add a 'exists' and 'throwIfNotExist' method in repository services by @Arthi-chaud in #141
- Music Video Screenshot: Using ffmpeg 'thumbnail' instead by @Arthi-chaud in #147
- Illustration link optimization by @Arthi-chaud in #204
- Various fixes by @Arthi-chaud in #272
- Extended album types by @Arthi-chaud in #288
- Extended album types by @Arthi-chaud in #289
- Extended album types by @Arthi-chaud in #290
- Appbar actions by @Arthi-chaud in #297
- CI: Single Build workflow by @Arthi-chaud in #314
- Illustration Extraction: Use separate cover file by @Arthi-chaud in #319
- Fix illustration file glob by @Arthi-chaud in #320
Fixes & Patches π©Ή
- Sonar Cloud Workflow: Fix hierarchy of flows by @Arthi-chaud in #120
- Metadata Service: Fix Bad injection of Release Service by @Arthi-chaud in #153
- Task Service: Fix broken condition on matching file path by @Arthi-chaud in #428
Security π‘
- Configure Dependabot by @Arthi-chaud in #122
- Dependencies: jpeg-js: use latest version by @Arthi-chaud in #125
- Bump actions/checkout from 2 to 3 by @dependabot in #124
- Bump fountainhead/action-wait-for-check from 1.0.0 to 1.1.0 by @dependabot in #303
Documentation π
- Swagger: Init by @Arthi-chaud in #85
- Swagger documentation: Basic by @Arthi-chaud in #99
- Readme: Introduction + features by @Arthi-chaud in #142
- Compodoc Generation and GitHub Pages deployment by @Arthi-chaud in #302
- User documentation: Add section for Album Type recognition by @Arthi-chaud in #356
- Swagger: Custom css by @Arthi-chaud in #370
- Generate Changelog & Add Publish action by @Arthi-chaud in #441
Codebase-related π
- Query Parameters for relation includes by @Arthi-chaud in #43
- Controllers: Re-definitions of routes by @Arthi-chaud in #65
- Tests: common dummy data by @Arthi-chaud in #110
- Linter Configuration and Monorepo mangement by @Arthi-chaud in #315
Other Changes π
- Continuous Integration: Unit Testing GitHub Action by @Arthi-chaud in #37
- CI: Built Testing GitHub Action by @Arthi-chaud in #38
- Metadata Parsing: Manage priority by @Arthi-chaud in #42
- Metadata Parsing: Unset Album's Artist if it is a compilation by @Arthi-chaud in #44
- Album controller: Manage query parameter for relation include by @Arthi-chaud in #45
- Services: Fix some Deletion methods by @Arthi-chaud in #46
- Controllers: Add Relation Include management by @Arthi-chaud in #47
- Pagination Parameters: Create related exceptions by @Arthi-chaud in #48
- File Table Constraints: Make path & libraryId unique by @Arthi-chaud in #49
- Release Module: Add Controller by @Arthi-chaud in #50
- Song Module: add controller by @Arthi-chaud in #51
- CI: Setup Static Analyzer by @Arthi-chaud in #67
- Static analyzer: Better Configuration file by @Arthi-chaud in #68
- Controller: Parse Id: Create custom Pipe by @Arthi-chaud in #70
- Metadata Service: Fix File Type identification for videos by @Arthi-chaud in #71
- Services: Fix code smells by @Arthi-chaud in #72
- Artist controller: Access by slug or id by @Arthi-chaud in #75
- Album controller: Get by id or slugs by @Arthi-chaud in #76
- Song Controller: Get Song from id or slug by @Arthi-chaud in #77
- Release Controller: Get Release from Slug or id by @Arthi-chaud in #78
- Manual Cascade Deletion by @Arthi-chaud in #83
- Controller: Paginated response by @Arthi-chaud in #86
- Sonar Cloud: Create its own workflow by @Arthi-chaud in #114
- Sonar Cloud Workflow: Use another action to DL coverage by @Arthi-chaud in #115
- Sonar cloud workflow by @Arthi-chaud in #116
- Dependabot: Remove yarn by @Arthi-chaud in #123
- Workflows: Trigger on PR, for dependabot by @Arthi-chaud in #126
- Track reassignment by @Arthi-chaud in #128
- Album: Reassign to artist by @Arthi-chaud in #129
- Release: Reassign to album by @Arthi-chaud in #130
- Release playlist by @Arthi-chaud in #135
- Fix build ci by @Arthi-chaud in #146
- Front: Re-init project by @Arthi-chaud in #148
- Add « Remaster » as title extension by @Arthi-chaud in #151
- Front: Home Pages + Basic API Wrapping by @Arthi-chaud in #152
- Front: Implement Server-side prefetching by @Arthi-chaud in #158
- Docker: Build Image and workflow by @Arthi-chaud in #186
- Front: Common base for infinite item view by @Arthi-chaud in #191
- Front: Add toggle in infinite view by @Arthi-chaud in #192
- Front: Items List: Sorting by @Arthi-chaud in #193
- Github actions: Push to dockerhub by @Arthi-chaud in #194
- Front: Make Production Ready by @Arthi-chaud in #195
- Github Action: Fix docker release by @Arthi-chaud in #196
- Front: Illustration fallback by @Arthi-chaud in #197
- Front: Fix 'prepareMeeloQuery' by @Arthi-chaud in #198
- Front: Consistent text alignment by @Arthi-chaud in #199
- Front: Basic Player by @Arthi-chaud in #200
- Create LICENSE by @Arthi-chaud in #208
- Front: Various layout fixes and error handling by @Arthi-chaud in #242
- Illustration resize by @Arthi-chaud in #254
- Front: Fix SSR Back-end url by @Arthi-chaud in #273
- Revert "Fix border radius" by @Arthi-chaud in #296
- Front: upgrade next version by @Arthi-chaud in #299
- Back-End Unit Tests Workflow: Give multiple attempts before failure by @Arthi-chaud in #358
- Better monorepo file architecture by @Arthi-chaud in #367
- Revert "Front: Avoid Scroll-gutter to shift content position" by @Arthi-chaud in #411
- Create issue templates by @Arthi-chaud in #435
- Publish DockerImage & Generate Changelog on Release by @Arthi-chaud in #442
- Publish Action: Fix Secrets by @Arthi-chaud in #443
New Contributors
- @Arthi-chaud made their first contribution in #37
- @dependabot made their first contribution in #124
Full Changelog: https://github.com/Arthi-chaud/Meelo/commits/v0.1.0