Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
14bc81b
Fix critical race conditions and add code quality improvements
Feb 4, 2026
dc78425
Address code review findings
Feb 4, 2026
97343a9
Add manually triggered Docker build workflow
Feb 4, 2026
d726df6
Add Unraid Docker template
Feb 4, 2026
5ed3869
Fix npm peer dependency conflicts in Docker build workflow
Feb 4, 2026
19f03f1
Fix Docker build: use npm install instead of npm ci
Feb 4, 2026
8c4dfa4
Switch Docker build to pnpm and update lock file
Feb 4, 2026
c359e33
Fix Dockerfile script permissions
Feb 4, 2026
90a9056
Add configurable file naming templates and output format options
Feb 4, 2026
dccac1e
Add GPU passthrough support to Unraid template
Feb 4, 2026
a1f48bf
Fix template parser bugs from code review
Feb 4, 2026
125aa36
Fix library importer stuck state and SignalR connection errors
Feb 4, 2026
9cf1d80
Fix Settings namespace conflict in template parser
Feb 4, 2026
8b5ea41
Fix remaining Settings namespace conflicts in TemplateParser
Feb 4, 2026
504bc48
Fix Settings instantiation in TemplateParser.GetPreview
Feb 4, 2026
00b8c7b
Make import wizard fully mobile responsive
Feb 4, 2026
c7b5792
Fix wizard modal overflow on mobile devices
Feb 4, 2026
55f3899
Add Library link to sidebar navigation
Feb 4, 2026
57aa433
Rebrand Kaizoku.NET to Kaizoku with new minimalist logo
Feb 4, 2026
5188721
Update repo URLs after rename to Kaizoku
Feb 4, 2026
130c6a4
Fix series details page mobile overflow issues
Feb 4, 2026
d4389e4
Fix TypeScript errors in naming-format-section
Feb 4, 2026
b8b0eec
Fix wwwroot.zip path structure in Docker build
Feb 4, 2026
46563f4
Simplify naming settings and add file rename option
Feb 4, 2026
8a330a3
Implement actual file rename logic
Feb 4, 2026
7c979f3
Fix logo transparency for dark theme
Feb 4, 2026
6e2e28a
Fix: Use Dialog instead of missing AlertDialog component
Feb 4, 2026
f542fca
Fix naming conflicts and logo transparency
Feb 4, 2026
a52cbc5
Add endpoint to clear all queued downloads
Feb 4, 2026
6f44e67
Fix: Use correct QueueStatus enum value (Waiting not Queued)
Feb 4, 2026
f45aa17
Fix: Rename files and cover image loading bugs
Feb 5, 2026
a4fd69a
Fix: Cover images not loading + smaller placeholder icon
Feb 5, 2026
33f91dd
Fix: Thumbnail endpoint returning 400 Bad Request
Feb 5, 2026
55b0b40
Fix: RSC payload 404 errors breaking manga search
Feb 5, 2026
26c969c
Fix: Mobile UI for source cards - stack cover image vertically
Feb 5, 2026
55f62a5
Fix: Provider page buttons show only icons on mobile
Feb 5, 2026
eedf050
Fix: Improve mobile UI for library page
Feb 5, 2026
ec0398a
Fix: Source card layout for tablet/foldable screens
Feb 5, 2026
b97074e
Feature: Add clear button to scheduled download items
Feb 5, 2026
98f4c3c
Fix: Series details card layout for tablet/foldable screens
Feb 5, 2026
9b15aa7
Feature: Add series details modal for mobile on Newly Minted page
Feb 5, 2026
579ebe3
suyo
Quickkill0 Feb 6, 2026
cd55510
Fix: Import system stability and scan progress persistence
Quickkill0 Feb 10, 2026
d7ab4f8
Revert rebrand and icon changes, keep all functional fixes
Quickkill0 Feb 18, 2026
5b983a4
Fix JSX syntax error causing build failure in provider-manager
Quickkill0 Feb 18, 2026
fcd63e9
Fix JSX structure in provider-manager - remove duplicate conditional …
Quickkill0 Feb 18, 2026
32a1eac
Fix missing imports and undefined components in provider-manager
Quickkill0 Feb 18, 2026
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
144 changes: 144 additions & 0 deletions .github/workflows/docker-build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
name: Build and Push Docker Image

on:
workflow_dispatch:
inputs:
branch:
description: 'Branch to build'
required: true
default: 'main'
type: string
platforms:
description: 'Target platforms (comma-separated)'
required: true
default: 'linux/amd64,linux/arm64'
type: choice
options:
- 'linux/amd64'
- 'linux/arm64'
- 'linux/amd64,linux/arm64'
tag:
description: 'Docker image tag (leave empty for branch name)'
required: false
type: string

env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}

jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
ref: ${{ inputs.branch }}

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to Container Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '9.0.x'

- name: Setup Node.js and pnpm
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 10

- name: Build Frontend
working-directory: KaizokuFrontend
run: |
pnpm install --frozen-lockfile
pnpm run build

- name: Package Frontend for Backend
run: |
cd KaizokuFrontend/out
zip -r ../../KaizokuBackend/wwwroot.zip .
sha256sum ../../KaizokuBackend/wwwroot.zip | awk '{print $1}' > ../../KaizokuBackend/wwwroot.sha256

- name: Build Backend (linux-x64)
if: contains(inputs.platforms, 'linux/amd64')
run: |
dotnet publish KaizokuBackend/KaizokuBackend.csproj \
-c Release \
-r linux-x64 \
--self-contained true \
-o KaizokuBackend/bin/linux/amd64

- name: Build Backend (linux-arm64)
if: contains(inputs.platforms, 'linux/arm64')
run: |
dotnet publish KaizokuBackend/KaizokuBackend.csproj \
-c Release \
-r linux-arm64 \
--self-contained true \
-o KaizokuBackend/bin/linux/arm64

- name: Determine image tag
id: tag
run: |
if [ -n "${{ inputs.tag }}" ]; then
echo "tag=${{ inputs.tag }}" >> $GITHUB_OUTPUT
else
# Sanitize branch name for Docker tag
BRANCH="${{ inputs.branch }}"
TAG=$(echo "$BRANCH" | sed 's/[^a-zA-Z0-9._-]/-/g' | tr '[:upper:]' '[:lower:]')
echo "tag=$TAG" >> $GITHUB_OUTPUT
fi

- name: Extract metadata for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=raw,value=${{ steps.tag.outputs.tag }}
type=raw,value=${{ steps.tag.outputs.tag }}-${{ github.sha }}

- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: ./KaizokuBackend
file: ./KaizokuBackend/Dockerfile
platforms: ${{ inputs.platforms }}
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max

- name: Summary
run: |
echo "## Docker Image Built Successfully" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Branch:** ${{ inputs.branch }}" >> $GITHUB_STEP_SUMMARY
echo "**Platforms:** ${{ inputs.platforms }}" >> $GITHUB_STEP_SUMMARY
echo "**Image:** \`${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.tag.outputs.tag }}\`" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### Pull Command" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY
echo "docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.tag.outputs.tag }}" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -310,3 +310,7 @@ next-env.d.ts
KaizokuBackend/runtime/kaizoku.schedule.db-wal
/KaizokuBackend/wwwroot.sha256
/KaizokuBackend/wwwroot.zip

# Unraid templates (keep .example, ignore local customizations)
/unraid/*.xml
!/unraid/*.xml.example
16 changes: 15 additions & 1 deletion Kaizoku.sln
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@


Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
Expand All @@ -7,6 +7,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KaizokuBackend", "KaizokuBa
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KaizokuTray", "KaizokuTray\KaizokuTray.csproj", "{8D53A467-2804-46E4-BE2C-4EA1A6369097}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KaizokuBackend.Tests", "KaizokuBackend.Tests\KaizokuBackend.Tests.csproj", "{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -41,6 +43,18 @@ Global
{8D53A467-2804-46E4-BE2C-4EA1A6369097}.Release|x64.Build.0 = Release|Any CPU
{8D53A467-2804-46E4-BE2C-4EA1A6369097}.Release|x86.ActiveCfg = Release|Any CPU
{8D53A467-2804-46E4-BE2C-4EA1A6369097}.Release|x86.Build.0 = Release|Any CPU
{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Debug|x64.ActiveCfg = Debug|Any CPU
{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Debug|x64.Build.0 = Debug|Any CPU
{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Debug|x86.ActiveCfg = Debug|Any CPU
{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Debug|x86.Build.0 = Debug|Any CPU
{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Release|Any CPU.Build.0 = Release|Any CPU
{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Release|x64.ActiveCfg = Release|Any CPU
{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Release|x64.Build.0 = Release|Any CPU
{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Release|x86.ActiveCfg = Release|Any CPU
{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
17 changes: 17 additions & 0 deletions KaizokuBackend.Tests/KaizokuBackend.Tests.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
<PackageReference Include="xunit" Version="2.8.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.0" />
<PackageReference Include="Moq" Version="4.20.70" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="../KaizokuBackend/KaizokuBackend.csproj" />
</ItemGroup>
</Project>
Loading
Loading