Updated README.md & version number

This commit is contained in:
2025-12-15 13:49:03 -05:00
parent eb496fed5d
commit f9b66fe037
8 changed files with 128 additions and 130 deletions

2
.gitignore vendored
View File

@@ -1,2 +1,4 @@
node_modules node_modules
electron electron
dist
.env

View File

@@ -1,23 +1,53 @@
# WaifuBoard v2.0.0 (RECODE) # 🎀 WaifuBoard
The official recode repo, its private no one should know about this or have the code but 2 people.
# Things to get done: **Lightweight all-in-one app for boorus, manga and light novels — no sources included, total freedom via extensions.**
| Task | Status | Notes | <img src="public/banner.png" alt="WaifuBoard Hero" width="100%"/>
| -----|----------| ------ | <div align="center">
| Book Reader | ✅ | N/A |
| Multi book provider loading | ✅ | N/A |
| Better Code Organization | ✅ | N/A |
| Mobile View | Not Done | N/A |
| Gallery | ✅ | N/A |
| Anime Schedule (Release Calendar for the week/month) | ✅ | N/A |
| My List (Tracking) | ✅ | Persistent data would be in a data.db file in waifuboard directory |
| Marketplace | ✅ | Uses the gitea repo |
| Add to list / library | ✅ | Persistent data would be in data.db file in waifuboard directory|
| Gallery favorites | ✅ | Persistent in data.db like how it was previously |
| Change "StreamFlow" to "WaifuBoard" | ✅ | N/A |
| Change the cube icon next to "StreamFlow" to the current ico file | ✅ | Use the ico file from the current waifuboard ver |
| Favicon | ✅ | Use the ico file from the current waifuboard ver |
| Make video player more professional looking | ✅ | N/A |
***This stuff will get updated as time goes on, please check things off with a green checkmark as you complete them.*** [![Windows](https://img.shields.io/badge/Windows-SUPPORTED-0078D6?style=for-the-badge&logo=windows&logoColor=white)](https://waifuboard.app)
[![Latest](https://img.shields.io/gitea/v/release/ItsSkaiya/WaifuBoard?gitea_url=https://git.waifuboard.app&style=for-the-badge)](https://git.waifuboard.app/ItsSkaiya/WaifuBoard/releases/latest)
[![Extensions](https://img.shields.io/badge/Extensions-Repository-8257e5?style=for-the-badge)](https://git.waifuboard.app/ItsSkaiya/WaifuBoard-Extensions)
**[Website](https://waifuboard.app)** • **[Documentation](https://waifuboard.app/docs)** • **[Download Latest](https://git.waifuboard.app/ItsSkaiya/WaifuBoard/releases/latest)** • **[Discord (soon)](#)**
</div>
## 🚀 What is WaifuBoard?
**A lightweight and privacy-friendly desktop app designed around modular extensions.** WaifuBoard delivers a clean, organized reading experience for boorus, manga, and light novels, powered entirely by community-made sources.
## ✨ Features
- Lightweight
- Discord Rich Presence
- Super clean & fast UI
- Built-in **Extension Marketplace**
- Fully open-source & community-driven
- Future mobile ports planned
## 🖥️ Download & Platform Support
| Platform | Status | Link |
|------------|-----------------|-----------------------------------------------------------|
| Windows | ✅ Available now | [Latest Release](https://git.waifuboard.app/ItsSkaiya/WaifuBoard/releases/latest) |
| Linux | ⏳ Coming soon | — |
| macOS | ⏳ Coming soon | — |
## 📦 Extensions & Marketplace
WaifuBoard ships empty. **You decide exactly what sources you want.**
**Official Extensions Repository** → https://git.waifuboard.app/ItsSkaiya/WaifuBoard-Extensions<br>
**Extension Development Docs** → https://waifuboard.app/docs
## ⚠️ Legal Disclaimer
**WaifuBoard does not host, store, or distribute any content.
All material is retrieved in real time through third-party extensions installed by the user.
You are fully responsible for ensuring that the sources you access comply with the laws of your region.**
---
**Designed for the otakus by an otaku.** 💜

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

33
package-lock.json generated
View File

@@ -18,7 +18,6 @@
"fastify": "^5.6.2", "fastify": "^5.6.2",
"jsonwebtoken": "^9.0.3", "jsonwebtoken": "^9.0.3",
"node-addon-api": "^8.5.0", "node-addon-api": "^8.5.0",
"playwright": "^1.57.0",
"playwright-chromium": "^1.57.0", "playwright-chromium": "^1.57.0",
"sqlite3": "^5.1.7" "sqlite3": "^5.1.7"
}, },
@@ -4020,20 +4019,6 @@
"devOptional": true, "devOptional": true,
"license": "ISC" "license": "ISC"
}, },
"node_modules/fsevents": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"hasInstallScript": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
"node_modules/function-bind": { "node_modules/function-bind": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
@@ -5825,24 +5810,6 @@
"integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==", "integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/playwright": {
"version": "1.57.0",
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0.tgz",
"integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==",
"license": "Apache-2.0",
"dependencies": {
"playwright-core": "1.57.0"
},
"bin": {
"playwright": "cli.js"
},
"engines": {
"node": ">=18"
},
"optionalDependencies": {
"fsevents": "2.3.2"
}
},
"node_modules/playwright-chromium": { "node_modules/playwright-chromium": {
"version": "1.57.0", "version": "1.57.0",
"resolved": "https://registry.npmjs.org/playwright-chromium/-/playwright-chromium-1.57.0.tgz", "resolved": "https://registry.npmjs.org/playwright-chromium/-/playwright-chromium-1.57.0.tgz",

View File

@@ -1,103 +1,102 @@
const Gitea_OWNER = 'ItsSkaiya'; const Gitea_OWNER = "ItsSkaiya";
const Gitea_REPO = 'WaifuBoard'; const Gitea_REPO = "WaifuBoard";
const CURRENT_VERSION = 'v1.6.4'; const CURRENT_VERSION = "v2.0.0-rc.0";
const UPDATE_CHECK_INTERVAL = 5 * 60 * 1000; const UPDATE_CHECK_INTERVAL = 5 * 60 * 1000;
let currentVersionDisplay; let currentVersionDisplay;
let latestVersionDisplay; let latestVersionDisplay;
let updateToast; let updateToast;
document.addEventListener('DOMContentLoaded', () => { document.addEventListener("DOMContentLoaded", () => {
currentVersionDisplay = document.getElementById("currentVersionDisplay");
latestVersionDisplay = document.getElementById("latestVersionDisplay");
updateToast = document.getElementById("updateToast");
currentVersionDisplay = document.getElementById('currentVersionDisplay'); if (currentVersionDisplay) {
latestVersionDisplay = document.getElementById('latestVersionDisplay'); currentVersionDisplay.textContent = CURRENT_VERSION;
updateToast = document.getElementById('updateToast'); }
if (currentVersionDisplay) { checkForUpdates();
currentVersionDisplay.textContent = CURRENT_VERSION;
}
checkForUpdates(); setInterval(checkForUpdates, UPDATE_CHECK_INTERVAL);
setInterval(checkForUpdates, UPDATE_CHECK_INTERVAL);
}); });
function showToast(latestVersion) { function showToast(latestVersion) {
if (latestVersionDisplay && updateToast) {
if (latestVersionDisplay && updateToast) { latestVersionDisplay.textContent = latestVersion;
latestVersionDisplay.textContent = latestVersion; updateToast.classList.add("update-available");
updateToast.classList.add('update-available'); updateToast.classList.remove("hidden");
updateToast.classList.remove('hidden'); } else {
console.error(
} else { "Error: Cannot display toast because one or more DOM elements were not found.",
console.error("Error: Cannot display toast because one or more DOM elements were not found."); );
} }
} }
function hideToast() { function hideToast() {
if (updateToast) { if (updateToast) {
updateToast.classList.add('hidden'); updateToast.classList.add("hidden");
updateToast.classList.remove('update-available'); updateToast.classList.remove("update-available");
} }
} }
function isVersionOutdated(versionA, versionB) { function isVersionOutdated(versionA, versionB) {
const vA = versionA.replace(/^v/, "").split(".").map(Number);
const vB = versionB.replace(/^v/, "").split(".").map(Number);
const vA = versionA.replace(/^v/, '').split('.').map(Number); for (let i = 0; i < Math.max(vA.length, vB.length); i++) {
const vB = versionB.replace(/^v/, '').split('.').map(Number); const numA = vA[i] || 0;
const numB = vB[i] || 0;
for (let i = 0; i < Math.max(vA.length, vB.length); i++) { if (numA < numB) return true;
const numA = vA[i] || 0; if (numA > numB) return false;
const numB = vB[i] || 0; }
if (numA < numB) return true; return false;
if (numA > numB) return false;
}
return false;
} }
async function checkForUpdates() { async function checkForUpdates() {
console.log(`Checking for updates for ${Gitea_OWNER}/${Gitea_REPO}...`); console.log(`Checking for updates for ${Gitea_OWNER}/${Gitea_REPO}...`);
const apiUrl = `https://git.waifuboard.app/api/v1/repos/${Gitea_OWNER}/${Gitea_REPO}/releases/latest`; const apiUrl = `https://git.waifuboard.app/api/v1/repos/${Gitea_OWNER}/${Gitea_REPO}/releases/latest`;
try { try {
const response = await fetch(apiUrl, { const response = await fetch(apiUrl, {
method: 'GET', method: "GET",
headers: { headers: {
'Accept': 'application/json' Accept: "application/json",
} },
}); });
if (!response.ok) { if (!response.ok) {
if (response.status === 404) { if (response.status === 404) {
console.info('No releases found for this repository.'); console.info("No releases found for this repository.");
return; return;
} }
throw new Error(`Gitea API error: ${response.status} ${response.statusText}`); throw new Error(
} `Gitea API error: ${response.status} ${response.statusText}`,
);
const data = await response.json();
const latestVersion = data.tag_name;
if (!latestVersion) {
console.warn("Release found but no tag_name present");
return;
}
console.log(`Latest Gitea Release: ${latestVersion}`);
if (isVersionOutdated(CURRENT_VERSION, latestVersion)) {
console.warn('Update available!');
showToast(latestVersion);
} else {
console.info('Package is up to date.');
hideToast();
}
} catch (error) {
console.error('Failed to fetch Gitea release:', error);
} }
const data = await response.json();
const latestVersion = data.tag_name;
if (!latestVersion) {
console.warn("Release found but no tag_name present");
return;
}
console.log(`Latest Gitea Release: ${latestVersion}`);
if (isVersionOutdated(CURRENT_VERSION, latestVersion)) {
console.warn("Update available!");
showToast(latestVersion);
} else {
console.info("Package is up to date.");
hideToast();
}
} catch (error) {
console.error("Failed to fetch Gitea release:", error);
}
} }