• LINKS 0.17 — 작업 취소·빌드 관리와 코드·문서 정리

    LINKS 0.17

    이전 릴리스 0.16 대비 변경 사항입니다. 루트 패키지는 0.17.0이고 ARCA는 0.1.13을 그대로 사용합니다. 스키마 migration 0054가 추가됩니다.

    새 기능과 개선

    • 백그라운드 작업 취소: 관리자 작업 관리에서 대기·실행 중인 작업을 하나씩 또는 전부 취소할 수 있습니다. 정보 수집, 게임 인식 확인, 실행 빌드 준비에도 취소 버튼을 추가했습니다. 이미 완료된 결과, 원본, 세이브는 되돌리지 않습니다.
    • 실행 빌드 관리 (migration 0054): 관리자 상세에서 현재 빌드와 이전 실행 버전을 제거하거나 다시 빌드할 수 있습니다. 게임 상세의 게임 관리 버튼으로 바로 이동합니다. 제거는 실행 선택만 해제하며 원본, 세이브, 이력은 보존합니다.
    • MV/MZ 실행 준비:
      • 준비 과정을 8단계로 표시합니다.
      • 중복 목록 순회를 6회에서 3회로, 전체 원본 hash 검사를 3회에서 1회로 줄였습니다.
      • 원본 읽기 동시성 설정(LINKS_RUNTIME_SOURCE_READ_CONCURRENCY, 기본값 1)을 추가했습니다.
    • 실제 MV/MZ 부팅 수정: 다음 문제를 고쳤습니다.
      • 파일명 대소문자 불일치
      • System sentinel 검사
      • script XHR, Vorbis Worker, 글꼴 연결
      • 동일 artifact를 재봉인할 때 cache가 무효화되던 문제
    • 플레이어:
      • MV/MZ 상단 재시작, 음량, 음소거를 연결했습니다.
      • 화면 크기를 선택할 수 있습니다(맞춤, 50–200%, 꽉 채우기).
      • 준비 진행 막대를 가운데로 정렬했습니다.
    • 진단: 실행 준비가 실패해도 버그 신고를 보낼 수 있습니다. 신고에는 서버 오류 요약과 실제로 실패한 작업의 UUID가 함께 전달됩니다.
    • 안정성:
      • worker 시작에 실패하면 연결을 정리하고 종료합니다.
      • CSRF token을 세션별로 복원해 여러 탭을 오가도 저장·해제가 유지됩니다.
      • 개발 CA를 bind mount로 옮겨 Docker volume을 정리해도 남습니다.
      • 큰 글자 모드 390px 화면에서 게스트 저장 안내가 2px 넘치던 문제를 고쳤습니다.
      • 로그인 화면에서 누르면 아무 동작도 하지 않던 버튼을 제거했습니다.

    제거와 정리 (호환성 변경)

    • /bookmarks 호환 주소 제거: 개인 라이브러리 주소는 /library만 사용합니다. /api/v1/bookmarks API는 유지합니다.
    • 번역 검수 API 제거: 관리자 UI는 이미 없었습니다. 번역 결과 offline import와 DB에 저장된 검수 이력은 유지합니다.
    • ARCA 단일 ZIP 의존성 취득 경로 제거 (runtime.dependency.acquire, dependency-acquirer service·profile): ARCA는 npm 정식 배포본을 이미지에 내장하는 경로만 사용합니다.
      • 기존 DB table과 승인·감사 이력은 보존합니다.
      • 과거 작업은 관리자 화면에 (제거된 작업)으로 표시됩니다.
      • 운영 .env의 LINKS_RUNTIME_DEPENDENCY_*와 LINKS_DEPENDENCY_ACQUIRER_DATABASE_PASSWORD는 더 이상 쓰지 않습니다. prepare-develop이 이런 key를 경고로 알려 줍니다.
    • 쓰지 않던 RGSS 코드 제거:
      • 구 launch ABI와 구 RTP source/sealed 모듈을 삭제했습니다.
      • same-origin OPFS adapter와 관련 runner를 삭제했습니다.
      • 새로 만드는 RGSS generation의 bootstrap.mjs는 직접 실행 불가 안내로 줄였습니다. 이 때문에 새 generation의 frontend bytes가 바뀌어 RGSS build가 한 번 다시 생성됩니다. 기존 generation과 세이브는 그대로 동작합니다.
    • 중복 구현 통합 (wire 형식과 hash byte는 변경 없음):
      • GC 적격성 판정, 목록 cursor codec, DB role 생성
      • canonical JSON, scanner sealed-store helper
      • web의 API 형식 로컬 사본을 공유 contracts로 교체
    • 테스트 정리:
      • 10,875줄 schema 테스트를 도메인별 파일 5개와 공용 fixture로 나눴습니다.
      • 삭제된 UI를 검사하던 테스트, 항상 통과하던 테스트, 중복 browser check를 정리했습니다.
      • 원래부터 실패하던 검사(built-navigation, editions, player-layout, backup 저장 복구, foundation)를 현재 UI에 맞게 고쳤습니다.
      • Windows Git Bash에서 .sh runner가 경로를 잘못 읽던 문제를 고쳤습니다.

    문서

    • README를 프로젝트 소개 문서로 새로 썼습니다.
    • 모든 기준 문서를 현재 코드와 대조해 정리했습니다(문서 전체 약 5,500줄 → 약 4,160줄).
    • 게임 진단 문서 2개를 게임_호환성_진단.md 하나로 합쳤습니다.
    • UI/UX 제안 문서는 남은 제안만 개발 계획으로 옮기고 지웠습니다.

    업그레이드

    • 새 이미지 git.2ex.dev/hanyul/links:0.17(= latest)을 pull해 배포합니다. migration 0054는 기동할 때 적용됩니다.
    • dependency-acquirer service와 runtime-dependency-live profile을 쓰고 있었다면 운영 Compose에서 제거됩니다.

    검증

    • PASS (병합된 전체 코드, Docker):
      • static, unit 83개 파일/475개 test, schema 10개 파일/65개 test
      • scanner, correlation, provider, foundation
      • runtime-workers, backup-restore, 번역 import
      • catalog·passkey acceptance
      • source-mount browser check 전체(Chromium, Firefox)
    • PARTIAL: Firefox 오디오 출력. 컨테이너 AudioContext 제약 때문입니다.
    • NOT RUN: 실제 게임 전체 acceptance(입력·오디오·save/reload), NAS 배포. 개발 서버 재빌드와 health는 이번 릴리스에서 확인했습니다.
    Downloads 2