Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .claude/guides/status.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
- **작은 결함 묶음** (2026-10-01, **`0.16.8`**): 메모·묶음 글상자의 탭·줄바꿈·하이퍼링크 치환 문자열 수리(#195) · 금지 제어 문자 제거 + `XML_FORBIDDEN_CHARS_REMOVED` 경고(#198) · 33겹 이상 묶음 도형 `InvalidStructure` 거부(#196) · 무손실 Markdown 왕복의 `&`·`<`·`>`·따옴표 보존(#197) · 이미지 여럿 문서의 HWPX 바이트 결정성(#200) · `census-hwp5 --companion` 깨진 section 을 `HWPX_CENSUS_FAILED` 로 종료(#201). 출처 = `crates/hwpforge/CHANGELOG.md`.
- **글맵시 줄바꿈 + MSRV 1.89** (2026-10-03, **`0.16.9`**): HWP→HWPX 변환에서 여러 줄 글맵시(TextArt)의 줄바꿈을 `␍␊`(U+240D U+240A)로 쓰고 읽을 때 `\r\n` 으로 푼다(#199). 워크스페이스 MSRV 를 1.89 로 올림(간접 의존성 `uuid` 1.27 이 rustc 1.89 요구, krilla 경로 4크레이트는 1.92 유지).
- **Wave 0 안정성 수정** (2026-10-04, **`0.16.10`**): 신뢰할 수 없는 입력의 메모리·스택 폭주 3건 — 편집 경로 ZIP 엔트리 해제 상한(#227) · HWP5 차트 OLE·이미지 해제를 문서 예산에 합산(#228) · 수식→LaTeX 파서 중첩 깊이 32 가드(#229). 전체 리팩터링 검토 백로그의 P0(`.docs/planning/2026-10-04-refactoring-review.md`).
- **한컴 표기·이름 정리** (2026-10-13, **`0.16.11`**): 한컴 HWP 공개 문서 이용 표기를 README·문서·CLI 도움말·MCP 서버 정보·Python README 에 추가(#232) · 대장간 비유 이름 정본화(`branding/BRANDING.md`, MCP 별칭 Anvil→Vise, #233) · MCP `initialize` 제목과 Python 모듈 설명에 같은 이름(#234). 코드·API 변화 없음.

> **이 섹션은 짧은 상태 스냅샷으로만 유지한다 (wave-by-wave 이력을 여기 다시 쌓지 말 것).**
> Wave별 상세 이력 + breaking change: [GitHub Releases](https://github.com/ai-screams/HwpForge/releases) + 커밋이 귀속된 크레이트별 `crates/*/CHANGELOG.md`(canonical — `hwpforge-core`·`hwpforge-smithy-hwpx`·`hwpforge-smithy-md`·`hwpforge-bindings-mcp` 등, release-plz 는 커밋 없는 크레이트는 건너뛴다) 와 Claude auto-memory `MEMORY.md` / `phase11_wave_history.md`. umbrella `crates/hwpforge/CHANGELOG.md` 는 `0.5.0`(2026-03-22) 뒤 공백이 있다가 `0.16.5` 부터 release-plz 가 다시 채운다 — `0.6.0`\~`0.16.4` 구간은 크레이트별 CHANGELOG·GitHub Releases 로 (루트 `CHANGELOG.md` 는 0.9.0 이후 정지).
Expand All @@ -36,7 +37,7 @@

**Workspace Facts** (code-grounded — 카운트는 drift하니 인용 전 확인):

- Cargo packages `12` (smithy-pdf 포함) · crates.io published `0.16.10` (2026-10-04) · MSRV `1.89` (`hwpforge-convert`·bindings-cli·bindings-py·smithy-pdf 는 krilla 경로로 `1.92`) · Dev toolchain Rust `1.93`
- Cargo packages `12` (smithy-pdf 포함) · crates.io published `0.16.11` (2026-10-13) · MSRV `1.89` (`hwpforge-convert`·bindings-cli·bindings-py·smithy-pdf 는 krilla 경로로 `1.92`) · Dev toolchain Rust `1.93`
- `crates/` 추적 src `.rs` 파일 `264` · nextest(make ci) \~`4,087` passed + `14` skipped · `examples/` 산출물 `68`+ (미추적 `examples/hwp5_review/` 리뷰 영역 별도 — gitignore 아님) · GitHub workflows `6`

---
Expand Down
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co

HwpForge is a Rust library for programmatic control of Korean HWP/HWPX document formats, designed with LLM-first principles. The goal is to enable AI agents (like Claude Code) to generate Korean government proposal documents using natural language + Markdown + YAML style templates.

현재 crates.io published = **0.16.10** (2026-10-04, Wave 0 안정성 — 편집 ZIP 상한·HWP5 차트/이미지 예산·수식 깊이 가드). 상태 스냅샷·에픽 이력 = `.claude/guides/status.md`.
현재 crates.io published = **0.16.11** (2026-10-13, 한컴 공개 문서 표기·대장간 이름 정리 — MCP 별칭 Vise). 상태 스냅샷·에픽 이력 = `.claude/guides/status.md`.

---

Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ exclude = ["fuzz"]
resolver = "2"

[workspace.package]
version = "0.16.10"
version = "0.16.11"
authors = ["Pignuante <hanyul.ryu@hanyul.xyz>"]
categories = [
"parser-implementations",
Expand Down
12 changes: 12 additions & 0 deletions crates/hwpforge-bindings-mcp/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,18 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.16.11](https://github.com/ai-screams/HwpForge/compare/hwpforge-bindings-mcp-v0.16.10...hwpforge-bindings-mcp-v0.16.11) - 2026-10-13

### Fixed

- *(bindings)* 서버가 `initialize` 응답에 알리는 제목을 `Vise — HwpForge MCP Server` 로 바꾼다(시작 로그도 같음). 식별자 `hwpforge-mcp` 는 그대로다 (#234)

### Documentation

- 서버 정보 설명과 README 에 한컴 HWP 문서 파일 공개 문서 이용 표기를 넣는다 (#232)

- MCP 서버의 별칭을 Anvil 에서 **Vise** 로 바꾼다. crate 설명과 npm README 문구가 바뀌고, 설치 명령과 패키지 이름은 그대로다 (#233)

## [0.16.6](https://github.com/ai-screams/HwpForge/compare/hwpforge-bindings-mcp-v0.16.5...hwpforge-bindings-mcp-v0.16.6) - 2026-09-22

### Added
Expand Down
12 changes: 12 additions & 0 deletions crates/hwpforge/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,18 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.16.11](https://github.com/ai-screams/HwpForge/compare/v0.16.10...v0.16.11) - 2026-10-13

### Fixed

- *(bindings)* MCP 서버가 `initialize` 응답에 알리는 제목을 패키지 설명과 같은 이름 `Vise — HwpForge MCP Server` 로 바꾼다(시작 로그도 같음). 식별자 `hwpforge-mcp` 는 그대로다. Python `help(hwpforge)` 첫 줄은 `Tongs — …` 로 시작한다 (#234)

### Documentation

- 한컴이 HWP 문서 파일 공개 문서를 이용할 때 요구하는 표기("본 제품은 한컴의 HWP 문서 파일(.hwp) 공개 문서를 참고하여 개발하였습니다.")를 README, 문서 사이트, `hwpforge --help`, MCP 서버 정보, Python README, HWP5 크레이트 rustdoc 에 넣는다 (#232)

- 계층과 창구의 대장간 비유 이름을 하나로 정한다. Core = Anvil(모루), CLI = Hammer, MCP 서버 = **Vise**(예전 Anvil), Python = Tongs. 패키지·바이너리 이름은 바뀌지 않고 crates.io·npm·PyPI 설명 문구만 바뀐다. 정본은 `branding/BRANDING.md` 의 "대장간 이름 체계" (#233)

## [0.16.10](https://github.com/ai-screams/HwpForge/compare/v0.16.9...v0.16.10) - 2026-10-04

### Fixed
Expand Down
Loading