muni v0.26.0
검토자가 형광펜으로 칠해 둔 문장 — 그 표시는 muni 가 .docx·HTML·마크다운에서 예전부터 주고받던 것인데 한글 두 형식만 버려서, 같은 문서라도 한글 파일로 들어오면 색이 지워진 맨 글자가 되었습니다.
추가
.hwp — 글자 음영
CHAR_SHAPE 은 색을 세 개 잇달아 적습니다. 글자색, 밑줄색, 그리고 세 번째가 음영색 입니다 — 레코드 처음부터 오프셋 60 입니다. 앞의 둘을 몇 바이트로 세는지 틀리면 밑줄색이 형광펜으로 들어옵니다.
.hwpx — 글자 음영
charPr 의 shadeColor 속성 입니다. 굵게·기울임처럼 자식 요소가 아니라 속성이라, 요소만 찾으면 어느 파일에서도 맞지 않습니다. 한글은 음영을 넣지 않은 런에도 shadeColor="none" 을 빠짐없이 적어 둡니다.
색이 있다고 다 음영은 아닙니다
흰색 은 음영이 없는 글자가 이미 놓여 있는 바탕이고, 두 형식이 "없음"을 적을 때 쓰는 값입니다. 검정 은 .hwp 가 아무도 손대지 않은 자리에 남겨 두는 값이라, 그대로 믿으면 글자가 제 색에 가려집니다. 그 판단은 hangul.TextShade 한 곳에 두어 두 리더가 같은 답을 냅니다.
.hwpx 로 씁니다
쓰는 쪽은 음영을 표시한 charPr 에만 색을 적고, 나머지는 한글이 쓰는 none 을 그대로 둡니다. 표시하지 않은 글자에 흰색을 적으면 한글에서는 같아 보여도 파일에는 없던 서식이 생깁니다.
확인
형식 문서가 말하는 자리에 바이트를 깐 새 픽스처들입니다 — 리더의 상수가 아니라 형식에서 씁니다. 넷 모두 이번 변경 전에 실패하는 것을 먼저 확인했습니다.
- 음영이 적힌
.hwpCHAR_SHAPE 가 그대로 들어오는지 - 흰색·검정이 형광펜으로 지어내지지 않는지
- 한글이 쓰는 모양의
.hwpxshadeColor속성을 알아보는지 - 쓰는 쪽이 표시한 글자에만 색을 적고 왕복해도 같은지
여기에 모든 서식을 한 번씩 지나는 왕복 검사에 형광펜 줄이 더해졌습니다. gofmt -l, go vet ./..., go test ./... 전체가 통과합니다.
업그레이드
마이그레이션과 설정 변경은 필요하지 않습니다.
gzip -dc muni-v0.26.0.tar.gz | docker load
docker compose -f compose.example.yaml --env-file .env up -d형광펜으로 칠한 곳이 있는 한글 문서(.hwp·.hwpx)를 가져오셨다면 다시 가져와 보세요. 글자 음영은 이번에 처음 들어옵니다. 이미 가져와 둔 문서는 그대로 남습니다.
오프라인 설치
릴리스 asset 에는 muni:v0.26.0 Docker 이미지가 포함되어 있습니다.
gzip -dc muni-v0.26.0.tar.gz | docker load
docker image inspect muni:v0.26.0
cp .env.example .env
# .env의 네 값을 운영 환경에 맞게 변경합니다.
docker compose -f compose.example.yaml --env-file .env up -d애플리케이션이 반드시 필요로 하는 런타임 환경변수는 다음 네 개입니다.
| 환경변수 | 설명 |
|---|---|
POSTGRES_DSN |
PostgreSQL 접속 문자열 |
BOOTSTRAP_ADMIN |
최초 관리자 아이디 또는 이메일 |
BOOTSTRAP_ADMIN_PASSWORD |
최초 관리자 비밀번호(12자 이상) |
ENCRYPTION_KEY |
base64로 인코딩한 32-byte master key |
PDF 변환 동작만 조정하는 선택 환경변수가 두 개 있습니다.
| 환경변수 | 기본값 | 설명 |
|---|---|---|
MUNI_CHROMIUM_PATH |
자동 탐색 | PDF Export에 사용할 headless 브라우저 경로 |
MUNI_PDF_CONCURRENCY |
2 |
동시에 실행할 Chromium 프로세스 수(1~32) |
운영 정보
- 서비스 포트:
8080 - Liveness:
/healthz - Readiness:
/readyz - REST API:
/api/v1 - 공개 링크:
/s/{token}— 인증 없이 열리는 유일한 화면입니다 - OpenAPI:
/api/openapi.yaml— 실제 라우트와 일치하며, 테스트가 그것을 지킵니다 - Prometheus:
/metrics— 관리자 인증 필요 - MCP:
/mcp - 지원 DB: PostgreSQL 15 이상
- 이미지에는 PDF Export용 Chromium과 Noto CJK 글꼴이 포함되어 있습니다.
릴리스 파일 검증
- 파일:
muni-v0.26.0.tar.gz - 크기: (릴리스 후 기록)
- SHA-256: (릴리스 후 기록)
- 내부 이미지 태그:
muni:v0.26.0
sha256sum muni-v0.26.0.tar.gzGitHub Actions가 이미지 빌드, archive 생성, 내부 이미지 태그 검증을 완료한 뒤 이 asset을 게시했습니다.