Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
d057d46
chore: update to nextjs 15
clicktodev Oct 13, 2025
6b60800
feat: implement EasterEggs component to fix pre-rendering issues
clicktodev Oct 13, 2025
9f0960b
fix: update eslint ignores to include src-tauri and resources directo…
clicktodev Oct 13, 2025
5997612
fix: refactor Snowflakes import to resolve pre-rendering issues
clicktodev Oct 13, 2025
d99c443
fix: add comments to clarify ignores configuration in eslint
clicktodev Oct 13, 2025
6ac020c
fix: refactor EasterEggs import to resolve pre-rendering issues and u…
clicktodev Oct 13, 2025
5ac6b1b
Fix comment in eslint.config.mjs
clicktodev Oct 14, 2025
03751f1
fix: remove unused dynamicImport import from page.tsx
clicktodev Oct 15, 2025
d0f40d9
explicit export path instead of relying on default
clicktodev Oct 16, 2025
b026b0f
fix: specify port for dev and start scripts in package.json
clicktodev Oct 16, 2025
f7d4412
Merge branch 'main' into next-15
clicktodev Oct 18, 2025
3c935de
chore: update dependencies to version 15.5.6 for next and eslint-conf…
clicktodev Nov 3, 2025
95cb3ec
fix: replace 'any' type with 'unknown' in SettingControlDropdown and …
clicktodev Nov 3, 2025
a2dcc71
chore: add devEngines section to package.json for npm package manager
clicktodev Nov 3, 2025
906bdaa
chore: update dependencies to Next.js 16.0.1 and React 19.2.0
clicktodev Nov 5, 2025
96f3d25
chore: update package-lock.json to remove unused dependencies and upg…
clicktodev Nov 5, 2025
2fd63a1
Merge branch 'OpenFusionProject:main' into next-15
clicktodev Nov 5, 2025
3a714dc
chore: remove unused eslint dependency
clicktodev Nov 5, 2025
bb9f1de
chore: update dev and build scripts to use webpack instead of the new…
clicktodev Nov 5, 2025
1e2976c
Change parameter type from unknown to any
clicktodev Nov 5, 2025
0860dff
Add pull_request trigger to Rust workflow
clicktodev Nov 5, 2025
74f0a2f
chore: update Tauri dependencies to use tilde versioning for better c…
clicktodev Nov 5, 2025
96a0f62
Merge branch 'OpenFusionProject:main' into next-15
clicktodev Nov 5, 2025
7166c02
chore: update Next.js and ESLint
clicktodev Nov 18, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 0 additions & 9 deletions .eslintrc.json

This file was deleted.

13 changes: 9 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,12 @@
# dependencies
/node_modules
/.pnp
.pnp.js
.yarn/install-state.gz
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/versions

# testing
/coverage
Expand All @@ -24,9 +28,10 @@
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*

# local env files
.env*.local
# env files (can opt-in for committing if needed)
.env*

# vercel
.vercel
Expand Down
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@
OpenFusionClient rewrite with Tauri 2.0, Next.js and React.

## Setup

1. Ensure you have all the required [prerequisites](https://v2.tauri.app/start/prerequisites/) installed
2. Install the Tauri CLI with `cargo install tauri-cli --version "^2.0.0" --locked`
3. Install dependencies with `npm install`

## Dev

Run `cargo tauri dev` to spawn the app. **Hot reload is on, so any changes you make will immediately reflect.**

## Production
Run `cargo tauri build` to build a production binary and any applicable installers or bundles for the current platform. Note that `cargo build --release` will not produce a useful binary as it does not embed the web pages into the application.

Run `cargo tauri build` to build a production binary and any applicable installers or bundles for the current platform. Note that `cargo build --release` will not produce a useful binary as it does not embed the web pages into the application.
39 changes: 39 additions & 0 deletions app/components/EasterEggs.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
"use client";

import { useEffect, useRef } from "react";
import Snowflakes from "magic-snowflakes";

export function EasterEggs() {
const snowflakesRef = useRef<Snowflakes>(null);

useEffect(() => {
const initEasterEggs = async () => {
const today = new Date();
const christmasBegin = new Date(today.getFullYear(), 11, 21);
const christmasEnd = new Date(today.getFullYear(), 11, 31);

if (today >= christmasBegin && today <= christmasEnd) {
try {
snowflakesRef.current = new Snowflakes({ zIndex: -100 });
console.log("Christmas Activated.");
snowflakesRef.current.start();
} catch (error) {
console.warn("Failed to load snowflakes:", error);
}
}
};

initEasterEggs();

// Cleanup function
return () => {
if (snowflakesRef.current) {
snowflakesRef.current.stop();
snowflakesRef.current.destroy();
snowflakesRef.current = null;
}
};
}, []);

return null; // This component doesn't render anything visible
}
21 changes: 0 additions & 21 deletions app/easter-eggs.ts

This file was deleted.

5 changes: 2 additions & 3 deletions app/page.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
"use client";

import { startEasterEggs } from "./easter-eggs";

import { invoke } from "@tauri-apps/api/core";
import { getName, getVersion } from "@tauri-apps/api/app";
import { getCurrentWindow } from "@tauri-apps/api/window";
Expand Down Expand Up @@ -47,6 +45,7 @@ import {
} from "@/app/util";
import ForgotPasswordModal from "./components/ForgotPasswordModal";
import { useRouter } from "next/navigation";
import { EasterEggs } from "./components/EasterEggs";

const DEFAULT_TAGLINE =
"Welcome to OpenFusion.\nSelect a server from the list below to get started.";
Expand Down Expand Up @@ -518,7 +517,6 @@ export default function Home() {
if (!loadedRef.current) {
console.log("init");
doInit();
startEasterEggs();

listen<AlertEvent>("alert", (e) => {
handleAlert(e.payload);
Expand Down Expand Up @@ -548,6 +546,7 @@ export default function Home() {

return initialFetchDone ? (
<>
<EasterEggs />
<Toasts alerts={alerts} />
{loadingTasks.length > 0 && <LoadingScreen tasks={loadingTasks} />}
<BackgroundImages
Expand Down
26 changes: 26 additions & 0 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import { defineConfig, globalIgnores } from "eslint/config";
import nextVitals from "eslint-config-next/core-web-vitals";
import nextTs from "eslint-config-next/typescript";

const eslintConfig = defineConfig([
...nextVitals,
...nextTs,
{
rules: {
"@typescript-eslint/no-explicit-any": "warn",
"react-hooks/set-state-in-effect": "warn",
},
},
// Override default ignores of eslint-config-next.
globalIgnores([
// Default ignores of eslint-config-next:
".next/**",
"out/**",
"build/**",
"next-env.d.ts",
"src-tauri/**",
"resources/**",
]),
]);

export default eslintConfig;
9 changes: 0 additions & 9 deletions next.config.mjs

This file was deleted.

13 changes: 13 additions & 0 deletions next.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import type { NextConfig } from "next";

// https://v2.tauri.app/start/frontend/nextjs/
const nextConfig: NextConfig = {
output: "export",
distDir: "out",
images: {
unoptimized: true,
},
typedRoutes: true,
};

export default nextConfig;
Loading