Runtime configuration access for the reader packages.
All function-shaped options are {module, function} tuples so they
can live in compile-time config files.
config :manhwa,
store: MyApp.ReaderStore, # required
annotations: MyApp.ReaderAnnotations, # optional
gif_provider: MyApp.ReaderGifs, # optional
etcher_host: MyAppWeb.EtcherHostLive, # optional LiveView
current_user: {MyAppWeb.ReaderGlue, :current_user}, # (conn) -> user
etcher_session: {MyAppWeb.ReaderGlue, :etcher_session}, # (conn, user) -> map
series_url: {MyAppWeb.ReaderGlue, :series_url}, # (series) -> path
legacy_url: {MyAppWeb.ReaderGlue, :legacy_url} # (series, chapter) -> path | nil
Summary
Functions
Resolve the current user from the conn. Default: conn.assigns[:current_user].
Debug-log sink for on-device telemetry (iOS Safari sessions without
DevTools). nil disables the endpoint body (it still 200s). Set a
file path to append JSON lines.
The LiveView module embedded (via live_render/3) to host the Etcher
annotation layer and whatever comment UI the host wants. nil (the
default) renders no annotation layer.
Extra session entries for the etcher-host LiveView (e.g. an auth
token so the LiveView can re-load the user). Merged over the
package-provided keys (fresco_id, series, chapter, and — for
two-segment series — source/slug).
Optional {module, function} rendering extra head content on the
strip reader page (a function component taking an assigns map) —
e.g. an OCR runtime script tag powering the smart auto-reader.
Optional link to an alternate/legacy reader, shown in settings when present.
The mark rendered in the progress pill when a chapter is confirmed
read — any short string or emoji. Default "✓".
How far into a chapter (percent, 0–100) the reader must be before
the host-confirmed read checkmark first appears in the progress
pill — it latches per chapter once shown. The mark itself only ever
shows for chapters the Store reported chapter_read: true for, so
this is purely a display gate. Default 95 (the last 5%).
Host page for a series (the reader's Home / details link). Default /.
Functions
Resolve the current user from the conn. Default: conn.assigns[:current_user].
Debug-log sink for on-device telemetry (iOS Safari sessions without
DevTools). nil disables the endpoint body (it still 200s). Set a
file path to append JSON lines.
The LiveView module embedded (via live_render/3) to host the Etcher
annotation layer and whatever comment UI the host wants. nil (the
default) renders no annotation layer.
Extra session entries for the etcher-host LiveView (e.g. an auth
token so the LiveView can re-load the user). Merged over the
package-provided keys (fresco_id, series, chapter, and — for
two-segment series — source/slug).
Optional {module, function} rendering extra head content on the
strip reader page (a function component taking an assigns map) —
e.g. an OCR runtime script tag powering the smart auto-reader.
Optional link to an alternate/legacy reader, shown in settings when present.
The mark rendered in the progress pill when a chapter is confirmed
read — any short string or emoji. Default "✓".
config :manhwa, read_check_mark: "read"
How far into a chapter (percent, 0–100) the reader must be before
the host-confirmed read checkmark first appears in the progress
pill — it latches per chapter once shown. The mark itself only ever
shows for chapters the Store reported chapter_read: true for, so
this is purely a display gate. Default 95 (the last 5%).
config :manhwa, read_check_percent: 90
Host page for a series (the reader's Home / details link). Default /.