Merge branch 'art/dev' into art/bump-13.14.2

Signed-off-by: Mogyuchi <mogyuchi@mogyuchi.jp>
This commit is contained in:
Mogyuchi 2023-08-12 00:17:57 +09:00 committed by GitHub
commit 0cb5de2232
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
37 changed files with 119 additions and 42 deletions

View file

@ -3,8 +3,8 @@ name: Check copyright year
on:
push:
branches:
- master
- develop
- art/main
- art/dev
jobs:
check_copyright_year:

View file

@ -3,12 +3,18 @@ name: Publish Docker image (develop)
on:
push:
branches:
- develop
- art/dev
workflow_dispatch:
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
push_to_registry:
name: Push Docker image to Docker Hub
permissions:
packages: write
runs-on: ubuntu-latest
if: github.repository == 'misskey-dev/misskey'
steps:
@ -23,12 +29,14 @@ jobs:
id: meta
uses: docker/metadata-action@v4
with:
images: misskey/misskey
- name: Log in to Docker Hub
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
- name: Log in to the Container registry
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and Push to Docker Hub
uses: docker/build-push-action@v4
with:

View file

@ -5,9 +5,15 @@ on:
types: [published]
workflow_dispatch:
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
push_to_registry:
name: Push Docker image to Docker Hub
permissions:
packages: write
runs-on: ubuntu-latest
steps:
@ -22,7 +28,7 @@ jobs:
id: meta
uses: docker/metadata-action@v4
with:
images: misskey/misskey
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=edge
type=ref,event=pr
@ -30,11 +36,13 @@ jobs:
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
- name: Log in to Docker Hub
- name: Log in to the Container registry
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and Push to Docker Hub
uses: docker/build-push-action@v4
with:

View file

@ -4,8 +4,8 @@ name: Dockle
on:
push:
branches:
- master
- develop
- art/main
- art/dev
pull_request:
jobs:

View file

@ -3,8 +3,8 @@ name: Lint
on:
push:
branches:
- master
- develop
- art/main
- art/dev
pull_request:
jobs:

View file

@ -1,13 +0,0 @@
name: "Reviewer lottery"
on:
pull_request_target:
types: [opened, ready_for_review, reopened]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: uesteibar/reviewer-lottery@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}

View file

@ -5,7 +5,7 @@ on:
branches:
- master
- develop
pull_request_target:
# pull_request_target:
jobs:
build:

View file

@ -3,8 +3,8 @@ name: Test (backend)
on:
push:
branches:
- master
- develop
- art/main
- art/dev
pull_request:
jobs:

View file

@ -3,8 +3,8 @@ name: Test (frontend)
on:
push:
branches:
- master
- develop
- art/main
- art/dev
pull_request:
jobs:

View file

@ -5,9 +5,9 @@ name: Test (misskey.js)
on:
push:
branches: [ develop ]
branches: [ art/dev ]
pull_request:
branches: [ develop ]
branches: [ art/dev ]
jobs:
test:

View file

@ -3,8 +3,8 @@ name: Test (production install and build)
on:
push:
branches:
- master
- develop
- art/main
- art/dev
pull_request:
env:

View file

@ -1,3 +1,8 @@
<div align="center">
<img src="https://github.com/Misskey-art/misskey/assets/56180684/852c4783-eb4d-413d-b0ce-b184e9525ec8" alt="Misskey art logo" height=200/>
<h2>Fork of Misskey by Misskey.art</h2>
</div>
<div align="center">
<a href="https://misskey-hub.net">
<img src="./assets/title_float.svg" alt="Misskey logo" style="border-radius:50%" width="400"/>

View file

@ -1517,6 +1517,8 @@ _aboutMisskey:
contributors: "Main contributors"
allContributors: "All contributors"
source: "Source code"
originalSource: "Original source code"
ioSource: "Misskey.io's source code"
translation: "Translate Misskey"
donate: "Donate to Misskey"
morePatrons: "We also appreciate the support of many other helpers not listed here. Thank you! 🥰"
@ -1882,6 +1884,7 @@ _instanceCharts:
_timelines:
home: "Home"
local: "Local"
media: "Media"
social: "Social"
global: "Global"
_play:

4
locales/index.d.ts vendored
View file

@ -996,6 +996,7 @@ export interface Locale {
"disableFederationConfirm": string;
"disableFederationConfirmWarn": string;
"disableFederationOk": string;
"contentWarningCheckRule": string;
"invitationRequiredToRegister": string;
"emailNotSupported": string;
"postToTheChannel": string;
@ -1617,6 +1618,8 @@ export interface Locale {
"contributors": string;
"allContributors": string;
"source": string;
"originalSource": string;
"ioSource": string;
"translation": string;
"donate": string;
"morePatrons": string;
@ -2012,6 +2015,7 @@ export interface Locale {
"_timelines": {
"home": string;
"local": string;
"media": string;
"social": string;
"global": string;
};

View file

@ -993,6 +993,7 @@ letsLookAtTimeline: "タイムラインを見てみる"
disableFederationConfirm: "連合なしにしますか?"
disableFederationConfirmWarn: "連合なしにしても投稿は非公開になりません。ほとんどの場合、連合なしにする必要はありません。"
disableFederationOk: "連合なしにする"
contentWarningCheckRule: "R18など、NSFWに相当する内容を投稿する場合は、注釈に投稿の内容に関する簡単な説明を記述してください。\n詳しくはルールをご覧ください。https://service.misskey.art"
invitationRequiredToRegister: "現在このサーバーは招待制です。招待コードをお持ちの方のみ登録できます。"
emailNotSupported: "このサーバーではメール配信はサポートされていません"
postToTheChannel: "チャンネルに投稿"
@ -1535,6 +1536,8 @@ _aboutMisskey:
contributors: "主なコントリビューター"
allContributors: "全てのコントリビューター"
source: "ソースコード"
originalSource: "本家のソースコード"
ioSource: "Misskey.ioのソースコード"
translation: "Misskeyを翻訳"
donate: "Misskeyに寄付"
morePatrons: "他にも多くの方が支援してくれています。ありがとうございます🥰"
@ -1928,6 +1931,7 @@ _instanceCharts:
_timelines:
home: "ホーム"
local: "ローカル"
media: "メディア"
social: "ソーシャル"
global: "グローバル"

View file

@ -1,6 +1,6 @@
{
"name": "misskey",
"version": "13.14.2",
"version": "13.14.2-art+1.0",
"codename": "nasubi",
"repository": {
"type": "git",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 57 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 57 KiB

Before After
Before After

View file

@ -14,6 +14,7 @@ class GlobalTimelineChannel extends Channel {
public static shouldShare = true;
public static requireCredential = false;
private withReplies: boolean;
private withFiles: boolean;
constructor(
private metaService: MetaService,
@ -33,6 +34,7 @@ class GlobalTimelineChannel extends Channel {
if (!policies.gtlAvailable) return;
this.withReplies = params.withReplies as boolean;
this.withFiles = params.withFiles as boolean;
// Subscribe events
this.subscriber.on('notesStream', this.onNote);
@ -43,6 +45,9 @@ class GlobalTimelineChannel extends Channel {
if (note.visibility !== 'public') return;
if (note.channelId != null) return;
// ファイルを含まない投稿は除外
if (this.withFiles && (note.files === undefined || note.files.length === 0)) return;
// リプライなら再pack
if (note.replyId != null) {
note.reply = await this.noteEntityService.pack(note.replyId, this.user, {

View file

@ -12,6 +12,7 @@ class HomeTimelineChannel extends Channel {
public static shouldShare = true;
public static requireCredential = true;
private withReplies: boolean;
private withFiles: boolean;
constructor(
private noteEntityService: NoteEntityService,
@ -26,6 +27,7 @@ class HomeTimelineChannel extends Channel {
@bindThis
public async init(params: any) {
this.withReplies = params.withReplies as boolean;
this.withFiles = params.withFiles as boolean;
this.subscriber.on('notesStream', this.onNote);
}
@ -42,6 +44,9 @@ class HomeTimelineChannel extends Channel {
// Ignore notes from instances the user has muted
if (isInstanceMuted(note, new Set<string>(this.userProfile!.mutedInstances ?? []))) return;
// ファイルを含まない投稿は除外
if (this.withFiles && (note.files === undefined || note.files.length === 0)) return;
if (['followers', 'specified'].includes(note.visibility)) {
note = await this.noteEntityService.pack(note.id, this.user!, {
detail: true,

View file

@ -14,6 +14,7 @@ class HybridTimelineChannel extends Channel {
public static shouldShare = true;
public static requireCredential = true;
private withReplies: boolean;
private withFiles: boolean;
constructor(
private metaService: MetaService,
@ -33,6 +34,7 @@ class HybridTimelineChannel extends Channel {
if (!policies.ltlAvailable) return;
this.withReplies = params.withReplies as boolean;
this.withFiles = params.withFiles as boolean;
// Subscribe events
this.subscriber.on('notesStream', this.onNote);
@ -51,6 +53,9 @@ class HybridTimelineChannel extends Channel {
(note.channelId != null && this.followingChannels.has(note.channelId))
)) return;
// ファイルを含まない投稿は除外
if (this.withFiles && (note.files === undefined || note.files.length === 0)) return;
if (['followers', 'specified'].includes(note.visibility)) {
note = await this.noteEntityService.pack(note.id, this.user!, {
detail: true,

View file

@ -13,6 +13,7 @@ class LocalTimelineChannel extends Channel {
public static shouldShare = true;
public static requireCredential = false;
private withReplies: boolean;
private withFiles: boolean;
constructor(
private metaService: MetaService,
@ -32,6 +33,7 @@ class LocalTimelineChannel extends Channel {
if (!policies.ltlAvailable) return;
this.withReplies = params.withReplies as boolean;
this.withFiles = params.withFiles as boolean;
// Subscribe events
this.subscriber.on('notesStream', this.onNote);
@ -43,6 +45,9 @@ class LocalTimelineChannel extends Channel {
if (note.visibility !== 'public') return;
if (note.channelId != null && !this.followingChannels.has(note.channelId)) return;
// ファイルを含まない投稿は除外
if (this.withFiles && (note.files === undefined || note.files.length === 0)) return;
// リプライなら再pack
if (note.replyId != null) {
note.reply = await this.noteEntityService.pack(note.replyId, this.user, {

View file

@ -7,13 +7,13 @@
"theme_color": "#86b300",
"icons": [
{
"src": "/static-assets/icons/192.png",
"src": "/static-assets/icons/192art.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "/static-assets/icons/512.png",
"src": "/static-assets/icons/512art.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "maskable"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Before After
Before After

View file

@ -59,6 +59,7 @@
<button class="_buttonPrimary" style="padding: 4px; border-radius: 8px;" @click="addVisibleUser"><i class="ti ti-plus ti-fw"></i></button>
</div>
</div>
<MkInfo v-if="useCw" warn :class="$style.contentWarningCheckRule">{{ i18n.ts.contentWarningCheckRule }}</MkInfo>
<MkInfo v-if="hasNotSpecifiedMentions" warn :class="$style.hasNotSpecifiedMentions">{{ i18n.ts.notSpecifiedMentionWarning }} - <button class="_textButton" @click="addMissingMention()">{{ i18n.ts.add }}</button></MkInfo>
<input v-show="useCw" ref="cwInputEl" v-model="cw" :class="$style.cw" :placeholder="i18n.ts.annotation" @keydown="onKeydown">
<div :class="[$style.textOuter, { [$style.withCw]: useCw }]">
@ -1052,6 +1053,10 @@ defineExpose({
background: var(--X4);
}
.contentWarningCheckRule {
margin: 0 20px 16px 20px;
}
.hasNotSpecifiedMentions {
margin: 0 20px 16px 20px;
}

View file

@ -74,6 +74,17 @@ if (props.src === 'antenna') {
withReplies: defaultStore.state.showTimelineReplies,
});
connection.on('note', prepend);
} else if (props.src === 'media') {
endpoint = 'notes/hybrid-timeline';
query = {
withFiles: true,
withReplies: defaultStore.state.showTimelineReplies,
};
connection = stream.useChannel('hybridTimeline', {
withFiles: true,
withReplies: defaultStore.state.showTimelineReplies,
});
connection.on('note', prepend);
} else if (props.src === 'social') {
endpoint = 'notes/hybrid-timeline';
query = {

View file

@ -24,11 +24,21 @@
</div>
<FormSection>
<div class="_formLinks">
<FormLink to="https://github.com/misskey-dev/misskey" external>
<FormLink to="https://github.com/Misskey-art/misskey" external>
<template #icon><i class="ti ti-code"></i></template>
{{ i18n.ts._aboutMisskey.source }}
<template #suffix>GitHub</template>
</FormLink>
<FormLink to="https://github.com/misskey-dev/misskey" external>
<template #icon><i class="ti ti-code"></i></template>
{{ i18n.ts._aboutMisskey.originalSource }}
<template #suffix>GitHub</template>
</FormLink>
<FormLink to="https://github.com/misskeyIO/misskey" external>
<template #icon><i class="ti ti-code"></i></template>
{{ i18n.ts._aboutMisskey.ioSource }}
<template #suffix>GitHub</template>
</FormLink>
<FormLink to="https://crowdin.com/project/misskey" external>
<template #icon><i class="ti ti-language-hiragana"></i></template>
{{ i18n.ts._aboutMisskey.translation }}

View file

@ -128,6 +128,11 @@ const headerTabs = $computed(() => [{
title: i18n.ts._timelines.local,
icon: 'ti ti-planet',
iconOnly: true,
}, {
key: 'media',
title: i18n.ts._timelines.media,
icon: 'ti ti-photo',
iconOnly: true,
}, {
key: 'social',
title: i18n.ts._timelines.social,

View file

@ -24,7 +24,7 @@ export type Column = {
channelId?: string;
roleId?: string;
includingTypes?: typeof notificationTypes[number][];
tl?: 'home' | 'local' | 'social' | 'global';
tl?: 'home' | 'local' | 'media' | 'social' | 'global';
};
export const deckStore = markRaw(new Storage('deck', {

View file

@ -4,6 +4,7 @@
<i v-if="column.tl === 'home'" class="ti ti-home"></i>
<i v-else-if="column.tl === 'local'" class="ti ti-planet"></i>
<i v-else-if="column.tl === 'social'" class="ti ti-rocket"></i>
<i v-else-if="column.tl === 'media'" class="ti ti-photo"></i>
<i v-else-if="column.tl === 'global'" class="ti ti-whirl"></i>
<span style="margin-left: 8px;">{{ column.name }}</span>
</template>
@ -56,6 +57,8 @@ async function setType() {
value: 'home' as const, text: i18n.ts._timelines.home,
}, {
value: 'local' as const, text: i18n.ts._timelines.local,
}, {
value: 'media' as const, text: i18n.ts._timelines.media,
}, {
value: 'social' as const, text: i18n.ts._timelines.social,
}, {

View file

@ -117,6 +117,10 @@ const choose = async (ev) => {
text: i18n.ts._timelines.local,
icon: 'ti ti-planet',
action: () => { setSrc('local'); },
}, {
text: i18n.ts._timelines.media,
icon: 'ti ti-photo',
action: () => { setSrc('media'); },
}, {
text: i18n.ts._timelines.social,
icon: 'ti ti-rocket',