From 56bcc3f952471aeec266fa7210b9e2ac56808434 Mon Sep 17 00:00:00 2001
From: ErrorCraft <51973682+ErrorCraft@users.noreply.github.com>
Date: Sun, 26 Oct 2025 15:24:38 +0100
Subject: [PATCH 1/4] Group each version per release in the version bar
---
src/app/java/changelog/layout.tsx | 97 +++++++++++--------
.../java/release-version-link-set.tsx | 55 +++++++++++
src/components/java/version-link.tsx | 28 +++---
src/styles/arrow_down.svg | 3 +
src/styles/arrow_up.svg | 3 +
src/styles/game-versions.css | 47 +++++++++
6 files changed, 178 insertions(+), 55 deletions(-)
create mode 100644 src/components/java/release-version-link-set.tsx
create mode 100644 src/styles/arrow_down.svg
create mode 100644 src/styles/arrow_up.svg
create mode 100644 src/styles/game-versions.css
diff --git a/src/app/java/changelog/layout.tsx b/src/app/java/changelog/layout.tsx
index 430bbb5..835ec6b 100644
--- a/src/app/java/changelog/layout.tsx
+++ b/src/app/java/changelog/layout.tsx
@@ -3,7 +3,6 @@ import {
getVersionManifest,
type VersionManifest,
} from "~/server/java/versions";
-import VersionLink from "~/components/java/version-link";
import { Alert, AlertDescription, AlertTitle } from "~/components/ui/alert";
import {
ActivityLogIcon,
@@ -19,9 +18,11 @@ import {
SheetTrigger,
} from "~/components/ui/sheet";
import { Button } from "~/components/ui/button";
+import ReleaseVersionLinkSet from "~/components/java/release-version-link-set";
+import "~/styles/game-versions.css";
export default async function ChangelogLayout({
- children,
+ children
}: {
children: React.ReactNode;
}) {
@@ -64,12 +65,9 @@ export default async function ChangelogLayout({
-
+
+
+
@@ -79,12 +77,10 @@ export default async function ChangelogLayout({
className="h-page rounded-md border"
viewportClassName="overscroll-contain"
>
-
@@ -26,13 +25,13 @@ export default function ReleaseVersionLinkSet({release, type, className}: {
);
}
-function getVersion(): string {
- const prefix: string = "java/changelog/";
+function useVersion(): string {
+ const prefix = "java/changelog/";
const pathname = usePathname();
if (pathname === prefix) {
return "";
}
- let probableVersion: string = pathname.substring(prefix.length);
+ const probableVersion = pathname.substring(prefix.length);
if (probableVersion.startsWith("/")) {
return probableVersion.substring(1);
}
@@ -46,10 +45,5 @@ function containsVersion(release: ReleaseVersionEntry, version: string): boolean
if (release.name === version) {
return true;
}
- for (let nonRelease of release.nonReleaseVersions) {
- if (nonRelease.name === version) {
- return true;
- }
- }
- return false;
+ return release.nonReleaseVersions.some(nonRelease => nonRelease.name === version);
}
diff --git a/src/components/java/version-link.tsx b/src/components/java/version-link.tsx
index 745e2ce..8b2407a 100644
--- a/src/components/java/version-link.tsx
+++ b/src/components/java/version-link.tsx
@@ -12,7 +12,6 @@ import {
BASE_ASSET_URL,
} from "~/server/java/versions";
import type { ClassValue } from "clsx";
-import { VersionEntry } from "~/app/java/changelog/layout";
export default function VersionLink({
version,
@@ -57,3 +56,16 @@ export default function VersionLink({
);
}
+
+export interface VersionEntry {
+ name: string;
+ url: string;
+ title: string;
+ description: string;
+ image: { title: string; url: string; };
+}
+
+export interface ReleaseVersionEntry extends VersionEntry {
+ nonReleaseVersions: VersionEntry[];
+ isLatest: boolean;
+}
From 4ee2bd38936fbf9c667bfeb30ae3acc66aa962db Mon Sep 17 00:00:00 2001
From: ErrorCraft <51973682+ErrorCraft@users.noreply.github.com>
Date: Thu, 6 Nov 2025 02:09:17 +0100
Subject: [PATCH 3/4] Place the other props on multiple lines
---
src/components/java/release-version-link-set.tsx | 6 +++++-
src/components/java/version-link.tsx | 2 +-
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/components/java/release-version-link-set.tsx b/src/components/java/release-version-link-set.tsx
index 9a195df..5c25106 100644
--- a/src/components/java/release-version-link-set.tsx
+++ b/src/components/java/release-version-link-set.tsx
@@ -3,7 +3,11 @@
import { usePathname } from "next/navigation";
import VersionLink, { type ReleaseVersionEntry } from "./version-link";
-export default function ReleaseVersionLinkSet({release, type, className}: {
+export default function ReleaseVersionLinkSet({
+ release,
+ type,
+ className,
+}: {
release: ReleaseVersionEntry;
type: string;
className: string;
diff --git a/src/components/java/version-link.tsx b/src/components/java/version-link.tsx
index 8b2407a..24f0e95 100644
--- a/src/components/java/version-link.tsx
+++ b/src/components/java/version-link.tsx
@@ -16,7 +16,7 @@ import type { ClassValue } from "clsx";
export default function VersionLink({
version,
className = "px-3 py-1",
- selected
+ selected,
}: {
version: VersionEntry;
className?: ClassValue;
From ae7f420150fe1865abf17e79128d5da65e40031b Mon Sep 17 00:00:00 2001
From: ErrorCraft <51973682+ErrorCraft@users.noreply.github.com>
Date: Mon, 17 Nov 2025 00:51:45 +0100
Subject: [PATCH 4/4] Fix the arrows to work on all themes
---
src/styles/arrow_down.svg | 2 +-
src/styles/arrow_up.svg | 2 +-
src/styles/game-versions.css | 6 +++---
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/styles/arrow_down.svg b/src/styles/arrow_down.svg
index 6d168c4..349e67e 100644
--- a/src/styles/arrow_down.svg
+++ b/src/styles/arrow_down.svg
@@ -1,3 +1,3 @@
diff --git a/src/styles/arrow_up.svg b/src/styles/arrow_up.svg
index 7b626fb..f58a950 100644
--- a/src/styles/arrow_up.svg
+++ b/src/styles/arrow_up.svg
@@ -1,3 +1,3 @@
diff --git a/src/styles/game-versions.css b/src/styles/game-versions.css
index 5654561..c1d72ef 100644
--- a/src/styles/game-versions.css
+++ b/src/styles/game-versions.css
@@ -28,12 +28,12 @@
aspect-ratio: 1 / 1;
align-self: center;
grid-area: button;
- background-image: url("arrow_down.svg");
- background-size: cover;
+ mask-image: url("arrow_down.svg");
+ background-color: rgb(var(--ctp-subtext1));
}
input:checked + .major-version-button {
- background-image: url("arrow_up.svg");
+ mask-image: url("arrow_up.svg");
}
.major-version-body {