diff --git a/.github/workflows/snap_deploy.yml b/.github/workflows/snap_deploy.yml new file mode 100644 index 000000000..6f89c0f72 --- /dev/null +++ b/.github/workflows/snap_deploy.yml @@ -0,0 +1,62 @@ +name: デプロイ(snap) +run-name: Building Miria's Snap package +on: + workflow_dispatch: + release: + type: [published] + +permissions: + contents: write + +jobs: + build: + name: ビルド(Snap) + runs-on: ubuntu-latest + strategy: + matrix: + platform: [amd64, arm64] + outputs: + snap: ${{ steps.snapcraft.outputs.snap }} + steps: + - name: Checkout Code + uses: actions/checkout@v3 + + - name: Convert Icon image to 256x256 + run: | + sudo apt install -y imagemagick + convert assets/images/icon.png -resize 256x256 snap/gui/miria.png + rm assets/images/icon_adaptive.png + + - name: Setup QEMU + uses: docker/setup-qemu-action@v1 + + - name: Build Snap + id: snapcraft + uses: diddlesnaps/snapcraft-multiarch-action@v1 + with: + architecture: ${{ matrix.platform }} + + - name: Get Build Version + run: | + echo "VERSION=$(cat pubspec.yaml | grep version | cut -d ' ' -f 2)" >> $GITHUB_ENV + + - name: Upload snap + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh release upload v$VERSION ${{ steps.snapcraft.outputs.snap }} + + # https://github.com/snapcore/action-publish + # Snap Storeでパッケージ名"miria"を予約後、"SNAPCRAFT_STORE_CREDENTIALS"を登録し、 + # 以下をコメントアウトを解除することでSnap Storeへアップロードすることが可能です。 + # Snap Storeでの公開後は、上記の"Upload snap"をコメントアウトしてください。 + # (通常、SnapファイルをそのままStore外で公開することはありません) + # + #- name: Upload snap store + # uses: snapcore/action-publish@v1 + # env: + # SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.STORE_LOGIN }} + # with: + # snap: ${{ steps.snapcraft.outputs.snap }} + # release: edge + diff --git a/pubspec.lock b/pubspec.lock index 846281acd..b1eaaff0a 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -221,10 +221,10 @@ packages: dependency: "direct main" description: name: collection - sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a url: "https://pub.dev" source: hosted - version: "1.17.2" + version: "1.18.0" colorfilter_generator: dependency: "direct main" description: @@ -484,7 +484,7 @@ packages: source: hosted version: "8.1.0" flutter_secure_storage_linux: - dependency: transitive + dependency: "direct main" description: name: flutter_secure_storage_linux sha256: "3d5032e314774ee0e1a7d0a9f5e2793486f0dff2dd9ef5a23f4e3fb2a0ae6a9e" @@ -788,10 +788,10 @@ packages: dependency: transitive description: name: meta - sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" mfm_parser: dependency: "direct main" description: @@ -1235,10 +1235,10 @@ packages: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.11.1" state_notifier: dependency: transitive description: @@ -1251,10 +1251,10 @@ packages: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" stream_transform: dependency: transitive description: @@ -1291,10 +1291,10 @@ packages: dependency: transitive description: name: test_api - sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" url: "https://pub.dev" source: hosted - version: "0.6.0" + version: "0.6.1" timing: dependency: transitive description: @@ -1459,10 +1459,10 @@ packages: dependency: transitive description: name: web - sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 url: "https://pub.dev" source: hosted - version: "0.1.4-beta" + version: "0.3.0" web_socket_channel: dependency: transitive description: @@ -1544,5 +1544,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.1.0 <4.0.0" + dart: ">=3.2.0-194.0.dev <4.0.0" flutter: ">=3.13.0" diff --git a/pubspec.yaml b/pubspec.yaml index 989294f6f..7cef15ff5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -63,6 +63,7 @@ dependencies: webview_flutter: ^4.3.0 webview_flutter_android: ^3.12.0 webview_flutter_wkwebview: ^3.9.0 + flutter_secure_storage_linux: ^1.2.0 dependency_overrides: image_editor: diff --git a/snap/gui/miria.desktop b/snap/gui/miria.desktop new file mode 100644 index 000000000..3f466b1d2 --- /dev/null +++ b/snap/gui/miria.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Version=1.0 +Name=Miria +GenericName=Miria +Type=Application +Exec=miria +Icon=${SNAP}/meta/gui/miria.png +Comment=Misskey client app for mobile (Linux build) +Comment[ja]=モバイル向けのMisskeyクライアントアプリ(Linux向けビルド) +Keywords=Misskey;Miria;みりあ +Terminal=false +StartupNotify=false diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml new file mode 100644 index 000000000..24b4fb7d0 --- /dev/null +++ b/snap/snapcraft.yaml @@ -0,0 +1,83 @@ +name: miria # you probably want to 'snapcraft register ' +title: Miria +type: app +summary: Misskey Client App # 79文字まで。 +description: | + Miriaは分散型SNS「Misskey」のクライアントアプリです。 + + 機能 + + * タイムラインの閲覧やノートの投稿、「アンテナ」「チャンネル」「みつける」などの基本的な機能を利用することができます。 + * 複数アカウント、複数サーバーに対応しています。(※2個目以降のアカウントを追加したあとは、アカウントに紐づくタブを追加する必要があります。) + * 一部のMFMに対応しています。 + * タブにカスタム絵文字を設定することができます。 + * リアクションピッカーの精度が高く、ひらがなでも検索しやすくなっています。 + * 投稿欄でMFMの入力補完をすることができ、MFMの構文やカスタム絵文字をスムーズに入力することができます。 + * 配色を複数のパターンから切り替えることができます。 + + 制限事項 + + * このアプリでは新規登録およびアカウント削除の機能を提供していません。新規登録や削除が必要な場合、登録や削除に必要な要件をそれぞれのサーバーへご確認ください。 + * このアプリではサーバーを提供していません。このアプリと一緒に特定のサーバーを付随して提供していないので、このアプリ単独で利用することはできません。 + * このアプリはMisskey v12以前のバージョンや、Firefish, Calckeyなどのフォークされたアプリケーションに対応していません。 + * モバイル向けに開発されたアプリであることから、一部機能はデスクトップで動作しません。 + + 注意:インストール後、パスワード管理サービスにアクセスできるように、下記のコマンドを実行してください。 + + `sudo snap connect miria:password-manager-service` +license: AGPL-3.0 +website: https://shiosyakeyakini.info/miria_web/index.html +source-code: https://github.com/shiosyakeyakini-info/miria +issues: https://github.com/shiosyakeyakini-info/miria/issues +icon: assets/images/icon.png +adopt-info: miria +base: core22 # the base snap is the execution environment for this snap +grade: stable +confinement: strict +compression: lzo +architectures: + - amd64 + - arm64 + +apps: + miria: + command: miria + extensions: [gnome] + plugs: + - home + - unity7 + - network + - audio-playback + - removable-media + - password-manager-service + +parts: + miria: + # See 'snapcraft plugins' + source: . + plugin: flutter + override-pull: | + craftctl default + craftctl set version=$(cat pubspec.yaml | grep "version[:]" | cut -d ' ' -f 2) + flutter-target: lib/main.dart + build-packages: + - curl + - libmpv-dev + - libsecret-1-dev + stage-packages: + - libmpv1 + - libsecret-1-0 + # Integrate custom dialogs in your snap - doc - snapcraft.io + # https://forum.snapcraft.io/t/integrate-custom-dialogs-in-your-snap/10825 + zenity: + plugin: nil + stage-packages: + - zenity + prime: + - usr/bin/zenity + - usr/share/zenity/* + +layout: + # Fix resource relocation problem of zenity part + /usr/share/zenity: + symlink: $SNAP/usr/share/zenity \ No newline at end of file