ぬるぬる

io.nurunuru.app
by n

高速で信頼できるタイムラインを備えたNostrクライアント

「ぬるぬる」は、シンプルで使いやすいNostrクライアントです。 📱 タイムライン Network-first の高速タイムライン。フォロー / リレー別表示、無限スクロール、 NIP-65 relay hints を活用した過去投稿読み込みに対応。 画像・動画・カスタム絵文字・長文記事・リポストを自然な時系列で表示します。 ホームタブで自分の投稿といいね一覧を切り替え表示。 ✍️ 投稿 最大3枚の画像を同時アップロード。投稿先リレーをその都度選択可能。 💬 トーク E2E暗号化のDMとグループチャット(NIP-EE / MLS)。旧来のDMの読み取りにも対応。 ⚡ Zap 相手のLightningアドレスからインボイスを取得してクリップボードにコピー。外部ウォレットで送金できます。 🔍 検索 全文検索で #タグ、from:npub、filter:image などのコマンドに対応。 🧩 ミニアプリ カスタム絵文字、プロフィールバッジ、リレー設定、ミュートリスト、Zap設定、 調整くん、音声入力設定、バックアップ、削除リクエスト、キャッシュ設定。 🔑 ログイン nsec・外部署名アプリ(Amber)に対応。

First release: Mar 2, 2026, 27 total releases.

Most recent release: May 26, 2026.

Website Repo

Appears in 1 app stack.

0 sats / 0 zaps received in the past year.

Sats Received

Underlying data available via MCP: app_zaps, app_releases.

Zap Count

Underlying data available via MCP: app_zaps, app_releases.

Releases

  • May 26, 2026 1.5.4
    ### Fixed - Android の通常タイムラインから NIP-71 ろくなな動画イベントを除外し、専用サーフェスとの表示境界を明確化。 - Android のリポスト展開で repostedBy / repostTime を保持し、フォロータイムラインのリポスト文脈を表示しやすくしました。 - Android / iOS の古いページ読み込みで、単発の空ページまたは失敗が無限スクロールを即停止させないよう改善。 - Android 投稿本文内 URL をタップで開けるようにしました。 - Android / iOS の通知 fetch / cache restore で表示対象タイプを whitelist し、想定外の通知種別を表示対象外にしました。 - Android パスキーログインの導線を対応端末で表示し、iOS のパスキー署名セッションを投稿前に warm cache するよう改善。 ### Changed - Android versionCode を 27、Web / Android / iOS 表示バージョンを 1.5.4、iOS build number を 10 に更新。
    More…
    ### Release artifacts - Android APK: release-artifacts/nurunuru-1.5.4-arm64-v8a.apk - Google Play AAB: release-artifacts/nurunuru-1.5.4-google-play.aab
  • May 26, 2026 1.5.3
    ### Fixed - Android のフォロー / グローバル / リレー別タイムラインで、空の6時間 pagination window に当たっても複数ウィンドウを探索するよう改善。 - 投稿が少ないフォロー先やリレーで、過去投稿の無限スクロールが途中で止まりにくくなりました。 ### Changed - Android versionCode を 26、Web / Android / iOS 表示バージョンを 1.5.3、iOS build number を 9 に更新。 ### Release artifacts - Android APK: release-artifacts/nurunuru-1.5.3-arm64-v8a.apk - Google Play AAB: release-artifacts/nurunuru-1.5.3-google-play.aab
    More…
    - App Store Connect IPA: release-artifacts/ios/app-store-connect-1.5.3/NuruNuru.ipa
  • May 25, 2026 1.5.2
    ### Changed - タイムライン event cache を network-first 方針に変更し、古いキャッシュが新着投稿の下に無言で混ざって時間軸が飛ぶ UX を廃止。プロフィール / follow-list / detail lookup 用 cache は維持。 - Android / iOS のタイムライン pagination を bounded window (since = until - 6h) + raw-first 表示へ変更し、過去投稿読み込みの体感速度を改善。 - Follow timeline の過去読み込みで active-author discovery と author chunk 分割取得を導入し、500 authors の巨大 REQ 依存を軽減。 - Android では NIP-65 outbox relay hints を使い、active authors の write relay にも並列 fetch するよう改善。 - 個別 relay timeline でも until pagination に対応し、すべてのリレーだけでなく選択中 relay 単体でも過去投稿へ遡れるように変更。 ### Fixed - relay timeout / EOSE-without-events / 一時的な follow list 空扱いで、表示中のタイムラインが突然空になる問題を修正。 - 新着 50 件の下に 10 時間前などの stale cache が続き、間の投稿を遡れない問題を修正。Pagination cursor は fresh contiguous head を基準に保持。
    More…
    - 最近の repost が元投稿の古い timestamp で表示され、11m -> 1d のように時間軸が飛んで見える問題を all-relay / follow / selected relay timeline で修正。 - Rust core の timeline fetch で filter の一部が失敗しても取得済み event を返せるようにし、partial failure に強くしました。 ### Release artifacts - Android APK: release-artifacts/nurunuru-1.5.2-arm64-v8a.apk - Google Play AAB: release-artifacts/nurunuru-1.5.2-google-play.aab - App Store Connect IPA: release-artifacts/ios/app-store-connect-1.5.2/NuruNuru.ipa
  • May 24, 2026 1.5.1
    ### Changed - Android release versionCode を 24 に更新し、GitHub / Zapstore / Google Play 配信用 artifact を再生成。 - iOS App Store Connect 向け build number を 7 に更新し、IPA を再生成。 - Android 15+ の 16 KB memory page-size 端末向けに native library packaging / Rust linker 設定を明示。 ### Security (Android / iOS / Rust core) — Issue #181 - Marmot / MDK の MLS DB (`*_mls.sqlite3`) を **SQLCipher 4 で暗号化** するよう変更しました。これまで端末ディスク上に **平文で書かれていた MLS の署名鍵 / 暗号鍵 / epoch key pair / KeyPackage 秘密素材** がディスク窃取で抜けるリスクを塞ぐ修正です。 - DB 鍵の取り扱い: - 自分の nsec をアプリ内保持する内部署名モード: nsec から HKDF-SHA256 で **デバイス決定論的に派生** (`derive_mls_db_key`)、永続保存は無し。
    More…
    - 外部署名モード (Android Amber / iOS NIP-46 bunker) では、nsec を持たないため **32 byte 乱数を端末に紐づいた安全領域に保存**: - Android: `EncryptedSharedPreferences` (AES256-GCM, MasterKey)。 - iOS: Keychain `kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly`、サービス `io.nurunuru.app.mls`、`isExcludedFromBackup` を MLS DB / WAL / SHM に付与し iCloud / iTunes バックアップから除外。 - 起動時にコンテンツベースで旧平文 DB を検出し自動 purge する `MlsLegacyMigration` を Android / iOS 双方に追加。WAL / SHM / journal サイドカーも一緒に削除します。 - FFI に `mls_is_encrypted()` を追加し、暗号化されていなければ起動を hard-fail させる guard を `NostrClient.connect()` (Android) と `NuruNuruFFILiveClient.assertEncrypted()` (iOS) に挟みました。ログには `MLS DB encrypted (SQLCipher) — issue #181 guard OK` が必ず出ます。 - CI lint guard `npm run lint:issue-181` を追加し、unkeyed な `NuruNuruClient(secretKeyHex:)` / `newReadOnly(pubkeyHex:)` の再導入を block します。 - 詳細: [`docs/wiki/features/mls-db-encryption.md`](docs/wiki/features/mls-db-encryption.md) / [`docs/wiki/decisions/adr-0009-mls-db-encryption.md`](docs/wiki/decisions/adr-0009-mls-db-encryption.md) ### Upgrade notes — Issue #181 **⚠️ アップグレード時に Talk グループの暗号状態 (MLS state) が一度クリアされ、過去のメッセージ履歴は復号できなくなります。** 旧バージョンの平文 DB はセキュリティ上残せないため、起動時に自動削除されるためです。 - アップグレード後の挙動: - 既存のグループ ID は relay 側にあるため一覧自体は見えます。 - グループ内の過去メッセージは復号できません。新規メッセージから順に表示されます。 - 既存メンバーが KeyPackage rotation を待たずに会話を継続するには、グループから再招待を受ける必要があります。 - KeyPackage 鍵自体は新規 SQLCipher DB で再生成・再 publish されます (`publishKeyPackage: published kind=30443`)。 - 平文 DB が存在しないクリーンインストールでは影響ありません。 - npub / nsec 自体には影響ありません — それらは引き続き旧来どおり Keychain / EncryptedSharedPreferences に保存されています。 ### Known issues (Talk — separate from #181) - iOS の MDK epoch が Android より先行している既存環境では、iOS が送った kind:445 メッセージが Android 側で `state_not_ready` として retry queue に滞留することがあります (PR #180 由来の MDK 振る舞いで、Issue #181 の暗号化対応とは独立)。Android で Talk タブを開き直すか、グループを再選択することで `fetchMlsMessages` の `repairFull` 経路が走り、追従できる場合があります。継続調査中。
  • May 23, 2026 1.5.0
    ### Added (Web) - Reaction picker をカスタム絵文字中心の Native 仕様へ寄せ、Unicode 既定リアクションの quick row を削除。 - Recommended フィードでアイコン/表示名なしユーザーを除外し、ホーム起動時は Following を優先表示して Recommended を後追いロードする挙動に同期。 - 誕生日通知、相互フォロー Zap 通知、カスタム絵文字リアクション通知を Native v1.4.x 仕様に合わせて追加。 - ミニアプリタブのカテゴリ/順序を Native と統一し、エンタメ/ツール構成と音声入力設定導線を整理。 - SignUp に手動リージョン選択、推奨リレー自動セット、geohash/NIP-65 リレーリスト公開を追加。 - ProofMode タグ生成と 6.3 秒ループ動画レコーダーを Web に追加し、Android の diVine/ProofMode 仕様へ同期。 ### Added (Android) / (iOS) - 投稿/引用投稿入力欄に OS 標準 Speech-to-Text のマイク入力を追加し、Web 先行の音声入力 UX へ部分同期。
    More…
    ### Changed (Web) - connection-manager v1.4.8 系の接続管理は Web 固有の修正として整理し、Rust core/Native への追加反映は不要と判定。 - design-tokens/constants.json に CACHE_CONFIG.durations.notification (86_400_000ms / 1 day) を追加し、Android Constants.CacheDuration.NOTIFICATION を source-of-truth から自動生成するよう整合。 ### Changed (Android) / (iOS) - 音声入力の権限拒否/利用不可時の日本語エラーメッセージと停止処理を投稿/引用投稿シートで統一。 ### Fixed (Web) - @noble/hashes v2.0.1 の exports 変更に合わせ、@noble/hashes/utils.js import へ更新して npm run test / npm run build の解決失敗を修正。 - next.config.js の outputFileTracingRoot を明示し、ホームディレクトリ側 lockfile を workspace root と誤推定する Next.js 警告を抑制。 ### Known issues / Carryover - Native の ElevenLabs Scribe streaming STT サービス化、Talk 入力欄統合、401/429/timeout の詳細 UX は v1.6 へ持ち越し。現状 v1.5.0 では OS 標準 Speech-to-Text による部分同期。 - Web 版 NIP-EE (MLS) Talk 移植、TestFlight/zapstore/GitHub Release の配布作業、実機での通知/STT/ProofMode スモークは別途リリース作業で実施。
  • May 14, 2026 1.4.9
    ### Changed - Android / iOS / Rust FFI の最新改善を取り込み - App Store Connect 向け iOS バージョンを 1.0.3 (4) に更新 - GitHub APK、Zapstore、Google Play 配信用リリースアーティファクトを更新
  • May 13, 2026 1.4.8
    ### Changed - Android / iOS / Rust FFI の最新改善を取り込み - GitHub APK、Zapstore、Google Play 配信用リリースアーティファクトを更新
  • May 10, 2026 1.4.7
    # Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [1.4.6] - 2026-05-09 ### Fixed (Android)
    More…
    - ログインユーザーの NIP-65 リレーリスト同期を改善し、既定リレーに戻ってしまう問題を修正 - ミュートリストをローカルキャッシュ優先で即時反映し、連続ミュート時の上書きを防止 - 返信・引用・通知から投稿詳細を開く際の初期表示とリレー配送を改善 - システムバー色と下部ナビゲーション余白を調整 ### Changed (iOS) - App Store 提出向けにろくなな短尺動画機能をビルド対象から除外し、権限説明文を更新 ## [1.4.3] - 2026-03-26 ### Fixed (Android) - PullToRefreshインジケーター(黒丸)がアイドル時に常時表示される問題を修正(HomeScreen・TimelineScreen・UserProfileModal・NotificationModal の4箇所) - 引用投稿モーダルのツールバーが仮想キーボードに隠れる問題を修正(`decorFitsSystemWindows = false`) - 秘密鍵ログイン時にいいね・リポスト操作でクラッシュする問題を修正(Rust FFI 呼び出しを IO スレッドに移動) - 日本語入力中に変換が強制確定される IME バグを修正(composition 中は AnnotatedString 再構築をスキップ) - スクロール時に `fetchProfiles` が `CancellationException` を飲み込んでフォールバックログを出力し続ける問題を修正 - タイムラインのリレー選択ピルがドロップダウン矢印(▼)しか反応しない問題を修正(ピル全体タップ対応) - プロフィールページの投稿一覧にブックマークボタンが表示されない問題を修正 - `queryLocal`・`publishEvent` でメインスレッドブロック(ANR)が発生する問題を修正 ### Added (Android) - 引用投稿モーダルをPost投稿モーダルと統一(マイク音声入力・Content Warning ボタンを追加) - ミニアプリタブにプライバシーポリシーへのリンクを追加 ### Added (Web) - GitHub Pages サイトを `docs/` に追加(アイコン + プライバシーポリシーリンク) - プライバシーポリシーページ(`docs/privacy.html`)を追加 ### Changed - zapstore.yaml の Zap 説明文を実際の動作(クリップボードコピー)に修正 ## [1.4.2] - 2026-03-25 ### Added (Android) - ホームタブのプロフィールヘッダーが投稿スクロールに追従して隠れるコラプシングヘッダーを実装 - ミニアプリタブの見出しも同様にコラプシングヘッダーに対応 - プロフィール画面のバッジを独立した行に移動し、Lightning アドレスの上に配置 ### Changed (Android) - Zap 金額の表記を BIP-177 に準拠した ₿ 記法に統一(ZapModal・通知・トースト・Zap設定すべて) - プロフィール表示名を 22sp・NIP-05 を 16sp に調整、バッジアイコンを 20dp に拡大 ### Changed (docs) - README にスクリーンショット 4 枚を横並びで追加 - README のログイン説明からパスキー(web版のみ)の記述を削除 ## [1.4.1] - 2026-03-22 ### Fixed (Android) - 削除した投稿がアプリ再起動後にホームタブに再表示される問題: 削除済みイベントIDを SharedPreferences に永続保存し、リレーフェッチ・キャッシュ読み込み・ViewModel の3層すべてで除外するよう修正 - Amber 外部署名(NIP-55)でいいね・リアクション時にアプリがフリーズ/ANR になる問題: Rust FFI のブロッキング呼び出し(`publishRawEvent`)と ContentProvider クエリをメインスレッドから IO スレッドに移動 - Amber の ContentProvider 署名が毎回ポップアップになる問題: `getPublicKeyIntent` に `package` extra を追加し Amber の信頼 DB に登録されるよう修正 - トークグループを退出後にキャッシュクリアしても一覧が更新されない問題: `clearStateAfterCacheClear()` でグループ状態を完全リセットしてから再ロードするよう修正、`loadGroups()` の空リスト保護ガードを削除 ## [1.4.0] - 2026-03-21 ### Added (Android) - NIP-EE (MLS) トーク実装: Kind-443 (KeyPackage) / Kind-444 (Welcome) / Kind-445 (GroupMessage) による End-to-End 暗号化グループメッセージ - トークメッセージのキャッシュファースト表示: Rust SQLite ローカル履歴を即時表示し、リレーから差分を非同期更新 - SplashScreen API 導入: `AuthState.Checking` 中はシステムスプラッシュを維持し、起動時の白画面フラッシュを解消 ### Fixed (Android) - トーク一覧のグループ名・トーク画面タイトルが hex 公開鍵になる問題: DM は Rust 内部グループ名を無視し、パートナーのプロフィール名を表示 - トーク一覧が時間経過で消える問題: Rust クライアント未接続時に `fetchMlsGroups()` がキャッシュを返すよう修正、空リストで既存リストを上書きしないよう保護 - トーク開封時にローディングアニメーションがキャッシュより先に表示される問題: メッセージがある場合はスケルトンをスキップ - 起動時の重複 `loadGroups()` 呼び出しを排除 ### Changed (Android) - `NostrRepository` を機能別ファイルに分割 (Timeline / Actions / Notifications / Profiles / Reactions / Talk / Backup / LiveStream) - `NostrCache` と `RecommendationEngine` を `Application.onCreate()` で事前生成し、初回 Compose 測定から SharedPreferences I/O を除外 ## [1.3.9] - 2026-03-21 ### Added (Android) - LINE Seed JP フォントを全体に適用: アプリ全体のフォントを LINE Seed JP (Regular / Bold) に変更 - 投稿リレー選択パネル: 投稿モーダルのツールバーにリレーアイコンを追加、投稿先リレーをチェックボックスで選択可能に - NIP-70 プロテクト対応: 投稿時に `-` タグを付与し、他クライアントによる再共有を防止するオプション - 絵文字事前ロード: ホーム画面起動時に自分の絵文字リストをバックグラウンドでキャッシュ → リアクション長押し時に即表示 - 絵文字設定にお気に入りセクション追加: セット内の絵文字を ♥ タップで個人絵文字リストへ登録・解除 ### Changed (Android) - 絵文字ピッカー: `fetchAndCacheEmojis` を共通関数化、重複フェッチ防止ロジック追加 - 絵文字設定: キャッシュファースト読み込み (EmojiPickerCache 共有) - リアクションピッカー: 自分の絵文字リスト (`myPubkey`) を優先して表示 ### Added (Rust FFI) - `publish_note_with_tags_to_relays`: 指定リレーのみへの投稿を FFI 経由で対応 (engine.rs の `publish_note_to_relays` を呼び出し) ## [1.3.8] - 2026-03-18 ### Added (Android) - リレーライブストリーム: 特定リレー選択中も新着投稿ピルを表示 (EOSE後も WS 接続を維持し kind 1 をリアルタイム受信) - `@メンション` (nostr:npub1/nprofile1) をプロフィールカードからインライン `@ユーザー名` テキストに変更、タップでプロフィールモーダルを表示 ### Fixed (Android) - GLOBALタブ (リレータブ) の新着ピルが表示されない問題: `HorizontalPager` に `beyondBoundsPageCount=1` を設定し、バックグラウンドページの Compose ツリーを維持 - リレー接続タイムアウト・0件取得時に自動解除して通常フィードへ復帰 - 検索モーダルでいいね・リポストが機能しない問題: ViewModel の投稿検索を `searchResults` / `relayPosts` にも拡張 - URLプレビューの OkHttp コネクションリーク修正 (`response.use {}` で確実にクローズ) - ヘッダーのリレーピル内に ▼ ドロップダウンを統合、外部タップで閉じるように修正 ### Changed (Android) - ミニアプリタブのリレー単一選択ラジオボタンを削除 ## [1.3.7] - 2026-03-15 ### Added (Android) - 高度検索コマンド対応 (NIP-50 + 標準フィルタ + クライアント側後処理): - `#タグ` — ハッシュタグで絞り込み (`#t` フィルタ) - `from:npub1...` / `from:user@domain` — 投稿者を指定 (NIP-05自動解決) - `since:YYYY-MM-DD` / `until:YYYY-MM-DD` — 期間指定 - `-除外語` — キーワード除外 (日本語対応) - `"完全一致フレーズ"` — 完全一致フィルタ - `filter:image` / `filter:video` / `filter:link` — メディア種別絞り込み - 複数コマンドの組み合わせ対応 (`#japan since:2025-01-01 -spam` など) - 検索画面にコマンド一覧を常時表示、タップで検索バーへ追記(カーソルは末尾に移動) - NIP-50検索の `since` 1時間固定制限を撤廃、全期間対象に ### Changed (Android) - 検索バーのプレースホルダーをコマンド表示に変更 (`#タグ from: since: until: -除外`) ## [1.3.6] - 2026-03-15 ### Added (Android) - バッジアワード (kind 8) 通知: バッジを授与されると通知一覧に🏅表示 - リアクション通知を「リアクション (👍)」と「絵文字リアクション」に分離、それぞれ個別にON/OFF可能 - キャッシュ設定にプロフィールバッジ (kind 8, 30009) の項目を追加 - キャッシュ設定の全デフォルト保持期間を1日に統一 ### Changed (Android) - おすすめタブ → リレータブ: アルゴリズム・スコアリングを撤廃し、メインリレーの最新 kind 1 を時系列表示。ミュートのみ適用。 - 通知モーダルのヘッダー右端に⚙設定アイコンを追加、種別ごとのON/OFFをモーダル内で完結 - 通知ライブポーリングを10秒間隔に短縮、新着ピル表示に対応 - タイムラインのローディングアニメーションをシマースケルトンに変更 (旧: バウンスドット) - リレータブの新着ピル閾値を3件に設定、タップで先頭に挿入 (再フェッチなし) - ミニアプリ「リレー設定」: NIP-65表記を整理、手動URL入力欄と「自分のリレーリストを読み込む」ボタンを追加 ## [1.3.5] - 2026-03-13 ### Fixed (Android) - 外部ミニアプリで画像などのファイルアップロードができない問題: `WebChromeClient.onShowFileChooser()` を実装し、ファイルピッカーを起動可能に - 外部ミニアプリ表示中に下部タブバーが残る問題: ミニアプリオープン中はタブバーをスライドアウト非表示に - 外部ミニアプリ内リンク遷移後に戻れない問題: ← ボタンが WebView 内履歴を遡るように変更、✕ ボタンでいつでもミニアプリを閉じられるように追加 ## [1.3.4] - 2026-03-13 ### Added (Android) - 外部ミニアプリの編集・削除機能: 長押しで BottomSheet が開き、名前・URL を編集、または削除が可能 ### Fixed (Android) - アップデート時に外部ミニアプリの登録が消える問題: 非機密設定を通常の SharedPreferences に移行し、暗号化ストレージの更新時リセットを回避 - 外部ミニアプリ追加後に即時反映されない問題: `mutableStateListOf` により追加と同時にリスト更新 - いいね・リポストの取り消しが機能しない問題: `react()` / `repost()` の戻り値(イベント ID)を `myLikeEventId` / `myRepostEventId` にセットすることで同一セッション内でのアンドゥを可能に ## [1.3.3] - 2026-03-12 ### Added (Android) - いいね・リポストの取り消し: 2回目のタップで Kind 5 (NIP-09) 削除イベントを送信し、ボタン状態と件数を即時更新 - 通知モーダル リニューアル: アバター右下に種別バッジ(❤️ リアクション / ⚡ Zap / 🔁 リポスト / 返信 / メンション) - 通知の新着ピル: バックグラウンド30秒ポーリングで新着を検知、上から滑り込むアニメーション付きピル - 通知にリポスト(Kind 6)・返信/メンション(Kind 1 #p) を追加 - 複数画像フルスクリーンビューア: スワイプでページ切り替え、ピンチ/ダブルタップズーム、ドット+枚数インジケーター - nostr: bech32 リンク (nevent/nprofile) をカード表示 — 本文中の生テキストを非表示に - カスタム絵文字ピッカー キャッシュファースト: 5分 TTL のインメモリキャッシュ、EmojiPicker / ReactionEmojiPicker で共有 - 画像複数枚投稿を並列アップロードに変更 (web版と同期) - 3枚画像グリッドのレイアウト修正: 左1枚フル高さ + 右2枚スタック ### Fixed (Android) - nevent カードの角が切れる問題: `Surface(shape=…)` に統一し `Modifier.clip` を削除 - 引用投稿でテキストとカードの間に大きな空白が生じる問題: 末尾の余分な改行をトリム - nevent カードタップでプロフィール画面に遷移してしまう問題: カード全体のクリックを削除、著者行のみプロフィール遷移 - カスタム絵文字リアクションを通知一覧でも画像表示に統一 ## [1.3.2] - 2026-03-11 ### Added (Android) - 動画タップでミュート解除: フィードの動画をタップで音声ON/OFF切り替え(右下に🔇/🔊アイコン) - ProofModeバッジ: フィードの動画右上にレベル別バッジを表示 - 🛡 ProofMode(青)= `verified_mobile`、✓ ProofMode(緑)= `verified_web` - ミニアプリに「その他」カテゴリ追加: 外部ミニアプリを分類 - DivineVideoRecorder・ProofModeManager に MPL-2.0 ライセンス表記追加 ### Fixed (Android) - 動画に音声が録音されない問題を修正: `withAudioEnabled()` を常に有効化 - 投稿画面のツールバーがキーボードに隠れる問題を修正 (`imePadding` をツールバー直接に適用) - ミニアプリのURL入力フォームがキーボードに隠れる問題を修正 - フィードの動画秒数表示: ハードコードの "6.3s" から `duration` タグの実際の値に変更 - ProofMode verificationタグ名の誤り修正 (`verification-level` → `verification`) - Kind 34236 投稿成功時に "POST_FAILED" と表示されていたバグを修正 ## [1.3.1] - 2026-03-10 ### Fixed (Android) - 投稿時にアプリが5秒フリーズしてANR(強制終了)する問題を修正 - Rust FFI呼び出し(`createUnsignedEvent` / `publishRawEvent`)をIOスレッドに移動 - URLプレビューでYouTube・Spotifyなど一部URLを開くとクラッシュする問題を修正 - microlink APIレスポンスの`null`フィールドを安全にパースするよう修正 - 画像・動画アップロード処理をIOスレッドに移動、エラーハンドリング強化 - `PostModal` / `EditProfileModal` / `SignUpModal` / `DivineVideoRecorder` - OkHttpClient のタイムアウト設定を追加(接続15秒・読み込み90秒・書き込み120秒) - タイムラインキャッシュの読み書きをIOスレッドで実行するよう修正(ANR防止) ## [1.2.0] - 2026-03-10 ### Fixed (Android) - JNA/UniFFI ProGuardルール欠落によるリリースビルドのクラッシュ・タイムライン未表示を修正 - `com.sun.jna.**` / `uniffi.nurunuru.**` / `rust.nostr.**` を R8 難読化対象外に設定 ## [1.1.0] - 2026-03-09 ### Added (Android) - Rustエンジンによるおすすめタイムライン - Pull-to-refresh・新着投稿ピルUI - ハッシュタグタップ対応 - 外部ミニアプリをWebView(NIP-07署名プロキシ)で開く機能 - バッジ・カスタム絵文字のキャッシュファースト表示 ### Fixed (Android) - ホームタブの投稿・いいね更新が反映されない問題 - タブ切り替え時のスクロール状態保持 ## [1.0.3] - 2025-12-22 ### Changed - Replaced nostr-login library with custom login modal - New login modal with clear method selection: - NIP-07 Browser Extensions (Alby, nos2x) - Nostr Connect / NIP-46 - Read-only mode (npub input) - Local key (nsec input) - Improved login method display in settings (shows specific method) ### Removed - nostr-login dependency (66 packages removed) - Simplified codebase without external login library ### Fixed - Login screen now reliably shows login methods - No more automatic redirects to connect screen ## [1.0.2] - 2025-12-22 ### Changed - Simplified login system: Passkey (primary) + nostr-login (secondary) - Removed direct NIP-07 browser extension login (now handled via nostr-login) - Removed Amber/NIP-55 Android-specific login - nostr-login now handles all alternative login methods: - Nostr Connect (NIP-46 remote signing) - Browser extensions (Alby, nos2x, Nostash) - Local nsec key input - Read-only mode (npub) ### Removed - Android-specific login detection - Direct NIP-07 extension login button ### Fixed - Mobile browser incorrectly showing Android login options ## [1.0.1] - 2025-12-21 ### Added - NIP-55 Amber signer support for Android - Android detection and optimized login flow - nostr-login initialization fix (now loads on demand) ### Changed - Login screen now shows Amber as primary option on Android - Passkey login skipped on Android (requires Digital Asset Links) - Login method display updated for Amber/nostr-login ### Fixed - nostr-login button not responding (initialization timing issue) - signEvent using window.nostr directly when Amber provides it ## [1.0.0] - 2025-12-21 ### Added - Initial release - Timeline with relay/follow mode switching - Fixed header during scroll - Encrypted DM support (NIP-17/44/59) - Like, repost, and Zap functionality - NIP-05 verification badge - Profile badges display (NIP-58) - Custom emoji support (NIP-30) - Follow list management with unfollow - Mute list support (NIP-51) - NIP-50 search capability - Passkey login (Nosskey) - NIP-46 remote signing (nostr-login) - PWA support ### Technical - Request throttling to prevent "too many concurrent REQs" - Multi-relay badge fetching - Profile and follow list caching - Batch profile fetching
  • May 8, 2026 1.4.6
  • May 7, 2026 1.4.5
    # Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [1.4.3] - 2026-03-26 ### Fixed (Android)
    More…
    - PullToRefreshインジケーター(黒丸)がアイドル時に常時表示される問題を修正(HomeScreen・TimelineScreen・UserProfileModal・NotificationModal の4箇所) - 引用投稿モーダルのツールバーが仮想キーボードに隠れる問題を修正(`decorFitsSystemWindows = false`) - 秘密鍵ログイン時にいいね・リポスト操作でクラッシュする問題を修正(Rust FFI 呼び出しを IO スレッドに移動) - 日本語入力中に変換が強制確定される IME バグを修正(composition 中は AnnotatedString 再構築をスキップ) - スクロール時に `fetchProfiles` が `CancellationException` を飲み込んでフォールバックログを出力し続ける問題を修正 - タイムラインのリレー選択ピルがドロップダウン矢印(▼)しか反応しない問題を修正(ピル全体タップ対応) - プロフィールページの投稿一覧にブックマークボタンが表示されない問題を修正 - `queryLocal`・`publishEvent` でメインスレッドブロック(ANR)が発生する問題を修正 ### Added (Android) - 引用投稿モーダルをPost投稿モーダルと統一(マイク音声入力・Content Warning ボタンを追加) - ミニアプリタブにプライバシーポリシーへのリンクを追加 ### Added (Web) - GitHub Pages サイトを `docs/` に追加(アイコン + プライバシーポリシーリンク) - プライバシーポリシーページ(`docs/privacy.html`)を追加 ### Changed - zapstore.yaml の Zap 説明文を実際の動作(クリップボードコピー)に修正 ## [1.4.2] - 2026-03-25 ### Added (Android) - ホームタブのプロフィールヘッダーが投稿スクロールに追従して隠れるコラプシングヘッダーを実装 - ミニアプリタブの見出しも同様にコラプシングヘッダーに対応 - プロフィール画面のバッジを独立した行に移動し、Lightning アドレスの上に配置 ### Changed (Android) - Zap 金額の表記を BIP-177 に準拠した ₿ 記法に統一(ZapModal・通知・トースト・Zap設定すべて) - プロフィール表示名を 22sp・NIP-05 を 16sp に調整、バッジアイコンを 20dp に拡大 ### Changed (docs) - README にスクリーンショット 4 枚を横並びで追加 - README のログイン説明からパスキー(web版のみ)の記述を削除 ## [1.4.1] - 2026-03-22 ### Fixed (Android) - 削除した投稿がアプリ再起動後にホームタブに再表示される問題: 削除済みイベントIDを SharedPreferences に永続保存し、リレーフェッチ・キャッシュ読み込み・ViewModel の3層すべてで除外するよう修正 - Amber 外部署名(NIP-55)でいいね・リアクション時にアプリがフリーズ/ANR になる問題: Rust FFI のブロッキング呼び出し(`publishRawEvent`)と ContentProvider クエリをメインスレッドから IO スレッドに移動 - Amber の ContentProvider 署名が毎回ポップアップになる問題: `getPublicKeyIntent` に `package` extra を追加し Amber の信頼 DB に登録されるよう修正 - トークグループを退出後にキャッシュクリアしても一覧が更新されない問題: `clearStateAfterCacheClear()` でグループ状態を完全リセットしてから再ロードするよう修正、`loadGroups()` の空リスト保護ガードを削除 ## [1.4.0] - 2026-03-21 ### Added (Android) - NIP-EE (MLS) トーク実装: Kind-443 (KeyPackage) / Kind-444 (Welcome) / Kind-445 (GroupMessage) による End-to-End 暗号化グループメッセージ - トークメッセージのキャッシュファースト表示: Rust SQLite ローカル履歴を即時表示し、リレーから差分を非同期更新 - SplashScreen API 導入: `AuthState.Checking` 中はシステムスプラッシュを維持し、起動時の白画面フラッシュを解消 ### Fixed (Android) - トーク一覧のグループ名・トーク画面タイトルが hex 公開鍵になる問題: DM は Rust 内部グループ名を無視し、パートナーのプロフィール名を表示 - トーク一覧が時間経過で消える問題: Rust クライアント未接続時に `fetchMlsGroups()` がキャッシュを返すよう修正、空リストで既存リストを上書きしないよう保護 - トーク開封時にローディングアニメーションがキャッシュより先に表示される問題: メッセージがある場合はスケルトンをスキップ - 起動時の重複 `loadGroups()` 呼び出しを排除 ### Changed (Android) - `NostrRepository` を機能別ファイルに分割 (Timeline / Actions / Notifications / Profiles / Reactions / Talk / Backup / LiveStream) - `NostrCache` と `RecommendationEngine` を `Application.onCreate()` で事前生成し、初回 Compose 測定から SharedPreferences I/O を除外 ## [1.3.9] - 2026-03-21 ### Added (Android) - LINE Seed JP フォントを全体に適用: アプリ全体のフォントを LINE Seed JP (Regular / Bold) に変更 - 投稿リレー選択パネル: 投稿モーダルのツールバーにリレーアイコンを追加、投稿先リレーをチェックボックスで選択可能に - NIP-70 プロテクト対応: 投稿時に `-` タグを付与し、他クライアントによる再共有を防止するオプション - 絵文字事前ロード: ホーム画面起動時に自分の絵文字リストをバックグラウンドでキャッシュ → リアクション長押し時に即表示 - 絵文字設定にお気に入りセクション追加: セット内の絵文字を ♥ タップで個人絵文字リストへ登録・解除 ### Changed (Android) - 絵文字ピッカー: `fetchAndCacheEmojis` を共通関数化、重複フェッチ防止ロジック追加 - 絵文字設定: キャッシュファースト読み込み (EmojiPickerCache 共有) - リアクションピッカー: 自分の絵文字リスト (`myPubkey`) を優先して表示 ### Added (Rust FFI) - `publish_note_with_tags_to_relays`: 指定リレーのみへの投稿を FFI 経由で対応 (engine.rs の `publish_note_to_relays` を呼び出し) ## [1.3.8] - 2026-03-18 ### Added (Android) - リレーライブストリーム: 特定リレー選択中も新着投稿ピルを表示 (EOSE後も WS 接続を維持し kind 1 をリアルタイム受信) - `@メンション` (nostr:npub1/nprofile1) をプロフィールカードからインライン `@ユーザー名` テキストに変更、タップでプロフィールモーダルを表示 ### Fixed (Android) - GLOBALタブ (リレータブ) の新着ピルが表示されない問題: `HorizontalPager` に `beyondBoundsPageCount=1` を設定し、バックグラウンドページの Compose ツリーを維持 - リレー接続タイムアウト・0件取得時に自動解除して通常フィードへ復帰 - 検索モーダルでいいね・リポストが機能しない問題: ViewModel の投稿検索を `searchResults` / `relayPosts` にも拡張 - URLプレビューの OkHttp コネクションリーク修正 (`response.use {}` で確実にクローズ) - ヘッダーのリレーピル内に ▼ ドロップダウンを統合、外部タップで閉じるように修正 ### Changed (Android) - ミニアプリタブのリレー単一選択ラジオボタンを削除 ## [1.3.7] - 2026-03-15 ### Added (Android) - 高度検索コマンド対応 (NIP-50 + 標準フィルタ + クライアント側後処理): - `#タグ` — ハッシュタグで絞り込み (`#t` フィルタ) - `from:npub1...` / `from:user@domain` — 投稿者を指定 (NIP-05自動解決) - `since:YYYY-MM-DD` / `until:YYYY-MM-DD` — 期間指定 - `-除外語` — キーワード除外 (日本語対応) - `"完全一致フレーズ"` — 完全一致フィルタ - `filter:image` / `filter:video` / `filter:link` — メディア種別絞り込み - 複数コマンドの組み合わせ対応 (`#japan since:2025-01-01 -spam` など) - 検索画面にコマンド一覧を常時表示、タップで検索バーへ追記(カーソルは末尾に移動) - NIP-50検索の `since` 1時間固定制限を撤廃、全期間対象に ### Changed (Android) - 検索バーのプレースホルダーをコマンド表示に変更 (`#タグ from: since: until: -除外`) ## [1.3.6] - 2026-03-15 ### Added (Android) - バッジアワード (kind 8) 通知: バッジを授与されると通知一覧に🏅表示 - リアクション通知を「リアクション (👍)」と「絵文字リアクション」に分離、それぞれ個別にON/OFF可能 - キャッシュ設定にプロフィールバッジ (kind 8, 30009) の項目を追加 - キャッシュ設定の全デフォルト保持期間を1日に統一 ### Changed (Android) - おすすめタブ → リレータブ: アルゴリズム・スコアリングを撤廃し、メインリレーの最新 kind 1 を時系列表示。ミュートのみ適用。 - 通知モーダルのヘッダー右端に⚙設定アイコンを追加、種別ごとのON/OFFをモーダル内で完結 - 通知ライブポーリングを10秒間隔に短縮、新着ピル表示に対応 - タイムラインのローディングアニメーションをシマースケルトンに変更 (旧: バウンスドット) - リレータブの新着ピル閾値を3件に設定、タップで先頭に挿入 (再フェッチなし) - ミニアプリ「リレー設定」: NIP-65表記を整理、手動URL入力欄と「自分のリレーリストを読み込む」ボタンを追加 ## [1.3.5] - 2026-03-13 ### Fixed (Android) - 外部ミニアプリで画像などのファイルアップロードができない問題: `WebChromeClient.onShowFileChooser()` を実装し、ファイルピッカーを起動可能に - 外部ミニアプリ表示中に下部タブバーが残る問題: ミニアプリオープン中はタブバーをスライドアウト非表示に - 外部ミニアプリ内リンク遷移後に戻れない問題: ← ボタンが WebView 内履歴を遡るように変更、✕ ボタンでいつでもミニアプリを閉じられるように追加 ## [1.3.4] - 2026-03-13 ### Added (Android) - 外部ミニアプリの編集・削除機能: 長押しで BottomSheet が開き、名前・URL を編集、または削除が可能 ### Fixed (Android) - アップデート時に外部ミニアプリの登録が消える問題: 非機密設定を通常の SharedPreferences に移行し、暗号化ストレージの更新時リセットを回避 - 外部ミニアプリ追加後に即時反映されない問題: `mutableStateListOf` により追加と同時にリスト更新 - いいね・リポストの取り消しが機能しない問題: `react()` / `repost()` の戻り値(イベント ID)を `myLikeEventId` / `myRepostEventId` にセットすることで同一セッション内でのアンドゥを可能に ## [1.3.3] - 2026-03-12 ### Added (Android) - いいね・リポストの取り消し: 2回目のタップで Kind 5 (NIP-09) 削除イベントを送信し、ボタン状態と件数を即時更新 - 通知モーダル リニューアル: アバター右下に種別バッジ(❤️ リアクション / ⚡ Zap / 🔁 リポスト / 返信 / メンション) - 通知の新着ピル: バックグラウンド30秒ポーリングで新着を検知、上から滑り込むアニメーション付きピル - 通知にリポスト(Kind 6)・返信/メンション(Kind 1 #p) を追加 - 複数画像フルスクリーンビューア: スワイプでページ切り替え、ピンチ/ダブルタップズーム、ドット+枚数インジケーター - nostr: bech32 リンク (nevent/nprofile) をカード表示 — 本文中の生テキストを非表示に - カスタム絵文字ピッカー キャッシュファースト: 5分 TTL のインメモリキャッシュ、EmojiPicker / ReactionEmojiPicker で共有 - 画像複数枚投稿を並列アップロードに変更 (web版と同期) - 3枚画像グリッドのレイアウト修正: 左1枚フル高さ + 右2枚スタック ### Fixed (Android) - nevent カードの角が切れる問題: `Surface(shape=…)` に統一し `Modifier.clip` を削除 - 引用投稿でテキストとカードの間に大きな空白が生じる問題: 末尾の余分な改行をトリム - nevent カードタップでプロフィール画面に遷移してしまう問題: カード全体のクリックを削除、著者行のみプロフィール遷移 - カスタム絵文字リアクションを通知一覧でも画像表示に統一 ## [1.3.2] - 2026-03-11 ### Added (Android) - 動画タップでミュート解除: フィードの動画をタップで音声ON/OFF切り替え(右下に🔇/🔊アイコン) - ProofModeバッジ: フィードの動画右上にレベル別バッジを表示 - 🛡 ProofMode(青)= `verified_mobile`、✓ ProofMode(緑)= `verified_web` - ミニアプリに「その他」カテゴリ追加: 外部ミニアプリを分類 - DivineVideoRecorder・ProofModeManager に MPL-2.0 ライセンス表記追加 ### Fixed (Android) - 動画に音声が録音されない問題を修正: `withAudioEnabled()` を常に有効化 - 投稿画面のツールバーがキーボードに隠れる問題を修正 (`imePadding` をツールバー直接に適用) - ミニアプリのURL入力フォームがキーボードに隠れる問題を修正 - フィードの動画秒数表示: ハードコードの "6.3s" から `duration` タグの実際の値に変更 - ProofMode verificationタグ名の誤り修正 (`verification-level` → `verification`) - Kind 34236 投稿成功時に "POST_FAILED" と表示されていたバグを修正 ## [1.3.1] - 2026-03-10 ### Fixed (Android) - 投稿時にアプリが5秒フリーズしてANR(強制終了)する問題を修正 - Rust FFI呼び出し(`createUnsignedEvent` / `publishRawEvent`)をIOスレッドに移動 - URLプレビューでYouTube・Spotifyなど一部URLを開くとクラッシュする問題を修正 - microlink APIレスポンスの`null`フィールドを安全にパースするよう修正 - 画像・動画アップロード処理をIOスレッドに移動、エラーハンドリング強化 - `PostModal` / `EditProfileModal` / `SignUpModal` / `DivineVideoRecorder` - OkHttpClient のタイムアウト設定を追加(接続15秒・読み込み90秒・書き込み120秒) - タイムラインキャッシュの読み書きをIOスレッドで実行するよう修正(ANR防止) ## [1.2.0] - 2026-03-10 ### Fixed (Android) - JNA/UniFFI ProGuardルール欠落によるリリースビルドのクラッシュ・タイムライン未表示を修正 - `com.sun.jna.**` / `uniffi.nurunuru.**` / `rust.nostr.**` を R8 難読化対象外に設定 ## [1.1.0] - 2026-03-09 ### Added (Android) - Rustエンジンによるおすすめタイムライン - Pull-to-refresh・新着投稿ピルUI - ハッシュタグタップ対応 - 外部ミニアプリをWebView(NIP-07署名プロキシ)で開く機能 - バッジ・カスタム絵文字のキャッシュファースト表示 ### Fixed (Android) - ホームタブの投稿・いいね更新が反映されない問題 - タブ切り替え時のスクロール状態保持 ## [1.0.3] - 2025-12-22 ### Changed - Replaced nostr-login library with custom login modal - New login modal with clear method selection: - NIP-07 Browser Extensions (Alby, nos2x) - Nostr Connect / NIP-46 - Read-only mode (npub input) - Local key (nsec input) - Improved login method display in settings (shows specific method) ### Removed - nostr-login dependency (66 packages removed) - Simplified codebase without external login library ### Fixed - Login screen now reliably shows login methods - No more automatic redirects to connect screen ## [1.0.2] - 2025-12-22 ### Changed - Simplified login system: Passkey (primary) + nostr-login (secondary) - Removed direct NIP-07 browser extension login (now handled via nostr-login) - Removed Amber/NIP-55 Android-specific login - nostr-login now handles all alternative login methods: - Nostr Connect (NIP-46 remote signing) - Browser extensions (Alby, nos2x, Nostash) - Local nsec key input - Read-only mode (npub) ### Removed - Android-specific login detection - Direct NIP-07 extension login button ### Fixed - Mobile browser incorrectly showing Android login options ## [1.0.1] - 2025-12-21 ### Added - NIP-55 Amber signer support for Android - Android detection and optimized login flow - nostr-login initialization fix (now loads on demand) ### Changed - Login screen now shows Amber as primary option on Android - Passkey login skipped on Android (requires Digital Asset Links) - Login method display updated for Amber/nostr-login ### Fixed - nostr-login button not responding (initialization timing issue) - signEvent using window.nostr directly when Amber provides it ## [1.0.0] - 2025-12-21 ### Added - Initial release - Timeline with relay/follow mode switching - Fixed header during scroll - Encrypted DM support (NIP-17/44/59) - Like, repost, and Zap functionality - NIP-05 verification badge - Profile badges display (NIP-58) - Custom emoji support (NIP-30) - Follow list management with unfollow - Mute list support (NIP-51) - NIP-50 search capability - Passkey login (Nosskey) - NIP-46 remote signing (nostr-login) - PWA support ### Technical - Request throttling to prevent "too many concurrent REQs" - Multi-relay badge fetching - Profile and follow list caching - Batch profile fetching
  • May 7, 2026 1.4.4
    # Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [1.4.3] - 2026-03-26 ### Fixed (Android)
    More…
    - PullToRefreshインジケーター(黒丸)がアイドル時に常時表示される問題を修正(HomeScreen・TimelineScreen・UserProfileModal・NotificationModal の4箇所) - 引用投稿モーダルのツールバーが仮想キーボードに隠れる問題を修正(`decorFitsSystemWindows = false`) - 秘密鍵ログイン時にいいね・リポスト操作でクラッシュする問題を修正(Rust FFI 呼び出しを IO スレッドに移動) - 日本語入力中に変換が強制確定される IME バグを修正(composition 中は AnnotatedString 再構築をスキップ) - スクロール時に `fetchProfiles` が `CancellationException` を飲み込んでフォールバックログを出力し続ける問題を修正 - タイムラインのリレー選択ピルがドロップダウン矢印(▼)しか反応しない問題を修正(ピル全体タップ対応) - プロフィールページの投稿一覧にブックマークボタンが表示されない問題を修正 - `queryLocal`・`publishEvent` でメインスレッドブロック(ANR)が発生する問題を修正 ### Added (Android) - 引用投稿モーダルをPost投稿モーダルと統一(マイク音声入力・Content Warning ボタンを追加) - ミニアプリタブにプライバシーポリシーへのリンクを追加 ### Added (Web) - GitHub Pages サイトを `docs/` に追加(アイコン + プライバシーポリシーリンク) - プライバシーポリシーページ(`docs/privacy.html`)を追加 ### Changed - zapstore.yaml の Zap 説明文を実際の動作(クリップボードコピー)に修正 ## [1.4.2] - 2026-03-25 ### Added (Android) - ホームタブのプロフィールヘッダーが投稿スクロールに追従して隠れるコラプシングヘッダーを実装 - ミニアプリタブの見出しも同様にコラプシングヘッダーに対応 - プロフィール画面のバッジを独立した行に移動し、Lightning アドレスの上に配置 ### Changed (Android) - Zap 金額の表記を BIP-177 に準拠した ₿ 記法に統一(ZapModal・通知・トースト・Zap設定すべて) - プロフィール表示名を 22sp・NIP-05 を 16sp に調整、バッジアイコンを 20dp に拡大 ### Changed (docs) - README にスクリーンショット 4 枚を横並びで追加 - README のログイン説明からパスキー(web版のみ)の記述を削除 ## [1.4.1] - 2026-03-22 ### Fixed (Android) - 削除した投稿がアプリ再起動後にホームタブに再表示される問題: 削除済みイベントIDを SharedPreferences に永続保存し、リレーフェッチ・キャッシュ読み込み・ViewModel の3層すべてで除外するよう修正 - Amber 外部署名(NIP-55)でいいね・リアクション時にアプリがフリーズ/ANR になる問題: Rust FFI のブロッキング呼び出し(`publishRawEvent`)と ContentProvider クエリをメインスレッドから IO スレッドに移動 - Amber の ContentProvider 署名が毎回ポップアップになる問題: `getPublicKeyIntent` に `package` extra を追加し Amber の信頼 DB に登録されるよう修正 - トークグループを退出後にキャッシュクリアしても一覧が更新されない問題: `clearStateAfterCacheClear()` でグループ状態を完全リセットしてから再ロードするよう修正、`loadGroups()` の空リスト保護ガードを削除 ## [1.4.0] - 2026-03-21 ### Added (Android) - NIP-EE (MLS) トーク実装: Kind-443 (KeyPackage) / Kind-444 (Welcome) / Kind-445 (GroupMessage) による End-to-End 暗号化グループメッセージ - トークメッセージのキャッシュファースト表示: Rust SQLite ローカル履歴を即時表示し、リレーから差分を非同期更新 - SplashScreen API 導入: `AuthState.Checking` 中はシステムスプラッシュを維持し、起動時の白画面フラッシュを解消 ### Fixed (Android) - トーク一覧のグループ名・トーク画面タイトルが hex 公開鍵になる問題: DM は Rust 内部グループ名を無視し、パートナーのプロフィール名を表示 - トーク一覧が時間経過で消える問題: Rust クライアント未接続時に `fetchMlsGroups()` がキャッシュを返すよう修正、空リストで既存リストを上書きしないよう保護 - トーク開封時にローディングアニメーションがキャッシュより先に表示される問題: メッセージがある場合はスケルトンをスキップ - 起動時の重複 `loadGroups()` 呼び出しを排除 ### Changed (Android) - `NostrRepository` を機能別ファイルに分割 (Timeline / Actions / Notifications / Profiles / Reactions / Talk / Backup / LiveStream) - `NostrCache` と `RecommendationEngine` を `Application.onCreate()` で事前生成し、初回 Compose 測定から SharedPreferences I/O を除外 ## [1.3.9] - 2026-03-21 ### Added (Android) - LINE Seed JP フォントを全体に適用: アプリ全体のフォントを LINE Seed JP (Regular / Bold) に変更 - 投稿リレー選択パネル: 投稿モーダルのツールバーにリレーアイコンを追加、投稿先リレーをチェックボックスで選択可能に - NIP-70 プロテクト対応: 投稿時に `-` タグを付与し、他クライアントによる再共有を防止するオプション - 絵文字事前ロード: ホーム画面起動時に自分の絵文字リストをバックグラウンドでキャッシュ → リアクション長押し時に即表示 - 絵文字設定にお気に入りセクション追加: セット内の絵文字を ♥ タップで個人絵文字リストへ登録・解除 ### Changed (Android) - 絵文字ピッカー: `fetchAndCacheEmojis` を共通関数化、重複フェッチ防止ロジック追加 - 絵文字設定: キャッシュファースト読み込み (EmojiPickerCache 共有) - リアクションピッカー: 自分の絵文字リスト (`myPubkey`) を優先して表示 ### Added (Rust FFI) - `publish_note_with_tags_to_relays`: 指定リレーのみへの投稿を FFI 経由で対応 (engine.rs の `publish_note_to_relays` を呼び出し) ## [1.3.8] - 2026-03-18 ### Added (Android) - リレーライブストリーム: 特定リレー選択中も新着投稿ピルを表示 (EOSE後も WS 接続を維持し kind 1 をリアルタイム受信) - `@メンション` (nostr:npub1/nprofile1) をプロフィールカードからインライン `@ユーザー名` テキストに変更、タップでプロフィールモーダルを表示 ### Fixed (Android) - GLOBALタブ (リレータブ) の新着ピルが表示されない問題: `HorizontalPager` に `beyondBoundsPageCount=1` を設定し、バックグラウンドページの Compose ツリーを維持 - リレー接続タイムアウト・0件取得時に自動解除して通常フィードへ復帰 - 検索モーダルでいいね・リポストが機能しない問題: ViewModel の投稿検索を `searchResults` / `relayPosts` にも拡張 - URLプレビューの OkHttp コネクションリーク修正 (`response.use {}` で確実にクローズ) - ヘッダーのリレーピル内に ▼ ドロップダウンを統合、外部タップで閉じるように修正 ### Changed (Android) - ミニアプリタブのリレー単一選択ラジオボタンを削除 ## [1.3.7] - 2026-03-15 ### Added (Android) - 高度検索コマンド対応 (NIP-50 + 標準フィルタ + クライアント側後処理): - `#タグ` — ハッシュタグで絞り込み (`#t` フィルタ) - `from:npub1...` / `from:user@domain` — 投稿者を指定 (NIP-05自動解決) - `since:YYYY-MM-DD` / `until:YYYY-MM-DD` — 期間指定 - `-除外語` — キーワード除外 (日本語対応) - `"完全一致フレーズ"` — 完全一致フィルタ - `filter:image` / `filter:video` / `filter:link` — メディア種別絞り込み - 複数コマンドの組み合わせ対応 (`#japan since:2025-01-01 -spam` など) - 検索画面にコマンド一覧を常時表示、タップで検索バーへ追記(カーソルは末尾に移動) - NIP-50検索の `since` 1時間固定制限を撤廃、全期間対象に ### Changed (Android) - 検索バーのプレースホルダーをコマンド表示に変更 (`#タグ from: since: until: -除外`) ## [1.3.6] - 2026-03-15 ### Added (Android) - バッジアワード (kind 8) 通知: バッジを授与されると通知一覧に🏅表示 - リアクション通知を「リアクション (👍)」と「絵文字リアクション」に分離、それぞれ個別にON/OFF可能 - キャッシュ設定にプロフィールバッジ (kind 8, 30009) の項目を追加 - キャッシュ設定の全デフォルト保持期間を1日に統一 ### Changed (Android) - おすすめタブ → リレータブ: アルゴリズム・スコアリングを撤廃し、メインリレーの最新 kind 1 を時系列表示。ミュートのみ適用。 - 通知モーダルのヘッダー右端に⚙設定アイコンを追加、種別ごとのON/OFFをモーダル内で完結 - 通知ライブポーリングを10秒間隔に短縮、新着ピル表示に対応 - タイムラインのローディングアニメーションをシマースケルトンに変更 (旧: バウンスドット) - リレータブの新着ピル閾値を3件に設定、タップで先頭に挿入 (再フェッチなし) - ミニアプリ「リレー設定」: NIP-65表記を整理、手動URL入力欄と「自分のリレーリストを読み込む」ボタンを追加 ## [1.3.5] - 2026-03-13 ### Fixed (Android) - 外部ミニアプリで画像などのファイルアップロードができない問題: `WebChromeClient.onShowFileChooser()` を実装し、ファイルピッカーを起動可能に - 外部ミニアプリ表示中に下部タブバーが残る問題: ミニアプリオープン中はタブバーをスライドアウト非表示に - 外部ミニアプリ内リンク遷移後に戻れない問題: ← ボタンが WebView 内履歴を遡るように変更、✕ ボタンでいつでもミニアプリを閉じられるように追加 ## [1.3.4] - 2026-03-13 ### Added (Android) - 外部ミニアプリの編集・削除機能: 長押しで BottomSheet が開き、名前・URL を編集、または削除が可能 ### Fixed (Android) - アップデート時に外部ミニアプリの登録が消える問題: 非機密設定を通常の SharedPreferences に移行し、暗号化ストレージの更新時リセットを回避 - 外部ミニアプリ追加後に即時反映されない問題: `mutableStateListOf` により追加と同時にリスト更新 - いいね・リポストの取り消しが機能しない問題: `react()` / `repost()` の戻り値(イベント ID)を `myLikeEventId` / `myRepostEventId` にセットすることで同一セッション内でのアンドゥを可能に ## [1.3.3] - 2026-03-12 ### Added (Android) - いいね・リポストの取り消し: 2回目のタップで Kind 5 (NIP-09) 削除イベントを送信し、ボタン状態と件数を即時更新 - 通知モーダル リニューアル: アバター右下に種別バッジ(❤️ リアクション / ⚡ Zap / 🔁 リポスト / 返信 / メンション) - 通知の新着ピル: バックグラウンド30秒ポーリングで新着を検知、上から滑り込むアニメーション付きピル - 通知にリポスト(Kind 6)・返信/メンション(Kind 1 #p) を追加 - 複数画像フルスクリーンビューア: スワイプでページ切り替え、ピンチ/ダブルタップズーム、ドット+枚数インジケーター - nostr: bech32 リンク (nevent/nprofile) をカード表示 — 本文中の生テキストを非表示に - カスタム絵文字ピッカー キャッシュファースト: 5分 TTL のインメモリキャッシュ、EmojiPicker / ReactionEmojiPicker で共有 - 画像複数枚投稿を並列アップロードに変更 (web版と同期) - 3枚画像グリッドのレイアウト修正: 左1枚フル高さ + 右2枚スタック ### Fixed (Android) - nevent カードの角が切れる問題: `Surface(shape=…)` に統一し `Modifier.clip` を削除 - 引用投稿でテキストとカードの間に大きな空白が生じる問題: 末尾の余分な改行をトリム - nevent カードタップでプロフィール画面に遷移してしまう問題: カード全体のクリックを削除、著者行のみプロフィール遷移 - カスタム絵文字リアクションを通知一覧でも画像表示に統一 ## [1.3.2] - 2026-03-11 ### Added (Android) - 動画タップでミュート解除: フィードの動画をタップで音声ON/OFF切り替え(右下に🔇/🔊アイコン) - ProofModeバッジ: フィードの動画右上にレベル別バッジを表示 - 🛡 ProofMode(青)= `verified_mobile`、✓ ProofMode(緑)= `verified_web` - ミニアプリに「その他」カテゴリ追加: 外部ミニアプリを分類 - DivineVideoRecorder・ProofModeManager に MPL-2.0 ライセンス表記追加 ### Fixed (Android) - 動画に音声が録音されない問題を修正: `withAudioEnabled()` を常に有効化 - 投稿画面のツールバーがキーボードに隠れる問題を修正 (`imePadding` をツールバー直接に適用) - ミニアプリのURL入力フォームがキーボードに隠れる問題を修正 - フィードの動画秒数表示: ハードコードの "6.3s" から `duration` タグの実際の値に変更 - ProofMode verificationタグ名の誤り修正 (`verification-level` → `verification`) - Kind 34236 投稿成功時に "POST_FAILED" と表示されていたバグを修正 ## [1.3.1] - 2026-03-10 ### Fixed (Android) - 投稿時にアプリが5秒フリーズしてANR(強制終了)する問題を修正 - Rust FFI呼び出し(`createUnsignedEvent` / `publishRawEvent`)をIOスレッドに移動 - URLプレビューでYouTube・Spotifyなど一部URLを開くとクラッシュする問題を修正 - microlink APIレスポンスの`null`フィールドを安全にパースするよう修正 - 画像・動画アップロード処理をIOスレッドに移動、エラーハンドリング強化 - `PostModal` / `EditProfileModal` / `SignUpModal` / `DivineVideoRecorder` - OkHttpClient のタイムアウト設定を追加(接続15秒・読み込み90秒・書き込み120秒) - タイムラインキャッシュの読み書きをIOスレッドで実行するよう修正(ANR防止) ## [1.2.0] - 2026-03-10 ### Fixed (Android) - JNA/UniFFI ProGuardルール欠落によるリリースビルドのクラッシュ・タイムライン未表示を修正 - `com.sun.jna.**` / `uniffi.nurunuru.**` / `rust.nostr.**` を R8 難読化対象外に設定 ## [1.1.0] - 2026-03-09 ### Added (Android) - Rustエンジンによるおすすめタイムライン - Pull-to-refresh・新着投稿ピルUI - ハッシュタグタップ対応 - 外部ミニアプリをWebView(NIP-07署名プロキシ)で開く機能 - バッジ・カスタム絵文字のキャッシュファースト表示 ### Fixed (Android) - ホームタブの投稿・いいね更新が反映されない問題 - タブ切り替え時のスクロール状態保持 ## [1.0.3] - 2025-12-22 ### Changed - Replaced nostr-login library with custom login modal - New login modal with clear method selection: - NIP-07 Browser Extensions (Alby, nos2x) - Nostr Connect / NIP-46 - Read-only mode (npub input) - Local key (nsec input) - Improved login method display in settings (shows specific method) ### Removed - nostr-login dependency (66 packages removed) - Simplified codebase without external login library ### Fixed - Login screen now reliably shows login methods - No more automatic redirects to connect screen ## [1.0.2] - 2025-12-22 ### Changed - Simplified login system: Passkey (primary) + nostr-login (secondary) - Removed direct NIP-07 browser extension login (now handled via nostr-login) - Removed Amber/NIP-55 Android-specific login - nostr-login now handles all alternative login methods: - Nostr Connect (NIP-46 remote signing) - Browser extensions (Alby, nos2x, Nostash) - Local nsec key input - Read-only mode (npub) ### Removed - Android-specific login detection - Direct NIP-07 extension login button ### Fixed - Mobile browser incorrectly showing Android login options ## [1.0.1] - 2025-12-21 ### Added - NIP-55 Amber signer support for Android - Android detection and optimized login flow - nostr-login initialization fix (now loads on demand) ### Changed - Login screen now shows Amber as primary option on Android - Passkey login skipped on Android (requires Digital Asset Links) - Login method display updated for Amber/nostr-login ### Fixed - nostr-login button not responding (initialization timing issue) - signEvent using window.nostr directly when Amber provides it ## [1.0.0] - 2025-12-21 ### Added - Initial release - Timeline with relay/follow mode switching - Fixed header during scroll - Encrypted DM support (NIP-17/44/59) - Like, repost, and Zap functionality - NIP-05 verification badge - Profile badges display (NIP-58) - Custom emoji support (NIP-30) - Follow list management with unfollow - Mute list support (NIP-51) - NIP-50 search capability - Passkey login (Nosskey) - NIP-46 remote signing (nostr-login) - PWA support ### Technical - Request throttling to prevent "too many concurrent REQs" - Multi-relay badge fetching - Profile and follow list caching - Batch profile fetching
  • Mar 25, 2026 1.4.3
    ### Fixed (Android) - PullToRefreshインジケーター(黒丸)がアイドル時に常時表示される問題を修正(HomeScreen・TimelineScreen・UserProfileModal・NotificationModal の4箇所) - 引用投稿モーダルのツールバーが仮想キーボードに隠れる問題を修正(`decorFitsSystemWindows = false`) - 秘密鍵ログイン時にいいね・リポスト操作でクラッシュする問題を修正(Rust FFI 呼び出しを IO スレッドに移動) - 日本語入力中に変換が強制確定される IME バグを修正(composition 中は AnnotatedString 再構築をスキップ) - スクロール時に `fetchProfiles` が `CancellationException` を飲み込んでフォールバックログを出力し続ける問題を修正 - タイムラインのリレー選択ピルがドロップダウン矢印(▼)しか反応しない問題を修正(ピル全体タップ対応) - プロフィールページの投稿一覧にブックマークボタンが表示されない問題を修正 - `queryLocal`・`publishEvent` でメインスレッドブロック(ANR)が発生する問題を修正
    More…
    ### Added (Android) - 引用投稿モーダルをPost投稿モーダルと統一(マイク音声入力・Content Warning ボタンを追加) - ミニアプリタブにプライバシーポリシーへのリンクを追加 ### Added (Web) - GitHub Pages サイトを `docs/` に追加(アイコン + プライバシーポリシーリンク) - プライバシーポリシーページ(`docs/privacy.html`)を追加 ### Changed - zapstore.yaml の Zap 説明文を実際の動作(クリップボードコピー)に修正
  • Mar 25, 2026 1.4.2
    ### Added (Android) - ホームタブのプロフィールヘッダーが投稿スクロールに追従して隠れるコラプシングヘッダーを実装 - ミニアプリタブの見出しも同様にコラプシングヘッダーに対応 - プロフィール画面のバッジを独立した行に移動し、Lightning アドレスの上に配置 ### Changed (Android) - Zap 金額の表記を BIP-177 に準拠した ₿ 記法に統一(ZapModal・通知・トースト・Zap設定すべて) - プロフィール表示名を 22sp・NIP-05 を 16sp に調整、バッジアイコンを 20dp に拡大 ### Changed (docs)
    More…
    - README にスクリーンショット 4 枚を横並びで追加 - README のログイン説明からパスキー(web版のみ)の記述を削除
  • Mar 21, 2026 1.4.1
    ### Fixed (Android) - 削除した投稿がアプリ再起動後にホームタブに再表示される問題: 削除済みイベントIDを SharedPreferences に永続保存し、リレーフェッチ・キャッシュ読み込み・ViewModel の3層すべてで除外するよう修正 - Amber 外部署名(NIP-55)でいいね・リアクション時にアプリがフリーズ/ANR になる問題: Rust FFI のブロッキング呼び出し(`publishRawEvent`)と ContentProvider クエリをメインスレッドから IO スレッドに移動 - Amber の ContentProvider 署名が毎回ポップアップになる問題: `getPublicKeyIntent` に `package` extra を追加し Amber の信頼 DB に登録されるよう修正 - トークグループを退出後にキャッシュクリアしても一覧が更新されない問題: `clearStateAfterCacheClear()` でグループ状態を完全リセットしてから再ロードするよう修正、`loadGroups()` の空リスト保護ガードを削除
  • Mar 21, 2026 1.4.0
    ### Added (Android) - NIP-EE (MLS) トーク実装: Kind-443 (KeyPackage) / Kind-444 (Welcome) / Kind-445 (GroupMessage) による End-to-End 暗号化グループメッセージ - トークメッセージのキャッシュファースト表示: Rust SQLite ローカル履歴を即時表示し、リレーから差分を非同期更新 - SplashScreen API 導入: `AuthState.Checking` 中はシステムスプラッシュを維持し、起動時の白画面フラッシュを解消 ### Fixed (Android) - トーク一覧のグループ名・トーク画面タイトルが hex 公開鍵になる問題: DM は Rust 内部グループ名を無視し、パートナーのプロフィール名を表示 - トーク一覧が時間経過で消える問題: Rust クライアント未接続時に `fetchMlsGroups()` がキャッシュを返すよう修正、空リストで既存リストを上書きしないよう保護 - トーク開封時にローディングアニメーションがキャッシュより先に表示される問題: メッセージがある場合はスケルトンをスキップ - 起動時の重複 `loadGroups()` 呼び出しを排除
    More…
    ### Changed (Android) - `NostrRepository` を機能別ファイルに分割 (Timeline / Actions / Notifications / Profiles / Reactions / Talk / Backup / LiveStream) - `NostrCache` と `RecommendationEngine` を `Application.onCreate()` で事前生成し、初回 Compose 測定から SharedPreferences I/O を除外
  • Mar 20, 2026 1.3.9
    ### Added (Android) - LINE Seed JP フォントを全体に適用: アプリ全体のフォントを LINE Seed JP (Regular / Bold) に変更 - 投稿リレー選択パネル: 投稿モーダルのツールバーにリレーアイコンを追加、投稿先リレーをチェックボックスで選択可能に - NIP-70 プロテクト対応: 投稿時に `-` タグを付与し、他クライアントによる再共有を防止するオプション - 絵文字事前ロード: ホーム画面起動時に自分の絵文字リストをバックグラウンドでキャッシュ → リアクション長押し時に即表示 - 絵文字設定にお気に入りセクション追加: セット内の絵文字を ♥ タップで個人絵文字リストへ登録・解除 ### Changed (Android) - 絵文字ピッカー: `fetchAndCacheEmojis` を共通関数化、重複フェッチ防止ロジック追加 - 絵文字設定: キャッシュファースト読み込み (EmojiPickerCache 共有)
    More…
    - リアクションピッカー: 自分の絵文字リスト (`myPubkey`) を優先して表示 ### Added (Rust FFI) - `publish_note_with_tags_to_relays`: 指定リレーのみへの投稿を FFI 経由で対応 (engine.rs の `publish_note_to_relays` を呼び出し)
  • Mar 17, 2026 1.3.8
    ### Added (Android) - リレーライブストリーム: 特定リレー選択中も新着投稿ピルを表示 (EOSE後も WS 接続を維持し kind 1 をリアルタイム受信) - `@メンション` (nostr:npub1/nprofile1) をプロフィールカードからインライン `@ユーザー名` テキストに変更、タップでプロフィールモーダルを表示 ### Fixed (Android) - GLOBALタブ (リレータブ) の新着ピルが表示されない問題: `HorizontalPager` に `beyondBoundsPageCount=1` を設定し、バックグラウンドページの Compose ツリーを維持 - リレー接続タイムアウト・0件取得時に自動解除して通常フィードへ復帰 - 検索モーダルでいいね・リポストが機能しない問題: ViewModel の投稿検索を `searchResults` / `relayPosts` にも拡張 - URLプレビューの OkHttp コネクションリーク修正 (`response.use {}` で確実にクローズ) - ヘッダーのリレーピル内に ▼ ドロップダウンを統合、外部タップで閉じるように修正
    More…
    ### Changed (Android) - ミニアプリタブのリレー単一選択ラジオボタンを削除
  • Mar 14, 2026 1.3.7
    ### Added (Android) - 高度検索コマンド対応 (NIP-50 + 標準フィルタ + クライアント側後処理): - `#タグ` — ハッシュタグで絞り込み (`#t` フィルタ) - `from:npub1...` / `from:user@domain` — 投稿者を指定 (NIP-05自動解決) - `since:YYYY-MM-DD` / `until:YYYY-MM-DD` — 期間指定 - `-除外語` — キーワード除外 (日本語対応) - `"完全一致フレーズ"` — 完全一致フィルタ - `filter:image` / `filter:video` / `filter:link` — メディア種別絞り込み - 複数コマンドの組み合わせ対応 (`#japan since:2025-01-01 -spam` など) - 検索画面にコマンド一覧を常時表示、タップで検索バーへ追記(カーソルは末尾に移動)
    More…
    - NIP-50検索の `since` 1時間固定制限を撤廃、全期間対象に ### Changed (Android) - 検索バーのプレースホルダーをコマンド表示に変更 (`#タグ from: since: until: -除外`)
  • Mar 14, 2026 1.3.6
    ### Added (Android) - バッジアワード (kind 8) 通知: バッジを授与されると通知一覧に🏅表示 - リアクション通知を「リアクション (👍)」と「絵文字リアクション」に分離、それぞれ個別にON/OFF可能 - キャッシュ設定にプロフィールバッジ (kind 8, 30009) の項目を追加 - キャッシュ設定の全デフォルト保持期間を1日に統一 ### Changed (Android) - おすすめタブ → リレータブ: アルゴリズム・スコアリングを撤廃し、メインリレーの最新 kind 1 を時系列表示。ミュートのみ適用。 - 通知モーダルのヘッダー右端に⚙設定アイコンを追加、種別ごとのON/OFFをモーダル内で完結 - 通知ライブポーリングを10秒間隔に短縮、新着ピル表示に対応
    More…
    - タイムラインのローディングアニメーションをシマースケルトンに変更 (旧: バウンスドット) - リレータブの新着ピル閾値を3件に設定、タップで先頭に挿入 (再フェッチなし) - ミニアプリ「リレー設定」: NIP-65表記を整理、手動URL入力欄と「自分のリレーリストを読み込む」ボタンを追加
  • Mar 13, 2026 1.3.5
    ### Fixed (Android) - 外部ミニアプリで画像などのファイルアップロードができない問題: `WebChromeClient.onShowFileChooser()` を実装し、ファイルピッカーを起動可能に - 外部ミニアプリ表示中に下部タブバーが残る問題: ミニアプリオープン中はタブバーをスライドアウト非表示に - 外部ミニアプリ内リンク遷移後に戻れない問題: ← ボタンが WebView 内履歴を遡るように変更、✕ ボタンでいつでもミニアプリを閉じられるように追加
  • Mar 12, 2026 1.3.4
    ### Added (Android) - 外部ミニアプリの編集・削除機能: 長押しで BottomSheet が開き、名前・URL を編集、または削除が可能 ### Fixed (Android) - アップデート時に外部ミニアプリの登録が消える問題: 非機密設定を通常の SharedPreferences に移行し、暗号化ストレージの更新時リセットを回避 - 外部ミニアプリ追加後に即時反映されない問題: `mutableStateListOf` により追加と同時にリスト更新 - いいね・リポストの取り消しが機能しない問題: `react()` / `repost()` の戻り値(イベント ID)を `myLikeEventId` / `myRepostEventId` にセットすることで同一セッション内でのアンドゥを可能に
  • Mar 11, 2026 1.3.3
    ### Added (Android) - いいね・リポストの取り消し: 2回目のタップで Kind 5 (NIP-09) 削除イベントを送信し、ボタン状態と件数を即時更新 - 通知モーダル リニューアル: アバター右下に種別バッジ(❤️ リアクション / ⚡ Zap / 🔁 リポスト / 返信 / メンション) - 通知の新着ピル: バックグラウンド30秒ポーリングで新着を検知、上から滑り込むアニメーション付きピル - 通知にリポスト(Kind 6)・返信/メンション(Kind 1 #p) を追加 - 複数画像フルスクリーンビューア: スワイプでページ切り替え、ピンチ/ダブルタップズーム、ドット+枚数インジケーター - nostr: bech32 リンク (nevent/nprofile) をカード表示 — 本文中の生テキストを非表示に - カスタム絵文字ピッカー キャッシュファースト: 5分 TTL のインメモリキャッシュ、EmojiPicker / ReactionEmojiPicker で共有 - 画像複数枚投稿を並列アップロードに変更 (web版と同期) - 3枚画像グリッドのレイアウト修正: 左1枚フル高さ + 右2枚スタック
    More…
    ### Fixed (Android) - nevent カードの角が切れる問題: `Surface(shape=…)` に統一し `Modifier.clip` を削除 - 引用投稿でテキストとカードの間に大きな空白が生じる問題: 末尾の余分な改行をトリム - nevent カードタップでプロフィール画面に遷移してしまう問題: カード全体のクリックを削除、著者行のみプロフィール遷移 - カスタム絵文字リアクションを通知一覧でも画像表示に統一
  • Mar 10, 2026 1.3.2
    ### Added (Android) - 動画タップでミュート解除: フィードの動画をタップで音声ON/OFF切り替え(右下に🔇/🔊アイコン) - ProofModeバッジ: フィードの動画右上にレベル別バッジを表示 - 🛡 ProofMode(青)= `verified_mobile`、✓ ProofMode(緑)= `verified_web` - ミニアプリに「その他」カテゴリ追加: 外部ミニアプリを分類 - DivineVideoRecorder・ProofModeManager に MPL-2.0 ライセンス表記追加 ### Fixed (Android) - 動画に音声が録音されない問題を修正: `withAudioEnabled()` を常に有効化 - 投稿画面のツールバーがキーボードに隠れる問題を修正 (`imePadding` をツールバー直接に適用)
    More…
    - ミニアプリのURL入力フォームがキーボードに隠れる問題を修正 - フィードの動画秒数表示: ハードコードの "6.3s" から `duration` タグの実際の値に変更 - ProofMode verificationタグ名の誤り修正 (`verification-level` → `verification`) - Kind 34236 投稿成功時に "POST_FAILED" と表示されていたバグを修正
  • Mar 10, 2026 1.3.1
    ### Fixed (Android) - 投稿時にアプリが5秒フリーズしてANR(強制終了)する問題を修正 - Rust FFI呼び出し(`createUnsignedEvent` / `publishRawEvent`)をIOスレッドに移動 - URLプレビューでYouTube・Spotifyなど一部URLを開くとクラッシュする問題を修正 - microlink APIレスポンスの`null`フィールドを安全にパースするよう修正 - 画像・動画アップロード処理をIOスレッドに移動、エラーハンドリング強化 - `PostModal` / `EditProfileModal` / `SignUpModal` / `DivineVideoRecorder` - OkHttpClient のタイムアウト設定を追加(接続15秒・読み込み90秒・書き込み120秒) - タイムラインキャッシュの読み書きをIOスレッドで実行するよう修正(ANR防止)
  • Mar 9, 2026 1.3.0
    # Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [1.2.0] - 2026-03-10 ### Fixed (Android)
    More…
    - JNA/UniFFI ProGuardルール欠落によるリリースビルドのクラッシュ・タイムライン未表示を修正 - `com.sun.jna.**` / `uniffi.nurunuru.**` / `rust.nostr.**` を R8 難読化対象外に設定 ## [1.1.0] - 2026-03-09 ### Added (Android) - Rustエンジンによるおすすめタイムライン - Pull-to-refresh・新着投稿ピルUI - ハッシュタグタップ対応 - 外部ミニアプリをWebView(NIP-07署名プロキシ)で開く機能 - バッジ・カスタム絵文字のキャッシュファースト表示 ### Fixed (Android) - ホームタブの投稿・いいね更新が反映されない問題 - タブ切り替え時のスクロール状態保持 ## [1.0.3] - 2025-12-22 ### Changed - Replaced nostr-login library with custom login modal - New login modal with clear method selection: - NIP-07 Browser Extensions (Alby, nos2x) - Nostr Connect / NIP-46 - Read-only mode (npub input) - Local key (nsec input) - Improved login method display in settings (shows specific method) ### Removed - nostr-login dependency (66 packages removed) - Simplified codebase without external login library ### Fixed - Login screen now reliably shows login methods - No more automatic redirects to connect screen ## [1.0.2] - 2025-12-22 ### Changed - Simplified login system: Passkey (primary) + nostr-login (secondary) - Removed direct NIP-07 browser extension login (now handled via nostr-login) - Removed Amber/NIP-55 Android-specific login - nostr-login now handles all alternative login methods: - Nostr Connect (NIP-46 remote signing) - Browser extensions (Alby, nos2x, Nostash) - Local nsec key input - Read-only mode (npub) ### Removed - Android-specific login detection - Direct NIP-07 extension login button ### Fixed - Mobile browser incorrectly showing Android login options ## [1.0.1] - 2025-12-21 ### Added - NIP-55 Amber signer support for Android - Android detection and optimized login flow - nostr-login initialization fix (now loads on demand) ### Changed - Login screen now shows Amber as primary option on Android - Passkey login skipped on Android (requires Digital Asset Links) - Login method display updated for Amber/nostr-login ### Fixed - nostr-login button not responding (initialization timing issue) - signEvent using window.nostr directly when Amber provides it ## [1.0.0] - 2025-12-21 ### Added - Initial release - Timeline with relay/follow mode switching - Fixed header during scroll - Encrypted DM support (NIP-17/44/59) - Like, repost, and Zap functionality - NIP-05 verification badge - Profile badges display (NIP-58) - Custom emoji support (NIP-30) - Follow list management with unfollow - Mute list support (NIP-51) - NIP-50 search capability - Passkey login (Nosskey) - NIP-46 remote signing (nostr-login) - PWA support ### Technical - Request throttling to prevent "too many concurrent REQs" - Multi-relay badge fetching - Profile and follow list caching - Batch profile fetching
  • Mar 9, 2026 1.2.0
    ## 修正内容 ### Fixed (Android) - JNA/UniFFI ProGuardルール欠落によるリリースビルドのクラッシュ・タイムライン未表示を修正 - リリースビルドで R8 が `com.sun.jna.Pointer.peer` フィールドおよび JNA Structure サブクラスのフィールド/メソッドを難読化し、起動クラッシュとタイムライン/プロフィール未表示が発生していた - `proguard-rules.pro` に `com.sun.jna.**` / `uniffi.nurunuru.**` / `rust.nostr.**` の keep ルールを追加して修正 ## インストール `nurunuru-1.2.0-arm64-v8a.apk` をダウンロードしてインストール(arm64デバイス対応)
  • Mar 2, 2026 1.0.0
    Initial release