Skip to content

✨ Public config: downstream curation hook for the docs guide set #3922

Description

@PierreBrisorgueil

Problem

A downstream project cannot control which docs guides ship without editing stack files (= drift). The public-docs guide list is assembled glob-only and the glob always wins:

  • config/assets.js → allGuides: 'modules/*/doc/guides/*.md'
  • config/index.js (~line 159) runs config.files = deepMerge(config, { files: initGlobalConfigFiles(assets) }) last, after all project/env layers — so a files.guides set in config/defaults/{project}.config.js is replaced, not merged (arrays are replaced by deepMerge).
  • The only filter applied afterwards is filterByActivation (module on/off, ~line 161-166).

Net: a downstream that ships its own curated docs (own welcome/quickstart/ordering) has no config-level hook to exclude or reorder guides. It either accepts every modules/*/doc/guides/*.md the stack ships, or deletes stack guide files (drift, blocked by the /update-stack gate).

This is the root mechanism behind #3921 (devkit sample home/{welcome,quickstart} guides collide with a downstream's own slugs). #3921 fixes the specific sample-guide instance; this issue asks for the general curation capability so downstream doc config is insulated from stack guide changes.

Affected file(s)

  • config/assets.js (allGuides glob — authoritative)
  • config/index.js (~159 glob applied last, replacing project files.guides)
  • lib/helpers/config.js (initGlobalConfigFiles, filterByActivation)
  • modules/public/services/public.docs.service.js (guideFiles() reads config.files.guides)

Suggested fix (pick one)

  • Exclusion knob: honor config.docs.excludeGuides (array of slugs or path globs) when building files.guides, applied alongside filterByActivation.
  • Override-aware merge: if project config explicitly sets files.guides / config.docs.guideGlobs, let it take precedence over the default allGuides glob instead of being overwritten.
  • Per-module opt-out: a module config flag (e.g. home: { shipSampleGuides: false }) so scaffolding guides can be dropped downstream without touching stack files.

Goal: a downstream can curate its docs set (drop devkit scaffolding, reorder) purely via config — no stack-file edits, no drift.

Related: #3921 (sample-guide slug collision — the symptom this mechanism causes).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    FeatA new feature

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions