mirror of
https://github.com/PerpetualSoftware/pad.git
synced 2026-10-26 14:30:13 +00:00
98a0465fbc
* fix(server): a move refuses a field override the destination does not declare, as the copy does (BUG-2379) handleMoveItem refused RESERVED override keys but merged every other one, so an undeclared key landed in the moved item as an orphan field no schema renders. The cross-workspace copy has always refused the same request field with 400 malformed_override. The move now runs the copy's own check (items.UndeclaredOverrideKeys against the stripped destination schema), with the same code and message, after the reserved-key refusal so a reserved key keeps its more specific message. Create and update still ACCEPT undeclared keys with warnings.undeclared_fields (BUG-2850): callers round-trip the whole fields blob there. An override is a fresh assertion about the destination schema, not round-tripped state, and orphans already on the item ride the migration, not the override map. MCP ToolSurfaceVersion 0.42 -> 0.43: pad_item.action=move refuses a call it used to accept (behavior bump on the 0.40 / 0.29 grounds). CLAUDE.md, README.md and instructions.md follow. Claude-Session: https://claude.ai/code/session_01Vf8uZmYdsrQqJtbAmjUFSX * fix(server): an explicit null move override unsets the field, as the copy's does (BUG-2379, codex round 1) The move assigned nil and stored a literal "key": null, suppressing the schema default; the copy deletes the key. Same request field, same two sibling endpoints, same unit. Claude-Session: https://claude.ai/code/session_01Vf8uZmYdsrQqJtbAmjUFSX