Skip to content

muni v0.23.0

Choose a tag to compare

@github-actions github-actions released this 02 Sep 12:51
· 45 commits to main since this release

각주 번호, 화학식, 제곱미터 — 한글 문서에서 첨자가 붙는 자리는 정해져 있는데, 두 한글 리더가 모두 그것을 버리고 본문 크기의 글자로 들여왔습니다. 같은 문서를 DOCX 로 내보내면 위첨자가 살아 있었으므로, 서식이 사라지는 곳은 한글 쪽 둘뿐이었습니다.

추가

.hwp — 위첨자·아래첨자

CHAR_SHAPE 의 속성 낱말은 스위치를 비트 하나씩 담습니다. 첨자는 그 낱말의 15번(위)·16번(아래) 비트 — 외곽선·그림자·양각·음각 뒤, 취소선이 쓰는 세 비트 앞입니다. 이웃한 양각·음각 비트와 한 칸 차이라, 자리를 잘못 세면 두꺼운 글자가 첨자로 들어옵니다.

.hwpx — 위첨자·아래첨자

charPr 의 자식 요소로 적히고, 철자가 <hh:supscript/> 입니다 — "er" 이 없습니다. superscript 를 찾으면 아무 파일에서도 맞지 않습니다. 내림은 <hh:subscript/> 입니다.

올림과 내림이 함께 켜졌을 때

두 형식 모두 한 글자에 올림과 내림을 동시에 말할 수 있는데 편집기는 하나만 그립니다. 어느 쪽을 택할지는 hangul.Script 한 곳에 두어, 두 리더가 같은 답을 냅니다.

.hwpx 로 씁니다

쓰는 쪽은 형식이 charPr 의 자식을 선언한 차례대로 읽으므로, 첨자는 strikeout 뒤 스위치의 맨 끝에 놓습니다. 차례가 어긋난 파일은 한글이 열지 못합니다.

확인

형식 문서가 말하는 자리에 바이트를 깐 새 픽스처들입니다 — 리더의 상수가 아니라 형식에서 씁니다.

  • 첨자가 붙은 .hwp CHAR_SHAPE 가 그대로 들어오는지
  • 이웃한 양각 비트를 첨자로 오해하지 않는지
  • 한글이 쓰는 모양의 .hwpx charPr 에서 supscript 를 알아보는지
  • every-node.json 왕복에서 위첨자·아래첨자가 남는지

세 픽스처 모두 변경 전에는 실패하는 것을 확인했습니다. gofmt -l, go vet ./..., go test ./... 전체가 통과합니다.

업그레이드

마이그레이션과 설정 변경은 필요하지 않습니다.

gzip -dc muni-v0.23.0.tar.gz | docker load
docker compose -f compose.example.yaml --env-file .env up -d

각주가 있거나 화학식·단위가 들어간 한글 문서를 가져오셨다면 다시 가져와 보세요. 첨자는 이번에 처음 들어옵니다. 이미 가져와 둔 문서는 그대로 남습니다.

오프라인 설치

릴리스 asset 에는 muni:v0.23.0 Docker 이미지가 포함되어 있습니다.

gzip -dc muni-v0.23.0.tar.gz | docker load
docker image inspect muni:v0.23.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.23.0.tar.gz
  • 크기: (릴리스 후 기록)
  • SHA-256: (릴리스 후 기록)
  • 내부 이미지 태그: muni:v0.23.0
sha256sum muni-v0.23.0.tar.gz

GitHub Actions가 이미지 빌드, archive 생성, 내부 이미지 태그 검증을 완료한 뒤 이 asset을 게시했습니다.

문서