# Changelog ### Validate missing short method-field values - Added focused coverage for `SET score NUMBER` inside a method, preserving the learner-facing repair hint that one value expression is required after the type. - Wired the fixture into both typecheck validation gates. ### Diagnose missing `TO` in separated field annotations - `claro typecheck` now explains how to repair `SET player.score AS NUMBER` by adding `TO` and a value. - Added focused negative coverage to the complete typecheck validation matrix. ### Diagnose missing values after short field annotations - `claro typecheck` now explains how to repair a short explicitly typed object-field assignment that stops after the type, such as `SET player.score NUMBER`. - Added focused negative coverage to the complete typecheck validation matrix. ### Diagnose missing values after `AS ... TO` field annotations - `claro typecheck` now explains how to repair an explicitly typed object-field assignment that ends after `TO`, such as `SET player.score AS NUMBER TO`. - Added focused negative coverage to the complete typecheck validation matrix. ### Diagnose extra words after short typed field assignments - `claro typecheck` now rejects trailing words after the value in short explicit object-field assignments such as `SET player.score NUMBER 10 extra`. - Added focused negative coverage to the complete typecheck validation matrix and documented the repair hint. ### Validate explicitly typed YESNO object-field assignments - Added positive typecheck coverage for `SET player.ready YESNO YES` when the class declares `HAS ready YESNO`. - Added the fixture to the complete typecheck validation matrix and documented the explicit annotation form. ### Validate explicitly typed TEXT object-field assignments - Added positive typecheck coverage for `SET player.name TEXT "Ada"` when the class declares `HAS name TEXT`. - Added the fixture to the complete typecheck validation matrix and documented the explicit annotation form. ### Diagnose missing class field names - `claro typecheck` now explains how to repair a bare `HAS` declaration instead of reporting a confusing missing type for an unnamed field. - Added focused coverage to the complete typecheck diagnostic validation matrix. ### Diagnose missing method names - `claro typecheck` now explains how to repair a bare `TEACH` declaration inside a class instead of describing it as a top-level function. - Added focused coverage to the complete typecheck diagnostic validation matrix. ### Diagnose missing class names - `claro typecheck` now explains how to repair a bare `CLASS` declaration instead of silently accepting a class with no name. - Added focused coverage to the complete typecheck diagnostic validation matrix. ### Diagnose missing function names - `claro typecheck` now explains how to repair a bare `TEACH` declaration instead of silently accepting a function with no name. - Added focused coverage to the complete typecheck diagnostic validation matrix. ### Diagnose unknown class field types - `claro typecheck` now rejects class fields such as `HAS score BANANA` with a beginner-facing diagnostic that names the class and field, lists supported type examples, and suggests using a Claro type. ### Validate compatibility duplicate-parameter diagnostics - Added focused coverage proving that compatibility `TAKES` / `LEARNED` functions reject repeated parameter names with the same repair-oriented diagnostic as modern functions. - Added the fixture to the complete typecheck diagnostic validation matrix. ### Validate compatibility unknown inline method-field annotations - Added focused coverage proving that compatibility `TAKES` / `LEARNED` methods reject unknown inline field annotations with the same repair-oriented diagnostic as modern methods. ### Diagnose unknown inline method-field annotations - `claro typecheck` now rejects unknown inline field annotations such as `BANANA` and suggests the class-declared `HAS` type. - Added focused negative coverage to the complete typecheck validation matrix. ### Align inline method-field annotations with class fields - `claro typecheck` now compares an inline method assignment annotation with the class field declared by `HAS`. - A mismatch such as `SET score TEXT 10` inside a method for `HAS score NUMBER` explains both types and suggests the class-declared type. - Added positive and negative fixtures to the complete typecheck validation matrix. ### Validate compatibility inline method-field annotations - Added matching positive and negative coverage for `TEACH ... TAKES ...` / `LEARNED` methods. - Release validation now protects the same class-declared-type diagnostic for older compatibility lessons. - Added focused modern-method coverage for the learner-facing diagnostic produced when an undeclared field is assigned from an expression whose type is not inferable yet. ## Unreleased - Method-body `CHECK TYPE` diagnostics now name the current class method when a declared field is checked against the wrong type, with focused positive and negative validation coverage. - Typecheck diagnostics for typed method-body field assignments now name the class method and arithmetic operation when a known TEXT operand is used in a NUMBER field update. ### Compatibility method field-assignment diagnostics - Added focused positive and negative typecheck fixtures for older `TEACH ... TAKES ...` / `LEARNED` methods that assign to typed class fields. - Release validation now preserves the learner-facing `Class.method` name in these compatibility diagnostics. ### Validate compatibility method multiplication diagnostics - Added focused negative typecheck coverage proving that the older `TAKES` / `LEARNED` method syntax identifies a TEXT operand in a NUMBER multiplication return and explains the required operand type. - Wired the fixture into the standalone typecheck validator and `claro validate`. ### Validate compatibility method division diagnostics - Added focused negative typecheck coverage proving that the older `TAKES` / `LEARNED` method syntax identifies a TEXT operand in a NUMBER division return and explains the required operand type. - Wired the fixture into the standalone typecheck validator and `claro validate`. ### Validate compatibility method subtraction diagnostics - Added focused negative typecheck coverage proving that the older `TAKES` / `LEARNED` method syntax identifies a TEXT operand in a NUMBER subtraction return and explains the required operand type. - Wired the fixture into the standalone typecheck validator and `claro validate`. ### Validate compatibility method addition diagnostics - Added focused negative typecheck coverage proving that the older `TAKES` / `LEARNED` method syntax identifies a TEXT operand in a NUMBER addition return and explains the required operand type. - Wired the fixture into the standalone typecheck validator and `claro validate`. ### Validate compatibility method addition returns - Added focused positive typecheck coverage proving that the older `TEACH ... TAKES ... RETURNS NUMBER` / `LEARNED` method syntax accepts a numeric addition return after `CHECK TYPE` establishes the parameter type. - Wired the fixture into the standalone typecheck validator and `claro validate`. ### Validate compatibility method multiplication returns - Added focused release validation for compatibility (`TAKES` / `LEARNED`) methods returning numeric multiplication results. ### Validate compatibility method subtraction returns - Added focused positive typecheck coverage proving that the older `TEACH ... TAKES ... RETURNS NUMBER` / `LEARNED` method syntax accepts a numeric subtraction return after `CHECK TYPE` establishes the parameter type. - Wired the fixture into the standalone typecheck validator and `claro validate`. ### Validate numeric function subtraction returns - Added focused positive typecheck coverage proving that a typed function can return a numeric subtraction expression after `CHECK TYPE` establishes its parameter type. - Wired the fixture into the standalone typecheck validator and `claro validate`. ### Validate division return diagnostics - Added focused `claro typecheck` coverage proving that a typed function returning `amount / "oops"` identifies division, the required `NUMBER` operands, and the offending `TEXT` value. - Wired the negative fixture into the complete typecheck validator and `claro validate` coverage. ### Validate numeric function return expressions - Added a focused positive typecheck fixture proving that a typed function can return a numeric multiplication expression after `CHECK TYPE` establishes its parameter type. - Wired the fixture into the standalone typecheck validator and `claro validate`. ### Advertise typed-language keywords to IDE helpers - Added `RETURNS`, `CHECK`, and `TYPE` to `claro ide` keyword metadata so editor integrations can recognize the current typed function and type-checking syntax. - Extended the IDE metadata validator and documented the updated completion surface. ### Validate the complete typecheck matrix - `claro validate` now runs the complete focused typecheck fixture matrix, including method-call, alias, return, and expression fixtures that were previously covered only by the standalone diagnostic validator. ### Validate compatibility method return types - Added focused coverage proving that the older `TEACH ... TAKES ... RETURNS TYPE` / `LEARNED` method syntax receives the same learner-facing return-type diagnostic as modern methods. - Added the compatibility method fixture to the complete typecheck diagnostics validator. ### Validate incomplete method return paths - Added focused typecheck coverage proving that a typed method with an incomplete conditional return reports the same learner-facing missing-path diagnostic as a typed function. - Added the method fixture to both `claro validate` and the complete typecheck diagnostics validator. ### Validate compatibility function return types - Added focused coverage proving that the older `TEACH ... TAKES ... RETURNS TYPE` / `LEARNED` syntax receives the same learner-facing return-type diagnostic as modern functions. - Added the compatibility fixture to both `claro validate` and the complete typecheck diagnostics validator. ### Validate unknown method return types - Added focused `claro typecheck` regression coverage for an object method declaring an unsupported `RETURNS` type such as `BANANA`. - The release validator now checks function and method unknown-return-type diagnostics separately. ### Diagnose unknown declared return types - `claro typecheck` now reports a learner-facing error when a function or object method declares an unsupported `RETURNS` type such as `BANANA`. - Added focused negative-fixture coverage and release-validator coverage for the invalid declaration. ### Diagnose empty typed returns - `claro typecheck` now reports a beginner-facing error when a function or method declares `RETURNS TYPE` but uses `RETURN` without a value. - Added a focused negative fixture and release-validation coverage for the missing return expression. ### Check typed parameter expressions in returns - `claro typecheck` now carries a function or method parameter's `CHECK TYPE` metadata into later return-expression inference. - Added positive and negative arithmetic return fixtures for functions and object methods so a declared return type cannot silently accept an expression whose parameter type is already known. ### Check simple function return types - Added `TEACH name ... RETURNS TYPE` syntax for a focused static return check. - `claro typecheck` now reports the expected and inferred types when a `RETURN` expression does not match. - Added positive and negative fixtures and wired both into `claro validate` and the complete typecheck diagnostics validator. ### Diagnose explicitly typed unknown object fields - Added focused typecheck coverage for `SET player.level NUMBER 3` when `Player` declares no `level` field. - `claro typecheck` now gives the same beginner-facing missing-`HAS` hint for explicitly typed unknown fields as it does for untyped field assignments. ### Reject unlisted typecheck fixtures - `tools/validate_typecheck_diagnostics.py` now discovers `tests/typecheck_*.claro` files and fails when a fixture is missing from the validator's positive or negative lists. - This keeps new learner-facing typecheck examples from silently escaping release validation. ### Explain text operands in object-field addition - Added focused typecheck coverage for `SET player.score player.name + 1`. - `claro typecheck` now names the `TEXT` operand and explains that addition into a `NUMBER` field needs numeric values, matching the existing subtraction, multiplication, and division diagnostics. ### Complete numeric object-field arithmetic coverage - Added a focused positive typecheck fixture for numeric subtraction in an object field. - Added the fixture to both the complete typecheck diagnostics validator and `claro validate`, keeping valid subtraction beside the existing division/multiplication positives and text-operand diagnostics. ### Complete typecheck fixture validation - Added regression coverage requiring the focused typecheck validator to list every `typecheck_*.claro` fixture, plus the existing object-field validation script. - Added the two previously omitted positive fixtures so `tools/validate_typecheck_diagnostics.py` now exercises the complete typecheck fixture set. ### CI release-gate validator hardening - Added focused regression coverage for the workflow validator. - `tools/validate_ci_workflow.py` now checks release commands inside actual `run` steps, so commented-out commands cannot make CI coverage appear complete. - The validator now requires its own executable CI command, protecting the workflow coverage check from being removed silently. ### Object-alias field CHECK TYPE diagnostics - Added focused typecheck coverage for `CHECK TYPE alias.field IS TYPE` after a simple object alias. - `claro typecheck` now compares an aliased object's declared field type with the requested `CHECK TYPE` type. ### Nested container type validation - Added a focused nested-container typecheck example for adding a typed map to a typed list. - Updated container matching so `LIST OF MAP` accepts map values with their own type metadata while preserving existing list/map mismatch diagnostics. ### Object-field expression validation - Added positive and negative typecheck fixtures for assigning object fields from another field and from an arithmetic field expression. - Added both fixtures to `claro validate` and the focused typecheck diagnostics validator. - Added a focused negative fixture for the reverse expression mismatch: storing a numeric expression in a `TEXT` object field now remains covered by the release validation matrix. - `claro package doctor` now rejects duplicate `manifest-version:` fields in `claro.project` instead of accepting the first value and overlooking ambiguous project metadata. - `claro package doctor` now rejects duplicate package entries in `claro.lock` instead of allowing ambiguous lockfile data. - `claro package doctor` now rejects duplicate `name:` entries in a package manifest instead of accepting ambiguous package identity data. - `claro package doctor` now rejects duplicate `checksum:` entries in a package manifest instead of accepting ambiguous integrity data. - `claro package doctor` now rejects listed package manifests whose `version:` only starts with the supported local package version, such as `version: 10`. - `claro package doctor` now rejects listed package manifests whose `source:` only starts with the supported local source, such as `source: local-extra`. - `claro package doctor` now rejects project files whose `manifest-version:` only starts with the supported value, such as `manifest-version: 10`. ## v1.18.26-dev exact package manifest-version validation - Added package-security coverage for a manifest version that only starts with the supported version, such as `manifest-version: 10` for the current `manifest-version: 1` format. - Changed `claro package doctor` to compare the complete `manifest-version:` value instead of accepting a version as a substring. ## v1.18.26-dev exact package checksum validation - Added package-security coverage for a manifest checksum with valid digest text followed by extra data. - Changed `claro package doctor` to compare the complete `checksum:` field instead of accepting a checksum as a substring. ## v1.18.26-dev exact package manifest-name validation - Added package-security coverage for a manifest name that only starts with the expected package name, such as `name: math-tools-extra` for package `math-tools`. - Changed `claro package doctor` to compare the complete `name:` value, preventing prefix matches from being accepted as valid manifests. ## v1.18.26-dev package list unsafe-name diagnostic - Added focused package-security validation for `claro package list` when `claro.project` already contains an unsafe package name such as `../bad`. - Changed `claro package list` to fail with the existing beginner-facing `BAD package name: ...` diagnostic instead of displaying unsafe entries as normal package names. ## v1.18.26-dev missing unchecked function argument diagnostic - Added a focused negative `claro typecheck` fixture for calling a simple function without its declared argument, such as `TEACH greet name` followed by `DO greet`. - Improved the static arity check so simple functions without `CHECK TYPE` hints still report a beginner-facing missing-argument diagnostic. - Wired the fixture into the typecheck diagnostics validator and `claro validate`. ## v1.18.26-dev CI release validation coverage - Added `tools/validate_ci_workflow.py` to assert that Forgejo/Gitea CI keeps running Claro's current release gates. - Updated `.forgejo/workflows/ci.yml` to run `claro validate`, typecheck diagnostics validation, version convention validation, and the CI workflow coverage check in addition to the existing smoke tests. - Documented the CI coverage validator in the testing docs and current status/roadmap notes. ## v1.18.26-dev unknown object-field expression diagnostic - Added a focused negative `claro typecheck` fixture for assigning an expression with no inferable static type to an undeclared object field, such as `SET player.level score + 1` after `NEW Player player`. - Replaced the internal `ANY` placeholder in that diagnostic with the beginner-facing guidance: `Check the field name or add the field to the class with the right type.` - Wired the fixture into both the typecheck diagnostics validator and `claro validate`. ## v1.18.26-dev object field CHECK TYPE TEXT positive validation - Added a dedicated positive `claro typecheck` fixture for direct object-field metadata checks: `CHECK TYPE player.name IS TEXT` is accepted after `NEW Player player` and `SET player.name "Ada"` when the class declares `HAS name TEXT`. - Wired the fixture into both the typecheck diagnostics validator and `claro validate`; no production typechecker behavior change was needed because the existing direct object-field metadata path already accepts the TEXT check. ## v1.18.26-dev object field CHECK TYPE NUMBER positive validation - Added a focused positive `claro typecheck` fixture for direct object-field metadata checks: `CHECK TYPE player.score IS NUMBER` is accepted after `NEW Player player` and `SET player.score 10` when the class declares `HAS score NUMBER`. - Wired the fixture into both the typecheck diagnostics validator and `claro validate`; no production typechecker behavior change was needed because the existing direct object-field metadata path already accepts the NUMBER check. ## v1.18.26-dev standard-library reliability update - Added a tested `lib/collections.claro` module with list and map helpers. - Made the existing `lib/path.claro` import provide working native helpers for joining and inspecting paths. - Added golden tests for both modules. - Normalized CRLF/LF golden-test expectations so `claro test` reflects interpreter behavior across Windows and Unix checkouts. - Replaced stale standard-library command claims with current, runnable documentation. ## v1.18.26-dev object field CHECK TYPE unknown YESNO validation - Added a focused negative `claro typecheck` fixture for direct object-field metadata checks against an undeclared YESNO field: `CHECK TYPE player.enabled IS YESNO` after `NEW Player player` when the class only declares `HAS ready YESNO`. - Wired the fixture into both the typecheck diagnostics validator and `claro validate`; no production typechecker behavior change was needed because the existing direct object-field `CHECK TYPE` unknown-field diagnostic already reports the learner-friendly YESNO suggestion. ## v1.18.26-dev object field CHECK TYPE unknown TEXT validation - Added a focused negative `claro typecheck` fixture for direct object-field metadata checks against an undeclared TEXT field: `CHECK TYPE player.nickname IS TEXT` after `NEW Player player` when the class only declares `HAS name TEXT`. - Wired the fixture into both the typecheck diagnostics validator and `claro validate`; no production typechecker behavior change was needed because the existing direct object-field `CHECK TYPE` unknown-field diagnostic already reports the learner-friendly TEXT suggestion. ## v1.18.26-dev object field CHECK TYPE unknown-field diagnostic - Added a focused negative `claro typecheck` fixture for direct object-field metadata checks against an undeclared field: `CHECK TYPE player.level IS NUMBER` after `NEW Player player` when the class only declares `HAS score NUMBER`. - Improved the narrow direct object-field `CHECK TYPE` diagnostic so simple unknown fields name the object class and suggest the matching `HAS level NUMBER` declaration. ## v1.18.26-dev object field CHECK TYPE NUMBER negative validation - Added a focused negative `claro typecheck` fixture for direct object-field metadata checks: `CHECK TYPE player.score IS TEXT` is rejected after `NEW Player player` and `SET player.score 10` when the class declares `HAS score NUMBER`. - Wired the fixture into both the typecheck diagnostics validator and `claro validate`; no production typechecker behavior change was needed because the existing direct object-field metadata diagnostic already reports the learner-friendly NUMBER mismatch. ## v1.18.26-dev object field CHECK TYPE YESNO negative validation - Added a focused negative `claro typecheck` fixture for direct object-field metadata checks: `CHECK TYPE player.ready IS TEXT` is rejected after `NEW Player player` and `SET player.ready YES` when the class declares `HAS ready YESNO`. - Wired the fixture into both the typecheck diagnostics validator and `claro validate`; no production typechecker behavior change was needed because the existing direct object-field metadata diagnostic already reports the learner-friendly YESNO mismatch. ## v1.18.26-dev object field CHECK TYPE TEXT negative validation - Added a focused negative `claro typecheck` fixture for direct object-field metadata checks: `CHECK TYPE player.name IS NUMBER` is rejected after `NEW Player player` and `SET player.name "Ada"` when the class declares `HAS name TEXT`. - Wired the fixture into both the typecheck diagnostics validator and `claro validate`; no production typechecker behavior change was needed because the existing direct object-field metadata diagnostic already reports the learner-friendly mismatch. ## v1.18.26-dev object field CHECK TYPE TEXT/YESNO validation - Added a focused positive `claro typecheck` fixture for direct object-field metadata checks: `CHECK TYPE player.name IS TEXT` and `CHECK TYPE player.ready IS YESNO` after `NEW Player player` and direct field assignments. - Wired the fixture into both the typecheck diagnostics validator and `claro validate`; no production typechecker change was needed because the existing direct object-field metadata path already accepts these checks. ## v1.18.26-dev object field unknown YESNO diagnostic validation - Added a focused negative `claro typecheck` fixture for direct object-field assignment to an undeclared field with a YESNO value: `NEW Player player` followed by `SET player.ready YES` when the class only declares `HAS score NUMBER`. - Wired the YESNO-valued unknown-field fixture into both the typecheck diagnostics validator and `claro validate`; no production typechecker change was needed because the existing narrow direct object-field diagnostic already reported the learner-friendly message. ## v1.18.26-dev object field unknown TEXT diagnostic validation - Added a focused negative `claro typecheck` fixture for direct object-field assignment to an undeclared field with a TEXT value: `NEW Player player` followed by `SET player.nickname "Ace"` when the class only declares `HAS score NUMBER`. - Wired the TEXT-valued unknown-field fixture into both the typecheck diagnostics validator and `claro validate`; no production typechecker change was needed because the existing narrow direct object-field diagnostic already reported the learner-friendly message. ## v1.18.26-dev object field unknown-field diagnostic - Added a focused negative `claro typecheck` fixture for direct object-field assignment to an undeclared field: `NEW Player player` followed by `SET player.level 3` when the class only declares `HAS score NUMBER`. - Improved the narrow direct object-field diagnostic so simple unknown fields explain the missing field name and suggest adding a matching `HAS` declaration. ## v1.18.26-dev object field TEXT negative validation - Added a focused negative `claro typecheck` fixture for direct object-field assignment with a TEXT field: `NEW Player player` followed by `SET player.name 123` when the class declares `HAS name TEXT`. - Wired the TEXT wrong-type fixture into both the typecheck diagnostics validator and `claro validate`, completing NUMBER/TEXT/YESNO negative coverage for the current narrow direct object-field diagnostic foundation. ## v1.18.26-dev object field YESNO negative validation - Added a focused negative `claro typecheck` fixture for direct object-field assignment with a YESNO field: `NEW Player player` followed by `SET player.ready "yes"` when the class declares `HAS ready YESNO`. - Wired the YESNO wrong-type fixture into both the typecheck diagnostics validator and `claro validate`, complementing the existing NUMBER wrong-type diagnostic and NUMBER/TEXT/YESNO positive field fixtures. ## v1.18.26-dev object field YESNO positive validation - Added a focused positive `claro typecheck` fixture for direct object-field assignment with a YESNO field: `NEW Player player` followed by `SET player.ready YES` when the class declares `HAS ready YESNO`. - Wired the YESNO object-field fixture into both the typecheck diagnostics validator and `claro validate`, complementing the existing NUMBER/TEXT positive fixtures and wrong-type field diagnostic fixture. ## v1.18.26-dev object field TEXT positive validation - Added a focused positive `claro typecheck` fixture for direct object-field assignment with a TEXT field: `NEW Player player` followed by `SET player.name "Ada"` when the class declares `HAS name TEXT`. - Wired the TEXT object-field fixture into both the typecheck diagnostics validator and `claro validate`, complementing the existing NUMBER positive fixture and wrong-type field diagnostic fixture. ## v1.18.26-dev object field positive validation - Added a focused positive `claro typecheck` fixture for direct object-field assignment: `NEW Player player` followed by `SET player.score 10` when the class declares `HAS score NUMBER`. - Wired the positive object-field fixture into both the typecheck diagnostics validator and `claro validate`, complementing the existing wrong-type field diagnostic fixture. ## v1.18.26-dev object field assignment diagnostics - Added a narrow `claro typecheck` diagnostic for direct wrong-type object field assignment after `NEW Class object`, such as `SET player.score "ten"` when `HAS score NUMBER` is known. - Wired the new negative fixture into typecheck validation while keeping the existing object method positive/negative checks and object-field runtime fixture green. - Documented the narrow object-field diagnostic scope in beginner-facing status and static typing docs. ## v1.18.26-dev object method parameter diagnostics - Extended the narrow `CHECK TYPE` argument diagnostic foundation to simple object methods such as `DO player.add "five"` when `player` was created with `NEW Player player`. - Added focused positive and negative typecheck fixtures for object method parameter diagnostics and wired them into package/typecheck validation. - Documented the current method-parameter diagnostic behavior in the README, current status, roadmap, and advanced static typing guide. ## v1.18.26-dev multi-parameter function diagnostics - Extended the function-argument typecheck foundation so both `DO` and compatibility `CALL ... WITH` calls can report checked parameter mismatches. - Added multi-parameter positive and negative fixtures that verify each wrong argument gets a clear parameter-specific diagnostic. - Included the function argument fixtures in `claro validate` so package validation covers the diagnostic foundation directly. ## v1.18.26-dev typed function diagnostic foundation - Added a narrow `claro typecheck` foundation for function argument diagnostics: if a function body declares a parameter expectation with `CHECK TYPE parameter IS TYPE`, calls to that function are checked against the expected argument type. - Added positive and negative fixtures for the function-argument diagnostic path. - Extended `tools/validate_typecheck_diagnostics.py` to verify both the new friendly error and a matching successful call. ## v1.18.26-dev learner documentation status cleanup - Grouped the README documentation map by current feature status so new learners can see what is ready, what is foundation-level, and what is still planned or experimental. - Added a learner-first trust order to `docs/CURRENT_STATUS.md`. - Marked `docs/FUTURE_FEATURES_ROADMAP.md` as a historical implementation plan plus remaining ideas, with completed slices separated from still-planned work. ## v1.18.26-dev documentation audit consistency update - Clarified that `docs/DOCUMENTATION_AUDIT_v1.18.26.md` is a historical snapshot from the first documentation cleanup pass. - Pointed current readers toward `CURRENT_STATUS.md`, `ROADMAP.md`, and the README documentation map before the original audit problem list. ## v1.18.26-dev type mismatch diagnostics update - Improved `claro typecheck` messages so scalar, list, map, and `CHECK TYPE` mismatches use one beginner-friendly `Type mismatch` / `Type check failed` style. - Diagnostics now name the variable/container, the expected type, and the detected value type in plain language. - Added `tools/validate_typecheck_diagnostics.py` and wired it into `tools/validate_v1_17.py`. - Strengthened `tools/validate_v1_17.py` so it rebuilds `claro.exe` before validation instead of trusting a stale binary. - Updated advanced static typing docs with the clearer diagnostic examples. ## v1.18.26-dev package manifest and security foundation update - Promoted the next development slice to `Claro v1.18.26`. - Added `manifest-version: 1` to `claro.project` and local `claro.package` files. - Added deterministic package checksums to local package manifests and `claro.lock`. - Hardened `claro package doctor` so it validates package manifests and checksums. - Added `tools/validate_package_security.py` and wired it into `tools/validate_v1_17.py`. ## v1.18.26-dev cooperative concurrency foundation update - Added beginner-friendly `YIELD` and `TASK STATUS name AS variable` support. - Documented deterministic cooperative concurrency in `docs/CONCURRENCY.md`. - Added `tests/40_tasks_status.claro` and `tools/validate_concurrency.py`. - Improved unfinished block diagnostics so missing task endings say the opened block needs `ENDTASK`. - Wired concurrency validation into `tools/validate_v1_17.py`. ## v1.18.26-dev LSP diagnostics helper update - Replaced the old completion-word-only `support/lsp/claro_lsp_stub.py` with a command-based helper. - Added JSON `metadata`, `completions`, and `diagnostics` helper modes. - Diagnostics now combine `claro check` and `claro typecheck` output into editor-friendly JSON objects. - Added `tools/validate_lsp_helper.py` and wired it into `tools/validate_v1_17.py`. - Expanded `docs/IDE.md` with LSP/helper usage. ## v1.18.26-dev IDE foundation update - Expanded `claro ide` into valid editor metadata JSON with `file_extensions`, `commands`, `snippets`, and `diagnostics`. - Added typed container names to IDE metadata, including `LIST OF TEXT` and `MAP OF NUMBER`. - Added `tools/validate_ide_metadata.py` and wired it into `tools/validate_v1_17.py`. - Added `docs/IDE.md` for editor integration guidance. ## v1.18.26 development foundation - Added static checking for typed lists such as `LIST OF TEXT`. - Added static checking for typed maps such as `MAP OF NUMBER`. - Added `tests/typecheck_container_good.claro` and `tests/typecheck_container_bad.claro`. - Added `docs/FUTURE_FEATURES_ROADMAP.md` covering IDE, registry, concurrency, GUI/game, web, and optimization tracks. - Added `docs/ADVANCED_STATIC_TYPING.md`. ## Claro v1.18.26 - SDL Documentation Correction - Clarified that SDL 1.2 is not included in the stable executable. - Removed the misleading `claro package add sdl` README example. - Marked `examples/experimental_sdl/` as future/experimental examples only. ## Claro v1.18.26 - Stable Test Runner Fix - Promoted the package to stable `Claro v1.18.26`. - Fixed Windows `claro test` so it discovers and runs the full golden test suite. - Normalized runtime error paths to forward slashes for cross-platform expected-output stability. - Validated version, full tests, package validation, and networking example. ## Claro v1.18.26 - Networking Reliability Release - Updated visible version string to `Claro v1.18.26`. - Hardened the networking foundation while keeping plain-text commands. - Added offline-safe `claro://` network test URLs so tests and lessons do not need internet access. - Improved `HTTP GET`: - `HTTP GET "claro://hello" AS page` - `HTTP GET "claro://hello" AS page STATUS status` - Added `HTTP STATUS "url" AS code`. - Added `HTTP SAVE "url" TO "file" AS code`. - Added `HTTP CHECK "url" AS safe`. - Added `LASTHTTP` for the latest HTTP status code. - Added URL safety checks before shelling out to `curl`. - Added `examples/networking.claro`. - Added network tests: - `tests/38_network_mock.claro` - `tests/39_http_save.claro` - Added docs: - `docs/V1_17_NETWORKING.md` - `docs/V1_17_VALIDATION.md` - Added `tools/validate_v1_17.py`. ## Claro v1.15.26 - Objects and Classes Hardening - Updated visible version string to `Claro v1.15.26`. - Hardened `CLASS`, `HAS`, `NEW`, and object field behavior. - Added class method support with simple syntax such as `DO player.show`. - Added typed field defaults when creating objects. - Added runtime checks for typed object fields such as `player.score NUMBER`. - Added object helper commands: `OBJECT CLASS player AS kind` and `OBJECT FIELDS player AS fields`. - Improved nested block matching so classes can contain methods that end with plain `END`. - Updated validation to include the object/class example. - Added object method and object field type regression tests. ## Claro v1.14.26 - Static Type Hardening - Updated visible version string to `Claro v1.14.26`. - Added `claro typecheck FILE` for simple static type checking before a script runs. - Added runtime type helpers: `TYPE OF value AS name` and `CHECK TYPE value IS TYPE`. - Added typed input forms such as `ASK "How old are you?" age NUMBER`. - Added simpler object creation form `NEW Player player` while keeping `NEW Player AS player`. - Added `examples/type_hardening.claro` and `examples/typed_ask.claro`. - Added typecheck fixtures and validation docs for v1.14.26. ## Claro v1.10.26 - First Stable v1 Foundation - Promoted Claro from final candidate to the first stable v1 foundation release. - Updated visible version string to `Claro v1.10.26`. - Updated package docs from RC9/final-candidate language to stable-release language. - Kept the beginner-first syntax: - `SET name TO "Jon"` - `SET name "Jon"` - `ASK "What is your name?" name` - `END` as a simple block closer. - Kept compatibility forms such as `ASK ... AS`, `ENDIF`, `DONE`, and `LEARNED`. - Kept simple functions: - `TEACH greet name` - `DO greet "Jon"` - Kept the practical scripting base: - command-line arguments - environment lookup - files and folders - text helpers - list helpers - random numbers - command output capture - JSON - imports - TRY/CATCH - Kept project and tool commands: - `claro help` - `claro examples` - `claro doctor` - `claro validate` - `claro repl` - `claro new MyProject` - `claro run` - `claro package init|add|list` - `claro ide` - Added stable-release docs: - `docs/STABLE_RELEASE.md` - `docs/V1_10_VALIDATION.md` - `docs/POST_1_0_ROADMAP.md` - Added `tools/validate_v1_10.py`. - Validation result: `PASS: 0 failure(s)`. ## Claro v1.09.26 RC9 - Final Candidate - Updated visible version string to `Claro v1.09.26`. - Kept normal development in the `v1.xx.yy` version line. - Added final-candidate validation with `claro validate`. - Added/kept package health commands: - `claro help` - `claro examples` - `claro doctor` - `claro validate` - Added simple beginner function syntax: - `TEACH greet name` - `DO greet "Jon"` - Preserved older function syntax: - `TEACH greet TAKES name` - `CALL greet WITH "Jon"` - Added project helper command: - `claro new MyProject` - `claro run` to run `main.claro` - Added REPL command: - `claro repl` - Added text polish helpers: - `TEXT STARTS ... WITH ... AS` - `TEXT ENDS ... WITH ... AS` - `TEXT REPLACE ... FROM ... TO ... AS` - Added examples and tests for simple functions and text polish. - Added final release checklist and RC9 validation notes. ## Claro v1.06.26 - Simple Learner Scripting Release - Updated visible version string to `Claro v1.06.26`. - Added official Claro logo under `assets/Claro_Logo.jpg`. - Added `docs/BRANDING.md`. - Added simple beginner syntax support: - `SET name "Jon"` - `SET name TO "Jon"` - `SET name to "Jon"` - `ASK "What is your name?" name` - `END` as a beginner-friendly block closer. - Preserved older RC syntax for compatibility. - Added command-line argument access, environment lookup, folder/file helpers, command output capture, random numbers, text helpers, and list helpers. - Added tests for simple syntax, `END`, practical files/folders, text helpers, and list helpers. ## Earlier release candidates Earlier RCs built the current beginner scripting foundation: output/input, variables, math, conditionals, loops, lists, maps, functions, files, JSON, imports, TRY/CATCH, examples, lessons, checker support, formatter support, and test support.