Commit graph

10549 commits

Author SHA1 Message Date
littlecodedragon
b299a9ce81 docs(reading-eta): document unified limits, long chapters, and settings
Capture library vs reader ETA behaviour, historical duplicate caps, tunable
preferences, and code map from the reading-eta work. Link from README.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-30 13:56:33 +02:00
littlecodedragon
f178a79195 feat(reading-eta): unify library and reader limits; make caps tunable
All checks were successful
Forgejo Release Builder / release (push) Successful in 5m17s
Introduce ReadingEtaPreferences and ReadingEtaLimits so library badges, reader series ETA, cross-manga history mining, and page-rate estimation share one configuration. Add reader settings sliders (EN/DE strings). Register preferences in PreferenceModule and wire GetCrossMangaPageRateHistorySamples.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-14 01:36:28 +02:00
littlecodedragon
e0f4262407 ci(forgejo): verify signed APKs with unzip + aapt before upload
All checks were successful
Forgejo Release Builder / release (push) Successful in 4m48s
Fails the job if an artifact is not a valid zip or manifest (same class
of errors as Android 'package could not be parsed' after download).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-11 07:06:23 +02:00
littlecodedragon
6316b85a09 fix(release): tolerate Forgejo null body/assets in release JSON
Gitea may emit null for empty release notes or assets; enable
Json.coerceInputValues and defaults so update checks do not fail
deserialization (unrelated to release-note workflow length).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-11 07:04:04 +02:00
littlecodedragon
f91af6fc72 ci(forgejo): shorten release notes to since-last-tag + cap
- Build What's Changed from previous v* tag..HEAD only (not upstream..HEAD).
- List at most 50 newest commits with pointer to Full Changelog compare.
- Drop fork-delta footer block to reduce scrolling.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-11 06:57:58 +02:00
littlecodedragon
c15d280cb4 feat(eta): cross-manga page-rate priors for reading time left
All checks were successful
Forgejo Release Builder / release (push) Successful in 5m53s
Blend series-local ms/page with samples from completed chapters in other
titles (similar page counts via ±15%/±30% bands). Removes fixed ms/page
floors; adds SQL query + estimator + DI wiring.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-11 02:59:22 +02:00
littlecodedragon
07019175d1 fix(eta): tame reading-time estimates (idle + cumulative history)
- Cap per-chapter samples used for averages at 45m (stats only).
- Prefer session ms/page extrapolation for current chapter so cumulative
  DB read time over revisits no longer blows up duration/progress.
- Floor uncertain page rates using conservative ms/page until enough samples.
- Shared defaults in ReadingEtaDefaults for reader + library badge.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-11 02:28:28 +02:00
littlecodedragon
9ce3f0ba29 ci(forgejo): group release notes by prefix and fork vs merges
Bucket commits into New/Fix/Improve/Other from conventional-style
subjects. When upstream main is available, split direct fork commits
from merge commits under separate headings.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 22:17:56 +02:00
littlecodedragon
7fab10c8ef CI: build release JSON with jq --rawfile (avoid ARG_MAX on large bodies
All checks were successful
Forgejo Release Builder / release (push) Successful in 3m30s
Huge changelog strings passed as jq --arg exceeded Linux exec argument limit.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 21:28:58 +02:00
littlecodedragon
e89f342881 CI: fix release step env — multiline COMMIT_LOGS broke act_runner
Some checks failed
Forgejo Release Builder / release (push) Failing after 3m41s
Pass commit messages via tmp file + COMMIT_LOG_FILE in GITHUB_ENV instead
of injecting COMMIT_LOGS into step env (Forgejo runner could fail before
bash ran, producing no logs).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 21:09:30 +02:00
littlecodedragon
7bca00964e CI: persistent Gradle cache, safer release API logs, faster SDK step
Some checks failed
Forgejo Release Builder / release (push) Failing after 16m20s
- Use $HOME/.cache/komikku-ci-gradle (override KOMIKKU_GRADLE_CACHE on runner)
  instead of per-job .gradle-ci under the checkout so dependencies survive runs.
- Skip sdkmanager when build-tools 35.0.0 already installed.
- Enable kotlin.incremental for assembleRelease to shorten Kotlin compile.
- Replace curl -f release/asset calls with explicit HTTP status checks and
  always print JSON error bodies on failure (Forgejo UI often hid stderr).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 20:32:26 +02:00
littlecodedragon
06bc3a6a0c Fix: restore build_release.yml asset naming after draft toggle
Accidentally reverted version_core naming and release notes when switching
draft to false. Restore stable Komikku-v<semver>-<abi> artifacts and
alias logic; keep draft: false for Obtainium/public API visibility.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 20:12:27 +02:00
littlecodedragon
940a669936 CI: publish releases as non-draft for Obtainium and public API
Draft releases are not visible to unauthenticated API clients, so
Obtainium could not list or match a suitable version. Use draft: false
when creating or updating Forgejo releases.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 20:12:02 +02:00
littlecodedragon
b81d3eb198 CI: resolve merge conflict markers in build_release.yml
Some checks failed
Forgejo Release Builder / release (push) Failing after 17m24s
Invalid YAML from leftover <<<<<<< / ======= / >>>>>>> markers broke
Forgejo Actions parsing. Keep fork delta, full changelog link, and tip block.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 20:05:53 +02:00
littlecodedragon
fe43d3ef2c Reader: track per-page history metrics for ETA and backups
Persist per-session pages read in history, include it in backup/restore, and prefer a page-based ETA model so chapter-length variance (especially webtoons) is reflected more accurately.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 18:35:41 +02:00
littlecodedragon
384aee7372 Release: use fork update source and upstream-based changelog delta
Point in-app release checks/changelog links to the Forgejo fork and generate release notes against upstream komikku-app baseline commits for clearer fork-specific change visibility.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 18:29:15 +02:00
littlecodedragon
de5e0a32d3 Improve release asset naming and notes for Obtainium.
Normalize APK filenames to stable ABI/version patterns and add clearer release notes with a download guide so clients like Obtainium can reliably match assets.
2026-05-09 12:40:01 +02:00
littlecodedragon
b26a537d55 Fix DI registration for read-duration history interactor
All checks were successful
Forgejo Release Builder / release (push) Successful in 17m1s
Register GetReadDurationEntriesByMangaIds in DomainModule so LibraryScreenModel can resolve it and the app no longer crashes on startup.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 12:20:27 +02:00
littlecodedragon
a2f9003008 CI: publish only signed release APKs
All checks were successful
Forgejo Release Builder / release (push) Successful in 17m24s
Prevent unsigned artifacts from being published as Obtainium aliases and fail fast when signing secrets are missing so releases remain installable.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 07:55:21 +02:00
littlecodedragon
7e3738551b CI: allow insecure curl for self-signed Forgejo API
All checks were successful
Forgejo Release Builder / release (push) Successful in 15m48s
2026-05-08 08:34:29 +02:00
littlecodedragon
0d6a348578 CI: ensure curl is available in Forgejo release steps
Some checks failed
Forgejo Release Builder / release (push) Failing after 16m51s
2026-05-08 07:11:00 +02:00
littlecodedragon
52036476a2 CI: use jq for Forgejo release API (no python3)
Some checks failed
Forgejo Release Builder / release (push) Failing after 17m13s
2026-05-08 01:46:24 +02:00
littlecodedragon
4b1b0e8cc4 CI: raise Gradle heap to avoid GC thrashing on app compile
Some checks failed
Forgejo Release Builder / release (push) Failing after 17m16s
2026-05-08 00:28:19 +02:00
littlecodedragon
41f0ee6bf5 Fix suspend aggregation in read-duration interactor
Some checks failed
Forgejo Release Builder / release (push) Failing after 10m38s
2026-05-08 00:13:40 +02:00
littlecodedragon
25137641c1 Fix ETA history duration mapping for library compile
Some checks failed
Forgejo Release Builder / release (push) Failing after 7m34s
2026-05-07 06:35:29 +02:00
littlecodedragon
e301ee2574 CI: export JAVA_HOME and persist sdk.dir for build step
Some checks failed
Forgejo Release Builder / release (push) Failing after 8m17s
2026-05-07 06:13:47 +02:00
littlecodedragon
780ef2af25 Fix library ETA compile by adding history interactor
Some checks failed
Forgejo Release Builder / release (push) Failing after 8m38s
2026-05-07 06:08:52 +02:00
littlecodedragon
fe3e366181 CI: raise JVM memory for resource merge OOM
Some checks failed
Forgejo Release Builder / release (push) Failing after 8m28s
2026-05-07 05:56:14 +02:00
littlecodedragon
1a410d44c8 CI: avoid pipefail false failure in sdkmanager pipe
Some checks failed
Forgejo Release Builder / release (push) Failing after 7m57s
2026-05-07 05:16:47 +02:00
littlecodedragon
8aac90d32a CI: ensure build-tools 35 and verify aidl before build
Some checks failed
Forgejo Release Builder / release (push) Failing after -22s
2026-05-07 05:15:06 +02:00
littlecodedragon
510fcf1811 ci: autodetect Android SDK path on desktop runner
Some checks failed
Forgejo Release Builder / release (push) Failing after 8m12s
2026-05-07 00:25:47 +02:00
littlecodedragon
2cf613d19f ci: use server URL for checkout on external runners
Some checks failed
Forgejo Release Builder / release (push) Failing after 6m9s
2026-05-07 00:16:03 +02:00
littlecodedragon
232800cab1 ci: pin release workflow to desktop runner label
Some checks failed
Forgejo Release Builder / release (push) Failing after -24s
2026-05-07 00:11:28 +02:00
littlecodedragon
780bd1bfc0 ci: rebalance JVM memory towards metaspace for buildSrc
Some checks failed
Forgejo Release Builder / release (push) Failing after 9m34s
2026-05-06 23:24:58 +02:00
littlecodedragon
320ea451ec ci: switch release workflow to ultra low-memory mode
Some checks failed
Forgejo Release Builder / release (push) Failing after 8m13s
2026-05-06 23:13:50 +02:00
littlecodedragon
3ca6462cec ci: reduce Gradle/Kotlin memory footprint for low-RAM runners
Some checks failed
Forgejo Release Builder / release (push) Failing after 9m14s
2026-05-06 23:01:24 +02:00
littlecodedragon
453f7d6681 ci: cap Kotlin daemon memory for low-RAM runners
Some checks failed
Forgejo Release Builder / release (push) Failing after 5m43s
2026-05-06 22:46:32 +02:00
littlecodedragon
bc84ffb691 ci: harden Gradle for low-memory Forgejo runners
Some checks failed
Forgejo Release Builder / release (push) Failing after 6m45s
2026-05-06 22:27:27 +02:00
littlecodedragon
72fa8ee325 ci: stabilize Forgejo Gradle build under runner memory limits
Some checks failed
Forgejo Release Builder / release (push) Failing after 7m28s
2026-05-06 22:15:30 +02:00
littlecodedragon
48436e3c46 feat(reader): restore series ETA tracking and estimated time left
Some checks failed
Forgejo Release Builder / release (push) Failing after 5m28s
2026-05-06 22:04:16 +02:00
littlecodedragon
af860b5f9d Merge remote-tracking branch 'upstream/master'
Some checks failed
Forgejo Release Builder / release (push) Failing after 27m23s
2026-05-06 16:06:29 +02:00
littlecodedragon
3b08f156d5 Add Obtainium-friendly release asset aliases.
Create stable universal and arm64 APK alias names and improve release display version so repo URL import works more reliably in Obtainium.
2026-04-27 21:08:47 +02:00
littlecodedragon
f37086978d Add optional APK signing via Forgejo secrets.
All checks were successful
Forgejo Release Builder / release (push) Successful in 22m39s
Decode keystore from secrets, sign unsigned APK artifacts with apksigner when configured, and prefer uploading signed APKs.
2026-04-27 19:11:42 +02:00
littlecodedragon
55d7525d26 Handle missing mapping output in no-shrink Forgejo builds.
All checks were successful
Forgejo Release Builder / release (push) Successful in 20m37s
Only create mapping zip when the mapping directory exists to avoid zip failures when code shrinking is disabled.
2026-04-27 18:43:47 +02:00
littlecodedragon
ab252123ae Disable code shrinking for local Forgejo release CI builds.
Some checks failed
Forgejo Release Builder / release (push) Failing after 21m34s
Use -Pdisable-code-shrink to bypass R8/proguard in local fork CI where minification currently crashes the daemon.
2026-04-27 17:56:57 +02:00
littlecodedragon
d6be3d1351 Harden Forgejo release build against Kotlin daemon crashes.
Some checks failed
Forgejo Release Builder / release (push) Failing after 18m4s
Force in-process Kotlin compilation, disable daemon use, and reduce workers to lower memory pressure in containerized CI.
2026-04-27 17:36:06 +02:00
littlecodedragon
688b796e59 Make Forgejo release build work without Google secrets.
Some checks failed
Forgejo Release Builder / release (push) Failing after 17m39s
Remove secret JSON steps and build without telemetry so local fork release CI can run without cloud credentials.
2026-04-27 17:17:24 +02:00
littlecodedragon
17c6e6bd05 Normalize Forgejo JSON secrets before writing release files.
Some checks failed
Forgejo Release Builder / release (push) Failing after 3s
Accept raw JSON, quoted JSON, or base64 JSON for secret payloads and emit valid canonical JSON files for Gradle processing.
2026-04-27 17:13:47 +02:00
littlecodedragon
ea69546fcb Accept raw or base64 JSON secrets in Forgejo release workflow.
Some checks failed
Forgejo Release Builder / release (push) Failing after 3s
Validate secrets as JSON and fall back to base64 decoding when needed so google-services and client secrets are parsed correctly.
2026-04-27 17:12:18 +02:00
littlecodedragon
1f552c2774 Fix malformed JSON secret files in Forgejo release workflow.
Some checks failed
Forgejo Release Builder / release (push) Failing after 3s
Write secrets via printf and validate with python json.tool so google-services and client secrets remain valid JSON in CI.
2026-04-27 17:11:18 +02:00