Chalk — near‑future ideas (scratchpad)
Modularity
- The system is currently a bit intertwined; want to improve separation between parts.
Theming system
- Make themes a first‑class concept.
- Current theme (Chalkboard) becomes the first/Default theme, but separated from core.
Plugin system
- Move things like Svelte embeds into a plugin.
CLI
- Make it easier to run from the CLI.
- Support different configuration options.
Configuration & boundaries
- Define “boundaries” within the chalk tree to mark branches as self-contained “items.”
- Per-branch behavior for metadata: allow inheritance, summarization on branch nodes, or auto-indexing via defined logic.
- Folder-level config files that describe how contents behave.
- Config inherits down the tree and can merge with descendant configs.
- Support overrides and merge strategies (e.g., replace/append/deep-merge).
Markdown enhancements
- Add syntax for keystrokes, e.g.,
<<R>>, <<Shift + C>>, <<Command>> + <<X>>.
- Explore the “clapper” syntax for perceptible labels:
::Stop::, ::Menu::, etc.
Content structures beyond sequences
- Support date-based structures (e.g., blogs/news posts).
- Support data-object collections (e.g., authors, glossary terms).
- Clarify how these coexist with current sequence/section model.
Transclusions, templates, light logic
- Keep model simple/declarative; avoid Chalk feeling like a programming language.
- Transclusions: Include content from elsewhere (e.g., pull a lesson/exercise/project into a sequence).
- Templates: Reusable wrappers/layouts for common structures.
- Basic logic: Minimal conditionals/toggles (e.g., include/exclude blocks by context), not full scripting.
- Raw content store: Allow piping source through transforms before render.
Contexts & variants
- Mark content as targeting a specific context (e.g., Designlab-only transitions).
- Build outputs with a context set (single or multiple contexts in one run).
- CLI flags to set/override context.
Configurable strings / variables
- Define strings (e.g., course titles) in inherited metadata.
- Simple reference syntax (maybe ALL_CAPS tokens) for in-text substitution.
- Defaults can be overridden via CLI or per-context config.
Content library for assembly
- Maintain a store of lessons/exercises/projects.
- Assemble sequences for specific cohorts or delivery modes (async+mentor, self-guided, teacher-led).
- Pull-by-id/slug with optional per-instance overrides.
Glossary within bounded items
- Mark terms inside a bounded item for glossary extraction.
- Maintain a separate glossary store (centralized) keyed by term/slug.
- Auto-link references across content; theme support for inline gloss (popover/tooltip) and footnote-style glosses.
- Open questions: syntax for marking terms; storage format/placement; merge/override behavior across contexts.
Configurable indexes & overviews
- Current: index tables for sections.
- Explore configurable views per section: table, list-with-summaries, kanban-style board.
- Options for filtering/sorting/grouping by metadata; define view presets in section config.
- Consider light query/select syntax for choosing which items appear.