Summary
@rhwp/core 0.7.3 set_field (HwpCtrl PutFieldText) 는 in-memory 에 반영되지만, save 후 파일을 다시 열면 value 가 빈 문자열로 유실되는 경우가 있습니다.
Environment
@rhwp/core 0.7.3
- Node.js v25.6.0 on macOS arm64
- Document: HWP5 양식 (
field-01.hwp, Clickhere 필드 2개 포함)
Repro
const d1 = new HwpDocument(bytesFromFieldForm);
d1.set_field("회사명", "PERSIST_TEST");
// 같은 세션: OK
console.log(d1.get_field("회사명")); // → "PERSIST_TEST"
// 저장
writeFileSync("field-01.hwp", d1.exportHwp());
// 재오픈
const d2 = new HwpDocument(readFileSync("field-01.hwp"));
console.log(d2.get_field("회사명")); // → "" ← 유실
Expected
set_field 후 save 하고 파일을 다시 열면 field value 가 유지되어야 합니다. 양식 자동 채움의 기본 전제.
Actual
In-memory 에는 반영되지만 serialize 경로에서 field value 가 누락되는 것으로 추정.
Impact
LLM agent / MCP / CLI 가 양식을 자동으로 채우는 시나리오 전체가 작동하지 않습니다. 양식 필드 편집이 rhwp 의 핵심 use-case 중 하나인데, 저장 persistence 가 안 되면 사실상 사용 불가.
Suggested fix direction
exportHwp / exportHwpx serialize 경로에서 PutFieldText 변경분이 field control 의 Text run 으로 실제 기록되는지 검증
- 특히 Clickhere 필드의
ControlChar sub-record 와 Text run 교체 여부 확인
- 회귀 테스트: set_field → save → open → get_field 시나리오를 여러 field type (Clickhere / FormCtrl / BOOKMARK 기반) 에 대해 추가
English summary
set_field(name, value) applies in-memory (same-session get_field returns the new value) but after save and reopen, the persisted value is empty. This breaks every auto-fill-form use-case for LLM/MCP/CLI consumers.
References
- 다운스트림 확인 경로 (비공개):
rhwp-mcp/src/tools/field.ts (setFieldTool + getFieldTool), Swift bridge RhwpMcpBridgeService.applyEdit setField intent
Summary
@rhwp/core0.7.3set_field(HwpCtrlPutFieldText) 는 in-memory 에 반영되지만,save후 파일을 다시 열면 value 가 빈 문자열로 유실되는 경우가 있습니다.Environment
@rhwp/core0.7.3field-01.hwp, Clickhere 필드 2개 포함)Repro
Expected
set_field후save하고 파일을 다시 열면 field value 가 유지되어야 합니다. 양식 자동 채움의 기본 전제.Actual
In-memory 에는 반영되지만 serialize 경로에서 field value 가 누락되는 것으로 추정.
Impact
LLM agent / MCP / CLI 가 양식을 자동으로 채우는 시나리오 전체가 작동하지 않습니다. 양식 필드 편집이 rhwp 의 핵심 use-case 중 하나인데, 저장 persistence 가 안 되면 사실상 사용 불가.
Suggested fix direction
exportHwp/exportHwpxserialize 경로에서 PutFieldText 변경분이 field control 의 Text run 으로 실제 기록되는지 검증ControlCharsub-record 와 Text run 교체 여부 확인English summary
set_field(name, value)applies in-memory (same-sessionget_fieldreturns the new value) but aftersaveand reopen, the persisted value is empty. This breaks every auto-fill-form use-case for LLM/MCP/CLI consumers.References
rhwp-mcp/src/tools/field.ts(setFieldTool + getFieldTool), Swift bridgeRhwpMcpBridgeService.applyEditsetField intent