refresh: stack al día (vello 0.7 / wgpu 27 / parley 0.6) + motor 3D voxel

Re-sincroniza las fuentes desde el monorepo (estaba en vello 0.5/wgpu 24 y con la
estructura vieja de eventloop) y suma el 3D:

- bump del workspace a vello 0.7 / wgpu 27 / parley 0.6, + accesskit 0.24 /
  accesskit_winit 0.33 / vello_hybrid 0.0.9.
- nuevos crates: llimphi-3d (voxels ray-march + mallas en un depth compartido,
  montable dentro de un View 2D vía set_viewport+scissor) y llimphi-voxel
  (world-gen, personajes, director de escenas) + shared/foreign-vox (puente .vox).
- README: sección "Not just 2D — a 3D voxel engine" + GIF (docs/llimphi_voxel.gif).
- excluido modules/allichay (arrastra deps fuera del alcance del front-door).
- cargo check --workspace: verde.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Sergio
2026-06-18 14:40:00 +00:00
parent e74800d9da
commit ccab39f140
202 changed files with 44034 additions and 1811 deletions
+11
View File
@@ -0,0 +1,11 @@
[package]
name = "llimphi-widget-wrap"
version.workspace = true
edition.workspace = true
license.workspace = true
authors.workspace = true
publish.workspace = true
description = "llimphi-widget-wrap — contenedor flex que envuelve a la siguiente línea (FlexWrap::Wrap) con gap horizontal+vertical. Para chips, tags, galerías fluidas, toolbars que respiran."
[dependencies]
llimphi-ui = { workspace = true }
+59
View File
@@ -0,0 +1,59 @@
//! `llimphi-widget-wrap` — contenedor con `flex-wrap: wrap` y gap.
//!
//! Lo que en Flutter es `Wrap` y en Compose `FlowRow`: items que fluyen
//! horizontalmente y saltan a la siguiente línea cuando se acaba el
//! ancho. Usalo para chips, tags, galerías fluidas, toolbars que
//! respiran. taffy ya soporta `flex-wrap`; este crate es el azúcar
//! mínima para no repetir el `Style` boilerplate.
#![forbid(unsafe_code)]
use llimphi_ui::llimphi_layout::taffy::{
prelude::{length, percent, FlexDirection, FlexWrap, Size, Style},
AlignItems,
};
use llimphi_ui::View;
/// Eje principal del wrap.
#[derive(Debug, Clone, Copy)]
pub enum WrapAxis {
Row,
Column,
}
/// Wrap container.
///
/// - `axis` decide eje principal (row = horizontal, column = vertical).
/// - `h_gap` es el gap **entre items en la misma línea**.
/// - `v_gap` es el gap **entre líneas**.
pub fn wrap_view<Msg: Clone + 'static>(
children: Vec<View<Msg>>,
axis: WrapAxis,
h_gap: f32,
v_gap: f32,
) -> View<Msg> {
let dir = match axis {
WrapAxis::Row => FlexDirection::Row,
WrapAxis::Column => FlexDirection::Column,
};
View::new(Style {
flex_direction: dir,
flex_wrap: FlexWrap::Wrap,
size: Size {
width: percent(1.0_f32),
height: llimphi_ui::llimphi_layout::taffy::prelude::Dimension::auto(),
},
gap: Size {
width: length(h_gap),
height: length(v_gap),
},
align_items: Some(AlignItems::FlexStart),
..Default::default()
})
.children(children)
}
/// Atajo: row de chips con gap parejo 6px.
pub fn chip_row<Msg: Clone + 'static>(children: Vec<View<Msg>>) -> View<Msg> {
wrap_view(children, WrapAxis::Row, 6.0, 6.0)
}