Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
6e382ab
feat(release-tracking): add series_tracking sidecar and series_aliase…
AshDevFr May 1, 2026
4b8cde1
feat(release-tracking): add backfill task, tracking API, and UI surface
AshDevFr May 1, 2026
b0a8de5
feat(release-tracking): add release ledger schema, repos, and HTTP API
AshDevFr May 1, 2026
7f32b6b
feat(release-tracking): add release_source plugin capability with cap…
AshDevFr May 4, 2026
d14e458
feat(release-tracking): add poll task, scheduler, and per-host backoff
AshDevFr May 4, 2026
69c845e
feat(release-tracking): expose upstream-publication gap on series DTO
AshDevFr May 4, 2026
d4a86b1
feat(release-tracking): add MangaUpdates RSS plugin and language pref…
AshDevFr May 4, 2026
3b73264
feat(release-tracking): add ReleaseAnnounced event and Releases UI
AshDevFr May 4, 2026
f6eca11
feat(release-tracking): add Nyaa uploader-feed release-source plugin
AshDevFr May 4, 2026
ec17cfe
feat(release-tracking): persist notification preferences and clean up…
AshDevFr May 4, 2026
796af9a
feat(release-tracking): add releases/register_sources reverse-RPC
AshDevFr May 5, 2026
b705738
feat(release-tracking): seed tracking on toggle, bulk track menu, las…
AshDevFr May 5, 2026
1f6f7e8
fix(release-tracking): match api: external IDs, dedup polls, emit pol…
AshDevFr May 5, 2026
0182c6d
fix(release-mangaupdates): decode base36 slugs to numeric IDs before …
AshDevFr May 5, 2026
389987f
feat(release-nyaa): tokenize bundle releases and split alias-form titles
AshDevFr May 5, 2026
bfcd1a6
fix(release-mangaupdates): default item language to "en" so items sur…
AshDevFr May 5, 2026
56f290f
feat(release-tracking): add mediaUrl + mediaUrlKind for direct fetch …
AshDevFr May 5, 2026
e2e47bb
test(release-tracking): cover seed-on-track, bulk track menu, applica…
AshDevFr May 5, 2026
718daf0
fix(release-tracking): poll source list while poll task is in flight
AshDevFr May 5, 2026
a26b392
feat(release-tracking): add inbox facets, bulk actions, and per-row d…
AshDevFr May 5, 2026
d387d21
feat(release-tracking): unify inbox + series releases UI and fix bulk…
AshDevFr May 6, 2026
d769aa2
feat(release-tracking): replace dismissed toggle with New/All segment…
AshDevFr May 6, 2026
a57644c
fix(plugins): replay reverse-RPC events through task-local broadcaster
AshDevFr May 6, 2026
7789d78
refactor(release-tracking): replace per-source poll seconds with cron…
AshDevFr May 6, 2026
a7af2d0
feat(release-tracking): expose default cron schedule on settings page
AshDevFr May 6, 2026
2e28eb0
feat(release-tracking): auto-ignore releases for already-owned volume…
AshDevFr May 6, 2026
a2f46ac
feat(plugins): allow array config fields and broaden type hint
AshDevFr May 6, 2026
ec675f7
fix(web): resolve TypeScript build errors in releases UI
AshDevFr May 6, 2026
4f7fd3b
chore(screenshots): cover release tracking + bulk metadata, fix PDF w…
AshDevFr May 6, 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
4 changes: 4 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,8 @@ jobs:
- metadata-openlibrary
- recommendations-anilist
- sync-anilist
- release-mangaupdates
- release-nyaa
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
Expand Down Expand Up @@ -562,6 +564,8 @@ jobs:
- metadata-openlibrary
- recommendations-anilist
- sync-anilist
- release-mangaupdates
- release-nyaa
steps:
- uses: actions/checkout@v4
with:
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,8 @@ jobs:
- metadata-openlibrary
- recommendations-anilist
- sync-anilist
- release-mangaupdates
- release-nyaa
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
Expand Down
7 changes: 6 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,12 @@ plugins-outdated: ## Check for outdated plugin dependencies

plugins-build: ## Build all plugins
@echo "$(BLUE)Building plugins...$(NC)"
@for dir in $(PLUGIN_DIRS); do \
@# sdk-typescript must build first: every other plugin imports from
@# its compiled dist, and esbuild fails fast on missing exports if
@# the SDK dist is stale.
@echo "$(YELLOW)Building sdk-typescript...$(NC)"
@(cd plugins/sdk-typescript && npm run build)
@for dir in $(PLUGIN_ONLY_DIRS); do \
echo "$(YELLOW)Building $$dir...$(NC)"; \
(cd plugins/$$dir && npm run build); \
done
Expand Down
52 changes: 48 additions & 4 deletions config/seed-config.sample.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -88,28 +88,72 @@ plugins:
credential_delivery: env

# AniList Recommendations - Personalized manga recommendations
# Recommendation plugins are gated by manifest capability + per-user enable;
# they don't write metadata, so no `permissions` or `scopes` are needed.
- name: recommendations-anilist
display_name: AniList Recommendations
description: Personalized manga recommendations from AniList based on reading history
plugin_type: user
command: node
args: ["/opt/codex/plugins/recommendations-anilist/dist/index.js"]
permissions:
- "metadata:read"
permissions: []
scopes: []
credential_delivery: env

# AniList Sync - Reading progress sync
# Sync plugins are gated by manifest capability + per-user enable; they don't
# write series/book metadata, so no `permissions` or `scopes` are needed.
- name: sync-anilist
display_name: AniList Sync
description: Sync manga reading progress between Codex and AniList
plugin_type: user
command: node
args: ["/opt/codex/plugins/sync-anilist/dist/index.js"]
permissions:
- "metadata:read"
permissions: []
scopes: []
credential_delivery: env

# MangaUpdates Releases - Translation/scanlation release feed (no credentials needed)
# Release-source plugins are gated by manifest capability at reverse-RPC
# dispatch; they don't write metadata, so no `permissions` or `scopes` are needed.
#
# On first start the plugin auto-registers a single source row visible at
# Settings → Release tracking. Optional `config.blockedGroups` (CSV) filters
# noisy scanlators server-wide.
- name: release-mangaupdates
display_name: MangaUpdates Releases
description: Announces new chapter releases for tracked series via MangaUpdates per-series RSS feeds
command: node
args: ["/opt/codex/plugins/release-mangaupdates/dist/index.js"]
permissions: []
scopes: []
credential_delivery: env
# config:
# blockedGroups: "LowQualityScans,MTL Group"

# Nyaa Releases - Acquisition-pointer source for trusted uploaders (no credentials needed)
#
# The `uploaders` config below drives one source row per entry at
# Settings → Release tracking. Each entry is one of:
# `username` -> Nyaa user feed (https://nyaa.si/?page=rss&u=<username>)
# `q:<text>` -> plain site-wide search
# `q:?<key=value>` -> URL-style search with allowlisted keys (q, c, f, u),
# e.g. `q:?c=3_1&q=Berserk` for English-translated
# Literature category. See plugin docs for details.
#
# Removing an entry and re-saving prunes its source row (and its
# release_ledger history). Per-source poll interval / enable / "Poll now"
# live in the Release tracking UI.
- name: release-nyaa
display_name: Nyaa Releases
description: Announces new chapter / volume torrents for tracked series via Nyaa.si uploader RSS feeds
command: node
args: ["/opt/codex/plugins/release-nyaa/dist/index.js"]
permissions: []
scopes: []
credential_delivery: env
# config:
# uploaders: "tsuna69,TankobonBlur,q:?c=3_1&q=Berserk"

# =============================================================================
# Libraries
Expand Down
16 changes: 14 additions & 2 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,8 @@ services:
- ./plugins/metadata-openlibrary/dist:/opt/codex/plugins/metadata-openlibrary/dist:ro
- ./plugins/recommendations-anilist/dist:/opt/codex/plugins/recommendations-anilist/dist:ro
- ./plugins/sync-anilist/dist:/opt/codex/plugins/sync-anilist/dist:ro
- ./plugins/release-mangaupdates/dist:/opt/codex/plugins/release-mangaupdates/dist:ro
- ./plugins/release-nyaa/dist:/opt/codex/plugins/release-nyaa/dist:ro
environment:
RUST_BACKTRACE: 1
# Email configuration for Mailhog
Expand Down Expand Up @@ -156,6 +158,8 @@ services:
- ./plugins/metadata-openlibrary/dist:/opt/codex/plugins/metadata-openlibrary/dist:ro
- ./plugins/recommendations-anilist/dist:/opt/codex/plugins/recommendations-anilist/dist:ro
- ./plugins/sync-anilist/dist:/opt/codex/plugins/sync-anilist/dist:ro
- ./plugins/release-mangaupdates/dist:/opt/codex/plugins/release-mangaupdates/dist:ro
- ./plugins/release-nyaa/dist:/opt/codex/plugins/release-nyaa/dist:ro
command:
[
"cargo",
Expand Down Expand Up @@ -217,6 +221,8 @@ services:
- /plugins/metadata-openlibrary/node_modules
- /plugins/recommendations-anilist/node_modules
- /plugins/sync-anilist/node_modules
- /plugins/release-mangaupdates/node_modules
- /plugins/release-nyaa/node_modules
command:
- sh
- -c
Expand All @@ -228,15 +234,19 @@ services:
cd /plugins/metadata-openlibrary && npm install && npm run build &&
cd /plugins/recommendations-anilist && npm install && npm run build &&
cd /plugins/sync-anilist && npm install && npm run build &&
cd /plugins/release-mangaupdates && npm install && npm run build &&
cd /plugins/release-nyaa && npm install && npm run build &&
echo 'Initial build complete. Watching for changes...' &&
npm install -g concurrently &&
concurrently --names 'sdk,echo,mangabaka,openlibrary,rec-anilist,sync-anilist' --prefix-colors 'blue,green,yellow,magenta,cyan,red' \
concurrently --names 'sdk,echo,mangabaka,openlibrary,rec-anilist,sync-anilist,rel-mu,rel-nyaa' --prefix-colors 'blue,green,yellow,magenta,cyan,red,gray,white' \
"cd /plugins/sdk-typescript && npm run dev" \
"cd /plugins/metadata-echo && npm run dev" \
"cd /plugins/metadata-mangabaka && npm run dev" \
"cd /plugins/metadata-openlibrary && npm run dev" \
"cd /plugins/recommendations-anilist && npm run dev" \
"cd /plugins/sync-anilist && npm run dev"
"cd /plugins/sync-anilist && npm run dev" \
"cd /plugins/release-mangaupdates && npm run dev" \
"cd /plugins/release-nyaa && npm run dev"
networks:
- codex-network
profiles:
Expand Down Expand Up @@ -375,6 +385,8 @@ services:
start_period: 30s
networks:
- codex-network
ports:
- "8081:8080"
profiles:
- screenshots

Expand Down
Loading
Loading