Gestión de Estado

La aplicación depende exclusivamente de Svelte 5 runes ($state, $derived, $effect) para la reactividad, reemplazando por completo los antiguos stores de Svelte.

Svelte Runes

El estado está encapsulado en clases singleton o closures exportados desde src/lib/state/.

  • issuesStore.svelte.ts: Mantiene un Map normalizado de todos los issues.
  • configStore.svelte.ts: Mantiene las preferencias del usuario (tema, modo de vista).
  • modeStore.svelte.ts: Rastrea si el usuario está en el modo de edición Local o Remoto.

Cola de Commits

Para evitar ser bloqueados (rate-limit) por la API de GitHub durante un tipeo rápido, todas las mutaciones de I/O se enrutan a través de una Cola de Commits "Debounced".

Rendimiento
La Cola de Commits agrupa múltiples ediciones al mismo archivo dentro de una ventana de 2 segundos en un único commit de Git.

Actualizaciones Optimistas

Cuando un usuario edita un issue:

  1. La UI llama a issuesStore.updateIssue(id, payload).
  2. El store actualiza el rune inmediatamente. La UI se re-renderiza de forma síncrona.
  3. El store introduce un WriteTask en la Cola de Commits.
  4. Si la escritura remota falla, la Cola de Commits dispara un rollback en el issuesStore y muestra un error toast.