Skip to content

feat(assembly): save one calendar date on the assembly host (#5358) - #5373

Merged
natechadwick-intsof merged 3 commits into
mainfrom
fix/issue-5358-assembly-date-field
Oct 8, 2026
Merged

natechadwick-intsof merged 3 commits into
mainfrom
fix/issue-5358-assembly-date-field

Conversation

@natechadwick-intsof

@natechadwick-intsof natechadwick-intsof commented Oct 8, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Active Assembly saves one calendar date (yyyy-MM-dd) on the assembled page through the existing item field PUT (dataType date). Reload shows that date. Other fields are left as they were. A blank date does not clear a stored date. Cancel, a read-only date, and HTTP 400, 403, and 409 do not claim success. Datetime, clear, and the Content Editor host stay out of scope.

Parent: #4530. Slice 104.

Fixes #5358

Operator: Grok: night-issue-prs (model grok-4.7)

Test plan

  1. Open Active Assembly for a page that has one dataType date field (not datetime) and other text fields.
  2. Change the date, choose Save fields, and reload. The new date is shown. Other fields are unchanged.
  3. Empty the date and save. The notice is not Fields saved, the server is not called, and the previous date remains.
  4. Change the date and choose Cancel. Nothing is written and the previous date remains.
  5. A read-only date is not editable. HTTP 400, 403, and 409 leave the previous date and are not success.

Checklist

  • Product documentation — updated product-docs/8.2/admin/content-explorer.md (Active Assembly section only)
  • Unit / module tests — Vitest for overlay date mapping, blank refusal, cancel, read-only, and HTTP 400/403/409; WebUI clean install green
  • WebUI + Playwright — modules/perc-qa-automation/frontend/tests/assembly-date-field.spec.js (7 passed on H2 QA)
  • Build gates — standalone clean install for WebUI and perc-qa-automation; no final/API-shape change
  • Cross-platform — no new filesystem path construction

Build evidence

modules_built: WebUI, modules/perc-qa-automation

downstream_checked: none (no Java type made final/sealed and no public signature change)

  • cd WebUI && rtk mvn clean install — BUILD SUCCESS. Surefire Tests run: 69, Failures: 0, Errors: 0, Skipped: 0. Vitest Test Files 727 passed, Tests 6916 passed. No new warnings from this change (preexisting javadoc and dependency warnings only).
  • cd modules/perc-qa-automation && rtk mvn clean install — BUILD SUCCESS. No tests to run (Playwright is the surface run below).

UI proof (H2 QA)

  • python3 docker/scripts/perc-devctl.py qa-up — RESULT:OK. TEST_CMS_URL=http://127.0.0.1:9993 QA_CMS_HOST_PORT=9993 container perc-matrix-cms-h2.
  • python3 docker/scripts/perc-devctl.py qa-health — RESULT:OK HTTP:200 HEALTH:healthy.
  • Hot-copied WebUI/target/generated-webui/cm/modern/assets into /opt/Percussion/jetty/base/webapps/Rhythmyx/cm/modern/assets (static SPA; no Jetty restart; no docker restart).
  • qa-health again — RESULT:OK HEALTH:healthy.
  • cd modules/perc-qa-automation/frontend && TEST_CMS_URL=http://127.0.0.1:9993 ADMIN_USERNAME=Admin TEST_DB_TYPE=h2 TEST_PRODUCT=cms npm run test:surface -- --path tests/assembly-date-field.spec.js — 7 passed.
  • console-clean=yes (spec assertQuiet; no serious page errors).
  • server.log-clean=yes (no ERROR/FATAL in server.log for the cell).
  • python3 docker/scripts/perc-devctl.py qa-down — container removed.

Pre-push local code review

Independent Erlang review (not the author). Full report:

<!--
Copyright (c) 2026 Intersoft Data Labs, Inc.
Licensed under the Apache License, Version 2.0.
-->

# Erlang review — PR #5373

## Scope

- Persona: erlang 0.1.1
- Persona source: /home/nate/.local/share/mkd/agents/erlang
- Status: mkd-code-review 0.1.18, pack percussion, --gate advisory, --git-base origin/main
- PR: https://github.com/intersoftdatalabs-in/percussioncms/pull/5373
- Base: origin/main (26082e3cf9b54fc1966b90a3c16e9c32fc0f71df)
- Head: a6509060131cc862833b3c3e3fce4d7e678ee582
- Files analyzed: 8

## Verdict

Recommendation: **approve**. Blocking bugs: 0. May merge: yes.

Independent read of `a650906013`: Active Assembly saves one calendar date (`yyyy-MM-dd`, `dataType` date) through the existing item field PUT. `calendarDateText` accepts only a widget date, so a blank value, a datetime, and an invalid day are not written. A blank change restores the previous date and does not call the server. Cancel restores the painted values and does not save. Read-only rows are omitted before the overlay is built. HTTP failures restore the pre-save overlay and do not show **Fields saved**. Datetime still classifies before date, so it stays off this overlay. Other changed fields are the only edits sent. Vitest covers the refusal and error paths. Playwright `assembly-date-field.spec.js` and `product-docs/8.2/admin/content-explorer.md` match that contract. No new filesystem path joins. No agent rule files.

Suggestions, not blockers: preexisting cognitive complexity on `handleSaveFields`, `applyFieldOverlay`, and `readNodeValue`. `llm.error` is Ollama CUDA out of memory, not a product defect.

## CLI stdout (`mkd-code-review analyze --format markdown`)

## Summary

Machine analysis found **4** finding(s), **0** bug(s).

## Scope

- Base: origin/main
- Head: HEAD
- Files: 8 analyzed
- In-diff: 0 finding(s); preexisting: 3
- Persona: erlang 0.1.1
- Persona source: /home/nate/.local/share/mkd/agents/erlang

## Recommendation

approve

## Gate

- Blocking bugs: 0
- May commit/push: yes

## Issues

### Issue 1 -- Severity: suggestion

- File: WebUI/src/main/ts/assembly/AssemblyHost.tsx:616 (preexisting)
- Rule: `complexity.cognitive`
- Tool: `arborist-metrics`
- Description: Function `handleSaveFields` cognitive=28 (max 15), cyclomatic=22 (max 15)
- Suggestion: Extract helpers, reduce nesting, use guard clauses (see CODE_STANDARDS).
- Status: open

### Issue 2 -- Severity: suggestion

- File: WebUI/src/main/ts/assembly/overlayFields.ts:679 (preexisting)
- Rule: `complexity.cognitive`
- Tool: `arborist-metrics`
- Description: Function `applyFieldOverlay` cognitive=26 (max 15), cyclomatic=9 (max 15)
- Suggestion: Extract helpers, reduce nesting, use guard clauses (see CODE_STANDARDS).
- Status: open

### Issue 3 -- Severity: suggestion

- File: WebUI/src/main/ts/assembly/overlayFields.ts:754 (preexisting)
- Rule: `complexity.cognitive`
- Tool: `arborist-metrics`
- Description: Function `readNodeValue` cognitive=17 (max 15), cyclomatic=13 (max 15)
- Suggestion: Extract helpers, reduce nesting, use guard clauses (see CODE_STANDARDS).
- Status: open

### Issue 4 -- Severity: suggestion

- File: review
- Rule: `llm.error`
- Tool: `llm`
- Description: model `ollama-dev-coder` failed: http: status 500 Internal Server Error body {"error":{"message":"llama-server process has terminated: exit status 1: cudaMalloc failed: out of memory\nalloc_tensor_range: failed to allocate CUDA0 buffer of size 5064192000\nerror loading model: unable to allocate CUDA0 buffer","type":"api_error","param":null,"code":null}}

- Status: open

Co-Authored by Grok Build 1.0.46 using grok-4.7 with agent night-issue-prs-erlang.

Active Assembly writes one yyyy-MM-dd date through the item field save.
A blank date, Cancel, a read-only date, and HTTP 400/403/409 do not claim success.

Fixes #5358

> Co-Authored by Grok Build 1.0.46 using grok-4.7 with agent night-issue-prs.
Machine gate approves. Preexisting complexity suggestions only. LLM stage
hit a CUDA out-of-memory warning and did not block.

> Co-Authored by Grok Build 1.0.46 using grok-4.7 with agent night-issue-prs.
> Co-Authored by Grok Build 1.0.46 using grok-4.7 with agent night-issue-prs-erlang.
@natechadwick-intsof

Copy link
Copy Markdown
Collaborator Author

LGTM. Independent Erlang review of 6788566: 0 blocking bugs. May merge: yes. Preexisting cognitive complexity only. Ollama CUDA OOM is not a product defect. Full report is in this PR body and docs/ai-generated/code-reviews/pr-5373-erlang.md.

Co-Authored by Grok Build 1.0.46 using grok-4.7 with agent night-issue-prs-erlang.

@natechadwick-intsof
natechadwick-intsof merged commit bd4a227 into main Oct 8, 2026
6 checks passed
@natechadwick-intsof
natechadwick-intsof deleted the fix/issue-5358-assembly-date-field branch October 8, 2026 03:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

model:grok-4.7 Session model grok-4.7 operator:grok Change authored by Grok operator:night-issue-prs Overnight issue-to-PR workflow

Projects

None yet

Development

Successfully merging this pull request may close these issues.

issue 4530 slice 104: Assembly host save one date field

1 participant