Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
b315c8a
refactor: remove unused legacy onboarded flag
tdgao Jul 15, 2026
907599a
sqlx prepare
tdgao Jul 15, 2026
f4086f2
feat: add onboarding checklist app db and add vue provider
tdgao Jul 15, 2026
7782458
feat: add welcome page
tdgao Jul 15, 2026
90de608
feat: add onboarding checklist component
tdgao Jul 15, 2026
ede847f
feat: move checklist visibility source of truth in app db
tdgao Jul 17, 2026
1ec6eef
feat: split up import modpack button
tdgao Jul 20, 2026
184e6fb
feat-small: style tweak
tdgao Jul 22, 2026
dfb23fd
feat: remove discover section from homepage and add library
tdgao Jul 22, 2026
14db1ae
refactor: move welcome screen to component
tdgao Jul 22, 2026
aea7612
refactor: move grid display into /library
tdgao Jul 22, 2026
e9ec976
Merge branch 'main' into truman/app-onboarding
tdgao Jul 24, 2026
143e9b4
refactor: rename existing components
tdgao Jul 24, 2026
c2821d6
refactor: split up the current library page files
tdgao Jul 24, 2026
46710c0
feat: add create group modal
tdgao Jul 24, 2026
e64bc58
feat: add instance group definitions
tdgao Jul 24, 2026
4b30882
feat: update accordian for instance groups
tdgao Jul 24, 2026
1a777fd
feat: add delete group
tdgao Jul 24, 2026
855f57b
feat: implement rename instance groups
tdgao Jul 24, 2026
f1b9070
refactor: move instance group api out
tdgao Jul 24, 2026
aa7328b
feat: add context menu for groups
tdgao Jul 24, 2026
de37804
feat: style instance items in library
tdgao Jul 24, 2026
e271bb6
feat: add selected instance item state
tdgao Jul 24, 2026
9625a42
feat: implement action bar for selection
tdgao Jul 27, 2026
2d6bce3
feat: drag and drop to move between groups
tdgao Jul 27, 2026
b33d442
feat: show ungrouped with header
tdgao Jul 27, 2026
b9f7bc7
feat: improve edit group name
tdgao Jul 27, 2026
f31477b
small fix
tdgao Jul 27, 2026
4f2c053
small style fixes
tdgao Jul 27, 2026
281aea7
feat: improve selection behaviour
tdgao Jul 27, 2026
068492a
fix: dont toggle group when context menu open
tdgao Jul 27, 2026
26a5a16
feat: drag and drop multiple selected
tdgao Jul 27, 2026
57c167e
small
tdgao Jul 27, 2026
ccb40de
feat: add remove from group in action bar
tdgao Jul 27, 2026
c2fb6e1
feat: add delay on icon hiding in inline input
tdgao Jul 27, 2026
5daee75
feat: improve icon hiding delay
tdgao Jul 27, 2026
c0acc7e
Merge branch 'main' into truman/app-onboarding
tdgao Jul 28, 2026
c1b3476
fix: bad routes.js
tdgao Jul 28, 2026
277615b
feat: implement sort and filter options
tdgao Jul 28, 2026
d8c96c0
refactor: dont prefix filenames
tdgao Jul 28, 2026
2ea7c1a
feat: change open/collapse group target
tdgao Jul 28, 2026
9edbee3
feat: improve ungrouped behaviour
tdgao Jul 28, 2026
2b0f698
feat: add shift to select multiple instances
tdgao Jul 28, 2026
26c4e71
fix: icon disappear transition
tdgao Jul 28, 2026
0897a6e
feat: add esc while dragging to cancel
tdgao Jul 28, 2026
c943ba1
feat: update sorting and moved label
tdgao Jul 28, 2026
eb86926
feat: update context menu
tdgao Jul 28, 2026
5ad5fa8
fix: multiple context menus can be opened
tdgao Jul 28, 2026
6bb69c8
refactor: instance groups to be identified by ID instead of name, nam…
tdgao Jul 29, 2026
1454e5b
feat: creating new group always adds instance
tdgao Jul 29, 2026
304b833
feat: create group button, fix instance selection, and increase group…
tdgao Jul 29, 2026
69569bf
feat: strokes
tdgao Jul 29, 2026
5102efc
fix: show getting started checklist in all sidebar
tdgao Jul 29, 2026
0fe4218
feat: set size on microsoft login screen
tdgao Jul 29, 2026
2dfcc57
fix: use ButtonStyled in Chips component
tdgao Jul 29, 2026
7a9e6c4
feat: creating groups with selected instances and fix some moving sel…
tdgao Jul 29, 2026
7ca97c4
pnpm prepr
tdgao Jul 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions apps/app-frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"test": "vue-tsc --noEmit"
},
"dependencies": {
"@dnd-kit/vue": "^0.5.0",
"@modrinth/api-client": "workspace:^",
"@modrinth/assets": "workspace:*",
"@modrinth/ui": "workspace:*",
Expand Down
60 changes: 31 additions & 29 deletions apps/app-frontend/src/App.vue
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,12 @@ import {
ChangeSkinIcon,
CompassIcon,
ExternalIcon,
HomeIcon,
LeftArrowIcon,
LibraryIcon,
LogInIcon,
LogOutIcon,
NewspaperIcon,
NotepadTextIcon,
PlayIcon,
PlusIcon,
RefreshCwIcon,
RightArrowIcon,
Expand Down Expand Up @@ -83,6 +82,7 @@ import ModpackAlreadyInstalledModal from '@/components/ui/modal/ModpackAlreadyIn
import ModrinthAccountRequiredModal from '@/components/ui/modal/ModrinthAccountRequiredModal.vue'
import UpdateToPlayModal from '@/components/ui/modal/UpdateToPlayModal.vue'
import NavButton from '@/components/ui/NavButton.vue'
import OnboardingChecklist from '@/components/ui/onboarding-checklist/index.vue'
import PrideFundraiserBanner from '@/components/ui/PrideFundraiserBanner.vue'
import PromotionWrapper from '@/components/ui/PromotionWrapper.vue'
import QuickInstanceSwitcher from '@/components/ui/QuickInstanceSwitcher.vue'
Expand Down Expand Up @@ -286,7 +286,10 @@ const {
setModpackAlreadyInstalledModal,
handleModpackDuplicateCreateAnyway,
handleModpackDuplicateGoToInstance,
onboardingChecklist,
} = setupProviders(notificationManager, popupNotificationManager)
const { hasLoggedIntoMinecraft, hasLoggedIntoModrinth, showChecklist } = onboardingChecklist
const showFriendsList = computed(() => !showChecklist.value || hasLoggedIntoModrinth.value)

const news = ref([])
const availableSurvey = ref(false)
Expand All @@ -303,7 +306,6 @@ window.addEventListener('online', () => {
offline.value = false
})

const showOnboarding = ref(false)
const nativeDecorations = ref(false)

const os = ref('')
Expand Down Expand Up @@ -454,6 +456,8 @@ function handleAdsConsentRequired(required) {
}

async function setupApp() {
await onboardingChecklist.initialize()

const {
native_decorations,
theme,
Expand All @@ -462,8 +466,6 @@ async function setupApp() {
collapsed_navigation,
hide_nametag_skins_page,
advanced_rendering,
onboarded,
default_page,
toggle_sidebar,
developer_mode,
feature_flags,
Expand All @@ -475,16 +477,10 @@ async function setupApp() {
i18n.global.locale.value = locale
}

if (default_page === 'Library') {
await router.push('/library')
}

os.value = await getOS()
const dev = await isDev()
isDevEnvironment.value = dev
const version = await getVersion()
showOnboarding.value = !onboarded

nativeDecorations.value = native_decorations
if (os.value !== 'MacOS') await getCurrentWindow().setDecorations(native_decorations)

Expand All @@ -506,7 +502,7 @@ async function setupApp() {
if (telemetry) {
initAnalytics()
if (dev) debugAnalytics()
trackEvent('Launched', { version, dev, onboarded })
trackEvent('Launched', { version, dev })
}

if (!dev) document.addEventListener('contextmenu', (event) => event.preventDefault())
Expand Down Expand Up @@ -1595,8 +1591,16 @@ provideAppUpdateDownloadProgress(appUpdateDownload)
<div
class="app-grid-navbar bg-bg-raised flex flex-col p-[0.5rem] pt-0 gap-[0.5rem] w-[--left-bar-width]"
>
<NavButton v-tooltip.right="'Home'" to="/">
<HomeIcon />
<NavButton
v-tooltip.right="'Home'"
to="/"
:is-primary="(route) => route.path === '/'"
:is-subpage="
() =>
(route.path.startsWith('/browse') || route.path.startsWith('/project')) && route.query.i
"
>
<PlayIcon />
</NavButton>
<NavButton v-if="themeStore.featureFlags.worlds_tab" v-tooltip.right="'Worlds'" to="/worlds">
<WorldIcon />
Expand All @@ -1612,19 +1616,6 @@ provideAppUpdateDownloadProgress(appUpdateDownload)
<NavButton v-tooltip.right="'Skin selector'" to="/skins">
<ChangeSkinIcon />
</NavButton>
<NavButton
v-tooltip.right="'Library'"
to="/library"
:is-primary="(r) => r.path === '/library' || r.path === '/library'"
:is-subpage="
() =>
route.path.startsWith('/instance') ||
((route.path.startsWith('/browse') || route.path.startsWith('/project')) &&
route.query.i)
"
>
<LibraryIcon />
</NavButton>
<NavButton
v-tooltip.right="'Modrinth Hosting'"
to="/hosting/manage"
Expand Down Expand Up @@ -1823,15 +1814,26 @@ provideAppUpdateDownloadProgress(appUpdateDownload)
:class="{ 'pb-12': !hasPlus }"
data-overlayscrollbars-initialize
>
<OnboardingChecklist
@create-instance="installationModal?.show()"
@login-minecraft="accounts?.login()"
@login-modrinth="signIn"
/>
<div id="sidebar-teleport-target" class="sidebar-teleport-content"></div>
<div class="sidebar-default-content" :class="{ 'sidebar-enabled': sidebarVisible }">
<div class="p-4 border-0 border-b-[1px] border-[--brand-gradient-border] border-solid">
<div
v-show="hasLoggedIntoMinecraft"
class="p-4 border-0 border-b-[1px] border-[--brand-gradient-border] border-solid"
>
<h3 class="text-base text-primary font-medium m-0">Playing as</h3>
<suspense>
<AccountsCard ref="accounts" />
</suspense>
</div>
<div class="p-4 border-0 border-b-[1px] border-[--brand-gradient-border] border-solid">
<div
v-show="showFriendsList"
class="p-4 border-0 border-b-[1px] border-[--brand-gradient-border] border-solid"
>
<suspense>
<FriendsList :credentials="credentials" :sign-in="() => requestSignIn()" />
</suspense>
Expand Down
3 changes: 3 additions & 0 deletions apps/app-frontend/src/assets/icons/instance-file.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading