Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
99 commits
Select commit Hold shift + click to select a range
d324768
feat: base content card component
IMB11 Jan 16, 2026
b60127f
fix: tooltips + colors
IMB11 Jan 16, 2026
fd23751
feat: fix orgs
IMB11 Jan 16, 2026
5f55f53
feat: base content tab internals rewrite
IMB11 Jan 16, 2026
a27ae0d
feat: fix invalidmodal
IMB11 Jan 18, 2026
513e711
feat: add ContentModpackCard
IMB11 Jan 19, 2026
caa2bbc
fix: extract types
IMB11 Jan 19, 2026
01e2162
draft: layout
IMB11 Jan 19, 2026
dd663d6
feat: unlink modal
IMB11 Jan 19, 2026
1beb10b
feat: impl content tab
IMB11 Jan 19, 2026
92c21bc
fix: lint
IMB11 Jan 19, 2026
556bdc8
fix: toggling
IMB11 Jan 19, 2026
9db7dfc
temp: disable updating stuff
IMB11 Jan 19, 2026
d0a4ba9
feat: selection v-model
IMB11 Jan 19, 2026
fcdc1fd
feat: bulk selection
IMB11 Jan 19, 2026
ac6d15d
feat: mods tab rough draft
IMB11 Jan 19, 2026
c212d20
feat: use fuse.js
IMB11 Jan 20, 2026
84920e4
feat: add project combobox
tdgao Jan 19, 2026
ca6d194
clean up project combobox
tdgao Jan 19, 2026
c6c63df
feat: start install to play modal
tdgao Jan 19, 2026
e7d2f6d
fix: events
IMB11 Jan 20, 2026
c79e1cb
feat: use v-on
IMB11 Jan 20, 2026
9296c70
feat: bulk actions + fix floating action bar width
IMB11 Jan 20, 2026
fa64cf4
feat: figma alignments
IMB11 Jan 22, 2026
ce44757
feat: migrate toggle to tailwind
IMB11 Jan 22, 2026
0d02a76
fix: row borders
IMB11 Jan 22, 2026
7c1f75f
feat: disabled state
IMB11 Jan 22, 2026
40141f8
feat: virtual list impl for card table based on window scroll
IMB11 Jan 22, 2026
b3e61d2
fix: lint
IMB11 Jan 22, 2026
ec6a3d9
feat: virtualization + smaller contentcard items
IMB11 Jan 22, 2026
b0e172d
feat: use ContentCardTable + ContentCardItems
IMB11 Jan 22, 2026
65c3a2c
feat: fix gap + border issues on last elm
IMB11 Jan 22, 2026
8e25b33
feat: cleanup + use proper searching
IMB11 Jan 22, 2026
5d13fb3
fix: use TeleportOverflowMenu
IMB11 Jan 22, 2026
ecad8ca
fix: fallback to svg if src is invalid on avatar component
IMB11 Jan 22, 2026
b57716f
fix: storybook
IMB11 Jan 24, 2026
9a93997
feat: start on updater modal
IMB11 Jan 24, 2026
a5a9def
feat: finish content updater modal
IMB11 Jan 26, 2026
b6d995f
feat: i18n pass
IMB11 Jan 26, 2026
fa87ed9
feat: impl modal
IMB11 Jan 26, 2026
ecda4ab
feat(app): backend changes for content tab refactor (#5237)
IMB11 Jan 29, 2026
e030060
feat: include_changelog=false for updater modal
IMB11 Jan 29, 2026
7a54d6d
fix: hash overrides
IMB11 Jan 29, 2026
c1f8228
feat: update checking for modpack
IMB11 Jan 29, 2026
f43ff94
feat: qa
IMB11 Jan 29, 2026
4e151e5
feat: modpack content modal
IMB11 Jan 29, 2026
4b23d0f
fix: padding in table to match modals + tightness
IMB11 Jan 29, 2026
01b3a73
fix: lint
IMB11 Jan 29, 2026
df8e628
feat: delete modal
IMB11 Jan 30, 2026
5e23680
feat: fix toggle bugs
IMB11 Feb 1, 2026
1a01cf8
fix: prepr
IMB11 Feb 1, 2026
8e0b45b
Merge remote-tracking branch 'origin/main' into cal/content-tab-rewri…
IMB11 Feb 2, 2026
23fdd54
fix: duplicate messages
IMB11 Feb 2, 2026
dd5579d
qa: full width search
IMB11 Feb 3, 2026
c422ea9
qa: use bg-surface-1.5
IMB11 Feb 3, 2026
9fe30d7
qa: animation for filter pills
IMB11 Feb 3, 2026
dc035fb
qa: standardize hover colors
IMB11 Feb 3, 2026
29c7a14
fix: border-[1px] is border
IMB11 Feb 3, 2026
8cb279b
qa: mass de-select actually mass selecting
IMB11 Feb 3, 2026
93ba19a
qa: match figma designs for floating action bar
IMB11 Feb 3, 2026
051807c
Merge remote-tracking branch 'origin/main' into cal/content-tab-rewri…
IMB11 Feb 6, 2026
f235cbd
qa: modal fixes
IMB11 Feb 6, 2026
2b7f542
q: modal fixes x2
IMB11 Feb 6, 2026
9e623ba
fix: table border
IMB11 Feb 6, 2026
c738d70
qa: confirm modals
IMB11 Feb 6, 2026
91fd55f
qa: modal alignment
IMB11 Feb 6, 2026
a437d2c
qa: re-add stuck heading + dedupe logic
IMB11 Feb 6, 2026
eb31bf8
qa: dedupe virtual scrolling + remove dead components
IMB11 Feb 6, 2026
fd4b51f
qa: responsiveness for content table + link fixes
IMB11 Feb 6, 2026
54e0e63
qa: version column link, tooltips + lint fixes
IMB11 Feb 6, 2026
f13e97d
qa: instance busy protections
IMB11 Feb 6, 2026
19c1f2f
fix: installation freeze bug
IMB11 Feb 6, 2026
ecc9dd4
chore: remove old mods page
IMB11 Feb 6, 2026
0308dd8
refactor: deduplicate layout
IMB11 Feb 7, 2026
5fecbc0
chore: delete old content page(s)
IMB11 Feb 7, 2026
30e34ac
Merge branch 'main' into cal/content-tab-rewrite-hosting
IMB11 Feb 7, 2026
dd443eb
qa
IMB11 Feb 7, 2026
006ea25
qa
IMB11 Feb 7, 2026
562aeb0
qa
IMB11 Feb 7, 2026
50e9417
feat: sort btn - to iterate
IMB11 Feb 7, 2026
64f4ab8
fix: ml
IMB11 Feb 7, 2026
98e317c
feat: date added
IMB11 Feb 7, 2026
4699824
fix: lint
IMB11 Feb 7, 2026
0212f61
Merge remote-tracking branch 'origin/main' into cal/content-tab-rewri…
IMB11 Feb 7, 2026
cbbcf3c
fix: formatting.ts removal
IMB11 Feb 7, 2026
ae326bc
feat: get_dependencies_as_content_items
IMB11 Feb 10, 2026
56cc76a
qa: final QA changes
IMB11 Feb 11, 2026
3be13b8
refactor: deduplicate + polish content.rs
IMB11 Feb 11, 2026
e6cd3a8
feat: hook up content.vue with v1
IMB11 Feb 11, 2026
d8c6e2b
feat: hide v1 content api behind frontend feature flag
IMB11 Feb 11, 2026
cc528ed
fix: query keys + copy on empty state
IMB11 Feb 11, 2026
1892141
chore: i18n pass
IMB11 Feb 11, 2026
ed978de
feat: reimpl unlink + upload endpoint
IMB11 Feb 11, 2026
63d1a56
feat: use bulk endpoints v1
IMB11 Feb 11, 2026
a4093aa
fix: lint
IMB11 Feb 11, 2026
c252a2a
Merge remote-tracking branch 'origin/main' into cal/content-tab-rewri…
IMB11 Feb 11, 2026
b301790
fix: flags
IMB11 Feb 11, 2026
dd97560
fix: responsiveness via container queries
IMB11 Feb 11, 2026
e5bd244
fix: lint
IMB11 Feb 11, 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
5 changes: 3 additions & 2 deletions apps/app-frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,17 +28,18 @@
"@tauri-apps/plugin-updater": "^2.7.1",
"@tauri-apps/plugin-window-state": "^2.2.2",
"@types/three": "^0.172.0",
"intl-messageformat": "^10.7.7",
"vue-i18n": "^10.0.0",
"@vueuse/core": "^11.1.0",
"dayjs": "^1.11.10",
"floating-vue": "^5.2.2",
"fuse.js": "^6.6.2",
"intl-messageformat": "^10.7.7",
"ofetch": "^1.3.4",
"pinia": "^3.0.0",
"posthog-js": "^1.158.2",
"three": "^0.172.0",
"vite-svg-loader": "^5.1.0",
"vue": "^3.5.13",
"vue-i18n": "^10.0.0",
"vue-multiselect": "3.0.0",
"vue-router": "^4.6.0",
"vue-virtual-scroller": "v2.0.0-beta.8"
Expand Down
6 changes: 6 additions & 0 deletions apps/app-frontend/src/App.vue
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ import {
NotificationPanel,
OverflowMenu,
ProgressSpinner,
provideModalBehavior,
provideModrinthClient,
provideNotificationManager,
providePageContext,
Expand Down Expand Up @@ -128,6 +129,11 @@ providePageContext({
hierarchicalSidebarAvailable: ref(true),
showAds: ref(false),
})
provideModalBehavior({
noblur: computed(() => !themeStore.advancedRendering),
onShow: () => hide_ads_window(),
onHide: () => show_ads_window(),
})
const news = ref([])
const availableSurvey = ref(false)

Expand Down
57 changes: 46 additions & 11 deletions apps/app-frontend/src/components/ui/ExportModal.vue
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
<script setup>
import { PlusIcon, XIcon } from '@modrinth/assets'
import { Button, Checkbox, injectNotificationManager, StyledInput } from '@modrinth/ui'
import {
Button,
Checkbox,
commonMessages,
defineMessages,
injectNotificationManager,
StyledInput,
useVIntl,
} from '@modrinth/ui'
import { open } from '@tauri-apps/plugin-dialog'
import { ref } from 'vue'

Expand All @@ -9,6 +17,33 @@ import ModalWrapper from '@/components/ui/modal/ModalWrapper.vue'
import { export_profile_mrpack, get_pack_export_candidates } from '@/helpers/profile.js'

const { handleError } = injectNotificationManager()
const { formatMessage } = useVIntl()

const messages = defineMessages({
header: { id: 'app.export-modal.header', defaultMessage: 'Export modpack' },
modpackNameLabel: { id: 'app.export-modal.modpack-name-label', defaultMessage: 'Modpack Name' },
modpackNamePlaceholder: {
id: 'app.export-modal.modpack-name-placeholder',
defaultMessage: 'Modpack name',
},
versionNumberLabel: {
id: 'app.export-modal.version-number-label',
defaultMessage: 'Version number',
},
versionNumberPlaceholder: {
id: 'app.export-modal.version-number-placeholder',
defaultMessage: '1.0.0',
},
descriptionPlaceholder: {
id: 'app.export-modal.description-placeholder',
defaultMessage: 'Enter modpack description...',
},
selectFilesLabel: {
id: 'app.export-modal.select-files-label',
defaultMessage: 'Select files and folders to include in pack',
},
exportButton: { id: 'app.export-modal.export-button', defaultMessage: 'Export' },
})

const props = defineProps({
instance: {
Expand Down Expand Up @@ -106,44 +141,44 @@ const exportPack = async () => {
</script>

<template>
<ModalWrapper ref="exportModal" header="Export modpack">
<ModalWrapper ref="exportModal" :header="formatMessage(messages.header)">
<div class="modal-body">
<div class="labeled_input">
<p>Modpack Name</p>
<p>{{ formatMessage(messages.modpackNameLabel) }}</p>
<StyledInput
v-model="nameInput"
:icon="PackageIcon"
type="text"
placeholder="Modpack name"
:placeholder="formatMessage(messages.modpackNamePlaceholder)"
clearable
/>
</div>
<div class="labeled_input">
<p>Version number</p>
<p>{{ formatMessage(messages.versionNumberLabel) }}</p>
<StyledInput
v-model="versionInput"
:icon="VersionIcon"
type="text"
placeholder="1.0.0"
:placeholder="formatMessage(messages.versionNumberPlaceholder)"
clearable
/>
</div>
<div class="adjacent-input">
<div class="labeled_input">
<p>Description</p>
<p>{{ formatMessage(commonMessages.descriptionLabel) }}</p>

<StyledInput
v-model="exportDescription"
multiline
placeholder="Enter modpack description..."
:placeholder="formatMessage(messages.descriptionPlaceholder)"
/>
</div>
</div>

<div class="table">
<div class="table-head">
<div class="table-cell row-wise">
Select files and folders to include in pack
{{ formatMessage(messages.selectFilesLabel) }}
<Button
class="sleek-primary collapsed-button"
icon-only
Expand Down Expand Up @@ -202,11 +237,11 @@ const exportPack = async () => {
<div class="button-row push-right">
<Button @click="exportModal.hide">
<XIcon />
Cancel
{{ formatMessage(commonMessages.cancelButton) }}
</Button>
<Button color="primary" @click="exportPack">
<PackageIcon />
Export
{{ formatMessage(messages.exportButton) }}
</Button>
</div>
</div>
Expand Down
Loading