Skip to content

Conversation

madhav165
Copy link
Collaborator

@madhav165 madhav165 commented Aug 26, 2025

πŸ› Bug-fix PR


πŸ“Œ Summary

Form field generation for array types was incomplete and inconsistent:

  1. Boolean arrays β€” Unchecked checkboxes sent no value (missing "false").
  2. Array naming β€” Some inputs used key while others used key[].
  3. Union schemas β€” Fields defined as anyOf: [ { type:"array" }, { type:"null" } ] (nullable arrays) were not recognized as arrays, causing the UI to render incorrectly and hide the Add items button.

πŸ” Reproduction Steps

  1. Define a schema with:
    • items.type = boolean (boolean array).
    • OR anyOf: [ { type:"array", items:{...} }, { type:"null" } ] (nullable array).
  2. Open the tool-test modal.
  3. Observe:
    • Boolean arrays: unchecked boxes do not send "false".
    • Nullable arrays: UI fails to show as an array, no Add items button.

🐞 Root Cause

  • Only a visible <input type="checkbox"> was rendered for booleans β†’ unchecked state omitted.
  • Array field names were inconsistent (key vs key[]).
  • Branching relied on prop.type === "array" only, so anyOf/oneOf unions with null were missed.

πŸ’‘ Fix Description

  • Boolean array fix:
    • Added a hidden <input type="hidden" value="false"> for every boolean array item.
    • Disabled when checkbox is checked.
    • Guarantees "false" is submitted when unchecked.
  • Unified naming: All array inputs now consistently use keyValidation.value + "[]".
  • Input creation cleanup: Directly create the correct input type (number, boolean, text) instead of mutating a single element.
  • Union schema support:
    • Added detection for arrays inside anyOf / oneOf alongside null.
    • Correctly handles schemas like anyOf: [ {type:"array"}, {type:"null"} ].
    • Renders UI as array with an Add items button, starting empty if default is null.
  • Prevent double append: Boolean array inputs already append checkbox + hidden, so skip re-append.

πŸ§ͺ Verification

Check Command Status
Lint suite make lint βœ…
Unit tests make test βœ…
Manual regression - Boolean arrays Unchecked boxes correctly submit "false" βœ…
Manual regression - Number/text arrays Values submit correctly βœ…
Manual regression - Nullable arrays Schema with anyOf: [array, null] renders with Add items button and submits properly βœ…

πŸ“ MCP Compliance (if relevant)

  • No breaking change to MCP clients

βœ… Checklist

  • Code formatted (make black isort pre-commit)
  • No secrets/credentials committed

Signed-off-by: Madhav Kandukuri <madhav165@gmail.com>
@madhav165 madhav165 mentioned this pull request Aug 26, 2025
3 tasks
Signed-off-by: Madhav Kandukuri <madhav165@gmail.com>
@madhav165 madhav165 self-assigned this Aug 26, 2025
@madhav165 madhav165 added bug Something isn't working frontend Frontend development (HTML, CSS, JavaScript) labels Aug 26, 2025
@madhav165 madhav165 added this to the Release 0.7.0 milestone Aug 26, 2025
@madhav165 madhav165 changed the title Fix checkbox input from UI Always pass checkbox value from UI Aug 26, 2025
Signed-off-by: Madhav Kandukuri <madhav165@gmail.com>
@madhav165 madhav165 changed the title Always pass checkbox value from UI Fix handling of checkbox inputs and optional arrays in UI Aug 26, 2025
crivetimihai and others added 3 commits August 28, 2025 12:40
Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>
…cation and SSO (#862)

* Multitenancy support

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Cleanup comments and duplicate env

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Cleanup comments and duplicate env

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Fix smoketest

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Fix docker-compose

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Fix postgres

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* .env.example update

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* flake8 alembic script

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Update helm charts

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Update docs

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Update docstring

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Update docstring

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Update docstring

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Update ruff

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Update docs

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Update doctest

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Update doctest 45%

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Fix blocking removal of last admin

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Fix blocking removal of last admin

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Fix number of team members

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Fix team approval workflow

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Fix logs

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Fix logs

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Add multitenancy scripts to check migration

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Add multitenancy scripts to check migration

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Add manual testing

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Add manual testing

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Add manual testing

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Fix gateways a2a and prompts migration

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Fix APP_ROOT_PATH

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Fix APP_ROOT_PATH part 2

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* flake8

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Update names in UI

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Update Tools samples for Bulk Import

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Update docs for password change

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Add 2nd pass. check field

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Add 2nd pass. check field

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Fix missing token_usage_logs migration

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Fix missing token_usage_logs migration

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Fix JSON types during migration

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Fix JSON types during migration

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Major refactor migration

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Major refactor migration

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Fix flake8

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Fix import

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Fix import

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Fix import

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Fix import

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* Fix tests

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

---------

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>
Signed-off-by: Madhav Kandukuri <madhav165@gmail.com>
@crivetimihai
Copy link
Member

Likely fixed in latest, please re-open a new PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working frontend Frontend development (HTML, CSS, JavaScript)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants