feat(frontend): 画面に雪を降らせる機能を復活
This commit is contained in:
		
							parent
							
								
									8c218397bc
								
							
						
					
					
						commit
						742da2f1e9
					
				
					 7 changed files with 501 additions and 4 deletions
				
			
		| 
						 | 
					@ -36,9 +36,9 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Client
 | 
					### Client
 | 
				
			||||||
- Feat: 今日誕生日のフォロー中のユーザーを一覧表示できるウィジェットを追加
 | 
					- Feat: 今日誕生日のフォロー中のユーザーを一覧表示できるウィジェットを追加
 | 
				
			||||||
- Feat: データセーバーでコードハイライトの読み込みを削減できるように
 | 
					- Feat: 画面に雪を降らせられるように
 | 
				
			||||||
- Feat: MFMのアニメーション要素(`tada`, `jelly`, `twitch`, `shake`, `spin`, `jump`, `bounce`, `rainbow`)に `delay` オプションを追加
 | 
					- Enhance: MFMのアニメーション要素(`tada`, `jelly`, `twitch`, `shake`, `spin`, `jump`, `bounce`, `rainbow`)に `delay` オプションを追加
 | 
				
			||||||
- Feat: センシティブと判断されたウェブサイトのサムネイルをぼかすように
 | 
					- Enhance: センシティブと判断されたウェブサイトのサムネイルを非表示に
 | 
				
			||||||
  - ウェブサイトをセンシティブと判断する仕組みが動いていないため、summalyProxyを使用しないと機能しません。
 | 
					  - ウェブサイトをセンシティブと判断する仕組みが動いていないため、summalyProxyを使用しないと機能しません。
 | 
				
			||||||
- Enhance: 投稿フォームの絵文字ピッカーをリアクション時に使用するものと同じのを使用するように #12336 #12560
 | 
					- Enhance: 投稿フォームの絵文字ピッカーをリアクション時に使用するものと同じのを使用するように #12336 #12560
 | 
				
			||||||
- Enhance: リアクション用ピン留め絵文字と投稿時の絵文字入力用ピン留め絵文字を分けて設定できるように #12560
 | 
					- Enhance: リアクション用ピン留め絵文字と投稿時の絵文字入力用ピン留め絵文字を分けて設定できるように #12560
 | 
				
			||||||
| 
						 | 
					@ -50,6 +50,7 @@
 | 
				
			||||||
- Enhance: Shareページで投稿を完了すると、親ウィンドウ(親フレーム)にpostMessageするように
 | 
					- Enhance: Shareページで投稿を完了すると、親ウィンドウ(親フレーム)にpostMessageするように
 | 
				
			||||||
- Enhance: チャンネル、クリップ、ページ、Play、ギャラリーにURLのコピーボタンを設置 #11305
 | 
					- Enhance: チャンネル、クリップ、ページ、Play、ギャラリーにURLのコピーボタンを設置 #11305
 | 
				
			||||||
- Enhance: ノートプレビューに「内容を隠す」が反映されるように
 | 
					- Enhance: ノートプレビューに「内容を隠す」が反映されるように
 | 
				
			||||||
 | 
					- Enhance: データセーバーでコードハイライトの読み込みを削減できるように
 | 
				
			||||||
- Enhance: データセーバーの適用範囲を個別で設定できるように
 | 
					- Enhance: データセーバーの適用範囲を個別で設定できるように
 | 
				
			||||||
	- 従来のデータセーバーの設定はリセットされます
 | 
						- 従来のデータセーバーの設定はリセットされます
 | 
				
			||||||
- Enhance: タイムライン上のタブからリスト、アンテナ、チャンネルの管理ページにジャンプできるように
 | 
					- Enhance: タイムライン上のタブからリスト、アンテナ、チャンネルの管理ページにジャンプできるように
 | 
				
			||||||
| 
						 | 
					@ -60,7 +61,7 @@
 | 
				
			||||||
	- MFMでコードブロックを利用する際に意図しないハイライトが起こらないようになりました
 | 
						- MFMでコードブロックを利用する際に意図しないハイライトが起こらないようになりました
 | 
				
			||||||
	- 逆に、MFMでコードハイライトを利用したい際は言語を明示的に指定する必要があります  
 | 
						- 逆に、MFMでコードハイライトを利用したい際は言語を明示的に指定する必要があります  
 | 
				
			||||||
	(例: ` ```js ` → Javascript, ` ```ais ` → AiScript)
 | 
						(例: ` ```js ` → Javascript, ` ```ais ` → AiScript)
 | 
				
			||||||
- fix: 「設定のバックアップ」で一部の項目がバックアップに含まれていなかった問題を修正
 | 
					- Fix: 「設定のバックアップ」で一部の項目がバックアップに含まれていなかった問題を修正
 | 
				
			||||||
- Fix: ウィジェットのジョブキューにて音声の発音方法変更に追従できていなかったのを修正 #12367
 | 
					- Fix: ウィジェットのジョブキューにて音声の発音方法変更に追従できていなかったのを修正 #12367
 | 
				
			||||||
- Fix: コードエディタが正しく表示されない問題を修正
 | 
					- Fix: コードエディタが正しく表示されない問題を修正
 | 
				
			||||||
- Fix: プロフィールの「ファイル」にセンシティブな画像がある際のデザインを修正
 | 
					- Fix: プロフィールの「ファイル」にセンシティブな画像がある際のデザインを修正
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								locales/index.d.ts
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								locales/index.d.ts
									
										
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1182,6 +1182,7 @@ export interface Locale {
 | 
				
			||||||
    "reloadRequiredToApplySettings": string;
 | 
					    "reloadRequiredToApplySettings": string;
 | 
				
			||||||
    "remainingN": string;
 | 
					    "remainingN": string;
 | 
				
			||||||
    "overwriteContentConfirm": string;
 | 
					    "overwriteContentConfirm": string;
 | 
				
			||||||
 | 
					    "seasonalScreenEffect": string;
 | 
				
			||||||
    "_announcement": {
 | 
					    "_announcement": {
 | 
				
			||||||
        "forExistingUsers": string;
 | 
					        "forExistingUsers": string;
 | 
				
			||||||
        "forExistingUsersDescription": string;
 | 
					        "forExistingUsersDescription": string;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1179,6 +1179,7 @@ code: "コード"
 | 
				
			||||||
reloadRequiredToApplySettings: "設定の反映にはリロードが必要です。"
 | 
					reloadRequiredToApplySettings: "設定の反映にはリロードが必要です。"
 | 
				
			||||||
remainingN: "残り: {n}"
 | 
					remainingN: "残り: {n}"
 | 
				
			||||||
overwriteContentConfirm: "現在の内容に上書きされますがよろしいですか?"
 | 
					overwriteContentConfirm: "現在の内容に上書きされますがよろしいですか?"
 | 
				
			||||||
 | 
					seasonalScreenEffect: "季節に応じた画面の演出"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
_announcement:
 | 
					_announcement:
 | 
				
			||||||
  forExistingUsers: "既存ユーザーのみ"
 | 
					  forExistingUsers: "既存ユーザーのみ"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,6 +20,7 @@ import { mainRouter } from '@/router.js';
 | 
				
			||||||
import { initializeSw } from '@/scripts/initialize-sw.js';
 | 
					import { initializeSw } from '@/scripts/initialize-sw.js';
 | 
				
			||||||
import { deckStore } from '@/ui/deck/deck-store.js';
 | 
					import { deckStore } from '@/ui/deck/deck-store.js';
 | 
				
			||||||
import { emojiPicker } from '@/scripts/emoji-picker.js';
 | 
					import { emojiPicker } from '@/scripts/emoji-picker.js';
 | 
				
			||||||
 | 
					import { SnowfallEffect } from '@/scripts/snowfall-effect.js';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export async function mainBoot() {
 | 
					export async function mainBoot() {
 | 
				
			||||||
	const { isClientUpdated } = await common(() => createApp(
 | 
						const { isClientUpdated } = await common(() => createApp(
 | 
				
			||||||
| 
						 | 
					@ -75,6 +76,13 @@ export async function mainBoot() {
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (defaultStore.state.enableSeasonalScreenEffect) {
 | 
				
			||||||
 | 
							const month = new Date().getMonth() + 1;
 | 
				
			||||||
 | 
							if (month === 12 || month === 1) {
 | 
				
			||||||
 | 
								new SnowfallEffect().render();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ($i) {
 | 
						if ($i) {
 | 
				
			||||||
		// only add post shortcuts if logged in
 | 
							// only add post shortcuts if logged in
 | 
				
			||||||
		hotkeys['p|n'] = post;
 | 
							hotkeys['p|n'] = post;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -122,6 +122,7 @@ SPDX-License-Identifier: AGPL-3.0-only
 | 
				
			||||||
				<MkSwitch v-model="useSystemFont">{{ i18n.ts.useSystemFont }}</MkSwitch>
 | 
									<MkSwitch v-model="useSystemFont">{{ i18n.ts.useSystemFont }}</MkSwitch>
 | 
				
			||||||
				<MkSwitch v-model="disableDrawer">{{ i18n.ts.disableDrawer }}</MkSwitch>
 | 
									<MkSwitch v-model="disableDrawer">{{ i18n.ts.disableDrawer }}</MkSwitch>
 | 
				
			||||||
				<MkSwitch v-model="forceShowAds">{{ i18n.ts.forceShowAds }}</MkSwitch>
 | 
									<MkSwitch v-model="forceShowAds">{{ i18n.ts.forceShowAds }}</MkSwitch>
 | 
				
			||||||
 | 
									<MkSwitch v-model="enableSeasonalScreenEffect">{{ i18n.ts.seasonalScreenEffect }}</MkSwitch>
 | 
				
			||||||
			</div>
 | 
								</div>
 | 
				
			||||||
			<div>
 | 
								<div>
 | 
				
			||||||
				<MkRadios v-model="emojiStyle">
 | 
									<MkRadios v-model="emojiStyle">
 | 
				
			||||||
| 
						 | 
					@ -289,6 +290,7 @@ const notificationStackAxis = computed(defaultStore.makeGetterSetter('notificati
 | 
				
			||||||
const keepScreenOn = computed(defaultStore.makeGetterSetter('keepScreenOn'));
 | 
					const keepScreenOn = computed(defaultStore.makeGetterSetter('keepScreenOn'));
 | 
				
			||||||
const disableStreamingTimeline = computed(defaultStore.makeGetterSetter('disableStreamingTimeline'));
 | 
					const disableStreamingTimeline = computed(defaultStore.makeGetterSetter('disableStreamingTimeline'));
 | 
				
			||||||
const useGroupedNotifications = computed(defaultStore.makeGetterSetter('useGroupedNotifications'));
 | 
					const useGroupedNotifications = computed(defaultStore.makeGetterSetter('useGroupedNotifications'));
 | 
				
			||||||
 | 
					const enableSeasonalScreenEffect = computed(defaultStore.makeGetterSetter('enableSeasonalScreenEffect'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
watch(lang, () => {
 | 
					watch(lang, () => {
 | 
				
			||||||
	miLocalStorage.setItem('lang', lang.value as string);
 | 
						miLocalStorage.setItem('lang', lang.value as string);
 | 
				
			||||||
| 
						 | 
					@ -328,6 +330,7 @@ watch([
 | 
				
			||||||
	highlightSensitiveMedia,
 | 
						highlightSensitiveMedia,
 | 
				
			||||||
	keepScreenOn,
 | 
						keepScreenOn,
 | 
				
			||||||
	disableStreamingTimeline,
 | 
						disableStreamingTimeline,
 | 
				
			||||||
 | 
						enableSeasonalScreenEffect,
 | 
				
			||||||
], async () => {
 | 
					], async () => {
 | 
				
			||||||
	await reloadAsk();
 | 
						await reloadAsk();
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										479
									
								
								packages/frontend/src/scripts/snowfall-effect.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										479
									
								
								packages/frontend/src/scripts/snowfall-effect.ts
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| 
						 | 
					@ -412,6 +412,10 @@ export const defaultStore = markRaw(new Storage('base', {
 | 
				
			||||||
			code: false,
 | 
								code: false,
 | 
				
			||||||
		} as Record<string, boolean>,
 | 
							} as Record<string, boolean>,
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
 | 
						enableSeasonalScreenEffect: {
 | 
				
			||||||
 | 
							where: 'device',
 | 
				
			||||||
 | 
							default: false,
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sound_masterVolume: {
 | 
						sound_masterVolume: {
 | 
				
			||||||
		where: 'device',
 | 
							where: 'device',
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue