295c9ba554
Dos features de producción que mejoran la usabilidad sustancialmente. ## #7 — Layout reorganizable con SplitContainer Los 3 paneles ya no tienen tamaños hardcodeados. Reusamos yahweh-widget-splitter (mismo que usa yahweh-shell para sus layouts JSON-config) con 2 niveles: - outer (Vertical): main_split arriba (flex 4) + panel abajo (flex 1) - main_split (Horizontal): tree (flex 1) + canvas (flex 4) El usuario puede arrastrar los dos divisores para redimensionar libremente. Por ejemplo: en una pantalla ancha, dar más al canvas; en una sesión de lectura analítica, agrandar el panel abajo para ver más módulos expandidos. - Shell gana fields main_split + outer_split: Entity<SplitContainer>. - new() construye ambos con ChildSlots envolviendo tree/canvas/panel como AnyView (mismo patrón que LayoutHost de yahweh-shell). - render() simplificado: header + body(outer_split). Las constants TREE_WIDTH y PANEL_HEIGHT desaparecen. - Cargo añade deps: yahweh-core (NodeId, LayoutDirection), yahweh-widget-splitter, yahweh-widget-container-core (ChildSlot). ## #15 — Atlas de ciudades cargable desde TSV El array `CITY_PRESETS` const de 90 ciudades hardcoded ahora es la función `default_city_presets() -> Vec<CityPreset>`. CityPreset.name pasa de `&'static str` a `String` para que el atlas sea construible en runtime. TahuantinsuyuTree gana `city_atlas: Vec<CityPreset>` + setter `set_city_atlas(atlas, cx)`. Al boot, Shell intenta cargar `$XDG_DATA_HOME/tahuantinsuyu/atlas.tsv` y, si existe + parsea bien, reemplaza el atlas hardcoded. Formato TSV (líneas): name<TAB>lat<TAB>lon<TAB>tz_offset_minutes Líneas vacías y `#` comentario se ignoran. Líneas con cualquier parse fallido se descartan en silencio. API pública: `parse_city_atlas_tsv(&str) -> Vec<CityPreset>` (en tahuantinsuyu-tree), reusable por tests/scripts. El usuario que quiera 50.000 ciudades de GeoNames cities5000.txt: 1. wget cities5000.zip de geonames.org 2. awk para extraer (name, lat, lon, tz_offset) y escribir TSV 3. mover a $XDG_DATA_HOME/tahuantinsuyu/atlas.tsv 4. relanzar la app Sin fricción adicional para el usuario común (los 90 hardcoded cubren 99% de casos típicos en español/inglés). cargo check verde, 8 tests engine + 1 test modules verdes. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
32 lines
1.4 KiB
TOML
32 lines
1.4 KiB
TOML
[package]
|
|
name = "tahuantinsuyu"
|
|
version = { workspace = true }
|
|
edition = { workspace = true }
|
|
license = { workspace = true }
|
|
description = "Tahuantinsuyu — estudio profesional de astrología. Tree + canvas + panel sobre yahweh + eternal-astrology."
|
|
|
|
[dependencies]
|
|
tahuantinsuyu-card = { path = "../../modules/tahuantinsuyu/tahuantinsuyu-card" }
|
|
tahuantinsuyu-canvas = { path = "../../modules/tahuantinsuyu/tahuantinsuyu-canvas" }
|
|
tahuantinsuyu-engine = { path = "../../modules/tahuantinsuyu/tahuantinsuyu-engine" }
|
|
tahuantinsuyu-model = { path = "../../modules/tahuantinsuyu/tahuantinsuyu-model" }
|
|
tahuantinsuyu-modules = { path = "../../modules/tahuantinsuyu/tahuantinsuyu-modules" }
|
|
tahuantinsuyu-panel = { path = "../../modules/tahuantinsuyu/tahuantinsuyu-panel" }
|
|
tahuantinsuyu-store = { path = "../../modules/tahuantinsuyu/tahuantinsuyu-store" }
|
|
tahuantinsuyu-theme = { path = "../../modules/tahuantinsuyu/tahuantinsuyu-theme" }
|
|
tahuantinsuyu-tree = { path = "../../modules/tahuantinsuyu/tahuantinsuyu-tree" }
|
|
|
|
yahweh-bus = { workspace = true }
|
|
yahweh-core = { workspace = true }
|
|
yahweh-theme = { workspace = true }
|
|
yahweh-widget-theme-switcher = { path = "../../modules/ui_engine/widgets/theme-switcher" }
|
|
yahweh-widget-splitter = { workspace = true }
|
|
yahweh-widget-container-core = { workspace = true }
|
|
gpui = { workspace = true }
|
|
directories = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
|
|
[[bin]]
|
|
name = "tahuantinsuyu"
|
|
path = "src/main.rs"
|