mirror of
https://github.com/DeveloLongScript/MHSF.git
synced 2026-05-07 14:54:58 -05:00
feat: added version to changelog
This commit is contained in:
parent
5699da4dc4
commit
7059a47ec0
@ -12,6 +12,7 @@
|
||||
"dependencies": {
|
||||
"arguments-parser": "^3.2.1",
|
||||
"chalk": "^5.3.0",
|
||||
"cron": "^3.1.7",
|
||||
"dotenv": "^16.4.5",
|
||||
"mongodb": "^6.8.0"
|
||||
},
|
||||
|
||||
@ -116,21 +116,12 @@ async function periodicCronJob() {
|
||||
date: new Date(),
|
||||
});
|
||||
|
||||
process.stdout.clearLine(0);
|
||||
process.stdout.cursorTo(0);
|
||||
process.stdout.write(
|
||||
"[CRON] " +
|
||||
INFO +
|
||||
" Remaining servers: " +
|
||||
(y + "/" + mh.servers.length),
|
||||
console.log(
|
||||
Date.now() + "[CRON] " + INFO + (y + "/" + mh.servers.length),
|
||||
);
|
||||
y++;
|
||||
if (y == mh.servers.length) {
|
||||
process.stdout.clearLine(0);
|
||||
process.stdout.cursorTo(0);
|
||||
process.stdout.write(
|
||||
"[CRON] " + SUCCESS + " Finished! Closing MongoDB connection.",
|
||||
);
|
||||
console.log(Date.now() + "[CRON] " + SUCCESS + "Done!");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -9,6 +9,11 @@
|
||||
dependencies:
|
||||
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@*":
|
||||
version "7.0.3"
|
||||
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"
|
||||
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:
|
||||
version "16.4.5"
|
||||
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"
|
||||
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:
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5"
|
||||
|
||||
10
docs/advanced/achievements.mdx
Normal file
10
docs/advanced/achievements.mdx
Normal file
@ -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",
|
||||
"version": "1.1.0",
|
||||
"version": "1.3.0",
|
||||
"private": true,
|
||||
"packageManager": "yarn@1.22.22",
|
||||
"scripts": {
|
||||
|
||||
@ -31,7 +31,11 @@ export function SLCustomize() {
|
||||
setUsePaddingOnSides(
|
||||
(user?.publicMetadata.srv as boolean | undefined) || false
|
||||
);
|
||||
});
|
||||
}, [
|
||||
user?.publicMetadata.srv,
|
||||
user?.publicMetadata.pad,
|
||||
user?.publicMetadata.ipr,
|
||||
]);
|
||||
|
||||
const handleSubmit = (e: React.FormEvent) => {
|
||||
e.preventDefault();
|
||||
@ -105,7 +109,20 @@ export function SLCustomize() {
|
||||
</Label>
|
||||
</div>
|
||||
<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>
|
||||
</RadioGroup>
|
||||
</div>
|
||||
|
||||
@ -853,7 +853,29 @@ export default function ServerList() {
|
||||
<MenubarSub>
|
||||
<MenubarSubTrigger>Grid</MenubarSubTrigger>
|
||||
<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">
|
||||
4 items per row
|
||||
</MenubarRadioItem>
|
||||
|
||||
@ -38,7 +38,7 @@ export default function AchievementList({ server }: { server: string }) {
|
||||
<div>
|
||||
<span>
|
||||
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>
|
||||
{achievements
|
||||
.filter(
|
||||
|
||||
@ -10,9 +10,21 @@ export default function A({
|
||||
alt: string | ReactNode;
|
||||
}) {
|
||||
return (
|
||||
<NextLink href={pageFind(children)}>
|
||||
{children.startsWith("Docs:") && <Book />}
|
||||
<NextLink
|
||||
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}
|
||||
{(children || "").startsWith("https") && (
|
||||
<ExternalLink size={12} className="ml-[2px] mb-[3px] inline-flex" />
|
||||
)}
|
||||
</NextLink>
|
||||
);
|
||||
}
|
||||
@ -28,6 +40,7 @@ export function ALegacy({
|
||||
<NextLink
|
||||
href={pageFind(href || "")}
|
||||
className="no-underline transition duration-300 hover:underline "
|
||||
title={href}
|
||||
>
|
||||
{(href || "").startsWith("Docs:") && (
|
||||
<Book size={16} className="mr-[2px] inline-flex" />
|
||||
@ -45,7 +58,7 @@ export function ALegacy({
|
||||
|
||||
export const pageFind = (text: string) => {
|
||||
if (text.startsWith("Docs:")) {
|
||||
return "/docs/" + text.substring(5);
|
||||
return "/docs/" + text.substring(5).toLowerCase();
|
||||
}
|
||||
if (text === "Special:Root") return "/";
|
||||
if (text === "Special:Preferences") return "/account/settings";
|
||||
|
||||
@ -1,52 +1,57 @@
|
||||
export const allFolders: (DocsFolder | Docs)[] = [
|
||||
{
|
||||
title: "Getting Started",
|
||||
url: "/docs/getting-started",
|
||||
},
|
||||
{
|
||||
title: "Reading",
|
||||
url: "/docs/reading",
|
||||
},
|
||||
{
|
||||
name: "Guides",
|
||||
docs: [
|
||||
{
|
||||
title: "Linking",
|
||||
url: "/docs/guides/linking",
|
||||
},
|
||||
{
|
||||
title: "Owning a Server",
|
||||
url: "/docs/guides/owning-a-server",
|
||||
},
|
||||
{
|
||||
title: "Server Customization",
|
||||
url: "/docs/guides/customization",
|
||||
},
|
||||
{ title: "Reporting a server", url: "/docs/guides/reporting-server" },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "Advanced",
|
||||
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: "Legal",
|
||||
docs: [
|
||||
{ title: "ECA Agreement", url: "/docs/legal/external-content-agreement" },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Getting Started",
|
||||
url: "/docs/getting-started",
|
||||
},
|
||||
{
|
||||
title: "Server List",
|
||||
url: "/",
|
||||
},
|
||||
{
|
||||
title: "Reading",
|
||||
url: "/docs/reading",
|
||||
},
|
||||
{
|
||||
name: "Guides",
|
||||
docs: [
|
||||
{
|
||||
title: "Linking",
|
||||
url: "/docs/guides/linking",
|
||||
},
|
||||
{
|
||||
title: "Owning a Server",
|
||||
url: "/docs/guides/owning-a-server",
|
||||
},
|
||||
{
|
||||
title: "Server Customization",
|
||||
url: "/docs/guides/customization",
|
||||
},
|
||||
{ title: "Reporting a server", url: "/docs/guides/reporting-server" },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "Advanced",
|
||||
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" },
|
||||
{ title: "Achievements", url: "/docs/advanced/achievements" },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "Legal",
|
||||
docs: [
|
||||
{ title: "ECA Agreement", url: "/docs/legal/external-content-agreement" },
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
export type Docs = {
|
||||
title: string;
|
||||
url: string;
|
||||
title: string;
|
||||
url: string;
|
||||
};
|
||||
|
||||
export type DocsFolder = {
|
||||
name: string;
|
||||
docs: Array<Docs>;
|
||||
name: string;
|
||||
docs: Array<Docs>;
|
||||
};
|
||||
|
||||
@ -5,7 +5,7 @@ import { Separator } from "../components/ui/separator";
|
||||
import { Button } from "../components/ui/button";
|
||||
import confetti from "canvas-confetti";
|
||||
|
||||
export const version = "1.2.5";
|
||||
export const version = "1.3";
|
||||
|
||||
const User = ({ user }: { user: string }) => (
|
||||
<span className="cursor-pointer bg-[rgba(255,165,0,0.25);] rounded p-[2.5px]">
|
||||
@ -130,16 +130,21 @@ export const Changelog = () => {
|
||||
<br />
|
||||
<div>
|
||||
<strong className="flex items-center">
|
||||
Version 1.2.0 (September 4th 2024)
|
||||
Version 1.3.0 (September 9th 2024)
|
||||
</strong>
|
||||
<ul>
|
||||
<li>
|
||||
• Removed sorting system in-favor of leaderboards coming soon :eyes:
|
||||
• <A alt="New documentation linking">Docs:Reading</A>
|
||||
</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>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
<div>
|
||||
<strong className="flex items-center">
|
||||
Version 1.2.0 (September 3rd 2024)
|
||||
@ -365,6 +370,7 @@ import type { SVGProps } from "react";
|
||||
import Marquee from "@/components/effects/marquee";
|
||||
import { useRouter } from "@/lib/useRouter";
|
||||
import { BookIcon } from "lucide-react";
|
||||
import A from "@/components/misc/Link";
|
||||
const Discord = (props: SVGProps<SVGSVGElement>) => (
|
||||
<svg
|
||||
viewBox="0 0 256 199"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user