No description
Apply the same overlay refactor we did for /weather to the propagation map. Score data used to flow as JSON via LiveView push_event (update_scores + the 18-hour preload_forecast batch); switching bands or scrubbing time meant a synchronous server roundtrip + ~MB JSON push per change. Now: 1. New /scores/cells endpoint returns a "PSCR" binary cell-pack — columnar f32 lats/lons + u8 scores, ~3-4× smaller than JSON and parsed via DataView + typed-array views with no JSON.parse. 2. JS hook owns score fetching. mount/moveend/band/time changes trigger HTTP fetches against /scores/cells. After the initial paint, every other forecast hour for the current band is fetched in parallel in the background — timeline scrubs after the prefetch finishes are pure cache hits with no network at all. 3. LiveView no longer pushes scores. select_band emits update_band_info with band_mhz so the client knows what to refetch; select_time and set_selected_time only update server-side state (URL, point detail bbox). map_bounds, propagation_updated, and advance_now_cursor all skip the score push — pack_scores, schedule_bounds_update, schedule_preload_forecast, the :flush_bounds and :preload_forecast handle_info clauses, and the start_async :initial_scores lifecycle (incl. retry_initial_scores event) are all deleted. Net result: instant band toggles after the first paint, no LiveView WebSocket payloads larger than the timeline metadata, and ~370 fewer lines in MapLive. |
||
|---|---|---|
| .forgejo/workflows | ||
| .github | ||
| assets | ||
| bin | ||
| config | ||
| docs | ||
| k8s | ||
| lib | ||
| lib_ml | ||
| notebooks | ||
| priv | ||
| rel | ||
| rust/prop_grid_rs | ||
| scripts | ||
| test | ||
| vendor | ||
| .credo.exs | ||
| .dockerignore | ||
| .formatter.exs | ||
| .gitignore | ||
| .tool-versions | ||
| AGENTS.md | ||
| algo.md | ||
| app.json | ||
| bugs.md | ||
| CLAUDE.md | ||
| Dockerfile | ||
| elevation.md | ||
| LICENSE | ||
| mix.exs | ||
| mix.lock | ||
| prediction.md | ||
| README.md | ||
| tail_logs.sh | ||
| updates.md | ||
Microwaveprop
To start your Phoenix server:
- Run
mix setupto install and setup dependencies - Start Phoenix endpoint with
mix phx.serveror inside IEx withiex -S mix phx.server
Now you can visit localhost:4000 from your browser.
Ready to run in production? Please check our deployment guides.
Learn more
- Official website: https://www.phoenixframework.org/
- Guides: https://hexdocs.pm/phoenix/overview.html
- Docs: https://hexdocs.pm/phoenix
- Forum: https://elixirforum.com/c/phoenix-forum
- Source: https://github.com/phoenixframework/phoenix