• LINKS 1.0.18 — Player 자동 시작·선명한 표시(ARCA 0.1.23 focus·fresh 재시작)·표지 선택 제거

    LINKS 1.0.18

    이 릴리스는 이전 릴리스 1.0.17(6909122178) 위에 ARCA pin 0.1.23, Player 자동 시작·선명한 표시(T81), 자동 시작 초점 옵션과 fresh 재시작 연결(T82-A·B), 관리자 표지 선택 제거(T82-C)를 더했습니다. 최종 소스는 b38525b677, 루트 패키지는 1.0.18, ARCA pin은 exact 0.1.23(0.1.22에서 변경)입니다. schema 변경이 있습니다: migration 0006_remove_cover_override.

    업그레이드: 1.0.17 → 1.0.18은 sh update.sh만 실행합니다

    1. 갱신 방법: 배포 디렉터리에서 sh update.sh만 실행합니다. reset.sh는 실행하지 않습니다.
    2. schema: update.sh가 [4/6]에서 Pending migrations: 1을 출력하고 up 때 migration service가 0006_remove_cover_override를 한 transaction으로 적용합니다(관리자 표지 선택 table·view·index 삭제, 공급자 표지 asset과 audit 기록은 유지). migration이 적용된 뒤에는 1.0.17 image가 이 DB를 열 수 없으므로 1.0.17로 되돌릴 수 없습니다. 관리자가 수동으로 골랐던 표지는 공급자 표지로 돌아갑니다.
    3. 배포 파일 변경: 없습니다. compose.yaml, infra/docker/Caddyfile, ops/deploy-registry.sh(update.sh), ops/runtime-package-coordinator.sh, ops/reset-registry.sh, .env.example은 1.0.17과 byte 단위로 같고 .env.production에 할 일은 없습니다.
    4. ARCA pin 변경에 따른 자동 재준비: 0.1.23은 SDK에 시작 focus 옵션과 restart({ presentation: "fresh" })를 더한 release로 native runtime·Builder·contracts 동작은 0.1.22와 같지만 release manifest hash와 산출물 digest가 바뀌었습니다. catalog 기동 sweep이 0.1.22로 만든 모든 rgss-wasm ready build의 재준비를 priority -20으로 마지막 요청자 이름으로 요청합니다. 기존 build는 대체 build가 준비될 때까지 그대로 실행되고, MV/MZ build는 대상이 아닙니다.
    cd /volume1/docker/links
    sh update.sh
    

    운영자 작업은 없습니다. 기존 실행 버전, 세이브, RTP, 설정은 그대로입니다. 원본 game library는 읽기 전용으로 유지합니다. 갱신 뒤 VX/VX Ace 설치본 수만큼 background 재준비 job이 순서대로 돕니다.

    변경 내용

    ARCA 0.1.23 pin(package.json, apps/worker, apps/player, packages/runtime-builder, lockfile)

    • @rgss23/arca exact pin 0.1.22 → 0.1.23. npm registry는 0.1.23만 보관하므로 이전 pin은 더 이상 설치되지 않습니다.
    • 런타임 계약 문서의 ARCA 링크가 0.1.23 tag를 가리킵니다. LINKS의 ARCA 변경 요청 2건(자동 시작 focus 옵션, fresh 재시작)이 이 버전에 채택·부분 채택되어 연결됐습니다.

    T81. Player 자동 시작과 선명한 표시(apps/web, apps/player)

    • 준비가 끝나면 시작 버튼 없이 바로 게임을 시작합니다. 설명성 안내 문구(자동 시작 예고, 실행 파일 안내, 저장된 파일 사용 안내)는 지웠습니다. 자동 재생이 막힌 브라우저에서는 frame 안 첫 키 입력 때 오디오가 재개됩니다.
    • Player iframe을 표시 크기(정수 CSS px, transform 없음)로 배치해 시작 때 canvas drawing buffer가 표시 크기 × devicePixelRatio(synced)입니다. VX/VX Ace 글자가 흐리게 확대되던 문제가 해결됐습니다(꽉 채우기만 예외).
    • 게임 canvas에 초점이 가도 focus ring(테두리 선)이 그려지지 않습니다.

    T82-A. 자동 시작 초점(apps/web, apps/player)

    • 시작 시점에 modal dialog·설정 패널·링크가 초점을 가지면 부모가 focus: false를 보내고 frame이 SDK의 prepareRgss23Player({ focus })·prepared.start({ focus })에 그대로 넘깁니다. 자동 시작이 바깥 초점과 다음 키 입력을 빼앗지 않으며, canvas나 터치 패드(방향·동작·토글)의 첫 누름에 게임이 초점을 받습니다.

    T82-B. 크기 변경 뒤 fresh 재시작(apps/web, apps/player)

    • 시작 뒤 화면 크기를 바꿔 scaled가 되면 설정의 재시작이 ARCA 0.1.23 fresh 재시작(restart({ presentation: "fresh" }))으로 새 canvas element와 현재 표시 크기 × DPR의 backing으로 다시 시작합니다(synced). 크기를 바꾸지 않았으면 기존 빠른 재시작입니다. 안내 문구는 "시작 뒤 바꾼 크기는 재시작하면 선명해집니다."입니다.

    T82-C. 관리자 표지 선택 제거(apps/api, apps/web, packages/db, infra/schema, migration 0006)

    • 상세 화면의 표지 선택 버튼·dialog와 override API·DB table을 지웠습니다. 설치본 표지는 항상 DLsite 표지 head(첫 공급자 이미지)입니다. 공급자 이미지 수집·공개 범위와 audit 기록은 그대로입니다.

    검증과 남은 범위

    • PASS(릴리스 소스 b38525b, 코디네이터 실행): static(Prettier·ESLint·typecheck·docs-static), 전체 unit 187 files·1,676 tests, schema(빈 DB fresh 적용과 baseline+0001~0006 사슬 적용의 구조 등가 포함), 문서 검사, git diff --check, run-catalog-browser(Chromium, 21개 단언, 오류 0), no-cache frozen install image build(0.1.23 설치, 이미지 안 root 1.0.18·migration 6개·자동 갱신 표식), foundation, run-browser matrix(MZ·MV × Chromium·Firefox browser-acceptance 4개와 guest-play-acceptance 4개), run-runtime-workers.
    • PASS(ARCA pin gate, 0.1.23 release dir): run-rgss23-release-set(exact pin), run-rgss23-runtime-binding, run-rgss23-builder(합성 VX Ace), arca-npm-check, node 24 container frozen lockfile 재해석.
    • PASS(병합된 main b38525b, 코디네이터 실행): run-player-lazy(Chromium·chromium-gesture·Firefox), run-player-dpr Chromium 전체 matrix, run-player-touch-pad(Chromium·Firefox), run-player-layout, run-player-loading PASS. run-player-dpr Firefox는 PARTIAL: RGSS 셀 전체(fresh·빠른 재시작 45행 포함) PASS, MV 셀에서 코디네이터 harness의 page.goto 30초 timeout으로 2회 중단(독립 리뷰어의 격리 project 전체 Firefox matrix 165 records PASS, 같은 test 파일).
    • PASS(브랜치별 작업자·독립 리뷰어 실행): run-player-lazy(Chromium·chromium-gesture·Firefox, 바깥 초점·다음 키 유지 단언), run-player-dpr(Chromium·Firefox, DPR 1~3 × 3 viewport, fresh·빠른 재시작 cell), run-player-touch-pad(Chromium·Firefox), run-player-layout, metadata-display(관리자 상세에 표지 선택 없음)와 독립 Sol 리뷰(A 2회·B 3회·C 1회) 병합 가능.
    • 알려진 제한·NOT RUN: 실제 VX/VX Ace 게임의 브라우저 타이틀·save/load·재시작 확인, 실제 모바일 기기·실제 망, 실제 오디오 출력, 격리 dind의 1.0.17→1.0.18 update.sh·migration 0006 리허설, 0.1.23 Builder의 실제 NAS load(운영 배포 때 재준비 sweep으로 확인). heap·web-static 실행 경로는 시작 때 SDK 기본값대로 canvas가 초점을 가져갑니다(개발 계획 항목).

    배포 이미지와 파일

    • Git annotated tag는 1.0.18이고 최종 소스는 b38525b677(branch main)입니다.
    • 단일 linux/amd64 이미지: git.2ex.dev/hanyul/links:1.0.18 = git.2ex.dev/hanyul/links:latest(index digest sha256:b26f7c9c43305ae762a9b7bdd6344dbafb7f43e7f53c70ebca23a84ff5d50bed, 로컬 image ID와 동일).
    • release asset은 없습니다. 배포 파일은 update.sh가 tag에서 HTTPS로 받습니다.
    Downloads 2