feat: Vollständiges Rebranding zu MiChess, Copyright Tom Misch
- Alle @chessu/ → @michess/ (Package-Namen und Imports) - Theme-Namen chessuDark/Light → michessDark/Light - Alle Display-Texte: chessu/Michess → MiChess - Autor: dotnize → Tom Misch - Copyright: Nathaniel Tampus → Tom Misch - README komplett neu (Deutsch, MiChess-spezifisch) - CONTRIBUTING.md neu - FUNDING.yml + CODE_OF_CONDUCT.md entfernt - Fork-Hinweis auf chessu bleibt im README erhalten (MIT-Pflicht) - pnpm-lock.yaml entfernt (wird beim Build neu generiert) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "@chessu/client",
|
||||
"name": "@michess/client",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
@@ -19,7 +19,7 @@
|
||||
"socket.io-client": "^4.7.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@chessu/types": "workspace:*",
|
||||
"@michess/types": "workspace:*",
|
||||
"@types/node": "^20.14.10",
|
||||
"@types/react": "^18.3.3",
|
||||
"@types/react-dom": "^18.3.0",
|
||||
|
||||
@@ -18,10 +18,10 @@ export async function generateMetadata({ params }: { params: { code: string } })
|
||||
return {
|
||||
description: `Play or watch a game with ${game.host?.name}`,
|
||||
openGraph: {
|
||||
title: "chessu",
|
||||
title: "MiChess",
|
||||
description: `Play or watch a game with ${game.host?.name}`,
|
||||
url: `https://ches.su/${game.code}`,
|
||||
siteName: "chessu",
|
||||
siteName: "MiChess",
|
||||
locale: "en_US",
|
||||
type: "website"
|
||||
},
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import ArchivedGame from "@/components/archive/ArchivedGame";
|
||||
import { fetchArchivedGame } from "@/lib/game";
|
||||
import type { Game } from "@chessu/types";
|
||||
import type { Game } from "@michess/types";
|
||||
import { notFound } from "next/navigation";
|
||||
|
||||
export async function generateMetadata({ params }: { params: { id: number } }) {
|
||||
@@ -19,10 +19,10 @@ export async function generateMetadata({ params }: { params: { id: number } }) {
|
||||
return {
|
||||
description: `Archived game: ${game.white?.name} vs ${game.black?.name}`,
|
||||
openGraph: {
|
||||
title: "chessu",
|
||||
title: "MiChess",
|
||||
description: `Archived game: ${game.white?.name} vs ${game.black?.name}`,
|
||||
url: `https://ches.su/archive/${game.id}`,
|
||||
siteName: "chessu",
|
||||
siteName: "MiChess",
|
||||
locale: "en_US",
|
||||
type: "website"
|
||||
},
|
||||
|
||||
@@ -9,12 +9,12 @@ import AuthModal from "@/components/auth/AuthModal";
|
||||
import ContextProvider from "@/context/ContextProvider";
|
||||
|
||||
export const metadata = {
|
||||
title: "Michess",
|
||||
title: "MiChess",
|
||||
description: "Schach spielen – lokal, privat, kostenlos.",
|
||||
openGraph: {
|
||||
title: "Michess",
|
||||
title: "MiChess",
|
||||
description: "Schach spielen – lokal, privat, kostenlos.",
|
||||
siteName: "Michess",
|
||||
siteName: "MiChess",
|
||||
locale: "de_DE",
|
||||
type: "website"
|
||||
},
|
||||
@@ -55,9 +55,9 @@ export default function RootLayout({ children }: { children: ReactNode }) {
|
||||
id="load-theme"
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: `if (localStorage.theme === "dark" || (!("theme" in localStorage) && window.matchMedia("(prefers-color-scheme: dark)").matches)) {
|
||||
document.documentElement.setAttribute("data-theme", "chessuDark");
|
||||
document.documentElement.setAttribute("data-theme", "michessDark");
|
||||
} else {
|
||||
document.documentElement.setAttribute("data-theme", "chessuLight");
|
||||
document.documentElement.setAttribute("data-theme", "michessLight");
|
||||
}`
|
||||
}}
|
||||
></script>
|
||||
|
||||
@@ -16,13 +16,13 @@ export async function generateMetadata({ params }: { params: { name: string } })
|
||||
};
|
||||
}
|
||||
return {
|
||||
title: `${data.name} | chessu`,
|
||||
title: `${data.name} | MiChess`,
|
||||
description: `${data.name}'s profile`,
|
||||
openGraph: {
|
||||
title: `${data.name} | chessu`,
|
||||
description: `${data.name}'s profile on chessu`,
|
||||
title: `${data.name} | MiChess`,
|
||||
description: `${data.name}'s profile on MiChess`,
|
||||
url: `https://ches.su/user/${data.name}`,
|
||||
siteName: "chessu",
|
||||
siteName: "MiChess",
|
||||
locale: "en_US",
|
||||
type: "website"
|
||||
},
|
||||
|
||||
@@ -2,11 +2,11 @@ export default function Footer() {
|
||||
return (
|
||||
<footer className="footer border-base-300 dark:border-neutral text-base-content mx-1 mt-4 w-auto grid-flow-col items-center justify-between border-t-2 p-4 md:mx-16 lg:mx-40">
|
||||
<div className="items-center">
|
||||
<p>© {new Date().getFullYear()} Michess — Dein privates Schachbrett</p>
|
||||
<p>© {new Date().getFullYear()} MiChess — Dein privates Schachbrett</p>
|
||||
</div>
|
||||
<div className="items-center">
|
||||
<a
|
||||
href="https://git.mischlabs.de/MrDiderot/Michess"
|
||||
href="https://git.mischlabs.de/MrDiderot/MiChess"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="btn btn-ghost btn-sm gap-1 normal-case"
|
||||
|
||||
@@ -25,7 +25,7 @@ export default function Header() {
|
||||
>
|
||||
<path d="M237.84 383.74c13.61 23.9 35.9 48.09 32.29 80.27H17.83c-3.62-32.18 21.67-56.37 35.28-80.27h184.73zM69.68 120.41h148.64c7.51 0 13.66 6.18 13.66 13.66s-6.18 13.66-13.66 13.66H69.68c-7.48 0-13.66-6.15-13.66-13.66s6.15-13.66 13.66-13.66zM120.55 0h48.95v56.29c0 3.87 3.18 7.04 7.04 7.04h24.32c3.86 0 6.32-3.23 7.04-7.04L218.59 0h43.56L244.7 85.8c-4.01 12.59-13.6 18.96-28.35 19.63H66.56c-12.93-.28-20.33-6.82-22.54-19.63L25.85 0h45.62l10.69 56.29c.71 3.81 3.17 7.04 7.03 7.04h24.32c3.86 0 7.04-3.17 7.04-7.04V0zM70.94 162.75c-1.5 60.45-7.75 119.42-22.87 158.47h191.86c-17.59-44.3-24.65-102.49-26.68-158.47H70.94zM46.28 336.2h195.44c8.94 0 16.26 7.36 16.26 16.26v.01c0 8.9-7.36 16.26-16.26 16.26H46.28c-8.9 0-16.26-7.32-16.26-16.26v-.01c0-8.94 7.32-16.26 16.26-16.26zM16.82 479.03h254.36c9.25 0 16.82 7.57 16.82 16.81v.01c0 9.25-7.57 16.81-16.82 16.81H16.82C7.57 512.66 0 505.1 0 495.85v-.01c0-9.24 7.57-16.81 16.82-16.81z" />
|
||||
</svg>
|
||||
Michess
|
||||
MiChess
|
||||
</Link>
|
||||
</div>
|
||||
<div className="flex-none gap-1">
|
||||
|
||||
@@ -7,7 +7,7 @@ export default function ThemeToggle() {
|
||||
const [darkTheme, setDarkTheme] = useState(true);
|
||||
|
||||
useEffect(() => {
|
||||
if (document.documentElement.getAttribute("data-theme") === "chessuDark") {
|
||||
if (document.documentElement.getAttribute("data-theme") === "michessDark") {
|
||||
setDarkTheme(true);
|
||||
} else {
|
||||
setDarkTheme(false);
|
||||
@@ -16,14 +16,14 @@ export default function ThemeToggle() {
|
||||
|
||||
function toggleTheme() {
|
||||
if (
|
||||
document.documentElement.getAttribute("data-theme") === "chessuDark" ||
|
||||
document.documentElement.getAttribute("data-theme") === "michessDark" ||
|
||||
(!("theme" in localStorage) && window.matchMedia("(prefers-color-scheme: dark)").matches)
|
||||
) {
|
||||
document.documentElement.setAttribute("data-theme", "chessuLight");
|
||||
document.documentElement.setAttribute("data-theme", "michessLight");
|
||||
localStorage.theme = "light";
|
||||
setDarkTheme(false);
|
||||
} else {
|
||||
document.documentElement.setAttribute("data-theme", "chessuDark");
|
||||
document.documentElement.setAttribute("data-theme", "michessDark");
|
||||
localStorage.theme = "dark";
|
||||
setDarkTheme(true);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
"use client";
|
||||
|
||||
import type { CustomSquares } from "@/types";
|
||||
import { Game } from "@chessu/types";
|
||||
import { Game } from "@michess/types";
|
||||
import {
|
||||
IconChevronLeft,
|
||||
IconChevronRight,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
"use client";
|
||||
|
||||
import { SessionContext } from "@/context/session";
|
||||
import type { Game } from "@chessu/types";
|
||||
import type { Game } from "@michess/types";
|
||||
import { useContext } from "react";
|
||||
|
||||
import GamePage from "./GamePage";
|
||||
|
||||
@@ -15,7 +15,7 @@ import { SessionContext } from "@/context/session";
|
||||
import { useContext, useEffect, useReducer, useRef, useState } from "react";
|
||||
|
||||
import type { Message } from "@/types";
|
||||
import type { Game } from "@chessu/types";
|
||||
import type { Game } from "@michess/types";
|
||||
|
||||
import type { Move, Square } from "chess.js";
|
||||
import { Chess } from "chess.js";
|
||||
@@ -149,9 +149,9 @@ export default function GamePage({ initialLobby }: { initialLobby: Game }) {
|
||||
if (lobby.side === "s" || !lobby.white?.id || !lobby.black?.id) return;
|
||||
|
||||
if (!lobby.endReason && lobby.side === lobby.actualGame.turn()) {
|
||||
document.title = "(your turn) chessu";
|
||||
document.title = "(your turn) MiChess";
|
||||
} else {
|
||||
document.title = "chessu";
|
||||
document.title = "MiChess";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { Action, CustomSquares, Lobby, Message } from "@/types";
|
||||
import type { Game, User } from "@chessu/types";
|
||||
import type { Game, User } from "@michess/types";
|
||||
import type { Dispatch, SetStateAction } from "react";
|
||||
import type { Socket } from "socket.io-client";
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { Action, CustomSquares, Lobby } from "@/types";
|
||||
import type { Game, User } from "@chessu/types";
|
||||
import type { Game, User } from "@michess/types";
|
||||
import type { Dispatch, SetStateAction } from "react";
|
||||
|
||||
export const syncPgn = (
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
"use client";
|
||||
|
||||
import type { User } from "@chessu/types";
|
||||
import type { User } from "@michess/types";
|
||||
import type { ReactNode } from "react";
|
||||
import { useEffect, useState } from "react";
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { User } from "@chessu/types";
|
||||
import type { User } from "@michess/types";
|
||||
import { createContext, Dispatch, SetStateAction, useContext } from "react";
|
||||
|
||||
export const SessionContext = createContext<{
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { API_URL } from "@/config";
|
||||
import type { User } from "@chessu/types";
|
||||
import type { User } from "@michess/types";
|
||||
|
||||
export const fetchSession = async () => {
|
||||
try {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { API_URL } from "@/config";
|
||||
import type { Game } from "@chessu/types";
|
||||
import type { Game } from "@michess/types";
|
||||
|
||||
export const createGame = async (side: string, unlisted: boolean) => {
|
||||
try {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { API_URL } from "@/config";
|
||||
import type { Game, User } from "@chessu/types";
|
||||
import type { Game, User } from "@michess/types";
|
||||
|
||||
export const fetchProfileData = async (name: string) => {
|
||||
try {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { Game, User } from "@chessu/types";
|
||||
import type { Game, User } from "@michess/types";
|
||||
import type { Chess } from "chess.js";
|
||||
|
||||
export interface Lobby extends Game {
|
||||
|
||||
@@ -5,12 +5,12 @@ module.exports = {
|
||||
extend: {}
|
||||
},
|
||||
plugins: [require("daisyui")],
|
||||
darkMode: ["class", '[data-theme="chessuDark"]'],
|
||||
darkMode: ["class", '[data-theme="michessDark"]'],
|
||||
daisyui: {
|
||||
// based on daisyUI night and winter themes
|
||||
themes: [
|
||||
{
|
||||
chessuLight: {
|
||||
michessLight: {
|
||||
primary: "#047AFF",
|
||||
secondary: "#818CF8",
|
||||
accent: "#C148AC",
|
||||
@@ -24,7 +24,7 @@ module.exports = {
|
||||
warning: "#EFD7BB",
|
||||
error: "#E58B8B"
|
||||
},
|
||||
chessuDark: {
|
||||
michessDark: {
|
||||
primary: "#38BDF8",
|
||||
secondary: "#818CF8",
|
||||
accent: "#1d4ed8",
|
||||
@@ -37,6 +37,6 @@ module.exports = {
|
||||
}
|
||||
}
|
||||
],
|
||||
darkTheme: "chessuDark"
|
||||
darkTheme: "michessDark"
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user