A Tachidesk Desktop UI built in JetBrains Compose

Overview

image

TachideskJUI

A free and open source manga reader to read manga from a Tachidesk server.

TachideskJUI can run the Tachidesk server on its own, or connect to an already hosted server.

Any platform that runs Java can run it. On most platforms are binaries available if you don't want to install Java yourself

Is this application usable? Should I test it?

Here is a list of current features for interaction with Tachidesk:

  • Installing and uninstalling Extensions.
  • Interaction with your library.
  • Browsing installed sources.
  • Viewing manga and chapter info.

Note: Keep in mind that TachideskJUI and Tachidesk are alpha software and can rarely break and/or with each update, so you may have to delete your data to fix it. See General troubleshooting and Support and help if it happens.

Downloading and Running the app

All Operating Systems (x64, Java Not Included)

You should have The Java Runtime Environment(JRE) 15 or newer.

Download the latest jar release for your OS from the releases section.

Double-click on the jar file or run java -jar TachideskJUI-os-arch-X.Y.Z.jar from a Terminal/Command Prompt window to run the app.

Windows (x64, Java 8+ required for server)

Installer

Download the latest msi release from the releases section.

Scoop

  1. Add Witchilich's Scoop bucket - scoop bucket add witchilich https://github.com/Witchilich/scoop-witchilich
  2. Add the Java Scoop bucket - scoop bucket add java
  3. Install TachideskJUI - scoop install tachideskjui

MacOS (x64, Java Included, Server not included)

Download the latest dmg release from the releases section.

Debian based Linux (x64, Java 8+ required for server)

Download the latest deb release from the releases section.

Fedora based Linux (x64, Java 8+ required for server)

Download the latest rpm release from the releases section.

Arch based Linux (x64, Java Included)

Download the latest release from the aur.

If you use yay, you can run yay -S tachidesk-jui inside a terminal window.

General troubleshooting

I'm having issues starting the application

Make sure you have used either an installer, or you have Java 15 installed.

It says server failed to start

Make sure that if you used an installer, that you have at least Java 8 installed.

Support and help

Join Tachidesk's discord server to hang out with the community and receive support and help.

Building from source

Prerequisite: Getting Tachidesk.jar

Linux

Run ./scripts/SetupUnix.sh in bash from project's root directory to download and rebuild the Tachidesk jar without the WebUI.

Windows

Run &"./scripts/SetupWindows.ps1" in powershell from project's root directory to download and rebuild the Tachidesk jar without the WebUI.

Prerequisite: Software dependencies

You need this software packages installed in order to build this project:

  • Java Development Kit and Java Runtime Environment version 15, this can be handled by IntelliJ

building a jar for your OS

Run ./gradlew packageUberJarForCurrentOS, the resulting built jar file will be build/compose/TachideskJUI-os-arch-X.Y.Z.jar.

Translation

Feel free to translate the project on Weblate

Translation Progress Translation status

Credit

The Tachidesk project is developed by @AriaMoradi and contributors, a link for Tachidesk is provided here and is licensed under Mozilla Public License v2.0.

Parts of Tachiyomi-1.x is adopted into this codebase, also licensed under Mozilla Public License v2.0.

You can obtain a copy of Mozilla Public License v2.0 from https://mozilla.org/MPL/2.0/

License

Copyright (C) 2020-2021 Syer and contributors

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 http://mozilla.org/MPL/2.0/.
Comments
  • Publish to Windows Package Managar (WinGet)

    Publish to Windows Package Managar (WinGet)

    This action automatically generates manifests for WinGet Community Repository (microsoft/winget-pkgs) and submits them.

    Before merging this:

    1. Please add a GitHub token with public_repo scope as a repository secret and rename the secret name in the workflow.
    2. Fork microsoft/winget-pkgs under @Suwayomi.
    opened by vedantmgoyal2009 6
  • [Bug] Color picker not functioning as intended (visually for the most part)

    [Bug] Color picker not functioning as intended (visually for the most part)

    Steps to reproduce

    1. Choosing primary or secondary from Appearance menu.

    Expected behavior

    1. The tickmark should change to different option when clicked. image

    Actual behavior

    1. Both the sections in the above window stay the same when clicked but works as intended in the background. The bottom section should include a tick mark as well.

    2. Right side of the custom color picker is not displaying properly. I think the selecting the element is glitched? Im guessing splitting the right side to elements to select from failed . Now, each element now displays the whole range of colors rather than small part of them to choose from. image

    bug 
    opened by BaccanoMob 6
  •  Adds the Chocolatey package as a way to install Tachidesk-JUI

    Adds the Chocolatey package as a way to install Tachidesk-JUI

    Hi Tachidesk-JUI devs,

    I have created this Pull Request because I have resolved this request for a Chocolatey package and now, we can install tachidesk using Chocolatey.

    For now, only the latest version (1.3.0) is available on Chocolatey. When new versions will be released, they will, then, be added to the Chocolatey package for users to enjoy. :slightly_smiling_face:

    closes #66

    opened by Xav83 5
  • [Bug] Build error

    [Bug] Build error


    Device information

    • Tachidesk-JUI version: (git commit 0015bccc2110cb51603c0a223668d752d9dd12f5)
    • Operating System: ( Fedora 35)
    • Server Type: ( Internal (i think) )
    • Client JVM version: (Java 17.0.1)

    Steps to reproduce

    Just try to build the project from the lastest github commit

    ##Logs

    > Task :presentation:compileKotlinDesktop FAILED
    e: /github/workspace/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/sources/home/SourceHomeScreenViewModel.kt: (44, 32): Unresolved reference: other
    
    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Execution failed for task ':presentation:compileKotlinDesktop'.
    > A failure occurred while executing org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction
       > Compilation error. See log for more details
    
    * Try:
    > Run with --info or --debug option to get more log output.
    > Run with --scan to get full insights.
    
    * Exception is:
    org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':presentation:compileKotlinDesktop'.
    	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:147)
    	at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282)
    	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:145)
    	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:133)
    	at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77)
    	at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
    	at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
    	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
    	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
    	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
    	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
    	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
    	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
    	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
    	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
    	at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)
    	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:333)
    	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:320)
    	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:313)
    	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:299)
    	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:143)
    	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:227)
    	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:218)
    	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:140)
    	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
    	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
    Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction
    	at org.gradle.workers.internal.DefaultWorkerExecutor$WorkItemExecution.waitForCompletion(DefaultWorkerExecutor.java:339)
    	at org.gradle.internal.work.DefaultAsyncWorkTracker.lambda$waitForItemsAndGatherFailures$2(DefaultAsyncWorkTracker.java:131)
    	at org.gradle.internal.Factories$1.create(Factories.java:31)
    	at org.gradle.internal.work.DefaultWorkerLeaseService.withoutLocks(DefaultWorkerLeaseService.java:341)
    	at org.gradle.internal.work.DefaultWorkerLeaseService.withoutLocks(DefaultWorkerLeaseService.java:326)
    	at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:127)
    	at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:93)
    	at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForAll(DefaultAsyncWorkTracker.java:79)
    	at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForCompletion(DefaultAsyncWorkTracker.java:67)
    	at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:250)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
    	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
    	at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:227)
    	at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:210)
    	at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:193)
    	at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:171)
    	at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:89)
    	at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:40)
    	at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:53)
    	at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:50)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
    	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
    	at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:50)
    	at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:40)
    	at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:68)
    	at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:38)
    	at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:48)
    	at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:36)
    	at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41)
    	at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74)
    	at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55)
    	at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51)
    	at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:29)
    	at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:61)
    	at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:42)
    	at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:60)
    	at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:27)
    	at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:180)
    	at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$1(BuildCacheStep.java:75)
    	at org.gradle.internal.Either$Right.fold(Either.java:175)
    	at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:59)
    	at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:73)
    	at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:48)
    	at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:36)
    	at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:25)
    	at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:36)
    	at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:22)
    	at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:110)
    	at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:56)
    	at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:56)
    	at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:38)
    	at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:73)
    	at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:44)
    	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
    	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
    	at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:89)
    	at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:50)
    	at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:114)
    	at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:57)
    	at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:76)
    	at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:50)
    	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.executeWithNoEmptySources(SkipEmptyWorkStep.java:249)
    	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.executeWithNoEmptySources(SkipEmptyWorkStep.java:204)
    	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:83)
    	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:54)
    	at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:32)
    	at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:21)
    	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
    	at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:43)
    	at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:31)
    	at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:40)
    	at org.gradle.api.internal.tasks.execution.TaskExecution$4.withWorkspace(TaskExecution.java:287)
    	at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:40)
    	at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30)
    	at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37)
    	at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27)
    	at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:44)
    	at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:33)
    	at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:76)
    	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:144)
    	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:133)
    	at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77)
    	at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
    	at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
    	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
    	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
    	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
    	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
    	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
    	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
    	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
    	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
    	at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)
    	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:333)
    	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:320)
    	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:313)
    	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:299)
    	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:143)
    	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:227)
    	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:218)
    	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:140)
    	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
    	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
    Caused by: org.gradle.api.GradleException: Compilation error. See log for more details
    	at org.jetbrains.kotlin.gradle.tasks.TasksUtilsKt.throwGradleExceptionIfError(tasksUtils.kt:22)
    	at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.run(GradleKotlinCompilerWork.kt:131)
    	at org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction.execute(GradleCompilerRunnerWithWorkers.kt:79)
    	at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)
    	at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:66)
    	at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:62)
    	at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:97)
    	at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:62)
    	at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
    	at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
    	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
    	at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
    	at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:59)
    	at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$2(DefaultWorkerExecutor.java:205)
    	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:187)
    	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:120)
    	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:162)
    	at org.gradle.internal.Factories$1.create(Factories.java:31)
    	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:270)
    	at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:119)
    	at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:124)
    	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:157)
    	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:126)
    	... 2 more
    
    
    * Get more help at https://help.gradle.org
    
    BUILD FAILED in 5m 49s
    
    Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.
    
    You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
    
    See https://docs.gradle.org/7.4.2/userguide/command_line_interface.html#sec:command_line_warnings
    
    Execution optimizations have been disabled for 1 invalid unit(s) of work during this build to ensure correctness.
    Please consult deprecation warnings for more details.
    40 actionable tasks: 40 executed
    

    Full logs: https://github.com/AldairbotHerotaku/Tachidesk-JUI/runs/8009132468?check_suite_focus=true

    bug 
    opened by AldairbotHerotaku 4
  • [Feature Request] Replacing the included tachidesk with the more updated version.

    [Feature Request] Replacing the included tachidesk with the more updated version.

    Is it possible to replace the included tachidesk jar with the more updated version in the main repo? I tried to just edit it with 7zip but it fails with 'not a valid jar' as expected.

    enhancement 
    opened by MagicalDrizzle 4
  • [Bug] Mangadex Blank Settings

    [Bug] Mangadex Blank Settings

    1637769263

    Device information

    • Tachidesk-JUI version: Tachidesk-JUI v1.1.2
    • Operating System: ArchLinux
    • Desktop Environment: OpenBox
    • Server Type: Internal
    • Client JVM version: 17.0.1.u12-1
    • Server JVM version: Same as Client

    Steps to reproduce

    1. Fresh Install Extension Mangadex
    2. Open Sources and Settings

    logs.txt

    bug 
    opened by py7hon 3
  • Tachidesk-JUI icon in windows 10.

    Tachidesk-JUI icon in windows 10.

    on Windows the app icon when installing is just the Kotlin icon. why not make change the icon to make the one's you're using on linux? app icon

    I think it'd look better this way and to easily distinguish it from other programs.

    enhancement 
    opened by objestik 3
  • Update README.md - add winget, change scoop command.

    Update README.md - add winget, change scoop command.

    The scoop manifest is now tachidesk-jui instead of tachideskjui. No need to add java bucket, since it does not depend on JRE from Java bucket anymore and Java is to installed by the user of their own discretion.

    opened by Witchilich 3
  • [Bug] Tachidesk fails to connect to the server

    [Bug] Tachidesk fails to connect to the server

    Device information

    • Tachidesk-JUI version: v1.3.0
    • Operating System: Arch Linux
    • Desktop Environment: KDE plasma 5.26.2
    • Server Type: Internal
    • Client JVM version: java-19-openjdk
    • Server JVM version: java-19-openjdk

    Steps to reproduce

    1. Launch Tachidesk-JUI
    2. Trying to connect to the server

    Expected behavior

    Tachidesk connecting to the server

    Actual behavior

    Connection to the server fails.

    here is the terminal log

    I've recently changed OS, in my previous system Tachidesk-jui worked perfectly which is strange - maybe something openjdk related? (I was using 17 before)

    installed with yay -S tachidesk-jui

    bug 
    opened by andreacorinti 2
  • [Bug] Categories dont reorginize

    [Bug] Categories dont reorginize

    Device information

    • TachideskJUI version: v1.1.0
    • Operating System: Windows 10
    • Desktop Environment: Windows 10
    • Server Type: Internal
    • Client JVM version: JUI Installer
    • Server JVM version: Java 15.0.3

    Steps to reproduce

    1. Open category menu
    2. Reorginize a category
    3. Nothing is saved

    Expected behavior

    Category should be reorganized

    Actual behavior

    Category is in its original position

    Other details

    Nothing much

    bug 
    opened by Syer10 2
  • [Feature Request] Update checker

    [Feature Request] Update checker

    What feature should be added to TachideskJUI?

    Every certain period of time the app should check for updates

    Why/Project's Benefit/Existing Problem

    Will help users keep updated

    enhancement 
    opened by Syer10 2
  • [Feature Request] Flatpak-build

    [Feature Request] Flatpak-build

    What feature should be added to Tachidesk-JUI?

    A Flatpak build would be nice.

    Why/Project's Benefit/Existing Problem

    Right now its a little bit of a pain to install this program on the Steam Deck. A proper Flatpak build would make things way easier. (preferably even publish it on the flathub repo)

    enhancement 
    opened by Darkitz 0
  • [Feature Request] Swipe scrolling

    [Feature Request] Swipe scrolling


    What feature should be added to Tachidesk-JUI?

    Swipe scrolling for touch screen user. For the reader and also in the chapter list page. Just like in sorayomi.

    I tested the android version of JUI and they both work on android. I would like the same swipe feature for the windows version.

    enhancement 
    opened by Kreach37 4
  • [Bug] Update not showing new chapters

    [Bug] Update not showing new chapters

    Device information

    • Tachidesk-JUI version: achidesk-jui_1.3.0-1
    • Operating System: Ubuntu 20.04
    • Desktop Environment: Gnome 3.36.8
    • Server Type: Internal
    • Client JVM version: openjdk 11.0.15
    • Server JVM version: Same as Client

    Steps to reproduce

    1. Open JUI
    2. Refresh in a manga in library to find that your page says 'No chapter found', refresh again to view the same old.

    Expected behavior

    To view new chaps

    Actual behavior

    A text appears saying 'No chapters found'

    bug 
    opened by syedaliasad649 2
  • [Feature Request] History Section

    [Feature Request] History Section

    What feature should be added to Tachidesk-JUI?

    A section that logs manga that you've read. A very traditional history similar to Tachiyomi which can read the data in Tachiyomi backups.

    Why/Project's Benefit/Existing Problem

    Enhance the experience of using Tachidesk.

    enhancement 
    opened by syedaliasad649 1
  • [Feature Request] Better Scrolling.

    [Feature Request] Better Scrolling.

    What feature should be added to Tachidesk-JUI?

    Ability to change the way scrolling currently works.

    A suggestion- Left and right should change pages of the manga, up and down should scroll a little and Space bar should scroll a page worth like it currently does with wasd||up down left right.

    What I really desire is rather a menu that lets me customize the way I want those keys to function.

    Why/Project's Benefit/Existing Problem

    This will make the JUI more user-friendly.

    enhancement 
    opened by syedaliasad649 0
Releases(v1.3.0)
Owner
The Suwayomi project is the collective effort of Tachidesk and other alternative user interfaces for it.
null
My nineteenth Kotlin project from JetBrains Academy

Connect Four Stage 5 of 5 for JetBrains Academy - Kotlin - Connect Four project. This stage has us add the option for more than one game ( and keeping

Danny 1 Oct 10, 2021
Mis experimentos con Kotlin para JetBrains Academy, certificación de Kotlin donde voy resolviendo proyectos de evaluación y haciendo actividades de cada tema.

Kotlin Academy Mis experimentos con Kotlin para JetBrains donde voy resolviendo proyectos de evaluación y haciendo actividades de cada tema. Acerca de

José Luis González Sánchez 1 Jan 10, 2022
Jugando con un Parking realizado como prueba de examen en JetBrains Academy, curso Kotlin Developer

Kotlin Parking Lot Proyecto de evaluación para el título de Kotlin Developer en Jetbrains Academy. Consiste en realizar un parking con las especificac

José Luis González Sánchez 1 Jan 10, 2022
>On this day< is a JetBrains Space app which shows Wikipedia-based information about what happened on that or given day

kotlin-spaces-app-onthisday On this day is a JetBrains Space app which shows Wikipedia-based information about what happened on that or given day Stat

Tobias Scholze 2 Oct 20, 2022
Jetpack Compose for Desktop and Web, a modern UI framework for Kotlin that makes building performant and beautiful user interfaces easy and enjoyable.

Jetpack Compose for Desktop and Web, a modern UI framework for Kotlin that makes building performant and beautiful user interfaces easy and enjoyable.

JetBrains 10k Jan 7, 2023
A clone of hn.premii.com implemented in KMP with Web (React), iOS (Swift UI), Android and Desktop (Compose) UIs

An clone of hn.premii.com implemented in Kotlin Multiplatform with shared Android/Desktop Compose UI, SwiftUI on iOS and React for Web This example su

Tarek Belkahia 7 Feb 5, 2022
Playground UI Compose in Desktop Apps

caravan-kotlin-desktop-compose Project Learning Jetpack Compose on Desktop Aplication Request Data Retrofit Version Release This Is Latest Release $ve

Faisal Amir 15 Dec 8, 2022
An Android app built with Kotlin, consuming StarWars API to display characters of the popular StarWars Movie. It is built with the MVVM pattern and the latest Jetpack components.

StarWars An Android app built with Kotlin, consuming StarWars API to display characters of the popular StarWars Movie. It is built with the MVVM patte

Joel Kanyi 42 Nov 20, 2022
Plugin and Desktop app for parsing layout xml into Composable code

composed-xml Inspired by - Recompose composed-xml is a tool for parsing Android layouts into Jetpack Compose code. It can work as both Desktop app or

Bacho Kurtanidze 9 Dec 26, 2022
Consumer desktop from nutrition-framework API

About This Project (work-in-progress ?? ??️ ??‍♀️ ⛏ ) Consumer Dari Nutrition Framework General Framework for Application Development Around Nutrition

Faisal Amir 6 Dec 1, 2022
FirestoreCleanArchitectureApp is an app built with Kotlin and Firestore that displays data in real-time using the MVVM Architecture Pattern. For the UI it uses Jetpack Compose, Android's modern toolkit for building native UI.

FirestoreCleanArchitectureApp FirestoreCleanArchitectureApp is an app built with Kotlin and Cloud Firestore that displays data in real-time using Andr

Alex 66 Dec 15, 2022
Android & iPhone payments apps built w/ SwiftUI & Jetpack Compose

Android & iPhone payments apps built w/ SwiftUI & Jetpack Compose, the apps persist data locally w/ SQLDelight and Remote w/ Firebase., Payments w/ Stripe and are architected to emphasize code sharing

Mwai Banda 21 Dec 21, 2022
Math Your Brain is a math game built using Jetpack Compose and Modern MVVM Architecture

Math Your Brain is a math game built using Jetpack Compose and Modern MVVM Architecture. I built this so that programmers learning Jetpack Compose Can use this repository as a learning material for Jetpack Compose.

Somnath Mishra 47 Jan 1, 2023
AnKunv2 is an Android application built with Jetpack Compose to stream anime on demand.

AnKunv2 AnKunv2 is an app a bit similar to YouTube but to stream anime. Updated from AnKun using Jetpack Compose. Tech Stack Kotlin AndroidX UI - Jetp

Albert E 7 Jan 7, 2023
📒 NotyKT is a complete 💎Kotlin-stack (Backend + Android) 📱 application built to demonstrate the use of Modern development tools with best practices implementation🦸.

NotyKT ??️ NotyKT is the complete Kotlin-stack note taking ??️ application ?? built to demonstrate a use of Kotlin programming language in server-side

Shreyas Patil 1.4k Dec 26, 2022
Shreyas Patil 2.2k Jan 4, 2023
Amazing and easy to use Accordion Library for Android built with kotlin

AccoLib An easy-to-use, amazing Accordion Library for Android built with kotlin. It reduces the amount of code needed to make Accordions in android, w

Gourav Khunger 6 Jul 4, 2022
An Intentionally designed Vulnerable Android Application built in Kotlin.

?? InsecureShop InsecureShop is an Android application that is designed to be intentionally vulnerable. The aim of creating this app is to teach devel

Optiv Security 212 Dec 24, 2022