mirror of
				https://activitypub.software/TransFem-org/Sharkey.git
				synced 2025-10-31 08:39:21 +00:00 
			
		
		
		
	Merge branch 'develop'
This commit is contained in:
		
						commit
						08da5e9e0d
					
				
					 13 changed files with 65 additions and 17 deletions
				
			
		
							
								
								
									
										10
									
								
								CHANGELOG.md
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								CHANGELOG.md
									
										
									
									
									
								
							|  | @ -10,9 +10,19 @@ | |||
| You should also include the user name that made the change. | ||||
| --> | ||||
| 
 | ||||
| ## 12.105.0 (2022/02/09) | ||||
| 
 | ||||
| ### Improvements | ||||
| - インスタンスのテーマカラーを設定できるように @syuilo | ||||
| 
 | ||||
| ### Bugfixes | ||||
| - 一部環境でマイグレーションが失敗する問題を修正 @syuilo | ||||
| 
 | ||||
| ## 12.104.0 (2022/02/09) | ||||
| 
 | ||||
| ### Note | ||||
| ビルドする前に`npm run clean`を実行してください。 | ||||
| 
 | ||||
| このリリースはマイグレーションの規模が大きいため、インスタンスによってはマイグレーションに時間がかかる可能性があります。 | ||||
| マイグレーションが終わらない場合は、チャートの情報はリセットされてしまいますが`__chart__`で始まるテーブルの**レコード**を全て削除(テーブル自体は消さないでください)してから再度試す方法もあります。 | ||||
| 
 | ||||
|  |  | |||
|  | @ -828,6 +828,7 @@ overridedDeviceKind: "デバイスタイプ" | |||
| smartphone: "スマートフォン" | ||||
| tablet: "タブレット" | ||||
| auto: "自動" | ||||
| themeColor: "テーマカラー" | ||||
| 
 | ||||
| _emailUnavailable: | ||||
|   used: "既に使用されています" | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| { | ||||
| 	"name": "misskey", | ||||
| 	"version": "12.104.0", | ||||
| 	"version": "12.105.0", | ||||
| 	"codename": "indigo", | ||||
| 	"repository": { | ||||
| 		"type": "git", | ||||
|  |  | |||
|  | @ -158,18 +158,8 @@ module.exports = class chartV71644058404077 { | |||
| 		await queryRunner.query(`UPDATE "__chart_day__per_user_following" SET "___remote_followers_total"=2147483647 WHERE "___remote_followers_total" > 2147483647`); | ||||
| 		await queryRunner.query(`UPDATE "__chart_day__per_user_following" SET "___remote_followers_inc"=32767 WHERE "___remote_followers_inc" > 32767`); | ||||
| 		await queryRunner.query(`UPDATE "__chart_day__per_user_following" SET "___remote_followers_dec"=32767 WHERE "___remote_followers_dec" > 32767`); | ||||
| 		await queryRunner.query(`UPDATE "__chart__per_user_drive" SET "___totalCount"=2147483647 WHERE "___totalCount" > 2147483647`); | ||||
| 		await queryRunner.query(`UPDATE "__chart__per_user_drive" SET "___totalSize"=2147483647 WHERE "___totalSize" > 2147483647`); | ||||
| 		await queryRunner.query(`UPDATE "__chart__per_user_drive" SET "___incCount"=32767 WHERE "___incCount" > 32767`); | ||||
| 		await queryRunner.query(`UPDATE "__chart__per_user_drive" SET "___incSize"=2147483647 WHERE "___incSize" > 2147483647`); | ||||
| 		await queryRunner.query(`UPDATE "__chart__per_user_drive" SET "___decCount"=32767 WHERE "___decCount" > 32767`); | ||||
| 		await queryRunner.query(`UPDATE "__chart__per_user_drive" SET "___decSize"=2147483647 WHERE "___decSize" > 2147483647`); | ||||
| 		await queryRunner.query(`UPDATE "__chart_day__per_user_drive" SET "___totalCount"=2147483647 WHERE "___totalCount" > 2147483647`); | ||||
| 		await queryRunner.query(`UPDATE "__chart_day__per_user_drive" SET "___totalSize"=2147483647 WHERE "___totalSize" > 2147483647`); | ||||
| 		await queryRunner.query(`UPDATE "__chart_day__per_user_drive" SET "___incCount"=32767 WHERE "___incCount" > 32767`); | ||||
| 		await queryRunner.query(`UPDATE "__chart_day__per_user_drive" SET "___incSize"=2147483647 WHERE "___incSize" > 2147483647`); | ||||
| 		await queryRunner.query(`UPDATE "__chart_day__per_user_drive" SET "___decCount"=32767 WHERE "___decCount" > 32767`); | ||||
| 		await queryRunner.query(`UPDATE "__chart_day__per_user_drive" SET "___decSize"=2147483647 WHERE "___decSize" > 2147483647`); | ||||
| 		await queryRunner.query(`TRUNCATE TABLE "__chart__per_user_drive"`); | ||||
| 		await queryRunner.query(`TRUNCATE TABLE "__chart_day__per_user_drive"`); | ||||
| 
 | ||||
| 		await queryRunner.query(`ALTER TABLE "__chart__federation" ALTER COLUMN "___instance_total" TYPE integer USING "___instance_total"::integer`); | ||||
| 		await queryRunner.query(`ALTER TABLE "__chart__federation" ALTER COLUMN "___instance_inc" TYPE smallint USING "___instance_inc"::smallint`); | ||||
|  |  | |||
|  | @ -0,0 +1,13 @@ | |||
| const { MigrationInterface, QueryRunner } = require("typeorm"); | ||||
| 
 | ||||
| module.exports = class instanceThemeColor1644395759931 { | ||||
|     name = 'instanceThemeColor1644395759931' | ||||
| 
 | ||||
|     async up(queryRunner) { | ||||
|         await queryRunner.query(`ALTER TABLE "meta" ADD "themeColor" character varying(512)`); | ||||
|     } | ||||
| 
 | ||||
|     async down(queryRunner) { | ||||
|         await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "themeColor"`); | ||||
|     } | ||||
| } | ||||
|  | @ -88,6 +88,12 @@ export class Meta { | |||
| 	}) | ||||
| 	public pinnedClipId: Clip['id'] | null; | ||||
| 
 | ||||
| 	@Column('varchar', { | ||||
| 		length: 512, | ||||
| 		nullable: true, | ||||
| 	}) | ||||
| 	public themeColor: string | null; | ||||
| 
 | ||||
| 	@Column('varchar', { | ||||
| 		length: 512, | ||||
| 		nullable: true, | ||||
|  |  | |||
|  | @ -41,6 +41,10 @@ export const meta = { | |||
| 			validator: $.optional.nullable.arr($.str), | ||||
| 		}, | ||||
| 
 | ||||
| 		themeColor: { | ||||
| 			validator: $.optional.nullable.str, | ||||
| 		}, | ||||
| 
 | ||||
| 		mascotImageUrl: { | ||||
| 			validator: $.optional.nullable.str, | ||||
| 		}, | ||||
|  | @ -331,6 +335,10 @@ export default define(meta, async (ps, me) => { | |||
| 		set.blockedHosts = ps.blockedHosts.filter(Boolean); | ||||
| 	} | ||||
| 
 | ||||
| 	if (ps.themeColor !== undefined) { | ||||
| 		set.themeColor = ps.themeColor; | ||||
| 	} | ||||
| 
 | ||||
| 	if (ps.mascotImageUrl !== undefined) { | ||||
| 		set.mascotImageUrl = ps.mascotImageUrl; | ||||
| 	} | ||||
|  |  | |||
|  | @ -499,6 +499,7 @@ export default define(meta, async (ps, me) => { | |||
| 		enableRecaptcha: instance.enableRecaptcha, | ||||
| 		recaptchaSiteKey: instance.recaptchaSiteKey, | ||||
| 		swPublickey: instance.swPublicKey, | ||||
| 		themeColor: instance.themeColor, | ||||
| 		mascotImageUrl: instance.mascotImageUrl, | ||||
| 		bannerUrl: instance.bannerUrl, | ||||
| 		errorImageUrl: instance.errorImageUrl, | ||||
|  |  | |||
|  | @ -200,6 +200,7 @@ router.get(['/@:user', '/@:user/:sub'], async (ctx, next) => { | |||
| 			sub: ctx.params.sub, | ||||
| 			instanceName: meta.name || 'Misskey', | ||||
| 			icon: meta.iconUrl, | ||||
| 			themeColor: meta.themeColor, | ||||
| 		}); | ||||
| 		ctx.set('Cache-Control', 'public, max-age=30'); | ||||
| 	} else { | ||||
|  | @ -239,6 +240,7 @@ router.get('/notes/:note', async (ctx, next) => { | |||
| 			summary: getNoteSummary(_note), | ||||
| 			instanceName: meta.name || 'Misskey', | ||||
| 			icon: meta.iconUrl, | ||||
| 			themeColor: meta.themeColor, | ||||
| 		}); | ||||
| 
 | ||||
| 		if (['public', 'home'].includes(note.visibility)) { | ||||
|  | @ -277,6 +279,7 @@ router.get('/@:user/pages/:page', async (ctx, next) => { | |||
| 			profile, | ||||
| 			instanceName: meta.name || 'Misskey', | ||||
| 			icon: meta.iconUrl, | ||||
| 			themeColor: meta.themeColor, | ||||
| 		}); | ||||
| 
 | ||||
| 		if (['public'].includes(page.visibility)) { | ||||
|  | @ -307,6 +310,7 @@ router.get('/clips/:clip', async (ctx, next) => { | |||
| 			profile, | ||||
| 			instanceName: meta.name || 'Misskey', | ||||
| 			icon: meta.iconUrl, | ||||
| 			themeColor: meta.themeColor, | ||||
| 		}); | ||||
| 
 | ||||
| 		ctx.set('Cache-Control', 'public, max-age=180'); | ||||
|  | @ -330,6 +334,7 @@ router.get('/gallery/:post', async (ctx, next) => { | |||
| 			profile, | ||||
| 			instanceName: meta.name || 'Misskey', | ||||
| 			icon: meta.iconUrl, | ||||
| 			themeColor: meta.themeColor, | ||||
| 		}); | ||||
| 
 | ||||
| 		ctx.set('Cache-Control', 'public, max-age=180'); | ||||
|  | @ -353,6 +358,7 @@ router.get('/channels/:channel', async (ctx, next) => { | |||
| 			channel: _channel, | ||||
| 			instanceName: meta.name || 'Misskey', | ||||
| 			icon: meta.iconUrl, | ||||
| 			themeColor: meta.themeColor, | ||||
| 		}); | ||||
| 
 | ||||
| 		ctx.set('Cache-Control', 'public, max-age=180'); | ||||
|  | @ -412,6 +418,7 @@ router.get('(.*)', async ctx => { | |||
| 		instanceName: meta.name || 'Misskey', | ||||
| 		desc: meta.description, | ||||
| 		icon: meta.iconUrl, | ||||
| 		themeColor: meta.themeColor, | ||||
| 	}); | ||||
| 	ctx.set('Cache-Control', 'public, max-age=300'); | ||||
| }); | ||||
|  |  | |||
|  | @ -9,6 +9,7 @@ module.exports = async (ctx: Koa.Context) => { | |||
| 
 | ||||
| 	json.short_name = instance.name || 'Misskey'; | ||||
| 	json.name = instance.name || 'Misskey'; | ||||
| 	if (instance.themeColor) json.theme_color = instance.themeColor; | ||||
| 
 | ||||
| 	ctx.set('Cache-Control', 'max-age=300'); | ||||
| 	ctx.body = json; | ||||
|  |  | |||
|  | @ -19,8 +19,8 @@ html | |||
| 		meta(charset='utf-8') | ||||
| 		meta(name='application-name' content='Misskey') | ||||
| 		meta(name='referrer' content='origin') | ||||
| 		meta(name='theme-color' content='#86b300') | ||||
| 		meta(name='theme-color-orig' content='#86b300') | ||||
| 		meta(name='theme-color' content= themeColor || '#86b300') | ||||
| 		meta(name='theme-color-orig' content= themeColor || '#86b300') | ||||
| 		meta(property='twitter:card' content='summary') | ||||
| 		meta(property='og:site_name' content= instanceName || 'Misskey') | ||||
| 		meta(name='viewport' content='width=device-width, initial-scale=1') | ||||
|  |  | |||
|  | @ -341,9 +341,11 @@ function addTag(tag: string) { | |||
| } | ||||
| 
 | ||||
| function focus() { | ||||
| 	if (textareaEl) { | ||||
| 		textareaEl.focus(); | ||||
| 		textareaEl.setSelectionRange(textareaEl.value.length, textareaEl.value.length); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| function chooseFileFrom(ev) { | ||||
| 	selectFiles(ev.currentTarget ?? ev.target, i18n.ts.attachFile).then(files_ => { | ||||
|  |  | |||
|  | @ -25,6 +25,12 @@ | |||
| 				<template #label>{{ $ts.backgroundImageUrl }}</template> | ||||
| 			</FormInput> | ||||
| 
 | ||||
| 			<FormInput v-model="themeColor" class="_formBlock"> | ||||
| 				<template #prefix><i class="fas fa-palette"></i></template> | ||||
| 				<template #label>{{ $ts.themeColor }}</template> | ||||
| 				<template #caption>#RRGGBB</template> | ||||
| 			</FormInput> | ||||
| 
 | ||||
| 			<FormInput v-model="tosUrl" class="_formBlock"> | ||||
| 				<template #prefix><i class="fas fa-link"></i></template> | ||||
| 				<template #label>{{ $ts.tosUrl }}</template> | ||||
|  | @ -179,6 +185,7 @@ export default defineComponent({ | |||
| 			iconUrl: null, | ||||
| 			bannerUrl: null, | ||||
| 			backgroundImageUrl: null, | ||||
| 			themeColor: null, | ||||
| 			maxNoteTextLength: 0, | ||||
| 			enableLocalTimeline: false, | ||||
| 			enableGlobalTimeline: false, | ||||
|  | @ -206,6 +213,7 @@ export default defineComponent({ | |||
| 			this.iconUrl = meta.iconUrl; | ||||
| 			this.bannerUrl = meta.bannerUrl; | ||||
| 			this.backgroundImageUrl = meta.backgroundImageUrl; | ||||
| 			this.themeColor = meta.themeColor; | ||||
| 			this.maintainerName = meta.maintainerName; | ||||
| 			this.maintainerEmail = meta.maintainerEmail; | ||||
| 			this.maxNoteTextLength = meta.maxNoteTextLength; | ||||
|  | @ -233,6 +241,7 @@ export default defineComponent({ | |||
| 				iconUrl: this.iconUrl, | ||||
| 				bannerUrl: this.bannerUrl, | ||||
| 				backgroundImageUrl: this.backgroundImageUrl, | ||||
| 				themeColor: this.themeColor === '' ? null : this.themeColor, | ||||
| 				maintainerName: this.maintainerName, | ||||
| 				maintainerEmail: this.maintainerEmail, | ||||
| 				maxNoteTextLength: this.maxNoteTextLength, | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 syuilo
						syuilo