#309 and some cleanups
|  | @ -12,7 +12,7 @@ Welcome! | |||
| [Misskey](https://misskey.xyz) is a completely open source, | ||||
| ultimately sophisticated new type of mini-blog based SNS. | ||||
| 
 | ||||
|  | ||||
|  | ||||
| 
 | ||||
| Key features | ||||
| -------------------------------- | ||||
|  |  | |||
| Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB | 
| Before Width: | Height: | Size: 628 B After Width: | Height: | Size: 628 B | 
| Before Width: | Height: | Size: 300 KiB After Width: | Height: | Size: 300 KiB | 
|  | @ -8,7 +8,7 @@ html(lang='ja', dir='ltr') | |||
| 		meta(name='theme-color', content=themeColor) | ||||
| 		meta(name='referrer', content='origin') | ||||
| 		meta(name='viewport', content='width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no') | ||||
| 		link(rel='stylesheet', href='/resources/style.css') | ||||
| 		link(rel='stylesheet', href='/assets/style.css') | ||||
| 		title | ||||
| 			block title | ||||
| 			|  | About Misskey | ||||
|  |  | |||
							
								
								
									
										20
									
								
								gulpfile.ts
									
										
									
									
									
								
							
							
						
						|  | @ -85,8 +85,8 @@ gulp.task('build:about:docs', () => { | |||
| gulp.task('build:copy', () => | ||||
| 	es.merge( | ||||
| 		gulp.src([ | ||||
| 			'./src/**/resources/**/*', | ||||
| 			'!./src/web/app/**/resources/**/*' | ||||
| 			'./src/**/assets/**/*', | ||||
| 			'!./src/web/app/**/assets/**/*' | ||||
| 		]).pipe(gulp.dest('./built/')) as any, | ||||
| 		gulp.src([ | ||||
| 			'./src/web/about/**/*', | ||||
|  | @ -134,11 +134,11 @@ gulp.task('build:client:scripts', done => { | |||
| 		require('./webpack.config').then(webpackOptions => { | ||||
| 			es.merge( | ||||
| 				webpack(webpackOptions, require('webpack')) | ||||
| 					.pipe(gulp.dest('./built/web/resources/')) as any, | ||||
| 					.pipe(gulp.dest('./built/web/assets/')) as any, | ||||
| 				gulp.src('./src/web/app/client/script.js') | ||||
| 					.pipe(replace('VERSION', JSON.stringify(version))) | ||||
| 					//.pipe(isProduction ? uglify() : gutil.noop())
 | ||||
| 					.pipe(gulp.dest('./built/web/resources/client/')) as any | ||||
| 					.pipe(gulp.dest('./built/web/assets/client/')) as any | ||||
| 			); | ||||
| 			done(); | ||||
| 		}); | ||||
|  | @ -150,22 +150,22 @@ gulp.task('build:client:styles', () => | |||
| 		.pipe(isProduction | ||||
| 			? (cssnano as any)() | ||||
| 			: gutil.noop()) | ||||
| 		.pipe(gulp.dest('./built/web/resources/')) | ||||
| 		.pipe(gulp.dest('./built/web/assets/')) | ||||
| ); | ||||
| 
 | ||||
| gulp.task('copy:client', [ | ||||
| 	'build:client:scripts' | ||||
| ], () => | ||||
| 		gulp.src([ | ||||
| 			'./resources/**/*', | ||||
| 			'./src/web/resources/**/*', | ||||
| 			'./src/web/app/*/resources/**/*' | ||||
| 			'./assets/**/*', | ||||
| 			'./src/web/assets/**/*', | ||||
| 			'./src/web/app/*/assets/**/*' | ||||
| 		]) | ||||
| 			.pipe(isProduction ? (imagemin as any)() : gutil.noop()) | ||||
| 			.pipe(rename(path => { | ||||
| 				path.dirname = path.dirname.replace('resources', '.'); | ||||
| 				path.dirname = path.dirname.replace('assets', '.'); | ||||
| 			})) | ||||
| 			.pipe(gulp.dest('./built/web/resources/')) | ||||
| 			.pipe(gulp.dest('./built/web/assets/')) | ||||
| ); | ||||
| 
 | ||||
| gulp.task('build:client:pug', [ | ||||
|  |  | |||
| Before Width: | Height: | Size: 1.4 KiB | 
| Before Width: | Height: | Size: 323 B | 
| Before Width: | Height: | Size: 2.7 KiB | 
| Before Width: | Height: | Size: 532 B | 
| Before Width: | Height: | Size: 930 B | 
							
								
								
									
										1794
									
								
								resources/icon.ai
									
										
									
									
									
								
							
							
						
						| Before Width: | Height: | Size: 2.7 KiB | 
|  | @ -1,21 +0,0 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0)  --> | ||||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | ||||
| <svg version="1.1" id="Layer" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" | ||||
| 	 width="256px" height="256px" viewBox="0 0 256 256" enable-background="new 0 0 256 256" xml:space="preserve"> | ||||
| <path fill="#EC6B43" d="M128,32c-44.183,0-80,35.817-80,80c0,31.234,16,56,44.002,71.462C111.037,193.973,112,224,128,224 | ||||
| 	s16.964-30.025,36-40.538C192,168,208,143.233,208,112C208,67.817,172.183,32,128,32z M128,132c-11.046,0-20-8.954-20-20 | ||||
| 	s8.954-20,20-20s20,8.954,20,20S139.046,132,128,132z"/> | ||||
| <g> | ||||
| </g> | ||||
| <g> | ||||
| </g> | ||||
| <g> | ||||
| </g> | ||||
| <g> | ||||
| </g> | ||||
| <g> | ||||
| </g> | ||||
| <g> | ||||
| </g> | ||||
| </svg> | ||||
| Before Width: | Height: | Size: 843 B | 
| Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB | 
| Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB | 
| Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 6.1 KiB | 
|  | @ -24,7 +24,7 @@ app.use(cors()); | |||
| /** | ||||
|  * Statics | ||||
|  */ | ||||
| app.use('/resources', express.static(__dirname + '/resources', { | ||||
| app.use('/assets', express.static(__dirname + '/assets', { | ||||
| 	maxAge: 1000 * 60 * 60 * 24 * 365 // 一年
 | ||||
| })); | ||||
| 
 | ||||
|  | @ -33,12 +33,12 @@ app.get('/', (req, res) => { | |||
| }); | ||||
| 
 | ||||
| app.get('/default-avatar.jpg', (req, res) => { | ||||
| 	const file = fs.readFileSync(__dirname + '/resources/avatar.jpg'); | ||||
| 	const file = fs.readFileSync(__dirname + '/assets/avatar.jpg'); | ||||
| 	send(file, 'image/jpeg', req, res); | ||||
| }); | ||||
| 
 | ||||
| app.get('/app-default.jpg', (req, res) => { | ||||
| 	const file = fs.readFileSync(__dirname + '/resources/dummy.png'); | ||||
| 	const file = fs.readFileSync(__dirname + '/assets/dummy.png'); | ||||
| 	send(file, 'image/png', req, res); | ||||
| }); | ||||
| 
 | ||||
|  | @ -54,7 +54,7 @@ async function raw(data: Buffer, type: string, download: boolean, res: express.R | |||
| 
 | ||||
| async function thumbnail(data: Buffer, type: string, resize: number, res: express.Response): Promise<any> { | ||||
| 	if (!/^image\/.*$/.test(type)) { | ||||
| 		data = fs.readFileSync(__dirname + '/resources/dummy.png'); | ||||
| 		data = fs.readFileSync(__dirname + '/assets/dummy.png'); | ||||
| 	} | ||||
| 
 | ||||
| 	let g = gm(data); | ||||
|  | @ -100,7 +100,7 @@ app.get('/:id', async (req, res) => { | |||
| 	const file = await File.findOne({_id: new mongodb.ObjectID(req.params.id)}); | ||||
| 
 | ||||
| 	if (file == null) { | ||||
| 		res.status(404).sendFile(__dirname + '/resources/dummy.png'); | ||||
| 		res.status(404).sendFile(__dirname + '/assets/dummy.png'); | ||||
| 		return; | ||||
| 	} else if (file.data == null) { | ||||
| 		res.sendStatus(400); | ||||
|  | @ -120,7 +120,7 @@ app.get('/:id/:name', async (req, res) => { | |||
| 	const file = await File.findOne({_id: new mongodb.ObjectID(req.params.id)}); | ||||
| 
 | ||||
| 	if (file == null) { | ||||
| 		res.status(404).sendFile(__dirname + '/resources/dummy.png'); | ||||
| 		res.status(404).sendFile(__dirname + '/assets/dummy.png'); | ||||
| 		return; | ||||
| 	} else if (file.data == null) { | ||||
| 		res.sendStatus(400); | ||||
|  |  | |||
| Before Width: | Height: | Size: 141 KiB After Width: | Height: | Size: 141 KiB | 
|  | @ -13,11 +13,11 @@ app.disable('x-powered-by'); | |||
| app.locals.cache = true; | ||||
| 
 | ||||
| app.get('/himasaku.png', (req, res) => { | ||||
| 	res.sendFile(__dirname + '/resources/himasaku.png'); | ||||
| 	res.sendFile(__dirname + '/assets/himasaku.png'); | ||||
| }); | ||||
| 
 | ||||
| app.get('*', (req, res) => { | ||||
| 	res.sendFile(__dirname + '/resources/index.html'); | ||||
| 	res.sendFile(__dirname + '/assets/index.html'); | ||||
| }); | ||||
| 
 | ||||
| module.exports = app; | ||||
|  |  | |||
|  | @ -3,7 +3,7 @@ import ms = require('ms'); | |||
| 
 | ||||
| const router = express.Router(); | ||||
| 
 | ||||
| router.use('/@/about/resources', express.static(`${__dirname}/resources`, { | ||||
| router.use('/@/about/assets', express.static(`${__dirname}/assets`, { | ||||
| 	maxAge: ms('7 days') | ||||
| })); | ||||
| 
 | ||||
|  |  | |||
| Before Width: | Height: | Size: 646 B After Width: | Height: | Size: 646 B | 
|  | @ -23,7 +23,7 @@ | |||
| 		<h1>サインインしてください</h1> | ||||
| 		<mk-signin></mk-signin> | ||||
| 	</main> | ||||
| 	<footer><img src="/resources/auth/logo.svg" alt="Misskey"/></footer> | ||||
| 	<footer><img src="/assets/auth/logo.svg" alt="Misskey"/></footer> | ||||
| 	<style> | ||||
| 		:scope | ||||
| 			display block | ||||
|  |  | |||
|  | @ -2,4 +2,4 @@ extends ../base | |||
| 
 | ||||
| block head | ||||
| 	meta(name='viewport' content='width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no') | ||||
| 	script(src=`/resources/auth/script.${version}.js` async defer) | ||||
| 	script(src=`/assets/auth/script.${version}.js` async defer) | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| doctype html | ||||
| 
 | ||||
| != '\r\n<!-- Thank you for using Misskey! @syuilo -->\r\n' | ||||
| != '\n<!-- Thank you for using Misskey! @syuilo -->\n' | ||||
| 
 | ||||
| html(lang='ja' dir='ltr') | ||||
| 
 | ||||
|  | @ -11,7 +11,7 @@ html(lang='ja' dir='ltr') | |||
| 		meta(name='referrer' content='origin') | ||||
| 		title Misskey | ||||
| 		style | ||||
| 			include ./../../../built/web/resources/init.css | ||||
| 			include ./../../../built/web/assets/init.css | ||||
| 		script(src='https://use.fontawesome.com/22aba0df4f.js' async) | ||||
| 		block head | ||||
| 
 | ||||
|  |  | |||
|  | @ -15,7 +15,7 @@ | |||
| 	 */ | ||||
| 	function mountDesktop() { | ||||
| 		const script = document.createElement('script'); | ||||
| 		script.setAttribute('src', `/resources/desktop/script.${VERSION}.js`); | ||||
| 		script.setAttribute('src', `/assets/desktop/script.${VERSION}.js`); | ||||
| 		script.setAttribute('async', 'true'); | ||||
| 		script.setAttribute('defer', 'true'); | ||||
| 		head.appendChild(script); | ||||
|  | @ -31,7 +31,7 @@ | |||
| 		head.appendChild(meta); | ||||
| 
 | ||||
| 		const script = document.createElement('script'); | ||||
| 		script.setAttribute('src', `/resources/mobile/script.${VERSION}.js`); | ||||
| 		script.setAttribute('src', `/assets/mobile/script.${VERSION}.js`); | ||||
| 		script.setAttribute('async', 'true'); | ||||
| 		script.setAttribute('defer', 'true'); | ||||
| 		head.appendChild(script); | ||||
|  |  | |||
|  | @ -2,4 +2,4 @@ extends ../base | |||
| 
 | ||||
| block head | ||||
| 	script | ||||
| 		include ./../../../../built/web/resources/client/script.js | ||||
| 		include ./../../../../built/web/assets/client/script.js | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| <mk-core-error> | ||||
| 	<!--i: i.fa.fa-times-circle--> | ||||
| 	<img src="/resources/error.jpg" alt=""/> | ||||
| 	<img src="/assets/error.jpg" alt=""/> | ||||
| 	<h1>サーバーに接続できません</h1> | ||||
| 	<p class="text">インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから<a onclick={ retry }>再度お試し</a>ください。</p> | ||||
| 	<p class="thanks">いつもMisskeyをご利用いただきありがとうございます。</p> | ||||
|  |  | |||
|  | @ -191,7 +191,7 @@ | |||
| 
 | ||||
| 					&:not([data-is-me]):not([data-is-read]) | ||||
| 						> div | ||||
| 							background-image url("/resources/unread.svg") | ||||
| 							background-image url("/assets/unread.svg") | ||||
| 							background-repeat no-repeat | ||||
| 							background-position 0 center | ||||
| 
 | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ | |||
| 	<div class="content-container"> | ||||
| 		<div class="balloon"> | ||||
| 			<p class="read" if={ message.is_me && message.is_read }>既読</p> | ||||
| 			<button class="delete-button" if={ message.is_me } title="メッセージを削除"><img src="/resources/desktop/messaging/delete.png" alt="Delete"/></button> | ||||
| 			<button class="delete-button" if={ message.is_me } title="メッセージを削除"><img src="/assets/desktop/messaging/delete.png" alt="Delete"/></button> | ||||
| 			<div class="content" if={ !message.is_deleted }> | ||||
| 				<div ref="text"></div> | ||||
| 				<div class="image" if={ message.file }><img src={ message.file.url } alt="image" title={ message.file.name }/></div> | ||||
|  |  | |||
| Before Width: | Height: | Size: 643 B After Width: | Height: | Size: 643 B | 
| Before Width: | Height: | Size: 646 B After Width: | Height: | Size: 646 B | 
| Before Width: | Height: | Size: 3 KiB After Width: | Height: | Size: 3 KiB | 
|  | @ -1,11 +1,11 @@ | |||
| <mk-drive-browser-file data-is-selected={ isSelected } data-is-contextmenu-showing={ isContextmenuShowing.toString() } onclick={ onclick } oncontextmenu={ oncontextmenu } draggable="true" ondragstart={ ondragstart } ondragend={ ondragend } title={ title }> | ||||
| 	<div class="label" if={ I.avatar_id == file.id }><img src="/resources/label.svg"/> | ||||
| 	<div class="label" if={ I.avatar_id == file.id }><img src="/assets/label.svg"/> | ||||
| 		<p>アバター</p> | ||||
| 	</div> | ||||
| 	<div class="label" if={ I.banner_id == file.id }><img src="/resources/label.svg"/> | ||||
| 	<div class="label" if={ I.banner_id == file.id }><img src="/assets/label.svg"/> | ||||
| 		<p>バナー</p> | ||||
| 	</div> | ||||
| 	<div class="label" if={ I.data.wallpaper == file.id }><img src="/resources/label.svg"/> | ||||
| 	<div class="label" if={ I.data.wallpaper == file.id }><img src="/assets/label.svg"/> | ||||
| 		<p>壁紙</p> | ||||
| 	</div> | ||||
| 	<div class="thumbnail"><img src={ file.url + '?thumbnail&size=128' } alt=""/></div> | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| <mk-entrance> | ||||
| 	<main> | ||||
| 		<img src="/resources/title.svg" alt="Misskey"/> | ||||
| 		<img src="/assets/title.svg" alt="Misskey"/> | ||||
| 		<mk-entrance-signin if={ mode == 'signin' }></mk-entrance-signin> | ||||
| 		<mk-entrance-signup if={ mode == 'signup' }></mk-entrance-signup> | ||||
| 		<div class="introduction" if={ mode == 'introduction' }> | ||||
|  |  | |||
|  | @ -5,7 +5,7 @@ | |||
| 			<ul> | ||||
| 				<li each={ files }> | ||||
| 					<div class="img" style="background-image: url({ url + '?thumbnail&size=64' })" title={ name }></div> | ||||
| 					<img class="remove" onclick={ removeFile } src="/resources/desktop/remove.png" title="添付取り消し" alt=""/> | ||||
| 					<img class="remove" onclick={ removeFile } src="/assets/desktop/remove.png" title="添付取り消し" alt=""/> | ||||
| 				</li> | ||||
| 				<li class="add" if={ files.length < 4 } title="PCからファイルを添付" onclick={ selectFile }><i class="fa fa-plus"></i></li> | ||||
| 			</ul> | ||||
|  |  | |||
|  | @ -45,7 +45,7 @@ | |||
| 						display block | ||||
| 						width 100% | ||||
| 						height 48px | ||||
| 						background-image url(/resources/desktop/header-logo-white.svg) | ||||
| 						background-image url(/assets/desktop/header-logo-white.svg) | ||||
| 						background-size 64px | ||||
| 						background-position center | ||||
| 						background-repeat no-repeat | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| extends ../base | ||||
| 
 | ||||
| block head | ||||
| 	script(src=`/resources/dev/script.${version}.js` async defer) | ||||
| 	script(src=`/assets/dev/script.${version}.js` async defer) | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| <mk-entrance> | ||||
| 	<main><img src="/resources/title.svg" alt="Misskey"/> | ||||
| 	<main><img src="/assets/title.svg" alt="Misskey"/> | ||||
| 		<mk-entrance-signin if={ mode == 'signin' }></mk-entrance-signin> | ||||
| 		<mk-entrance-signup if={ mode == 'signup' }></mk-entrance-signup> | ||||
| 		<div class="introduction" if={ mode == 'introduction' }> | ||||
|  |  | |||
| Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB | 
| Before Width: | Height: | Size: 352 KiB After Width: | Height: | Size: 352 KiB | 
| Before Width: | Height: | Size: 441 B After Width: | Height: | Size: 441 B | 
| Before Width: | Height: | Size: 646 B After Width: | Height: | Size: 646 B | 
| Before Width: | Height: | Size: 536 B After Width: | Height: | Size: 536 B | 
| Before Width: | Height: | Size: 352 KiB | 
|  | @ -35,12 +35,12 @@ app.use((req, res, next) => { | |||
| }); | ||||
| 
 | ||||
| /** | ||||
|  * Static resources | ||||
|  * Static assets | ||||
|  */ | ||||
| app.use(favicon(`${__dirname}/resources/favicon.ico`)); | ||||
| app.get('/manifest.json', (req, res) => res.sendFile(__dirname + '/resources/manifest.json')); | ||||
| app.get('/apple-touch-icon.png', (req, res) => res.sendFile(__dirname + '/resources/apple-touch-icon.png')); | ||||
| app.use('/resources', express.static(`${__dirname}/resources`, { | ||||
| app.use(favicon(`${__dirname}/assets/favicon.ico`)); | ||||
| app.get('/manifest.json', (req, res) => res.sendFile(__dirname + '/assets/manifest.json')); | ||||
| app.get('/apple-touch-icon.png', (req, res) => res.sendFile(__dirname + '/assets/apple-touch-icon.png')); | ||||
| app.use('/assets', express.static(`${__dirname}/assets`, { | ||||
| 	maxAge: ms('7 days') | ||||
| })); | ||||
| 
 | ||||
|  |  | |||