diff --git a/README.md b/README.md
index 44a1063..0b0436b 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,12 @@
-# みす廃あらーと
+# Misskey Tools (aka みす廃あらーと)
-みす廃あらーとは、Misskeyでのノート、フォロー、フォロワーの数および前日比を毎日0時にノートするサービスです。
+Misskey Toolsは、Misskeyのために設計された、様々な機能を取り揃えたアカウント管理ツールです。
+
+以前は「みす廃あらーと」という、Misskeyでのノート、フォロー、フォロワーの数および前日比を毎日0時にノートするサービスとして開発されていましたが、現在様々な機能に対応したオールインワンツールとして開発中です。
## 対応
-Misskey v10 以降および互換性のあるサーバー
+Misskey v10 以降およびGroundpolis, MeisskeyなどのMisskeyと互換性のあるサーバー
## ビルド
@@ -19,9 +21,9 @@ yarn build
yarn start
# デバッグ用に起動
-yarn watch
+yarn dev
```
## LICENSE
-[AGPL 3.0](LICENSE)
\ No newline at end of file
+[AGPL 3.0](LICENSE)
diff --git a/src/backend/views/_base.pug b/src/backend/views/_base.pug
deleted file mode 100644
index 977cac6..0000000
--- a/src/backend/views/_base.pug
+++ /dev/null
@@ -1,34 +0,0 @@
-include _components
-doctype html
-html
- head
- meta(charset="UTF-8")
- link(href='https://unpkg.com/sanitize.css' rel='stylesheet')
- meta(name="viewport", content="width=device-width, initial-scale=1.0")
- block meta
- - const title = 'みす廃アラート'
- - const desc = '✨Misskey での1日のノート数、フォロー数、フォロワー数をカウントし、深夜0時にお知らせする便利サービスです。';
- title= title
- meta(name='description' content=desc)
- meta(property='og:title' content=title)
- meta(property='og:description' content=desc)
- meta(property='og:type' content='website')
- meta(name='twitter:card' content='summary')
- meta(name='twitter:site' content='@Xeltica')
- meta(name='twitter:creator' content='@Xeltica')
- link(rel='stylesheet' href='/assets/style.css')
- block style
- body
- .background
- .xd-container.xd-vstack
- block content
- footer
- .xd-card
- a(href="/terms") 利用規約
- | ・
- +exta(href="https://github.com/Xeltica/misshaialert") リポジトリ
- p (C)2020-2021 Xeltica -
- a(href="/about") version #{version}
- block footer
- block script
- script(defer src='https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/js/all.min.js')
diff --git a/src/backend/views/_components.pug b/src/backend/views/_components.pug
deleted file mode 100644
index c999281..0000000
--- a/src/backend/views/_components.pug
+++ /dev/null
@@ -1,40 +0,0 @@
-mixin exta()
- a(href=attributes.href target="_blank" rel="noopener noreferrer")
- block
-
-mixin ranking()
- .xd-card
- .header
- h1.title みす廃ランキング
- .body
- p
- i.fas.fa-users
- strong 登録者数: !{usersCount}人
- if state && state.nowCalculating
- p 現在計算中です。後ほどご確認ください
- else
- +rankingTable()
- p: a(href="/ranking") 全員分見る
-
-mixin rankingTable()
- table
- thead: tr
- th 順位
- th ユーザー
- th レート
- tbody
- -
- let rank = 1;
- let lastRating = '';
- each rec in ranking
- - const rating = rec.rating.toFixed(2);
- tr
- td=rank
- td: +exta(href="https://" + rec.host + "/@" + rec.username) @!{rec.username}@!{rec.host}
- td=rating
- -
- if (lastRating !== rating) {
- rank++;
- }
- lastRating = rating
-
diff --git a/src/backend/views/about.pug b/src/backend/views/about.pug
deleted file mode 100644
index b3ec9a3..0000000
--- a/src/backend/views/about.pug
+++ /dev/null
@@ -1,10 +0,0 @@
-extends _base
-
-block content
- .xd-card
- h1: a(href="/") みす廃あらーと
- section
- h2 バージョン !{version}
- ul
- each log in changelog
- li= log
diff --git a/src/backend/views/error.pug b/src/backend/views/error.pug
deleted file mode 100644
index c4fb46b..0000000
--- a/src/backend/views/error.pug
+++ /dev/null
@@ -1,7 +0,0 @@
-extends _base
-
-block content
- h1: a(href="/") みす廃あらーと
- section.xd-card
- h2 エラー
- p= error
diff --git a/src/backend/views/mypage.pug b/src/backend/views/mypage.pug
deleted file mode 100644
index f6e1c05..0000000
--- a/src/backend/views/mypage.pug
+++ /dev/null
@@ -1,162 +0,0 @@
-extends _base
-
-block content
- .xd-card
- h1: a(href="/") みす廃あらーと
- h2 マイページ
- p おかえりなさい、@!{ user.username }@!{ user.host } さん。
-
- case from
- when "updateSettings"
- .xd-alert.my-2
- i.icon.fas.fa-thumbs-up
- strong 設定を変更しました。
- when "send"
- .xd-alert.my-2
- i.icon.fas.fa-thumbs-up
- strong テスト送信しました。
-
- if isGroundpolis
- .xd-alert.my-2
- i.icon.fas.fa-meteor
- strong Groundpolis アカウントでログインしています。専用機能が有効化されました。
-
- section#scores.xd-vstack
- .xd-hstack
- +ranking()
- .xd-card
- .header
- h1.title みす廃データ
- .body
- table
- thead
- tr
- th 内容
- th スコア
- th 前日比
- tbody
- tr
- td ノート
- td !{score.notesCount}
- td !{score.notesDelta}
- tr
- td フォロー
- td !{score.followingCount}
- td !{score.followingDelta}
- tr
- td フォロワー
- td !{score.followersCount}
- td !{score.followersDelta}
- tr
- td フォロワー
- td !{score.followersCount}
- td !{score.followersDelta}
- p みす廃レート: !{user.rating}
-
- section.xd-card#settings
- -
- const visibilities = [
- [ 'public', 'パブリック'],
- [ 'home', isGroundpolis ? '未収載' : 'ホーム'],
- [ 'followers', 'フォロワー'],
- ];
- if (isGroundpolis) visibilities.push(['users', 'ログインユーザー']);
- const alertModes = [
- [ 'note', '自動的にノートを投稿' ],
- [ 'notification', 'Misskeyに通知(標準)' ],
- [ 'nothing', '通知しない' ],
- ];
- const currentAlertModeLabel = alertModes.find(a => a[0] === user.alertMode)[1];
- .header
- h1.title 設定
- .body
- .xd-alert.danger.mb-2
- i.icon.fas.fa-exclamation-circle
- | スコア通知方法に「Misskey に通知」を選んでいる場合、Groundpolis v3 および Misskey v12 の最新版以外では動作しません。めいすきーや古いバージョンをお使いの方は、「自動的にノートを投稿」をお使いください。
- form(method="post", action="/update-settings")
- p: label スコア通知方法:
- select#alertModeSelector(name="alertMode")
- each set in alertModes
- option(value=set[0], selected=(user.alertMode === set[0]))= set[1]
- #hideWhenAlertModeNotNote
- p: label 公開範囲:
- select(name="visibility")
- each set in visibilities
- option(value=set[0], selected=(user.visibility === set[0]))= set[1]
- p
- | フラグ
- label
- input(type="radio", name="flag", value="none", checked=!user.localOnly && !user.remoteFollowersOnly)
- | なし(標準)
- label
- input(type="radio", name="flag", value="localOnly", checked=user.localOnly)
- | ローカルのみ
- if isGroundpolis
- label
- input(type="radio", name="flag", value="remoteFollowersOnly", checked=user.remoteFollowersOnly)
- | リモートフォロワーとローカル
- #hideWhenAlertModeNothing
- div
- label 投稿テンプレート
- textarea#template(name="template", maxlength=280, placeholder=defaultTemplate)=user.template || defaultTemplate
- details()
- summary ヘルプ
- ul
- li テンプレートに使える文字数は280文字です。
- li 空欄にすると、デフォルト値にリセットされます。
- li ハッシュタグ #misshaialert は、テンプレートに関わらず自動付与されます。
- li
- code {notesCount}
- | といった形式のテキストは変数として扱われ、これを含めると投稿時に自動的に値が埋め込まれます。
-
- p 変数の表を以下に示します。変数をクリックすると自動挿入されます。
- table
- thead: tr
- th 変数
- th 説明
- tbody
- each val, key in templateVariables
- tr
- td(onclick=`insert('{${key}}')`, style="cursor: pointer")=key
- td=val.description
- button.primary(type="submit") 保存
-
-
- section.xd-card#settings
- .header
- h1.title 操作
- .body
- form.mb-2(action="/send", method="post"): button#send(style="display: inline-block") アラートをテスト送信
- form.mb-2(action="/logout", method="post"): button#logout(style="display: inline-block") ログアウト
- form.mb-2(action="/optout", method="post"): button.danger#optout(style="display: inline-block") アカウント連携を解除する
-
-block script
- script.
- history.replaceState(null, null, '/');
- document.getElementById('send').addEventListener('click', (e) => {
- if (!confirm('現在の設定「!{currentAlertModeLabel}」に基づいてアラートを送信しますか?'))
- e.preventDefault();
- });
- document.getElementById('optout').addEventListener('click', (e) => {
- if (!confirm('連携を解除すると、統計情報などのデータが削除されてしまい、以後アラート機能をご利用いただけなくなります。この操作は変更できません。\n\nそれでもなお、連携を解除しますか?'))
- e.preventDefault();
- });
- document.getElementById('logout').addEventListener('click', (e) => {
- if (!confirm('ログアウトしますか?'))
- e.preventDefault();
- });
- const hideWhenAlertModeNotNote = document.getElementById('hideWhenAlertModeNotNote');
- const hideWhenAlertModeNothing = document.getElementById('hideWhenAlertModeNothing');
- const alertModeSelector = document.getElementById('alertModeSelector');
- const updateView = () => {
- const value = alertModeSelector.value;
- hideWhenAlertModeNotNote.style.display = value !== 'note' ? 'none' : 'block';
- hideWhenAlertModeNothing.style.display = value === 'nothing' ? 'none' : 'block';
- };
- alertModeSelector.addEventListener('change', updateView);
- updateView();
-
- const template = document.getElementById('template');
- function insert(text) {
- template.value += text;
- }
diff --git a/src/backend/views/ranking.pug b/src/backend/views/ranking.pug
deleted file mode 100644
index 1ef02f7..0000000
--- a/src/backend/views/ranking.pug
+++ /dev/null
@@ -1,15 +0,0 @@
-extends _base
-
-block content
- .xd-card
- h1: a(href="/") みす廃あらーと
- section
- h2 みす廃ランキング
- details
- summary これは何?
- p みす廃ランキングは、独自に算出された「みす廃レート」の高い順ランキングです。毎日みす廃あらーとが発行される度に更新されます。
- p みす廃レートは、登録日からの経過日数およびノート数から算出されます。
- if state.nowCalculating
- p 現在計算中です。後ほどご確認ください
- else
- +rankingTable
diff --git a/src/backend/views/term.pug b/src/backend/views/term.pug
deleted file mode 100644
index 4159ce1..0000000
--- a/src/backend/views/term.pug
+++ /dev/null
@@ -1,15 +0,0 @@
-extends _base
-
-block content
- .xd-card
- h1: a(href="/") みす廃あらーと
- section
- h2 利用規約
- ul
- li 本サービスは「現状のまま」「無保証」で提供されます。本サービスを利用したことによる損害などについて、管理人は一切責任を負わないものとします。
- li 本サービスは、Misskey プロジェクトとは一切関係がございません。
- li ユーザーはインスタンスの諸規約に従った上で本サービスを使うものとします。インスタンスの規約により、自動投稿が禁止されている場合は本サービスを使用しないでください。
- li 本サービスでは、接続先のアカウントが存在しない、トークンが失効してしまったなどの場合に、自動的にユーザーアカウントを削除します。
- li 本サービスの仕様は、事前の予告無しに変更される可能性があります。
- li 本サービスは、事前の予告無しに突然閉鎖される可能性があります。
- li 本規約は、事前の予告無しに変更される可能性があります。
diff --git a/src/backend/views/welcome.pug b/src/backend/views/welcome.pug
deleted file mode 100644
index 0741f5d..0000000
--- a/src/backend/views/welcome.pug
+++ /dev/null
@@ -1,45 +0,0 @@
-extends _base
-
-block content
- case from
- when 'logout'
- .xd-alert.danger: strong ログアウトしました。
- when 'optout'
- .xd-alert.danger: strong 連携を解除しました。
- .xd-card
- h1
- a(href="/") みす廃あらーと
- small: a(href="/about") #{version}
- h2= welcomeMessage
- section.xd-card
- p Misskey は楽しいものです。気がついたら1日中入り浸っていることも多いでしょう。
- p さあ、今すぐみす廃アラートをインストールして、今日のあなたの Misskey 活動を把握しよう。
- p 始める前に、
- a(href="/terms") 利用規約
- | を読んでください。
- form(action="/login", method="get")
- .xd-inputs
- input.xd-input(type="text" placeholder="ホスト名(例: misskey.io)" name="host" required)
- input.xd-button.primary(type="submit", value="ログイン")
- +ranking()
- section.xd-hstack
- .xd-card
- .header
- h1.title 開発者
- .body
- p 何か困ったことがあったら、以下のアカウントにメッセージを送ってください。
- ul
- li: +exta(href="https://misskey.io/@ebi") @ebi@misskey.io
- li: +exta(href="https://groundpolis.app/@X") @X@groundpolis.app
- li: +exta(href="https://twitter.com/Xeltica") @Xeltica@twitter.com
- li: +exta(href="mailto:xeltica@gmail.com") xeltica@gmail.com
- .xd-card
- .header
- h1.title タイムライン
- .body
- p 近いうちに、ここで #misshaialert タグのタイムラインを表示します。まだ工事中です
-
-
-block script
- script.
- history.replaceState(null, null, '/');