やること: チケット
https://dev.mikutter.hachune.net/
https://dev.mikutter.hachune.net/favicon.ico?1619448608
2021-12-31T09:27:32Z
やること
Redmine
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 - 機能 #1393 (新規): FormDSLにコマンド選択ウィジェットを追加
https://dev.mikutter.hachune.net/issues/1393
2019-09-21T01:09:16Z
toshi_a 初音
toshi.alternative@gmail.com
<p>FormDSLで、コマンドを一つ選択するウィジェットを提供する。<br />単にコマンドを列挙するのではなく、以下の機能が必要になるので、しんどそう。</p>
<ul>
<li>ツリー表示</li>
<li>インクリメンタルサーチ</li>
</ul>
<p>抽出タブのデータソース選択もツリービューで選択させるようになっているので、もしかしたら同じウィジェットとして実装できるかもしれない?</p>
mikutter - 機能 #1394 (新規): listviewからCRUD操作をされた時、独自のルーチンやフックを実行可能な専用データソースオブジェクトを提供する
https://dev.mikutter.hachune.net/issues/1394
2019-09-21T01:09:16Z
toshi_a 初音
toshi.alternative@gmail.com
<ul>
<li>Worldや抽出タブで、CRUD操作が発生した時に、特定のイベントを発生させるなどのフック処理が必要になる。
<ul>
<li>また、あるイベントが発生したらデータソースに引数で渡されたオブジェクトを追加するといった制御も必要になる。</li>
</ul>
</li>
<li>Worldや抽出タブなど、UserConfigにはHashの配列として保存しているが、データソースとしてはModelとして扱いたい場合がある。
<ul>
<li>この場合、当然作成・編集・並び替えが行われたら、Hashに変換して保存する必要がある。</li>
</ul></li>
</ul>
<p>といった要件を満たすため、設定値の読み書きを行うデータソースを <code>parent_dslobj#[]</code> ではなく、別のデータソースプロキシオブジェクトを挿入可能にする。</p>
<p>少々煩雑になるが、プロキシオブジェクト側にフックは全て実装することになるため、listviewの実装を肥大化させないために<br />この実装にしたい。</p>
<p>加えて、このデータソースプロキシオブジェクトは値の追加・削除・更新を通知し、リアルタイムにlistviewを更新する機能をもたせたい。</p>
mikutter - 機能 #1390 (新規): listview: UserConfigに保存しているものを変換して一覧する機能
https://dev.mikutter.hachune.net/issues/1390
2019-09-21T01:09:15Z
toshi_a 初音
toshi.alternative@gmail.com
<p>Worldや抽出タブなど、UserConfigにはHashの配列として保存しているが、データソースとしてはModelとして扱いたい場合がある。<br />この場合、当然作成・編集・並び替えが行われたら、Hashに変換して保存する必要がある。</p>
mikutter - 機能 #1388 (新規): listview: 編集を許可しないオプションを追加
https://dev.mikutter.hachune.net/issues/1388
2019-09-21T01:09:15Z
toshi_a 初音
toshi.alternative@gmail.com
<p>Worldでは作成はできるが編集をサポートしないので、これだけを無効にするオプションを追加する。</p>
mikutter - 機能 #1389 (新規): listview: 追加されることによってイベントを発生させる
https://dev.mikutter.hachune.net/issues/1389
2019-09-21T01:09:15Z
toshi_a 初音
toshi.alternative@gmail.com
<p>Worldや抽出タブで、CRUD操作が発生した時に、特定のイベントを発生させるなどのフック処理が必要になる。<br />また、あるイベントが発生したらデータソースに引数で渡されたオブジェクトを追加するといった制御も必要になる。</p>
mikutter - 機能 #1384 (新規): Extractの設定に、FormDSLのlistviewを使う
https://dev.mikutter.hachune.net/issues/1384
2019-09-21T00:13:54Z
toshi_a 初音
toshi.alternative@gmail.com
<p>設定画面の「抽出タブ」に抽出タブ一覧があるが、これを <a class="issue tracker-2 status-2 priority-4 priority-default" title="機能: Gtk::CRUDに依存しているコードを減らす (実装待ち)" href="https://dev.mikutter.hachune.net/issues/1380">#1380</a> で実装したlistviewメソッドを利用したものに置き換える。</p>
mikutter - 機能 #1385 (新規): Mastodonの設定に、FormDSLのlistviewを使う
https://dev.mikutter.hachune.net/issues/1385
2019-09-21T00:13:54Z
toshi_a 初音
toshi.alternative@gmail.com
<p>設定画面の「Mastodon」にlistenするサーバのリストがあるが、これを <a class="issue tracker-2 status-2 priority-4 priority-default" title="機能: Gtk::CRUDに依存しているコードを減らす (実装待ち)" href="https://dev.mikutter.hachune.net/issues/1380">#1380</a> で実装したlistviewメソッドを利用したものに置き換える。</p>
mikutter - 機能 #1203 (新規): Gdk::Cursorのインスタンスを得る方法を変更する
https://dev.mikutter.hachune.net/issues/1203
2018-04-08T17:30:41Z
toshi_a 初音
toshi.alternative@gmail.com
<p>マウスカーソルを変更するときに使う <code>Gdk::Cursor</code> を得る時、現在はGdk::Displayとカーソルの名前を使って参照するのが良いとされていると教えてもらった( <a class="issue tracker-2 status-5 priority-4 priority-default closed behind-schedule" title="機能: MiraclePainter上でマウスを動かしたときにカーソル形状を適切に変更して欲しい (終了)" href="https://dev.mikutter.hachune.net/issues/1197#note-2">#1197-2</a> )。<br />mikutterの標準プラグインで <code>Gdk::Cursor.new</code> を呼び出している部分を全てこの方法に変更し、 Gdk::Tooltip と同じように、mikutter内で種類ごとに単一のGdk::Cursorを使いまわすようにしたい。</p>
mikutter - バグ #1138 (新規): activityプラグインがデフォルトで提供しているactivityが、Twitterに依存している
https://dev.mikutter.hachune.net/issues/1138
2017-12-25T09:16:06Z
toshi_a 初音
toshi.alternative@gmail.com
<p>favorite、retweetなどのアクティビティが、activityプラグインで定義されているが、これはTwitterのものなので、twitterプラグインで行われるべき。</p>
<p>また、slugもtwitter_favorite、twitter_retweetにそれぞれ変更したほうが良い。ただしその場合、今まで設定したアクティビティの通知先の設定が引き継がれず、ユーザは再設定することになる。この他にどういう影響があるか調査し、slugを変更するか判断する</p>
mikutter - バグ #1078 (新規): Gtk::TreeIter が指す行の存在を確認していない箇所がある
https://dev.mikutter.hachune.net/issues/1078
2017-11-04T20:26:38Z
toshi_a 初音
toshi.alternative@gmail.com
<p>Gtk::TreeIter が指し示す行が存在しない場合を考慮していないため、 <a class="issue tracker-5 status-5 priority-4 priority-default closed" title="致命的: Gtk-CRITICAL **: IA__gtk_list_store_set_value の出力を繰り返した後、特定の行でクラッシュする。 (終了)" href="https://dev.mikutter.hachune.net/issues/1077">#1077</a> のような問題が発生した。<br />Gtk::TreeIterインスタンスの作成後に行が削除される可能性がある場合は、存在をチェックしなければならない。</p>
<p>潜在的には、Photo Modelのload_pixbufメソッドのような振る舞いをするメソッドを利用する箇所すべてを見直す必要がある。</p>
<p><a class="source" href="https://dev.mikutter.hachune.net/projects/mikutter/repository/main/entry/core/mui/gtk_inneruserlist.rb#L37">source:core/mui/gtk_inneruserlist.rb#L37</a><br /><pre><code class="ruby syntaxhl"> <span class="n">iter</span><span class="p">[</span><span class="no">COL_ICON</span><span class="p">]</span> <span class="o">=</span> <span class="n">user</span><span class="p">.</span><span class="nf">icon</span><span class="p">.</span><span class="nf">load_pixbuf</span><span class="p">(</span><span class="ss">width: </span><span class="mi">24</span><span class="p">,</span> <span class="ss">height: </span><span class="mi">24</span><span class="p">){</span><span class="o">|</span><span class="n">pixbuf</span><span class="o">|</span>
<span class="n">iter</span><span class="p">[</span><span class="no">COL_ICON</span><span class="p">]</span> <span class="o">=</span> <span class="n">pixbuf</span> <span class="k">unless</span> <span class="n">destroyed?</span>
<span class="p">}</span>
</code></pre></p>
<p><a class="source" href="https://dev.mikutter.hachune.net/projects/mikutter/repository/main/entry/core/plugin/activity/model_selector.rb#L22">source:core/plugin/activity/model_selector.rb#L22</a><br /><pre><code class="ruby syntaxhl"> <span class="n">iter</span><span class="p">[</span><span class="no">ICON</span><span class="p">]</span> <span class="o">=</span> <span class="n">record</span><span class="p">.</span><span class="nf">icon</span><span class="p">.</span><span class="nf">load_pixbuf</span><span class="p">(</span><span class="ss">width: </span><span class="mi">24</span><span class="p">,</span> <span class="ss">height: </span><span class="mi">24</span><span class="p">)</span> <span class="k">do</span> <span class="o">|</span><span class="n">loaded_icon</span><span class="o">|</span>
<span class="n">iter</span><span class="p">[</span><span class="no">ICON</span><span class="p">]</span> <span class="o">=</span> <span class="n">loaded_icon</span>
<span class="k">end</span>
</code></pre></p>
<p><a class="source" href="https://dev.mikutter.hachune.net/projects/mikutter/repository/main/entry/core/plugin/shortcutkey/shortcutkey_listview.rb#L39">source:core/plugin/shortcutkey/shortcutkey_listview.rb#L39</a><br /><pre><code class="ruby syntaxhl"> <span class="n">iter</span><span class="p">[</span><span class="no">COLUMN_COMMAND_ICON</span><span class="p">]</span> <span class="o">=</span> <span class="n">icon</span><span class="p">.</span><span class="nf">load_pixbuf</span><span class="p">(</span><span class="ss">width: </span><span class="mi">16</span><span class="p">,</span> <span class="ss">height: </span><span class="mi">16</span><span class="p">){</span> <span class="o">|</span><span class="n">pixbuf</span><span class="o">|</span>
<span class="k">if</span> <span class="n">not</span> <span class="n">destroyed?</span>
<span class="n">iter</span><span class="p">[</span><span class="no">COLUMN_COMMAND_ICON</span><span class="p">]</span> <span class="o">=</span> <span class="n">pixbuf</span> <span class="k">end</span> <span class="p">}</span> <span class="k">end</span> <span class="k">end</span> <span class="p">}</span> <span class="k">end</span>
</code></pre></p>
<p><a class="source" href="https://dev.mikutter.hachune.net/projects/mikutter/repository/main/entry/core/plugin/shortcutkey/shortcutkey_listview.rb#L192">source:core/plugin/shortcutkey/shortcutkey_listview.rb#L192</a><br /><pre><code class="ruby syntaxhl"> <span class="n">iter</span><span class="p">[</span><span class="no">COL_ICON</span><span class="p">]</span> <span class="o">=</span> <span class="n">icon</span><span class="p">.</span><span class="nf">load_pixbuf</span><span class="p">(</span><span class="ss">width: </span><span class="mi">16</span><span class="p">,</span> <span class="ss">height: </span><span class="mi">16</span><span class="p">)</span> <span class="k">do</span> <span class="o">|</span><span class="n">pixbuf</span><span class="o">|</span>
<span class="n">iter</span><span class="p">[</span><span class="no">COL_ICON</span><span class="p">]</span> <span class="o">=</span> <span class="n">pixbuf</span> <span class="k">if</span> <span class="n">not</span> <span class="n">destroyed?</span>
<span class="k">end</span>
</code></pre></p>
<p><a class="source" href="https://dev.mikutter.hachune.net/projects/mikutter/repository/main/entry/core/plugin/change_account/account_control.rb%2324">source:core/plugin/change_account/account_control.rb#24</a><br /><pre><code class="ruby syntaxhl"> <span class="n">iter</span><span class="p">[</span><span class="no">COL_ICON</span><span class="p">]</span> <span class="o">=</span> <span class="n">service</span><span class="p">.</span><span class="nf">user_obj</span><span class="p">.</span><span class="nf">icon</span><span class="p">.</span><span class="nf">load_pixbuf</span><span class="p">(</span><span class="ss">width: </span><span class="mi">16</span><span class="p">,</span> <span class="ss">height: </span><span class="mi">16</span><span class="p">)</span> <span class="p">{</span> <span class="o">|</span><span class="n">new_pixbuf</span><span class="o">|</span>
<span class="n">iter</span><span class="p">[</span><span class="no">COL_ICON</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_pixbuf</span> <span class="k">if</span> <span class="n">not</span> <span class="nb">self</span><span class="p">.</span><span class="nf">destroyed?</span> <span class="p">}</span>
</code></pre></p>
mikutter - バグ #936 (新規): message_detail_view: 開いた時に、タブがアクティブにならない
https://dev.mikutter.hachune.net/issues/936
2016-11-14T15:48:07Z
toshi_a 初音
toshi.alternative@gmail.com
<p>ツイートを開いた時、それがアクティブになってくれないので、大量にタブを開いているペインだったりすると開いたことがわからない場合がある。<br />user_detail_viewのように、タブを開いたら常にそれをアクティブにしたほうが良い。</p>
mikutter - 機能 #909 (新規): IntentはURIを開く前に、短縮URLの展開を試みる
https://dev.mikutter.hachune.net/issues/909
2016-10-07T17:51:43Z
toshi_a 初音
toshi.alternative@gmail.com
<p>mikutter 3.4のopenimgは、画像を開く前に短縮URLの展開のために、次のようなコードが入っていた。</p>
<pre><code class="ruby syntaxhl"><span class="no">Plugin</span><span class="p">.</span><span class="nf">filtering</span><span class="p">(</span><span class="ss">:expand_url</span><span class="p">,</span> <span class="p">[</span><span class="n">shrinked_url</span><span class="p">])</span>
</code></pre>
<p>実際には、現状だとタイムラインに表示されたらURL展開が行われるため、URLが短縮されているせいで適切なIntentに到達できないということは早々ないので、intentプラグイン側で面倒を見たほうが良さそう。</p>
<p>または、例えばBitlyとかTCoという短縮URLのModelを定義しておいて、展開してopenイベントを発生するというIntentを定義した方がいいかも。この方法ならintentプラグインを触らず、URL展開系のプラグインの方で対応できる。</p>
mikutter - バグ #898 (新規): Message.findbyid の引数にIDのリストを渡したらクラッシュする
https://dev.mikutter.hachune.net/issues/898
2016-09-22T12:33:52Z
toshi_a 初音
toshi.alternative@gmail.com
<p>Message::Datasource#findbyid が、自身を再帰的に呼び出す時に渡す引数が不足している。</p>
<p><a class="external" href="http://dev.mikutter.hachune.net/projects/mikutter/repository/revisions/60c28e691faea4de924cdec5b28d04e951f155f1/entry/core/message.rb#L697">http://dev.mikutter.hachune.net/projects/mikutter/repository/revisions/60c28e691faea4de924cdec5b28d04e951f155f1/entry/core/message.rb#L697</a></p>
<p>このコードは、mikutterから呼ばれることはないのでクラッシュしないが、サードパーティプラグインがこれを利用した場合にクラッシュする可能性がある</p>
mikutter - 機能 #876 (新規): Activityの詳細画面
https://dev.mikutter.hachune.net/issues/876
2016-09-02T23:40:45Z
toshi_a 初音
toshi.alternative@gmail.com
<p><a class="issue tracker-2 status-5 priority-4 priority-default closed" title="機能: URIを渡すと適切な方法で開く機能 (終了)" href="https://dev.mikutter.hachune.net/issues/866">#866</a> の方法でActivityが開かれた時のUIを作る。</p>
<a name="ヘッダ部分"></a>
<h1 >ヘッダ部分<a href="#ヘッダ部分" class="wiki-anchor">¶</a></h1>
<p>通知のタイトル</p>
<a name="実装するタブ"></a>
<h1 >実装するタブ<a href="#実装するタブ" class="wiki-anchor">¶</a></h1>
<p>「関係するModel」タブをデフォルトでアクティブにしておく。</p>
<a name="関係するModel"></a>
<h2 >関係するModel<a href="#関係するModel" class="wiki-anchor">¶</a></h2>
<p>通知に関係するModelを詰めたTimeline。タイムラインだからここからいろいろできて最高</p>
<a name="詳細"></a>
<h2 >詳細<a href="#詳細" class="wiki-anchor">¶</a></h2>
<p>descriptionを表示する部分。ツイート詳細の本文みたいなやつ。異様に長い文字列が入る可能性があるので注意する。</p>