やること: チケット
https://dev.mikutter.hachune.net/
https://dev.mikutter.hachune.net/favicon.ico?1619448608
2022-06-04T05:45:40Z
やること
Redmine
mikutter for Android - バグ #1587 (新規): faq.jsonの取得に失敗して何も表示されない
https://dev.mikutter.hachune.net/issues/1587
2022-06-04T05:45:40Z
Shibafu Midorino
<p>faq.jsonの取得時にエラーが発生し、一覧に何も表示されません。<br />なぜか <code>ProviderInstaller.installIfNeeded()</code> の呼び出しをコメントアウトすると取得できました。TLS周りの問題?</p>
<a name="Device"></a>
<h3 >Device<a href="#Device" class="wiki-anchor">¶</a></h3>
<p>Google Pixel 5a, Android 12</p>
<a name="Logcat"></a>
<h3 >Logcat<a href="#Logcat" class="wiki-anchor">¶</a></h3>
<pre>
2022-06-04 14:31:28.661 14968-14991/net.hachune.mikutter.mikutterforandroid V/NativeCrypto: SSL handshake aborted: ssl=0xb4000070898a8898: Failure in SSL library, usually a protocol error
error:1000042e:SSL routines:OPENSSL_internal:TLSV1_ALERT_PROTOCOL_VERSION (third_party/openssl/boringssl/src/ssl/tls_record.cc:594 0xb4000070a98a04f8:0x00000001)
2022-06-04 14:31:28.664 14968-14991/net.hachune.mikutter.mikutterforandroid D/FaqRecycleVA: onFailure: error
</pre>
mikutter for Android - 環境対応 #1586 (新規): SDK Level 32対応
https://dev.mikutter.hachune.net/issues/1586
2022-06-04T05:14:52Z
Shibafu Midorino
<p>現在のdevelopのリビジョンではtargetSdkVersion 29となっており、これは2022年6月現在のPlay storeの提出要件を満たしていないため、SDKの更新を行いたいです。</p>
<p>2022/10/31まではLevel 30で提出できますが、今30で止める理由は無いと思うのでなるべく最新ということで。</p>
mikutter for Android - バグ #1564 (分類待ち): お知らせの取得に失敗するとクラッシュする
https://dev.mikutter.hachune.net/issues/1564
2021-12-28T14:10:01Z
あひる 家鴨
<p>お知らせの取得の際にエラーレスポンスを受け取るとクラッシュします。<br />okHttp3のクライアントはエラーレスポンスの際も <code>onResponse</code> コールバックが呼ばれるようです。(<a href="https://square.github.io/okhttp/4.x/okhttp/okhttp3/-callback/on-response/" class="external">onResponse</a>) <br />そのため、エラーレスポンス時にレスポンスボディにエラー文字列が返ってくると下記処理でパースエラーとなってクラッシュします。<br /><a href="https://dev.mikutter.hachune.net/projects/mikutter-for-android/repository/git/revisions/d8b259159ad9f48a588d9b1876fc32c958147f41/entry/app/src/main/java/net/hachune/mikutter/mikutterforandroid/NotificationFragment.java#L68" class="external">NotificationFragment#L68</a><br />事前に <code>response.isSuccessful()</code> でレスポンスコードが200番台か確認する処理を入れることで対応しようと思います。</p>
mikutter for Android - バグ #1488 (マージ待ち): jcenterの依存をやめる
https://dev.mikutter.hachune.net/issues/1488
2021-04-27T10:37:38Z
あひる 家鴨
<p>バグではないけどトラッカーにバグしかないのでバグです!</p>
<p>jcenterのサポートとサービスが終了することが発表されたため、jcenterから移行する必要があります。<br /><a class="external" href="https://developer.android.com/studio/build/jcenter-migration?hl=JA">https://developer.android.com/studio/build/jcenter-migration?hl=JA</a></p>
mikutter - バグ #1464 (実装待ち): ハッシュタグを押下しても何も起きない
https://dev.mikutter.hachune.net/issues/1464
2020-07-07T08:48:21Z
Yuto Tokunaga
yuntan.sub1@gmail.com
<p>ハッシュタグを押下すると,ブラウザが開くか検索タブが開くか,又は動作を選択するダイアログが開くことが期待されます.実際は何も起きません.</p>
mikutter - 提案 #1460 (実装待ち): subscribeの呼び出し回数の最適化をする
https://dev.mikutter.hachune.net/issues/1460
2020-07-05T04:13:20Z
Yuto Tokunaga
yuntan.sub1@gmail.com
<p>適当なプラグインで<code>subscribe(:extract_receive_message, :mastodon_appear_toots)</code>を購読した際に,イベントが集約されずに一つ一つバラバラに呼び出されています.</p>
mikutter - 提案 #1459 (実装待ち): muiを廃止しgtk3プラグインに集約する
https://dev.mikutter.hachune.net/issues/1459
2020-07-05T04:02:45Z
Yuto Tokunaga
yuntan.sub1@gmail.com
mikutter - 提案 #1458 (実装待ち): 「リプライ先」や「コメント付きシェア」のヘッダのフォントや文字色を変更する設定をつける
https://dev.mikutter.hachune.net/issues/1458
2020-07-04T12:18:27Z
Yuto Tokunaga
yuntan.sub1@gmail.com
<p>「リプライ先」や「コメント付きシェア」のヘッダの文字色はデフォルトで黒ですが,背景色を黒系にした際に文字色を変更したくなることがあるかと思います.</p>
mikutter - バグ #1396 (実装待ち): 画像を開くとクラッシュする
https://dev.mikutter.hachune.net/issues/1396
2019-09-29T04:49:01Z
あひる 家鴨
<p>macOSのcocoa版のmikutter(e3f76a63)において、画像のリンクをクリックすると以下のトレースを吐いて落ちます。<br /><pre><code class="shell syntaxhl">Traceback <span class="o">(</span>most recent call last<span class="o">)</span>:
13: from mikutter.rb:105:in <span class="sb">`</span><main><span class="s1">'
12: from mikutter.rb:69:in `boot!'</span>
11: from /Users/ahiru/ghq/mikutter/mikutter/core/plugin/gtk/mainloop.rb:10:in <span class="sb">`</span>mainloop<span class="s1">'
10: from /Users/ahiru/ghq/mikutter/mikutter/core/plugin/gtk/mainloop.rb:10:in `catch'</span>
9: from /Users/ahiru/ghq/mikutter/mikutter/core/plugin/gtk/mainloop.rb:12:in <span class="sb">`</span>block <span class="k">in </span>mainloop<span class="s1">'
8: from /Users/ahiru/ghq/mikutter/mikutter/core/plugin/gtk/mainloop.rb:12:in `loop'</span>
7: from /Users/ahiru/ghq/mikutter/mikutter/core/plugin/gtk/mainloop.rb:16:in <span class="sb">`</span>block <span class="o">(</span>2 levels<span class="o">)</span> <span class="k">in </span>mainloop<span class="s1">'
6: from /Users/ahiru/ghq/mikutter/mikutter/core/plugin/gtk/mainloop.rb:16:in `events_pending?'</span>
5: from /Users/ahiru/ghq/mikutter/mikutter/core/mui/gtk_extension.rb:35:in <span class="sb">`</span>block <span class="k">in </span>safety_signal_connect<span class="s1">'
4: from /Users/ahiru/ghq/mikutter/mikutter/core/plugin/openimg/window.rb:161:in `block in gen_wrap_expose_event'</span>
3: from /Users/ahiru/ghq/mikutter/mikutter/core/plugin/openimg/window.rb:87:in <span class="sb">`</span>redraw<span class="s1">'
2: from /Users/ahiru/ghq/mikutter/mikutter/core/plugin/openimg/window.rb:87:in `save'</span>
1: from /Users/ahiru/ghq/mikutter/mikutter/core/plugin/openimg/window.rb:99:in <span class="sb">`</span>block <span class="k">in </span>redraw<span class="s1">'
/Users/ahiru/ghq/mikutter/mikutter/core/plugin/openimg/window.rb:99:in `paint'</span>: out of memory <span class="o">(</span>NoMemoryError<span class="o">)</span>
11: from mikutter.rb:105:in <span class="sb">`</span><main><span class="s1">'
10: from mikutter.rb:69:in `boot!'</span>
9: from /Users/ahiru/ghq/mikutter/mikutter/core/plugin/gtk/mainloop.rb:10:in <span class="sb">`</span>mainloop<span class="s1">'
8: from /Users/ahiru/ghq/mikutter/mikutter/core/plugin/gtk/mainloop.rb:10:in `catch'</span>
7: from /Users/ahiru/ghq/mikutter/mikutter/core/plugin/gtk/mainloop.rb:12:in <span class="sb">`</span>block <span class="k">in </span>mainloop<span class="s1">'
6: from /Users/ahiru/ghq/mikutter/mikutter/core/plugin/gtk/mainloop.rb:12:in `loop'</span>
5: from /Users/ahiru/ghq/mikutter/mikutter/core/plugin/gtk/mainloop.rb:16:in <span class="sb">`</span>block <span class="o">(</span>2 levels<span class="o">)</span> <span class="k">in </span>mainloop<span class="s1">'
4: from /Users/ahiru/ghq/mikutter/mikutter/core/plugin/gtk/mainloop.rb:16:in `events_pending?'</span>
3: from /Users/ahiru/ghq/mikutter/mikutter/core/mui/gtk_extension.rb:35:in <span class="sb">`</span>block <span class="k">in </span>safety_signal_connect<span class="s1">'
2: from /Users/ahiru/ghq/mikutter/mikutter/core/plugin/openimg/window.rb:161:in `block in gen_wrap_expose_event'</span>
1: from /Users/ahiru/ghq/mikutter/mikutter/core/plugin/openimg/window.rb:87:in <span class="sb">`</span>redraw<span class="s1">'
/Users/ahiru/ghq/mikutter/mikutter/core/plugin/openimg/window.rb:87:in `save'</span>: out of memory <span class="o">(</span>NoMemoryError<span class="o">)</span>
</code></pre></p>
mikutter - 提案 #1241 (toshi_aの判断待ち): Scoreの初期値をModelが提供できるようにする
https://dev.mikutter.hachune.net/issues/1241
2018-05-12T11:03:54Z
cob odo
cobodo@gmail.com
<p>TwitterのEntityや、(Worldonにおける)mastodonのhyperlink情報は、プレーンテキスト化した後のdescriptionだけからは復元できず、テキスト全体に対する位置に強く依存しています。そのため、score_filterの初回処理で選ばれない場合、後段の再帰では処理することができず、情報が失われてしまいます。 cf. <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="バグ: 絵文字のあとにメンションがあるとリンクが正しく作らず、リンクもある場合大量のscore_by_regexpが実行され続ける (終了)" href="https://dev.mikutter.hachune.net/issues/1239">#1239</a></p>
<p>また別の問題として、Twitterが返してくるHTML実体参照を含むテキストは、TextNote化する際にunescapeする必要がありますが、</p>
<ul>
<li>Entityが含まれていない場合はTextNote1つだけを返すしかない(TextNoteとは別の(全く同機能な)クラスを使う方法もありますが……)</li>
<li>TextNoteだけが含まれるScoreはscore_by_scoreに無視される</li>
</ul>
<p>の2つの仕様により、unescapeしたTextNoteを返しても採用されない、という問題があります。 cf. <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="バグ: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている (終了)" href="https://dev.mikutter.hachune.net/issues/1233">#1233</a></p>
<p>これらを解決する案として、Modelが <code>:score</code> というメソッドを持つならば、まずそれを呼んでScoreの初期値とし、そこに含まれるTextNoteに対してscore_by_scoreを走らせればいいのではないかと考えました。</p>
<p>Pros</p>
<ul>
<li>twemojiのようなプラグインを入れるとEntityが効かなくなる問題は生じなくなる。</li>
<li>テキストのみを持つようなものに対しても細工したTextNoteを返すことができるようになる。</li>
<li>サードパーティプラグインで挙動を変更する場合、フィルタでは上書きが困難ですが、インスタンスメソッドであればモンキーパッチできるためわかりやすい。</li>
</ul>
<p>Cons</p>
<ul>
<li>フィルタの積み重ねと単純な再帰で構成されていたscoreがとっちらかった構造になる</li>
</ul>
<p>叩き台として試作したパッチを添付します。</p>
mikutter - バグ #1190 (レビュー待ち): タイムラインのアイコン上のボタンがSpellを利用していない
https://dev.mikutter.hachune.net/issues/1190
2018-03-12T15:22:22Z
cob odo
cobodo@gmail.com
<p>favorite spellではなくmessage.favoriteメソッドを使っているため。</p>
mikutter for Android - 機能 #1023 (新規): OSCのmikutterブースにチェックインする機能
https://dev.mikutter.hachune.net/issues/1023
2017-04-06T01:03:32Z
toshi_a 初音
toshi.alternative@gmail.com
<p>多分NFCタグとかがいいと思うんだけど、イベントに毎回異なる使い捨てのトークンをもっていって、読み取ってもらったらアプリ内にイベント名とそこに来たという記録が溜まるような機能をつける。<br />mikutterブースに来る度にしいたけがもらえるみたいな虚しい感じの機能にしたい。</p>
<p>NFCタグは安くで売ってるので適当に買って用意する([[<a class="external" href="https://www.amazon.co.jp/サンワサプライ-NFCタグ-10枚入り-白-MM-NFCT/dp/B00GXSGL5G">https://www.amazon.co.jp/サンワサプライ-NFCタグ-10枚入り-白-MM-NFCT/dp/B00GXSGL5G</a>]])。</p>
<p>他には、QRコードとかでも同様の仕組みが実現できそう。</p>
<p>ひとまずOSC名古屋か京都でこれができたら良さそう。</p>
mikutter for Android - 機能 #1022 (新規): ホームウィジェットにお知らせウィジェットを追加する
https://dev.mikutter.hachune.net/issues/1022
2017-04-06T00:45:44Z
toshi_a 初音
toshi.alternative@gmail.com
<p>mikutterのステータスバーを、ウィジェットとしてホーム画面に設置できるようにする。<br />お知らせがある時は、ウィジェットから直接URLに飛び、お知らせがない場合は公式アプリを開く。</p>
mikutter for Android - 機能 #1021 (レビュー待ち): ホームウィジェットにまりもボタンを追加する
https://dev.mikutter.hachune.net/issues/1021
2017-04-06T00:41:06Z
toshi_a 初音
toshi.alternative@gmail.com
<p>何の効果もないまりもボタンを、ホーム画面のウィジェットとして設置できるようにする。<br />大きさが何通りか選べると便利そう。</p>
<p>ほか、高解像度の元画像が残っていればしいたけやふぁぼなども配置したさがある。</p>
mikutter - バグ #693 (パッチ適用待ち): 時計がずれた状態でmikutterを初回起動すると、チュートリアルがが不正な動作となる。
https://dev.mikutter.hachune.net/issues/693
2014-06-09T15:15:49Z
Satoshi Okuno
moguno12@gmail.com
<p>(1)時計を9時間ずらす。<br />(2)mikutterを初回起動する。<br />(3)URLを表示する直前までは正常にチュートリアルが進む。<br />(4)さらに進めると認証用のテキストボックスと認証ボタンが表示されるが、肝心のURLを含むメッセージが表示されない。</p>
<p>時計ずれによるトークンの交換失敗?によりrequest_token.authorize_urlが未定義になり、それを参照している箇所で例外が発生しているためです。</p>
<p>時間がある時にパッチ書いてみようと思います。</p>