やること: チケット
https://dev.mikutter.hachune.net/
https://dev.mikutter.hachune.net/favicon.ico?1619448608
2024-03-11T12:52:32Z
やること
Redmine
mikutter - バグ #1595 (分類待ち): mastodonのストリーミング処理で失敗しているケースがある
https://dev.mikutter.hachune.net/issues/1595
2024-03-11T12:52:32Z
あひる 家鴨
<p>raw_server_sent_events_stream.rb における `to_enum` を起点として落ちていることがちょくちょくあります。<br />最後に落ちた時にエラーを記録するのを忘れていたので、後で再現されたら載っけます。</p>
<p>内容としては httpclient の session 周りから `IO::TimeoutError` が出ていた感じです。<br />雑にrescue対象に `IO::TimeoutError` を加えたら数日落ちずにSSEの再接続も動いてるっぽいのでおそらく効いてる感。</p>
<p>いずれにせよ情報があやふやなので、その辺を追記ではっきりさせた上で対応考えます。<br />同様の問題が起きてる人がいたらエラーログとかいただけるとありがたいです。</p>
mikutter - バグ #1573 (分類待ち): mikutter5で投稿のヘッダー(左)・ヘッダー(右)に対してクリック判定ができなくなっている
https://dev.mikutter.hachune.net/issues/1573
2022-01-01T12:28:47Z
Akira Ouchi
<p>mikutter 4.1系までcairo_miracle_painter.rbのrender_main_text(context)定義されていた<br />@hl_regionと@hr_regionがなくなっており、ヘッダーに対してクリック判定とかの設定ができなくなった気がしています。</p>
<pre>
hl_rectangle = Gdk::Rectangle.new(pos.header_text.x, pos.header_text.y,
hl_layout.size[0] / Pango::SCALE, hl_layout.size[1] / Pango::SCALE)
hr_rectangle = Gdk::Rectangle.new(pos.header_text.x + pos.header_text.w - (hr_layout.size[0] / Pango::SCALE), pos.header_text.y,
hr_layout.size[0] / Pango::SCALE, hr_layout.size[1] / Pango::SCALE)
@hl_region = Gdk::Region.new(hl_rectangle)
@hr_region = Gdk::Region.new(hr_rectangle)
</pre>
<p>display_requirements.rbで使われていた機能かと思うのでなくなっても特段問題ない気がしますが気がついたので一応報告します。<br />(display_requirements.rbのほしいやつだけを残す自前プラグインの5対応をしていて気づきましたが自分でもしばらく使ってないことに気づいてます……)</p>
mikutter - バグ #1572 (分類待ち): Macでスクリーンショットを取得すると大半が透ける
https://dev.mikutter.hachune.net/issues/1572
2022-01-01T12:20:02Z
Akira Ouchi
<p>Macでスクリーンショットを取得すると、添付画像のように背景色の大半が透過されます。<br />ややこしいですが、 <strong>画面を目視する分には正常に描画されています。</strong></p>
<p>※ <a class="issue tracker-1 status-13 priority-4 priority-default" title="バグ: Macでスクリーンショット取得時に一部のアイコンが抜け落ちる (分類待ち)" href="https://dev.mikutter.hachune.net/issues/1570">#1570</a> と同じスクリーンショット<br /><img src="https://dev.mikutter.hachune.net/attachments/download/785/mikutter5-timeline-screenshot-on-mac.png" alt="" /></p>
<p>※ <a class="issue tracker-1 status-13 priority-4 priority-default" title="バグ: Gtk::IntelligentTextviewの背景が透過になるためMacで起動した環境で描画が荒れる (分類待ち)" href="https://dev.mikutter.hachune.net/issues/1571">#1571</a> と同じスクリーンショット<br /><img src="https://dev.mikutter.hachune.net/attachments/download/784/intelligenttextview-transparent.png" alt="" /></p>
<ul>
<li>Mac環境の構成:
<ul>
<li>Intel Mac(MacBook Air 2018)</li>
<li>macOS Big Sur 11.6.2</li>
<li>MacPorts
<ul>
<li>gtk3 @3.24.30_0+x11</li>
<li>xorg-server @1.20.11_1 ※XQuartz</li>
<li>Ruby 3.0.3 (rbenv+ruby-build)</li>
</ul></li>
</ul></li>
</ul>
mikutter - バグ #1571 (分類待ち): Gtk::IntelligentTextviewの背景が透過になるためMacで起動した環境で描画が荒れる
https://dev.mikutter.hachune.net/issues/1571
2022-01-01T12:15:13Z
Akira Ouchi
<p>Mac環境では、Gtk::IntelligentTextviewを使用している部位で以下のように描画が乱れます。<br />(IntelligentTextviewの部分は画面上の表示でもスクリーンショットでも同じ状態です)</p>
<p><img src="https://dev.mikutter.hachune.net/attachments/download/783/intelligenttextview-transparent.png" alt="" /></p>
<p>該当するコードはこちらで、<br /><a class="external" href="https://dev.mikutter.hachune.net/projects/mikutter/repository/main/revisions/master/entry/core/mui/gtk_intelligent_textview.rb#L49">https://dev.mikutter.hachune.net/projects/mikutter/repository/main/revisions/master/entry/core/mui/gtk_intelligent_textview.rb#L49</a><br />ここをwhiteに変更すると、以下の通り描画の乱れがなくなります。</p>
<p><img src="https://dev.mikutter.hachune.net/attachments/download/782/intelligenttextview-white.png" alt="" /></p>
<ul>
<li>Mac環境の構成:
<ul>
<li>Intel Mac(MacBook Air 2018)</li>
<li>macOS Big Sur 11.6.2</li>
<li>MacPorts
<ul>
<li>gtk3 @3.24.30_0+x11</li>
<li>xorg-server @1.20.11_1 ※XQuartz</li>
<li>Ruby 3.0.3 (rbenv+ruby-build)</li>
</ul></li>
</ul></li>
</ul>
mikutter - バグ #1570 (分類待ち): Macでスクリーンショット取得時に一部のアイコンが抜け落ちる
https://dev.mikutter.hachune.net/issues/1570
2022-01-01T11:59:47Z
Akira Ouchi
<p>Macで起動した環境で、タイムラインを表示している状態では特に問題ありませんが、スクリーンショット取得時に一部アイコンが抜け落ちます。</p>
<p><img src="https://dev.mikutter.hachune.net/attachments/download/781/mikutter5-timeline-screenshot-on-mac.png" alt="" /></p>
<p>元旦Discord会での会話から切り分けたところ、アルファチャネルを含む画像はスクリーンショットに残り、アルファチャネルを持たない画像が抜け落ちるようでした。</p>
<ul>
<li>Mac環境の構成:
<ul>
<li>Intel Mac(MacBook Air 2018)</li>
<li>macOS Big Sur 11.6.2</li>
<li>MacPorts
<ul>
<li>gtk3 @3.24.30_0+x11</li>
<li>xorg-server @1.20.11_1 ※XQuartz</li>
</ul>
</li>
<li>Ruby 3.0.3 (rbenv+ruby-build)</li>
</ul></li>
</ul>
mikutter - 提案 #1566 (分類待ち): mastodonのAPIアクセスにFaradayを使う
https://dev.mikutter.hachune.net/issues/1566
2021-12-31T09:27:32Z
toshi_a 初音
toshi.alternative@gmail.com
<p><a class="issue tracker-12 status-5 priority-4 priority-default closed" title="提案: 起動時、直近のリプライが読み込まれない (終了)" href="https://dev.mikutter.hachune.net/issues/1427">#1427</a> の派生タスク。<br /><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="バグ: Lets EncryptのCA証明書の期限切れ (終了)" href="https://dev.mikutter.hachune.net/issues/1507">#1507</a> Lets EncryptのCA証明書の期限切れ のようなこともあったため、APIアクセスライブラリを <a href="https://github.com/lostisland/faraday" class="external">Faraday</a> に統一する。</p>
mikutter - バグ #1541 (分類待ち): gtk3: TLタブを再選択したときにTL表示位置が選択中メッセージ位置に移動してしまう
https://dev.mikutter.hachune.net/issues/1541
2021-11-13T14:22:17Z
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp
<p>gtk3 版ではTLを表示しているタブが一度隠れた後に再選択して表示される場合の動作仕様が変わってしまっているように見えます。</p>
<ul>
<li>(1) タイムラインの一番下までスクロールする</li>
<li>(2) 一番下のメッセージをクリックして選択する</li>
<li>(3) その状態で同じタイムラインの一番上までスクロールする</li>
<li>(4) 同じペインの別のタブをクリックして選択する</li>
<li>(5) 2つ前の(3)で一番上まで戻したタブをクリックして再度選択して表示させる<br /> →なぜか(2)で選択した一番下のメッセージが出る状態までタイムライン表示が下の方に戻っている</li>
</ul>
<p>従来はタブを再選択表示したときには、タブが隠れたときの元の位置が保持されていたような。</p>
mikutter - バグ #1540 (分類待ち): gtk3: TLでメッセージ選択中にTABを押すと次のタブではなく次のメッセージに移動する
https://dev.mikutter.hachune.net/issues/1540
2021-11-10T13:03:43Z
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp
<p>以下のやり取りから</p>
<p><a class="external" href="https://social.mikutter.hachune.net/@tsutsuii/107247395574397992">https://social.mikutter.hachune.net/@tsutsuii/107247395574397992</a></p>
<blockquote>
<p>mikutter_gtk3 で TL 中のメッセージ選択中に TAB を押すと次のメッセージに選択が移動するけど、これ次のペインとかにタブに移動してほしいという気もするな。gtk2 だとどうだったか……</p>
</blockquote>
<p><a class="external" href="https://social.mikutter.hachune.net/@akkiesoft/107247419975830860">https://social.mikutter.hachune.net/@akkiesoft/107247419975830860</a></p>
<blockquote>
<p>TABおすと、TL→タブ次のペインのTL→タブ…→ツールバー→postboxの順にいどうしてた</p>
</blockquote>
mikutter - バグ #1529 (分類待ち): gtk3: タブを右クリックした際のメニューがマウスボタンを離すと消えてしまう
https://dev.mikutter.hachune.net/issues/1529
2021-10-31T13:21:35Z
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp
<p>各種 gtk3 チケットが解決してきて mikutter_gtk3 がだいたい実用上問題なく動くようになってきていますが<br />いざリリースすると「gtk2 時代と違う」と言われそうな挙動をメモるチケットその4です。</p>
<p>各ペインのタブを右クリックした場合の右クリックメニューが<br />クリックしている間しか表示されず、マウスボタンを離すとメニューが消えてしまう。<br />postboxの右クリックメニューは従来どおり右クリックを離してもメニュー表示は残る。</p>
<p>従来は直感的(?)操作どおりで、右ボタンワンクリックでもメニュー表示・選択ができていた。</p>
mikutter - バグ #1528 (分類待ち): gtk3: TL先頭を表示していない場合でもメッセージ受信でTLがスクロールする
https://dev.mikutter.hachune.net/issues/1528
2021-10-31T13:16:15Z
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp
<p>各種 gtk3 チケットが解決してきて mikutter_gtk3 がだいたい実用上問題なく動くようになってきていますが<br />いざリリースすると「gtk2 時代と違う」と言われそうな挙動をメモるチケットその3です。</p>
<p><a class="issue tracker-1 status-13 priority-4 priority-default" title="バグ: gtk3: TL先頭にメッセージが追加されたときのアニメーション実装 (分類待ち)" href="https://dev.mikutter.hachune.net/issues/1526">#1526</a> の「TL先頭にメッセージが追加されたときのアニメーション実装」とは逆に、<br />TLが先頭にない場合にメッセージが追加された場合、<br />gtk2 版ではTL表示は変化しない動作だったのが、<br />gtk3 版では追加されたメッセージン分だけTLが下にスクロールする動作になっている<br />ように見えます。</p>
<p>Twitter本家で不評だった「読んでるのに勝手にスクロールしないで欲しい」という苦言が出そう。</p>
mikutter - バグ #1526 (分類待ち): gtk3: TL先頭にメッセージが追加されたときのアニメーション実装
https://dev.mikutter.hachune.net/issues/1526
2021-10-31T13:09:09Z
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp
<p>各種 gtk3 チケットが解決してきて mikutter_gtk3 がだいたい実用上問題なく動くようになってきていますが<br />いざリリースすると「gtk2 時代と違う」と言われそうな挙動をメモるチケットその1です。</p>
<p>TL先頭で新たなメッセージを受信したとき似、従来は <a class="issue tracker-2 status-5 priority-4 priority-default closed" title="機能: スクロールアニメーションの最適化 (終了)" href="https://dev.mikutter.hachune.net/issues/304">#304</a> の pretty scroll の仕様で<br />アニメーションでニュルニュルとタイムラインにメッセージが追加されていましたが<br />gtk3 では未実装の状態のはず?</p>
<blockquote>
<p>現在のスクロールアニメーションは、だんだん加速するが、処理が重い時の見栄えが悪いので、だんだん減速するように変更する。<br />また、アニメーションの頻度を30fpsに抑える。</p>
</blockquote>
mikutter - バグ #1476 (分類待ち): MastodonのFTLをデータソースとして使っているとたまにNoMethodErrorでクラッシュする
https://dev.mikutter.hachune.net/issues/1476
2020-09-30T13:42:35Z
Shibafu Midorino
<p>MastodonのFTLを抽出タブのデータソースとして使っていると、たまにNoMethodErrorでクラッシュします。<br />RESTかストリーミングどちらが起因かは分かりません。そもそも、本当にFTLが原因かも分かりません。</p>
<p>例外が発生したタブの情報をダンプするコードを差し込んで確認した限りでは、私の環境ではFTLを購読しているタブのみがこのエラーを引いているという感じです。</p>
<a name="バックトレース"></a>
<h2 >バックトレース<a href="#バックトレース" class="wiki-anchor">¶</a></h2>
<pre>
Traceback (most recent call last):
3: from /home/shibafu/git/mikutter/vendor/bundle/ruby/2.7.0/gems/pluggaloid-1.5.0/lib/pluggaloid/stream.rb:80:in `block in each'
2: from /home/shibafu/git/mikutter/vendor/bundle/ruby/2.7.0/gems/pluggaloid-1.5.0/lib/pluggaloid/stream.rb:80:in `loop'
1: from /home/shibafu/git/mikutter/vendor/bundle/ruby/2.7.0/gems/pluggaloid-1.5.0/lib/pluggaloid/stream.rb:81:in `block (2 levels) in each'
/home/shibafu/git/mikutter/plugin/extract/extract.rb:279:in `block (3 levels) in modify_extract_tabs': undefined method `retweet_source' for nil:NilClass (NoMethodError)
</pre>
mikutter - 提案 #1362 (分類待ち): mikutter AppImageのRaspberry Pi対応
https://dev.mikutter.hachune.net/issues/1362
2019-07-06T12:55:37Z
Akira Ouchi
<p>Raspberry Piで動作するmikutter AppImageをつくる件です。</p>
<a name="やってみた記録"></a>
<h2 >やってみた記録<a href="#やってみた記録" class="wiki-anchor">¶</a></h2>
<p><a class="external" href="http://akkiesoft.hatenablog.jp/entry/20190630/1561904845">http://akkiesoft.hatenablog.jp/entry/20190630/1561904845</a></p>
<a name="mikutter側でやった変更"></a>
<h2 >mikutter側でやった変更<a href="#mikutter側でやった変更" class="wiki-anchor">¶</a></h2>
<ul>
<li>ubuntu:16.04をubuntu:18.10かdeban:busterに変更する
<ul>
<li>Raspbianが2019-06-20からBusterを採用しており、これをビルド環境にした場合、Busterと同じかBusterより新しいglibc6・libstdc++が入ったイメージにする必要があるため</li>
</ul>
</li>
<li>libgdbm3をlibgdbm6に変更</li>
<li>gir1.2-glib-2.0の追加
<ul>
<li>これ、そもそもx86_64でも必要な気がしますがどうなんでしょ</li>
</ul></li>
</ul>
<a name="mikutter外の課題"></a>
<h2 >mikutter外の課題<a href="#mikutter外の課題" class="wiki-anchor">¶</a></h2>
<p>AppImageを作るためのlinuxdeploy-plugin-appimage.AppImageとexec.soのarm版がないため、それを自力でコンパイル必要があります。<br />私が試した時点では幸いにも特に問題なくコンパイルできましたが、それぞれ公式のサポートはないため、いつかコンパイルできなくなる可能性もあります。</p>
<p>作業環境は3B+だったので、成果物はRaspberry Pi2以降(armv7l)向けのバイナリになり、ZeroとRPi1(armv6)では動作しないようでした。両方で動くやつが作れるかは要検証デス。</p>
mikutter - バグ #1345 (分類待ち): mastodonプラグインのプロフィールタブを開いたときにトゥート単位で取得APIが呼ばれる
https://dev.mikutter.hachune.net/issues/1345
2019-06-09T01:56:19Z
Akira Ouchi
<p>mastodonプラグインでプロフィールタブに開いたときにトゥートの取得をapi/v1/statuses/<id>の単位で取得する場合があるようです。<br />以下は自分のプロフィールタブを開いたときの出力です。</p>
<pre>
notice: {MIKUTTER_DIR}/core/plugin/mastodon/api.rb:181:in `send_request': Mastodon::API.call get https://social.mikutter.hachune.net/api/v1/accounts/3/statuses [["Authorization", "Bearer bef25405f1a5f17098fea5f9d737996a309b12dd4a476e16566ef9debf719a2e"]] []
notice: {MIKUTTER_DIR}/core/plugin/mastodon/api.rb:181:in `send_request': Mastodon::API.call get https://social.mikutter.hachune.net/api/v1/statuses/102238914714412414 [] []
notice: {MIKUTTER_DIR}/core/plugin/mastodon/api.rb:181:in `send_request': Mastodon::API.call get https://social.mikutter.hachune.net/api/v1/statuses/102238611243190984 [] []
notice: {MIKUTTER_DIR}/core/plugin/mastodon/api.rb:181:in `send_request': Mastodon::API.call get https://social.mikutter.hachune.net/api/v1/statuses/102238611242850330 [] []
notice: {MIKUTTER_DIR}/core/plugin/mastodon/api.rb:181:in `send_request': Mastodon::API.call get https://social.mikutter.hachune.net/api/v1/statuses/102238511354097739 [] []
</pre>
<p>常にTLに読み込まれていない(フォロイーのふぁぼ・BTなどで出てきたフォローしていない)ようなユーザーでは取得件数が多くなるような印象があります。<br />Pawooユーザーのような画像投稿が多い場合に読み込みが多くなっている気もします。</p>
<p>API仕様もわかっていないのでアレですが、トゥート単位よりはある程度まとめて取れるとサーバーに優しそうではあります。</p>
mikutter - バグ #1314 (分類待ち): twitter/:account/:verify_credentials へのリクエストでレスポンスがnilになってしまうことがある
https://dev.mikutter.hachune.net/issues/1314
2019-02-04T09:20:34Z
cob odo
cobodo@gmail.com
<p>どういう条件で発生するのかよくわかりませんが、以下のように単純なnilチェックを入れておけばいいのではないかと思いました。</p>
<pre><code class="ruby syntaxhl"><span class="n">diff</span> <span class="o">--</span><span class="n">git</span> <span class="n">a</span><span class="o">/</span><span class="n">core</span><span class="o">/</span><span class="n">plugin</span><span class="o">/</span><span class="n">twitter</span><span class="o">/</span><span class="n">model</span><span class="o">/</span><span class="n">world</span><span class="p">.</span><span class="nf">rb</span> <span class="n">b</span><span class="o">/</span><span class="n">core</span><span class="o">/</span><span class="n">plugin</span><span class="o">/</span><span class="n">twitter</span><span class="o">/</span><span class="n">model</span><span class="o">/</span><span class="n">world</span><span class="p">.</span><span class="nf">rb</span>
<span class="n">index</span> <span class="mi">6</span><span class="n">b6d6e6c</span><span class="o">..</span><span class="n">a8110a04</span> <span class="mi">100644</span>
<span class="o">---</span> <span class="n">a</span><span class="o">/</span><span class="n">core</span><span class="o">/</span><span class="n">plugin</span><span class="o">/</span><span class="n">twitter</span><span class="o">/</span><span class="n">model</span><span class="o">/</span><span class="n">world</span><span class="p">.</span><span class="nf">rb</span>
<span class="o">+++</span> <span class="n">b</span><span class="o">/</span><span class="n">core</span><span class="o">/</span><span class="n">plugin</span><span class="o">/</span><span class="n">twitter</span><span class="o">/</span><span class="n">model</span><span class="o">/</span><span class="n">world</span><span class="p">.</span><span class="nf">rb</span>
<span class="err">@@</span> <span class="o">-</span><span class="mi">241</span><span class="p">,</span><span class="mi">7</span> <span class="o">+</span><span class="mi">241</span><span class="p">,</span><span class="mi">7</span> <span class="err">@@</span> <span class="k">module</span> <span class="nn">Plugin::Twitter</span>
<span class="k">end</span>
<span class="k">def</span> <span class="nf">user_data_failed_crash!</span><span class="p">(</span><span class="n">res</span><span class="p">)</span>
<span class="o">-</span> <span class="k">if</span> <span class="s1">'400'</span> <span class="o">==</span> <span class="n">res</span><span class="p">.</span><span class="nf">code</span>
<span class="o">+</span> <span class="k">if</span> <span class="n">res</span> <span class="o">&&</span> <span class="s1">'400'</span> <span class="o">==</span> <span class="n">res</span><span class="p">.</span><span class="nf">code</span>
<span class="n">chi_fatal_alert</span> <span class="s2">"起動に必要なデータをTwitterが返してくれませんでした。規制されてるんじゃないですかね。</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span>
<span class="s2">"ニコ動とか見て、規制が解除されるまで適当に時間を潰してください。ヽ('ω')ノ三ヽ('ω')ノもうしわけねぇもうし
わけねぇ</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span>
<span class="s2">"</span><span class="se">\n\n</span><span class="s2">--</span><span class="se">\n\n</span><span class="s2">"</span> <span class="o">+</span>
</code></pre>