Giter VIP home page Giter VIP logo

mistdon's Introduction

attach:cat

JavaScript node.js Electron jQuery
release License Contact

MistdonはMastodonとMisskeyの統合Fediverseクライアントです。
MastodonやMisskeyの複数のインスタンスにアカウントを持つユーザーが、複数のアカウントを閲覧/管理するのが煩わしくならないように設計されています。
また、MastodonインスタンスのSkyBridgeに接続すればBlueskyアカウントを扱うことも可能です(※一部機能制限があります)。
もちろん、アカウントをひとつしか持っていない方や、Mastodonのみ、Misskeyのみ使用する方でもお使いいただけます。

MistdonであなたのFediverseライフがよりよいものになれば幸いです。

特徴的な機能

attach:cat

MastodonとMisskeyのネイティブ対応

Mastodonクライアントは数がありますが、MastodonとMisskeyはAPIの互換性がないため、MastodonクライアントからMisskeyのアカウントを使用することは基本的にできません。
MistdonはMastodonとMisskey両方のAPIにネイティブ対応することで、両方のプラットフォームのアカウントをひとつのアプリケーションで管理できるようにすることを可能にしています。

インスタンスをまたいだ機能の簡略化

通常MastodonもMisskeyも、あるインスタンスから見えている投稿を別のインスタンスからブースト/リノート/お気に入りなどをしたりするのに、投稿URLをコピーして検索するという煩雑な手順を踏まなければなりません。
Mistdonはその手順を内部的に自動化することで、右クリックからアカウントを選択するだけで別のインスタンスのアカウントから手軽に行うことができます。

リモートAPIへの直接的なアクセス

通常リモートインスタンスの投稿を特定のインスタンスから見た時は、インプレッション数やユーザーアイコンなどの情報が不完全なことが多いです。
Mistdonは投稿やユーザーを詳細表示するときに、リモート先のAPIを直接呼び出して情報を取得するため、情報が欠落することがありません。
もちろんそこから自分のインスタンスへのブースト/リノート/お気に入りなども右クリックから簡単に行えます。

縦と横に広がるマルチカラムタイムライン

複数のタイムラインを、横と縦それぞれに並べることで、画面内に複数のアカウントのタイムラインを俯瞰的に表示することができます。
また、ひとつのタイムラインに複数のタイムラインを混在させることができ、例えばアカウントAのタイムラインとアカウントBのタイムラインを同じタイムライン内に時系列順に表示させることもできます。

豊富なタイムラインレイアウト

タイムラインに表示される投稿を、一般的なSNSのような表示形式から、LINEのような対話式チャットのようなレイアウト、極限まで情報を削って1行で表示されるレイアウト、メディアを大々的に表示するレイアウトなどから選ぶことができます。
これはタイムラインごとに設定することが可能で、これにより既存のSNSクライアントの枠にとらわれない、幅広い形式でタイムラインを表示することが可能となります。

インストールガイド

右のReleaseのリンクから最新バージョンのZIPをダウンロードして任意のフォルダに解凍してお使いください。
設定ファイルはユーザーフォルダに保存されているため、アップデート時に設定ファイルをコピーしたりする必要はありません。

バグ報告など

使用感やバグ報告などをハッシュタグ「#Mistdon」でFediverse上に投稿してもらえると助かります!
所属インスタンスの関係ですべては拾いきれないかもしれませんが、できる限り拾っていきたいと思います。
より深刻なバグだと感じた場合はIssueに投稿してもらえると確実に確認できるので助かります。

License

Copyright (C) 2023-2024 [email protected]
This program is free software: you can redistribute it and/or modify it under the terms of LGPL.
See also: https://www.gnu.org/licenses/

mistdon's People

Contributors

tizerm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

mistdon's Issues

ドメイン名の末尾にスラッシュが付いた状態で認証できてしまう

#61 で修正された読み込み不良の不具合に関して少し調べたところ、認証しているアカウントの一部にてドメイン名の末尾にスラッシュが付いていることに気づきました。
そこでMistdonの設定ファイルを覗いてみたところ、カスタム絵文字キャッシュ関連のファイル構造が以下のようになっていました。

app_prefs
├ emojis
│├ fedibird.com
││└ .json
│└ social.vivaldi.net.json
├ auth.json
├ columns.json
├ emoji_history.json
├ general_pref.json
└ history.json

ドメイン名の末尾にスラッシュが付いていたことによりカスタム絵文字キャッシュのディレクトリ構造に異常が生じ、正しく認識されず、v1.2.1での読み込み不良につながったと考えます。

[要検討] ウィンドウの縦幅が狭い場合、ポップアップ表示で投稿が表示しきれない時がある

げっとさんご報告ありがとうございます。
ウィンドウの縦幅が狭くて、特に文字数制限に引っかかった投稿のうち縦に長い投稿で起きるみたいです。
一応詳細表示をすればスクロールできる状態になるので、詳細表示(投稿時間をクリック)を使うことをオススメします。

これ対応したほうがいいかな……。

[Prototype] ショートカットホイール機能について

v0.5.1に組み込む予定の機能だったんですが、自分で使っているうちに「これほんとにいるのか……?」って感じてきたので、一旦プロトタイプとしてIssueに上げることにしました。
具体的にはクリック長押しで発動して対象アカウントでドラッグ&ドロップすることによりお気に入り/BTRN/リアクションをワンタッチで使えるようにする機能なんですが、自分がテキストコピーでドラッグ&ドロップを多用するので、暴発してうぜえな……って思ってしまったんですよね……。
全体設定でON/OFFを切り替えられるようにするのがまず第1段階かなあ、と思ってます。

Misskeyの通知欄に実績解除が来るとバグる

Misskeyの通知欄に実績解除が来るとバグる。
そのまんますぎるんだが実績解除のレスポンスで来るJSONの情報量が少なすぎてundefinedになるんだわ。
getIntegratedPostメソッドの方はNullable対応して通過するように一旦しといたけど、根本的に実績用の表示を追加するかスルーするか考えないと統合した他の通知やタイムラインもまとめて出てこねえ。
とりあえず今日は遅いので一旦Issueだけ書いておきます。

[v2.0.0~] 一時タイムライン機能について

v0.5.1実装予定機能のメモ。
「常駐させておくほどでもないけどちょっとしたときに眺めたいタイムラインを保存する設定項目」を作ったほうがいいかなあと思って。
とりあえず自由移動型ウィンドウにしたい。一時的に表示させるものなので。
遡上させるかどうかは検討中。キャッシュの関係で無限に重くなる可能性もあるかもしれんし。

[v1.1.0] 引用ノート上にリンクがあると踏んだときにElectronウィンドウ側でブラウジングしてしまう

またしてもげっとさんありがとうございます。
外部ブラウザ起動のイベント定義が甘かった……。
一応ローカルでは直したけどv1.1.0でのリリースにしようかなあと思ってます。
引用ノートをクリックしてポップアップ表示してからリンクをクリックすればちゃんと外部ブラウザで開くので、一旦それでリンク開いてください。
お手数おかけして申し訳ない……。

[v1.0.0] 処理実行通知体系を変更

メディア投稿を実装した関係で待機時間の長い非同期処理が多めに出るようになったので、現状のままの処理実行通知体系だと画面に長いこと通知トーストが居座り続けることになって邪魔なので、バックグラウンドでやってます、ってアピールする感じの表示に変えたいと思ってます。
そのためのアニメーションミトリンも描き下ろさないといけないなあ……。

あ、あと、(定期的な)WebSocket切断通知はさすがにうっとおしいので専用の通知画面作ろうと思います。

[v1.0.0] 全体設定機能について

どのバージョンに仕込むか未定になってしまったのでプロトタイプとしてIssueにあげておく。
フォントサイズ、全体レイアウト、その他諸々を設定できる全体設定機能をつけようと思ってるんですが、効果範囲が全体に及ぶ関係で実装がなかなか難しく、どうしようかなあと悩んでるところです。
v1.0.0までには組み込みたい。

[v2.0.0~] クリップ機能について

v1.0.0でリリースする予定だったんですが、Misskey限定の機能であること、体裁が整ってないこと、クリップに追加する機能も必要かと思って、一旦v1.0.0ではお蔵入りにしました。
これいるかね……。

[v2.0.0~] 通知マージ機能

ツイッターみたいに通知をある程度のまとまりにする機能をつけようと思ったんだけど、なんかバグってるので一旦プロトタイプとして退避しました。
やるとしてもv1.1.0以降だな……。

[v1.2.0] 文字サイズ変更機能

いつか入れなきゃなあと思ってたんですけどやっぱ入れたほうがいいですねこれ!
リストレイアウトどうしよっかなあ

[v0.5.1] タイムライン遡り機能について

v0.5.1実装予定機能のメモ。
現状考えているのは専用のグループと別のところで考えている一時カラムを使用して、特定の投稿を起点にして遡るためのタイムラインを生成すること。
今見ているタイムラインを遡上可能にする案も考えたんだけど、リアルタイムに更新されるものと遡って表示されるものを別々に見たいという個人的な願望があるのでこの方式のほうがいいかなあと……。

[v0.5.1]ヘルプ内誤植

概要

ヘルプ内の上部目次に「v0.4.1で実装されていない基本機能について」という項目がありますが、本文内の見出しでは「v0.5.1で実装されていない基本機能について」となっています。誤植と考えられますので、対応よろしくお願いします
mistdon_bug_image

[マジでわからん] Misskeyの認証解除について

現状Misskeyの認証解除はただ単に設定ファイルから行を消しているだけでアクセストークンのrevoke処理を行っていないので、外部にアクセストークンを保存していればそれを使ってAPIにアクセスできるようになっている状態です。
API Docにrevokeの仕様が書いてなかったから……。
とりあえずいつかはやらなあかんということで忘備録。

AethyにWebSocket接続できない

海外のマストドンインスタンスのひとつであるAethy(aethy.com)にWebSocketでStreaming APIに接続しようとするとHTTP 301 ERRORが返ってきて接続できない。
HTTP 301はホームページ移転のステータスコードなのでURLがおかしいんかと思ったんですが、/api/v2/instance呼んでconfiguration.urls.streamingを見てもURLは間違ってないんだわ。
v3.3.x以前のクエリパラメータを使うAPI使ってるのがよくないんかね……、このインスタンス独自実装を組み込んでるのでなんかあるのかもしれん。
一旦緊急性が低いので(このクライアント使う人にAethyユーザーいる???)Issueに投げてあとでなんとかします。

[v0.5.1] カスタム絵文字履歴/改良型サジェスト機能について

v0.5.1実装予定機能のメモ。
最近使ったカスタム絵文字およびリアクションを10件まで保存する。
あと投稿欄に入力中にコロンスタートでカスタム絵文字のサジェストウィンドウを出したい。
今のカスタム絵文字パレットは俯瞰的にみるにはいいんだけど、よく使う絵文字を瞬間的に引き出す機能に欠けているので……。
あと右クリックからリアクションするときにコンテキストメニューにカスタム絵文字履歴を表示したい。

Misskeyのリストに対してWebSocket接続すると謎のノートが流れてくる

具体的には
https://github.com/tizerm/Mistdon/blob/main/main.js#L266
この行のWebSocketパラメータを渡してWebSocket接続するとリスト全然関係ない謎のノートが流れてくる。

https://github.com/misskey-dev/misskey/blob/develop/packages/backend/src/server/api/stream/channels/user-list.ts
一応ここ見て設定してみたんだけど、Misskeyのバグなのか、なんか設定の仕方が悪いのかどっちだ……?
(v0.4.1では勝手に変なノートが流れてくると使い物にならんので自動更新を切っています)

画像サムネイルのサイズ変更機能および表示数の変更機能

カラム数が少ないor横幅が大きいと(チャットレイアウトだとしても)画像が大きくなりすぎてしまう為、
「サムネイルの最大サイズ(px)」を指定して横に並ぶ数を自由に決められるようにして、
おまけとしてホームレイアウト時もデフォルトで5枚以上表示できるようにしてほしいです。
(製作者さんしかIssue書いてないけどここに書いて大丈夫だったでしょうか…?)

[v2.0.0~] アプリ終了時の既読マーカー保存と呼び出し機能

アプリの終了時、もしくは特殊リロードで「その時点での最も新しい投稿」のIDを各タイムラインごとに保存しておいて、次回起動時に遡りウィンドウで復元できるようにしたい。
昔のツイッタークライアントにあった「未読管理」のMistdonなりの表現方法です。
v1.x.xに組み込むかv2.0.0に組み込むかで悩み中。

[v1.2.0] WebSocket再接続機能

WebSocket接続が「エラーで」切断されたときに、いちいち再接続するのに画面全体を更新するのもバカらしいので切断されたインスタンスに絞って再接続する機能をつけたほうがいいと思いましたまる。

[v0.5.1かも]Tips機能

あまりにも機能が飽和しすぎて絶対ユーザーがヘルプをめんどくさがって見なくなると思って、任意でTipsを表示できるようにしようと思ってます。
電光掲示板みたいに……。

ウィンドウ幅が狭すぎると投稿欄が崩れる

現状ウィンドウ横幅が640px程度だと投稿欄が崩れてまともに使えなくなります。
この問題を放置していたのはそもそも複数のアカウントを持つ人がそんな狭いウィンドウ幅でこのクライアント使うわけないやろという思い込みからだったんですが、冷静に考えて複数のアカウントを持つ人が単一カラムでも管理できるのがこのクライアントの特徴だというのがすっぽり頭から抜け落ちていました……。
これはなんとかしないとUXに影響が出るのでv0.2.xあたりでなんとかしたいですね……。

[v1.0.0] メディア投稿機能について

重い腰を上げて画像とかも投稿できるようにしたほうがいいかな!と思い始めたので、この機能を入れた時が正式バージョン(v1.0.0)としたいと思います!
とりあえず方針だけ立てたので現状どうするかなにも考えていない……。

【要望】Shift+Enterは投稿より改行の方が直感的?

現在(1.1.0)投稿画面でShift+Enterを押すと投稿フォームのフォーカスを維持して投稿される仕様になっていますが、Shift+Enterは一般的に改行に割り当てられることが多いのではないでしょうか(Discord,LINE,Signalなど)
単独のEnterは割り当てられる操作が改行か投稿かアプリケーションによって異なる一方、Shift+Enterは多くのアプリケーションで改行に割り当てられるため、Mistdonでも投稿ではなく改行に割り当て、現在のShift+Enterは別のショートカットキーに割り当てた方がよりわかりやすい操作感になると思います

[v1.0.0] 送信履歴画面のページ送り対応

今100件の送信履歴をいっぺんにRequest送って取得しているんですが、あまりにもRequest送りすぎなので、ページ送りできるようにしようと思います。
APIのページ送りと勝手が違うのでうまく実装できるか……。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.