* feat: added adding new instances of a cluster with 'start from scratch' option enabling user to create a vanilla/modded cluster; fixed couple pre-existing bugs that wouldn't let other loaders boot up
* feat: fully implemented cluster creation modal design
* chore: refactoring
* feat: expanded the tags section on customization step; found that fabric doesnt work with 1.8.9
* feat: added gallery covers handling for new cluster instances
* feat: added 'redirecting' from fabric to orinthe on versions pre-1.14
* feat: added java-version-override
* feat: added loader types migrations (right now they dont migrate mods because there are no bundles)
* chore: wider loader dropdown for multiloader cluster (if it will be used in the future)
* chore: fixed more issues with isolated and shared dir, with migrations and instances naming
* chore: refactor; taken the loader version dropdown from version picker view back to loader selector
* chore: deleted Quilt from UI
---------
Co-authored-by: LynithDev <61880709+LynithDev@users.noreply.github.com>
* feat: polyplus mark and removal warning (some issues with merging)
* chore: deleted the blue background from the polyplus mod
* feat: added warning for removing bundle mods; fixed the new/updated badges on mods cards
* feat: added migration mechanism for versions 26.3 and above
* feat: added checking for mods that the migrating target already has
* feat: added scheduled migrations for up to 30 days
* feat: added button in cluster settings for manual migratting; added migratting disabled mods with status saving
* feat: added checking for show_initial_migration flag in metadata.json
* feat: added fabric -> orinthe migration (for 1.8.9)
* chore: force open from debug page
* chore: change some UI elements
* fix: don't migrate packages whose dependency failed to install
* fix: keep checking the release migration waitlist past a broken cluster
* fix: make Migrate on a debug fake plan a no-op
* perf: install the version the migration plan already fetched
* chore: fix the clippy warnings the release migration added
* refactor: open every release migration prompt through one helper
* chore(lint): cargo fmt the release migration code
* fix: check the release migration waitlist queries at compile time
---------
Co-authored-by: LynithDev <61880709+LynithDev@users.noreply.github.com>
* feat: added worlds and datapacks tab
* feat: added datapacks in browser; fixed datapacks view loading too long
* feat: added icons to datapacks
* fix: scope world query invalidation to the world that changed
* fix: keep the selected data pack world in one place and guard deletes
* chore: share one dialog shell between the world prompt and delete confirm
* fix: stop watching every subfolder of saves
---------
Co-authored-by: LynithDev <61880709+LynithDev@users.noreply.github.com>
* feat: added sections for advanced mods
* fix: treat a null bundle file type as normal
* chore: drop ScrollArea::lazy_grid
* chore: pass one header height to lazy_sections
* chore: name BundleFileType::Normal in test fixtures
* feat: don't offer advanced bundle mods as optional mods
---------
Co-authored-by: LynithDev <61880709+LynithDev@users.noreply.github.com>
* feat: first version of flagging mods thru datastorage
* feat: added fallbacks, version-specific flag and project-specific flag
* chore: downsized the amount of requests sent when looking up for alternatives
* feat: added explanations for flagging mods
* fix: prompt for flagged dependencies instead of silently skipping them
* chore: size the flagged popup with max_height instead of measuring it
* chore: drop is_flagged and the explanation size cap
* feat: refresh the bad mods list with the pre-launch checks
---------
Co-authored-by: LynithDev <61880709+LynithDev@users.noreply.github.com>
* chore: deleted the download process from onboarding
* fix: gate onboarding Finish on loaded bundles and correct failure copy
* chore: drop unused install_cluster_bundles re-export from oneclient_core
* chore: drop the unread predownload flag from the versions manifest
---------
Co-authored-by: LynithDev <61880709+LynithDev@users.noreply.github.com>
* feat: added support for github hosted bundle mods
* fix: keep external bundle mods when their manifest entry gains an id
* fix: match a pending external bundle update to its installed jar
* chore: parse the bundle file host with url instead of by hand
* fix: namespace external bundle file ids under ext:
* chore: rename the Browser tab to Online and list unbundled GitHub mods there
---------
Co-authored-by: LynithDev <61880709+LynithDev@users.noreply.github.com>
* feat: added deleting browser and local mods by context menu and on list view by trashcan icon
* fix: only confirm shared deletes that reach other clusters
* fix: confirm shared removals from the browser package page too
* fix: keep "View in folder" alive after the context menu closes
---------
Co-authored-by: LynithDev <61880709+LynithDev@users.noreply.github.com>
* feat: added reseting back to the default options in settings tabs
* chore: removed the reset button for whole page and changed it to a reset button for every setting row
* chore: removed old reset options from search index
* chore: remove unused use_game_active and GameState::any_active
* fix: reset global memory to the Default option instead of a fixed size
* feat: add reset buttons to the launcher tab's system settings
* chore: fold with_reset into resettable_all and drop unneeded dispatch clones
* chore: rustfmt the import lists touched by the merge
* fix: treat a missing discrete GPU setting as on
* fix: read the discrete GPU reset default with the same true fallback
---------
Co-authored-by: LynithDev <61880709+LynithDev@users.noreply.github.com>
* chore: changed the UX for optional mods modal
* refactor: fold cancel_optional_mods into close_optional_mods
* fix: forget optional mod picks once the modal closes
* chore: rustfmt the optional mods import
* chore: say what the optional mods buttons actually do
---------
Co-authored-by: LynithDev <61880709+LynithDev@users.noreply.github.com>
* fix: fixed background covers rendering poorly on bigger resolutions
* fix: fixed onboarding cached images stacking from ~80MB to again ~20MB (like it was before)
* fix(java): add refresh button for stale runtimes
* fix(notifications): keep clipboard toasts out of the notification center
* fix(images): allow custom endpoints on non-public hosts
* chore: make toast_only notifications not increment notification counter
* chore: reorder navbar links
---------
Co-authored-by: LynithDev <61880709+LynithDev@users.noreply.github.com>
* feat: added a control center
* feat: added no account signed in handling; added a modal on sign out clicked
* feat: use the discord icon for the discord rpc quick setting
* style: fade out disabled quick setting tiles
* style: drop the 'Active' suffix from the control center account subtitle
* feat: added a gear indicator to the navbar avatar button
* add small gear icon on avatar
---------
Co-authored-by: LynithDev <61880709+LynithDev@users.noreply.github.com>
* fix(stats): drop zero units from durations and cap the server pie at ten slices
* fix(stats): say out loud that "when you play" bars are lifetime totals
* feat(stats): paint every bar in the accent colour until one is hovered
* feat(stats): add a calendar range picker to daily playtime
* fix(stats): stop recovery inventing playtime and carry sessions over midnight
* feat(stats): more stats out of the data already recorded
* feat(stats): eight more personas, and let them see the server data
* fix(charts): stop axis labels being cut off to their own bar's width
* feat(stats): give the overview a headline stat instead of seven identical boxes
* feat(stats): turn personas into wrapping badges
* fix(stats): lay the overview out for the window it is actually in
* feat(stats): fold the monthly chart into one "Playtime by hour/day/month" card
* fix(stats): stop the total playtime card making the tile block so tall
* fix(stats): strip the persona badges back to plain tags