420 Commits

Author SHA1 Message Date
Sergio 88a3aae762 portada: reticula 2px, hover con glow masivo rgba(220,0.35) que llena, cuadrante bg+inset 2026-05-24 02:55:18 +00:00
Sergio ff28b3c5e5 portada: reticula 1.5px semi-brillo, glow 20px en hover, cuadrante con inset shadow 2026-05-24 02:53:38 +00:00
Sergio 6cb63b266b portada: reticula sutil 1px rgba(150,150,150,0.25), brillo + glow en hover 2026-05-24 02:51:09 +00:00
Sergio 6facc3c8ed portada: reticula via pseudoelemento ::before con gradientes, circulo y lineas 3px 2026-05-24 02:48:56 +00:00
Sergio b6330a22b4 recompilar wasm con canvas funcional z-index -1, reticula 3px #777 2026-05-24 02:46:11 +00:00
Sergio de97c34965 portada: reticula 3px #777, z-index 30, canvas z-index -1, hover via reticula-lit 2026-05-24 02:44:06 +00:00
Sergio be127def7a portada: reticula a 2px #444, z-index 30 sobre todo, circulo 28px 2px 2026-05-24 02:42:12 +00:00
Sergio 031a164f47 portada: alineacion flip corregida, reticula #3a3a3a, borde #333 2026-05-24 02:38:07 +00:00
Sergio 69a01460a3 portada: reticula mas visible (#2a2a2a), alineacion flip (izq=left, der=right), mas grande y espaciado 2026-05-24 02:35:46 +00:00
Sergio 05f916a7d1 portada: reticula ilumina en hover via JS, contenido centrado, orden 0x01|0x00 / 0x02|0x03 2026-05-24 02:29:52 +00:00
Sergio 2545d3108d portada chakana 2x2: reticula, 4 cuadrantes 0x00-0x03, hover metadatos, canvas opaco atras 2026-05-24 02:17:34 +00:00
Sergio d8866897ea tierra.md -> Modelo Triplanar: ontologia del campo consciente, 3 planos, vida, ego 2026-05-23 21:07:47 +00:00
Sergio 608a37749b tierra.md: resumir §II a Tesis — todo es consciente, posicion determina percepcion 2026-05-23 21:04:37 +00:00
Sergio 12e465037d tierra.md: agregar §II Campo de aplicacion — dominio, operadores funcionales, autocoherencia 2026-05-23 20:22:02 +00:00
Sergio 23e128355b tierra.md: limpiar metaexplicacion, quitar 'En espanol:', existencia como conciencia siempre 2026-05-23 20:18:09 +00:00
Sergio 9b00740796 tierra.md: reescritura completa — tono directo, axiomas en code, índice, enlaces internos 2026-05-23 20:10:58 +00:00
Sergio 794d3e932e expandir a 9 páginas: +cuerpo, sombra, cosmos, practica, olvido 2026-05-23 19:56:08 +00:00
Sergio 3d7f92ccd7 tierra.md: integrar chip cognitivo, campo unificado, métrica, protocolo
- Expandir manifiesto con las 5 fases del pipeline de intervención
  (detección, pausa, modulación, redirección, mantenimiento)
- Agregar teoría de campo unificado: formalización A ≈ U, algoritmo
  de perdón como procedimiento operativo sobre memoria
- Agregar métricas: Co, H, IR, PA + protocolo de práctica
- Agregar ontología operativa, epistemología probabilística y telos
- Mantener estructura de 10 secciones con tono uniforme
- 63 fragmentos indexados en Qdrant
2026-05-23 18:44:12 +00:00
Sergio c61ea22097 tierra.md: fusionar manifiesto poético con sistema axiomático
- Combinar 'Manifiesto del Ser Desnudo' (texto experiencial) con
  'Propósito y alcance' (axiomas, ecuaciones, dinámica de sistemas)
- Estructura en 7 secciones que integran poesía + matemática:
  I. Origen, II. Cuerpo Formal, III. Dinámica, IV. Sombras,
  V. Medicina, VI. Práctica, VII. Centro de la Nada
- Reindexado en Qdrant (45 fragmentos)
- Respaldo del original (tierra.md.bak)
2026-05-23 18:42:49 +00:00
Sergio a072538465 gioser-web: fix graph click — clone Element before dyn_into
- dyn_into() consumes the value; clicking after that is a no-op.
- Clone the Element first, then dyn_into to HtmlElement and call click()
2026-05-23 17:02:40 +00:00
Sergio 97bea4c99f gioser-web: fix controls delegation (doc-wide), fix graph click (use dyn_into)
- Changed install_deck_delegation → install_controls_delegation:
  listener on document, not just #deck (controls are outside deck now)
- Graph node click: use dyn_into::<HtmlElement>() then click() instead
  of dyn_ref which may fail on <a> elements
2026-05-23 16:57:48 +00:00
Sergio 786a22debe gioser-web: fix controls CSS selector, use HTMLElement.click() for graph nav
- .page-controls visibility: changed from  (wrong) to

- Graph node callback: use HTMLElement.click() instead of
  dispatch_event(MouseEvent), which wasn't working (untrusted event)
2026-05-23 16:53:12 +00:00
Sergio 5f4d260301 gioser-web: move page-controls to static HTML, simplify sync
- Moved the minimize/close buttons from dynamic JS creation to
  static HTML in index.html (always present, hidden by default)
- sync_page_controls() now just toggles opacity/pointer-events
  instead of creating DOM elements
2026-05-23 16:52:03 +00:00
Sergio fa8dfd6ed3 gioser-web: ambient page bg: blur(60px) + centered gradient for seamless glow
- filter: blur(60px) so the radial-gradient is a soft uniform glow,
  no visible circle or division
- Centered at 50% 50%, opacity 0.30→0.60 breathe
2026-05-23 16:46:15 +00:00
Sergio 0381585745 gioser-web: fix graph node click callback, dispatch MouseEvent on tip
- Graph callback now creates a web_sys::MouseEvent('click') and
  dispatches it on the corresponding .tip element.
- The existing install_tip_clicks listener captures it and calls
  open_or_switch with proper coordinates.
2026-05-23 16:46:04 +00:00
Sergio dac1fc71ad gioser-web: absolute paths for CSS, JS, md to fix history.pushState routing
- Changed all relative paths (./styles.css → /styles.css,
  ./pkg/gioser_web.js → /pkg/gioser_web.js,
  ./md/*.md → /md/*.md) to absolute so they don't break when
  pushState changes URL to /estudio/aire etc.
- Caddy already has try_files fallback to /index.html for SPA routing.
2026-05-23 16:43:22 +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 7f7ba1fef9 gioser-web: revert Cytoscape, back to SVG gioser-graph-web
- Remove cytoscape-graph.js (wasn't working with hidden deck)
- Restore gioser-graph-web Rust SVG widget with gioser-web dep
- Rebuild WASM (514K)
2026-05-23 15:28:41 +00:00
Sergio 24218447e3 gioser-graph: poll container width before Cytoscape init
- Uses setInterval(50ms) waiting for offsetWidth > 0
- Falls back to minWidth/minHeight after 10s timeout
- Solves 'cannot access property w' when deck is hidden (scale 0)
2026-05-23 15:25:45 +00:00
Sergio 9db79617eb gioser-graph: wrap init in requestAnimationFrame for hidden deck
- Wraps the entire fetch+render in requestAnimationFrame
  so the container has real size before Cytoscape runs cose layout
- Uses 'preset' layout first, then cose with animate:'end'
  to play nice with 0-size containers during deck animation
2026-05-23 15:24:15 +00:00
Sergio a908d8420c gioser-web: fix graph not appearing — use MutationObserver
- cytoscape-graph.js now uses MutationObserver, not DOMContentLoaded
  (the <gioser-graph> element is created dynamically by WASM)
- Remove unused dispatchEvent from lib.rs
- Rebuild WASM
2026-05-23 15:22:13 +00:00
Sergio d4c31d70b7 gioser-web: replace Rust SVG graph with Cytoscape.js
- Add cytoscape-graph.js: fetches /graph, renders with Cytoscape.js
- Style: round-rect nodes, cose layout, edge width proportional to weight
- Click: center node + fade rest (wineandcheesemap effect)
- Double-click: trigger navigation callback
- Hover: tooltip with preview text
- Click background: restore all
- Remove gioser-graph-web crate dependency (no longer needed)
- Add CDN cytoscape@3.30.4 + defer script to index.html
- gioser-graph custom element auto-initialized on mount
2026-05-23 15:17:28 +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 8235391add gioser-web: rebuild WASM with graph widget integration
- Fix missing reader declaration in spawn_local
- Rebuild pkg/ with wasm-bindgen 0.2.121
- Graph widget now appears below page content (SVG force-directed)
2026-05-23 14:57:13 +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 cb5d83b1f7 gioser-web: integrate gioser-graph-web widget below page content
- Add gioser-graph-web dependency to gioser-web
- After markdown loads, mount SVG semantic graph below content
- Graph fetches from api.gioser.net/graph endpoint
- Uses Qdrant k-NN edges, colored by camino
- Callback navigation placeholder (will be wired in next commit)
2026-05-23 14:40:35 +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
Sergio b17149c528 gioser-web: add docs/ dir with frontmatter for Qdrant indexing
- 4 md files (aire, fuego, tierra, agua) with YAML frontmatter
- caminos mapped: logos, nomos, kay, uku
- original md/ unchanged
- add scripts/index-gioser-docs.py (adapted from gioserv)
2026-05-23 14:36:20 +00:00
sergio c715ee2dee fix(init): la salida de arje-zero ahora se ve en VGA Y serial
Síntoma: el screenshot del usuario en la VPS Hetzner mostraba systemd
booteando y se quedaba congelado en el último printk del kernel justo
antes del switch-root. arje-zero arrancaba bien pero su salida iba al
serial invisible.

Causa: el cmdline traía `console=tty1 console=ttyS0,115200` — y el
kernel hace que `/dev/console` apunte al ÚLTIMO `console=`, así toda la
salida de stdout/stderr de arje-zero (tracing + banner de la rescue
shell) caía en ttyS0 (serial), no en la VGA que muestra noVNC.

Dos arreglos:

- Orden de consolas invertido en el menuentry → `/dev/console` = tty1
  (lo que efectivamente se ve en la consola web del proveedor).
- arje-zero también escribe a `/dev/kmsg` (ring buffer del kernel), que
  el kernel hace eco a TODAS las consolas registradas — el mecanismo
  que usa systemd para que sus mensajes salgan tanto en VGA como en
  serial. Defense in depth: el banner de rescue y un eco temprano
  «despierta como PID 1» aparecen sí o sí en cualquier consola.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 01:16:26 +00:00
sergio d1b700eb2b fix(init): el reboot-loop de Fedora — remount rw + /run tmpfs + shell de rescate
Diagnóstico: en el VPS Fedora arje-zero caía como PID 1 y el cmdline
traía `panic=10`, así que el kernel rebooteaba cada 10 s. Tres causas
encadenadas, todas arregladas:

1) **Cmdline `ro` + sin `/run` tmpfs.** El menuentry montaba `/` como
   sólo lectura (systemd lo remonta rw temprano; arje no). Sin eso, el
   socket del bus interno se intenta crear sobre un FS de sólo lectura
   y falla con EROFS → spawn_bus devuelve Err → PID 1 sale → kernel
   panic. arje-kernel ahora remonta `/` rw en el bootstrap y monta
   `/run`, `/tmp`, `/dev/pts`, `/dev/shm` como tmpfs — superficies
   escribibles aunque la raíz quede ro.

2) **PID 1 saliendo en cualquier `?`.** Doctrina dura nueva: PID 1
   NUNCA puede salir. Cualquier error de arranque ahora cae a una
   `emergency_shell()` que imprime el diagnóstico en `/dev/console`,
   abre `/bin/sh` y, si la shell muere, la reabre — así el operador
   puede reparar en vez de mirar la máquina reiniciarse en bucle.

3) **El script no conocía grub2 (Fedora).** `install-arje-as-init.sh`
   sólo probaba `update-grub` (Debian) y `grub-mkconfig` (Arch). Ahora
   detecta `grub2-mkconfig` y resuelve el `grub.cfg` correcto
   (UEFI/BIOS, fedora/redhat/centos/almalinux/rocky). El menuentry
   también pasa de `ro` a `rw` — el remount es belt-and-suspenders.
   Mismo arreglo en `uninstall-arje.sh`.

Renaser intacto: estos cambios son Linux-side puro (arje-kernel y
arje-zero usan nix/libc/tracing); renaser sólo comparte mirada-layout y
formato, ninguno tocado.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 23:02:45 +00:00
sergio a388ab14b7 fix(compat): auditoría de stubs — los métodos que mentían dejan de mentir
Repaso de los 11 shims restantes buscando métodos que devolvían éxito
sin hacer el trabajo (como los dos setters de localed). Resultado:

timedated — tres setters arreglados de verdad:
- SetTime: aplica el reloj con clock_settime(CLOCK_REALTIME) en vez de
  sólo loggear; si falla (sin CAP_SYS_TIME) devuelve error honesto.
- SetLocalRTC: escribe la tercera línea de /etc/adjtime (UTC|LOCAL),
  conservando las dos primeras.
- SetNTP: arje no gestiona un daemon NTP — en vez de fingir éxito,
  rechaza honestamente; `CanNTP` pasa a `false` para que GNOME deje el
  toggle deshabilitado y ni llegue a llamarlo.

systemd1 — StopUnit/RestartUnit/KillUnit dejaban creer que habían
detenido la unit; ahora devuelven NotSupported honesto (como StartUnit).

Lo demás del repaso ya era honesto: resolved/machined devuelven
NotSupported de frente; polkit/tmpfiles/notify/binfmt/journald no
mienten. timer-compat queda como hueco conocido y autodocumentado (sus
timers disparan pero el spawn es un no-op a la espera del bus).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 20:45:53 +00:00
sergio 19d04a2766 feat(compat): logind — Inhibit real (fd vivo) + ListInhibitors
`Inhibit` dejó de ser un stub que devolvía NotSupported. Ahora cumple
el contrato de systemd-logind:

- Crea un pipe; el cliente recibe el extremo de escritura, el shim
  conserva el de lectura. Mientras el cliente no cierre su fd, el
  inhibidor sigue activo; al cerrarlo —o morir— el shim ve EOF y una
  tarea guardiana lo retira de la tabla.
- Tabla de inhibidores activos + método `ListInhibitors`.
- Las propiedades `BlockInhibited` / `DelayInhibited` ahora reflejan
  los inhibidores reales (tokens únicos del modo, unidos por `:`),
  en vez de devolver siempre vacío.

Es lo que GNOME/KDE usan para frenar la suspensión automática durante
una presentación o una descarga. 1 test (`inhibited_what`).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 20:41:10 +00:00