From 43addcbd004111fa8439523bd53cce7a19a0bc33 Mon Sep 17 00:00:00 2001 From: NoriDev Date: Tue, 20 Jun 2023 17:29:46 +0900 Subject: [PATCH 001/301] =?UTF-8?q?CherryPick=F0=9F=8D=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .devcontainer/devcontainer.json | 2 +- packages/backend/src/logger.ts | 2 +- packages/backend/src/models/entities/Meta.ts | 2 +- .../src/server/api/openapi/gen-spec.ts | 2 +- packages/cherrypick-js/test-d/api.ts | 6 ++-- packages/cherrypick-js/test/api.ts | 28 +++++++++---------- packages/cherrypick-js/test/streaming.ts | 20 ++++++------- .../src/components/global/MkA.stories.impl.ts | 2 +- .../components/global/MkAcct.stories.impl.ts | 2 +- packages/frontend/test/note.test.ts | 4 +-- .../sw/src/scripts/create-notification.ts | 4 +-- 11 files changed, 37 insertions(+), 37 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index a47804ab07..0ff188d45d 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,5 +1,5 @@ { - "name": "Misskey", + "name": "CherryPick", "dockerComposeFile": "docker-compose.yml", "service": "app", "workspaceFolder": "/workspace", diff --git a/packages/backend/src/logger.ts b/packages/backend/src/logger.ts index e452c4e560..37c1b59ab2 100644 --- a/packages/backend/src/logger.ts +++ b/packages/backend/src/logger.ts @@ -90,7 +90,7 @@ export default class Logger { const projectId = this.clConfig.projectId; const logging = new Logging({ projectId: projectId, keyFilename: this.clConfig.saKeyPath }); - const logName = this.clConfig.logName ?? 'misskey'; + const logName = this.clConfig.logName ?? 'cherrypick'; const log = logging.log(logName); const logMessage = stripAnsi(message); diff --git a/packages/backend/src/models/entities/Meta.ts b/packages/backend/src/models/entities/Meta.ts index 868da384e5..5d146d13f4 100644 --- a/packages/backend/src/models/entities/Meta.ts +++ b/packages/backend/src/models/entities/Meta.ts @@ -462,7 +462,7 @@ export class Meta { public serverRules: string[]; @Column('varchar', { - length: 1024, array: true, default: '{ "admin", "administrator", "root", "system", "maintainer", "host", "mod", "moderator", "owner", "superuser", "staff", "auth", "i", "me", "everyone", "all", "mention", "mentions", "example", "user", "users", "account", "accounts", "official", "help", "helps", "support", "supports", "info", "information", "informations", "announce", "announces", "announcement", "announcements", "notice", "notification", "notifications", "dev", "developer", "developers", "tech", "misskey" }', + length: 1024, array: true, default: '{ "admin", "administrator", "root", "system", "maintainer", "host", "mod", "moderator", "owner", "superuser", "staff", "auth", "i", "me", "everyone", "all", "mention", "mentions", "example", "user", "users", "account", "accounts", "official", "help", "helps", "support", "supports", "info", "information", "informations", "announce", "announces", "announcement", "announcements", "notice", "notification", "notifications", "dev", "developer", "developers", "tech", "misskey", "cherrypick" }', }) public preservedUsernames: string[]; } diff --git a/packages/backend/src/server/api/openapi/gen-spec.ts b/packages/backend/src/server/api/openapi/gen-spec.ts index 39e0922b00..021066aa76 100644 --- a/packages/backend/src/server/api/openapi/gen-spec.ts +++ b/packages/backend/src/server/api/openapi/gen-spec.ts @@ -9,7 +9,7 @@ export function genOpenapiSpec(config: Config) { info: { version: config.version, - title: 'Misskey API', + title: 'CherryPick API', 'x-logo': { url: '/static-assets/api-doc.png' }, }, diff --git a/packages/cherrypick-js/test-d/api.ts b/packages/cherrypick-js/test-d/api.ts index ce793f6fd1..32ff95c5ae 100644 --- a/packages/cherrypick-js/test-d/api.ts +++ b/packages/cherrypick-js/test-d/api.ts @@ -4,7 +4,7 @@ import * as Misskey from '../src'; describe('API', () => { test('success', async () => { const cli = new Misskey.api.APIClient({ - origin: 'https://misskey.test', + origin: 'https://cherrypick.test', credential: 'TOKEN' }); const res = await cli.request('meta', { detail: true }); @@ -13,7 +13,7 @@ describe('API', () => { test('conditional respose type (meta)', async () => { const cli = new Misskey.api.APIClient({ - origin: 'https://misskey.test', + origin: 'https://cherrypick.test', credential: 'TOKEN' }); @@ -32,7 +32,7 @@ describe('API', () => { test('conditional respose type (users/show)', async () => { const cli = new Misskey.api.APIClient({ - origin: 'https://misskey.test', + origin: 'https://cherrypick.test', credential: 'TOKEN' }); diff --git a/packages/cherrypick-js/test/api.ts b/packages/cherrypick-js/test/api.ts index 84b1fc0933..94365c97e2 100644 --- a/packages/cherrypick-js/test/api.ts +++ b/packages/cherrypick-js/test/api.ts @@ -20,7 +20,7 @@ describe('API', () => { fetchMock.resetMocks(); fetchMock.mockResponse(async (req) => { const body = await req.json(); - if (req.method == 'POST' && req.url == 'https://misskey.test/api/i') { + if (req.method == 'POST' && req.url == 'https://cherrypick.test/api/i') { if (body.i === 'TOKEN') { return JSON.stringify({ id: 'foo' }); } else { @@ -32,7 +32,7 @@ describe('API', () => { }); const cli = new APIClient({ - origin: 'https://misskey.test', + origin: 'https://cherrypick.test', credential: 'TOKEN', }); @@ -43,7 +43,7 @@ describe('API', () => { }); expect(getFetchCall(fetchMock.mock.calls[0])).toEqual({ - url: 'https://misskey.test/api/i', + url: 'https://cherrypick.test/api/i', method: 'POST', body: { i: 'TOKEN' } }); @@ -53,7 +53,7 @@ describe('API', () => { fetchMock.resetMocks(); fetchMock.mockResponse(async (req) => { const body = await req.json(); - if (req.method == 'POST' && req.url == 'https://misskey.test/api/notes/show') { + if (req.method == 'POST' && req.url == 'https://cherrypick.test/api/notes/show') { if (body.i === 'TOKEN' && body.noteId === 'aaaaa') { return JSON.stringify({ id: 'foo' }); } else { @@ -65,7 +65,7 @@ describe('API', () => { }); const cli = new APIClient({ - origin: 'https://misskey.test', + origin: 'https://cherrypick.test', credential: 'TOKEN', }); @@ -76,7 +76,7 @@ describe('API', () => { }); expect(getFetchCall(fetchMock.mock.calls[0])).toEqual({ - url: 'https://misskey.test/api/notes/show', + url: 'https://cherrypick.test/api/notes/show', method: 'POST', body: { i: 'TOKEN', noteId: 'aaaaa' } }); @@ -85,7 +85,7 @@ describe('API', () => { test('204 No Content で null が返る', async () => { fetchMock.resetMocks(); fetchMock.mockResponse(async (req) => { - if (req.method == 'POST' && req.url == 'https://misskey.test/api/reset-password') { + if (req.method == 'POST' && req.url == 'https://cherrypick.test/api/reset-password') { return { status: 204 }; } else { return { status: 404 }; @@ -93,7 +93,7 @@ describe('API', () => { }); const cli = new APIClient({ - origin: 'https://misskey.test', + origin: 'https://cherrypick.test', credential: 'TOKEN', }); @@ -102,7 +102,7 @@ describe('API', () => { expect(res).toEqual(null); expect(getFetchCall(fetchMock.mock.calls[0])).toEqual({ - url: 'https://misskey.test/api/reset-password', + url: 'https://cherrypick.test/api/reset-password', method: 'POST', body: { i: 'TOKEN', token: 'aaa', password: 'aaa' } }); @@ -112,7 +112,7 @@ describe('API', () => { fetchMock.resetMocks(); fetchMock.mockResponse(async (req) => { const body = await req.json(); - if (req.method == 'POST' && req.url == 'https://misskey.test/api/i') { + if (req.method == 'POST' && req.url == 'https://cherrypick.test/api/i') { if (typeof body.i === 'string') { return JSON.stringify({ id: 'foo' }); } else { @@ -134,7 +134,7 @@ describe('API', () => { try { const cli = new APIClient({ - origin: 'https://misskey.test', + origin: 'https://cherrypick.test', credential: 'TOKEN', }); @@ -162,7 +162,7 @@ describe('API', () => { try { const cli = new APIClient({ - origin: 'https://misskey.test', + origin: 'https://cherrypick.test', credential: 'TOKEN', }); @@ -179,7 +179,7 @@ describe('API', () => { try { const cli = new APIClient({ - origin: 'https://misskey.test', + origin: 'https://cherrypick.test', credential: 'TOKEN', }); @@ -200,7 +200,7 @@ describe('API', () => { try { const cli = new APIClient({ - origin: 'https://misskey.test', + origin: 'https://cherrypick.test', credential: 'TOKEN', }); diff --git a/packages/cherrypick-js/test/streaming.ts b/packages/cherrypick-js/test/streaming.ts index 913db8b287..b937c501f6 100644 --- a/packages/cherrypick-js/test/streaming.ts +++ b/packages/cherrypick-js/test/streaming.ts @@ -3,8 +3,8 @@ import Stream from '../src/streaming'; describe('Streaming', () => { test('useChannel', async () => { - const server = new WS('wss://misskey.test/streaming'); - const stream = new Stream('https://misskey.test', { token: 'TOKEN' }); + const server = new WS('wss://cherrypick.test/streaming'); + const stream = new Stream('https://cherrypick.test', { token: 'TOKEN' }); const mainChannelReceived: any[] = []; const main = stream.useChannel('main'); main.on('meUpdated', payload => { @@ -40,8 +40,8 @@ describe('Streaming', () => { }); test('useChannel with parameters', async () => { - const server = new WS('wss://misskey.test/streaming'); - const stream = new Stream('https://misskey.test', { token: 'TOKEN' }); + const server = new WS('wss://cherrypick.test/streaming'); + const stream = new Stream('https://cherrypick.test', { token: 'TOKEN' }); const messagingChannelReceived: any[] = []; const messaging = stream.useChannel('messaging', { otherparty: 'aaa' }); messaging.on('message', payload => { @@ -78,8 +78,8 @@ describe('Streaming', () => { }); test('ちゃんとチャンネルごとにidが異なる', async () => { - const server = new WS('wss://misskey.test/streaming'); - const stream = new Stream('https://misskey.test', { token: 'TOKEN' }); + const server = new WS('wss://cherrypick.test/streaming'); + const stream = new Stream('https://cherrypick.test', { token: 'TOKEN' }); stream.useChannel('messaging', { otherparty: 'aaa' }); stream.useChannel('messaging', { otherparty: 'bbb' }); @@ -101,8 +101,8 @@ describe('Streaming', () => { }); test('Connection#send', async () => { - const server = new WS('wss://misskey.test/streaming'); - const stream = new Stream('https://misskey.test', { token: 'TOKEN' }); + const server = new WS('wss://cherrypick.test/streaming'); + const stream = new Stream('https://cherrypick.test', { token: 'TOKEN' }); const messaging = stream.useChannel('messaging', { otherparty: 'aaa' }); messaging.send('read', { id: 'aaa' }); @@ -124,8 +124,8 @@ describe('Streaming', () => { }); test('Connection#dispose', async () => { - const server = new WS('wss://misskey.test/streaming'); - const stream = new Stream('https://misskey.test', { token: 'TOKEN' }); + const server = new WS('wss://cherrypick.test/streaming'); + const stream = new Stream('https://cherrypick.test', { token: 'TOKEN' }); const mainChannelReceived: any[] = []; const main = stream.useChannel('main'); main.on('meUpdated', payload => { diff --git a/packages/frontend/src/components/global/MkA.stories.impl.ts b/packages/frontend/src/components/global/MkA.stories.impl.ts index 639ed19af2..8f31d0babc 100644 --- a/packages/frontend/src/components/global/MkA.stories.impl.ts +++ b/packages/frontend/src/components/global/MkA.stories.impl.ts @@ -22,7 +22,7 @@ export const Default = { }; }, }, - template: 'Misskey', + template: 'CherryPick', }; }, async play({ canvasElement }) { diff --git a/packages/frontend/src/components/global/MkAcct.stories.impl.ts b/packages/frontend/src/components/global/MkAcct.stories.impl.ts index 9d5fd3947d..a1b9ac60ee 100644 --- a/packages/frontend/src/components/global/MkAcct.stories.impl.ts +++ b/packages/frontend/src/components/global/MkAcct.stories.impl.ts @@ -48,7 +48,7 @@ export const Long = { user: { ...userDetailed(), username: 'the_quick_brown_fox_jumped_over_the_lazy_dog', - host: 'misskey.example', + host: 'cherrypick.example', }, }, decorators: [ diff --git a/packages/frontend/test/note.test.ts b/packages/frontend/test/note.test.ts index f0880a008b..52d96093c4 100644 --- a/packages/frontend/test/note.test.ts +++ b/packages/frontend/test/note.test.ts @@ -73,7 +73,7 @@ describe('MkMediaImage', () => { test('Attaching image with an alt message should show an ALT indicator', async () => { const mkMediaImage = renderMediaImage({ type: 'image/png', - comment: 'Misskeyのロゴです', + comment: 'CherryPickのロゴです', }); const [gif, alt] = await Promise.all([ mkMediaImage.queryByText('GIF'), @@ -86,7 +86,7 @@ describe('MkMediaImage', () => { test('Attaching GIF image with an alt message should show a GIF and an ALT indicator', async () => { const mkMediaImage = renderMediaImage({ type: 'image/gif', - comment: 'Misskeyのロゴです', + comment: 'CherryPickのロゴです', }); const [gif, alt] = await Promise.all([ mkMediaImage.queryByText('GIF'), diff --git a/packages/sw/src/scripts/create-notification.ts b/packages/sw/src/scripts/create-notification.ts index d9e57cd31d..36d103ae57 100644 --- a/packages/sw/src/scripts/create-notification.ts +++ b/packages/sw/src/scripts/create-notification.ts @@ -18,7 +18,7 @@ const iconUrl = (name: BadgeNames): string => `/static-assets/tabler-badges/${na /* How to add a new badge: * 1. Find the icon and download png from https://tabler-icons.io/ * 2. vips resize ~/Downloads/icon-name.png vipswork.png 0.4; vips scRGB2BW vipswork.png ~/icon-name.png"[compression=9,strip]"; rm vipswork.png; - * 3. mv ~/icon-name.png ~/misskey/packages/backend/assets/tabler-badges/ + * 3. mv ~/icon-name.png ~/cherrypick/packages/backend/assets/tabler-badges/ * 4. Add 'icon-name' to BadgeNames * 5. Add `badge: iconUrl('icon-name'),` */ @@ -265,7 +265,7 @@ export async function createEmptyNotification(): Promise { await globalThis.registration.showNotification( (new URL(origin)).host, { - body: `Misskey v${_VERSION_}`, + body: `CherryPick v${_VERSION_}`, silent: true, badge: iconUrl('null'), tag: 'read_notification', From f95e11ce57b20ff81657f5b97e4a224596deea0c Mon Sep 17 00:00:00 2001 From: NoriDev Date: Tue, 20 Jun 2023 17:36:34 +0900 Subject: [PATCH 002/301] Update favicon.ico --- packages/backend/assets/favicon.ico | Bin 1150 -> 67646 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/packages/backend/assets/favicon.ico b/packages/backend/assets/favicon.ico index 15ca54afa1e930acf4d71118c3c4dc8804eb594b..64396bb0ae5ab88745330c3aac76b928fd32f796 100644 GIT binary patch literal 67646 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 literal 1150 zcmbW1+iu%N5QbTx50I-~_p&e0cgjl?y)BToKoAEA+SmqCH!Td=YUD#?%S!Fou`LC$ ze2^VklA|+4k>NoiC6N@Rugeu&^twyTE_ZhSe`fw&Qc=DT&w~ew=)YDTeyJ#5DT?xq zFyRuOxnB&5BG!uE&P~omSG_XnyB<>@n9hVv@q8aYiqIMn#%BjjH)ym}N~JQE?O+cL z_ER<9ywtJ#oxu`zxo=aK01yM0RM9f9vqxvi3UoyD>&CPWl3$`tl>@pd0~Cj1c2 z;dE*tsf8wQ(iQsQP;wS;dz_xt7k<;+&qmmeM=58s{j|pFk9CetYGgn3=-57L%fr?q z87mUm&Snvul%TAXKx%;G~6?fuS> z)kiIINt@K7&DzrgKAzOE$6y9yY+Dk%E*(RK%bkd7G3Ta`xW5Hvy z^0>gpuVwZ&du;!%%la-4ToHGIdKc2E1bEK8h^qsKjfFNJ(tQehV~*Et3R^Cxe|c;@ zH`#gKcHNl~Z92z%1 zdUL|a75DnkCj=so@o>uhf8hU){{Roa BqsssQ From 22e0f71dd2163a9b8a7133a46568b769c3cf7575 Mon Sep 17 00:00:00 2001 From: NoriDev Date: Tue, 20 Jun 2023 18:41:19 +0900 Subject: [PATCH 003/301] =?UTF-8?q?fix(client):=20=E3=82=B0=E3=83=AB?= =?UTF-8?q?=E3=83=BC=E3=83=97=E6=8B=9B=E5=BE=85=E9=80=9A=E7=9F=A5=E3=82=A2?= =?UTF-8?q?=E3=82=A4=E3=82=B3=E3=83=B3=E3=81=8C=E6=AD=A3=E3=81=97=E3=81=8F?= =?UTF-8?q?=E8=A1=A8=E7=A4=BA=E3=81=95=E3=82=8C=E3=81=AA=E3=81=84=E5=95=8F?= =?UTF-8?q?=E9=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG_CHERRYPICK.md | 11 ++++++++++- packages/frontend/src/components/MkNotification.vue | 3 ++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGELOG_CHERRYPICK.md b/CHANGELOG_CHERRYPICK.md index da345c0189..8f379a8903 100644 --- a/CHANGELOG_CHERRYPICK.md +++ b/CHANGELOG_CHERRYPICK.md @@ -12,7 +12,7 @@ - ### Server -- +- --- @@ -22,6 +22,15 @@ 이 문서는 CherryPick의 변경 사항만 포함합니다. +## 13.x.x-cp-4.x.x +출시일: unreleased
+전체 변경 사항을 확인하려면, [CHANGELOG.md#13xx](CHANGELOG.md#13xx) 문서를 참고하십시오. + +### Client +- Fix: 그룹 초대 알림 아이콘이 잘못 표시되는 문제 + +--- + ## 13.13.2-cp-4.1.0 출시일: 2023/06/20
전체 변경 사항을 확인하려면, [CHANGELOG.md#13132](CHANGELOG.md#13132) 문서를 참고하십시오. diff --git a/packages/frontend/src/components/MkNotification.vue b/packages/frontend/src/components/MkNotification.vue index 336e985164..577e6a7e67 100644 --- a/packages/frontend/src/components/MkNotification.vue +++ b/packages/frontend/src/components/MkNotification.vue @@ -10,6 +10,7 @@ [$style.t_follow]: notification.type === 'follow', [$style.t_followRequestAccepted]: notification.type === 'followRequestAccepted', [$style.t_receiveFollowRequest]: notification.type === 'receiveFollowRequest', + [$style.t_groupInvited]: notification.type === 'groupInvited', [$style.t_renote]: notification.type === 'renote', [$style.t_reply]: notification.type === 'reply', [$style.t_mention]: notification.type === 'mention', @@ -21,7 +22,7 @@ - + From b7ecb6f71143a0915aa6fe289bb046cc4a549a87 Mon Sep 17 00:00:00 2001 From: NoriDev Date: Tue, 20 Jun 2023 18:52:42 +0900 Subject: [PATCH 004/301] =?UTF-8?q?fix(client):=20=E3=83=8E=E3=83=BC?= =?UTF-8?q?=E3=83=88=E3=83=87=E3=82=B6=E3=82=A4=E3=83=B3=E3=81=8C=E6=AD=A3?= =?UTF-8?q?=E3=81=97=E3=81=8F=E8=A1=A8=E7=A4=BA=E3=81=95=E3=82=8C=E3=81=AA?= =?UTF-8?q?=E3=81=84=E5=95=8F=E9=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG_CHERRYPICK.md | 1 + packages/frontend/src/components/MkNoteSub.vue | 2 +- packages/frontend/src/components/MkSubNoteContent.vue | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG_CHERRYPICK.md b/CHANGELOG_CHERRYPICK.md index 8f379a8903..5009b30988 100644 --- a/CHANGELOG_CHERRYPICK.md +++ b/CHANGELOG_CHERRYPICK.md @@ -28,6 +28,7 @@ ### Client - Fix: 그룹 초대 알림 아이콘이 잘못 표시되는 문제 +- Fix: 노트 디자인이 올바르지 않게 표시되는 문제 --- diff --git a/packages/frontend/src/components/MkNoteSub.vue b/packages/frontend/src/components/MkNoteSub.vue index 4be0acf270..e8d8b2125b 100644 --- a/packages/frontend/src/components/MkNoteSub.vue +++ b/packages/frontend/src/components/MkNoteSub.vue @@ -119,7 +119,7 @@ if (props.detail) { .cw { cursor: default; - display: block; + display: grid; margin: 0; padding: 0; overflow-wrap: break-word; diff --git a/packages/frontend/src/components/MkSubNoteContent.vue b/packages/frontend/src/components/MkSubNoteContent.vue index 1c73efc798..27f59b6d5a 100644 --- a/packages/frontend/src/components/MkSubNoteContent.vue +++ b/packages/frontend/src/components/MkSubNoteContent.vue @@ -1,6 +1,6 @@ + + diff --git a/packages/frontend/src/components/index.ts b/packages/frontend/src/components/index.ts index ee2a2bc7bd..4cd98a0b50 100644 --- a/packages/frontend/src/components/index.ts +++ b/packages/frontend/src/components/index.ts @@ -1,5 +1,6 @@ import { App } from 'vue'; +import CPPageHeader from './global/CPPageHeader.vue'; import Mfm from './global/MkMisskeyFlavoredMarkdown.ts'; import MkA from './global/MkA.vue'; import MkAcct from './global/MkAcct.vue'; @@ -29,6 +30,7 @@ export default function(app: App) { export const components = { I18n: I18n, RouterView: RouterView, + CPPageHeader: CPPageHeader, Mfm: Mfm, MkA: MkA, MkAcct: MkAcct, @@ -52,6 +54,7 @@ declare module '@vue/runtime-core' { export interface GlobalComponents { I18n: typeof I18n; RouterView: typeof RouterView; + CPPageHeader: typeof CPPageHeader; Mfm: typeof Mfm; MkA: typeof MkA; MkAcct: typeof MkAcct; diff --git a/packages/frontend/src/pages/settings/cherrypick.vue b/packages/frontend/src/pages/settings/cherrypick.vue index eaec46702c..0feed875e9 100644 --- a/packages/frontend/src/pages/settings/cherrypick.vue +++ b/packages/frontend/src/pages/settings/cherrypick.vue @@ -23,6 +23,7 @@ {{ i18n.ts._cherrypick.rememberPostFormToggleState }} {{ i18n.ts._cherrypick.reactableRemoteReaction }} {{ i18n.ts._cherrypick.showFollowingMessageInsteadOfButton }} + {{ i18n.ts._cherrypick.mobileTimelineHeaderChange }} @@ -427,6 +427,11 @@ $float-button-size: 65px; backdrop-filter: var(--blur, blur(15px)); transition: opacity 0.5s, transform 0.5s; + &.reduceBlurEffect { + -webkit-backdrop-filter: none; + backdrop-filter: none; + } + &.reduceAnimation { transition: opacity 0s, transform 0s; } @@ -459,6 +464,11 @@ $float-button-size: 65px; backdrop-filter: var(--blur, blur(15px)); transition: opacity 0.5s, transform 0.5s; + &.reduceBlurEffect { + -webkit-backdrop-filter: none; + backdrop-filter: none; + } + &.reduceAnimation { transition: opacity 0s, transform 0s; } @@ -541,11 +551,16 @@ $float-button-size: 65px; display: flex; width: 100%; box-sizing: border-box; - -webkit-backdrop-filter: var(--blur, blur(32px)); - backdrop-filter: var(--blur, blur(32px)); - background-color: var(--panel); + -webkit-backdrop-filter: var(--blur, blur(64px)); + backdrop-filter: var(--blur, blur(64px)); border-top: solid 0.5px var(--divider); padding: 0 10px; + + &.reduceBlurEffect { + -webkit-backdrop-filter: none; + backdrop-filter: none; + background-color: var(--panel); + } } .navButton { @@ -555,13 +570,15 @@ $float-button-size: 65px; margin: auto; height: 50px; // border-radius: 8px; - background: var(--panel); + // background: var(--panel); color: var(--fg); padding: 15px 0 calc(env(safe-area-inset-bottom) + 30px); + /* &:not(:last-child) { - // margin-right: 12px; + margin-right: 12px; } + */ @media (max-width: 300px) { height: 60px; From b861976750ef4a25d725a8e7f1896d4a9ab83b76 Mon Sep 17 00:00:00 2001 From: NoriDev Date: Wed, 28 Jun 2023 16:31:57 +0900 Subject: [PATCH 056/301] =?UTF-8?q?enhance(client):=20=E3=83=98=E3=83=83?= =?UTF-8?q?=E3=83=80=E3=83=BC=E3=81=AE=E3=81=BC=E3=81=8B=E3=81=97=E8=A8=AD?= =?UTF-8?q?=E5=AE=9A=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG_CHERRYPICK.md | 1 + packages/frontend/src/components/global/CPPageHeader.vue | 8 +++++++- packages/frontend/src/components/global/MkPageHeader.vue | 8 +++++++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/CHANGELOG_CHERRYPICK.md b/CHANGELOG_CHERRYPICK.md index 432314f2e1..f39317a774 100644 --- a/CHANGELOG_CHERRYPICK.md +++ b/CHANGELOG_CHERRYPICK.md @@ -48,6 +48,7 @@ - MkDialog 버튼이 3개 이상이면 정렬을 변경하도록 - 리노트 유저 팝업의 디자인 일부 개선 - 네비게이션 바의 블러 처리 추가 +- 헤더의 블러 설정 추가 - Fix: 그룹 초대 알림 아이콘이 잘못 표시되는 문제 - Fix: 노트 디자인이 올바르지 않게 표시되는 문제 - Fix: 프로필 아이콘이 투명일 때 노트 답글선이 비치는 문제 diff --git a/packages/frontend/src/components/global/CPPageHeader.vue b/packages/frontend/src/components/global/CPPageHeader.vue index 0d115e8722..4c26deaab5 100644 --- a/packages/frontend/src/components/global/CPPageHeader.vue +++ b/packages/frontend/src/components/global/CPPageHeader.vue @@ -1,5 +1,5 @@ diff --git a/packages/frontend/src/const.ts b/packages/frontend/src/const.ts index ad7fa372e9..1d883c038e 100644 --- a/packages/frontend/src/const.ts +++ b/packages/frontend/src/const.ts @@ -57,6 +57,9 @@ export const ROLE_POLICIES = [ 'ltlAvailable', 'canPublicNote', 'canInvite', + 'inviteLimit', + 'inviteLimitCycle', + 'inviteExpirationTime', 'canManageCustomEmojis', 'canSearchNotes', 'canHideAds', diff --git a/packages/frontend/src/pages/admin/index.vue b/packages/frontend/src/pages/admin/index.vue index 226eb8d026..e91f65b5d5 100644 --- a/packages/frontend/src/pages/admin/index.vue +++ b/packages/frontend/src/pages/admin/index.vue @@ -80,7 +80,7 @@ const menuDef = $computed(() => [{ }, ...(instance.disableRegistration ? [{ type: 'button', icon: 'ti ti-user-plus', - text: i18n.ts.invite, + text: i18n.ts.createInviteCode, action: invite, }] : [])], }, { @@ -95,6 +95,11 @@ const menuDef = $computed(() => [{ text: i18n.ts.users, to: '/admin/users', active: currentPage?.route.name === 'users', + }, { + icon: 'ti ti-user-plus', + text: i18n.ts.invite, + to: '/admin/invites', + active: currentPage?.route.name === 'invites', }, { icon: 'ti ti-badges', text: i18n.ts.roles, @@ -240,10 +245,10 @@ provideMetadataReceiver((info) => { }); const invite = () => { - os.api('invite').then(x => { + os.api('admin/invite/create').then(x => { os.alert({ type: 'info', - text: x.code, + text: x?.[0].code, }); }).catch(err => { os.alert({ diff --git a/packages/frontend/src/pages/admin/invites.vue b/packages/frontend/src/pages/admin/invites.vue new file mode 100644 index 0000000000..70a9c93713 --- /dev/null +++ b/packages/frontend/src/pages/admin/invites.vue @@ -0,0 +1,126 @@ + + + + + diff --git a/packages/frontend/src/pages/admin/roles.editor.vue b/packages/frontend/src/pages/admin/roles.editor.vue index 02a2d4366a..7fe5624fb5 100644 --- a/packages/frontend/src/pages/admin/roles.editor.vue +++ b/packages/frontend/src/pages/admin/roles.editor.vue @@ -171,6 +171,65 @@ + + + +
+ + + + + + + + +
+
+ + + + +
+ + + + + + + + + +
+
+ + + + +
+ + + + + + + + + +
+
+