Skip to content

muni v0.34.0

Choose a tag to compare

@github-actions github-actions released this 07 Sep 10:00
· 21 commits to main since this release

PDF 를 가져올 때 하이퍼링크가 들어옵니다. 그리고 굵기·기울임이 줄 전체가 아니라 그려진 조각마다 붙습니다.

추가

하이퍼링크

PDF 는 링크의 글자에 표시를 달지 않습니다. 글자는 보통 글자로 그리고, 그 위에 사각형을 하나 얹어 주소를 그 사각형에 적어 둡니다. 둘을 다시 잇는 일은 읽는 쪽의 몫이고, muni 는 그 일을 하지 않아 링크를 통째로 버리고 있었습니다.

이제 쪽마다 링크 주석을 읽어 사각형을 글자와 같은 좌표로 옮기고, 글자 뭉치의 가운데가 사각형 안에 들어올 때 그 주소를 붙입니다. 가운데를 보는 이유는 링크가 밑줄이 끝나는 곳에서 끝나기 때문입니다 — 바로 옆 낱말은 링크가 아닙니다. 문서 안의 다른 자리를 가리키는 링크는 문서가 다른 곳으로 옮겨지면 갈 곳이 없으므로 두지 않습니다. 주소는 다른 네 형식과 같은 판단을 거칩니다 — 열리는 것만 남고 실행되는 것은 주소가 아닙니다.

줄 안의 굵기와 기울임

PDF 의 한 줄은 여러 번에 나누어 그려지고, 그 조각들이 다 같은 모습은 아닙니다. muni 는 줄을 문자열 하나로 들고 있어서 줄 전체가 굵거나 전혀 굵지 않거나 둘 중 하나였고, 기울임은 아예 버려졌으며, 링크는 붙일 자리조차 없었습니다.

이제 줄은 그려진 조각들을 지닌 채로 흐릅니다. 줄이 무엇인지 가리는 일 — 제목인지, 글머리표인지, 표의 행인지 — 은 예전처럼 글자만 보고 하고, 조각은 그 줄이 문서의 글이 되는 마지막 순간에만 쓰입니다. 문단이 다음 줄로 이어질 때도, 글머리표 뒤의 글을 떼어낼 때도 조각은 따라갑니다.

이 문장에는 굵은 낱말 이 가운데 있습니다 가 이제 가운데 세 글자만 굵게 들어옵니다.

정리

링크 주소를 판단하는 자리가 하나로 모였습니다(richdoc.SafeLink). PDF·.hwp·.hwpx·DOCX·HTML·마크다운이 같은 답을 냅니다.

업그레이드

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

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

PDF 를 가져오셨다면 다시 가져와 보세요. 하이퍼링크는 이번에 처음 들어오고, 문장 가운데 굵거나 기울인 낱말도 이제 그 자리에 남습니다.

오프라인 설치

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

gzip -dc muni-v0.34.0.tar.gz | docker load
docker image inspect muni:v0.34.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.34.0.tar.gz
  • 크기: 372,451,276 bytes (약 355.2 MiB)
  • SHA-256: 594ff9e4cecfba8d8b970f7a7decd407120650e116122f73045edc0ab1fe20a8
  • 내부 이미지 태그: muni:v0.34.0
sha256sum muni-v0.34.0.tar.gz

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

문서