diff --git a/CHANGELOG.md b/CHANGELOG.md index b445c47625..158b10e321 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,23 @@ --> +## 12.x.x (unreleased) + +### Improvements +- API: /antennas/notes API で日付による絞り込みができるように +- クライアント: アンケートに投票する際に確認ダイアログを出すように +- クライアント: Renoteなノート詳細ページから元のノートページに遷移できるように + +### Bugfixes +- クライアント: ログインにおいてパスワードが誤っている際のエラーメッセージが正しく表示されない問題を修正 +- クライアント: リアクションツールチップ、Renoteツールチップのユーザーの並び順を修正 +- クライアント: サウンドのマスターボリュームが正しく保存されない問題を修正 +- クライアント: 一部環境において通知が表示されると操作不能になる問題を修正 +- クライアント: モバイルでタップしたときにツールチップが表示される問題を修正 + +### Changes +- クライアント: ノートにモデレーターバッジを表示するのを廃止 + ## 12.97.0 (2021/11/19) ### Improvements diff --git a/README.md b/README.md index ce94a054ce..799be299d5 100644 --- a/README.md +++ b/README.md @@ -1,116 +1,57 @@ [![Misskey](https://github.com/misskey-dev/assets/blob/main/banner.png?raw=true)](https://join.misskey.page/) -

Misskey

-
-[![Dependencies](https://img.shields.io/david/misskey-dev/misskey.svg?style=for-the-badge&logo=npm)](https://david-dm.org/misskey-dev/misskey) -[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge&logo=github)](http://makeapullrequest.com) -[![Awesome Humane Tech](https://raw.githubusercontent.com/humanetech-community/awesome-humane-tech/main/humane-tech-badge.svg?sanitize=true)](https://github.com/humanetech-community/awesome-humane-tech) +**🌎 A forever evolving, interplanetary microblogging platform. 🚀** -**A forever evolving, interplanetary microblogging platform.** +**Misskey** is a distributed microblogging platform with advanced features such as Reactions and a highly customizable UI. -Misskey is a decentralized microblogging platform born on Earth. -Since it exists within the Fediverse (a universe where various social media platforms are organized), -it is mutually linked with other social media platforms. -Why don't you take a short break from the hustle and bustle of the city, and dive into a new Internet? Find an instance! +[Learn more](https://misskey-hub.net/) + +--- + +[✨ Find an instance](https://misskey-hub.net/instances.html) +• +[📦 Create your own instance](https://misskey-hub.net/docs/install.html) +• +[🛠️ Contribute](./CONTRIBUTING.md) +• +[🚀 Join the community](https://discord.gg/Wp8gVStHW3) + +--- Become a Patron!
---- +
-Do you have a question? Or are you experiencing trouble? -Visit [our forum](https://forum.misskey.io/)! + ---- +## ✨ Features +- **ActivityPub support**\ + It is possible to interact with other software. +- **Reactions**\ + You can add "reactions" to each post, making it easy for you to express your feelings. +- **Drive**\ + An interface to manage uploaded files such as images, videos, sounds, etc. + You can also organize your favorite content into folders, making it easy to share again. +- **Rich Web UI**\ + Misskey has a rich WebUI by default. + It is highly customizable by flexibly changing the layout and installing various widgets and themes. + Furthermore, plug-ins can be created using AiScript, a original programming language. +- and more... -![](https://ja.mstdn.wiki/images/e/ed/Deck.jpg) +
-:sparkles: Features ----------------------------------------------------------------- - +
-

Posting

-

-Post your ideas, discussion topics, fun moments, or anything else you want to share! Misskey supports text, emoji, pictures, videos, and polls! -

- ---- - -

Reactions

-

-Reactions are the simplest way to respond to others' posts. Simply pick a reaction emote from the list! Reactions on Misskey are much more expressive than other social media services which only allow “liking”. -

- ---- - -

Interface

-

-Customize the UI to your own tastes! No UI will work for everyone, so Misskey is completely customizable. Make Misskey *yours* by editing the style, adjusting timeline layouts, and placing widgets. -

- ---- - -

Misskey Drive

-

-Organize and store your files! Want to post a picture you have already uploaded? Wish you could organize your files into folders? Misskey Drive is a solution! -

- ---- - -...and more! - -:package: Create your own instance ----------------------------------------------------------------- -Please see the [Setup and Installation Guide](https://misskey-hub.net/docs/install/install.html). - -:wrench: Contribution ----------------------------------------------------------------- -Please see the [Contribution Guide](./CONTRIBUTING.md). - -### Collaborators - - - - - - - - - - - - - - - - - - - - - -
syuiloAyaMorisawamei23acid-chickenrinsukitamainaXelticau1-liquid
@syuilo@AyaMorisawa@mei23@acid-chicken@rinsuki@tamaina@Xeltica@u1-liquid
- ---- - -To receive updates of this repo, follow [@repo@misskey.io](https://misskey.io/@repo) on fediverse. - -Related projects ----------------------------------------------------------------- -- [misskey.js](https://github.com/misskey-dev/misskey.js) - Misskey SDK for JavaScript -- [mfm.js](https://github.com/misskey-dev/mfm.js) - MFM parser - -Sponsors ----------------------------------------------------------------- +## Sponsors
RSS3
-:heart: Backers ----------------------------------------------------------------- +## Backers diff --git a/locales/en-US.yml b/locales/en-US.yml index 37da6fdc95..c5c8afb50f 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -931,6 +931,8 @@ _mfm: rainbowDescription: "Makes the content appear in rainbow colors." sparkle: "Sparkle" sparkleDescription: "Gives content a sparkling particle effect." + rotate: "Rotate" + rotateDescription: "Rotates the content by 90 degrees" _reversi: reversi: "Reversi" gameSettings: "Game settings" diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 9877248eb3..d5fcd2d406 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -808,6 +808,8 @@ ffVisibility: "つながりの公開範囲" ffVisibilityDescription: "自分のフォロー/フォロワー情報の公開範囲を設定できます。" continueThread: "さらにスレッドを見る" deleteAccountConfirm: "アカウントが削除されます。よろしいですか?" +incorrectPassword: "パスワードが間違っています。" +voteConfirm: "「{choice}」に投票しますか?" _emailUnavailable: used: "既に使用されています" @@ -823,7 +825,7 @@ _ffVisibility: _signup: almostThere: "ほとんど完了です" - emailAddressInfo: "あなたが使っているメールアドレスを入力してください。" + emailAddressInfo: "あなたが使っているメールアドレスを入力してください。メールアドレスが公開されることはありません。" emailSent: "入力されたメールアドレス({email})宛に確認のメールが送信されました。メールに記載されたリンクにアクセスすると、アカウントの作成が完了します。" _accountDelete: @@ -944,6 +946,8 @@ _mfm: rainbowDescription: "内容をレインボーにします。" sparkle: "キラキラ" sparkleDescription: "キラキラしたパーティクルのエフェクトを追加します。" + rotate: "回転" + rotateDescription: "指定した角度で回転させます。" _reversi: reversi: "リバーシ" diff --git a/packages/backend/src/server/api/endpoints/antennas/notes.ts b/packages/backend/src/server/api/endpoints/antennas/notes.ts index 1759e95b4c..02fec2778b 100644 --- a/packages/backend/src/server/api/endpoints/antennas/notes.ts +++ b/packages/backend/src/server/api/endpoints/antennas/notes.ts @@ -33,6 +33,14 @@ export const meta = { untilId: { validator: $.optional.type(ID), }, + + sinceDate: { + validator: $.optional.num, + }, + + untilDate: { + validator: $.optional.num, + }, }, errors: { @@ -68,7 +76,8 @@ export default define(meta, async (ps, user) => { .select('joining.noteId') .where('joining.antennaId = :antennaId', { antennaId: antenna.id }); - const query = makePaginationQuery(Notes.createQueryBuilder('note'), ps.sinceId, ps.untilId) + const query = makePaginationQuery(Notes.createQueryBuilder('note'), + ps.sinceId, ps.untilId, ps.sinceDate, ps.untilDate) .andWhere(`note.id IN (${ antennaQuery.getQuery() })`) .innerJoinAndSelect('note.user', 'user') .leftJoinAndSelect('note.reply', 'reply') diff --git a/packages/backend/tools/accept-migration.ts b/packages/backend/src/tools/accept-migration.ts similarity index 100% rename from packages/backend/tools/accept-migration.ts rename to packages/backend/src/tools/accept-migration.ts diff --git a/packages/backend/tools/add-emoji.ts b/packages/backend/src/tools/add-emoji.ts similarity index 83% rename from packages/backend/tools/add-emoji.ts rename to packages/backend/src/tools/add-emoji.ts index 9ffe7dfa81..6c750bcab0 100644 --- a/packages/backend/tools/add-emoji.ts +++ b/packages/backend/src/tools/add-emoji.ts @@ -1,7 +1,10 @@ -import { Emojis } from '@/models/index'; +import { initDb } from '@/db/postgre'; import { genId } from '@/misc/gen-id'; async function main(name: string, url: string, alias?: string): Promise { + await initDb(); + const { Emojis } = await import('@/models/index'); + const aliases = alias != null ? [ alias ] : []; await Emojis.save({ diff --git a/packages/backend/tools/demote-admin.ts b/packages/backend/src/tools/demote-admin.ts similarity index 81% rename from packages/backend/tools/demote-admin.ts rename to packages/backend/src/tools/demote-admin.ts index d7c6d1cec2..b326c946ef 100644 --- a/packages/backend/tools/demote-admin.ts +++ b/packages/backend/src/tools/demote-admin.ts @@ -1,13 +1,11 @@ import { initDb } from '../db/postgre'; -import { getRepository } from 'typeorm'; -import { User } from '@/models/entities/user'; async function main(username: string) { if (!username) throw `username required`; username = username.replace(/^@/, ''); await initDb(); - const Users = getRepository(User); + const { Users } = await import('@/models/index'); const res = await Users.update({ usernameLower: username.toLowerCase(), diff --git a/packages/backend/tools/mark-admin.ts b/packages/backend/src/tools/mark-admin.ts similarity index 81% rename from packages/backend/tools/mark-admin.ts rename to packages/backend/src/tools/mark-admin.ts index 62ed0f09ee..0833f22266 100644 --- a/packages/backend/tools/mark-admin.ts +++ b/packages/backend/src/tools/mark-admin.ts @@ -1,13 +1,11 @@ import { initDb } from '../db/postgre'; -import { getRepository } from 'typeorm'; -import { User } from '@/models/entities/user'; async function main(username: string) { if (!username) throw `username required`; username = username.replace(/^@/, ''); await initDb(); - const Users = getRepository(User); + const { Users } = await import('@/models/index'); const res = await Users.update({ usernameLower: username.toLowerCase(), diff --git a/packages/backend/tools/refresh-question.ts b/packages/backend/src/tools/refresh-question.ts similarity index 63% rename from packages/backend/tools/refresh-question.ts rename to packages/backend/src/tools/refresh-question.ts index 98a3c2865f..3bbb781ae7 100644 --- a/packages/backend/tools/refresh-question.ts +++ b/packages/backend/src/tools/refresh-question.ts @@ -1,6 +1,9 @@ -import { updateQuestion } from '@/remote/activitypub/models/question'; +import { initDb } from '@/db/postgre'; async function main(uri: string): Promise { + await initDb(); + const { updateQuestion } = await import('@/remote/activitypub/models/question'); + return await updateQuestion(uri); } diff --git a/packages/backend/tools/resync-remote-user.ts b/packages/backend/src/tools/resync-remote-user.ts similarity index 100% rename from packages/backend/tools/resync-remote-user.ts rename to packages/backend/src/tools/resync-remote-user.ts diff --git a/packages/backend/tools/show-signin-history.ts b/packages/backend/src/tools/show-signin-history.ts similarity index 91% rename from packages/backend/tools/show-signin-history.ts rename to packages/backend/src/tools/show-signin-history.ts index ad92316314..1291a1b22f 100644 --- a/packages/backend/tools/show-signin-history.ts +++ b/packages/backend/src/tools/show-signin-history.ts @@ -1,4 +1,4 @@ -import { Users, Signins } from '@/models/index'; +import { initDb } from '@/db/postgre'; // node built/tools/show-signin-history username // => {Success} {Date} {IPAddrsss} @@ -10,6 +10,9 @@ import { Users, Signins } from '@/models/index'; // with full request headers async function main(username: string, headers?: string[]) { + await initDb(); + const { Users, Signins } = await import('@/models/index'); + const user = await Users.findOne({ host: null, usernameLower: username.toLowerCase(), diff --git a/packages/backend/tools/accept-migration.js b/packages/backend/tools/accept-migration.js deleted file mode 100644 index 309a4ab5e3..0000000000 --- a/packages/backend/tools/accept-migration.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; -// ex) node built/tools/accept-migration Yo 1000000000001 -Object.defineProperty(exports, "__esModule", { value: true }); -const typeorm_1 = require("typeorm"); -const index_1 = require("@/config/index"); -(0, typeorm_1.createConnection)({ - type: 'postgres', - host: index_1.default.db.host, - port: index_1.default.db.port, - username: index_1.default.db.user, - password: index_1.default.db.pass, - database: index_1.default.db.db, - extra: index_1.default.db.extra, - synchronize: false, - dropSchema: false, -}).then(c => { - c.query(`INSERT INTO migrations(timestamp,name) VALUES (${process.argv[3]}, '${process.argv[2]}${process.argv[3]}');`).then(() => { - console.log('done'); - process.exit(0); - }).catch(e => { - console.log('ERROR:'); - console.log(e); - process.exit(1); - }); -}); -//# sourceMappingURL=accept-migration.js.map \ No newline at end of file diff --git a/packages/backend/tools/accept-migration.js.map b/packages/backend/tools/accept-migration.js.map deleted file mode 100644 index c158a49661..0000000000 --- a/packages/backend/tools/accept-migration.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"accept-migration.js","sourceRoot":"","sources":["accept-migration.ts"],"names":[],"mappings":";AAAA,yDAAyD;;AAEzD,qCAA2C;AAC3C,0CAAoC;AAEpC,IAAA,0BAAgB,EAAC;IAChB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,eAAM,CAAC,EAAE,CAAC,IAAI;IACpB,IAAI,EAAE,eAAM,CAAC,EAAE,CAAC,IAAI;IACpB,QAAQ,EAAE,eAAM,CAAC,EAAE,CAAC,IAAI;IACxB,QAAQ,EAAE,eAAM,CAAC,EAAE,CAAC,IAAI;IACxB,QAAQ,EAAE,eAAM,CAAC,EAAE,CAAC,EAAE;IACtB,KAAK,EAAE,eAAM,CAAC,EAAE,CAAC,KAAK;IACtB,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE,KAAK;CACjB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;IACX,CAAC,CAAC,KAAK,CAAC,kDAAkD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;QAChI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QACZ,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/backend/tools/add-emoji.js b/packages/backend/tools/add-emoji.js deleted file mode 100644 index df02f554a5..0000000000 --- a/packages/backend/tools/add-emoji.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const index_1 = require("@/models/index"); -const gen_id_1 = require("@/misc/gen-id"); -async function main(name, url, alias) { - const aliases = alias != null ? [alias] : []; - await index_1.Emojis.save({ - id: (0, gen_id_1.genId)(), - host: null, - name, - url, - aliases, - updatedAt: new Date() - }); -} -const args = process.argv.slice(2); -const name = args[0]; -const url = args[1]; -if (!name) - throw new Error('require name'); -if (!url) - throw new Error('require url'); -main(name, url).then(() => { - console.log('success'); - process.exit(0); -}).catch(e => { - console.warn(e); - process.exit(1); -}); -//# sourceMappingURL=add-emoji.js.map \ No newline at end of file diff --git a/packages/backend/tools/add-emoji.js.map b/packages/backend/tools/add-emoji.js.map deleted file mode 100644 index 03bf31b984..0000000000 --- a/packages/backend/tools/add-emoji.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"add-emoji.js","sourceRoot":"","sources":["add-emoji.ts"],"names":[],"mappings":";;AAAA,0CAAwC;AACxC,0CAAsC;AAEtC,KAAK,UAAU,IAAI,CAAC,IAAY,EAAE,GAAW,EAAE,KAAc;IAC5D,MAAM,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAE,KAAK,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAE/C,MAAM,cAAM,CAAC,IAAI,CAAC;QACjB,EAAE,EAAE,IAAA,cAAK,GAAE;QACX,IAAI,EAAE,IAAI;QACV,IAAI;QACJ,GAAG;QACH,OAAO;QACP,SAAS,EAAE,IAAI,IAAI,EAAE;KACrB,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACrB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAEpB,IAAI,CAAC,IAAI;IAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;AAC3C,IAAI,CAAC,GAAG;IAAE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;AAEzC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;IACzB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/backend/tools/demote-admin.js b/packages/backend/tools/demote-admin.js deleted file mode 100644 index d6a296883a..0000000000 --- a/packages/backend/tools/demote-admin.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const postgre_1 = require("../db/postgre"); -const typeorm_1 = require("typeorm"); -const user_1 = require("@/models/entities/user"); -async function main(username) { - if (!username) - throw `username required`; - username = username.replace(/^@/, ''); - await (0, postgre_1.initDb)(); - const Users = (0, typeorm_1.getRepository)(user_1.User); - const res = await Users.update({ - usernameLower: username.toLowerCase(), - host: null - }, { - isAdmin: false - }); - if (res.affected !== 1) { - throw 'Failed'; - } -} -const args = process.argv.slice(2); -main(args[0]).then(() => { - console.log('Success'); - process.exit(0); -}).catch(e => { - console.error(`Error: ${e.message || e}`); - process.exit(1); -}); -//# sourceMappingURL=demote-admin.js.map \ No newline at end of file diff --git a/packages/backend/tools/demote-admin.js.map b/packages/backend/tools/demote-admin.js.map deleted file mode 100644 index 4403e2bab0..0000000000 --- a/packages/backend/tools/demote-admin.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"demote-admin.js","sourceRoot":"","sources":["demote-admin.ts"],"names":[],"mappings":";;AAAA,2CAAuC;AACvC,qCAAwC;AACxC,iDAA8C;AAE9C,KAAK,UAAU,IAAI,CAAC,QAAgB;IACnC,IAAI,CAAC,QAAQ;QAAE,MAAM,mBAAmB,CAAC;IACzC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEtC,MAAM,IAAA,gBAAM,GAAE,CAAC;IACf,MAAM,KAAK,GAAG,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAC;IAElC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;QAC9B,aAAa,EAAE,QAAQ,CAAC,WAAW,EAAE;QACrC,IAAI,EAAE,IAAI;KACV,EAAE;QACF,OAAO,EAAE,KAAK;KACd,CAAC,CAAC;IAEH,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;QACvB,MAAM,QAAQ,CAAC;KACf;AACF,CAAC;AAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;IACvB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACZ,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/backend/tools/mark-admin.js b/packages/backend/tools/mark-admin.js deleted file mode 100644 index 4563d9c332..0000000000 --- a/packages/backend/tools/mark-admin.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const postgre_1 = require("../db/postgre"); -const typeorm_1 = require("typeorm"); -const user_1 = require("@/models/entities/user"); -async function main(username) { - if (!username) - throw `username required`; - username = username.replace(/^@/, ''); - await (0, postgre_1.initDb)(); - const Users = (0, typeorm_1.getRepository)(user_1.User); - const res = await Users.update({ - usernameLower: username.toLowerCase(), - host: null - }, { - isAdmin: true - }); - if (res.affected !== 1) { - throw 'Failed'; - } -} -const args = process.argv.slice(2); -main(args[0]).then(() => { - console.log('Success'); - process.exit(0); -}).catch(e => { - console.error(`Error: ${e.message || e}`); - process.exit(1); -}); -//# sourceMappingURL=mark-admin.js.map \ No newline at end of file diff --git a/packages/backend/tools/mark-admin.js.map b/packages/backend/tools/mark-admin.js.map deleted file mode 100644 index 5633e2f894..0000000000 --- a/packages/backend/tools/mark-admin.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"mark-admin.js","sourceRoot":"","sources":["mark-admin.ts"],"names":[],"mappings":";;AAAA,2CAAuC;AACvC,qCAAwC;AACxC,iDAA8C;AAE9C,KAAK,UAAU,IAAI,CAAC,QAAgB;IACnC,IAAI,CAAC,QAAQ;QAAE,MAAM,mBAAmB,CAAC;IACzC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEtC,MAAM,IAAA,gBAAM,GAAE,CAAC;IACf,MAAM,KAAK,GAAG,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAC;IAElC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;QAC9B,aAAa,EAAE,QAAQ,CAAC,WAAW,EAAE;QACrC,IAAI,EAAE,IAAI;KACV,EAAE;QACF,OAAO,EAAE,IAAI;KACb,CAAC,CAAC;IAEH,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;QACvB,MAAM,QAAQ,CAAC;KACf;AACF,CAAC;AAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;IACvB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACZ,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/backend/tools/refresh-question.js b/packages/backend/tools/refresh-question.js deleted file mode 100644 index 0536c38207..0000000000 --- a/packages/backend/tools/refresh-question.js +++ /dev/null @@ -1,14 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const question_1 = require("@/remote/activitypub/models/question"); -async function main(uri) { - return await (0, question_1.updateQuestion)(uri); -} -const args = process.argv.slice(2); -const uri = args[0]; -main(uri).then(result => { - console.log(`Done: ${result}`); -}).catch(e => { - console.warn(e); -}); -//# sourceMappingURL=refresh-question.js.map \ No newline at end of file diff --git a/packages/backend/tools/refresh-question.js.map b/packages/backend/tools/refresh-question.js.map deleted file mode 100644 index 3db6d0b8bb..0000000000 --- a/packages/backend/tools/refresh-question.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"refresh-question.js","sourceRoot":"","sources":["refresh-question.ts"],"names":[],"mappings":";;AAAA,mEAAsE;AAEtE,KAAK,UAAU,IAAI,CAAC,GAAW;IAC9B,OAAO,MAAM,IAAA,yBAAc,EAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAEpB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;IACvB,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/backend/tools/resync-remote-user.js b/packages/backend/tools/resync-remote-user.js deleted file mode 100644 index 05d76ecc97..0000000000 --- a/packages/backend/tools/resync-remote-user.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const postgre_1 = require("@/db/postgre"); -const Acct = require("misskey-js/built/acct"); -async function main(acct) { - await (0, postgre_1.initDb)(); - const { resolveUser } = await Promise.resolve().then(() => require('@/remote/resolve-user')); - const { username, host } = Acct.parse(acct); - await resolveUser(username, host, {}, true); -} -// get args -const args = process.argv.slice(2); -let acct = args[0]; -// normalize args -acct = acct.replace(/^@/, ''); -// check args -if (!acct.match(/^\w+@\w/)) { - throw `Invalid acct format. Valid format are user@host`; -} -console.log(`resync ${acct}`); -main(acct).then(() => { - console.log('Done'); -}).catch(e => { - console.warn(e); -}); -//# sourceMappingURL=resync-remote-user.js.map \ No newline at end of file diff --git a/packages/backend/tools/resync-remote-user.js.map b/packages/backend/tools/resync-remote-user.js.map deleted file mode 100644 index 456d7da1d1..0000000000 --- a/packages/backend/tools/resync-remote-user.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"resync-remote-user.js","sourceRoot":"","sources":["resync-remote-user.ts"],"names":[],"mappings":";;AAAA,0CAAsC;AACtC,8CAA8C;AAE9C,KAAK,UAAU,IAAI,CAAC,IAAY;IAC/B,MAAM,IAAA,gBAAM,GAAE,CAAC;IACf,MAAM,EAAE,WAAW,EAAE,GAAG,2CAAa,uBAAuB,EAAC,CAAC;IAE9D,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED,WAAW;AACX,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAEnB,iBAAiB;AACjB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAE9B,aAAa;AACb,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;IAC3B,MAAM,iDAAiD,CAAC;CACxD;AAED,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;AAE9B,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;IACpB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACrB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/backend/tools/show-signin-history.js b/packages/backend/tools/show-signin-history.js deleted file mode 100644 index daeea84613..0000000000 --- a/packages/backend/tools/show-signin-history.js +++ /dev/null @@ -1,47 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const index_1 = require("@/models/index"); -// node built/tools/show-signin-history username -// => {Success} {Date} {IPAddrsss} -// node built/tools/show-signin-history username user-agent,x-forwarded-for -// with user-agent and x-forwarded-for -// node built/tools/show-signin-history username all -// with full request headers -async function main(username, headers) { - const user = await index_1.Users.findOne({ - host: null, - usernameLower: username.toLowerCase(), - }); - if (user == null) - throw new Error('User not found'); - const history = await index_1.Signins.find({ - userId: user.id - }); - for (const signin of history) { - console.log(`${signin.success ? 'OK' : 'NG'} ${signin.createdAt ? signin.createdAt.toISOString() : 'Unknown'} ${signin.ip}`); - // headers - if (headers != null) { - for (const key of Object.keys(signin.headers)) { - if (headers.includes('all') || headers.includes(key)) { - console.log(` ${key}: ${signin.headers[key]}`); - } - } - } - } -} -// get args -const args = process.argv.slice(2); -let username = args[0]; -let headers; -if (args[1] != null) { - headers = args[1].split(/,/).map(header => header.toLowerCase()); -} -// normalize args -username = username.replace(/^@/, ''); -main(username, headers).then(() => { - process.exit(0); -}).catch(e => { - console.warn(e); - process.exit(1); -}); -//# sourceMappingURL=show-signin-history.js.map \ No newline at end of file diff --git a/packages/backend/tools/show-signin-history.js.map b/packages/backend/tools/show-signin-history.js.map deleted file mode 100644 index b421825bce..0000000000 --- a/packages/backend/tools/show-signin-history.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"show-signin-history.js","sourceRoot":"","sources":["show-signin-history.ts"],"names":[],"mappings":";;AAAA,0CAAgD;AAEhD,gDAAgD;AAChD,mCAAmC;AAEnC,2EAA2E;AAC3E,uCAAuC;AAEvC,oDAAoD;AACpD,6BAA6B;AAE7B,KAAK,UAAU,IAAI,CAAC,QAAgB,EAAE,OAAkB;IACvD,MAAM,IAAI,GAAG,MAAM,aAAK,CAAC,OAAO,CAAC;QAChC,IAAI,EAAE,IAAI;QACV,aAAa,EAAE,QAAQ,CAAC,WAAW,EAAE;KACrC,CAAC,CAAC;IAEH,IAAI,IAAI,IAAI,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAEpD,MAAM,OAAO,GAAG,MAAM,eAAO,CAAC,IAAI,CAAC;QAClC,MAAM,EAAE,IAAI,CAAC,EAAE;KACf,CAAC,CAAC;IAEH,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAE7H,UAAU;QACV,IAAI,OAAO,IAAI,IAAI,EAAE;YACpB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBAC9C,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACrD,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBACjD;aACD;SACD;KACD;AACF,CAAC;AAED,WAAW;AACX,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,IAAI,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACvB,IAAI,OAA6B,CAAC;AAElC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;IACpB,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;CACjE;AAED,iBAAiB;AACjB,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAEtC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;IACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/client/src/components/dialog.vue b/packages/client/src/components/dialog.vue index 1b03e65a3d..5d6678531d 100644 --- a/packages/client/src/components/dialog.vue +++ b/packages/client/src/components/dialog.vue @@ -14,7 +14,9 @@
- + + + @@ -114,9 +115,9 @@ export default defineComponent({ const changed = ref(false); const invalid = ref(false); const filled = computed(() => v.value !== '' && v.value != null); - const inputEl = ref(null); - const prefixEl = ref(null); - const suffixEl = ref(null); + const inputEl = ref(); + const prefixEl = ref(); + const suffixEl = ref(); const focus = () => inputEl.value.focus(); const onInput = (ev) => { @@ -208,7 +209,7 @@ export default defineComponent({ .matxzzsk { > .label { font-size: 0.85em; - padding: 0 0 8px 12px; + padding: 0 0 8px 0; user-select: none; &:empty { @@ -217,8 +218,8 @@ export default defineComponent({ } > .caption { - font-size: 0.8em; - padding: 8px 0 0 12px; + font-size: 0.85em; + padding: 8px 0 0 0; color: var(--fgTransparentWeak); &:empty { @@ -242,8 +243,7 @@ export default defineComponent({ font-weight: normal; font-size: 1em; color: var(--fg); - background: var(--panel); - border: solid 0.5px var(--inputBorder); + border: solid 0.5px var(--panel); border-radius: 6px; outline: none; box-shadow: none; @@ -311,5 +311,9 @@ export default defineComponent({ } } } + + > .save { + margin: 8px 0 0 0; + } } diff --git a/packages/client/src/components/form/link.vue b/packages/client/src/components/form/link.vue new file mode 100644 index 0000000000..3eb74425b0 --- /dev/null +++ b/packages/client/src/components/form/link.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/packages/client/src/components/form/pagination.vue b/packages/client/src/components/form/pagination.vue new file mode 100644 index 0000000000..3d3b40a783 --- /dev/null +++ b/packages/client/src/components/form/pagination.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/packages/client/src/components/form/radio.vue b/packages/client/src/components/form/radio.vue index 0f31d8fa0a..f0b8c71376 100644 --- a/packages/client/src/components/form/radio.vue +++ b/packages/client/src/components/form/radio.vue @@ -1,5 +1,6 @@ @@ -118,10 +118,14 @@ export default defineComponent({ transition: inherit; } - > p { - margin: 0; + > .caption { + margin: 8px 0 0 0; color: var(--fgTransparentWeak); - font-size: 90%; + font-size: 0.85em; + + &:empty { + display: none; + } } } diff --git a/packages/client/src/components/form/textarea.vue b/packages/client/src/components/form/textarea.vue index f3a2c394f1..98fd0da94b 100644 --- a/packages/client/src/components/form/textarea.vue +++ b/packages/client/src/components/form/textarea.vue @@ -4,6 +4,7 @@
Roujo