LumaBin は、Cloudflare R2 上の画像・動画・PDF・CSV を gallery-first で扱う macOS 向けデスクトップアプリです。
- 形態: Electron デスクトップアプリ
- 技術方針: TypeScript 統一(Renderer / Main / Preload)
- ストレージ方針: Cloudflare R2 first, S3 ready
- ライセンス: MIT
LumaBin は OSS として公開されています。バグ報告、再現手順、ドキュメント改善、小さなUX改善の提案を歓迎します。参加方法は CONTRIBUTING.md を参照してください。
macOS 向けの配布 zip は GitHub Releases で公開しています。
- 最新リリース: LumaBin Releases
- 配布形式: Developer ID signed + notarized macOS ZIP(現在の公開リリース)
- 検証ファイル:
SHA256SUMS.txtとrelease-evidence.json
現在の公開リリースは release-evidence.json で Developer ID 署名、hardened runtime、Gatekeeper assessment、stapler validation を確認した ZIP です。手元で unsigned mode のローカル配布物を作った場合のみ、macOS の quarantine により初回起動がブロックされることがあります。
- 現在フェーズ: Public preview
- ロードマップと未決事項: docs/ROADMAP.md
- 要件: docs/REQUIREMENTS.md
- 実装構成: docs/ARCHITECTURE.md
- macOS
- Node.js 22.12+
- npm 10+
git clone https://github.com/satoooh/lumabin.git
cd lumabin/apps/desktop
npm installnpm run dev- ギャラリー画面で
Cmd+V/Ctrl+Vすると、クリップボード画像をそのままアップロードできます。
npm run smoke:ci# 初回のみ
npm run e2e:install
# packaged app を生成して E2E 実行
npm run e2e補足:
- E2E は packaged app を
LUMABIN_E2E_FIXTURE=1で起動し、固定 profile / assets のフィクスチャを使って再現性を担保します。
npm run lint
npm run typecheck
npm run smoke:integration
npm run smoke:ci
npm run e2e
npm run e2e:headed
npm run verify:darwin-artifact
npm run release:launch-smoke
npm run package
npm run package:darwin
npm run audit:runtimeGitHub Actions:
-
.github/workflows/desktop-ci.yml -
.github/workflows/desktop-e2e.yml -
.github/workflows/desktop-release.yml -
Trigger:
pull_request,push(main),workflow_dispatch -
Jobs:
Lint / Typecheck / Audit(smoke:integrationを内包)Packaging smoke (macOS)
-
Trigger(E2E):
schedule(毎日 03:00 JST /0 18 * * *UTC)workflow_dispatch
-
Jobs(E2E):
Playwright E2E (macOS)(失敗時にtest-results/playwright-reportを artifact 保存)
-
Trigger(Release):
push tag(v*)workflow_dispatch(タグ ref を選択して実行)
-
Jobs(Release):
Lint / Typecheck / AuditBuild and Publish macOS Release(GitHub Release に zip +SHA256SUMS.txtを公開)releaseenvironment でLUMABIN_ENABLE_MAC_SIGN=1のとき Developer ID 署名/notarize を実施- signing 無効時は unsigned ad-hoc ZIP を生成し、
release-evidence.jsonに unsigned mode として記録
ローカルで配布物の最終確認まで行う場合:
npm run release:preflight
npm run release:launch-smokerelease:launch-smoke は生成済み macOS zip を一時展開し、packaged app を E2E fixture mode で起動して主要導線を自動確認します。
package:darwin は zip 生成後に Electron 用 entitlement 付きで ad-hoc 再署名し、配布 zip を再生成します。
branch protection の推奨設定は docs/RUNBOOK.md を参照してください。
- バグ報告: Bug report
- 機能提案: Feature request
- 貢献ガイド: CONTRIBUTING.md
- 行動規範: CODE_OF_CONDUCT.md
- サポート範囲: SUPPORT.md
- セキュリティ報告: SECURITY.md
公開issueやPRには、access key、secret key、private bucket 名、object key、署名済みURL、個人データを含むスクリーンショットを貼らないでください。
- docs/PRD.md: プロダクト意図と固定判断
- docs/REQUIREMENTS.md: 機能/非機能要件と受け入れ基準
- docs/ARCHITECTURE.md: 現行アーキテクチャと責務分離
- docs/ROADMAP.md: public preview の現在地と今後の重点テーマ
- docs/RUNBOOK.md: 開発・検証・運用手順
- docs/PERFORMANCE.md: 公開fixture中心の性能確認手順
- docs/adr/: 決定済みの長期的な設計判断
更新ルールは docs/AGENTS.md を参照してください。