+
{{ i18n.ts.following }}
{{ number(user.followingCount) }}
-
+
{{ i18n.ts.followers }}
{{ number(user.followersCount) }}
@@ -61,6 +61,7 @@ import number from '@/filters/number';
import { i18n } from '@/i18n';
import { defaultStore } from '@/store';
import { $i } from '@/account';
+import { isFfVisibleForMe } from '@/scripts/isFfVisibleForMe';
const props = defineProps<{
showing: boolean;
diff --git a/packages/frontend/src/pages/user/home.vue b/packages/frontend/src/pages/user/home.vue
index 23588763bc..b0d42463a0 100644
--- a/packages/frontend/src/pages/user/home.vue
+++ b/packages/frontend/src/pages/user/home.vue
@@ -100,15 +100,15 @@
-
+
{{ number(user.notesCount) }}
{{ i18n.ts.notes }}
-
+
{{ number(user.followingCount) }}
{{ i18n.ts.following }}
-
+
{{ number(user.followersCount) }}
{{ i18n.ts.followers }}
@@ -160,6 +160,7 @@ import { dateString } from '@/filters/date';
import { confetti } from '@/scripts/confetti';
import MkNotes from '@/components/MkNotes.vue';
import { api } from '@/os';
+import { isFfVisibleForMe } from '@/scripts/isFfVisibleForMe';
const XPhotos = defineAsyncComponent(() => import('./index.photos.vue'));
const XActivity = defineAsyncComponent(() => import('./index.activity.vue'));
diff --git a/packages/frontend/src/scripts/isFfVisibleForMe.ts b/packages/frontend/src/scripts/isFfVisibleForMe.ts
new file mode 100644
index 0000000000..0ddd3f377d
--- /dev/null
+++ b/packages/frontend/src/scripts/isFfVisibleForMe.ts
@@ -0,0 +1,11 @@
+import * as misskey from 'misskey-js';
+import { $i } from '@/account';
+
+export function isFfVisibleForMe(user: misskey.entities.UserDetailed): boolean {
+ if ($i && $i.id === user.id) return true;
+
+ if (user.ffVisibility === 'private') return false;
+ if (user.ffVisibility === 'followers' && !user.isFollowing) return false;
+
+ return true;
+}
--
cgit v1.2.3-freya
From c50b952ff91892196812da235e4c253c65391f0b Mon Sep 17 00:00:00 2001
From: syuilo
Date: Wed, 19 Jul 2023 11:26:08 +0900
Subject: update aiscript to 0.14.0
---
CHANGELOG.md | 1 +
packages/frontend/package.json | 2 +-
packages/frontend/src/pages/flash/flash-edit.vue | 10 +++++-----
pnpm-lock.yaml | 20 ++++++++++----------
4 files changed, 17 insertions(+), 16 deletions(-)
(limited to 'packages/frontend/src/pages')
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a225fa9694..350afcb30e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -41,6 +41,7 @@
- ロール設定画面でロールIDを確認できるように
- コンテキストメニュー表示時のパフォーマンスを改善
- フォロー/フォロワー非公開時の表示を改善
+- AiScriptを0.14.0に更新
- Fix: サーバーメトリクスが90度傾いている
- Fix: 非ログイン時にクレデンシャルが必要なページに行くとエラーが出る問題を修正
- Fix: sparkle内にリンクを入れるとクリック不能になる問題の修正
diff --git a/packages/frontend/package.json b/packages/frontend/package.json
index 1ebd8a40d0..7abfee35c8 100644
--- a/packages/frontend/package.json
+++ b/packages/frontend/package.json
@@ -19,7 +19,7 @@
"@rollup/plugin-json": "6.0.0",
"@rollup/plugin-replace": "5.0.2",
"@rollup/pluginutils": "5.0.2",
- "@syuilo/aiscript": "0.13.3",
+ "@syuilo/aiscript": "0.14.0",
"@tabler/icons-webfont": "2.25.0",
"@vitejs/plugin-vue": "4.2.3",
"@vue-macros/reactivity-transform": "0.3.15",
diff --git a/packages/frontend/src/pages/flash/flash-edit.vue b/packages/frontend/src/pages/flash/flash-edit.vue
index 6a16cd1c4a..d012cbce36 100644
--- a/packages/frontend/src/pages/flash/flash-edit.vue
+++ b/packages/frontend/src/pages/flash/flash-edit.vue
@@ -33,7 +33,7 @@ import MkTextarea from '@/components/MkTextarea.vue';
import MkInput from '@/components/MkInput.vue';
import { useRouter } from '@/router';
-const PRESET_DEFAULT = `/// @ 0.13.3
+const PRESET_DEFAULT = `/// @ 0.14.0
var name = ""
@@ -51,7 +51,7 @@ Ui:render([
])
`;
-const PRESET_OMIKUJI = `/// @ 0.13.3
+const PRESET_OMIKUJI = `/// @ 0.14.0
// ユーザーごとに日替わりのおみくじのプリセット
// 選択肢
@@ -94,7 +94,7 @@ Ui:render([
])
`;
-const PRESET_SHUFFLE = `/// @ 0.13.3
+const PRESET_SHUFFLE = `/// @ 0.14.0
// 巻き戻し可能な文字シャッフルのプリセット
let string = "ペペロンチーノ"
@@ -173,7 +173,7 @@ var cursor = 0
do()
`;
-const PRESET_QUIZ = `/// @ 0.13.3
+const PRESET_QUIZ = `/// @ 0.14.0
let title = '地理クイズ'
let qas = [{
@@ -286,7 +286,7 @@ qaEls.push(Ui:C:container({
Ui:render(qaEls)
`;
-const PRESET_TIMELINE = `/// @ 0.13.3
+const PRESET_TIMELINE = `/// @ 0.14.0
// APIリクエストを行いローカルタイムラインを表示するプリセット
@fetch() {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index a546fa952a..9286e29b96 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -641,8 +641,8 @@ importers:
specifier: 5.0.2
version: 5.0.2(rollup@3.26.3)
'@syuilo/aiscript':
- specifier: 0.13.3
- version: 0.13.3
+ specifier: 0.14.0
+ version: 0.14.0
'@tabler/icons-webfont':
specifier: 2.25.0
version: 2.25.0
@@ -1841,7 +1841,7 @@ packages:
debug: 4.3.4(supports-color@8.1.1)
gensync: 1.0.0-beta.2
json5: 2.2.3
- semver: 6.3.0
+ semver: 6.3.1
transitivePeerDependencies:
- supports-color
dev: true
@@ -1888,7 +1888,7 @@ packages:
'@babel/helper-validator-option': 7.21.0
browserslist: 4.21.5
lru-cache: 5.1.1
- semver: 6.3.0
+ semver: 6.3.1
dev: true
/@babel/helper-compilation-targets@7.22.9(@babel/core@7.22.1):
@@ -6614,8 +6614,8 @@ packages:
dev: false
optional: true
- /@syuilo/aiscript@0.13.3:
- resolution: {integrity: sha512-0YFlWA+7YhyRRsp+9Nl72SoSUg5ghskthjCdLvj4qdGyLedeyanKZWJlH2A9d47Nes03UYY8CRDsMHHv64IWcg==}
+ /@syuilo/aiscript@0.14.0:
+ resolution: {integrity: sha512-Yl28dYykq2eNjrMCKfXybKFj0EZ/fzOGMO53NtJGSyyeCaLx9H1qkGfT21QVdQLyEkiKtSMZ1IyodjSaWS/BUA==}
dependencies:
autobind-decorator: 2.4.0
seedrandom: 3.0.5
@@ -13489,7 +13489,7 @@ packages:
'@babel/parser': 7.22.7
'@istanbuljs/schema': 0.1.3
istanbul-lib-coverage: 3.2.0
- semver: 6.3.0
+ semver: 6.3.1
transitivePeerDependencies:
- supports-color
dev: true
@@ -14705,7 +14705,7 @@ packages:
resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
engines: {node: '>=8'}
dependencies:
- semver: 6.3.0
+ semver: 6.3.1
/make-fetch-happen@11.1.1:
resolution: {integrity: sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==}
@@ -17891,7 +17891,7 @@ packages:
resolution: {integrity: sha512-Rh266MLDYNeML5h90ttdMwfXe1+Nc4LAWd9X1KdJe8pPHP4kFmvLZALtsMNHNdvTyQygbEC0D59sIz47DIaq8w==}
engines: {node: '>=8'}
dependencies:
- semver: 6.3.0
+ semver: 6.3.1
dev: false
/semver@5.7.1:
@@ -17901,11 +17901,11 @@ packages:
/semver@6.3.0:
resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
hasBin: true
+ dev: true
/semver@6.3.1:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true
- dev: true
/semver@7.0.0:
resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==}
--
cgit v1.2.3-freya
From 5e53b41f2d2d9914c1b6d9ff7f93bc88bbeffe41 Mon Sep 17 00:00:00 2001
From: 日高 凌 <39184410+ryohidaka@users.noreply.github.com>
Date: Thu, 20 Jul 2023 08:11:16 +0900
Subject: fix(frontend):
ユーザー名が長い場合に、フォローボタンを折り返して表示させる (#11326)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
packages/frontend/src/pages/gallery/post.vue | 1 +
1 file changed, 1 insertion(+)
(limited to 'packages/frontend/src/pages')
diff --git a/packages/frontend/src/pages/gallery/post.vue b/packages/frontend/src/pages/gallery/post.vue
index dfa6c0bac0..39b2c2c90b 100644
--- a/packages/frontend/src/pages/gallery/post.vue
+++ b/packages/frontend/src/pages/gallery/post.vue
@@ -236,6 +236,7 @@ definePageMetadata(computed(() => post ? {
border-top: solid 0.5px var(--divider);
display: flex;
align-items: center;
+ flex-wrap: wrap;
> .avatar {
width: 52px;
--
cgit v1.2.3-freya
From 1df259a7b26b44af0297d75f943d5a03957521cd Mon Sep 17 00:00:00 2001
From: syuilo
Date: Thu, 20 Jul 2023 10:21:23 +0900
Subject: Update about-misskey.vue
---
packages/frontend/src/pages/about-misskey.vue | 4 ++++
1 file changed, 4 insertions(+)
(limited to 'packages/frontend/src/pages')
diff --git a/packages/frontend/src/pages/about-misskey.vue b/packages/frontend/src/pages/about-misskey.vue
index 39d9d020de..6d2f7e155e 100644
--- a/packages/frontend/src/pages/about-misskey.vue
+++ b/packages/frontend/src/pages/about-misskey.vue
@@ -179,6 +179,9 @@ const patronsWithIcon = [{
}, {
name: 'カガミ',
icon: 'https://misskey-hub.net/patrons/226ea3a4617749548580ec2d9a263e24.jpg',
+}, {
+ name: 'フランギ・シュウ',
+ icon: 'https://misskey-hub.net/patrons/3016d37e35f3430b90420176c912d304.jpg',
}];
const patrons = [
@@ -276,6 +279,7 @@ const patrons = [
'ぷーざ',
'越貝鯛丸',
'Nick / pprmint.',
+ 'kino3277',
];
let thereIsTreasure = $ref($i && !claimedAchievements.includes('foundTreasure'));
--
cgit v1.2.3-freya
From 8a058876a37cc1289f292685b7766d93fce80d9f Mon Sep 17 00:00:00 2001
From: syuilo
Date: Thu, 20 Jul 2023 10:24:09 +0900
Subject: update aiscript to 0.14.1
---
CHANGELOG.md | 2 +-
packages/frontend/package.json | 2 +-
packages/frontend/src/pages/flash/flash-edit.vue | 10 +++++-----
pnpm-lock.yaml | 8 ++++----
4 files changed, 11 insertions(+), 11 deletions(-)
(limited to 'packages/frontend/src/pages')
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c14e07c987..b5d5fad2ab 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -41,7 +41,7 @@
- ロール設定画面でロールIDを確認できるように
- コンテキストメニュー表示時のパフォーマンスを改善
- フォロー/フォロワー非公開時の表示を改善
-- AiScriptを0.14.0に更新
+- AiScriptを0.14.1に更新
- Fix: サーバーメトリクスが90度傾いている
- Fix: 非ログイン時にクレデンシャルが必要なページに行くとエラーが出る問題を修正
- Fix: sparkle内にリンクを入れるとクリック不能になる問題の修正
diff --git a/packages/frontend/package.json b/packages/frontend/package.json
index 7abfee35c8..7d3006f77f 100644
--- a/packages/frontend/package.json
+++ b/packages/frontend/package.json
@@ -19,7 +19,7 @@
"@rollup/plugin-json": "6.0.0",
"@rollup/plugin-replace": "5.0.2",
"@rollup/pluginutils": "5.0.2",
- "@syuilo/aiscript": "0.14.0",
+ "@syuilo/aiscript": "0.14.1",
"@tabler/icons-webfont": "2.25.0",
"@vitejs/plugin-vue": "4.2.3",
"@vue-macros/reactivity-transform": "0.3.15",
diff --git a/packages/frontend/src/pages/flash/flash-edit.vue b/packages/frontend/src/pages/flash/flash-edit.vue
index d012cbce36..f975c66a78 100644
--- a/packages/frontend/src/pages/flash/flash-edit.vue
+++ b/packages/frontend/src/pages/flash/flash-edit.vue
@@ -33,7 +33,7 @@ import MkTextarea from '@/components/MkTextarea.vue';
import MkInput from '@/components/MkInput.vue';
import { useRouter } from '@/router';
-const PRESET_DEFAULT = `/// @ 0.14.0
+const PRESET_DEFAULT = `/// @ 0.14.1
var name = ""
@@ -51,7 +51,7 @@ Ui:render([
])
`;
-const PRESET_OMIKUJI = `/// @ 0.14.0
+const PRESET_OMIKUJI = `/// @ 0.14.1
// ユーザーごとに日替わりのおみくじのプリセット
// 選択肢
@@ -94,7 +94,7 @@ Ui:render([
])
`;
-const PRESET_SHUFFLE = `/// @ 0.14.0
+const PRESET_SHUFFLE = `/// @ 0.14.1
// 巻き戻し可能な文字シャッフルのプリセット
let string = "ペペロンチーノ"
@@ -173,7 +173,7 @@ var cursor = 0
do()
`;
-const PRESET_QUIZ = `/// @ 0.14.0
+const PRESET_QUIZ = `/// @ 0.14.1
let title = '地理クイズ'
let qas = [{
@@ -286,7 +286,7 @@ qaEls.push(Ui:C:container({
Ui:render(qaEls)
`;
-const PRESET_TIMELINE = `/// @ 0.14.0
+const PRESET_TIMELINE = `/// @ 0.14.1
// APIリクエストを行いローカルタイムラインを表示するプリセット
@fetch() {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index e260bc2eaf..f23114b670 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -623,8 +623,8 @@ importers:
specifier: 5.0.2
version: 5.0.2(rollup@3.26.3)
'@syuilo/aiscript':
- specifier: 0.14.0
- version: 0.14.0
+ specifier: 0.14.1
+ version: 0.14.1
'@tabler/icons-webfont':
specifier: 2.25.0
version: 2.25.0
@@ -6547,8 +6547,8 @@ packages:
dev: false
optional: true
- /@syuilo/aiscript@0.14.0:
- resolution: {integrity: sha512-Yl28dYykq2eNjrMCKfXybKFj0EZ/fzOGMO53NtJGSyyeCaLx9H1qkGfT21QVdQLyEkiKtSMZ1IyodjSaWS/BUA==}
+ /@syuilo/aiscript@0.14.1:
+ resolution: {integrity: sha512-zyX+QWdE/PtEjem+15uPd1J43JIOfaRziGrkwUx+BU/dB9yJADkbwzH9ZkVr2Jzi56TYE4p3Xs5y2Kp+Z6/34A==}
dependencies:
autobind-decorator: 2.4.0
seedrandom: 3.0.5
--
cgit v1.2.3-freya
From 871027fa0cd2bd92411108f069eec0b188cc19ae Mon Sep 17 00:00:00 2001
From: syuilo
Date: Thu, 20 Jul 2023 10:54:41 +0900
Subject: enhance:
ユーザーにロールが期限付きでアサインされている場合、その期限をユーザーのモデレーションページで確認できるように
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Close #11059
---
CHANGELOG.md | 5 ++--
packages/backend/src/core/RoleService.ts | 11 +++++--
.../src/server/api/endpoints/admin/show-user.ts | 6 ++++
packages/frontend/src/pages/admin/roles.role.vue | 2 +-
.../frontend/src/pages/settings/mute-block.vue | 4 +--
packages/frontend/src/pages/user-info.vue | 34 ++++++++++++++++++++--
6 files changed, 51 insertions(+), 11 deletions(-)
(limited to 'packages/frontend/src/pages')
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b5d5fad2ab..9055b35cb8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -15,12 +15,13 @@
## 13.x.x (unreleased)
### General
-- identicon生成を無効にしてパフォーマンスを向上させることができるようになりました
-- サーバーのマシン情報の公開を無効にしてパフォーマンスを向上させることができるようになりました
- 招待機能を改善しました
* 過去に発行した招待コードを確認できるようになりました
* ロールごとに招待コードの発行数制限と制限対象期間、有効期限を設定できるようになりました
* 招待コードを作成したユーザーと使用したユーザーを確認できるようになりました
+- ユーザーにロールが期限付きでアサインされている場合、その期限をユーザーのモデレーションページで確認できるようになりました
+- identicon生成を無効にしてパフォーマンスを向上させることができるようになりました
+- サーバーのマシン情報の公開を無効にしてパフォーマンスを向上させることができるようになりました
### Client
- deck UIのカラムのメニューからアンテナとリストの編集画面を開けるように
diff --git a/packages/backend/src/core/RoleService.ts b/packages/backend/src/core/RoleService.ts
index 3b501cf8d7..d065b460c6 100644
--- a/packages/backend/src/core/RoleService.ts
+++ b/packages/backend/src/core/RoleService.ts
@@ -220,14 +220,19 @@ export class RoleService implements OnApplicationShutdown {
}
@bindThis
- public async getUserRoles(userId: User['id']) {
+ public async getUserAssigns(userId: User['id']) {
const now = Date.now();
let assigns = await this.roleAssignmentByUserIdCache.fetch(userId, () => this.roleAssignmentsRepository.findBy({ userId }));
// 期限切れのロールを除外
assigns = assigns.filter(a => a.expiresAt == null || (a.expiresAt.getTime() > now));
- const assignedRoleIds = assigns.map(x => x.roleId);
+ return assigns;
+ }
+
+ @bindThis
+ public async getUserRoles(userId: User['id']) {
const roles = await this.rolesCache.fetch(() => this.rolesRepository.findBy({}));
- const assignedRoles = roles.filter(r => assignedRoleIds.includes(r.id));
+ const assigns = await this.getUserAssigns(userId);
+ const assignedRoles = roles.filter(r => assigns.map(x => x.roleId).includes(r.id));
const user = roles.some(r => r.target === 'conditional') ? await this.cacheService.findUserById(userId) : null;
const matchedCondRoles = roles.filter(r => r.target === 'conditional' && this.evalCond(user!, r.condFormula));
return [...assignedRoles, ...matchedCondRoles];
diff --git a/packages/backend/src/server/api/endpoints/admin/show-user.ts b/packages/backend/src/server/api/endpoints/admin/show-user.ts
index f49d2a0966..6f805b6b4e 100644
--- a/packages/backend/src/server/api/endpoints/admin/show-user.ts
+++ b/packages/backend/src/server/api/endpoints/admin/show-user.ts
@@ -61,6 +61,7 @@ export default class extends Endpoint {
const signins = await this.signinsRepository.findBy({ userId: user.id });
+ const roleAssigns = await this.roleService.getUserAssigns(user.id);
const roles = await this.roleService.getUserRoles(user.id);
return {
@@ -85,6 +86,11 @@ export default class extends Endpoint {
signins,
policies: await this.roleService.getUserPolicies(user.id),
roles: await this.roleEntityService.packMany(roles, me),
+ roleAssigns: roleAssigns.map(a => ({
+ createdAt: a.createdAt.toISOString(),
+ expiresAt: a.expiresAt ? a.expiresAt.toISOString() : null,
+ roleId: a.roleId,
+ })),
};
});
}
diff --git a/packages/frontend/src/pages/admin/roles.role.vue b/packages/frontend/src/pages/admin/roles.role.vue
index 6cbe7ae658..789c9da277 100644
--- a/packages/frontend/src/pages/admin/roles.role.vue
+++ b/packages/frontend/src/pages/admin/roles.role.vue
@@ -40,7 +40,7 @@
Assigned:
-
Period: {{ item.expiresAt.toLocaleString() }}
+
Period: {{ new Date(item.expiresAt).toLocaleString() }}
Period: {{ i18n.ts.indefinitely }}
diff --git a/packages/frontend/src/pages/settings/mute-block.vue b/packages/frontend/src/pages/settings/mute-block.vue
index e0785ab9fe..e1f3c6bed9 100644
--- a/packages/frontend/src/pages/settings/mute-block.vue
+++ b/packages/frontend/src/pages/settings/mute-block.vue
@@ -55,7 +55,7 @@