13 Commits

Author SHA1 Message Date
Sergio 794d3e932e expandir a 9 páginas: +cuerpo, sombra, cosmos, practica, olvido 2026-05-23 19:56:08 +00:00
Sergio 05f2e54ed1 gioser-web: draggable graph nodes, fixed controls, history.pushState routing
- Graph: nodes are draggable via pointer events. Snap back with
  spring transition on release (cubic-bezier 0.34,1.56,0.64,1)
- Removed hover bounce animation (was distracting)
- Page controls (minimize/close): now fixed position in viewport
  (top-right, z-index 100), not inside the deck-page scroll area.
  Created once in sync_page_controls() on show/hide deck.
  Controls detect active page when data-minimize/close-page is empty.
- Hash routing → history.pushState: URLs are /estudio/aire etc.
  popstate listener handles back/forward. Initial path read on boot.
- Added PointerEvent feature to gioser-graph-web Cargo.toml
- Added History feature to gioser-web Cargo.toml
2026-05-23 16:21:01 +00:00
Sergio 4c7d716c0c gioser-web: hash routing, clickable graph nodes, hover bounce, line normalization
- Hash routing: each page sets location.hash to #/element (aire/fuego/etc)
  - Hash read on boot to open direct URL
  - hashchange listener for browser back/forward
  - minimize clears hash
- Graph node click: dispatches click on the corresponding .tip element,
  triggering page open animation (expand from center)
- Graph hover: CSS bounce animation (scale 1→1.08→0.96→1, 0.4s)
- Edge normalization: min-max scale (w-0.80)/0.15 then squared curve
  for visible weight differentiation in tight cluster (0.83-0.93)
- web-sys features: +Location
2026-05-23 16:12:26 +00:00
Sergio 1fdbd358c8 gioser-graph: min-max normalize weights, subtle transparency
- All edge weights are 0.83-0.93 (tight cluster). Now:
  min-max scale: (w - 0.80) / 0.15 → 0.0-1.0
  then quadratic curve: norm² to exaggerate differences
- Stroke width: 0.8 + expanded*3.0 (subtle, not chunky)
- Opacity: 12-42% (transparent and subtle)
- Brightness: moderate, maps to expanded value
2026-05-23 16:03:57 +00:00
Sergio ac894390f9 gioser-graph: exaggerated thickness & brightness, edges behind with pointer-events:none
- Stroke width: 1.5 + w*8.0 (range 3-10px) for dramatic variation
- Brightness: w*0.7 factor, low weight = pure blended color, high weight ≈ white
- Opacity: 0.40 + w*0.55 (40-95%)
- Edges group gets .gb-edge-group { pointer-events: none } so clicks pass to nodes
- Visual layer: edges_group (behind) → nodes_group (front) in SVG
2026-05-23 16:00:28 +00:00
Sergio 906e5f639c gioser-graph: edges behind nodes, variable thickness by raw weight
- Edges and nodes now in separate SVG <g> groups (edges first = behind)
- Stroke width: 0.6 + w*4.0 instead of normalized range (more visible variation)
- Brightness: uses raw weight directly, not normalized against max
- Edges group has no breathing animation (only nodes breathe)
2026-05-23 15:53:00 +00:00
Sergio ef3d698c4b gioser-graph: edge colors blend from connected node caminos
- Each edge color is a 50/50 blend of its two nodes' camino colors
- Extra brightness proportional to weight (higher weight = closer to white)
- Edge opacity/width also varies by weight
- Edges drawn before nodes in SVG (already behind them)
2026-05-23 15:51:21 +00:00
Sergio 2588673caf gioser-graph: fix panic slicing multi-byte chars (á, ñ, etc)
- Use .chars().take(18) instead of byte slicing &node.name[..18]
  which panics on accented characters
2026-05-23 15:42:32 +00:00
Sergio fa2bedf851 gioser-graph: fix edge UUID mapping, index 4 docs, unify page bg
- Fix: map positions by node.id (UUID) not doc_id — edges now draw
- Index the 4 docs/ files into Qdrant (15 fragments via index-gioser-docs.py)
- Page background: single smooth radial-gradient per element (no color
  divisions), animated 'page-breathe' — opacity pulses 0.35↔0.80
- Graph CSS: 'graph-breathe' 5s opacity animation (feels alive)
2026-05-23 15:40:42 +00:00
Sergio b5032de1e3 gioser-graph: grid layout 3 cols, line brightness by weight, breathing animation
- Replaced force-directed layout with explicit grid: 3 columns wide,
  rows based on node count (minimum 3 visual rows)
- Nodes are larger: 170x44px with 8px radius
- Lines: color brightness + stroke opacity based on normalized weight
  (weight 1.0 → white #ffff, 0.5 → dimmer rgb)
- CSS animation 'graph-breathe': opacity pulses slowly (4.2s ease-in-out)
- Hover: drop-shadow glow + fill-opacity increase
- Glow circle behind each node (subtle)
2026-05-23 15:34:54 +00:00
Sergio 529287f01d gioser-web: fix graph widget — rect nodes, edge weight, CSS anim, layout
- Switch from circles to horizontal rounded rectangles with text inside
- Text size 12px body + 8px sublabel (camino), no overlaps
- Edge stroke-width proportional to semantic weight
- Fix 'Layout was forced' warning
- Reduce CSS page-ambience animations: only opacity (no transform)
  to fix 'breathing background' visual glitch
- Layout: more separation (k*1.6), 80 iterations
2026-05-23 15:12:48 +00:00
Sergio 7a53fea13c gioser-graph-web: fix web-sys feature casing and compilation
- SvgSvgElement → SvgsvgElement
- Add Response feature
- Make color owned String for closure lifetime
2026-05-23 14:49:26 +00:00
Sergio 38e95e0620 gioser-web: add gioser-graph-web module for SVG semantic graph
- New crate: gioser-graph-web (WASM widget)
- Fetches /graph from the gioser API
- Force-directed layout (Fruchterman-Reingold) in Rust
- SVG inline rendering: nodes clickable, colored by camino
- Agnostic container: caller provides div + callback
2026-05-23 14:38:42 +00:00