Files
Claro/CHANGELOG.md
T

38 KiB

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.
  • Added the matching compatibility TAKES / LEARNED fixture so older method syntax receives the same coverage.

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.