원문 캡처 · github.com
원문 캡처 · github.com

Twig는 로컬 저장소부터 NAS, S3, restic 백업까지 한 화면의 트리에서 다루는 안드로이드 파일 관리자다. 제작자는 1.14.0 정식 빌드의 arm64-v8a APK가 8.19 MiB이며, 두 저장소를 나란히 놓고 파일을 복사하거나 비교할 수 있다고 설명한다.

설치와 크기

Twig 1.14.0은 versionCode 305이며 minSdk 24, targetSdk 34, compileSdk 36을 사용한다. 라이선스는 GPL-3.0-only다. 프로젝트는 Kotlin과 XML 뷰를 사용하고 Material 라이브러리 없이 최소한의 의존성을 지향한다. 제작자는 WebDAV, S3 서명, Git, restic 구현을 직접 작성했다고 밝힌다.

GitHub 최신 릴리스에는 서명된 APK가 올라온다. full에는 읽기 전용 RAR 지원이 포함되고, libre에는 RAR이 없다. junrar가 자유 소프트웨어가 아니기 때문이다. 두 빌드는 같은 서명 키를 사용하므로 서로 덮어 설치할 수 있다. ARM 32비트용 armeabi-v7a 빌드는 실험용이며 실제 기기에서 시험되지 않았다.

  • Twig-<version>-full.apk: arm64-v8a와 x86_64, 읽기 전용 RAR 포함
  • Twig-<version>-libre.apk: RAR 제외
  • Twig-<version>-full-arm64-v8a.apk 또는 -x86_64.apk: 한 아키텍처용 소형 다운로드
  • Twig-<version>-full-armeabi-v7a.apk: 실험용 32비트 ARM 빌드

서명 인증서의 SHA-256은 196f633e942bf4f32f875b98c8ff181138256ba329a63364e3a39f154c1a5e62다. 앱 스토어 없이 자동 업데이트하려면 https://github.com/dev2ex/twig를 Obtainium에 추가하고 APK 필터 정규식을 지정해야 한다. 필터가 없으면 릴리스에 여러 APK가 있어 매번 선택을 요구하며 백그라운드 업데이트를 할 수 없다. 기본 빌드는 -full\\.apk$, 자유 소프트웨어 빌드는 -libre\\.apk$로 고른다.

F-Droid판은 libre 빌드로, RAR을 제외한 기능을 포함한다. GitHub APK와 같은 서명 키를 쓰며 재현 가능한 빌드로 확인된다. F-Droid는 안정 버전 태그를 추적하지만, 빌드와 저장소 게시 절차가 끝난 뒤 업데이트가 표시된다.

1.14.0 빌드 크기는 R8과 리소스 축소를 적용해 측정했다. MiB는 1,048,576바이트다.

빌드·구성크기
Full APK(arm64-v8a + x86_64)10.33 MiB
Libre APK(arm64-v8a + x86_64)10.28 MiB
기기별 다운로드(arm64-v8a)8.19 MiB

Full arm64-v8a APK의 압축된 항목 가운데 classes*.dex(앱 코드와 JVM 의존성)는 3.04 MiB, libffmpegJNI.so는 1.39 MiB, Bouncy Castle 데이터 파일은 1.18 MiB, 리소스는 1.71 MiB, libsamba_jni.so(libsmb2)는 484 KiB, libtwigzstd·libtermux·libtwigpty는 109 KiB다. Bouncy Castle 데이터 중 1.16 MiB는 양자내성 서명 방식 picnic의 조회 테이블 세 개(lowmcL{1,3,5}.bin.properties)다. 제작자는 안드로이드의 축소된 빌드에 X25519가 없어 전체 Bouncy Castle을 포함해야 하며 이 데이터가 사용되지 않는 용량이라고 설명한다. 저장소별 Gradle 모듈을 분리해 미디어 재생과 네트워크 저장소를 빼면 빌드 크기를 줄일 수 있다.

파일 탐색과 저장소

Twig는 세로 화면에서 한 창, 가로 화면에서 두 창을 나란히 보여준다. 디렉터리 안으로 화면을 바꾸는 대신 트리에서 펼치며, 마지막으로 누른 디렉터리를 새 폴더·복사·이동의 대상으로 삼는다. 두 저장소를 함께 열어 SMB 폴더를 로컬 ZIP으로 압축하거나 원격 압축 파일의 파일을 FTP로 바로 복사할 수 있다. 저장소를 펼칠 때 네트워크에 연결하고, 여러 서버 설정을 유지한다. 압축과 압축 해제도 저장소 간 복사로 처리한다.

지원 저장소에는 로컬 파일, Android/data, 시스템 디렉터리, ZIP·7z·tar와 gzip·xz·bz2·zstd 압축 파일, FTP, SFTP, SMB/CIFS, WebDAV, S3 호환 서비스, restic, Jellyfin·Emby, SAF 문서 트리, 설치된 앱이 포함된다. S3 호환 대상은 AWS S3, MinIO, R2, OSS, COS, B2다. restic 저장소는 형식 v1과 v2를 읽고 기기에서 복호화한다. Jellyfin과 Emby는 읽기 전용 가상 트리다.

ZIP은 읽기·쓰기를 지원하고 오래된 GBK 파일명을 감지한다. 7z는 LZMA2로 읽고 만들 수 있으며 tar는 읽기 전용이다. tar 항목은 압축을 풀지 않고 연속된 데이터 구간을 읽으므로 안에 든 다른 압축 파일도 바로 열 수 있다. gz·xz·bz2·zst는 여러 항목을 가진 아카이브가 아니라 단일 스트림으로 열리며, 예를 들어 foo.tar.gz는 foo.tar로 표시된 뒤 다시 펼칠 수 있다. .tgz·.txz·.tbz2·.tzst도 지원한다. RAR4와 RAR5는 full 빌드에서만 읽을 수 있고, RAR 압축은 지원하지 않는다. 암호화된 ZIP·7z·RAR은 읽으며 AES-256 ZIP·7z를 만들 수 있다. ZIP은 WinZip AES와 구형 ZipCrypto를 직접 구현했다.

Android/data는 시스템이 허용하는 경우 SAF 권한을 폴더 전체 또는 앱별 폴더에 저장해 읽고 쓸 수 있다. 시스템 선택기에서 허용되는 범위에 따라 달라지며, 루트 또는 Shizuku 권한도 대안이다. /system, /vendor 같은 읽을 수 있는 시스템 경로는 / 목록을 열 수 없어도 직접 접근할 수 있다. 보호된 파일은 루트나 Shizuku가 필요하고, 읽기 전용으로 마운트된 경로는 계속 읽기 전용이다. SD 카드와 USB 드라이브는 시스템이 제공하는 이름과 용량으로 루트에 표시한다. 일반 API로 읽을 수 없는 볼륨은 SAF 또는 권한 상승을 통해 접근한다.

탐색 기능에는 다중 선택, 두 창 사이 복사·이동, 진행률 표시와 취소, 폴더 생성·이름 변경·재귀 삭제, 여러 파일 공유가 있다. 선택 항목을 일괄 이름 변경할 때는 바뀌기 전후 이름을 미리 볼 수 있다. 문자 치환 또는 정규식을 사용하고 대소문자를 구분할지, 이름·확장자 중 무엇을 대상으로 할지 정한다. 번호를 이름 앞이나 뒤에 붙이고 시작 번호와 0 채우기를 설정할 수 있다. 중복 이름과 대상 경로에 이미 있는 이름은 변경 전에 확인한다.

즐겨찾기와 최근 위치는 세션에만 유효한 식별자가 아니라 연결 이름과 경로를 저장해 앱을 다시 실행해도 유지된다. 마지막으로 펼친 위치를 단계별로 복원하며 목록을 건드리는 즉시 복원 조작을 멈춘다. 위치 기억을 끄면 즐겨찾기가 기본으로 펼쳐진다. 그리드 보기, 이미지·동영상 썸네일, 로컬·SMB 폴더의 선택적 파일 개수와 크기 표시, 지역 설정에 따른 날짜 형식도 지원한다. Treemap 방식의 디스크 사용량 보기를 창 안에서 확대할 수 있고 트리와 같은 길게 누르기 동작을 제공한다.

경로 입력으로 서버, 내부 저장소, 이동식 볼륨, 문서 트리, 즐겨찾기 아래의 파일이나 디렉터리로 이동할 수 있다. 연결되지 않은 서버는 이동 과정에서 연결한다. 경로 표시줄을 길게 누르거나 두 번 누르면 현재 경로를 편집한다. 위로 이동 버튼을 길게 누르면 현재 디렉터리를 다시 화면에 표시하며, 이미 보이는 경우 트리를 접는다. 파일과 디렉터리는 홈 화면 바로가기로 고정할 수 있다. 파일 바로가기는 자동 열기, 텍스트, 16진수 또는 고정한 앱 중 열 방법을 선택한다. 바로가기는 자체 작업에서 실행되며 앱의 메인 화면으로 돌아가지 않는다.

Twig는 다른 앱을 위한 파일 선택기(GET_CONTENT)이기도 하다. 자체 가져오기에서도 SMB 공유나 압축 파일 안의 파일을 고를 수 있는데, 시스템 선택기에서는 지원하지 않는 경로다. .xapk·.apks·.apkm 분할 APK 묶음은 압축 파일에서 구성 요소를 꺼내 PackageInstaller 세션에 기록해 별도 도우미 앱 없이 설치한다.

비교, 미디어와 도구

디렉터리 비교는 두 트리를 행별로 맞춰 보여주며 양쪽 모두 서로 다른 저장소일 수 있다. 작은 파일은 크기와 수정 시각이 아니라 내용을 비교한다. 동기화 방향은 왼쪽에서 오른쪽 또는 오른쪽에서 왼쪽으로 명시한다. 증분 동기화는 대상에만 있는 파일을 지우지 않고 없거나 다른 항목을 복사한다. 미러 동기화는 대상의 추가 파일을 삭제한다. 대상 쪽 파일이 더 최신이면 별도로 표시하고 사용자가 선택하지 않는 한 덮어쓰지 않는다. 비교 결과를 저장하면 즐겨찾기처럼 트리에 표시해 다시 열거나 해당 행에서 동기화할 수 있다. 텍스트 비교는 두 열과 동기화된 가로 스크롤, 변경 구간별 병합 화살표를 제공하고, 이미지 비교는 확대와 이동을 연결한다. 바이너리 파일은 16진수로 비교하며 오프셋을 재정렬하지 않는다. 길이가 짧은 쪽은 빈 행으로 채워 파일 끝의 차이도 볼 수 있다.

텍스트 뷰어는 구문 강조, 여러 테마, 확대, Markdown 미리보기를 지원한다. 문자 인코딩은 자동 추측에만 맡기지 않는다. BOM, 엄격한 UTF-8 순서로 확인하고 사용자가 정한 대체 인코딩을 적용하며 기본 대체 인코딩은 GB18030이다. 편집한 파일은 읽어들인 인코딩으로 다시 쓴다. 원래 인코딩으로 입력한 문자를 표현할 수 없으면 물음표로 조용히 바꾸는 대신 알린다. 16진수 뷰어에는 가상 스크롤과 텍스트·16진수 검색이 있다. PDF는 플랫폼 렌더러를 사용하며 연속 또는 한 페이지씩 스크롤하고, 두 번 누르면 여백을 잘라 볼 수 있다. 텍스트 선택을 지원하고 전체 검색은 시스템이 제공하는 Android 15 이상에서 가능하다.

이미지 뷰어는 다운샘플링과 가로·세로 넘기기를 제공한다. 슬라이드쇼는 파일 탐색이 끝나기 전에 먼저 찾은 이미지부터 시작한다. 동영상·오디오 플레이어는 media3와 FFmpeg 소프트웨어 디코딩을 사용하며 AVI, M2TS, HDMV 오디오 트랙, PGS 자막을 지원한다. 시스템 디코더가 충돌하면 두 단계 자동 대체를 시도한다. M2TS 탐색은 느릴 수 있다. Jellyfin·Emby에서는 재생목록을 서버에서 가져오며, 그 밖의 저장소에서는 파일명의 SxxExx, E01 또는 숫자로 에피소드 순서를 판단한다. 다음·이전 항목을 계산할 수 있을 때만 버튼을 표시한다. 수동 선택한 오디오·자막 트랙과 화면 배율은 다음 에피소드와 파일 재개 시 기억한다. 재생 중 화면을 밀어 탐색하고 밝기·음량을 조절하거나 누르고 있는 동안 재생 속도를 높일 수 있다.

음악 플레이어는 로컬, 네트워크, SAF 파일과 저장된 압축 파일·백업의 임시 재생목록을 지원한다. 재생목록을 만들고 정렬·검색·순서 변경·셔플·반복할 수 있으며 .m3u8로 내보낸다. 커버 이미지 색상을 인터페이스에 적용하고, 커버와 가사 보기를 전환하거나 가로 화면에서 함께 표시한다. LRC 파일, 태그, 미디어 서버에서 가져온 동기화 가사의 특정 줄을 누르면 해당 시점으로 이동한다. 파형도 탐색 막대로 쓸 수 있다. 알림, 잠금 화면, 헤드셋·블루투스 조작을 통한 백그라운드 재생과 마지막 재생목록 복원을 지원한다.

Jellyfin과 Emby는 서버에 실제로 존재하는 라이브러리를 트리에 반영한다. 영화·TV·음악 라이브러리 구조에 맞춰 항목을 표시하고, 재생 위치를 서버와 양방향으로 동기화한다. 포스터, 태그, 가사, 외부 자막은 미디어 파일을 네트워크로 읽는 대신 서버 API에서 가져온다. 검색은 서버의 색인을 사용한다. 이 저장소는 읽기 전용이며 업로드 API가 없고 DELETE /Items/{id}는 서버의 실제 파일을 지울 수 있어 쓰기 기능을 제공하지 않는다.

내장 터미널은 선택한 디렉터리에서 로컬, SSH 또는 권한이 필요한 셸을 연다. 여러 세션을 전환할 수 있고 로컬 셸은 대화형 프로그램을 위한 PTY를 사용한다. ‘현재 디렉터리 찾기’ 기능은 셸의 작업 경로를 트리에서 열며 SSH 셸이 경로를 보고하면 원격 경로도 찾는다. 터치 키보드에 CTRL, ALT, SHIFT, ESC, TAB, 방향키, Home/End, Page Up/Down과 셸 기호를 추가한다. SHIFT를 누른 뒤 방향키나 TAB을 눌러 조합 키를 보낼 수 있고, 방향키를 길게 눌러 반복할 수 있다. 전용 파이프 키 |로 명령을 연결할 수 있으며, 예시는 ls -l | grep .apk다. 키보드 표시와 숨김을 직접 조작할 수 있고 화면 방향 전환에 맞춰 로컬 및 SSH PTY 크기를 조정한다. 글꼴과 Termux 호환 colors.properties 색상 구성을 가져올 수 있으며, 글자 크기는 확대 동작으로 바꾼다.

Git 기능은 제작자가 순수 Kotlin으로 만든 :git-lite를 이용한다. 상태와 기록을 확인하고 나란히 변경 사항을 비교한다. 로컬 저장소를 직접 읽고 SFTP에서는 원격 git 실행을 사용한다. 워크트리와 하위 모듈을 처리하며, gitdir:에 기록된 절대 경로가 현재 기기에 없는 경우도 다룬다. 터미널 옆에서 상태를 확인할 수 있다.

Wi-Fi 공유는 ServerSocket으로 작성한 HTTP/1.1 서버를 사용한다. 브라우저에서 파일 목록을 열고 범위 다운로드와 드래그 앤 드롭 업로드를 할 수 있으며, 같은 포트의 WebDAV를 Finder, Windows Explorer 또는 다른 Twig에서 마운트할 수 있다. 기본값은 읽기 전용이고 선택적으로 Basic 인증을 설정한다. 포그라운드 서비스와 Wi-Fi 잠금, UDP 기기 검색 기능도 제공한다.

웹사이트, 보안과 구조

웹사이트 트리에 자체 호스팅 대시보드, 웹 음악 플레이어, 즐겨찾는 사이트를 추가할 수 있다. 각 사이트는 Android 시스템 WebView에서 별도 작업으로 열리며 홈 화면 바로가기를 만들 수 있다. 이미 실행 중인 사이트를 다시 열면 URL을 새로 불러오는 대신 기존 페이지로 돌아간다. 이름과 URL을 입력해 사이트를 추가하고, 트리 항목을 길게 눌러 편집하거나 바로가기를 만든다.

사이트별 설정에는 전체 화면, 툴바·상태 표시줄·내비게이션 바, 화면 방향, 데스크톱 모드, 당겨서 새로고침, 스크롤 방향 잠금, 텍스트 선택 억제가 있다. 기본적으로 두 번 누르면 툴바를 전환하며 사이트 자체의 두 번 누르기 동작과 충돌하면 끌 수 있다. 고급 설정에서 JavaScript, CSS, 숨길 요소의 CSS 선택자를 추가할 수 있다. JavaScript는 페이지 로드 뒤 실행되고 스크립트·스타일·숨김 규칙은 저장한 사이트의 같은 출처 기본 페이지에 적용된다.

사용자 에이전트와 요청 헤더, HTTP Basic 인증을 설정할 수 있다. 저장된 Basic 인증 정보와 헤더 값은 Twig의 암호화 비밀 저장소에 보관한다. 헤더는 같은 출처의 GET 페이지 이동에 적용되며 모든 API나 리소스 요청에 적용되는 것은 아니다. WebView가 노출하는 이미지·스크립트·API 요청은 줄마다 도메인 또는 URL 패턴을 적어 차단할 수 있다. * 와일드카드를 지원하고 일반 도메인 규칙은 하위 도메인도 포함한다. 이는 수동 규칙이며 전체 광고 차단 필터 목록 엔진이 아니고 메인 페이지 이동은 차단하지 않는다.

툴바의 웹 디버깅 패널에는 콘솔, JavaScript 실행, CSS 미리보기, 요소 선택기가 있다. 선택한 요소의 선택자나 HTML을 복사하고 숨긴 뒤 변경 사항을 북마크에 저장할 수 있다. 데스크톱 개발자 도구를 쓰려면 세션 설정에서 컴퓨터 디버깅을 켜고 USB 디버깅 상태에서 chrome://inspect/#devices를 사용한다. 일부 Android 개발용 빌드는 WebView 디버깅을 강제로 켤 수 있다.

HTTP(S) 다운로드는 기본적으로 Downloads/twig에 저장한다. 파일명을 확인하거나 Twig의 파일 선택기에서 연결된 저장소를 포함해 다른 쓰기 가능한 대상을 고를 수 있으며 진행률과 취소를 지원한다. 백그라운드 실행은 기본적으로 꺼져 있고 선택하면 알림을 표시하는 포그라운드 서비스가 사이트 세션을 유지한다. 페이지나 알림에서 종료할 수 있다. 제작자는 이 기능이 백그라운드 생존성을 높이지만 Android 전원 관리나 사이트 자체의 일시 정지 동작을 넘어 끊김 없는 실행을 보장하지는 않는다고 밝힌다.

쿠키와 로그인 상태는 다른 브라우저와 분리된 Twig 공용 WebView 프로필에 저장된다. 북마크별로 계정을 격리하지는 않는다. 사이트 호환성은 기기에 설치된 시스템 WebView에 달렸다. 마스터 비밀번호가 켜진 상태에서 앱이 잠겨 있으면 웹사이트를 열거나 해당 작업으로 돌아갈 때 잠금을 풀어야 한다. 쿠키와 실행 중인 페이지는 유지되며 선택한 백그라운드 세션도 계속된다. 마스터 비밀번호가 켜져 있으면 웹사이트 창의 스크린샷과 최근 작업 미리보기를 막는다.

저장된 비밀번호, API 키, 토큰, 키 암호문은 저장 시 암호화한다. 무작위 256비트 데이터 키로 각 필드를 암호화하고, 기본값인 하드웨어 기반 Keystore 키 또는 마스터 비밀번호에서 계산한 scrypt 키로 데이터 키를 감싼다. 마스터 비밀번호를 켜거나 끌 때는 데이터 키만 다시 감싸며 필드 암호문을 다시 쓰지 않는다. 생체 인증은 androidx.biometric이 아니라 플랫폼 BiometricPrompt를 사용한다. 마스터 비밀번호는 모든 진입점에서 확인하는 앱 잠금의 기반이다. 앱 화면, ‘Twig로 열기’, ‘다음으로 복사’, 파일 선택기, 터미널·원격 명령 바로가기, 웹사이트 작업을 보호한다. 잠그면 키를 메모리에서 제거하지만 음악·터미널·공유는 계속 실행된다. 로컬·SAF 파일의 바탕 화면 바로가기는 복호화된 비밀이 필요하지 않아 잠금 확인을 생략한다. 서버 파일 바로가기는 저장된 자격 증명으로 다시 연결해야 하므로 잠금 확인을 거친다.

.twigbak 설정 백업에는 연결, 설정, 웹사이트 북마크와 스크립트·스타일·규칙이 JSON으로 들어간다. 별도 내보내기 비밀번호로 암호화할 수 있고 Twig의 폴더 선택기로 SMB·WebDAV·S3에 바로 저장할 수 있다. 가져오기는 기존 설정을 교체하지 않고 병합한다. 토큰, 호스트 키, 데이터 키는 내보내지 않는다. 웹사이트 북마크 목록은 전체를 복원하고 Basic 인증 정보와 헤더는 대상 기기에서 다시 암호화한다. WebView 쿠키와 로그인 세션은 백업에 포함되지 않는다.

프로젝트 구조에서는 모든 저장소가 같은 FileSystem과 XFile 인터페이스를 구현하고 CopyEngine이 openInput()과 openOutput()을 통해 저장소 사이에서 데이터를 옮긴다. 새 저장소는 FileSystem 구현을 추가하면 되며 UI와 복사 엔진은 바꾸지 않는다는 것이 설계 설명이다. 저장소별 모듈을 빌드에서 제외할 수도 있다.

빌드와 라이선스

빌드에는 JDK 21과 app/build.gradle.kts에 고정된 Android SDK·NDK가 필요하다.

text
./gradlew :app:assembleFullDebug # installable debug APK (with RAR)
./gradlew :app:assembleFullRelease # R8-optimised release (with RAR)
./gradlew :app:assembleLibreRelease # F-Droid variant (no RAR, 100% FLOSS)
./gradlew :app:bundleLibreRelease # libre AAB for store upload
./gradlew :app:assembleFullRelease -PabiSplit=true # three single-ABI APKs

릴리스 빌드는 저장소 루트에 keystore.properties가 있을 때만 서명한다. 파일에는 storeFile, storePassword, keyAlias, keyPassword를 둔다. 파일이 없으면 공개 Android 디버그 키를 대신 쓰지 않고 app-<flavor>-release-unsigned.apk를 만든다. 직접 서명하거나 로컬 시험에 디버그 빌드를 사용한다. 디버그 키로 릴리스를 서명하려면 local.properties에 debugSign=true를 넣거나 -PdebugSign=true를 전달한다. 명령행 옵션이 우선한다. 공개 배포 빌드에는 자체 릴리스 키를 사용해야 한다.

text
./gradlew :core-fs:test :fs-archive:test :fs-network:test :fs-restic:test :git-lite:test
./gradlew :app:testFullReleaseUnitTest

빌드 도구는 36.1.0으로 고정되어 있고 기본 빌드는 arm64-v8a, x86_64를 대상으로 한다. 선택적 ABI 분할은 실험용 armeabi-v7a APK도 만든다. R8을 켜며 libsmb2와 zstd의 JNI 진입점은 이름으로 유지한다. 릴리스 리허설은 커밋된 깨끗한 트리와 릴리스 서명 설정에서 tools/release.sh를 실행한다. 태그를 만들거나 푸시하지 않고 APK 다섯 개를 빌드·확인하고 build/release/<version>/에 이중 언어 릴리스 노트를 만든다. tools/release.sh --publish는 태그와 푸시를 하고 GitHub 릴리스를 만든다.

Twig는 GPL-3.0-only다. 프로젝트는 Termux 터미널 에뮬레이터와 Jellyfin FFmpeg 디코더가 GPLv3이며 이를 연결해 앱이 GPLv3를 따른다고 설명한다. LICENSE-EXCEPTIONS.md에는 UnRAR 라이선스 junrar 연결에 관한 추가 허가, 필수 고지, LGPL 재링크, 상표 유보가 있다. 제3자 구성 요소와 버전·라이선스는 THIRD_PARTY.md에 정리되어 있다. Twig 이름과 앱 아이콘은 GPL 허가에 포함되지 않는다. 코드를 포크하고 수정할 수 있지만 배포물의 이름과 아이콘은 바꿔 원 제작자가 배포한 것으로 오인되지 않게 해 달라고 요청한다. RAR 처리 코드는 RAR(WinRAR) 호환 압축 프로그램 개발에 사용할 수 없으며 Twig는 RAR을 풀기만 한다.

주요 자료: 프로젝트 저장소, 라이선스, 웹사이트 설정 안내, 라이선스 예외, 제3자 구성 요소 목록, 기여자 계약, 구현 기록, 개발 과정에서 발견한 문제.

로드맵에는 Google Drive·Dropbox·OneDrive를 공급사 SDK 없이 REST로 연결하는 :fs-cloud, 전역 검색, Bouncy Castle의 picnic 조회 테이블 1.2 MB를 빼거나 Conscrypt로 교체하는 작업이 있다. 암호화 라이브러리 변경 전에는 SSH 핸드셰이크가 여전히 X25519를 찾는지 기기에서 확인해야 한다.