Skip to content

Releases: boostbrothers/apple-container-desktop

Apple Container Desktop v0.5.0

Choose a tag to compare

@github-actions github-actions released this 21 Aug 05:24

Swift 이관(v0.4.0) 이후 첫 기능 릴리스입니다. 보안 수정이 포함되어 있으니 아래 안내를 확인해 주세요.

🔒 보안 수정 — 서비스 시크릿이 평문으로 저장되던 문제

서비스 편집 화면에서 환경변수를 Secret으로 표시하고 값을 새로 입력하면, 그 값이 projects.json에 암호화되지 않은 채로 저장되고 있었습니다. 실행 경로가 "암호문이면 복호화, 아니면 그대로 사용" 방식이라 앱은 아무 에러 없이 정상 동작했고, 그래서 겉으로 드러나지 않았습니다. 이전 Tauri 빌드에도 있던 문제입니다.

  • 저장 경로(서비스 추가·수정 양쪽)에서 새로 입력된 시크릿을 AES-256-GCM(enc:v1:)으로 암호화합니다. 이미 암호문인 값은 이중 암호화하지 않습니다.
  • 기존에 평문으로 저장된 값은 해당 서비스를 한 번 저장하면 자동으로 암호화됩니다.
  • 이미 유출됐을 수 있는 토큰·키는 회수(rotate)하시기를 권합니다. projects.json은 홈 디렉토리의 평범한 파일이라 백업·동기화 도구에 딸려 갔을 수 있습니다.

✨ 서비스별 Build Arguments

Dockerfile로 빌드하는 서비스에 빌드 인자를 지정할 수 있습니다. 사설 레지스트리 토큰처럼 빌드 시점에만 필요한 값을 다루기 위한 기능입니다.

  • 서비스 편집 시트에 Build Arguments 섹션이 생겼습니다 (Dockerfile 모드에서만 노출).
  • 지정한 값은 이미지 빌드 시 container build --build-arg KEY=VALUE로 전달됩니다.
  • Secret으로 표시한 값은 암호화되어 저장되고, 화면에서는 마스킹됩니다. 복호화에 실패하면 그 인자만 건너뛰고 로그에 경고를 남깁니다 — 빌드 전체가 멈추지 않습니다.
  • ARG 이름은 Dockerfile 규칙([A-Za-z_][A-Za-z0-9_]*)으로 검증합니다. 어긋나면 저장이 막히고 어디가 문제인지 표시됩니다.
  • compose 연동: build.args를 맵({KEY: value})·리스트(["KEY=value"]) 두 형태 모두 가져옵니다. 내보낼 때는 평문 인자만 나가고, 시크릿은 값 없이 파일 상단 주석으로 무엇이 빠졌는지 알려줍니다 — compose 파일은 보통 커밋되기 때문입니다.

🎨 다듬기

  • 인접한 glass 표면을 GlassEffectContainer로 묶어 macOS 26에서 블렌딩이 의도대로 나오게 했습니다. 로그 본문은 콘텐츠 평면이므로 glass 대신 솔리드 잉크 레이어로 정렬했습니다.
  • 전송 계층 결정(container CLI 서브프로세스 유지, SDK/XPC 미채택)과 그 판단을 뒤집어야 할 신호를 docs/transport-decision.md에 기록했습니다.
  • CI에서 DMG 아티팩트가 숨김 파일을 빠뜨리던 문제를 고쳤습니다.

설치

curl -fsSL https://raw.githubusercontent.com/boostbrothers/apple-container-desktop/main/install.sh | sh

DMG를 직접 받는 경우 ad-hoc 서명이라 Gatekeeper를 통과하지 못합니다. install.sh가 quarantine 속성을 자동으로 제거하므로 이 경로를 권장합니다. 수동 설치라면:

xattr -rd com.apple.quarantine "/Applications/Apple Container Desktop.app"

요구 사항: macOS 15 이상 · Apple Silicon (arm64) 전용 · Apple Container 1.0.0 이상

전체 변경 내역: v0.4.0...v0.5.0

Apple Container Desktop v0.4.0

Choose a tag to compare

@github-actions github-actions released this 21 Aug 04:16

Tauri를 걷어내고 네이티브 SwiftUI 앱으로 전면 재작성한 릴리스입니다. 화면과 기능은 그대로지만 내부는 전부 바뀌었습니다.

무엇이 달라졌나

  • 저장소가 SwiftPM 패키지 하나가 됐습니다. src-tauri/(Rust)와 src/(React/TypeScript)가 사라지고 Sources/ContainerKit(로직) + Sources/AppleContainerDesktop(SwiftUI)만 남습니다. 의존성은 compose YAML 파싱용 Yams 하나뿐입니다.
  • IPC 계층이 없어졌습니다. 예전에는 invoke() → Rust 커맨드 → CLI 왕복이었지만, 이제 뷰가 ContainerKit을 직접 호출하고 ContainerKit이 container 서브프로세스를 실행합니다.
  • 네이티브 macOS 크롬 — NavigationSplitView 사이드바, 통합 툴바, 시스템 시맨틱 컬러, HIG 타이포그래피 스케일. Liquid Glass는 macOS 26에서 네이티브 .glassEffect(), 그 이전에는 vibrancy 머티리얼, Reduce Transparency가 켜져 있으면 솔리드로 내려갑니다.
  • 번들이 가벼워졌습니다 — DMG 2.5 MB (WebView 런타임과 Node 번들이 사라진 결과).
  • 로그 스트리밍 근본 수정 — container logs -f가 줄을 쏟는데도 0줄로 관측되던 문제를 GCD 기반 줄 스트림으로 고쳤습니다. 앱 종료 시 팔로우 자식 프로세스도 정리됩니다.

기존 사용자를 위한 안내

  • 데이터 마이그레이션이 필요 없습니다. ~/Library/Application Support/apple-container-desktop/의 projects.json·env-store.json·app-settings.json과 Keychain 항목을 그대로 읽고 씁니다. 시크릿 암호화도 같은 enc:v1: AES-256-GCM 포맷이라 이전 앱이 저장한 값을 그대로 복호화합니다.
  • Apple Container 1.0.0 이상이 필요합니다. pre-1.0 호환 경로는 이관하지 않았습니다.
  • 자동 업데이트는 없습니다. 이전 Tauri 빌드도 실질적으로 없었습니다 — 업데이트는 재설치입니다.

설치

curl -fsSL https://raw.githubusercontent.com/boostbrothers/apple-container-desktop/main/install.sh | sh

DMG를 직접 받는 경우, ad-hoc 서명이라 Gatekeeper를 통과하지 못합니다. install.sh는 설치 후 quarantine 속성을 자동으로 제거하므로 이 경로를 권장합니다. 수동 설치라면:

xattr -rd com.apple.quarantine "/Applications/Apple Container Desktop.app"

요구 사항: macOS 15 이상 · Apple Silicon (arm64) 전용 · Apple Container 1.0.0 이상

전체 변경 내역: v0.3.0...v0.4.0

Apple Container Desktop v0.3.0

Choose a tag to compare

@github-actions github-actions released this 23 Apr 05:37
주요 변경사항 (v0.2.0 → v0.3.0):

Features
- Theme: Primary 색상을 Apple Blue(#0071e3)로 통일
- Sidebar: 브랜드 타일 + Projects top-level 메뉴 + 하단 Daemon pill
- Containers: solid 카드 + segmented 필터 + 그룹 액션, 주 액션 라벨 버튼과 overflow 메뉴
- Container Inspect: summary head + 탭 구조 + secret 마스킹, 이름 클릭 진입
- Container Logs: 레벨 토큰화 + 필터/follow pill, 공통 헤더와 서브탭 네비게이션
- Projects: ratio meter + topology hint 카드와 search/filter 리스트
- Projects: Save Service 버튼을 프로젝트 헤더로 이동

Fixes
- 컨테이너 로그 스트림 중복/누수 해결
- 서비스 단위 런타임 설정 및 Dockerfile 없는 프로젝트 지원
- Apple Container 미지원 --driver 플래그 제거 (network create)
- container-row overflow 메뉴를 portal로 렌더해 그룹 클리핑 해소
- Segmented filter 다크 모드 대비 개선
- AppToolbar 중복 페이지 타이틀/빈 툴바 제거
- Sidebar 브랜드명을 'Apple Container Desktop'으로 변경하고 아이콘 제거
- ProjectCard 제어 버튼 항상 표시, 기본 서비스 'DEFAULT' 뱃지 제거
- Project Detail 중복 Running Containers 섹션 제거
- 로그 export 경로 확장자/상위 디렉터리 검증

Refactors
- HIG 정렬 공통 프리미티브 도입 및 전 페이지 적용
- ProjectDetail의 17개 수기 glass-panel을 FormSection으로 교체
- ProjectCard 삭제 확인을 AlertDialog로, 오버플로우를 OverflowMenu로 교체
- 잔여 수기 glass 카드를 공통 프리미티브로 치환
- 불안정한 로그 파서 제거 및 로그 툴바 고정
- ProjectCard watch 인디케이터 제거

Docs
- DESIGN.md에 macOS HIG 섹션과 앱 컨벤션 · Agent 가이드 추가

Apple Container Desktop v0.2.0

Choose a tag to compare

@github-actions github-actions released this 17 Apr 08:36
- 컨테이너 Inspect/Logs 공통 헤더와 서브탭 네비게이션 추가
- 컨테이너 로그 ANSI 컬러 렌더링 지원
- 컨테이너 로그 뷰어 기능 강화
  - 로그 검색 (Cmd+F) + 하이라이트 + 네비게이션
  - LogToolbar 필터 지원
  - 로그 복사 및 내보내기 (Copy/Export) 버튼
- Infisical 서비스 토큰 AES-GCM 암호화 저장
- 컨테이너 실행 시 CPU/Memory 리소스 제한 설정

- LogView 컴포넌트 분리 및 구조 개선
- LogEntry에 단조 id 및 버퍼 상한 도입
- AnsiLine 메모이제이션 및 highlight prop 최적화

- 로그 내보내기 경로 확장자 및 상위 디렉토리 유효성 검사
- 검색 닫기 시 뷰포트 유지

- install.sh를 사용한 빠른 설치 방법 안내 추가

Apple Container Desktop v0.1.0

Choose a tag to compare

@github-actions github-actions released this 16 Apr 00:00