Skip to content

v0.2.0

Latest

Choose a tag to compare

@github-actions github-actions released this 30 May 07:26

0.2.0 — 2026-05-30

Bug Fixes

  • scripts: Bump-version updates all internal path-dep version pins
  • engine: De-flake earcut_worker timeout test (#368) (#368)

Documentation

  • Sync CLAUDE.md + docs/ with current 7-crate layout

Features

  • aircraft: Hover-select, follow-on-select, richer sidebar, stable list, configurable area/refresh (#394) (#394)
  • plugin: Aircraft — optional OpenSky OAuth2 credentials (#393) (#393)
  • lua: Ttymap.http:fetch opts — POST, headers, form body (#392) (#392)
  • notify: Surface runtime engine errors as an error notify (#253) (#389) (#389)
  • lua: Add map:arc great-circle overlay primitive (#347) (#388) (#388)
  • plugin: Bookmark — save/recall named map views in pure Lua (#387) (#387)
  • app: Surface unexpected engine death as a notify (#385) (#385)
  • app: Restart-engine command — recycle the engine subprocess (#383) (#383)
  • lua: Per-layer visibility toggle — map:set_layer_visible(layer, bool) (#377) (#377)
  • Split engine into a subprocess (#348 Phase 0–2) (#349) (#349)
  • tui: Show scrollbar in command palette (#346) (#346)
  • plugin: Autospin (globe rotation) (#342) (#342)
  • plugin: Antipode flier + ttymap.geo math lib (#341) (#341)
  • plugin: Info plugin shows pan speed/bearing, solar time, distance from home (#340) (#340)
  • lua: Add ttymap.location shared user-location cache (#307) (#339) (#339)
  • lua: Add traceroute plugin (#303) (#303)

Refactor

  • lua: Consolidate build_subsystem degraded-return path (#326) (#391) (#391)
  • keymap: Move default keybindings from Rust to bundled init.lua (#390) (#390)
  • engine: App owns the camera; engine renders a supplied viewport (#382) (#382)
  • engine: Move tile_distance_sq to geo.rs (#380) (#380)
  • engine: Unify antimeridian wrap math via shortest_modular_dx (#379) (#379)
  • lua: Replace Mutex with thread_local for intern_event_name (#378) (#378)
  • engine: Collapse ZoomIn/ZoomOut into ZoomBy(i8), unify ZoomAt direction (#373) (#373)
  • Rename ttymap-core → ttymap-shared (#372) (#372)
  • lua: Unify MapApi color accessor naming on *_xterm (#371) (#371)
  • engine: Inline RenderHandle::shutdown into Drop (#370) (#370)
  • engine: Drop Berlin lat/lon default from engine Config (#369) (#369)
  • tui: Move frame_widget / overlay / sidebar from ttymap-app to ttymap-tui (#367) (#367)
  • keymap: Split KeyMap → ttymap-tui, KeybindingOverrides → ttymap-config (#366) (#366)
  • Move runtime/ from ttymap-lua to workspace root
  • event: Drop dead Event variants — notify-only bus
  • app: Move UI-side MapState mirror from EngineHandle to App (#365) (#365)
  • Centralise XDG path resolution as ttymap_config::AppDirs (#362) (#364) (#364)
  • Drop MapAction::Redraw (#350 Tier 1) (#361) (#361)
  • engine: Extract RenderClient send helper (#311) (#360) (#360)
  • Drop MapAction::None (#351 follow-up) (#358) (#358)
  • Collapse ttymap-app re-export shims (#351 follow-up) (#357) (#357)
  • Carve workspace into 7 crates (#351 Steps 3-5) (#356) (#356)
  • Decouple compositor and palette from LuaRegistryHandle (#351 Step 2) (#355) (#355)
  • Decouple event bus from mlua (#351 Step 1) (#354) (#354)
  • Rename ttymap-tui crate to ttymap-app (#351 Step 0) (#353) (#353)
  • tui: Merge Dispatcher into App (#337) (#337)
  • tui: Single bus-publish site via Dispatcher event buffer (#336) (#336)
  • tui: Inline event publish at each handler site (#335) (#335)