# `fret-platform-web`

Browser/wasm32 platform services used by the Fret runtime.

This crate is expected to be used from `crates/fret-runner-web` (or other wasm runners) to satisfy
`fret-runtime::Effect`s that require browser APIs (timers, file inputs, IME bridges, etc.).

It intentionally does **not** implement input/event mapping; use `winit` (or another runner) for
that layer.

## Module ownership map

- `src/wasm/mod.rs`: wasm32 `WebPlatformServices` facade and effect dispatcher.
- `src/wasm/ime.rs`: IME textarea bridge and debug snapshot plumbing.
- `src/wasm/timers.rs`: timer wiring (set/cancel/collect fired tokens).
- `src/wasm/file_dialog.rs`: file input + read-all plumbing for `FileDialog*` effects.
- `src/native/mod.rs`: non-wasm stub types to keep cross-target builds explicit.
- `src/lib.rs`: cfg-based module selection + public re-exports.

## Public surface

On `wasm32`, `fret_platform_web` re-exports the wasm implementation. On non-wasm targets, it
re-exports stub types that report “wasm32 only”.

## Refactor gates

- Formatting: `cargo fmt`
- Native build check: `cargo nextest run -p fret-platform-web --no-tests pass`
- Wasm build check: `cargo check -p fret-platform-web --target wasm32-unknown-unknown`
