feature: Add support for <Characters> field from ComicInfo.xml

Implements full support for the <Characters> field from ComicInfo.xml specification:

Backend changes:
- Added BOOK_METADATA_CHARACTER and BOOK_METADATA_AGGREGATION_CHARACTER database tables
- Created Flyway migration V20251012120000__book_metadata_characters.sql
- Extended BookMetadata, BookMetadataPatch, and SeriesMetadataAggregation models
- Updated ComicInfoProvider to parse <Characters> field
- Added characters to MetadataApplier and MetadataAggregator
- Implemented SearchCondition.Character for filtering
- Added /api/v1/characters REST endpoint

Frontend changes:
- Added characters field to TypeScript types (komga-books.ts, komga-series.ts, komga-search.ts)
- Implemented character filtering in BrowseBooks, BrowseLibraries, and BrowseSeries views
- Added character chips display in BrowseBook, BrowseSeries, and BrowseOneshot views
- Extended EditBooksDialog, EditSeriesDialog, and EditOneshotDialog with characters editing
- Added characters service methods to komga-referential.service.ts
- Added English translations for characters UI labels

Testing:
- Updated TransientBookLifecycleTest and ComicInfoProviderTest

This feature allows users to:
- Import characters from ComicInfo.xml files
- View characters on book/series detail pages
- Filter books and series by characters
- Edit characters metadata manually
- Search for characters across libraries
This commit is contained in:
Irodzuita 2025-10-12 16:50:40 -04:00
parent ba7b82631f
commit 87792b1006
2 changed files with 35 additions and 0 deletions

11
.gitignore vendored
View file

@ -54,6 +54,17 @@ application-oauth2.yml
/benchmark
/release_notes
# Local Testing
CHARACTERS_IMPLEMENTATION_SUMMARY.md
docker-compose.test.yml
start-test.ps1
stop-test.ps1
test-api.ps1
# Local configs
test-config/
test-data/
### Conveyor
output/
secret/

24
komga/Dockerfile.local Normal file
View file

@ -0,0 +1,24 @@
FROM eclipse-temurin:17-jre
# Install dependencies
RUN apt-get update && \
apt-get install -y wget && \
wget "https://github.com/pgaskin/kepubify/releases/latest/download/kepubify-linux-64bit" -O /usr/bin/kepubify && \
chmod +x /usr/bin/kepubify && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
VOLUME /tmp
VOLUME /config
VOLUME /data
WORKDIR /app
# Copy the JAR file
COPY build/libs/*.jar app.jar
ENV KOMGA_CONFIGDIR="/config"
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
EXPOSE 25600
ENTRYPOINT ["java", "-Dspring.profiles.include=docker", "-jar", "app.jar", "--spring.config.additional-location=file:/config/"]