Akan.js 3.1.0
릴리즈 노트 · 2026년 10월 25일
Akan.js 3.1.0 릴리즈 노트
3.1.0에서 바뀐 모든 것을 쉽게 정리했습니다. 무엇이 더 안전해졌고, 무엇이 새로 생겼고, 무엇이 빨라졌고, 무엇을 고쳤는지 본 뒤 짧은 업그레이드 체크리스트로 마무리합니다. 기술적인 전체 항목은 패키지마다 CHANGELOG.md에 있습니다.
3.1 발표 글 읽기요구 사항
Bun
1.4.4+
그보다 오래된 Bun에서는 akan이 멈춥니다.
React
19.3.1
react, react-dom, react-server-dom-webpack을 이 버전으로 고정합니다.
akanjs · @akanjs/cli
3.1.0
둘을 같은 버전으로 설치합니다. 새 CLI는 이전 akanjs로는 네이티브 앱을 빌드하지 않습니다.
Bun을 올리고 워크스페이스와 전역 CLI를 업데이트한 다음, 모든 앱과 라이브러리에서 한 번씩 실행하세요:
보안
어느 것도 코드를 바꿀 필요가 없고, 여럿은 방문자 사이나 서버 사이의 틈을 막습니다. 3.0 앱은 모두 3.1.0으로 올리기를 권합니다.
- 방문자끼리 세션이 섞이지 않습니다. 트래픽이 몰릴 때 한 방문자에게 스트리밍되던 화면 일부가 다른 방문자의 로그인 쿠키를 읽을 수 있었는데, 이제 각 렌더는 자기 요청만 봅니다.
- 사용자의 로그인 정보가 밖으로 새지 않습니다. 서버가 외부 API를 호출할 때 더는 방문자의 로그인 토큰, 쿠키, 주소를 보내지 않고, 내 서버로 가는 호출만 이를 싣습니다.
- 리다이렉트 낚시를 막습니다. ?redirect=evil.com 같은 조작된 링크가 앱의 화면 이동을 이용해 방문자를 다른 사이트로 보낼 수 없습니다.
- 요청이 스스로 권한을 올릴 수 없습니다. 역할이나 삭제 표시처럼 폼이 보내면 안 되는 필드는 코드에 닿기 전에 버려집니다.
- 계정을 바꾸면 이전 화면이 남지 않습니다. 로그인하는 순간 이전 계정을 위해 보관한 화면을 버리고, 페이지를 그리다 발생한 리다이렉트는 CDN에 캐시되지 않습니다.
- 로그인 헤더를 어디서나 같은 엄격한 방식으로 읽습니다. API, AI 엔드포인트, 기기 토큰, ops 채널, 로그 스트림 모두 'Bearer'와 토큰 하나만 받습니다.
- 로그에 남는 시크릿이 줄었습니다. 웹훅 주소, 데이터베이스 연결 문자열, 서명 키 등 더 많은 종류를 가립니다.
- 누구도 손댈 수 없는 업데이트. 중간의 CDN이 서명된 앱 업데이트를 바꿀 수 없고, 서명된 데스크톱 앱은 다른 사람이 서명한 업데이트를 거절합니다.
- edge 기기에서 도는 서버는 AI 엔드포인트를 끈 채로 시작합니다.
- 인페이지 에이전트는 화면에 보이는 대로만 움직입니다. 동작하는 사이 화면이 바뀌면 엉뚱한 대상에 실행되지 않도록 그 호출을 거절합니다.
- 보안 점검으로, 서버를 멈추게 하려고 조작한 입력에도 텍스트 검사가 버티게 했고, 에이전트가 읽는 화면에서 위험한 종류의 링크를 빼며, 네이티브 앱 설정에 쓰는 값을 이스케이프합니다.
새 기능
화면과 이동
- 그리기 전에 하는 접근 제어. 레이아웃이나 페이지의 가드가 무엇이든 그리기 전에 누가 열 수 있는지 정합니다. 손님은 곧바로 로그인 화면으로 가고, 볼 권한이 없는 레코드는 처음부터 없는 것처럼 응답합니다.
- 테마마다 색을 지정하면 브라우저 상단 막대와 iOS 상태 표시줄이 테마를 바꾸는 즉시 그 색을 따릅니다.
- 필터처럼 URL의 쿼리만 바뀌면 서버에서 페이지를 다시 불러오지 않고 화면만 바꿀 수 있습니다.
- 뒤로 가기 버튼에 언제나 갈 곳이 있습니다. 새로고침 직후 첫 화면을 위한 대체 페이지를 지정할 수 있습니다.
- 헤더, 탭 바 같은 프레임 요소가 첫 HTML에 함께 오므로, 페이지가 다 뜨기 전에 입력한 글자가 그대로 남습니다.
- 중첩된 레이아웃의 제목과 메타 태그가 예측대로 합쳐집니다. 가장 안쪽 것이 이기고 나머지는 유지됩니다.
AI 에이전트와 MCP
- MCP Apps. 페이지의 컴포넌트를 claude.ai 같은 AI 채팅 안에 띄웁니다. 사이트에 보이는 바로 그 컴포넌트이고, 사용자 본인의 권한으로 동작하며 조회만 할 수 있습니다.
- 이런 뷰는 필요한 것만 담아 작게 빌드되고, 개발 중에는 저장할 때마다 다시 만들어집니다.
- 엔드포인트가 차트나 상품 사진 같은 이미지를 돌려주면 AI 모델이 그림으로 받습니다.
- 인페이지 에이전트가 화면의 이미지를 직접 보고, 직접 만든 도구가 결과에 파일을 붙일 수 있습니다.
- 화면 동작마다 사람이 읽기 좋은 이름을 붙이고, 화면의 원클릭 동작을 커맨드 팔레트용으로 나열할 수 있습니다.
- 사용자가 고른 모델처럼 다른 모델로 AI 한 턴을 돌릴 때 따로 설정할 것이 없습니다.
서버와 API
- HTTP, 웹소켓, MCP 어디로 오든 모든 요청을 코드 실행 전에 모델 정의와 대조합니다. 에러는 문제의 필드를 정확히 짚고, 입력에 선언되지 않은 필드는 버립니다.
- 엔드포인트가 의도해서 내는 에러를 선언합니다. API 문서와 AI 도구 설명에 실리고, 호출하는 쪽은 이름으로 그 에러인지 확인할 수 있습니다.
- 다른 서버로 가는 호출이 잠깐의 장애나 과부하 응답에도 정한 제한 시간 안에서 스스로 재시도합니다. 결제나 주문에 중복 방지 키를 붙이면 정확히 한 번만 실행됩니다.
- 실시간 연결이 부드럽게 재연결하고, 기기가 다시 온라인이 되거나 탭이 보이면 바로 재연결합니다. 놓친 업데이트는 찾아서 채워 넣습니다.
- 데이터가 바뀌는 순간 모든 서버에서 엔드포인트의 캐시된 응답을 비울 수 있습니다.
- 백그라운드 작업이 재시도 사이의 최대 대기 시간을 정하고, 끝내 실패하면 훅을 실행할 수 있습니다. 테스트나 스크립트용으로 예약 작업 없이 서버를 띄울 수도 있습니다.
데이터
- 미리 보기, 적용, 확인, 되돌리기를 갖춘 데이터 마이그레이션. 검토한 뒤 데이터가 바뀌었으면 실행을 거절하고, 한 번에 하나만 돌며, 개발 환경과 배포된 컨테이너에서 똑같이 동작합니다.
- Akan Cloud가 셸로 접속할 수 없는 서버에서도 마이그레이션을 시작할 수 있습니다.
- 오래된 로그처럼 보존 기간이 지난 데이터를 안전한 묶음 단위로 영구 삭제합니다. 조건 없는 삭제는 거절합니다.
- 레코드를 원래의 id와 시각 그대로 가져올 수 있고, 요약(insight) 필드가 값을 합산할 수 있습니다.
UI와 폼
- 모달이 휴대폰에서 아래로 쓸어내려 닫는 전체 화면 시트로 열리거나, 오른쪽에서 밀려 나오는 사이드 패널로 열릴 수 있습니다.
- 업로드가 그것을 시작한 폼에 묶이고, 모든 업로드가 끝날 때까지 제출 버튼이 기다립니다.
- 한 번의 호출로 모델의 모든 목록을 오래된 것으로 표시해, 다음에 보일 때 새로 불러오게 합니다.
- 레이아웃이 화면 키보드와 안전 영역을 따르고 화면 크기마다 여백을 달리할 수 있으며, 하단 탭 바는 스크린 리더에 현재 탭을 알려 줍니다.
- 툴팁이 공간이 있는 쪽으로 뒤집히고, 바텀 시트는 뒤의 페이지를 잠그며, 에이전트 런처 버튼은 위치를 바꾸거나 작은 화면에서 숨길 수 있습니다.
- 자동 생성되는 API 레퍼런스 페이지가 서버에서 렌더링되고, 라이브러리별로 묶을 수 있습니다.
네이티브 앱
- 폰 앱 업데이트를 CDN이 손댈 수 없도록 서명하고, 서명 키를 최대 세 개까지 두고 교체할 수 있으며, 키 폐기는 모든 기기가 영구히 기억합니다.
- 릴리즈가 기기마다 다운로드, 적용, 롤백, 실패 중 어떻게 됐는지 볼 수 있습니다. 무작위 설치 id만 쓰고 사용자에 관한 정보는 모으지 않습니다.
- 폰 업데이트를 Akan Cloud에 바로 올리면 서명해서 배포하고, 스토어 빌드도 같은 방식으로 등록합니다. 같은 커밋은 설정까지 포함해 언제나 같은 결과물로 묶입니다.
- 데스크톱 앱용 키오스크 모드. 페이지가 인쇄·파일 대화상자, 다운로드, 공유 시트, 다른 프로그램을 열 수 없습니다.
- 데스크톱 앱에 내장된 서버가 스스로 재시작하고, 헬스 체크가 지켜보며, 시크릿 없이 빌드할 수 있습니다. 기기는 서명된 기기 토큰으로 자신을 증명하고, 모듈을 edge 기기에서만 켤 수도 있습니다.
- 서드파티 웹 페이지를 전용 브라우저 프로필로 데스크톱 앱 안에 내 화면처럼 띄우고, 창을 원하는 디스플레이에 프레임 없이 배치할 수 있습니다.
- 창이 페이지보다 먼저 배경색을 칠해 흰 화면 깜빡임이 없습니다. Windows 앱의 게시자로 회사 이름이 나오고, 설치 프로그램에 WebView2를 넣을 수 있으며, 설치된 앱은 업데이트 채널을 바꿀 수 있고, 내부용 빌드에서는 개발자 도구를 열 수 있습니다.
- 데스크톱 릴리즈를 arm64와 x64 모두로 게시하고 S3에 바로 올릴 수 있습니다.
CLI와 배포
- 빌드와 테스트부터 Docker, 배포까지 빌드 파이프라인을 akan.config.ts에 선언하고 직접 만든 셸 단계를 넣으며, Akan Cloud가 실행할 내용을 로컬에서 미리 봅니다.
- 파이프라인 시크릿은 쓰기 전용이고 프로젝트·브랜치별로 보관되며, 명령줄 인자로는 받지 않습니다.
- akan typecheck이 라이브러리와 테스트까지 검사하고, 새 린트 규칙이 프로덕션에서만 터지는 대표적 원인인, 렌더 중 건너뛸 수 있는 훅을 잡습니다.
- 내장 코딩 에이전트 akan code가 원하는 시점에 대화를 압축하고, 워크스페이스에 DeepSeek 키가 있으면 웹을 검색합니다.
- CLI가 쓰는 AGENTS.md가 약 60% 작아져, 코딩 에이전트가 규칙에 쓰는 컨텍스트가 줄었습니다.
성능
2.5×
더 빨라진 목록 응답
16 µs → 6.5 µs
1.5×
더 빨라진 단순 API 호출
3.0 µs → 2.0 µs
+15%
초당 처리하는 페이지 증가
26.7k → 30.8k req/s
−14%
가장 느린 응답 시간 단축
p99 3.7 ms → 3.2 ms
각 수치는 해당 변경 직전과 직후를 한 머신에서 측정한 값입니다. API 호출은 프로세스 안에서, 페이지는 샘플 앱의 캐시된 페이지로 측정했습니다.
어디서 빨라졌나
- 엔드포인트를 한 번 준비해 재사용하고, 호출은 쓰지 않는 캐시·중복 방지·요청 제한 단계를 건너뜁니다.
- 응답은 모델마다 한 번 만든 계획을 따르고, 관련 데이터가 없으면 한 번에 끝납니다.
- 로그인한 실시간 연결은 메시지마다가 아니라 연결당 한 번 로그인을 확인하고, 로그아웃은 여전히 즉시 반영됩니다.
- API 명세는 프로세스당 한 번만 만들고, 서버는 시작할 때 단계별 소요 시간을 기록합니다.
버그 수정
영역별로 묶었습니다. 펼쳐서 무엇을 고쳤는지 보세요.
화면과 이동6
- 없는 페이지와 리다이렉트가 레이아웃이 아직 로딩 중이어도 실제 404와 3xx로 응답하므로, 검색 엔진과 링크 미리보기가 제대로 읽습니다. URL의 잘못된 값은 빈 페이지 대신 404로 응답합니다.
- head에서 오류가 난 페이지도 요청 전체를 실패시키지 않고 렌더링되며, 그룹 레이아웃의 로딩 표시가 제대로 나타납니다.
- 뒤로·앞으로 이동하면 Safari에서도 떠났던 위치로 돌아가고, 이미지와 스트리밍 섹션이 자리를 잡는 동안에도 그 위치를 지킵니다.
- 네이티브 앱 화면에서 없는 페이지, 리다이렉트, 쌓인 화면이 올바르게 동작합니다.
- 대소문자가 섞였거나 스킴이 없는(//host) 외부 링크도 앱 밖에서 그대로 열립니다.
- base path가 세그먼트 단위로만 맞으므로 /officers가 더는 /office로 오인되지 않고, Chrome이 설치용 manifest를 찾습니다.
서버와 API6
- 잘못되거나 빠진 인자는 400, 없는 레코드는 404로 500 대신 응답하고, 삭제된 레코드로의 연결은 목록에서 빠집니다.
- 캐시된 응답이 날짜와 바이너리 데이터까지 새 응답과 똑같습니다.
- 실시간 방에 이미 떠난 구독자가 남지 않고, 서버 사이의 실시간 연결은 하트비트 한 번 안에 회복합니다.
- 중간 프록시의 에러가 읽을 수 있는 메시지로 보이고, '0초 뒤 재시도'는 즉시로 읽으며, 복제한 클라이언트가 타임아웃을 유지합니다.
- 모듈을 끄면 그에 기대는 모듈도 에러 없이 함께 꺼지고, 컨테이너 안의 메모리 한도를 올바르게 읽으며, 죽은 레플리카를 확실히 다시 띄웁니다.
- 타입 수정. 메모리에 둔 값이 자기 클래스를 유지하고, 무엇이든 돌려주는 엔드포인트는 클라이언트에서 unknown 타입이 됩니다.
데이터6
- Postgres에서 조건부 업데이트가 원자적으로 동작합니다. 동시에 들어온 두 출금이 같은 잔액 검사를 함께 통과할 수 없습니다.
- 인덱스 이름이 바뀌지 않으므로 하나를 추가해도 나머지를 다시 만들지 않습니다. akan이 만들었지만 더는 필요 없는 인덱스는 지우고, 직접 만든 인덱스는 건드리지 않습니다.
- SQLite와 Postgres에서 부분 인덱스가 실제로 만들어지므로, 삭제된 레코드가 이메일 주소 같은 고유 값을 돌려줄 수 있습니다.
- 마지막 시도에서 죽은 작업은 다시 실행되지 않고 실패로 처리됩니다.
- 두 소유자가 같은 대상을 가리켜도 연쇄 삭제가 깔끔하게 끝나고 파일이 남지 않습니다.
- 모델 자신의 kind 필드로 필터링할 수 있고, 검색 필드가 있는 모델의 개수가 정확하며, SQLite는 실제 쓰기만 기다리고, id만 보내는 실시간 목록도 갱신됩니다.
UI와 폼7
- 모달이 모든 것 위에 쌓이고, 모달 안의 드롭다운은 그 위에 열리며, 토스트는 모달보다 위, 에이전트 런처는 메뉴 아래에 놓입니다.
- 비밀번호 보기나 복사 버튼처럼 기본 컴포넌트 안의 버튼이 더는 바깥 폼을 제출하지 않습니다.
- 열린 편집 폼은 페이지가 새로고침돼도 입력한 내용을 지키고, 검색 가능한 셀렉트는 입력을 멈춘 뒤 한 번만 검색합니다.
- 실시간 목록이 모든 행을 유지하고 업데이트에도 흔들리지 않으며, 네이티브 앱에서 뒤로 가서 다시 보이는 목록은 자기 데이터를 새로 불러옵니다.
- 셀렉트가 옵션을 번역된 이름으로 보여 주고, 편집 모달은 허용된 동작만 보여 줍니다.
- 홈 화면에 설치한 웹 앱이 출렁이지 않고, 작은 입력 칸이 iOS 확대를 일으키지 않으며, 뒤로 가기 링크는 키보드로 닿는 진짜 버튼입니다.
- 휴대폰의 에이전트 채팅에서 @와 / 메뉴를 골라도 키보드가 내려가지 않고, 제목에 대괄호가 든 멘션도 동작합니다.
네이티브 앱4
- 서명된 데스크톱 앱이 다른 사람이 서명한 업데이트를 거절하고, 다시 제안하지 않습니다.
- 폰에서 멈춘 릴리즈는 앱이 실행 중일 때 롤백하고, 백그라운드 실행이 엉뚱한 롤백을 일으키지 않으며, iOS 26 SDK로 빌드한 앱이 iOS 18.5에서 다시 실행됩니다.
- Windows 설치와 제거가 자동 재시작에도 실패하지 않고, 조용한 설치는 키오스크 위에 창을 띄우지 않으며, 세션이 달라도 하나만 실행되고, 실행 파일에 앱 이름이 표시됩니다.
- 창이 모든 디스플레이 밖에 놓이는 일이 없어졌습니다.
CLI와 빌드6
- 어떤 명령도 CI에서 키보드 입력을 기다리지 않습니다. 빠진 인자는 바로 실패하며 무엇을 넘길지 알려 줍니다.
- 빌드가 재현 가능해졌고, 기본 Docker 이미지가 움직이는 태그 대신 Bun 1.4.4로 고정됩니다.
- 스크립트, 콘솔, 데이터베이스 가져오기·내보내기 명령이 워크스페이스 루트에서 akan start와 같은 데이터베이스로 동작합니다.
- 대괄호가 중첩된 Tailwind 클래스가 컴파일되고, 지연 로딩한 에디터의 코드 하이라이팅이 앱 번들에서도 동작합니다.
- 실패한 빌드는 에러를 한 번만 출력하고, 자식 서버의 에러가 akan start 터미널에 보입니다.
- 생성된 파일이 린트를 통과하고, CLI가 루트 .env 없이도 동작하며, Windows에서도 생성 경로에 /를 쓰고, 라이브러리 설치가 빨라졌으며, 경고가 JSON 출력을 깨지 않습니다.
업그레이드 체크리스트
대부분의 앱은 첫 묶음만 확인하면 됩니다. 나머지는 쓰는 기능만 훑어보세요. 대부분은 akan lint와 akan typecheck가 위치를 짚어 줍니다.
모든 앱
앱이 무엇을 하든 확인하세요.
- 01
요청을 이제 엄격하게 검사합니다. 숫자를 문자열로 보내거나, id 자리에 { id } 객체를 보내거나, 필수 필드를 빠뜨린 클라이언트는 400을 받습니다. 서비스가 입력에 선언되지 않은 필드를 읽고 있었다면 선언하세요.
자세히 - 02
잘못되거나 빠진 인자는 500 대신 400으로 응답합니다. 500을 기대하던 테스트나 클라이언트를 고치세요.
자세히 - 03
akan typecheck이 테스트까지 검사하고(예전 범위는 --tests false), 린트는 렌더 중 건너뛸 수 있는 훅을 잡습니다.
자세히 - 04
#이 들어간 .env 값은 따옴표로 감싸세요. 따옴표 없는 값은 이제 Bun처럼 # 앞에서 끝납니다.
자세히 - 05
stdin으로 프롬프트에 답하던 CI 단계는 이제 바로 실패합니다. 인자를 명령줄로 넘기세요.
자세히
다른 서버를 호출한다면
페이지와 UI
- 01
다른 사이트로 가는 router.push, replace, redirect에는 { external: true }가 필요합니다. 다른 사이트로 가는 Link는 그대로입니다.
자세히 - 02
페이지가 레이아웃의 canonical 링크와 og:url을 더는 물려받지 않습니다. 페이지마다 자기 head에 선언하세요.
자세히 - 03
모달이 이제 다른 오버레이보다 위에 놓입니다. 10~120 사이 z-index로 모달 위에 있던 요소는 이제 모달 아래에 놓이고, 직접 만든 에이전트 런처는 새 style prop을 적용해야 합니다.
자세히 - 04
Link의 활성 상태는 경로 세그먼트 단위로 맞고, /는 홈 화면에서만 활성입니다.
자세히 - 05
Constant.Doc에 빈 목록을 주면 이제 아무것도 보이지 않습니다. 모든 모델을 보이려면 prop을 빼세요.
자세히
MCP와 에이전트
- 01
.prompt() 페이지가 도구 목록에도 나옵니다. CSR 번들을 제공하는 앱에서는 MCP Apps를 지원하는 AI 클라이언트가 화면에 필요한 조회 엔드포인트를 가드 아래에서 호출할 수 있고, .app() 페이지가 있는 앱은 option.setMcp({ modern: true })를 주지 않는 한 이전 MCP 프로토콜 리비전을 씁니다. option.setMcp({ apps: false })를 주면 모두 꺼집니다.
자세히 - 02
에이전트의 이미지 보기 도구가 기본 도구에 들어갑니다. 빼려면 원하는 기본 도구를 나열하세요.
자세히 - 03
edge 기기에서 도는 서버는 AKAN_MCP=true나 option.setMcp(true)일 때만 /mcp를 제공합니다.
자세히
데이터와 서버
- 01
캐시 수명은 최대 하루이고, 업그레이드 전에 캐시된 응답은 한 번 새로 불러옵니다.
자세히 - 02
LibsqlDatabase가 제거됐습니다. 로컬 파일은 SqliteDatabase를, 공유 서버는 cluster 모드를 쓰세요.
자세히 - 03
where를 선언한 인덱스는 다음 부팅 때 실제 부분 인덱스로 한 번 다시 만들어집니다. 인덱스가 담을 수 없는 where나, 이름이 같은 서로 다른 두 인덱스는 부팅을 멈춥니다.
자세히 - 04
single 데이터베이스 모드에서 마지막 시도 중에 프로세스가 죽은 작업은 다시 실행되지 않고 실패합니다. 그 재시도가 필요하면 attempts: 2를 주세요.
자세히 - 05
모델 클래스로 선언한 memory() 값은 이제 인스턴스입니다. 스프레드가 아니라 new cnst.X().set(value)로 복사하세요.
자세히 - 06
모듈을 끄면 그와 연결된 모듈도 함께 빠지고, 새로 가려진 키를 찾던 로그 검색에는 [redacted]가 보입니다.
자세히
네이티브 앱
- 01
데스크톱 서명은 이제 직접 켭니다. akan build-desktop과 akan publish-update에 --sign true를, macOS는 --notarize true까지 주세요. 설치된 앱은 다르게 서명된 릴리즈를 거절하므로 같은 방식으로 서명합니다.
자세히 - 02
업데이트를 받는 폰 앱은 새 형식의 업데이트를 배포하기 전에 스토어 바이너리를 한 번 다시 빌드해야 하고, 직접 쓰는 서명 도구가 있다면 새 구조를 읽게 바꿔야 합니다.
자세히 - 03
키오스크 모드에서는 페이지가 인쇄, 파일 선택, 다운로드, 시스템 브라우저 열기를 할 수 없습니다. 필요하면 opener나 file-picker 플러그인으로 여세요.
자세히 - 04
서버를 싣는 데스크톱 앱은 그 서버에 서버 env 파일의 시크릿이 들어 있으면 릴리즈 빌드가 거절됩니다. native.desktop.server.profile로 빌드하세요.
자세히 - 05
akan pack-update --against는 새 스토어 빌드가 필요하면 2로, 그 밖의 실패는 1로 끝납니다.
자세히
워크스페이스와 도구
- 01
shared나 util 라이브러리를 쓰는 워크스페이스는 타입 패키지를 추가하세요. bun add -d @types/react @types/react-dom, util을 쓰면 @types/nodemailer도 넣습니다.
자세히 - 02
akan.subspace.ts는 더는 읽지 않습니다. 워크스페이스 루트 akan.config.ts의 subspace로 옮기고 파일을 지우세요. subspace는 더는 워크스페이스의 Jenkinsfile을 받지 않습니다.
자세히 - 03
스크립트, 콘솔, 데이터베이스 가져오기·내보내기 명령은 상대 경로를 워크스페이스 루트에서 풉니다. 스크립트의 경로는 import.meta.dir로 만드세요.
자세히 - 04
저장된 호스트에 끝 슬래시, 대문자, :443이 붙어 있었다면 akan login을 다시 하고, 이미지에서 1.4.4가 아닌 Bun을 쓰려면 docker.image를 지정하세요.
자세히 - 05
선택적 peer가 올라갑니다. happy-dom은 기본으로 CSS 파일과 iframe을 불러오지 않는 21로, firebase는 13으로 바뀝니다.
자세히
드물게 쓰이는 내부 API의 제거·이름 변경은 여기서 뺐습니다. akan typecheck이 위치를 짚어 줍니다.