Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Descriptor round-trip drops `starter` on explicit composition commands

Cerrado
#565 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Ya se ha fusionado un pull request relacionado.

  • #602 de @elliotBraem — fusionado

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
55/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
typescript
Área
tooling

Línea de trabajo

Start with src/descriptor/resolve.ts, comparing toConfigInput with configInputToDescriptor and tracing how resolveApp uses the conversion. Then read src/utils/save-config.ts and the plugin command flow in src/services/plugins-admin.ts; the acceptance criteria require a round trip that preserves starter during saves while resolved and published configs omit it. Add the integration test for a child with starter surviving bos plugin add.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Context

The descriptor round-trip (src/descriptor/resolve.ts) is lossless for most authored fields, but toConfigInput's pick list (resolve.ts:82-95) omits starter while its inverse configInputToDescriptor (resolve.ts:248-264) includes it. Any code path that reads the authored config, mutates it, and writes it back through saveBosConfig (src/utils/save-config.ts:13-33) re-serializes the descriptor — and the starter field (authoring-only, per schema.ts:103-106) is silently dropped.

Who is affected

The upgrade train no longer re-serializes on the pin stamp (surgical line edit, #TBD PR), but explicit composition commands still do:

  • bos plugin add / bos plugin remove (src/services/plugins-admin.ts:97-175)
  • bos config registry use (src/handlers/config.ts:65)

A child whose bos.app.ts carries starter: "advanced" loses it the first time it runs one of those commands.

Why not just add `starter` to the pick list

Naively adding it leaks starter into resolved configs during extends resolution (resolveApp → toConfigInput builds the child's own input) — the schema comment says the field is stripped from resolved configs by design (publish canonicalization never carries it). The fix needs a seam that preserves it on the authoring round-trip without carrying it into resolution.

Acceptance

  • toConfigInput(toConfigInput-invertible path) preserves starter on descriptor ← → config-input round-trips used by saveBosConfig
  • resolved configs produced by resolveApp/publish canonicalization still never carry starter
  • integration test: a child with starter survives bos plugin add
Lenguaje dominante
TypeScript
Estrellas
5
Forks
3
Merge medio
9 h 50 min
PR fusionados (30 d)
146

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de NEARBuilders/everything-dev

Todos los issues de NEARBuilders/everything-dev

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.