Open Source
feat: support URL parameters for layer presets and visibility (#1530)
Added preset and layers URL params so a shared link can force the correct map layers on load, using the new layers system.
- applyURLLayers still runs from focusOn() after the layers rewrite
- preset matches keys case-insensitively or by displayed name (e.g. ?preset=religions)
- layers shows only listed canonical ids; if both params are set, layers wins
- Documented the params in the wiki URL-parameters page and added Playwright load cases
fix: rename wiki file so Windows can clone the repo
Renamed a wiki file whose name contained a colon so git clone no longer fails at checkout on Windows.
- Windows cannot create filenames that contain a colon
- Renamed the wiki page to Goods-spread-functions.md
feat(formula): add MD5 and SHA256 hash functions
Added MD5 and SHA256 cryptographic formula functions for checksum & hashing use cases across PostgreSQL, MySQL, and SQLite dialects.
- Registered MD5 and SHA256 in SDK formulas runtime (rqd: 1, return type STRING)
- Implemented PostgreSQL dialect support via md5(?::text) and encode(sha256(convert_to(?::text, 'UTF8')), 'hex')
- Implemented MySQL dialect support using MD5(?) and SHA2(?, 256)
- Configured SQLite unsupported function guard in SqliteUi.getUnsupportedFnList()
- Authored 8 comprehensive unit tests in validate-extract-tree.spec.ts
Fix #1419: Drop regiments outside submap on transition
Resolved submap generation bug where partially visible states inappropriately relocated out-of-bounds military regiments to state centers.
- Refactored restoreStates military mapping in resample.ts to filter off-map regiments with .reduce()
- Garbage collected orphaned regiment notes from global array references
- Removed [relocated] string prefix logic and unused VERTICAL_GAP / regimentCellsMap fallbacks
Feat battle phases record
Added engagement progression tracking to map marker notes for post-combat narrative generation.
- Created phasesRecord history array in Battle class constructor
- Captured active attackers and defenders phases on every run() loop iteration
- Appended formatted phase log timeline to legend string in applyResults()
fix(curriculum): correct regex character class description
Corrected regex character class documentation in the core curriculum module.
- Explicitly included uppercase range A-Z in \w character class specification
- Fixed typographical punctuation formatting for lesson accessibility
feat: text roles, measure, and closed stack rhythm
Add measure tokens and type-* roles so display and prose wrapping stay intentional, plus closed stack utilities for page rhythm.
- Ship measure (ch) tokens with text-balance / text-pretty on type roles
- Add Stack and Text kit components; migrate home, header, and footer off raw gap/py sprinkles
- Document semantic rhythm in AGENTS.md
feat: add semantic Tailwind @utility bundles
Add semantic @utility bundles so the Astro kit maps to single classes instead of sprinkle stacks.
- Ship heading-*, gutter-x-*, section-y-*, btn*, focus-ring, and text-link utilities
- Point kit variant maps at those single classes
- Extend closed spacing so button heights stay on-token under @apply
test: add Playwright fluid viewport e2e suite
Add a Playwright Chromium suite against Astro production preview, including a fluid viewport matrix.
- Home smoke: title, heading, CTAs, and main landmark
- Fluid matrix at 375 through 3840 — gutter and heading grow, then plateau
- Wire pnpm test:e2e into CI after build
chore: add ESLint lint gate for closed Tailwind tokens
Add ESLint flat config with eslint-plugin-tailwindcss + Astro support to enforce a closed fluid scale.
- Error on arbitrary values, unknown class names, and contradicting utilities
- Run pnpm lint in CI
feat: add Astro component kit with closed variants
Add closed variant maps and cx helper backed by fluid tokens for standard UI components.
- Ship Gutter, Section, Heading, Button, and TextLink components with props for size/tone
feat: add fluid spacing and type tokens
Implement Utopia-style token generator for closed fluid spacing and type scales via clamp().
- Scales from 375px to 3840px (phone to native 4K)
- Full-bleed and fluid gutters
Lock down /api/users with authz and align password policy
Implemented role-based access control, shared password schemas, and initial admin bootstrap migrations.
- Added role-based authorization guards on /api/users endpoints
- Configured first-user admin auto-bootstrap sequence
- Created PostgreSQL migration script for users.role column
Connect to ReadRight ASR service
Integrating speech-to-text automated evaluation microservice for real-time oral reading assessment telemetry.
Offline Auto Sync
Designing background delta synchronization engine for low-connectivity assessment execution telemetry.
Add Letter/Word Identification Question Variant
Defining question variant schema and evaluation pipeline for letter and word identification assessments.
Add Oral Vocabulary Question Variant
Building oral vocabulary question evaluation logic with audio recording telemetry.
Add Arithmetic Process Question Variant
Architecting multi-step arithmetic process question schema and step-by-step evaluation engine.
Add Arithmetic Facts Question Variant
Designing timed arithmetic facts question variant with rapid answer response scoring.
Add Number Reading Question Variant
Implementing number reading assessment question variant with ASR auto-scoring hooks.
Add Stimulus Group consisting of Stimulus (Text Passage, Image, Audio Passage, etc)
Architecting multi-modal stimulus groups linking passages, images, and audio stimuli to nested evaluation variants.
- A group will have a stimulus as well as linked questions within it
Add Passage Reading Question Variant
Configuring passage reading assessment schema with word-by-word timestamps and oral fluency metrics.
Add Sentence Reading Question Variant
Defining sentence reading evaluation model with contextual accuracy analysis.
Add Word Reading Question Variant
Implementing word reading variant schema for isolated vocabulary assessment.
Add Letter Reading Question Variant
Designing early-grade letter reading question variant for foundational literacy diagnostics.
Vision Model Feasibility for ASR help
Exploring vision-language model alignment for synchronizing printed page gaze bounds with audio recording tracks.
Test Taking Flow with Nico Server Connected
End-to-end integration of student assessment execution flow with real-time server telemetry backend.
Look at grades 1-4 knowledge graph and usability
Evaluating knowledge graph node relationships and learning progression paths for Grades 1–4.
Add English to ASR auto-evaluate service
Extending automated ASR evaluation pipeline to support English pronunciation and fluency models.
Add Place Value Qtype intended to be between Arithmetic Facts and Arithmetic Process
Creating place-value conceptual question variant positioned between basic facts and multi-digit arithmetic.
Audio Telemetry
Building streaming audio telemetry pipeline for uploading assessment audio clips asynchronously.
Group assessments by Language, Grades etc
Adding dynamic multi-dimensional grouping facets for assessment taxonomies (language, grade, subject).
Wire up Nico Server to BitByBit ecosystem and Move Numeracy Assessments to DB
Ecosystem integration wiring up server API endpoints and migrating static numeracy assessments into PostgreSQL.