# ggWebGL 0.8.0

- Added a separate vignette gate for live WebGL widgets across coverage,
  renderer capability/showcase, real-data, boids, surface/mesh, and temporal
  trajectory articles so CRAN source builds, CRAN checks, and CI can show
  examples without executing browser-side widget chunks.
- Kept rich local and pkgdown vignette rendering opt-in through
  `GGWEBGL_EVAL_COVERAGE_VIGNETTE=true` plus
  `GGWEBGL_EVAL_LIVE_WIDGETS=true`.
- Delegated boids display defaults to the updated `boids4R::as_ggwebgl_spec()`
  adapter so species-aware velocity colours, current-boid emphasis, recent
  trails, and obstacle context rings are preserved by the optional integration.
- Split the live `boids4R` animation article into an overview plus smaller 2D,
  3D, and custom-workflow pages so generated pkgdown artifacts remain below
  repository hosting file-size limits.

# ggWebGL 0.7.0

- Added `ggwebgl_interactions()` as the structured interaction contract for
  hover, click, brush/lasso, camera, and Shiny event behavior.
- Added renderer-owned hover/click picking coverage for additional primitive
  types, including vectors, raster cells, and structured surfaces.
- Unified Shiny interaction event emission for hover, selection, brush, camera,
  and timeline/time state while preserving existing timeline update APIs.
- Added a CRAN-safe Shiny interaction demo that exercises hover, click, brush,
  camera, and time events without custom JavaScript.
- Added compact point transport and deterministic LOD metadata for large point
  scenes, plus manual dense-scene smoke helpers that record payload and browser
  diagnostics without making fixed performance statements.
- Added neutral scene-type benchmark helpers and public examples for dense
  embeddings, trajectory timelines, surface/mesh rendering, Shiny interaction,
  and static-versus-WebGL workflow comparison.
- Added surface/mesh and interactive benchmark vignettes built from small
  deterministic examples and manual metric schemas.

# ggWebGL 0.6.0

- Added `XGeoRTR` and `boids4R` to `Suggests` as optional integrations while
  keeping them out of hard dependencies.
- Restored the richer `boids4R` animation and swarm-art vignette plus the
  matching htmlwidget example, using installed suggested packages instead of
  sibling-repository loading.
- Restored live `XGeoRTR` bridge vignette behavior with neutral
  renderer/backend ownership wording and guarded example code.
- Kept `shapViz3D` as a guarded optional ecosystem example without adding it
  to package dependencies.
- Updated dependency and bridge tests to allow `XGeoRTR` and `boids4R` in
  `Suggests` while continuing to reject hard dependencies on optional ecosystem
  packages.

# ggWebGL 0.5.0

- Froze the experimental renderer API around structured `ggwebgl_view()`,
  `ggwebgl_selection()`, and `ggwebgl_material()` contracts.
- Extended vector layers to support 3D `z`/`zend` coordinates while preserving
  renderer-owned ids, frame/time metadata, and browser selection behavior.
- Added distinct orbit and trackball camera control paths with normalized
  rotation-based camera state.
- Upgraded mesh and surface payloads with generated normals, Lambert material
  metadata, picking ids, wireframe/culling controls, and GPU payload caching
  hooks.
- Expanded the interaction-frame benchmark artifact schema so fixed frame-rate
  performance statements require device, browser, GPU, commit, primitive-count,
  and artifact metadata.

# ggWebGL 0.3.0
- Added exported ggwebgl_magnify_region() in R/magnify-region.R, with panel and 
  inset modes driven by an exact data-coordinate rectangle.
- Added experimental vector-arrow rendering through `geom_vector_webgl()` and
  `ggwebgl_layer_vectors()`, using renderer-ready shafts and triangle
  arrowheads without backend-specific semantics.
- Added experimental brush and lasso interaction modes that emit selected
  primitive ids through Shiny inputs or optional JavaScript callbacks.
- Added experimental timeline controls with frame/time filtering for primitive
  layers plus play, scrub, speed, and reset UI controls.
- Added experimental opt-in 3D camera state, 3D point/line support, indexed mesh
  payloads, `geom_mesh_webgl()`, `geom_surface_webgl()`,
  `ggwebgl_layer_mesh()`, and `ggwebgl_layer_surface()`.
- Added a renderer-generic future-work gallery and contract tests covering the
  new vector, selection, timeline, camera, mesh, and surface paths.
- Added an interaction-frame benchmark schema for frame-rate statements. Fixed
  performance numbers remain future-facing until generated benchmark artifacts
  exist for a named target machine.

# ggWebGL 0.2.0

- Promoted the package from the long-running development scaffold to the
  `0.2.0` release line.
- Added large-scene demo support: persistent point buffers for stable
  large point-cloud interaction, deterministic count-aware density splats,
  generic hover labels for point primitives, and a reproducible renderer
  gallery.
- Added generic downstream adapter helpers for renderer-ready point, line, and
  raster primitive specs, including exported `ggwebgl_layer_*()` constructors
  and `ggwebgl_spec()`.
- Added package-owned static export surfaces through `snapshot_ggwebgl()` and
  `compose_ggwebgl_figure()`, so publication-style PNG/JPEG captures and simple
  figure composition can be driven from the package API instead of ad hoc
  scripts.
- Added project evidence documentation and machine-readable evidence summaries
  for internal release validation.
- Added vignette-local figure copies for website articles that need images
  without referencing files outside pkgdown's allowed article asset paths.
- Tightened the browser-backed static export path around dedicated `chromote`
  browser ownership, lighter examples, and explicit optional dependency
  declarations for export and vignette tooling.
- Fixed pkgdown/htmlwidget layout containment by restoring the widget CSS
  dependency and adding inline canvas-stage safeguards, preventing WebGL
  canvases from stacking at the top of article pages.

# ggWebGL 0.1.0

- Expanded the core renderer beyond the initial scaffold with reusable
  showcase helpers, manual htmlwidget and Shiny smoke tests, and a stronger
  pkgdown-facing documentation surface.
- Implemented and stabilized the main point shader modes: `default`,
  `density_splat`, `trajectory_age`, and `trajectory_age_glow`.
- Added hover-based sample inspection on top of the existing pan and zoom
  interactions.
- Added texture-backed raster rendering for `geom_raster_webgl()`.
- Added fixed-scale `facet_wrap()` and `facet_grid()` support through a
  panel-aware render specification and panel-local interaction state.
- Added packaged real-data evidence examples covering raster fields, storm
  trajectories, and dense embeddings.
- Added a reproducible evaluation suite against `ggplot2` and `plotly`,
  including machine-readable metrics and benchmark figure scripts under
  `inst/benchmarks/`.
- Froze the XGeoRTR/ggWebGL renderer boundary in `RENDERER_CONTRACT.md` and
  added the first `as_ggwebgl_spec.xgeo_state()` adapter plus renderer
  contract tests.

# ggWebGL 0.0.0.9000

- Reset package metadata and top-level documentation from the copied scaffold
  to the `ggWebGL` package identity.
- Rewrote the package README, citation, and pkgdown configuration around the
  intended `ggplot2` plus WebGL rendering workflow and companion-package split.
- Removed imported carryover benchmark content from the copied package tree.
- Added the first real `ggplot_webgl()` renderer path for point and line
  layers, backed by a minimal WebGL htmlwidget.
- Added the initial showcase vignette and gallery, including dense latent-space,
  diffusion-trajectory, phase-portrait, and optimization-path examples.
- Added reusable `standard` and `high_detail` showcase presets for the gallery
  and demo surfaces.
