feat: added version to changelog

This commit is contained in:
dvelo 2024-09-10 17:45:03 -05:00
parent 5699da4dc4
commit 7059a47ec0
11 changed files with 151 additions and 68 deletions

@ -12,6 +12,7 @@
"dependencies": { "dependencies": {
"arguments-parser": "^3.2.1", "arguments-parser": "^3.2.1",
"chalk": "^5.3.0", "chalk": "^5.3.0",
"cron": "^3.1.7",
"dotenv": "^16.4.5", "dotenv": "^16.4.5",
"mongodb": "^6.8.0" "mongodb": "^6.8.0"
}, },

@ -116,21 +116,12 @@ async function periodicCronJob() {
date: new Date(), date: new Date(),
}); });
process.stdout.clearLine(0); console.log(
process.stdout.cursorTo(0); Date.now() + "[CRON] " + INFO + (y + "/" + mh.servers.length),
process.stdout.write(
"[CRON] " +
INFO +
" Remaining servers: " +
(y + "/" + mh.servers.length),
); );
y++; y++;
if (y == mh.servers.length) { if (y == mh.servers.length) {
process.stdout.clearLine(0); console.log(Date.now() + "[CRON] " + SUCCESS + "Done!");
process.stdout.cursorTo(0);
process.stdout.write(
"[CRON] " + SUCCESS + " Finished! Closing MongoDB connection.",
);
return; return;
} }

@ -9,6 +9,11 @@
dependencies: dependencies:
sparse-bitfield "^3.0.3" sparse-bitfield "^3.0.3"
"@types/luxon@~3.4.0":
version "3.4.2"
resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-3.4.2.tgz#e4fc7214a420173cea47739c33cdf10874694db7"
integrity sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==
"@types/webidl-conversions@*": "@types/webidl-conversions@*":
version "7.0.3" version "7.0.3"
resolved "https://registry.yarnpkg.com/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz#1306dbfa53768bcbcfc95a1c8cde367975581859" resolved "https://registry.yarnpkg.com/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz#1306dbfa53768bcbcfc95a1c8cde367975581859"
@ -65,6 +70,14 @@ color-name@~1.1.4:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
cron@^3.1.7:
version "3.1.7"
resolved "https://registry.yarnpkg.com/cron/-/cron-3.1.7.tgz#3423d618ba625e78458fff8cb67001672d49ba0d"
integrity sha512-tlBg7ARsAMQLzgwqVxy8AZl/qlTc5nibqYwtNGoCrd+cV+ugI+tvZC1oT/8dFH8W455YrywGykx/KMmAqOr7Jw==
dependencies:
"@types/luxon" "~3.4.0"
luxon "~3.4.0"
dotenv@^16.4.5: dotenv@^16.4.5:
version "16.4.5" version "16.4.5"
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f"
@ -75,6 +88,11 @@ has-flag@^4.0.0:
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
luxon@~3.4.0:
version "3.4.4"
resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.4.4.tgz#cf20dc27dc532ba41a169c43fdcc0063601577af"
integrity sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==
memory-pager@^1.0.2: memory-pager@^1.0.2:
version "1.5.0" version "1.5.0"
resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5" resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5"

@ -0,0 +1,10 @@
---
title: "Achievement Collection"
---
# Achievements
Achievements are a page that every server gets which contains certain requirements which could be embedded in an servers history.
<Separator/>
Achievements are *not* collected instantly, and are actually collected every 12 hours. (this is not timezone dependent) There are currently 5 possible achievements to get, ranging from easiest to hardest.

@ -1,6 +1,6 @@
{ {
"name": "mh-stats", "name": "mh-stats",
"version": "1.1.0", "version": "1.3.0",
"private": true, "private": true,
"packageManager": "yarn@1.22.22", "packageManager": "yarn@1.22.22",
"scripts": { "scripts": {

@ -31,7 +31,11 @@ export function SLCustomize() {
setUsePaddingOnSides( setUsePaddingOnSides(
(user?.publicMetadata.srv as boolean | undefined) || false (user?.publicMetadata.srv as boolean | undefined) || false
); );
}); }, [
user?.publicMetadata.srv,
user?.publicMetadata.pad,
user?.publicMetadata.ipr,
]);
const handleSubmit = (e: React.FormEvent) => { const handleSubmit = (e: React.FormEvent) => {
e.preventDefault(); e.preventDefault();
@ -105,7 +109,20 @@ export function SLCustomize() {
</Label> </Label>
</div> </div>
<p className="text-sm text-muted-foreground ml-6"> <p className="text-sm text-muted-foreground ml-6">
Better for larger screens. Better for larger screens, can look more stylish.
</p>
<div className="flex items-center space-x-2 mt-2">
<RadioGroupItem value="120" id="padding-comfortable" />
<Label htmlFor="padding-comfortable">
Very Spacious{" "}
{advanced && (
<span className="text-muted-foreground">(120px)</span>
)}
</Label>
</div>
<p className="text-sm text-muted-foreground ml-6">
When information needs to be crunched in-between, recommended
for larger screens only.
</p> </p>
</RadioGroup> </RadioGroup>
</div> </div>

@ -853,7 +853,29 @@ export default function ServerList() {
<MenubarSub> <MenubarSub>
<MenubarSubTrigger>Grid</MenubarSubTrigger> <MenubarSubTrigger>Grid</MenubarSubTrigger>
<MenubarSubContent> <MenubarSubContent>
<MenubarRadioGroup value={ipr} onValueChange={setIPR}> <MenubarRadioGroup
value={ipr}
onValueChange={(v) => {
if (am)
toast(
<span>
These settings will not change over reloads
because you have account specific options enabled
<Button
variant="link"
className="p-0 m-0"
onClick={() =>
router.push("/account/settings/options")
}
>
Change your preferences
</Button>
</span>,
{ icon: "⚠️" }
);
setIPR(v);
}}
>
<MenubarRadioItem value="4"> <MenubarRadioItem value="4">
4 items per row 4 items per row
</MenubarRadioItem> </MenubarRadioItem>

@ -38,7 +38,7 @@ export default function AchievementList({ server }: { server: string }) {
<div> <div>
<span> <span>
Achievements are earned automatically when the server is online. See{" "} Achievements are earned automatically when the server is online. See{" "}
<A alt="Achievement collection">Special:Root</A> <A alt="Achievement collection">Docs:Advanced/Achievements</A>
</span> </span>
{achievements {achievements
.filter( .filter(

@ -10,9 +10,21 @@ export default function A({
alt: string | ReactNode; alt: string | ReactNode;
}) { }) {
return ( return (
<NextLink href={pageFind(children)}> <NextLink
{children.startsWith("Docs:") && <Book />} href={pageFind(children || "")}
className="no-underline transition duration-300 hover:underline "
title={children}
>
{(children || "").startsWith("Docs:") && (
<Book size={16} className="mr-[2px] inline-flex" />
)}
{(children || "").startsWith("Wiki:") && (
<NotebookText size={14} className="mr-[2px] mb-[3px] inline-flex" />
)}
{alt} {alt}
{(children || "").startsWith("https") && (
<ExternalLink size={12} className="ml-[2px] mb-[3px] inline-flex" />
)}
</NextLink> </NextLink>
); );
} }
@ -28,6 +40,7 @@ export function ALegacy({
<NextLink <NextLink
href={pageFind(href || "")} href={pageFind(href || "")}
className="no-underline transition duration-300 hover:underline " className="no-underline transition duration-300 hover:underline "
title={href}
> >
{(href || "").startsWith("Docs:") && ( {(href || "").startsWith("Docs:") && (
<Book size={16} className="mr-[2px] inline-flex" /> <Book size={16} className="mr-[2px] inline-flex" />
@ -45,7 +58,7 @@ export function ALegacy({
export const pageFind = (text: string) => { export const pageFind = (text: string) => {
if (text.startsWith("Docs:")) { if (text.startsWith("Docs:")) {
return "/docs/" + text.substring(5); return "/docs/" + text.substring(5).toLowerCase();
} }
if (text === "Special:Root") return "/"; if (text === "Special:Root") return "/";
if (text === "Special:Preferences") return "/account/settings"; if (text === "Special:Preferences") return "/account/settings";

@ -1,52 +1,57 @@
export const allFolders: (DocsFolder | Docs)[] = [ export const allFolders: (DocsFolder | Docs)[] = [
{ {
title: "Getting Started", title: "Getting Started",
url: "/docs/getting-started", url: "/docs/getting-started",
}, },
{ {
title: "Reading", title: "Server List",
url: "/docs/reading", url: "/",
}, },
{ {
name: "Guides", title: "Reading",
docs: [ url: "/docs/reading",
{ },
title: "Linking", {
url: "/docs/guides/linking", name: "Guides",
}, docs: [
{ {
title: "Owning a Server", title: "Linking",
url: "/docs/guides/owning-a-server", url: "/docs/guides/linking",
}, },
{ {
title: "Server Customization", title: "Owning a Server",
url: "/docs/guides/customization", url: "/docs/guides/owning-a-server",
}, },
{ title: "Reporting a server", url: "/docs/guides/reporting-server" }, {
], title: "Server Customization",
}, url: "/docs/guides/customization",
{ },
name: "Advanced", { title: "Reporting a server", url: "/docs/guides/reporting-server" },
docs: [ ],
{ title: "Tech Stack", url: "/docs/advanced/tech-stack" }, },
{ title: "Using the Command-bar", url: "/docs/advanced/command-bar" }, {
{ title: "Tips with external servers", url: "/docs/advanced/external" }, name: "Advanced",
], docs: [
}, { title: "Tech Stack", url: "/docs/advanced/tech-stack" },
{ { title: "Using the Command-bar", url: "/docs/advanced/command-bar" },
name: "Legal", { title: "Tips with external servers", url: "/docs/advanced/external" },
docs: [ { title: "Achievements", url: "/docs/advanced/achievements" },
{ title: "ECA Agreement", url: "/docs/legal/external-content-agreement" }, ],
], },
}, {
name: "Legal",
docs: [
{ title: "ECA Agreement", url: "/docs/legal/external-content-agreement" },
],
},
]; ];
export type Docs = { export type Docs = {
title: string; title: string;
url: string; url: string;
}; };
export type DocsFolder = { export type DocsFolder = {
name: string; name: string;
docs: Array<Docs>; docs: Array<Docs>;
}; };

@ -5,7 +5,7 @@ import { Separator } from "../components/ui/separator";
import { Button } from "../components/ui/button"; import { Button } from "../components/ui/button";
import confetti from "canvas-confetti"; import confetti from "canvas-confetti";
export const version = "1.2.5"; export const version = "1.3";
const User = ({ user }: { user: string }) => ( const User = ({ user }: { user: string }) => (
<span className="cursor-pointer bg-[rgba(255,165,0,0.25);] rounded p-[2.5px]"> <span className="cursor-pointer bg-[rgba(255,165,0,0.25);] rounded p-[2.5px]">
@ -130,16 +130,21 @@ export const Changelog = () => {
<br /> <br />
<div> <div>
<strong className="flex items-center"> <strong className="flex items-center">
Version 1.2.0 (September 4th 2024) Version 1.3.0 (September 9th 2024)
</strong> </strong>
<ul> <ul>
<li> <li>
Removed sorting system in-favor of leaderboards coming soon :eyes: <A alt="New documentation linking">Docs:Reading</A>
</li> </li>
<li>
Achievements are here! See more at{" "}
<A alt="here">Docs:Advanced/Achievements</A>
</li>
<li> Finally fixed Cron actions for the final time</li>
<li> Overhauled account preferences</li>
</ul> </ul>
</div> </div>
<br /> <br />
<br />
<div> <div>
<strong className="flex items-center"> <strong className="flex items-center">
Version 1.2.0 (September 3rd 2024) Version 1.2.0 (September 3rd 2024)
@ -365,6 +370,7 @@ import type { SVGProps } from "react";
import Marquee from "@/components/effects/marquee"; import Marquee from "@/components/effects/marquee";
import { useRouter } from "@/lib/useRouter"; import { useRouter } from "@/lib/useRouter";
import { BookIcon } from "lucide-react"; import { BookIcon } from "lucide-react";
import A from "@/components/misc/Link";
const Discord = (props: SVGProps<SVGSVGElement>) => ( const Discord = (props: SVGProps<SVGSVGElement>) => (
<svg <svg
viewBox="0 0 256 199" viewBox="0 0 256 199"