From cade2c182cf81d68fec4ca5c523b93c02037600e Mon Sep 17 00:00:00 2001 From: Prospector <6166773+Prospector@users.noreply.github.com> Date: Tue, 11 Feb 2025 08:50:27 -0800 Subject: [PATCH 1/5] Add changelog page to website (#3242) * Add changelog page to website * Add pages for individual changelog entries that can be linked to * Handle first case for individual page * Add some more changelog entries, improve some spacing --- apps/frontend/src/components/ui/NavTabs.vue | 9 +- .../pages/news/changelog/[product]/[date].vue | 86 ++++++++++ .../src/pages/news/changelog/index.vue | 97 ++++++++++++ .../components/changelog/ChangelogEntry.vue | 149 ++++++++++++++++++ packages/ui/src/components/index.ts | 3 + packages/ui/src/locales/en-US/index.json | 12 ++ packages/utils/changelog.ts | 132 ++++++++++++++++ packages/utils/index.ts | 1 + 8 files changed, 487 insertions(+), 2 deletions(-) create mode 100644 apps/frontend/src/pages/news/changelog/[product]/[date].vue create mode 100644 apps/frontend/src/pages/news/changelog/index.vue create mode 100644 packages/ui/src/components/changelog/ChangelogEntry.vue create mode 100644 packages/utils/changelog.ts diff --git a/apps/frontend/src/components/ui/NavTabs.vue b/apps/frontend/src/components/ui/NavTabs.vue index ab8ef5b7..629b47f5 100644 --- a/apps/frontend/src/components/ui/NavTabs.vue +++ b/apps/frontend/src/components/ui/NavTabs.vue @@ -76,7 +76,12 @@ function pickLink() { subpageSelected.value = false; for (let i = filteredLinks.value.length - 1; i >= 0; i--) { const link = filteredLinks.value[i]; - if (decodeURIComponent(route.path) === link.href) { + if (props.query) { + if (route.query[props.query] === link.href || (!route.query[props.query] && !link.href)) { + index = i; + break; + } + } else if (decodeURIComponent(route.path) === link.href) { index = i; break; } else if ( @@ -150,7 +155,7 @@ onMounted(() => { }); watch( - () => route.path, + () => [route.path, route.query], () => pickLink(), ); diff --git a/apps/frontend/src/pages/news/changelog/[product]/[date].vue b/apps/frontend/src/pages/news/changelog/[product]/[date].vue new file mode 100644 index 00000000..38bbc2fe --- /dev/null +++ b/apps/frontend/src/pages/news/changelog/[product]/[date].vue @@ -0,0 +1,86 @@ + + + + + diff --git a/apps/frontend/src/pages/news/changelog/index.vue b/apps/frontend/src/pages/news/changelog/index.vue new file mode 100644 index 00000000..702431ba --- /dev/null +++ b/apps/frontend/src/pages/news/changelog/index.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/packages/ui/src/components/changelog/ChangelogEntry.vue b/packages/ui/src/components/changelog/ChangelogEntry.vue new file mode 100644 index 00000000..3057c356 --- /dev/null +++ b/packages/ui/src/components/changelog/ChangelogEntry.vue @@ -0,0 +1,149 @@ + + + + diff --git a/packages/ui/src/components/index.ts b/packages/ui/src/components/index.ts index 00b01655..ee552fe6 100644 --- a/packages/ui/src/components/index.ts +++ b/packages/ui/src/components/index.ts @@ -40,6 +40,9 @@ export { default as Toggle } from './base/Toggle.vue' export { default as AnimatedLogo } from './brand/AnimatedLogo.vue' export { default as TextLogo } from './brand/TextLogo.vue' +// Changelog +export { default as ChangelogEntry } from './changelog/ChangelogEntry.vue' + // Charts export { default as Chart } from './chart/Chart.vue' export { default as CompactChart } from './chart/CompactChart.vue' diff --git a/packages/ui/src/locales/en-US/index.json b/packages/ui/src/locales/en-US/index.json index f6529b8c..a3bca1c3 100644 --- a/packages/ui/src/locales/en-US/index.json +++ b/packages/ui/src/locales/en-US/index.json @@ -32,6 +32,18 @@ "button.upload-image": { "defaultMessage": "Upload image" }, + "changelog.product.api": { + "defaultMessage": "API" + }, + "changelog.product.app": { + "defaultMessage": "App" + }, + "changelog.product.servers": { + "defaultMessage": "Servers" + }, + "changelog.product.web": { + "defaultMessage": "Website" + }, "collection.label.private": { "defaultMessage": "Private" }, diff --git a/packages/utils/changelog.ts b/packages/utils/changelog.ts new file mode 100644 index 00000000..03ea99e0 --- /dev/null +++ b/packages/utils/changelog.ts @@ -0,0 +1,132 @@ +import dayjs from 'dayjs' + +export type Product = 'web' | 'servers' | 'api' | 'app' + +export type VersionEntry = { + date: dayjs.Dayjs + product: Product + version?: string + body: string +} + +const VERSIONS: VersionEntry[] = [ + { + date: `2025-02-11T09:00:00-09:00`, + product: 'web', + body: `### Added +- Added a changelog page to view recent changes to Modrinth.`, + }, + { + date: `2025-02-10T14:00:00-09:00`, + product: 'web', + body: `### Improvements +- The license selector in project settings has been updated to make selecting a license a clearer process. (Contributed by [Erb3](https://github.com/modrinth/code/pull/3225))`, + }, + { + date: `2025-02-10T08:00:00-09:00`, + product: 'servers', + body: `### Added +- You can now search and filter through your server's console in the Overview tab, jump to specific results to see the log in context, select them, and copy them. +- You can now drag and select any number of lines in the console, copy them. and view them formatted. +- Hide your server's \`.modrinth.gg\` custom URL using the new **Hide subdomain label** toggle in Options > Preferences. +- The Content page has been updated to make managing your server's mods and plugins easier than ever. Now, only versions that are available for your server's Minecraft version and platform are shown by default, and you can now show beta and alpha versions in the selector. +### Improvements +- The Overview page loads faster. +- The Options > Properties page loads faster. +- The server hardware graphs in the Overview page have been rewritten to improve power efficiency and fix rendering bugs. +- The modpack selector in Options > Platform now shows more information about a modpack, like its tags, downloads, and followers. +- Reinstalling your server no longer requires the browser to refresh the page in order to work properly. We now also lock more options while a server installs to prevent your server from bricking itself. +- The server console has been rewritten to implement proper batching. All performance issues with the console previously have now been fixed. +- An error state has been added in the server list if servers are unable to be fetched. +- Sorting in the Files tab is now accessible by clicking the column headers. +- Backing up a server and erasing all its data simultaneously in the Platform page now works as expected. +- Opening a platform modal, then opening another, no longer causes versions of that platform to fail to load.`, + }, + { + date: `2025-02-06T10:00:00-09:00`, + product: 'app', + version: `0.9.3`, + body: `### Improvements +- Prevent ads from being able to open additional windows. +- Fixed update checking only checking for mod updates. +- Fixed issue importing newer Prism instances. +- Fixed issue where instances get stuck "Installing" forever when the app is closed during an install. +- Minecraft profile is now updated every time the user's token is refreshed. +- Improved ability for package managers to update Modrinth App by skipping the updater at runtime with an environment variable.`, + }, + { + date: `2025-02-02T14:00:00-09:00`, + product: 'web', + body: `### Improvements +- The report form has been updated to walk you through the report process better and clarify some things like that the form is for Modrinth rules and terms violations, not for bug reports or DMCA takedowns. + +![A screenshot of the new report form on Modrinth, using Iris Shaders as an example. The title says "Report Iris Shaders to moderators". Below that, it says "Please report violations of Modrinth Rules or Terms of Use. Examples include malicious, spam, offensive, deceptive, misleading, and illegal content. This form is not for bug reports or DMCA takedowns (See our Copyright Policy)." Then, there is a form that asks "Which of Modrinth's rules is this project violating?" with many options: Spam, Reuploaded work, Inappropriate, Malicious, Name-squatting, Poor description, Invalid metadata, Other. Reuploaded work is selected. Below that, is a note in an orange box with a warning icon: "Please note that you are *not* submitting a DMCA takedown request, but rather a report of reuploaded content. If you meant to file a DMCA takedown request (which is a legal action) instead, please see our Copyright Policy." Then, it asks you to provide additional context, including links and images, with a text editor and a submit button at the bottom.](https://cdn-raw.modrinth.com/changelog/web/2025-02-02/reports.jpg)`, + }, + { + date: `2025-01-28T19:00:00-09:00`, + product: 'web', + body: `### Improvements +- The UI for analytics has been updated to make it way more useful. What was previously called "Last month" really meant "Previous 30 days". Now, many more options have been added such as: + - "This month" which refers to the current calendar month (Jan 1st - Jan 28th, currently) + - "Last month" which refers to the previous calendar month (currently, Dec 1st thru Dec 31st) + +Contributed by [IMB11](https://github.com/modrinth/code/pull/1301).`, + }, + { + date: `2025-01-10T09:00:00-09:00`, + product: 'servers', + body: `### Improvements +- The content page layout has been enhanced, now showing the file name and author of each installed item. +- You can now upload directly from the content page, instead of having to go to the Files page.`, + }, + { + date: `2025-01-10T09:00:00-09:00`, + product: 'web', + body: `### Improvements +- Tags on project pages are now clickable to view other projects with that tag (Contributed by [Neddo](https://github.com/modrinth/code/pull/3126)) +- You can now send someone a link to the download interface with a specific version and loader selected, like so: https://modrinth.com/mod/sodium?version=1.21.2&loader=quilt#download (Contributed by [AwakenedRedstone](https://github.com/modrinth/code/pull/3138)`, + }, + { + date: `2024-12-25T14:00:00-09:00`, + product: 'app', + version: `0.9.2`, + body: `### Improvements +- Prevent ads from being able to play audio.`, + }, + { + date: `2024-12-24T22:00:00-09:00`, + product: 'app', + version: `0.9.1`, + body: `### Added +- Added filter to filter projects by disabled. +- Re-added back/forward navigation buttons. +### Improvements +- Fixed environment tags missing from search. +- Fixed an issue where ads could play audio. +- Changed content enable/disable buttons to toggle switches. +- Show "install" button at all time on project cards. +- Fixed issue where cards would shrink when clicking button inside them causing click not to register. +- Made sidebar hide instantly.`, + }, + { + date: `2024-12-23T22:16:00-09:00`, + product: 'app', + version: `0.9.0`, + body: `### Improvements +- New, updated design that brings the app in-line with the website. + - A dynamic sidebar that adjusts to the most relevant content for each page, and keeps the ad in a consistent place instead of moving all around your screen. + - More organized settings interfaces that makes each option clearer and easier to find. + - Managing your content is much easier with enhanced filters for content types or checking for updates. + - Content discovery has been overhauled and now has fully-featured project pages that match the website. + - Instances now show your total play time, and will show the last time you played on the Home screen. + - The library page now gives responsive feedback as instances are installing. +- The beginnings of a Friends system. In the future, you will be able to share the instances you’re playing and invite them to servers. +- Access your most recent instances with ease with Quick Instances. +- Fixed “Database is locked” errors on devices with slow disks. +- Fixed a few edge cases where API downtime could lead to an invalid state.`, + }, +].map((x) => ({ ...x, date: dayjs(x.date) }) as VersionEntry) + +export function getChangelog() { + return VERSIONS +} diff --git a/packages/utils/index.ts b/packages/utils/index.ts index 7e2bfa3d..8cac2395 100644 --- a/packages/utils/index.ts +++ b/packages/utils/index.ts @@ -1,4 +1,5 @@ export * from './billing' +export * from './changelog' export * from './highlight' export * from './licenses' export * from './parse' From 0ac49d846fbba35185ecfcd9dad4cbeae4a9003f Mon Sep 17 00:00:00 2001 From: Prospector <6166773+Prospector@users.noreply.github.com> Date: Tue, 11 Feb 2025 11:07:23 -0800 Subject: [PATCH 2/5] Add project issues link to report form if it exists (#3215) --- apps/frontend/src/locales/en-US/index.json | 3 +++ apps/frontend/src/pages/report.vue | 23 +++++++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/apps/frontend/src/locales/en-US/index.json b/apps/frontend/src/locales/en-US/index.json index df10535b..773dc25a 100644 --- a/apps/frontend/src/locales/en-US/index.json +++ b/apps/frontend/src/locales/en-US/index.json @@ -521,6 +521,9 @@ "report.not-for.bug-reports": { "message": "Bug reports" }, + "report.not-for.bug-reports.description": { + "message": "You can report bugs to their issue tracker." + }, "report.not-for.dmca": { "message": "DMCA takedowns" }, diff --git a/apps/frontend/src/pages/report.vue b/apps/frontend/src/pages/report.vue index e44a8a9c..b41f8ac8 100644 --- a/apps/frontend/src/pages/report.vue +++ b/apps/frontend/src/pages/report.vue @@ -63,7 +63,20 @@

{{ formatMessage(messages.formNotFor) }}

- {{ formatMessage(messages.bugReports) }} + +
+ {{ formatMessage(messages.bugReports) }} + + + + + +
@@ -238,6 +251,7 @@ import { AutoLink, } from "@modrinth/ui"; import { + ExternalIcon, LeftArrowIcon, RightArrowIcon, CheckIcon, @@ -289,6 +303,7 @@ const itemIcon = ref(); const itemName = ref(); const itemLink = ref(); const itemId = ref(); +const itemIssueTracker = ref(); const reports = ref([]); const existingReport = computed(() => @@ -319,6 +334,7 @@ async function fetchItem() { itemName.value = undefined; itemLink.value = undefined; itemId.value = undefined; + itemIssueTracker.value = undefined; try { if (reportItem.value === "project") { const project = (await useBaseFetch(`project/${reportItemID.value}`)) as Project; @@ -328,6 +344,7 @@ async function fetchItem() { itemName.value = project.title; itemLink.value = `/project/${project.id}`; itemId.value = project.id; + itemIssueTracker.value = project.issues_url; } else if (reportItem.value === "version") { const version = (await useBaseFetch(`version/${reportItemID.value}`)) as Version; currentVersion.value = version; @@ -540,6 +557,10 @@ const messages = defineMessages({ id: "report.not-for.bug-reports", defaultMessage: "Bug reports", }, + bugReportsDescription: { + id: "report.not-for.bug-reports.description", + defaultMessage: "You can report bugs to their issue tracker.", + }, dmcaTakedown: { id: "report.not-for.dmca", defaultMessage: "DMCA takedowns", From 7183b3d76132df1ccf28639d650aac186f7dad5f Mon Sep 17 00:00:00 2001 From: Prospector <6166773+Prospector@users.noreply.github.com> Date: Tue, 11 Feb 2025 12:46:34 -0800 Subject: [PATCH 3/5] Fix some changelog issues, and broader mobile padding issues (#3246) --- apps/frontend/src/layouts/default.vue | 4 - apps/frontend/src/pages/news/changelog.vue | 16 ++++ .../pages/news/changelog/[product]/[date].vue | 13 +-- .../src/pages/news/changelog/index.vue | 79 ++++++++----------- apps/frontend/src/pages/report.vue | 2 +- .../components/changelog/ChangelogEntry.vue | 47 ++++++----- packages/utils/changelog.ts | 11 ++- 7 files changed, 92 insertions(+), 80 deletions(-) create mode 100644 apps/frontend/src/pages/news/changelog.vue diff --git a/apps/frontend/src/layouts/default.vue b/apps/frontend/src/layouts/default.vue index 25c97736..84426eba 100644 --- a/apps/frontend/src/layouts/default.vue +++ b/apps/frontend/src/layouts/default.vue @@ -1444,10 +1444,6 @@ function hideStagingBanner() { .mobile-navigation { display: flex; } - - main { - padding-top: 1.5rem; - } } diff --git a/apps/frontend/src/pages/news/changelog.vue b/apps/frontend/src/pages/news/changelog.vue new file mode 100644 index 00000000..9cfb0802 --- /dev/null +++ b/apps/frontend/src/pages/news/changelog.vue @@ -0,0 +1,16 @@ + + + diff --git a/apps/frontend/src/pages/news/changelog/[product]/[date].vue b/apps/frontend/src/pages/news/changelog/[product]/[date].vue index 38bbc2fe..136a0951 100644 --- a/apps/frontend/src/pages/news/changelog/[product]/[date].vue +++ b/apps/frontend/src/pages/news/changelog/[product]/[date].vue @@ -32,10 +32,10 @@ if (!changelogEntry.value) { diff --git a/apps/frontend/src/pages/servers/index.vue b/apps/frontend/src/pages/servers/index.vue index 112f75b2..3bf8bf17 100644 --- a/apps/frontend/src/pages/servers/index.vue +++ b/apps/frontend/src/pages/servers/index.vue @@ -494,6 +494,97 @@
+
+
+
+
+
+
+
+ Server Locations +
+

+ Coast-to-Coast Coverage +

+
+ +
+
+
+
+ + + + +
+

+ US Coverage +

+
+

+ With strategically placed servers in New York, Los Angeles, Seattle, and Miami, we + ensure low latency connections for players across North America. Each location is + equipped with high-performance hardware and DDoS protection. +

+
+ +
+
+
+ + + + + + +
+

+ Global Expansion +

+
+

+ We're expanding to Europe and Asia-Pacific regions soon, bringing Modrinth's + seamless hosting experience worldwide. Join our Discord to stay updated on new + region launches. +

+
+
+
+ +
+
+
+
- Servers are currently US only, in New York, Los Angeles, Seattle, and Miami. More - regions coming soon! - -