# CodeStory v0.2.0 - Table of Contents

> A code comprehension tool that traces user-defined function calls as a nested call tree with named arguments and return values.

## Pages

- [CodeStory](readme.md)
- [Changelog](changelog.md)
- [License](license.md)

## Modules

- [CodeStory.CleanInspect](CodeStory.CleanInspect.md): Inspects a value, then strips Ecto bookkeeping noise from the resulting string —
`__meta__: #Ecto.Schema.Metadata<…>` and `#Ecto.Association.NotLoaded<…>` — so a
trace shows `%Order{id: 12, status: "paid", …}` instead of the full Ecto internals.
- [CodeStory.QueryLabel](CodeStory.QueryLabel.md): Compact, framed label for an `Ecto.Query` value — e.g.
`#Ecto.Query<Confab.Registration.Registration>` — so a query argument in a trace
reads as the schema it queries instead of a verbose `from … where … order_by …`
dump.

- Public API
  - [CodeStory](CodeStory.md): A code comprehension tool for surveying unfamiliar Elixir code.
  - [CodeStory.Encoder](CodeStory.Encoder.md): Converts a call tree into a JSON-ready plain-data structure.
  - [CodeStory.Fold](CodeStory.Fold.md): Collapses consecutive sibling runs of the same `{module, function, arity}` in a
call tree.

- Internals
  - [CodeStory.Args](CodeStory.Args.md): Extracts function parameter names from BEAM debug info chunks.

  - [CodeStory.Collector](CodeStory.Collector.md): GenServer that receives trace events and builds a nested call tree.
  - [CodeStory.Formatter](CodeStory.Formatter.md): Renders the call tree as a human-readable, color-coded string.
  - [CodeStory.Modules](CodeStory.Modules.md): Auto-detects user-defined modules from the host project's mix.exs app name.

  - [CodeStory.Tracer](CodeStory.Tracer.md): Configures Erlang tracing to feed events into the Collector.

