Skip to main content
Nexenv modela cada proyecto como una maquina de estados con cuatro valores. La separacion es deliberada: cada estado responde a un caso de uso real y distinto, y Nexenv adapta lo que ofrece segun el estado actual.

Los 4 estados

  • Discovered: Nexenv encontro el proyecto en disco (por nexenv inspect <path> o por escaneo recursivo de ~/dev) pero el usuario todavia no lo “adopto”. No corre health checks, no toca env vars, no instala dependencias. Solo lo lista con badge Discovered.
  • Active: el usuario lo activo y el doctor flow paso. Es el estado por defecto para proyectos nuevos. Run scripts, sidebar git, watchers de env vars, indexador on-demand, todo disponible.
  • Paused: pausa consciente. El proyecto sigue ahi pero queda oculto del dashboard activo (visible con el filtro Paused). No consume recursos en background.
  • Archived: terminal. El usuario lo “cerro” porque ya no lo usa. Queda fuera del listado por defecto, recuperable solo con Unarchive explicito. Pensado para proyectos terminados que se quieren conservar para consulta pero ya no estorbar en el dia a dia.

Transiciones permitidas

DesdeHaciaDisparador tipico
DiscoveredActiveEl usuario lo adopta (workbench/wizard) y el doctor flow pasa.
DiscoveredArchivedEl usuario decide descartar sin entrar.
ActivePausednexenv project pause <name> o “Pausar” desde la tarjeta.
ActiveArchivednexenv project archive <name> o “Archivar” desde la tarjeta.
PausedActivenexenv project resume <name> o “Reactivar”.
PausedArchivednexenv project archive <name> (tambien desde Paused).
ArchivedActivenexenv project unarchive <name> o “Desarchivar”. Re-corre doctor.
No permitidas (devuelven error claro): Archived -> Paused, Archived -> Discovered, Paused -> Discovered, Active -> Discovered, Discovered -> Paused. Si quieres pausar un Archived, primero desarchivar (reactiva con doctor) y despues pausar — es deliberado.

Filtros por estado en el dashboard

El dashboard tiene una fila de filtros (chips) que controla que proyectos se muestran:
  • En uso (default): Active + Discovered. Lo que normalmente quieres ver.
  • Activos: solo Active.
  • Descubiertos: solo Discovered.
  • Pausados: solo Paused.
  • Archivados: solo Archived.
  • Todos: los 4 estados.
El estado se preserva durante la sesion (al cambiar de pestania vuelves al mismo filtro).

CLI equivalente

Todo lo que hace la GUI tiene paridad en nexenv:
# Listar (default: oculta Paused y Archived)
nexenv list

# Listar filtrando por estado
nexenv list --state active
nexenv list --state paused
nexenv list --state archived
nexenv list --state discovered
nexenv list --state all       # los 4 estados

# Transiciones
nexenv project pause <name>
nexenv project resume <name>
nexenv project archive <name>           # pide confirmacion
nexenv project archive <name> --yes     # modo script
nexenv project unarchive <name>
Las reglas de transicion viven en el core Rust (core/project/state::validate_transition) y se aplican tanto desde GUI como CLI. Si invocas una transicion no permitida, recibes el mismo mensaje en ambos lados.

Migracion desde 1.3.x

Hasta 1.3.x el modelo tenia 3 estados: Active, Idle, Archived. En 1.4.0 (Tema 8.5):
  • Idle -> Paused: renombrado para alinearse con la convencion estandar (GitHub, Linear, etc.) y para distinguir mejor de “Archived”.
  • Discovered aniadido: cuarto estado nuevo, prerequisito para el flujo de auto-scan que Nexenv puede ejecutar al arrancar.
La migracion SQL 005_lifecycle_state.sql reescribe los datos existentes (idle -> paused) sin perdida de informacion. No hace falta accion manual del usuario.

Doctor flow

Las transiciones a Active (desde Discovered, Paused o Archived) se hacen pasar por doctor flow: chequeos no destructivos de dependencias instaladas, env vars declaradas vs .env en disco, runtimes correctos. Si algo no cuadra, doctor reporta y deja al usuario decidir si “Activate anyway” (con warnings registrados) o “Fix issues first”. Doctor nunca ejecuta scripts del proyecto.