# manhwa v0.1.0 - Table of Contents

> Batteries-included long-strip comic reader for Phoenix — webtoons, manhwa, manhua, anything that reads by scrolling. Router-mounted reader with panel snap, auto-reader, progress, and settings on top of fresco_strip; persistence via a small Store behaviour.

## Pages

- [Manhwa](readme.md)
- [Changelog](changelog.md)
- [LICENSE](license.md)

## Modules

- [Manhwa](Manhwa.md): Batteries-included long-strip comic reader for Phoenix — webtoons,
manhwa, manhua, anything that reads by scrolling.
- [Manhwa.Annotations](Manhwa.Annotations.md): Optional adapter for the annotation layer (Etcher shapes + attached
comment threads). When unconfigured the reader works fully — the
annotate button and composer simply don't render.
- [Manhwa.Config](Manhwa.Config.md): Runtime configuration access for the reader packages.
- [Manhwa.EtcherHost](Manhwa.EtcherHost.md): Minimal default LiveView hosting the Etcher annotation layer for
the reader pages (which are controller-rendered — this embedded
LiveView supplies the channel Etcher's hook pushes events through).
- [Manhwa.GifProvider](Manhwa.GifProvider.md): Optional adapter backing the annotation composer's GIF picker.
When unconfigured the GIF button doesn't render.
- [Manhwa.ReaderController](Manhwa.ReaderController.md): The reader's own controller, mounted by `Manhwa.Router.manhwa_reader/2`.
- [Manhwa.ReaderHTML](Manhwa.ReaderHTML.md): View module for the strip reader page, plus the source-building
helpers shared with the template's inline engine.

- [Manhwa.ReaderState](Manhwa.ReaderState.md): Normalized access to the per-series state map returned by
`c:Manhwa.Store.reader_state/2`, plus the settings resolution
cascade (package default → saved setting → per-device slot →
transient URL override — the URL layer is applied by the
controllers).

- [Manhwa.Router](Manhwa.Router.md): Mounts the reader's routes into a host router.
- [Manhwa.Store](Manhwa.Store.md): The persistence contract between the reader and the host application.

