From c39bb78e38cb9cfe13f01f4a9bee277881b52efb Mon Sep 17 00:00:00 2001 From: Prospector <6166773+Prospector@users.noreply.github.com> Date: Wed, 11 Dec 2024 19:54:18 -0800 Subject: [PATCH] App redesign (#2946) * Start of app redesign * format * continue progress * Content page nearly done * Fix recursion issues with content page * Fix update all alignment * Discover page progress * Settings progress * Removed unlocked-size hack that breaks web * Revamp project page, refactor web project page to share code with app, fixed loading bar, misc UI/UX enhancements, update ko-fi logo, update arrow icons, fix web issues caused by floating-vue migration, fix tooltip issues, update web tooltips, clean up web hydration issues * Ads + run prettier * Begin auth refactor, move common messages to ui lib, add i18n extraction to all apps, begin Library refactor * fix ads not hiding when plus log in * rev lockfile changes/conflicts * Fix sign in page * Add generated * (mostly) Data driven search * Fix search mobile issue * profile fixes * Project versions page, fix typescript on UI lib and misc fixes * Remove unused gallery component * Fix linkfunction err * Search filter controls at top, localization for locked filters * Fix provided filter names * Fix navigating from instance browse to main browse * Friends frontend (#2995) * Friends system frontend * (almost) finish frontend * finish friends, fix lint * Fix lint --------- Signed-off-by: Geometrically <18202329+Geometrically@users.noreply.github.com> * Refresh macOS app icon * Update web search UI more * Fix link opens * Fix frontend build --------- Signed-off-by: Geometrically <18202329+Geometrically@users.noreply.github.com> Co-authored-by: Jai A Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com> --- .github/ISSUE_TEMPLATE/1-app-bug.yml | 2 +- .github/ISSUE_TEMPLATE/4-feature-request.yml | 2 +- .github/ISSUE_TEMPLATE/config.yml | 2 +- .github/workflows/daedalus-docker.yml | 10 +- .github/workflows/daedalus-run.yml | 1 - .github/workflows/labrinth-docker.yml | 12 +- .github/workflows/turbo-ci.yml | 4 +- .vscode/settings.json | 7 +- apps/app-frontend/package.json | 11 +- apps/app-frontend/src/App.vue | 630 ++- apps/app-frontend/src/assets/icons/index.js | 5 - apps/app-frontend/src/assets/modrinth_app.svg | 28 + .../src/assets/modrinth_servers.svg | 24 + .../src/assets/sad-modrinth-bot.webp | Bin 0 -> 167290 bytes .../src/assets/stylesheets/global.scss | 16 +- .../src/components/GridDisplay.vue | 102 +- .../src/components/LoadingIndicatorBar.vue | 141 + .../src/components/RowDisplay.vue | 11 +- .../components/modrinth-loading-indicator.js | 136 - .../src/components/ui/AccountsCard.vue | 34 +- .../src/components/ui/AddContentButton.vue | 53 +- .../src/components/ui/Breadcrumbs.vue | 67 +- .../src/components/ui/ContextMenu.vue | 5 - .../src/components/ui/ErrorModal.vue | 1 - .../src/components/ui/ExportModal.vue | 2 +- .../src/components/ui/Instance.vue | 2 +- .../components/ui/InstanceCreationModal.vue | 3 +- .../src/components/ui/InstanceIndicator.vue | 53 + .../src/components/ui/JavaDetectionModal.vue | 2 - .../src/components/ui/JavaSelector.vue | 3 +- .../src/components/ui/ModpackVersionModal.vue | 1 - .../src/components/ui/NavButton.vue | 109 + .../src/components/ui/NavTabs.vue | 164 + .../src/components/ui/PromotionWrapper.vue | 96 +- .../src/components/ui/SearchCard.vue | 212 +- .../src/components/ui/SplashScreen.vue | 5 +- .../src/components/ui/URLConfirmModal.vue | 1 - .../src/components/ui/friends/FriendsList.vue | 359 ++ .../IncompatibilityWarningModal.vue | 1 - .../ui/install_flow/InstallConfirmModal.vue | 1 - .../ui/install_flow/ModInstallModal.vue | 7 +- .../components/ui/modal/AppSettingsModal.vue | 161 + .../src/components/ui/modal/ModalWrapper.vue | 2 +- .../ui/settings/AppearanceSettings.vue | 103 + .../ui/settings/DefaultInstanceSettings.vue | 166 + .../ui/settings/FeatureFlagSettings.vue | 40 + .../components/ui/settings/JavaSettings.vue | 30 + .../ui/settings/PrivacySettings.vue | 78 + .../settings/ResourceManagementSettings.vue | 114 + .../ui/tutorial/ModrinthLoginScreen.vue | 368 -- apps/app-frontend/src/helpers/events.js | 4 + apps/app-frontend/src/helpers/friends.js | 17 + .../app-frontend/src/locales/en-US/index.json | 38 + apps/app-frontend/src/main.js | 12 +- apps/app-frontend/src/pages/Browse.vue | 1181 ++--- apps/app-frontend/src/pages/Index.vue | 20 +- apps/app-frontend/src/pages/Settings.vue | 628 --- apps/app-frontend/src/pages/index.js | 4 +- .../app-frontend/src/pages/instance/Index.vue | 215 +- apps/app-frontend/src/pages/instance/Mods.vue | 749 ++- .../src/pages/instance/Options.vue | 1 - .../app-frontend/src/pages/library/Custom.vue | 17 + .../src/pages/library/Downloaded.vue | 17 + .../pages/{Library.vue => library/Index.vue} | 45 +- .../src/pages/library/Overview.vue | 13 + apps/app-frontend/src/pages/library/index.js | 6 + .../src/pages/project/Description.vue | 24 +- .../src/pages/project/Gallery.vue | 2 +- apps/app-frontend/src/pages/project/Index.vue | 375 +- .../src/pages/project/Versions.vue | 242 +- apps/app-frontend/src/routes.js | 32 +- apps/app-frontend/src/store/theme.js | 4 + apps/app-frontend/tailwind.config.js | 5 +- apps/app-playground/link_test.html | 2 +- apps/app/build.rs | 13 + apps/app/capabilities/ads.json | 8 +- apps/app/capabilities/core.json | 6 +- apps/app/capabilities/plugins.json | 3 +- apps/app/capabilities/updater.json | 8 +- apps/app/icons/icon.icns | Bin 770796 -> 265353 bytes apps/app/package.json | 2 +- apps/app/src/api/ads.rs | 19 +- apps/app/src/api/friends.rs | 33 + apps/app/src/api/mod.rs | 1 + apps/app/src/macos/window_ext.rs | 4 +- apps/app/src/main.rs | 27 +- apps/app/tauri.conf.json | 19 +- apps/daedalus_client/README.md | 5 +- apps/daedalus_client/docker-compose.yml | 6 +- apps/daedalus_client/library-patches.json | 200 +- apps/daedalus_client/package.json | 2 +- apps/docs/README.md | 2 +- apps/docs/public/openapi.yaml | 2 +- apps/docs/public/welcome-channel.yaml | 18 +- apps/docs/src/content/config.ts | 8 +- .../src/content/docs/contributing/minotaur.md | 2 +- apps/docs/src/content/docs/index.mdx | 2 +- apps/docs/src/styles/modrinth.css | 6 +- apps/docs/tsconfig.json | 2 +- apps/frontend/package.json | 5 +- .../src/assets/styles/components.scss | 17 +- apps/frontend/src/assets/styles/global.scss | 104 +- apps/frontend/src/assets/styles/layout.scss | 8 +- apps/frontend/src/components/ui/Accordion.vue | 14 +- apps/frontend/src/components/ui/Badge.vue | 35 +- apps/frontend/src/components/ui/NavTabs.vue | 10 +- .../ui/servers/FilesBrowseNavbar.vue | 2 +- .../src/components/ui/servers/PyroModal.vue | 2 +- .../ui/servers/TeleportOverflowMenu.vue | 20 +- .../components/ui/thread/ThreadMessage.vue | 18 +- apps/frontend/src/composables/featureFlags.ts | 4 + apps/frontend/src/layouts/default.vue | 38 +- apps/frontend/src/layouts/empty.vue | 3 + apps/frontend/src/locales/en-US/index.json | 220 +- apps/frontend/src/pages/[type]/[id].vue | 539 +- .../src/pages/[type]/[id]/changelog.vue | 24 +- apps/frontend/src/pages/[type]/[id]/index.vue | 10 +- .../src/pages/[type]/[id]/versions.vue | 437 +- apps/frontend/src/pages/auth.vue | 16 + apps/frontend/src/pages/auth/authorize.vue | 2 +- .../src/pages/auth/reset-password.vue | 1 + apps/frontend/src/pages/auth/sign-in.vue | 1 + apps/frontend/src/pages/auth/sign-up.vue | 2 +- apps/frontend/src/pages/auth/welcome.vue | 2 +- apps/frontend/src/pages/collection/[id].vue | 9 +- apps/frontend/src/pages/dashboard.vue | 19 +- .../src/pages/dashboard/collections.vue | 2 +- .../frontend/src/pages/dashboard/projects.vue | 23 +- apps/frontend/src/pages/organization/[id].vue | 13 +- .../organization/[id]/settings/projects.vue | 2 +- apps/frontend/src/pages/report.vue | 7 + .../src/pages/search/[searchProjectType].vue | 1290 ++--- .../src/pages/servers/manage/[id]/backups.vue | 4 +- apps/frontend/src/pages/settings.vue | 3 +- .../src/pages/settings/applications.vue | 11 +- .../src/pages/settings/authorizations.vue | 3 +- .../src/pages/settings/billing/index.vue | 1 + apps/frontend/src/pages/settings/index.vue | 171 +- apps/frontend/src/pages/settings/language.vue | 2 +- apps/frontend/src/pages/settings/pats.vue | 3 +- apps/frontend/src/pages/settings/profile.vue | 3 +- apps/frontend/src/pages/settings/sessions.vue | 2 +- apps/frontend/src/pages/user/[id].vue | 6 +- apps/frontend/src/plugins/floating-vue.js | 15 + apps/frontend/src/utils/common-messages.ts | 193 - apps/frontend/tailwind.config.js | 2 + apps/labrinth/assets/auth/style.css | 89 +- apps/labrinth/src/auth/email/auth_notif.html | 1710 +++++- .../labrinth/src/auth/email/button_notif.html | 1813 ++++++- apps/labrinth/src/auth/templates/error.html | 35 +- apps/labrinth/src/auth/templates/success.html | 26 +- apps/labrinth/src/auth/validate.rs | 1 + apps/labrinth/src/models/v3/users.rs | 8 +- apps/labrinth/src/routes/internal/session.rs | 2 +- docker-compose.yml | 8 +- package.json | 8 +- ...cd3910b1719f433a0c34d40415dd7681ab272.json | 6 +- ...2dfc577061b92479ce96ffb30a457939b5ffe.json | 7 +- ...7b54a186b98796ec549c9d891089ea33cf3fc.json | 7 +- ...e36adca581f8ad1b90f85d3ec3d92ec61e65e.json | 8 +- ...21065f5e35f321954a9d5ae9cde907d5ce823.json | 7 +- ...cdcf73da199ea6ac05ee3ee798ece80d877cf.json | 11 +- ...b8cea926ac6c65d613904eff1d740df30acda.json | 9 +- ...131168e87bb37aa65c2156ad2cb6198426d8c.json | 9 +- packages/app-lib/package.json | 2 +- packages/app-lib/src/api/friends.rs | 35 + packages/app-lib/src/api/mod.rs | 3 +- packages/app-lib/src/api/mr_auth.rs | 7 +- packages/app-lib/src/config.rs | 7 + packages/app-lib/src/event/emit.rs | 16 +- packages/app-lib/src/event/mod.rs | 11 + packages/app-lib/src/launcher/mod.rs | 5 + packages/app-lib/src/state/db.rs | 13 +- packages/app-lib/src/state/friends.rs | 316 ++ packages/app-lib/src/state/mod.rs | 16 +- packages/app-lib/src/state/mr_auth.rs | 6 +- packages/app-lib/src/state/process.rs | 2 + packages/app-lib/src/state/profiles.rs | 2 +- packages/assets/branding/logo.svg | 4 +- packages/assets/external/kofi.svg | 5 +- packages/assets/icons/coffee.svg | 1 + .../assets/icons/gauge.svg | 2 +- packages/assets/icons/left-arrow.svg | 5 +- packages/assets/icons/manage.svg | 1 + packages/assets/icons/maximize.svg | 11 + .../assets/icons/minimize.svg | 0 packages/assets/icons/minus.svg | 1 + packages/assets/icons/package.svg | 1 + packages/assets/icons/restore.svg | 10 + packages/assets/icons/right-arrow.svg | 5 +- packages/assets/index.ts | 20 +- packages/assets/package.json | 2 +- packages/assets/styles/classes.scss | 152 +- packages/assets/styles/variables.scss | 217 +- packages/daedalus/README.md | 4 +- packages/daedalus/package.json | 2 +- packages/ui/.eslintrc.js | 4 - packages/ui/eslint.config.mjs | 22 + packages/ui/index.ts | 2 + packages/ui/package.json | 8 +- packages/ui/src/components/base/Accordion.vue | 91 + packages/ui/src/components/base/AutoLink.vue | 21 + packages/ui/src/components/base/Badge.vue | 16 +- .../ui/src/components/base/ButtonStyled.vue | 16 +- packages/ui/src/components/base/Checkbox.vue | 20 +- .../components/base/ConditionalNuxtLink.vue | 21 - .../src/components/base/ContentPageHeader.vue | 6 +- .../ui/src/components/base/DropdownSelect.vue | 8 +- .../src/components/base/LoadingIndicator.vue | 113 + .../ui/src/components/base/ManySelect.vue | 10 +- .../ui/src/components/base/MarkdownEditor.vue | 2 +- .../ui/src/components/base/Notifications.vue | 13 +- .../ui/src/components/base/OverflowMenu.vue | 18 +- .../ui/src/components/base/Pagination.vue | 17 +- .../ui/src/components/base/PopoutMenu.vue | 312 +- .../components/base/PreviewSelectButton.vue | 23 + .../ui/src/components/base/ProjectCard.vue | 2 +- .../src/components/base/ScrollablePanel.vue | 76 +- .../ui/src/components/base/SimpleBadge.vue | 18 + packages/ui/src/components/base/TagItem.vue | 20 + .../src/components/billing/PurchaseModal.vue | 2 +- .../components/content/ContentListItem.vue | 91 + .../components/content/ContentListPanel.vue | 102 + packages/ui/src/components/index.ts | 30 +- packages/ui/src/components/modal/NewModal.vue | 18 +- .../src/components/project/NewProjectCard.vue | 85 + .../project/ProjectBackgroundGradient.vue | 46 + .../src/components/project/ProjectHeader.vue | 74 + .../project/ProjectPageDescription.vue | 15 + .../project/ProjectPageVersions.vue | 289 + .../project/ProjectSidebarCompatibility.vue | 117 + .../project/ProjectSidebarCreators.vue | 118 + .../project/ProjectSidebarDetails.vue | 142 + .../project/ProjectSidebarLinks.vue | 173 + .../components/project/ProjectStatusBadge.vue | 105 + .../components/search/BrowseFiltersPanel.vue | 105 + .../components/search/SearchFilterControl.vue | 97 + .../components/search/SearchFilterOption.vue | 59 + .../components/search/SearchSidebarFilter.vue | 334 ++ .../src/components/settings/ThemeSelector.vue | 145 + .../version/VersionChannelIndicator.vue | 6 +- .../version}/VersionFilterControl.vue | 118 +- .../components/version}/VersionSummary.vue | 5 +- packages/ui/src/locales/en-US/index.json | 330 ++ packages/ui/src/utils/common-messages.ts | 195 + packages/ui/src/utils/search.ts | 608 +++ packages/ui/src/vue-shims.d.ts | 2 +- packages/ui/tsconfig.json | 6 +- packages/utils/index.d.ts | 249 - packages/utils/index.ts | 2 + packages/utils/projects.ts | 267 +- packages/utils/types.ts | 243 + packages/utils/utils.ts | 34 + pnpm-lock.yaml | 4688 +++++++++-------- pnpm-workspace.yaml | 4 +- turbo.json | 3 +- web-types.json | 18 + 257 files changed, 15713 insertions(+), 9475 deletions(-) create mode 100644 apps/app-frontend/src/assets/modrinth_app.svg create mode 100644 apps/app-frontend/src/assets/modrinth_servers.svg create mode 100644 apps/app-frontend/src/assets/sad-modrinth-bot.webp create mode 100644 apps/app-frontend/src/components/LoadingIndicatorBar.vue delete mode 100644 apps/app-frontend/src/components/modrinth-loading-indicator.js create mode 100644 apps/app-frontend/src/components/ui/InstanceIndicator.vue create mode 100644 apps/app-frontend/src/components/ui/NavButton.vue create mode 100644 apps/app-frontend/src/components/ui/NavTabs.vue create mode 100644 apps/app-frontend/src/components/ui/friends/FriendsList.vue create mode 100644 apps/app-frontend/src/components/ui/modal/AppSettingsModal.vue create mode 100644 apps/app-frontend/src/components/ui/settings/AppearanceSettings.vue create mode 100644 apps/app-frontend/src/components/ui/settings/DefaultInstanceSettings.vue create mode 100644 apps/app-frontend/src/components/ui/settings/FeatureFlagSettings.vue create mode 100644 apps/app-frontend/src/components/ui/settings/JavaSettings.vue create mode 100644 apps/app-frontend/src/components/ui/settings/PrivacySettings.vue create mode 100644 apps/app-frontend/src/components/ui/settings/ResourceManagementSettings.vue delete mode 100644 apps/app-frontend/src/components/ui/tutorial/ModrinthLoginScreen.vue create mode 100644 apps/app-frontend/src/helpers/friends.js create mode 100644 apps/app-frontend/src/locales/en-US/index.json delete mode 100644 apps/app-frontend/src/pages/Settings.vue create mode 100644 apps/app-frontend/src/pages/library/Custom.vue create mode 100644 apps/app-frontend/src/pages/library/Downloaded.vue rename apps/app-frontend/src/pages/{Library.vue => library/Index.vue} (55%) create mode 100644 apps/app-frontend/src/pages/library/Overview.vue create mode 100644 apps/app-frontend/src/pages/library/index.js create mode 100644 apps/app/src/api/friends.rs create mode 100644 apps/frontend/src/plugins/floating-vue.js delete mode 100644 apps/frontend/src/utils/common-messages.ts create mode 100644 packages/app-lib/src/api/friends.rs create mode 100644 packages/app-lib/src/state/friends.rs create mode 100644 packages/assets/icons/coffee.svg rename apps/app-frontend/src/assets/icons/maximize.svg => packages/assets/icons/gauge.svg (61%) create mode 100644 packages/assets/icons/manage.svg create mode 100644 packages/assets/icons/maximize.svg rename {apps/app-frontend/src => packages}/assets/icons/minimize.svg (100%) create mode 100644 packages/assets/icons/minus.svg create mode 100644 packages/assets/icons/package.svg create mode 100644 packages/assets/icons/restore.svg delete mode 100644 packages/ui/.eslintrc.js create mode 100644 packages/ui/eslint.config.mjs create mode 100644 packages/ui/src/components/base/Accordion.vue create mode 100644 packages/ui/src/components/base/AutoLink.vue delete mode 100644 packages/ui/src/components/base/ConditionalNuxtLink.vue create mode 100644 packages/ui/src/components/base/LoadingIndicator.vue create mode 100644 packages/ui/src/components/base/PreviewSelectButton.vue create mode 100644 packages/ui/src/components/base/SimpleBadge.vue create mode 100644 packages/ui/src/components/base/TagItem.vue create mode 100644 packages/ui/src/components/content/ContentListItem.vue create mode 100644 packages/ui/src/components/content/ContentListPanel.vue create mode 100644 packages/ui/src/components/project/NewProjectCard.vue create mode 100644 packages/ui/src/components/project/ProjectBackgroundGradient.vue create mode 100644 packages/ui/src/components/project/ProjectHeader.vue create mode 100644 packages/ui/src/components/project/ProjectPageDescription.vue create mode 100644 packages/ui/src/components/project/ProjectPageVersions.vue create mode 100644 packages/ui/src/components/project/ProjectSidebarCompatibility.vue create mode 100644 packages/ui/src/components/project/ProjectSidebarCreators.vue create mode 100644 packages/ui/src/components/project/ProjectSidebarDetails.vue create mode 100644 packages/ui/src/components/project/ProjectSidebarLinks.vue create mode 100644 packages/ui/src/components/project/ProjectStatusBadge.vue create mode 100644 packages/ui/src/components/search/BrowseFiltersPanel.vue create mode 100644 packages/ui/src/components/search/SearchFilterControl.vue create mode 100644 packages/ui/src/components/search/SearchFilterOption.vue create mode 100644 packages/ui/src/components/search/SearchSidebarFilter.vue create mode 100644 packages/ui/src/components/settings/ThemeSelector.vue rename {apps/frontend/src/components/ui => packages/ui/src/components/version}/VersionFilterControl.vue (71%) rename {apps/frontend/src/components/ui => packages/ui/src/components/version}/VersionSummary.vue (88%) create mode 100644 packages/ui/src/utils/common-messages.ts create mode 100644 packages/ui/src/utils/search.ts delete mode 100644 packages/utils/index.d.ts create mode 100644 packages/utils/types.ts create mode 100644 web-types.json diff --git a/.github/ISSUE_TEMPLATE/1-app-bug.yml b/.github/ISSUE_TEMPLATE/1-app-bug.yml index 7b32068e0..39d7e2e1b 100644 --- a/.github/ISSUE_TEMPLATE/1-app-bug.yml +++ b/.github/ISSUE_TEMPLATE/1-app-bug.yml @@ -56,4 +56,4 @@ body: label: Additional context description: Add any other context about the problem here. validations: - required: false \ No newline at end of file + required: false diff --git a/.github/ISSUE_TEMPLATE/4-feature-request.yml b/.github/ISSUE_TEMPLATE/4-feature-request.yml index 42406120a..03450b468 100644 --- a/.github/ISSUE_TEMPLATE/4-feature-request.yml +++ b/.github/ISSUE_TEMPLATE/4-feature-request.yml @@ -43,4 +43,4 @@ body: label: Additional context description: Add any other context or screenshots about the suggested enhancement here. validations: - required: false \ No newline at end of file + required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 8d47deb5a..26d7b2397 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -11,4 +11,4 @@ contact_links: url: https://roadmap.modrinth.com - name: 📚 Documentation about: Useful documentation about Modrinth's API - url: https://docs.modrinth.com \ No newline at end of file + url: https://docs.modrinth.com diff --git a/.github/workflows/daedalus-docker.yml b/.github/workflows/daedalus-docker.yml index e347a0b33..42a67a22d 100644 --- a/.github/workflows/daedalus-docker.yml +++ b/.github/workflows/daedalus-docker.yml @@ -8,12 +8,12 @@ on: - .github/workflows/daedalus-docker.yml - 'apps/daedalus_client/**' pull_request: - types: [ opened, synchronize ] + types: [opened, synchronize] paths: - .github/workflows/daedalus-docker.yml - 'apps/daedalus_client/**' merge_group: - types: [ checks_requested ] + types: [checks_requested] jobs: docker: @@ -26,15 +26,13 @@ jobs: uses: docker/metadata-action@v3 with: images: ghcr.io/modrinth/daedalus - - - name: Login to GitHub Images + - name: Login to GitHub Images uses: docker/login-action@v1 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - - name: Build and push + - name: Build and push id: docker_build uses: docker/build-push-action@v2 with: diff --git a/.github/workflows/daedalus-run.yml b/.github/workflows/daedalus-run.yml index 5468af140..56fbd9f82 100644 --- a/.github/workflows/daedalus-run.yml +++ b/.github/workflows/daedalus-run.yml @@ -21,7 +21,6 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Pull Docker image from GHCR run: docker pull ghcr.io/modrinth/daedalus:main diff --git a/.github/workflows/labrinth-docker.yml b/.github/workflows/labrinth-docker.yml index f0fcd93ec..6f4080254 100644 --- a/.github/workflows/labrinth-docker.yml +++ b/.github/workflows/labrinth-docker.yml @@ -8,12 +8,12 @@ on: - .github/workflows/labrinth-docker.yml - 'apps/labrinth/**' pull_request: - types: [ opened, synchronize ] + types: [opened, synchronize] paths: - .github/workflows/labrinth-docker.yml - 'apps/labrinth/**' merge_group: - types: [ checks_requested ] + types: [checks_requested] jobs: docker: @@ -29,19 +29,17 @@ jobs: uses: docker/metadata-action@v3 with: images: ghcr.io/modrinth/labrinth - - - name: Login to GitHub Images + - name: Login to GitHub Images uses: docker/login-action@v1 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - - name: Build and push + - name: Build and push id: docker_build uses: docker/build-push-action@v2 with: context: ./apps/labrinth push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.docker_meta.outputs.tags }} - labels: ${{ steps.docker_meta.outputs.labels }} \ No newline at end of file + labels: ${{ steps.docker_meta.outputs.labels }} diff --git a/.github/workflows/turbo-ci.yml b/.github/workflows/turbo-ci.yml index cd5dfa705..0061f621a 100644 --- a/.github/workflows/turbo-ci.yml +++ b/.github/workflows/turbo-ci.yml @@ -2,11 +2,11 @@ name: CI on: push: - branches: ["main"] + branches: ['main'] pull_request: types: [opened, synchronize] merge_group: - types: [ checks_requested ] + types: [checks_requested] jobs: build: diff --git a/.vscode/settings.json b/.vscode/settings.json index 00362a598..fbe97bcf7 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,12 +1,7 @@ { "prettier.endOfLine": "lf", "editor.formatOnSave": true, - "eslint.validate": [ - "javascript", - "javascriptreact", - "typescript", - "typescriptreact" - ], + "eslint.validate": ["javascript", "javascriptreact", "typescript", "typescriptreact"], "editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit" } diff --git a/apps/app-frontend/package.json b/apps/app-frontend/package.json index 5bd0edc65..88219e7cd 100644 --- a/apps/app-frontend/package.json +++ b/apps/app-frontend/package.json @@ -8,7 +8,8 @@ "build": "vue-tsc --noEmit && vite build", "tsc:check": "vue-tsc --noEmit", "lint": "eslint . && prettier --check .", - "fix": "eslint . --fix && prettier --write ." + "fix": "eslint . --fix && prettier --write .", + "intl:extract": "formatjs extract \"{,src/components,src/composables,src/helpers,src/pages,src/store}/**/*.{vue,ts,tsx,js,jsx,mts,cts,mjs,cjs}\" --ignore '**/*.d.ts' --ignore 'node_modules' --out-file src/locales/en-US/index.json --format crowdin --preserve-whitespace" }, "dependencies": { "@modrinth/assets": "workspace:*", @@ -28,12 +29,13 @@ "pinia": "^2.1.7", "posthog-js": "^1.158.2", "vite-svg-loader": "^5.1.0", - "vue": "^3.4.21", + "vue": "^3.5.13", "vue-multiselect": "3.0.0", "vue-router": "4.3.0", "vue-virtual-scroller": "v2.0.0-beta.8" }, "devDependencies": { + "@formatjs/cli": "^6.2.12", "@eslint/compat": "^1.1.1", "@nuxt/eslint-config": "^0.5.6", "@vitejs/plugin-vue": "^5.0.4", @@ -47,8 +49,9 @@ "tailwindcss": "^3.4.4", "tsconfig": "workspace:*", "typescript": "^5.5.4", - "vite": "^5.2.8", + "vite": "^5.4.6", "vue-tsc": "^2.1.6" }, - "packageManager": "pnpm@9.4.0" + "packageManager": "pnpm@9.4.0", + "web-types": "../../web-types.json" } diff --git a/apps/app-frontend/src/App.vue b/apps/app-frontend/src/App.vue index f5cd667b8..5b487522e 100644 --- a/apps/app-frontend/src/App.vue +++ b/apps/app-frontend/src/App.vue @@ -1,17 +1,24 @@ - diff --git a/packages/ui/src/components/base/ManySelect.vue b/packages/ui/src/components/base/ManySelect.vue index 85671398e..443f0d75d 100644 --- a/packages/ui/src/components/base/ManySelect.vue +++ b/packages/ui/src/components/base/ManySelect.vue @@ -6,6 +6,7 @@ :disabled="disabled" :position="position" :direction="direction" + :dropdown-id="dropdownId" @open=" () => { searchQuery = '' @@ -15,15 +16,15 @@