Milo is a multi-user, self-hosted web-based ebook reader application that supports multiple ebook formats, keeps track of your reading progress and has a touch-friendly web interface.
- Java 78.6%
- JavaScript 19%
- CSS 2.2%
- HTML 0.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
offsetHeight already includes the navbar's 1px bottom border, so the sticky offset was exact and any fudge just opens a gap. The original leak was a subpixel rounding seam between navbar bottom edge and pinned title top row. Seal it in CSS: .timeline-section-title sticks at calc(--milo-sticky-top - 1px), tucking its top row under the opaque navbar border (z-index 10 > 5), which paints over it — no transparent row can remain regardless of rounding, for every pinned title. |
||
| docs/superpowers/specs | ||
| frontend | ||
| gradle/wrapper | ||
| src | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| AGENTS.md | ||
| build.gradle | ||
| compose.yaml | ||
| Dockerfile | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| README.md | ||
| settings.gradle | ||
Milo
Milo is a multi-user, self-hosted web-based ebook reader application that supports multiple ebook formats, keeps track of your reading progress and has a touch-friendly web interface.
Legacy document host migration
Normal startup does not scan or rewrite the library. For an old library whose
stored document URIs still reference castleblack, run the app once with
--milo.migrations.legacy-document-host=true, then remove the flag. The migration
replaces castleblack with nuc.lan and saves only changed documents; null and
already migrated URIs are left alone. Do not leave this flag enabled in Compose.