Skip to content

satoooh/lumabin

LumaBin

Desktop CI Desktop E2E Desktop Release Repository Hygiene

LumaBin は、Cloudflare R2 上の画像・動画・PDF・CSV を gallery-first で扱う macOS 向けデスクトップアプリです。

  • 形態: Electron デスクトップアプリ
  • 技術方針: TypeScript 統一(Renderer / Main / Preload)
  • ストレージ方針: Cloudflare R2 first, S3 ready
  • ライセンス: MIT

LumaBin は OSS として公開されています。バグ報告、再現手順、ドキュメント改善、小さなUX改善の提案を歓迎します。参加方法は CONTRIBUTING.md を参照してください。

製品画像

LumaBin Product Screenshot

最新版を試す

macOS 向けの配布 zip は GitHub Releases で公開しています。

  • 最新リリース: LumaBin Releases
  • 配布形式: Developer ID signed + notarized macOS ZIP(現在の公開リリース)
  • 検証ファイル: SHA256SUMS.txtrelease-evidence.json

現在の公開リリースは release-evidence.json で Developer ID 署名、hardened runtime、Gatekeeper assessment、stapler validation を確認した ZIP です。手元で unsigned mode のローカル配布物を作った場合のみ、macOS の quarantine により初回起動がブロックされることがあります。

現在地

クイックスタート

必要環境

  • macOS
  • Node.js 22.12+
  • npm 10+

セットアップ

git clone https://github.com/satoooh/lumabin.git
cd lumabin/apps/desktop
npm install

起動

npm run dev

使い方メモ

  • ギャラリー画面で Cmd+V / Ctrl+V すると、クリップボード画像をそのままアップロードできます。

最低チェック

npm run smoke:ci

E2E(実機操作)

# 初回のみ
npm run e2e:install

# packaged app を生成して E2E 実行
npm run e2e

補足:

  • E2E は packaged app を LUMABIN_E2E_FIXTURE=1 で起動し、固定 profile / assets のフィクスチャを使って再現性を担保します。

開発コマンド(apps/desktop)

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:runtime

CI / Release

GitHub 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 / Auditsmoke: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 / Audit
    • Build and Publish macOS Release(GitHub Release に zip + SHA256SUMS.txt を公開)
    • release environment で 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-smoke

release:launch-smoke は生成済み macOS zip を一時展開し、packaged app を E2E fixture mode で起動して主要導線を自動確認します。 package:darwin は zip 生成後に Electron 用 entitlement 付きで ad-hoc 再署名し、配布 zip を再生成します。

branch protection の推奨設定は docs/RUNBOOK.md を参照してください。

OSSとして参加する

公開issueやPRには、access key、secret key、private bucket 名、object key、署名済みURL、個人データを含むスクリーンショットを貼らないでください。

ドキュメント

更新ルールは docs/AGENTS.md を参照してください。

About

A macOS desktop app for browsing, previewing, sharing, and managing S3-compatible object storage assets.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors