mirror of
https://github.com/Suwayomi/Suwayomi-Server.git
synced 2026-07-01 01:44:34 -05:00
Compare commits
25 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
666602283a | ||
|
|
ac040a4bae | ||
|
|
b4982c8f22 | ||
|
|
ce3ad92095 | ||
|
|
8e1ac8698c | ||
|
|
b60a39c7cb | ||
|
|
3b3e8ba4c8 | ||
|
|
e387f6d3be | ||
|
|
799d469cb6 | ||
|
|
a54a596fa7 | ||
|
|
92d73d0285 | ||
|
|
acb752e4e8 | ||
|
|
9e377abba6 | ||
|
|
04552c0923 | ||
|
|
2e1fb85b73 | ||
|
|
50db32d9b4 | ||
|
|
28743d953e | ||
|
|
b109d26aa7 | ||
|
|
7fd21bd06d | ||
|
|
12e0ffb466 | ||
|
|
9259341df8 | ||
|
|
8e8aca7e7b | ||
|
|
7f0bcd987b | ||
|
|
ef21de95cb | ||
|
|
ca3246de02 |
7
.github/workflows/build_push.yml
vendored
7
.github/workflows/build_push.yml
vendored
@@ -78,11 +78,14 @@ jobs:
|
||||
echo "$genTag"
|
||||
echo "::set-output name=value::$genTag"
|
||||
|
||||
- name: make windows packages
|
||||
- name: make bundle packages
|
||||
run: |
|
||||
cd master/scripts
|
||||
./windows-bundler.sh win32
|
||||
./windows-bundler.sh win64
|
||||
./unix-bundler.sh linux-x64
|
||||
./unix-bundler.sh macOS-x64
|
||||
./unix-bundler.sh macOS-arm64
|
||||
|
||||
# - name: Mock make windows packages
|
||||
# run: |
|
||||
@@ -116,7 +119,7 @@ jobs:
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
token: ${{ secrets.DEPLOY_PREVIEW_TOKEN }}
|
||||
artifacts: "master/server/build/*.jar,master/server/build/*.zip"
|
||||
artifacts: "master/server/build/*.jar,master/server/build/*.zip,master/server/build/*.tar.gz"
|
||||
owner: "Suwayomi"
|
||||
repo: "Tachidesk-Server-preview"
|
||||
tag: ${{ steps.GenTagName.outputs.value }}
|
||||
|
||||
14
.github/workflows/publish.yml
vendored
14
.github/workflows/publish.yml
vendored
@@ -51,13 +51,6 @@ jobs:
|
||||
cd master
|
||||
curl https://raw.githubusercontent.com/Suwayomi/Tachidesk/android-jar/android.jar -o AndroidCompat/lib/android.jar
|
||||
|
||||
- name: Cache node_modules
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: |
|
||||
**/webUI/node_modules
|
||||
key: ${{ runner.os }}-${{ hashFiles('**/webUI/yarn.lock') }}
|
||||
|
||||
- name: Build and copy webUI, Build Jar
|
||||
uses: eskatos/gradle-command-action@v1
|
||||
env:
|
||||
@@ -70,18 +63,21 @@ jobs:
|
||||
dependencies-cache-enabled: true
|
||||
configuration-cache-enabled: true
|
||||
|
||||
- name: make windows packages
|
||||
- name: make bundle packages
|
||||
run: |
|
||||
cd master/scripts
|
||||
./windows-bundler.sh win32
|
||||
./windows-bundler.sh win64
|
||||
./unix-bundler.sh linux-x64
|
||||
./unix-bundler.sh macOS-x64
|
||||
./unix-bundler.sh macOS-arm64
|
||||
|
||||
- name: Upload Release
|
||||
uses: xresloader/upload-to-github-release@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
file: "master/server/build/*.jar;master/server/build/*.zip"
|
||||
file: "master/server/build/*.jar;master/server/build/*.zip;master/server/build/*.tar.gz"
|
||||
tags: true
|
||||
draft: true
|
||||
verbose: true
|
||||
|
||||
5
.gitignore
vendored
5
.gitignore
vendored
@@ -11,6 +11,7 @@ server/tmp/
|
||||
server/tachiserver-data/
|
||||
|
||||
# bundle asset downlaods
|
||||
OpenJDK*.zip
|
||||
electron-*.zip
|
||||
OpenJDK*.*
|
||||
zulu*jre*
|
||||
electron-*.*
|
||||
rcedit-*
|
||||
|
||||
31
CHANGELOG-TEMPLATE.md
Normal file
31
CHANGELOG-TEMPLATE.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# Server: v0.X.Y-next + WebUI: rXXX
|
||||
## Tachidesk-Server
|
||||
### Public API
|
||||
#### Non-breaking changes
|
||||
- N/A
|
||||
|
||||
#### Breaking changes
|
||||
- N/A
|
||||
|
||||
#### Bug fixes
|
||||
- N/A
|
||||
|
||||
### Private API
|
||||
- N/A
|
||||
|
||||
#### Non-code changes
|
||||
- N/A
|
||||
|
||||
|
||||
## Tachidesk-WebUI
|
||||
#### Visible changes
|
||||
- N/A
|
||||
|
||||
#### Bug fixes
|
||||
- N/A
|
||||
|
||||
#### Internal changes
|
||||
- N/A
|
||||
|
||||
#### Non-code changes
|
||||
- N/A
|
||||
112
CHANGELOG.md
Normal file
112
CHANGELOG.md
Normal file
@@ -0,0 +1,112 @@
|
||||
# Server: v0.4.9-next + WebUI: r769
|
||||
## Tachidesk-Server
|
||||
### Public API
|
||||
#### Non-breaking changes
|
||||
- N/A
|
||||
|
||||
#### Breaking changes
|
||||
- N/A
|
||||
|
||||
#### Bug fixes
|
||||
- N/A
|
||||
|
||||
### Private API
|
||||
- N/A
|
||||
|
||||
#### Non-code changes
|
||||
- N/A
|
||||
|
||||
|
||||
## Tachidesk-WebUI
|
||||
#### Visible changes
|
||||
- N/A
|
||||
|
||||
#### Bug fixes
|
||||
- N/A
|
||||
|
||||
#### Internal changes
|
||||
- N/A
|
||||
|
||||
#### Non-code changes
|
||||
- N/A
|
||||
|
||||
|
||||
|
||||
# Server: v0.4.9 + WebUI: r769
|
||||
## Tachidesk-Server
|
||||
### Public API
|
||||
#### Non-breaking changes
|
||||
- N/A
|
||||
|
||||
#### Breaking changes
|
||||
- (r857) renamed: `SourceDataClass.isNSFW` -> `SourceDataClass.isNsfw`
|
||||
|
||||
#### Bug fixes
|
||||
- N/A
|
||||
|
||||
### Private API
|
||||
- (r850) Bump WebUI version to r767
|
||||
- (r861) Bump WebUI version to r769
|
||||
|
||||
#### Non-code changes
|
||||
- (r851) Add this changelog file and `CHANGELOG-TEMPLATE.md`
|
||||
- (r852-r853) `CONTRIBUTING.md`: Add a note about this maintaining this file changelog
|
||||
- (r855) `CONTRIBUTING.md`: text cleanup
|
||||
- (r859) `CONTRIBUTING.md`: remove dumb rule
|
||||
- (r862) `windows-bundler.sh`: update jre
|
||||
- (r864) add linux and macOS bundler script and launcher scripts
|
||||
- (r865) fix macOS bundler script and launcher scripts
|
||||
- (r866) bump electron version to v14.0.0
|
||||
- (r868) add linux and macOS bundlers to the publish workflow
|
||||
- (r871) `publish.yml`: remove node module cache, won't need it anymore
|
||||
- (r873) `publish.yml` and `build_push.yml`: fix oopsies
|
||||
|
||||
|
||||
## Tachidesk-WebUI
|
||||
#### Visible changes
|
||||
- (r767-r769) Support for hiding NSFW content in settings screen, extensions screen, sources screen
|
||||
|
||||
#### Bug fixes
|
||||
- N/A
|
||||
|
||||
#### Internal changes
|
||||
- (r767) Remove some duplicate dependency declaration from `package.json`
|
||||
|
||||
#### Non-code changes
|
||||
- (r42-r45) Change `README.md`: some links and stuff
|
||||
- (r45-r765) Add all of the commit history from when WebUI was separated from Server, jumping from r45 to r765 (r45 is exactly the same as r765)
|
||||
- (r766) Steal `.gitattributes` from Tachidesk-Server
|
||||
- (r767) Dependency cleanup in `package.json`
|
||||
|
||||
|
||||
|
||||
|
||||
# Server: v0.4.8 + WebUI: r41
|
||||
## Tachidesk-Server
|
||||
### Public API
|
||||
#### Non-breaking changes
|
||||
- Added support for serializing Search Filters
|
||||
- `SourceDataClass` now has a `isNsfw` key
|
||||
|
||||
#### Breaking changes
|
||||
- N/A
|
||||
|
||||
#### Bug fixes
|
||||
- Fixed a bug where backup restore reversed chapter order
|
||||
- Open Site feature now works properly (https://github.com/Suwayomi/Tachidesk-WebUI/issues/19)
|
||||
|
||||
### Private API
|
||||
- Added `CloudflareInterceptor` from TachiWeb-Server
|
||||
- Restoring backup for mangas in library(merging manga data) is now supported
|
||||
|
||||
## Tachidesk-WebUI
|
||||
#### Visible changes
|
||||
- Better looking manga card titles
|
||||
- Better reader title, next, prev buttons
|
||||
|
||||
#### Bug fixes
|
||||
- Open Site feature now works properly (https://github.com/Suwayomi/Tachidesk-WebUI/issues/19)
|
||||
- Re-ordering categories now works
|
||||
|
||||
#### Internal changes
|
||||
- N/A
|
||||
@@ -2,18 +2,20 @@
|
||||
## Where should I start?
|
||||
Checkout [This Kanban Board](https://github.com/Suwayomi/Tachidesk/projects/1) to see the rough development roadmap.
|
||||
|
||||
**Note to potential contributors:** Notify the developers on [Suwayomi discord](https://discord.gg/DDZdqZWaHA) (#programming channel) or open a WIP pull request before starting if you decide to take on working on anything from/not from the roadmap in order to avoid parallel efforts on the same issue/feature.
|
||||
**Note 1:** Notify the developers on [Suwayomi discord](https://discord.gg/DDZdqZWaHA) (#programming channel) or open a WIP pull request before starting if you decide to take on working on anything from/not from the roadmap in order to avoid parallel efforts on the same issue/feature.
|
||||
|
||||
**Note 2:** Store all changes with each direct commit/PR in [CHANGELOG.md](./CHANGELOG.md).
|
||||
|
||||
## How does Tachidesk-Server work?
|
||||
This project has two components:
|
||||
1. **Server:** contains the implementation of [tachiyomi's extensions library](https://github.com/tachiyomiorg/extensions-lib) and uses an Android compatibility library to run jar libraries converted from apk extensions. All this concludes to serving a REST API.
|
||||
2. **WebUI:** A react SPA(`create-react-app`) project that works with the server to do the presentation located at https://github.com/Suwayomi/Tachidesk-WebUI
|
||||
2. **WebUI:** A React SPA(`create-react-app`) project that works with the server to do the presentation located at https://github.com/Suwayomi/Tachidesk-WebUI
|
||||
|
||||
## Why a web server app?
|
||||
## Why a web app?
|
||||
This structure is chosen to
|
||||
- Achieve the maximum multi-platform-ness
|
||||
- Gives the ability to acces Tachidesk-Server from a remote client e.g. your phone, tablet or smart TV
|
||||
- Eaise development of user intefaces for Tachidesk
|
||||
- Gives the ability to access Tachidesk-Server from a remote client e.g., your phone, tablet or smart TV
|
||||
- Ease development of user interfaces for Tachidesk
|
||||
|
||||
## Building from source
|
||||
### Prerequisites
|
||||
@@ -22,7 +24,7 @@ You need these software packages installed in order to build the project
|
||||
- Java Development Kit and Java Runtime Environment version 8 or newer(both Oracle JDK and OpenJDK works)
|
||||
- Android stubs jar
|
||||
- **Manual download:** Download [android.jar](https://raw.githubusercontent.com/Suwayomi/Tachidesk/android-jar/android.jar) and put it under `AndroidCompat/lib`.
|
||||
- **Automated download:** Run `AndroidCompat/getAndroid.sh`(MacOS/Linux) or `AndroidCompat/getAndroid.ps1`(Windows) from project's root directory to download and rebuild the jar file from Google's repository.
|
||||
- **Automated download:** Run `AndroidCompat/getAndroid.sh`(macOS/Linux) or `AndroidCompat/getAndroid.ps1`(Windows) from project's root directory to download and rebuild the jar file from Google's repository.
|
||||
|
||||
### building the full-blown jar (Tachidesk-Server + Tachidesk-WebUI bundle)
|
||||
Run `./gradlew server:downloadWebUI server:shadowJar`, the resulting built jar file will be `server/build/Tachidesk-Server-vX.Y.Z-rxxx.jar`.
|
||||
|
||||
@@ -12,9 +12,9 @@ const val kotlinVersion = "1.5.21"
|
||||
const val MainClass = "suwayomi.tachidesk.MainKt"
|
||||
|
||||
// should be bumped with each stable release
|
||||
val tachideskVersion = System.getenv("ProductVersion") ?: "v0.4.8"
|
||||
val tachideskVersion = System.getenv("ProductVersion") ?: "v0.4.9"
|
||||
|
||||
val webUIRevisionTag = System.getenv("WebUIRevision") ?: "r41"
|
||||
val webUIRevisionTag = System.getenv("WebUIRevision") ?: "r769"
|
||||
|
||||
// counts commits on the the master branch
|
||||
val tachideskRevision = runCatching {
|
||||
|
||||
3
scripts/resources/Tachidesk Browser Launcher.command
Executable file
3
scripts/resources/Tachidesk Browser Launcher.command
Executable file
@@ -0,0 +1,3 @@
|
||||
cd "`dirname "$0"`"
|
||||
|
||||
./jre/Contents/Home/bin/java -jar Tachidesk.jar
|
||||
3
scripts/resources/Tachidesk Debug Launcher.command
Executable file
3
scripts/resources/Tachidesk Debug Launcher.command
Executable file
@@ -0,0 +1,3 @@
|
||||
cd "`dirname "$0"`"
|
||||
|
||||
./jre/Contents/Home/bin/java -Dsuwayomi.tachidesk.config.server.debugLogsEnabled=true -jar Tachidesk.jar
|
||||
3
scripts/resources/Tachidesk Electron Launcher.command
Executable file
3
scripts/resources/Tachidesk Electron Launcher.command
Executable file
@@ -0,0 +1,3 @@
|
||||
cd "`dirname "$0"`"
|
||||
|
||||
./jre/Contents/Home/bin/java "-Dsuwayomi.tachidesk.config.server.webUIInterface=electron" "-Dsuwayomi.tachidesk.config.server.electronPath=electron/Electron.app/Contents/MacOS/Electron" -jar Tachidesk.jar
|
||||
3
scripts/resources/tachidesk-browser-launcher.sh
Executable file
3
scripts/resources/tachidesk-browser-launcher.sh
Executable file
@@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
./jre/bin/java -jar Tachidesk.jar
|
||||
3
scripts/resources/tachidesk-debug-launcher.sh
Executable file
3
scripts/resources/tachidesk-debug-launcher.sh
Executable file
@@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
./jre/bin/java -Dsuwayomi.tachidesk.config.server.debugLogsEnabled=true -jar Tachidesk.jar
|
||||
3
scripts/resources/tachidesk-electron-launcher.sh
Executable file
3
scripts/resources/tachidesk-electron-launcher.sh
Executable file
@@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
./jre/bin/java "-Dsuwayomi.tachidesk.config.server.webUIInterface=electron" "-Dsuwayomi.tachidesk.config.server.electronPath=electron/electron" -jar Tachidesk.jar
|
||||
89
scripts/unix-bundler.sh
Executable file
89
scripts/unix-bundler.sh
Executable file
@@ -0,0 +1,89 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright (C) Contributors to the Suwayomi project
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
|
||||
electron_version="v14.0.0"
|
||||
|
||||
if [ $1 = "linux-x64" ]; then
|
||||
jre="OpenJDK8U-jre_x64_linux_hotspot_8u302b08.tar.gz"
|
||||
jre_release="jdk8u302-b08"
|
||||
jre_url="https://github.com/adoptium/temurin8-binaries/releases/download/$jre_release/$jre"
|
||||
jre_dir="$jre_release-jre"
|
||||
electron="electron-$electron_version-linux-x64.zip"
|
||||
elif [ $1 = "macOS-x64" ]; then
|
||||
jre="OpenJDK8U-jre_x64_mac_hotspot_8u302b08.tar.gz"
|
||||
jre_release="jdk8u302-b08"
|
||||
jre_url="https://github.com/adoptium/temurin8-binaries/releases/download/$jre_release/$jre"
|
||||
jre_dir="$jre_release-jre"
|
||||
electron="electron-$electron_version-darwin-x64.zip"
|
||||
elif [ $1 = "macOS-arm64" ]; then
|
||||
jre="zulu8.56.0.23-ca-jre8.0.302-macosx_aarch64.tar.gz"
|
||||
jre_release="zulu8.56.0.23-ca-jre8.0.302-macosx_aarch64"
|
||||
jre_url="https://cdn.azul.com/zulu/bin/$jre"
|
||||
jre_dir="$jre_release"
|
||||
electron="electron-$electron_version-darwin-arm64.zip"
|
||||
else
|
||||
echo "Unsupported arch value: $1"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
arch="$1"
|
||||
os=$(echo $arch | cut -d '-' -f1)
|
||||
|
||||
echo "creating $arch bundle"
|
||||
|
||||
jar=$(ls ../server/build/*.jar | tail -n1)
|
||||
jar_name=$(echo $jar | cut -d'/' -f4)
|
||||
release_name=$(echo $jar_name | sed 's/.jar//')-$arch
|
||||
|
||||
|
||||
# make release dir
|
||||
mkdir $release_name
|
||||
|
||||
|
||||
echo "Dealing with jre..."
|
||||
if [ ! -f $jre ]; then
|
||||
curl -L $jre_url -o $jre
|
||||
fi
|
||||
tar xvf $jre
|
||||
mv $jre_dir $release_name/jre
|
||||
|
||||
echo "Dealing with electron"
|
||||
if [ ! -f $electron ]; then
|
||||
curl -L "https://github.com/electron/electron/releases/download/$electron_version/$electron" -o $electron
|
||||
fi
|
||||
unzip $electron -d $release_name/electron
|
||||
|
||||
# copy artifacts
|
||||
cp $jar $release_name/Tachidesk.jar
|
||||
if [ $os = linux ]; then
|
||||
cp "resources/tachidesk-browser-launcher.sh" $release_name
|
||||
cp "resources/tachidesk-debug-launcher.sh" $release_name
|
||||
cp "resources/tachidesk-electron-launcher.sh" $release_name
|
||||
elif [ $os = macOS ]; then
|
||||
cp "resources/Tachidesk Browser Launcher.command" $release_name
|
||||
cp "resources/Tachidesk Debug Launcher.command" $release_name
|
||||
cp "resources/Tachidesk Electron Launcher.command" $release_name
|
||||
fi
|
||||
|
||||
archive_name=""
|
||||
if [ $os = linux ]; then
|
||||
archive_name=$release_name.tar.gz
|
||||
GZIP=-9 tar cvzf $archive_name $release_name
|
||||
elif [ $os = macOS ]; then
|
||||
archive_name=$release_name.zip
|
||||
zip -9 -r $archive_name $release_name
|
||||
fi
|
||||
|
||||
rm -rf $release_name
|
||||
|
||||
# clean up from possible previous runs
|
||||
if [ -f ../server/build/$archive_name ]; then
|
||||
rm ../server/build/$archive_name
|
||||
fi
|
||||
|
||||
mv $archive_name ../server/build/
|
||||
@@ -6,19 +6,23 @@
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
|
||||
electron_version="v12.0.9"
|
||||
electron_version="v14.0.0"
|
||||
|
||||
if [ $1 = "win32" ]; then
|
||||
jre="OpenJDK8U-jre_x86-32_windows_hotspot_8u292b10.zip"
|
||||
jre_release="jdk8u292-b10"
|
||||
jre_url="https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/$jre_release/$jre"
|
||||
arch="win32"
|
||||
electron="electron-$electron_version-win32-ia32.zip"
|
||||
else
|
||||
jre="OpenJDK8U-jre_x64_windows_hotspot_8u292b10.zip"
|
||||
jre="OpenJDK8U-jre_x64_windows_hotspot_8u302b08.zip"
|
||||
jre_release="jdk8u302-b08"
|
||||
jre_url="https://github.com/adoptium/temurin8-binaries/releases/download/$jre_release/$jre"
|
||||
arch="win64"
|
||||
electron="electron-$electron_version-win32-x64.zip"
|
||||
fi
|
||||
|
||||
jre_dir="jdk8u292-b10-jre"
|
||||
jre_dir="$jre_release-jre"
|
||||
|
||||
echo "creating windows bundle"
|
||||
|
||||
@@ -33,7 +37,7 @@ mkdir $release_name
|
||||
|
||||
echo "Dealing with jre..."
|
||||
if [ ! -f $jre ]; then
|
||||
curl -L "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u292-b10/$jre" -o $jre
|
||||
curl -L $jre_url -o $jre
|
||||
fi
|
||||
unzip $jre
|
||||
mv $jre_dir $release_name/jre
|
||||
|
||||
@@ -22,5 +22,5 @@ data class SourceDataClass(
|
||||
val isConfigurable: Boolean?,
|
||||
|
||||
/** The Source class has a @Nsfw annotation */
|
||||
val isNSFW: Boolean?,
|
||||
val isNsfw: Boolean?,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user