refactor(monorepo): reorganización lógica + renames + SDDs + split CHANGELOG
Reorganización física de crates/: - core/ (mezclaba 6 propósitos) se divide en protocol/, init/, runtime/, compat/ - shared/ (3 crates) se redistribuye en protocol/ e init/ - lapaloma (sub-módulo de ui_engine) se promueve a modules/pineal/ Renames de proyectos: - shipote → shuma (runtime de sandboxes) - nouser → akasha (explorador de Mónadas) - yahweh → nahual (motor GPUI, antes ui_engine/) - lapaloma → pineal (data-viz agnóstica) Fraccionamiento UI → core agnóstico: - vista-core (DeckState + snap, 175 LOC, 5 tests verdes) - barra-core (Task + render_html + sanitize, 90 LOC, 5 tests verdes) - vista-web y barra-web ahora son thin DOM bindings Documentación nueva: - 16 SDDs por subdirectorio (≤80 LOC c/u): protocol/init/runtime/compat + 10 módulos + apps/ - docs/STATUS.md con cifras reales por proyecto - docs/ROADMAP.md con plan a finalización (6 hitos, ~6-8 semanas) - CHANGELOG.md particionado en docs/changelog/<proyecto>.md (7 buckets) Automatización: - scripts/reorg.py — script idempotente que: git mv directorios, renombra package names, recomputa path = refs, reescribe imports rust, actualiza workspace Cargo.toml. Soporta --dry-run. - scripts/split-changelog.py — particiona CHANGELOG por componente. Validación: - cargo check --workspace pasa (124 crates + 2 nuevos cores). - 10 tests adicionales (5 en vista-core + 5 en barra-core) verdes. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
# modules/cosmobiologia/ — Estudio de astrología profesional
|
||||
|
||||
**Propósito.** App completa de astrología: cálculo de cartas natales
|
||||
(swiss ephemeris vía `eternal-astrology`), almacenamiento de
|
||||
contactos, render agnóstico (carta natal, dial GR, harmonics) con
|
||||
backends GPUI nativo + SVG/Canvas2D web.
|
||||
|
||||
## Crates
|
||||
|
||||
| crate | tipo | rol |
|
||||
| ------------------------- | ---- | -------------------------------------------------- |
|
||||
| `cosmobiologia-card` | lib | Card del daemon |
|
||||
| `cosmobiologia-model` | lib | Tipos: Chart, Contact, Group, Aspect, Coordinates |
|
||||
| `cosmobiologia-store` | lib | SQLite store (contactos + cartas) |
|
||||
| `cosmobiologia-engine` | lib | Cálculo astrológico (bridge a eternal-astrology) |
|
||||
| `cosmobiologia-modules` | lib | Sub-modules: aspects, harmonics, GR dual-ring |
|
||||
| `cosmobiologia-render` | lib | **AGNÓSTICO**: RenderModel + DrawCommand + compose |
|
||||
| `cosmobiologia-theme` | lib | Paleta astrológica + presets dark/light |
|
||||
| `cosmobiologia-canvas` | lib | Widget GPUI consumidor de render |
|
||||
| `cosmobiologia-tree` | lib | Widget GPUI: Groups/Contacts/Charts sidebar |
|
||||
| `cosmobiologia-panel` | lib | Widget GPUI: controles dexterior (dial GR, FFT) |
|
||||
| `cosmobiologia-web` | lib | Bridge WASM: DrawCommand → SVG/Canvas2D |
|
||||
|
||||
## Dependencias
|
||||
|
||||
- Core: `cosmobiologia-model` ← `cosmobiologia-engine` (cálculo) +
|
||||
`cosmobiologia-store` (persistencia).
|
||||
- Render path agnóstico: `engine` → `render::compose_wheel` →
|
||||
`DrawCommand`s → renderer (gpui nativo o SVG web).
|
||||
- Widgets GPUI consumen `nahual/widgets/tree`, `nahual-theme`.
|
||||
|
||||
## Estado
|
||||
|
||||
LOC 21,502 (más grande del monorepo). Cobertura desigual:
|
||||
- AGNÓSTICOS estables: model (478), store (760), render (1474), engine
|
||||
(2687).
|
||||
- GPUI sin tests: canvas (2850), tree (2295), panel (1037).
|
||||
- 20 TODOs concentrados en engine (sistema GR + harmonics).
|
||||
|
||||
## Roadmap (memorias de proyecto)
|
||||
|
||||
1. **Sistema GR (8 tareas #55-#62)**: dual-ring directas+conversas,
|
||||
scrubbing live, HUD triggers.
|
||||
2. **FFT armónico (#63)**: detección automática de ciclos.
|
||||
3. **Research bank (#64-#65)**: corpus de cartas + queries.
|
||||
4. **3D celestial sphere (#66)**: render esférico no 2D.
|
||||
5. **Rectificador automático (#67)**: ajuste de hora natal vía eventos.
|
||||
@@ -11,5 +11,5 @@ cosmobiologia-model = { path = "../cosmobiologia-model" }
|
||||
cosmobiologia-modules = { path = "../cosmobiologia-modules" }
|
||||
cosmobiologia-render = { path = "../cosmobiologia-render" }
|
||||
cosmobiologia-theme = { path = "../cosmobiologia-theme" }
|
||||
yahweh-theme = { workspace = true }
|
||||
nahual-theme = { workspace = true }
|
||||
gpui = { workspace = true }
|
||||
|
||||
@@ -43,7 +43,7 @@ use gpui::{
|
||||
use cosmobiologia_engine::{Geometry, Layer, LayerKind, OUTER_RING_MODULES, RenderModel};
|
||||
use cosmobiologia_model::{ChartId, ContactId, GroupId};
|
||||
use cosmobiologia_theme::{AspectKind as TAspectKind, AstroPalette, Element, Planet};
|
||||
use yahweh_theme::Theme;
|
||||
use nahual_theme::Theme;
|
||||
|
||||
// =====================================================================
|
||||
// Eventos
|
||||
|
||||
@@ -6,8 +6,8 @@ license = { workspace = true }
|
||||
description = "Tahuantinsuyu — Tarjeta de Presentación brahman + spawn del sidecar + protocolo del service socket."
|
||||
|
||||
[dependencies]
|
||||
brahman-card = { path = "../../../core/brahman-card" }
|
||||
brahman-sidecar = { path = "../../../shared/brahman-sidecar" }
|
||||
brahman-card = { path = "../../../protocol/brahman-card" }
|
||||
brahman-sidecar = { path = "../../../protocol/brahman-sidecar" }
|
||||
cosmobiologia-engine = { path = "../cosmobiologia-engine" }
|
||||
cosmobiologia-model = { path = "../cosmobiologia-model" }
|
||||
ulid = { workspace = true }
|
||||
|
||||
@@ -9,6 +9,6 @@ description = "Tahuantinsuyu — panel de control inferior. Toggles, sliders y s
|
||||
cosmobiologia-model = { path = "../cosmobiologia-model" }
|
||||
cosmobiologia-modules = { path = "../cosmobiologia-modules" }
|
||||
cosmobiologia-theme = { path = "../cosmobiologia-theme" }
|
||||
yahweh-theme = { workspace = true }
|
||||
nahual-theme = { workspace = true }
|
||||
gpui = { workspace = true }
|
||||
serde_json = { workspace = true }
|
||||
|
||||
@@ -31,7 +31,7 @@ use gpui::{
|
||||
|
||||
use cosmobiologia_model::ChartKind;
|
||||
use cosmobiologia_modules::{Control, Registry, SelectOption};
|
||||
use yahweh_theme::Theme;
|
||||
use nahual_theme::Theme;
|
||||
|
||||
// =====================================================================
|
||||
// Eventos
|
||||
|
||||
@@ -5,10 +5,10 @@
|
||||
//! migración inicial corre la primera vez que se abre un archivo nuevo
|
||||
//! (idempotente vía `CREATE TABLE IF NOT EXISTS`).
|
||||
//!
|
||||
//! Patrón inspirado en `yahweh_provider_sqlite::SqliteDataProvider` pero
|
||||
//! Patrón inspirado en `nahual_provider_sqlite::SqliteDataProvider` pero
|
||||
//! con dominio propio (no extiende el `DataProvider` agnóstico — esa
|
||||
//! integración viene en `cosmobiologia-tree` que envuelve este store
|
||||
//! detrás del trait de yahweh).
|
||||
//! detrás del trait de nahual).
|
||||
|
||||
#![forbid(unsafe_code)]
|
||||
#![warn(rust_2018_idioms)]
|
||||
|
||||
@@ -7,4 +7,4 @@ description = "Tahuantinsuyu — paleta astrológica (elementos, planetas, signo
|
||||
|
||||
[dependencies]
|
||||
gpui = { workspace = true }
|
||||
yahweh-theme = { workspace = true }
|
||||
nahual-theme = { workspace = true }
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//! `cosmobiologia-theme` — paleta simbólica + presets místicos.
|
||||
//!
|
||||
//! Una capa fina sobre [`yahweh_theme::Theme`]: el theme base aporta los
|
||||
//! Una capa fina sobre [`nahual_theme::Theme`]: el theme base aporta los
|
||||
//! slots de panel/foreground/accent; nosotros agregamos paletas
|
||||
//! semánticas para los elementos (fuego/tierra/aire/agua), los modos
|
||||
//! (cardinal/fijo/mutable), los planetas y los aspectos.
|
||||
@@ -72,7 +72,7 @@ pub enum AspectKind {
|
||||
|
||||
/// Paleta completa de símbolos astrológicos resuelta a colores HSLA. Las
|
||||
/// dos variantes (`dark` / `light`) comparten estructura — el canvas
|
||||
/// elige según `yahweh_theme::Theme::is_dark`.
|
||||
/// elige según `nahual_theme::Theme::is_dark`.
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct AstroPalette {
|
||||
pub is_dark: bool,
|
||||
@@ -319,7 +319,7 @@ impl AstroPalette {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn for_theme(theme: &yahweh_theme::Theme) -> Self {
|
||||
pub fn for_theme(theme: &nahual_theme::Theme) -> Self {
|
||||
// Dispatcher por nombre para los themes "papel"; el resto cae
|
||||
// al binary dark/light según `is_dark`. Mantenemos el match
|
||||
// case-insensitive por defensa contra cambios de naming.
|
||||
|
||||
@@ -8,7 +8,7 @@ description = "Tahuantinsuyu — explorador izquierdo (Groups/Contacts/Charts) s
|
||||
[dependencies]
|
||||
cosmobiologia-model = { path = "../cosmobiologia-model" }
|
||||
cosmobiologia-store = { path = "../cosmobiologia-store" }
|
||||
yahweh-theme = { workspace = true }
|
||||
yahweh-widget-tree = { workspace = true }
|
||||
yahweh-widget-text-input = { path = "../../ui_engine/widgets/text_input" }
|
||||
nahual-theme = { workspace = true }
|
||||
nahual-widget-tree = { workspace = true }
|
||||
nahual-widget-text-input = { path = "../../nahual/widgets/text_input" }
|
||||
gpui = { workspace = true }
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//! `cosmobiologia-tree` — explorador jerárquico Groups → Contacts → Charts.
|
||||
//!
|
||||
//! Envuelve [`yahweh_widget_tree::TreeView`] con la lógica de dominio
|
||||
//! Envuelve [`nahual_widget_tree::TreeView`] con la lógica de dominio
|
||||
//! de Tahuantinsuyu. Los `RowId` codifican el tipo con prefijo:
|
||||
//!
|
||||
//! - `g:<ulid>` → Group
|
||||
@@ -17,7 +17,7 @@
|
||||
//! - **Borrar** pide confirmación con `window.prompt`.
|
||||
//!
|
||||
//! El host (la app) se suscribe a [`TreeEvent`] y traduce a `AppEvent`
|
||||
//! del bus de yahweh para que el canvas/panel reaccionen.
|
||||
//! del bus de nahual para que el canvas/panel reaccionen.
|
||||
|
||||
#![forbid(unsafe_code)]
|
||||
#![warn(rust_2018_idioms)]
|
||||
@@ -34,9 +34,9 @@ use cosmobiologia_model::{
|
||||
TimeCertainty, TreeSelection,
|
||||
};
|
||||
use cosmobiologia_store::Store;
|
||||
use yahweh_theme::Theme;
|
||||
use yahweh_widget_text_input::{TextInput, TextInputEvent};
|
||||
use yahweh_widget_tree::{RowId, RowKind, TreeEvent as InnerTreeEvent, TreeRow, TreeView};
|
||||
use nahual_theme::Theme;
|
||||
use nahual_widget_text_input::{TextInput, TextInputEvent};
|
||||
use nahual_widget_tree::{RowId, RowKind, TreeEvent as InnerTreeEvent, TreeRow, TreeView};
|
||||
|
||||
const PREFIX_GROUP: &str = "g:";
|
||||
const PREFIX_CONTACT: &str = "c:";
|
||||
|
||||
Reference in New Issue
Block a user