Compare commits
118 Commits
Author | SHA1 | Date | |
---|---|---|---|
321841101b | |||
8071ca0d66 | |||
c1141c5267 | |||
f1fdd4524d | |||
02dd2c7f1a | |||
fc3a323a21 | |||
d92f501b50 | |||
be408ba6ea | |||
c81a204e0c | |||
fce1d619e8 | |||
3e146d5f94 | |||
cb5c0ac2f5 | |||
4798657b70 | |||
f565e60bcf | |||
89461c598f | |||
b320d08a5e | |||
a930d4fc7b | |||
d42197fc2e | |||
2d3138af76 | |||
4ee4b6f332 | |||
fc6c048fad | |||
dae9c4288d | |||
9f37149369 | |||
e476647ab8 | |||
eb23be979c | |||
6d9d6a6779 | |||
1c0cb1ae71 | |||
0ba5dc3900 | |||
872717feeb | |||
85b51f06a4 | |||
94df60d054 | |||
7395284480 | |||
b537fa5467 | |||
dca58c20d2 | |||
0a3030f7d0 | |||
81cc6f3104 | |||
cc0b9c6933 | |||
5671f1c6a4 | |||
89dee86f39 | |||
b414068ada | |||
3be7952e9f | |||
137b5da4aa | |||
2ee1639acb | |||
a05b184595 | |||
f3bacae1dc | |||
af5fb99fe6 | |||
0ebe4ad7a3 | |||
0cf99037c8 | |||
b913debc57 | |||
abe3f1f5e9 | |||
d30b88364c | |||
4840b7acf7 | |||
f5bac11fae | |||
68a70a94fc | |||
bf7436ddf8 | |||
b99155a084 | |||
027e62a6ea | |||
c6b6c8afbd | |||
1236a09247 | |||
6a4d38045e | |||
281aed2797 | |||
3e47f9943a | |||
f6d27dd17d | |||
073704c7af | |||
809db02ca2 | |||
2e45ff6a32 | |||
02d6974be9 | |||
e530afb2fe | |||
dba15f0e8b | |||
8f771c60c5 | |||
d9b1ca8c48 | |||
9e247c119a | |||
08b5e21e96 | |||
2101d3aa5b | |||
aa80fb5d4a | |||
63727f6514 | |||
ade35cbb2d | |||
6ec9059ccc | |||
c93d1711cf | |||
e734ad0413 | |||
047dee3a70 | |||
8c76089caf | |||
ab6cf2dba3 | |||
65a309e605 | |||
f37e713640 | |||
bc1e9245bd | |||
2fa82bde16 | |||
140249172c | |||
9677d1288a | |||
133ae7d171 | |||
5b92a43361 | |||
b839bf6918 | |||
7ea4ba1d5a | |||
f000dbd657 | |||
36e4a24527 | |||
861cc83014 | |||
d2b273dc3b | |||
e49ad120f3 | |||
6f441f35ec | |||
14a5c429bb | |||
100125ad5a | |||
f8c414aafc | |||
14aedb07aa | |||
40b01e0ad3 | |||
f9f6718174 | |||
c41723b09f | |||
1b6effd369 | |||
1bbf7a45a8 | |||
0a5e021128 | |||
52ebde60fc | |||
c77cf79f5d | |||
1233abe5b0 | |||
f2f2b09ff1 | |||
5bf87b7efe | |||
526321adb6 | |||
f816daa59e | |||
5d6f75ec05 | |||
28994d001c |
@ -22,6 +22,7 @@
|
|||||||
"globals": {
|
"globals": {
|
||||||
"ENV": true,
|
"ENV": true,
|
||||||
"VERSION": true,
|
"VERSION": true,
|
||||||
"API": true
|
"API": true,
|
||||||
|
"LANGS": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,10 @@
|
|||||||
notifications:
|
notifications:
|
||||||
email: false
|
email: false
|
||||||
|
|
||||||
|
branches:
|
||||||
|
except:
|
||||||
|
- l10n_master
|
||||||
|
|
||||||
language: node_js
|
language: node_js
|
||||||
|
|
||||||
node_js:
|
node_js:
|
||||||
|
140
assets/title-dark.svg
Normal file
140
assets/title-dark.svg
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="614.71039"
|
||||||
|
height="205.08009"
|
||||||
|
viewBox="0 0 162.64213 54.260776"
|
||||||
|
version="1.1"
|
||||||
|
id="svg8"
|
||||||
|
inkscape:version="0.92.1 r15371"
|
||||||
|
sodipodi:docname="misskey.svg"
|
||||||
|
inkscape:export-filename="C:\Users\Takumiya_Cho\Desktop\misskey.png"
|
||||||
|
inkscape:export-xdpi="96"
|
||||||
|
inkscape:export-ydpi="96">
|
||||||
|
<defs
|
||||||
|
id="defs2">
|
||||||
|
<inkscape:path-effect
|
||||||
|
effect="simplify"
|
||||||
|
id="path-effect5115"
|
||||||
|
is_visible="true"
|
||||||
|
steps="1"
|
||||||
|
threshold="0.000408163"
|
||||||
|
smooth_angles="360"
|
||||||
|
helper_size="0"
|
||||||
|
simplify_individual_paths="false"
|
||||||
|
simplify_just_coalesce="false"
|
||||||
|
simplifyindividualpaths="false"
|
||||||
|
simplifyJustCoalesce="false" />
|
||||||
|
<inkscape:path-effect
|
||||||
|
effect="simplify"
|
||||||
|
id="path-effect5104"
|
||||||
|
is_visible="true"
|
||||||
|
steps="1"
|
||||||
|
threshold="0.000408163"
|
||||||
|
smooth_angles="360"
|
||||||
|
helper_size="0"
|
||||||
|
simplify_individual_paths="false"
|
||||||
|
simplify_just_coalesce="false"
|
||||||
|
simplifyindividualpaths="false"
|
||||||
|
simplifyJustCoalesce="false" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="0.9899495"
|
||||||
|
inkscape:cx="370.82839"
|
||||||
|
inkscape:cy="79.043895"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
units="px"
|
||||||
|
inkscape:snap-bbox="true"
|
||||||
|
inkscape:bbox-nodes="true"
|
||||||
|
inkscape:snap-bbox-edge-midpoints="false"
|
||||||
|
inkscape:snap-smooth-nodes="true"
|
||||||
|
inkscape:snap-center="true"
|
||||||
|
inkscape:snap-page="true"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1017"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="1072"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:object-paths="true"
|
||||||
|
inkscape:bbox-paths="true"
|
||||||
|
fit-margin-top="50"
|
||||||
|
fit-margin-left="50"
|
||||||
|
fit-margin-bottom="20"
|
||||||
|
fit-margin-right="50" />
|
||||||
|
<metadata
|
||||||
|
id="metadata5">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="レイヤー 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-11.097531,-173.29664)">
|
||||||
|
<g
|
||||||
|
transform="matrix(0.28612302,0,0,0.28612302,17.176981,141.74334)"
|
||||||
|
id="text4489-6"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:141.03404236px;line-height:476.69509888px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#fff;fill-opacity:1;stroke:none;stroke-width:0.92471898px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
aria-label="Mi">
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="zccssscssccscczzzccsccsscscsccz"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path5210"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#fff;fill-opacity:1;stroke-width:0.92471898px"
|
||||||
|
d="m 75.196381,231.17126 c -5.855419,0.0202 -10.885068,-3.50766 -13.2572,-7.61584 -1.266603,-1.79454 -3.772419,-2.43291 -3.807919,0 v 11.2332 c 0,4.51309 -1.645397,8.41504 -4.936191,11.70583 -3.196772,3.19677 -7.098714,4.79516 -11.705826,4.79516 -4.513089,0 -8.415031,-1.59839 -11.705825,-4.79516 -3.196772,-3.29079 -4.795158,-7.19274 -4.795158,-11.70583 v -61.7729 c 0,-3.47884 0.987238,-6.6286 2.961715,-9.44928 2.068499,-2.91471 4.701135,-4.9362 7.897906,-6.06447 1.786431,-0.65816 3.666885,-0.98724 5.641362,-0.98724 5.077225,0 9.308247,1.97448 12.693064,5.92343 1.786431,1.97448 2.820681,3.00873 3.102749,3.10275 0,0 13.408119,16.21319 13.78421,16.49526 0.376091,0.28206 1.480789,2.43848 4.127113,2.43848 2.646324,0 3.89218,-2.15642 4.26827,-2.43848 0.376091,-0.28207 13.784088,-16.49526 13.784088,-16.49526 0.09402,0.094 1.081261,-0.94022 2.961715,-3.10275 3.478837,-3.94895 7.756866,-5.92343 12.834096,-5.92343 1.88045,0 3.76091,0.32908 5.64136,0.98724 3.19677,1.12827 5.7824,3.14976 7.75688,6.06447 2.06849,2.82068 3.10274,5.97044 3.10274,9.44928 v 61.7729 c 0,4.51309 -1.6454,8.41504 -4.93619,11.70583 -3.19677,3.19677 -7.09871,4.79516 -11.70582,4.79516 -4.51309,0 -8.41504,-1.59839 -11.705828,-4.79516 -3.196772,-3.29079 -4.795158,-7.19274 -4.795158,-11.70583 v -11.2332 c -0.277898,-3.06563 -2.987588,-1.13379 -3.948953,0 -2.538613,4.70114 -7.401781,7.59567 -13.2572,7.61584 z" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path5212"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#fff;fill-opacity:1;stroke-width:0.92471898px"
|
||||||
|
d="m 145.83461,185.00361 q -5.92343,0 -10.15445,-4.08999 -4.08999,-4.23102 -4.08999,-10.15445 0,-5.92343 4.08999,-10.01342 4.23102,-4.23102 10.15445,-4.23102 5.92343,0 10.15445,4.23102 4.23102,4.08999 4.23102,10.01342 0,5.92343 -4.23102,10.15445 -4.23102,4.08999 -10.15445,4.08999 z m 0.14103,2.82068 q 5.92343,0 10.01342,4.23102 4.23102,4.23102 4.23102,10.15445 v 34.83541 q 0,5.92343 -4.23102,10.15445 -4.08999,4.08999 -10.01342,4.08999 -5.92343,0 -10.15445,-4.08999 -4.23102,-4.23102 -4.23102,-10.15445 v -34.83541 q 0,-5.92343 4.23102,-10.15445 4.23102,-4.23102 10.15445,-4.23102 z" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path5199"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:136.34428406px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#fff;fill-opacity:1;stroke:none;stroke-width:0.26458335px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 72.022691,200.53715 q 0.968125,0.24203 2.420312,0.5244 2.420313,0.40339 3.791824,1.29083 2.581666,1.69422 2.581666,5.08266 0,2.74302 -1.815234,4.47758 -2.097604,2.01693 -5.849089,2.01693 -2.743021,0 -6.131458,-0.76644 -1.089141,-0.24203 -1.774896,-1.08914 -0.645417,-0.84711 -0.645417,-1.89591 0,-1.29083 0.887448,-2.17828 0.927786,-0.92779 2.178281,-0.92779 0.363047,0 0.685756,0.0807 1.169817,0.24203 4.477578,0.60508 0.443724,0 0.968125,-0.0403 0.201693,0 0.201693,-0.24203 0.04034,-0.20169 -0.242032,-0.28237 -1.37151,-0.24203 -2.541328,-0.5244 -1.331172,-0.28237 -1.895911,-0.48406 -1.12948,-0.32271 -1.895912,-0.84711 -2.581667,-1.69422 -2.622005,-5.08266 0,-2.70268 1.855573,-4.47758 2.258958,-2.17828 6.413828,-1.97659 2.783359,0.12102 5.566719,0.7261 1.048802,0.24203 1.734557,1.08914 0.685756,0.84711 0.685756,1.93625 0,1.25049 -0.927787,2.17828 -0.887448,0.88745 -2.178281,0.88745 -0.322709,0 -0.645417,-0.0807 -1.169818,-0.24203 -4.517917,-0.56474 -0.403385,-0.0403 -0.766432,0 -0.322708,0.0403 -0.322708,0.24203 0.04034,0.24203 0.322708,0.32271 z" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path5201"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:136.34428406px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#fff;fill-opacity:1;stroke:none;stroke-width:0.26458335px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 89.577027,200.53715 q 0.968125,0.24203 2.420312,0.5244 2.420313,0.40339 3.791823,1.29083 2.581667,1.69422 2.581667,5.08266 0,2.74302 -1.815234,4.47758 -2.097604,2.01693 -5.849089,2.01693 -2.743021,0 -6.131458,-0.76644 -1.089141,-0.24203 -1.774896,-1.08914 -0.645417,-0.84711 -0.645417,-1.89591 0,-1.29083 0.887448,-2.17828 0.927786,-0.92779 2.178281,-0.92779 0.363047,0 0.685755,0.0807 1.169818,0.24203 4.477579,0.60508 0.443724,0 0.968125,-0.0403 0.201692,0 0.201692,-0.24203 0.04034,-0.20169 -0.242031,-0.28237 -1.37151,-0.24203 -2.541328,-0.5244 -1.331172,-0.28237 -1.895912,-0.48406 -1.129479,-0.32271 -1.895911,-0.84711 -2.581667,-1.69422 -2.622005,-5.08266 0,-2.70268 1.855573,-4.47758 2.258958,-2.17828 6.413828,-1.97659 2.783359,0.12102 5.566719,0.7261 1.048802,0.24203 1.734557,1.08914 0.685755,0.84711 0.685755,1.93625 0,1.25049 -0.927786,2.17828 -0.887448,0.88745 -2.178281,0.88745 -0.322709,0 -0.645417,-0.0807 -1.169818,-0.24203 -4.517917,-0.56474 -0.403385,-0.0403 -0.766432,0 -0.322708,0.0403 -0.322708,0.24203 0.04034,0.24203 0.322708,0.32271 z" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path5203"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:136.34428406px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#fff;fill-opacity:1;stroke:none;stroke-width:0.26458335px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 115.65209,203.87137 q 0.12101,0.0807 2.86404,2.78336 1.25049,1.21016 1.25049,2.94471 0,1.61354 -1.16982,2.86404 -1.16982,1.21016 -2.90437,1.21016 -1.65388,0 -2.86404,-1.16982 l -4.03385,-3.91284 q -0.16136,-0.12102 -0.32271,-0.12102 -0.32271,0 -0.32271,1.21016 0,1.69422 -1.21016,2.90438 -1.21015,1.16981 -2.90437,1.16981 -1.69422,0 -2.90438,-1.16981 -1.169807,-1.21016 -1.169807,-2.90438 v -18.79776 q 0,-1.69422 1.169807,-2.86404 1.21016,-1.21015 2.90438,-1.21015 1.69422,0 2.90437,1.21015 1.21016,1.16982 1.21016,2.86404 v 6.29281 q 0,0.40339 0.28237,0.5244 0.24203,0.12102 0.5244,-0.0807 0.16135,-0.0807 4.84063,-3.18675 1.0488,-0.64542 2.25895,-0.64542 2.21862,0 3.42878,1.81524 0.64542,1.0488 0.64542,2.25896 0,2.21862 -1.81524,3.42877 l -2.54133,1.61354 v 0.0403 l -0.0807,0.0403 q -0.56474,0.36305 -0.0403,0.88745 z" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path5205"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:136.34428406px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#fff;fill-opacity:1;stroke:none;stroke-width:0.26458335px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 131.25181,213.92955 q -4.19521,0 -7.18026,-2.94472 -2.94472,-2.98505 -2.94472,-7.18026 0,-4.15487 2.94472,-7.09958 2.98505,-2.98505 7.18026,-2.98505 4.15487,0 6.97857,2.78335 0.92778,0.92779 0.92778,2.25896 0,1.33118 -0.92778,2.25896 l -4.67928,4.63893 q -1.00846,1.00847 -2.01692,1.00847 -1.45219,0 -2.25896,-0.80677 -0.80677,-0.80677 -0.80677,-2.13795 0,-1.29083 0.92778,-2.21862 l 0.80678,-0.84711 q 0.16135,-0.12101 0.0807,-0.24203 -0.12101,-0.0807 -0.32271,-0.0403 -0.80677,0.20169 -1.37151,0.80677 -1.12948,1.08914 -1.12948,2.622 0,1.5732 1.08915,2.70268 1.12947,1.08914 2.70268,1.08914 1.53286,0 2.622,-1.12947 0.92779,-0.92779 2.25896,-0.92779 1.33117,0 2.25896,0.92779 0.92779,0.92778 0.92779,2.25895 0,1.33118 -0.92779,2.25896 -2.98505,2.94472 -7.13992,2.94472 z" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path5207"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:136.34428406px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#fff;fill-opacity:1;stroke:none;stroke-width:0.26458335px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 160.51049,198.1433 v 5.60705 q 0,0.56474 -0.0807,1.21016 v 7.38195 q 0,4.51792 -2.74302,7.2206 -2.70268,2.70269 -7.30128,2.70269 -2.66234,0 -4.80028,-1.00847 -2.13795,-0.96812 -2.13795,-3.3481 0,-0.80677 0.36305,-1.53286 0.96812,-2.17828 3.3481,-2.17828 0.56474,0 1.5732,0.32271 1.00847,0.3227 1.65388,0.3227 1.69422,0 2.21862,-0.72609 0.20169,-0.28237 0.0807,-0.44372 -0.16136,-0.24204 -0.56474,-0.16136 -0.68576,0.12102 -1.49253,0.12102 -4.07419,0 -6.97856,-2.90438 -2.90438,-2.90437 -2.90438,-6.97857 v -5.60705 q 0,-1.69422 1.16982,-2.86404 1.21015,-1.21016 2.90437,-1.21016 1.69422,0 2.90438,1.21016 1.21015,1.16982 1.21015,2.86404 v 5.60705 q 0,0.68576 0.48407,1.21016 0.5244,0.48406 1.21015,0.48406 0.7261,0 1.21016,-0.48406 0.48406,-0.5244 0.48406,-1.21016 v -5.60705 q 0,-1.69422 1.21016,-2.86404 1.21015,-1.21016 2.90437,-1.21016 1.69422,0 2.86404,1.21016 1.21016,1.16982 1.21016,2.86404 z" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 13 KiB |
@ -43,13 +43,7 @@ Please install and setup these softwares:
|
|||||||
|
|
||||||
*4.* Prepare configuration
|
*4.* Prepare configuration
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
1. Copy `example.yml` of `.config` directory
|
You need to generate config file via `npm run config` command.
|
||||||
2. Rename it to `default.yml`
|
|
||||||
3. Edit it
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
Or you can generate config file via `npm run config` command.
|
|
||||||
|
|
||||||
*5.* Build Misskey
|
*5.* Build Misskey
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
|
@ -43,18 +43,14 @@ web-push generate-vapid-keys
|
|||||||
|
|
||||||
*4.* 設定ファイルを用意する
|
*4.* 設定ファイルを用意する
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
1. `.config`ディレクトリ内の`example.yml`をコピー
|
`npm run config`コマンドを利用して、ガイドに従って情報を入力してください。
|
||||||
2. `default.yml`にリネーム
|
|
||||||
3. 編集する
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
または、`npm run config`コマンドを利用して、ガイドに従って情報を
|
|
||||||
入力して設定ファイルを生成することもできます。
|
|
||||||
|
|
||||||
*5.* Misskeyのビルド
|
*5.* Misskeyのビルド
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
1. `npm run build`
|
1. `npm install -g node-gyp`
|
||||||
|
2. `node-gyp configure`
|
||||||
|
3. `node-gyp build`
|
||||||
|
4. `npm run build`
|
||||||
|
|
||||||
*6.* 以上です!
|
*6.* 以上です!
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
|
@ -165,15 +165,15 @@ common/views/widgets/photo-stream.vue:
|
|||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "Serverinformationen"
|
title: "Serverinformationen"
|
||||||
toggle: "Sicht umschalten"
|
toggle: "Sicht umschalten"
|
||||||
commons/views/widgets/visibility-chooser.vue:
|
common/views/widgets/visibility-chooser.vue:
|
||||||
public: "Öffentlich"
|
public: "公開"
|
||||||
home: "Home"
|
home: "ホーム"
|
||||||
home-desc: "Nur an dieser Stelle sichtbar"
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
followers: "Follower"
|
followers: "フォロワー"
|
||||||
followers-desc: "Nur für diejenigen sichtbar, die dir folgen"
|
followers-desc: "自分のフォロワーにのみ公開"
|
||||||
specified: "Direkt"
|
specified: "ダイレクト"
|
||||||
specified-desc: "Nur für bestimmte Benutzer"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "Privat"
|
private: "非公開"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Schwarz ... komplett"
|
total: "Schwarz ... komplett"
|
||||||
notes: "Blau ... Hinweise"
|
notes: "Blau ... Hinweise"
|
||||||
@ -475,6 +475,8 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
save: "Profil aktualisieren"
|
save: "Profil aktualisieren"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
|
is-cat: "このアカウントはCatです"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
hidden: "(この投稿は非公開です)"
|
hidden: "(この投稿は非公開です)"
|
||||||
media: "つのメディア"
|
media: "つのメディア"
|
||||||
@ -521,6 +523,12 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
desktop/views/pages/welcome.vue:
|
||||||
|
signin: "ログイン"
|
||||||
|
signup: "新規登録"
|
||||||
|
signin-button: "やってる"
|
||||||
|
signup-button: "やる"
|
||||||
|
timeline: "タイムライン"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@ -674,7 +682,6 @@ mobile/views/pages/notifications.vue:
|
|||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "プロフィール"
|
title: "プロフィール"
|
||||||
will-be-published: "※公開されます"
|
|
||||||
name: "名前"
|
name: "名前"
|
||||||
account: "アカウント"
|
account: "アカウント"
|
||||||
location: "場所"
|
location: "場所"
|
||||||
@ -682,7 +689,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
is-bot: "このアカウントはBotです"
|
is-cat: "このアカウントはCatです"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "プロフィールを保存しました"
|
saved: "プロフィールを保存しました"
|
||||||
uploading: "アップロード中"
|
uploading: "アップロード中"
|
||||||
|
@ -56,9 +56,9 @@ common/views/components/connect-failed.troubleshooter.vue:
|
|||||||
no-network-desc: "Please make sure you are connected to the Network."
|
no-network-desc: "Please make sure you are connected to the Network."
|
||||||
no-internet: "There is no Internet connection"
|
no-internet: "There is no Internet connection"
|
||||||
no-internet-desc: "Please make sure you are connected to the Internet."
|
no-internet-desc: "Please make sure you are connected to the Internet."
|
||||||
no-server: "Unable to connect to the server"
|
no-server: "Unable to connect to the Misskey server"
|
||||||
no-server-desc: "The network connection of your PC is normal, but you could not connect to Misskey's server. There is a possibility that the server is either down or under maintenance, please try again later."
|
no-server-desc: "The network connection of your PC is normal, but you could not connect to the Misskey server. There is a possibility that the server is either down or under maintenance, please try again later."
|
||||||
success: "Successfully connected to Misskey's server"
|
success: "Successfully connected to the Misskey server"
|
||||||
success-desc: "It seems to be able to connect. Please reload the page."
|
success-desc: "It seems to be able to connect. Please reload the page."
|
||||||
flush: "Clean cache"
|
flush: "Clean cache"
|
||||||
set-version: "Specify version"
|
set-version: "Specify version"
|
||||||
@ -121,7 +121,7 @@ common/views/components/signup.vue:
|
|||||||
unavailable: "Unavailable"
|
unavailable: "Unavailable"
|
||||||
error: "Network error"
|
error: "Network error"
|
||||||
invalid-format: "Only use letters, numbers and -."
|
invalid-format: "Only use letters, numbers and -."
|
||||||
too-short: "Please enter at least 1 character!"
|
too-short: "Please enter at least 1 character!"
|
||||||
too-long: "Please enter up to 20 characters."
|
too-long: "Please enter up to 20 characters."
|
||||||
password: "Password"
|
password: "Password"
|
||||||
password-placeholder: "We recommend more than 8 characters."
|
password-placeholder: "We recommend more than 8 characters."
|
||||||
@ -165,14 +165,14 @@ common/views/widgets/photo-stream.vue:
|
|||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "Server info"
|
title: "Server info"
|
||||||
toggle: "Toggle views"
|
toggle: "Toggle views"
|
||||||
commons/views/widgets/visibility-chooser.vue:
|
common/views/widgets/visibility-chooser.vue:
|
||||||
public: "Public"
|
public: "Public"
|
||||||
home: "Home"
|
home: "Home"
|
||||||
home-desc: "ホームタイムラインにのみ公開"
|
home-desc: "Post to the home timeline only"
|
||||||
followers: "Followers"
|
followers: "Followers"
|
||||||
followers-desc: "自分のフォロワーにのみ公開"
|
followers-desc: "Post to followers only"
|
||||||
specified: "Direct"
|
specified: "Direct"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "Post to specified users only"
|
||||||
private: "Private"
|
private: "Private"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
@ -188,7 +188,7 @@ desktop/views/components/calendar.vue:
|
|||||||
next: "Next month"
|
next: "Next month"
|
||||||
go: "Click to naviguate"
|
go: "Click to naviguate"
|
||||||
desktop/views/components/choose-file-from-drive-window.vue:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "ファイル選択中"
|
choose-file: "Choosing files"
|
||||||
upload: "Upload files from your PC"
|
upload: "Upload files from your PC"
|
||||||
cancel: "Cancel"
|
cancel: "Cancel"
|
||||||
ok: "OK"
|
ok: "OK"
|
||||||
@ -264,7 +264,7 @@ desktop/views/components/following-window.vue:
|
|||||||
desktop/views/components/following.vue:
|
desktop/views/components/following.vue:
|
||||||
empty: "You don’t follow anyone."
|
empty: "You don’t follow anyone."
|
||||||
desktop/views/components/friends-maker.vue:
|
desktop/views/components/friends-maker.vue:
|
||||||
title: "気になるユーザーをフォロー:"
|
title: "Recommended users:"
|
||||||
empty: "Similar users weren’t found."
|
empty: "Similar users weren’t found."
|
||||||
fetching: "Loading…"
|
fetching: "Loading…"
|
||||||
refresh: "More"
|
refresh: "More"
|
||||||
@ -417,8 +417,8 @@ desktop/views/components/settings.vue:
|
|||||||
update-checking: "Checking for updates"
|
update-checking: "Checking for updates"
|
||||||
do-update: "Check for update"
|
do-update: "Check for update"
|
||||||
update-settings: "Advanced settings"
|
update-settings: "Advanced settings"
|
||||||
prevent-update: "アップデートを延期する(非推奨)"
|
prevent-update: "Postpone updates (not recommended)"
|
||||||
prevent-update-desc: "この設定をオンにしてもアップデートが反映される場合があります。この設定はこのデバイスのみ有効です。"
|
prevent-update-desc: "You may reflect updates even if you select this setting. This setting is valid only this device."
|
||||||
no-updates: "No updates available"
|
no-updates: "No updates available"
|
||||||
no-updates-desc: "Your Misskey is up to date."
|
no-updates-desc: "Your Misskey is up to date."
|
||||||
update-available: "New version is available!"
|
update-available: "New version is available!"
|
||||||
@ -475,6 +475,8 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "Description"
|
description: "Description"
|
||||||
birthday: "Birthday"
|
birthday: "Birthday"
|
||||||
save: "Update profile"
|
save: "Update profile"
|
||||||
|
is-bot: "This account is a Bot"
|
||||||
|
is-cat: "This account is a Cat"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
hidden: "(this post is private)"
|
hidden: "(this post is private)"
|
||||||
media: " media"
|
media: " media"
|
||||||
@ -521,6 +523,12 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "Popout"
|
popout: "Popout"
|
||||||
close: "Close"
|
close: "Close"
|
||||||
|
desktop/views/pages/welcome.vue:
|
||||||
|
signin: "Log In"
|
||||||
|
signup: "Sign up"
|
||||||
|
signin-button: "Log in"
|
||||||
|
signup-button: "Sign up"
|
||||||
|
timeline: "Timeline"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@ -674,7 +682,6 @@ mobile/views/pages/notifications.vue:
|
|||||||
read-all: "Are you sure you want to mark all unread notifications as read?"
|
read-all: "Are you sure you want to mark all unread notifications as read?"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "Profile"
|
title: "Profile"
|
||||||
will-be-published: "※公開されます"
|
|
||||||
name: "Name"
|
name: "Name"
|
||||||
account: "Account"
|
account: "Account"
|
||||||
location: "Location"
|
location: "Location"
|
||||||
@ -682,7 +689,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
birthday: "Birthday"
|
birthday: "Birthday"
|
||||||
avatar: "Avatar"
|
avatar: "Avatar"
|
||||||
banner: "Banner"
|
banner: "Banner"
|
||||||
is-bot: "This account is a Bot"
|
is-cat: "This account is a Cat"
|
||||||
save: "Update profile"
|
save: "Update profile"
|
||||||
saved: "Profile updated successfully"
|
saved: "Profile updated successfully"
|
||||||
uploading: "Uploading"
|
uploading: "Uploading"
|
||||||
|
@ -165,7 +165,7 @@ common/views/widgets/photo-stream.vue:
|
|||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
commons/views/widgets/visibility-chooser.vue:
|
common/views/widgets/visibility-chooser.vue:
|
||||||
public: "公開"
|
public: "公開"
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
home-desc: "ホームタイムラインにのみ公開"
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
@ -475,6 +475,8 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
|
is-cat: "このアカウントはCatです"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
hidden: "(この投稿は非公開です)"
|
hidden: "(この投稿は非公開です)"
|
||||||
media: "つのメディア"
|
media: "つのメディア"
|
||||||
@ -521,6 +523,12 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
desktop/views/pages/welcome.vue:
|
||||||
|
signin: "ログイン"
|
||||||
|
signup: "新規登録"
|
||||||
|
signin-button: "やってる"
|
||||||
|
signup-button: "やる"
|
||||||
|
timeline: "タイムライン"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@ -674,7 +682,6 @@ mobile/views/pages/notifications.vue:
|
|||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "プロフィール"
|
title: "プロフィール"
|
||||||
will-be-published: "※公開されます"
|
|
||||||
name: "名前"
|
name: "名前"
|
||||||
account: "アカウント"
|
account: "アカウント"
|
||||||
location: "場所"
|
location: "場所"
|
||||||
@ -682,7 +689,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
is-bot: "このアカウントはBotです"
|
is-cat: "このアカウントはCatです"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "プロフィールを保存しました"
|
saved: "プロフィールを保存しました"
|
||||||
uploading: "アップロード中"
|
uploading: "アップロード中"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
meta:
|
meta:
|
||||||
lang: "日本語"
|
lang: "Français"
|
||||||
divider: " "
|
divider: " "
|
||||||
common:
|
common:
|
||||||
misskey: "Partagez avec les autres en utilisant Misskey"
|
misskey: "Partagez avec les autres en utilisant Misskey"
|
||||||
@ -165,7 +165,7 @@ common/views/widgets/photo-stream.vue:
|
|||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "Info sur le serveur"
|
title: "Info sur le serveur"
|
||||||
toggle: "Afficher les vues"
|
toggle: "Afficher les vues"
|
||||||
commons/views/widgets/visibility-chooser.vue:
|
common/views/widgets/visibility-chooser.vue:
|
||||||
public: "公開"
|
public: "公開"
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
home-desc: "ホームタイムラインにのみ公開"
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
@ -475,6 +475,8 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "Description"
|
description: "Description"
|
||||||
birthday: "Date de naissance"
|
birthday: "Date de naissance"
|
||||||
save: "Mettre à jour le profil"
|
save: "Mettre à jour le profil"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
|
is-cat: "このアカウントはCatです"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
hidden: "(この投稿は非公開です)"
|
hidden: "(この投稿は非公開です)"
|
||||||
media: "つのメディア"
|
media: "つのメディア"
|
||||||
@ -521,6 +523,12 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
desktop/views/pages/welcome.vue:
|
||||||
|
signin: "ログイン"
|
||||||
|
signup: "新規登録"
|
||||||
|
signin-button: "やってる"
|
||||||
|
signup-button: "やる"
|
||||||
|
timeline: "タイムライン"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@ -674,7 +682,6 @@ mobile/views/pages/notifications.vue:
|
|||||||
read-all: "Êtes vous sûr de vouloir marqués toutes les notifications non-lus en tant que lus?"
|
read-all: "Êtes vous sûr de vouloir marqués toutes les notifications non-lus en tant que lus?"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "プロフィール"
|
title: "プロフィール"
|
||||||
will-be-published: "※公開されます"
|
|
||||||
name: "名前"
|
name: "名前"
|
||||||
account: "アカウント"
|
account: "アカウント"
|
||||||
location: "場所"
|
location: "場所"
|
||||||
@ -682,7 +689,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
is-bot: "このアカウントはBotです"
|
is-cat: "このアカウントはCatです"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "プロフィールを保存しました"
|
saved: "プロフィールを保存しました"
|
||||||
uploading: "アップロード中"
|
uploading: "アップロード中"
|
||||||
|
@ -165,7 +165,7 @@ common/views/widgets/photo-stream.vue:
|
|||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
commons/views/widgets/visibility-chooser.vue:
|
common/views/widgets/visibility-chooser.vue:
|
||||||
public: "公開"
|
public: "公開"
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
home-desc: "ホームタイムラインにのみ公開"
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
@ -475,6 +475,8 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
|
is-cat: "このアカウントはCatです"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
hidden: "(この投稿は非公開です)"
|
hidden: "(この投稿は非公開です)"
|
||||||
media: "つのメディア"
|
media: "つのメディア"
|
||||||
@ -521,6 +523,12 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
desktop/views/pages/welcome.vue:
|
||||||
|
signin: "ログイン"
|
||||||
|
signup: "新規登録"
|
||||||
|
signin-button: "やってる"
|
||||||
|
signup-button: "やる"
|
||||||
|
timeline: "タイムライン"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@ -674,7 +682,6 @@ mobile/views/pages/notifications.vue:
|
|||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "プロフィール"
|
title: "プロフィール"
|
||||||
will-be-published: "※公開されます"
|
|
||||||
name: "名前"
|
name: "名前"
|
||||||
account: "アカウント"
|
account: "アカウント"
|
||||||
location: "場所"
|
location: "場所"
|
||||||
@ -682,7 +689,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
is-bot: "このアカウントはBotです"
|
is-cat: "このアカウントはCatです"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "プロフィールを保存しました"
|
saved: "プロフィールを保存しました"
|
||||||
uploading: "アップロード中"
|
uploading: "アップロード中"
|
||||||
|
@ -191,7 +191,7 @@ common/views/widgets/server.vue:
|
|||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
|
|
||||||
commons/views/widgets/visibility-chooser.vue:
|
common/views/widgets/visibility-chooser.vue:
|
||||||
public: "公開"
|
public: "公開"
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
home-desc: "ホームタイムラインにのみ公開"
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
@ -550,6 +550,8 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
|
is-cat: "このアカウントはCatです"
|
||||||
|
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
hidden: "(この投稿は非公開です)"
|
hidden: "(この投稿は非公開です)"
|
||||||
@ -610,6 +612,13 @@ desktop/views/components/window.vue:
|
|||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
|
||||||
|
desktop/views/pages/welcome.vue:
|
||||||
|
signin: "ログイン"
|
||||||
|
signup: "新規登録"
|
||||||
|
signin-button: "やってる"
|
||||||
|
signup-button: "やる"
|
||||||
|
timeline: "タイムライン"
|
||||||
|
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
|
|
||||||
@ -805,7 +814,6 @@ mobile/views/pages/notifications.vue:
|
|||||||
|
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "プロフィール"
|
title: "プロフィール"
|
||||||
will-be-published: "※公開されます"
|
|
||||||
name: "名前"
|
name: "名前"
|
||||||
account: "アカウント"
|
account: "アカウント"
|
||||||
location: "場所"
|
location: "場所"
|
||||||
@ -813,7 +821,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
is-bot: "このアカウントはBotです"
|
is-cat: "このアカウントはCatです"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "プロフィールを保存しました"
|
saved: "プロフィールを保存しました"
|
||||||
uploading: "アップロード中"
|
uploading: "アップロード中"
|
||||||
|
@ -165,7 +165,7 @@ common/views/widgets/photo-stream.vue:
|
|||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
commons/views/widgets/visibility-chooser.vue:
|
common/views/widgets/visibility-chooser.vue:
|
||||||
public: "公開"
|
public: "公開"
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
home-desc: "ホームタイムラインにのみ公開"
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
@ -475,6 +475,8 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
|
is-cat: "このアカウントはCatです"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
hidden: "(この投稿は非公開です)"
|
hidden: "(この投稿は非公開です)"
|
||||||
media: "つのメディア"
|
media: "つのメディア"
|
||||||
@ -521,6 +523,12 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
desktop/views/pages/welcome.vue:
|
||||||
|
signin: "ログイン"
|
||||||
|
signup: "新規登録"
|
||||||
|
signin-button: "やってる"
|
||||||
|
signup-button: "やる"
|
||||||
|
timeline: "タイムライン"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@ -674,7 +682,6 @@ mobile/views/pages/notifications.vue:
|
|||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "プロフィール"
|
title: "プロフィール"
|
||||||
will-be-published: "※公開されます"
|
|
||||||
name: "名前"
|
name: "名前"
|
||||||
account: "アカウント"
|
account: "アカウント"
|
||||||
location: "場所"
|
location: "場所"
|
||||||
@ -682,7 +689,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
is-bot: "このアカウントはBotです"
|
is-cat: "このアカウントはCatです"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "プロフィールを保存しました"
|
saved: "プロフィールを保存しました"
|
||||||
uploading: "アップロード中"
|
uploading: "アップロード中"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
meta:
|
meta:
|
||||||
lang: "japoński"
|
lang: "język polski"
|
||||||
divider: " "
|
divider: " "
|
||||||
common:
|
common:
|
||||||
misskey: "Dziel się zawartością z innymi korzystając z Misskey."
|
misskey: "Dziel się zawartością z innymi korzystając z Misskey."
|
||||||
@ -165,7 +165,7 @@ common/views/widgets/photo-stream.vue:
|
|||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "Informacje o serwerze"
|
title: "Informacje o serwerze"
|
||||||
toggle: "Przełącz widok"
|
toggle: "Przełącz widok"
|
||||||
commons/views/widgets/visibility-chooser.vue:
|
common/views/widgets/visibility-chooser.vue:
|
||||||
public: "Publiczny"
|
public: "Publiczny"
|
||||||
home: "Lokalny"
|
home: "Lokalny"
|
||||||
home-desc: "Widoczny tylko na tej instancji"
|
home-desc: "Widoczny tylko na tej instancji"
|
||||||
@ -475,6 +475,8 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "Opis"
|
description: "Opis"
|
||||||
birthday: "Data urodzenia"
|
birthday: "Data urodzenia"
|
||||||
save: "Aktualizuj profil"
|
save: "Aktualizuj profil"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
|
is-cat: "このアカウントはCatです"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
hidden: "(この投稿は非公開です)"
|
hidden: "(この投稿は非公開です)"
|
||||||
media: "つのメディア"
|
media: "つのメディア"
|
||||||
@ -521,12 +523,18 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
desktop/views/pages/welcome.vue:
|
||||||
|
signin: "ログイン"
|
||||||
|
signup: "新規登録"
|
||||||
|
signin-button: "やってる"
|
||||||
|
signup-button: "やる"
|
||||||
|
timeline: "タイムライン"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Dysk Misskey"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
more: "さらに読み込む"
|
more: "Załaduj więcej"
|
||||||
desktop/views/pages/home-customize.vue:
|
desktop/views/pages/home-customize.vue:
|
||||||
title: "ホームのカスタマイズ"
|
title: "Dostosuj stronę główną"
|
||||||
desktop/views/pages/note.vue:
|
desktop/views/pages/note.vue:
|
||||||
prev: "Poprzedni wpis"
|
prev: "Poprzedni wpis"
|
||||||
next: "Następny wpis"
|
next: "Następny wpis"
|
||||||
@ -536,9 +544,9 @@ desktop/views/pages/selectdrive.vue:
|
|||||||
cancel: "Anuluj"
|
cancel: "Anuluj"
|
||||||
upload: "Wyślij pliki z Twojego komputera"
|
upload: "Wyślij pliki z Twojego komputera"
|
||||||
desktop/views/pages/user-list.users.vue:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "ユーザー"
|
users: "Użytkownicy"
|
||||||
add-user: "ユーザーを追加"
|
add-user: "Dodaj użytkownika"
|
||||||
username: "ユーザー名"
|
username: "Nazwa użytkownika"
|
||||||
desktop/views/pages/user/user.followers-you-know.vue:
|
desktop/views/pages/user/user.followers-you-know.vue:
|
||||||
title: "Śledzący których znasz"
|
title: "Śledzący których znasz"
|
||||||
loading: "Ładowanie"
|
loading: "Ładowanie"
|
||||||
@ -566,10 +574,10 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
muted: "Wyciszyłeś"
|
muted: "Wyciszyłeś"
|
||||||
unmute: "Cofnij wyciszenie"
|
unmute: "Cofnij wyciszenie"
|
||||||
desktop/views/pages/user/user.timeline.vue:
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
default: "投稿"
|
default: "Wpisy"
|
||||||
with-replies: "投稿と返信"
|
with-replies: "Wpisy i odpowiedzi"
|
||||||
with-media: "メディア"
|
with-media: "Zawartość multimedialna"
|
||||||
empty: "このユーザーはまだ何も投稿していないようです。"
|
empty: "Ten użytkownik nie umieścił jeszcze niczego."
|
||||||
desktop/views/widgets/messaging.vue:
|
desktop/views/widgets/messaging.vue:
|
||||||
title: "Wiadomości"
|
title: "Wiadomości"
|
||||||
desktop/views/widgets/notifications.vue:
|
desktop/views/widgets/notifications.vue:
|
||||||
@ -584,8 +592,8 @@ desktop/views/widgets/post-form.vue:
|
|||||||
note: "Wpis"
|
note: "Wpis"
|
||||||
placeholder: "Co się dzieje?"
|
placeholder: "Co się dzieje?"
|
||||||
desktop/views/widgets/profile.vue:
|
desktop/views/widgets/profile.vue:
|
||||||
update-banner: "クリックでバナー編集"
|
update-banner: "Naciśnij, aby zmienić baner"
|
||||||
update-avatar: "クリックでアバター編集"
|
update-avatar: "Naciśnij, aby zmienić awatar"
|
||||||
desktop/views/widgets/trends.vue:
|
desktop/views/widgets/trends.vue:
|
||||||
title: "Na czasie"
|
title: "Na czasie"
|
||||||
refresh: "Pokaż inne"
|
refresh: "Pokaż inne"
|
||||||
@ -666,27 +674,26 @@ mobile/views/pages/messaging.vue:
|
|||||||
mobile/views/pages/messaging-room.vue:
|
mobile/views/pages/messaging-room.vue:
|
||||||
messaging: "Wiadomości"
|
messaging: "Wiadomości"
|
||||||
mobile/views/pages/note.vue:
|
mobile/views/pages/note.vue:
|
||||||
title: "Wyślij"
|
title: "Wpis"
|
||||||
prev: "Poprzedni wpis"
|
prev: "Poprzedni wpis"
|
||||||
next: "Następny wpis"
|
next: "Następny wpis"
|
||||||
mobile/views/pages/notifications.vue:
|
mobile/views/pages/notifications.vue:
|
||||||
notifications: "Powiadomienia"
|
notifications: "Powiadomienia"
|
||||||
read-all: "Czy na pewno chcesz oznaczyć wszystkie powiadomienia jako przeczytane?"
|
read-all: "Czy na pewno chcesz oznaczyć wszystkie powiadomienia jako przeczytane?"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "プロフィール"
|
title: "Profil"
|
||||||
will-be-published: "※公開されます"
|
name: "Nazwa"
|
||||||
name: "名前"
|
account: "Konto"
|
||||||
account: "アカウント"
|
location: "Lokalizacja"
|
||||||
location: "場所"
|
description: "Opis"
|
||||||
description: "自己紹介"
|
birthday: "Data urodzenia"
|
||||||
birthday: "誕生日"
|
avatar: "Awatar"
|
||||||
avatar: "アイコン"
|
banner: "Baner"
|
||||||
banner: "バナー"
|
is-cat: "このアカウントはCatです"
|
||||||
is-bot: "このアカウントはBotです"
|
save: "Aktualizuj profil"
|
||||||
save: "保存"
|
saved: "Pomyślnie zaktualizowano profil"
|
||||||
saved: "プロフィールを保存しました"
|
uploading: "Wysyłanie"
|
||||||
uploading: "アップロード中"
|
upload-failed: "Wysyłanie nie powiodło się"
|
||||||
upload-failed: "アップロードに失敗しました"
|
|
||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "Szukaj"
|
search: "Szukaj"
|
||||||
empty: "Nie znaleziono wpisów zawierających '{}'"
|
empty: "Nie znaleziono wpisów zawierających '{}'"
|
||||||
@ -707,8 +714,8 @@ mobile/views/pages/settings.vue:
|
|||||||
show-reply-target: "Pokazuj cel odpowiedzi"
|
show-reply-target: "Pokazuj cel odpowiedzi"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
||||||
post-style: "投稿の表示スタイル"
|
post-style: "Styl wpisów"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "Standardowy"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
behavior: "Zachowanie"
|
behavior: "Zachowanie"
|
||||||
fetch-on-scroll: "Automatycznie ładuj po przeciągnięciu w dół"
|
fetch-on-scroll: "Automatycznie ładuj po przeciągnięciu w dół"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
meta:
|
meta:
|
||||||
lang: "日本語"
|
lang: "Русский язык"
|
||||||
divider: " "
|
divider: " "
|
||||||
common:
|
common:
|
||||||
misskey: "Misskeyで皆と共有しよう。"
|
misskey: "Misskeyで皆と共有しよう。"
|
||||||
@ -165,7 +165,7 @@ common/views/widgets/photo-stream.vue:
|
|||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
commons/views/widgets/visibility-chooser.vue:
|
common/views/widgets/visibility-chooser.vue:
|
||||||
public: "公開"
|
public: "公開"
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
home-desc: "ホームタイムラインにのみ公開"
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
@ -475,6 +475,8 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
|
is-cat: "このアカウントはCatです"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
hidden: "(この投稿は非公開です)"
|
hidden: "(この投稿は非公開です)"
|
||||||
media: "つのメディア"
|
media: "つのメディア"
|
||||||
@ -521,6 +523,12 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
desktop/views/pages/welcome.vue:
|
||||||
|
signin: "ログイン"
|
||||||
|
signup: "新規登録"
|
||||||
|
signin-button: "やってる"
|
||||||
|
signup-button: "やる"
|
||||||
|
timeline: "タイムライン"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@ -674,7 +682,6 @@ mobile/views/pages/notifications.vue:
|
|||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "プロフィール"
|
title: "プロフィール"
|
||||||
will-be-published: "※公開されます"
|
|
||||||
name: "名前"
|
name: "名前"
|
||||||
account: "アカウント"
|
account: "アカウント"
|
||||||
location: "場所"
|
location: "場所"
|
||||||
@ -682,7 +689,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
is-bot: "このアカウントはBotです"
|
is-cat: "このアカウントはCatです"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "プロフィールを保存しました"
|
saved: "プロフィールを保存しました"
|
||||||
uploading: "アップロード中"
|
uploading: "アップロード中"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
meta:
|
meta:
|
||||||
lang: "日本語"
|
lang: "中文(简体)"
|
||||||
divider: ""
|
divider: ""
|
||||||
common:
|
common:
|
||||||
misskey: "Misskeyで皆と共有しよう。"
|
misskey: "Misskeyで皆と共有しよう。"
|
||||||
@ -165,7 +165,7 @@ common/views/widgets/photo-stream.vue:
|
|||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
commons/views/widgets/visibility-chooser.vue:
|
common/views/widgets/visibility-chooser.vue:
|
||||||
public: "公開"
|
public: "公開"
|
||||||
home: "ホーム"
|
home: "ホーム"
|
||||||
home-desc: "ホームタイムラインにのみ公開"
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
@ -475,6 +475,8 @@ desktop/views/components/settings.profile.vue:
|
|||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
|
is-bot: "このアカウントはBotです"
|
||||||
|
is-cat: "このアカウントはCatです"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
hidden: "(この投稿は非公開です)"
|
hidden: "(この投稿は非公開です)"
|
||||||
media: "つのメディア"
|
media: "つのメディア"
|
||||||
@ -521,6 +523,12 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
desktop/views/pages/welcome.vue:
|
||||||
|
signin: "ログイン"
|
||||||
|
signup: "新規登録"
|
||||||
|
signin-button: "やってる"
|
||||||
|
signup-button: "やる"
|
||||||
|
timeline: "タイムライン"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@ -674,7 +682,6 @@ mobile/views/pages/notifications.vue:
|
|||||||
read-all: "すべての通知を既読にしますか?"
|
read-all: "すべての通知を既読にしますか?"
|
||||||
mobile/views/pages/settings/settings.profile.vue:
|
mobile/views/pages/settings/settings.profile.vue:
|
||||||
title: "プロフィール"
|
title: "プロフィール"
|
||||||
will-be-published: "※公開されます"
|
|
||||||
name: "名前"
|
name: "名前"
|
||||||
account: "アカウント"
|
account: "アカウント"
|
||||||
location: "場所"
|
location: "場所"
|
||||||
@ -682,7 +689,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
is-bot: "このアカウントはBotです"
|
is-cat: "このアカウントはCatです"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "プロフィールを保存しました"
|
saved: "プロフィールを保存しました"
|
||||||
uploading: "アップロード中"
|
uploading: "アップロード中"
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"name": "misskey",
|
"name": "misskey",
|
||||||
"author": "syuilo <i@syuilo.com>",
|
"author": "syuilo <i@syuilo.com>",
|
||||||
"version": "2.13.0",
|
"version": "2.16.8",
|
||||||
"clientVersion": "1.0.5576",
|
"clientVersion": "1.0.5694",
|
||||||
"codename": "nighthike",
|
"codename": "nighthike",
|
||||||
"main": "./built/index.js",
|
"main": "./built/index.js",
|
||||||
"private": true,
|
"private": true,
|
||||||
|
@ -18,6 +18,14 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//#region Load settings
|
||||||
|
let settings = null;
|
||||||
|
const vuex = localStorage.getItem('vuex');
|
||||||
|
if (vuex) {
|
||||||
|
settings = JSON.parse(vuex);
|
||||||
|
}
|
||||||
|
//#endregion
|
||||||
|
|
||||||
// Get the current url information
|
// Get the current url information
|
||||||
const url = new URL(location.href);
|
const url = new URL(location.href);
|
||||||
|
|
||||||
@ -35,14 +43,9 @@
|
|||||||
// The default language is English
|
// The default language is English
|
||||||
if (!LANGS.includes(lang)) lang = 'en';
|
if (!LANGS.includes(lang)) lang = 'en';
|
||||||
|
|
||||||
const vuex = localStorage.getItem('vuex');
|
if (settings) {
|
||||||
if (vuex) {
|
if (settings.device.lang) lang = settings.device.lang;
|
||||||
const data = JSON.parse(vuex);
|
|
||||||
if (data.device.lang) lang = data.device.lang;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const storedLang = localStorage.getItem('lang');
|
|
||||||
if (storedLang) lang = storedLang;
|
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
// Detect the user agent
|
// Detect the user agent
|
||||||
@ -71,9 +74,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Dark/Light
|
// Dark/Light
|
||||||
if (localStorage.getItem('darkmode') == 'true') {
|
if (settings) {
|
||||||
|
if (settings.device.darkmode) {
|
||||||
document.documentElement.setAttribute('data-darkmode', 'true');
|
document.documentElement.setAttribute('data-darkmode', 'true');
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Script version
|
// Script version
|
||||||
const ver = localStorage.getItem('v') || VERSION;
|
const ver = localStorage.getItem('v') || VERSION;
|
||||||
|
@ -26,7 +26,11 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
style(): any {
|
style(): any {
|
||||||
return {
|
return {
|
||||||
backgroundColor: this.user.avatarColor && this.user.avatarColor.length == 3 ? `rgb(${ this.user.avatarColor.join(',') })` : null,
|
backgroundColor: this.lightmode
|
||||||
|
? `rgb(${ this.user.avatarColor.slice(0, 3).join(',') })`
|
||||||
|
: this.user.avatarColor && this.user.avatarColor.length == 3
|
||||||
|
? `rgb(${ this.user.avatarColor.join(',') })`
|
||||||
|
: null,
|
||||||
backgroundImage: this.lightmode ? null : `url(${ this.user.avatarUrl }?thumbnail)`,
|
backgroundImage: this.lightmode ? null : `url(${ this.user.avatarUrl }?thumbnail)`,
|
||||||
borderRadius: (this as any).clientSettings.circleIcons ? '100%' : null
|
borderRadius: (this as any).clientSettings.circleIcons ? '100%' : null
|
||||||
};
|
};
|
||||||
|
@ -28,7 +28,7 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
document.title = 'Oops!';
|
document.title = 'Oops!';
|
||||||
document.documentElement.style.background = '#f8f8f8';
|
document.documentElement.style.setProperty('background', '#f8f8f8', 'important');
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
reload() {
|
reload() {
|
||||||
|
@ -197,7 +197,7 @@ export default Vue.extend({
|
|||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
@import '~const.styl'
|
@import '~const.styl'
|
||||||
|
|
||||||
.mk-messaging-form
|
root(isDark)
|
||||||
> textarea
|
> textarea
|
||||||
cursor auto
|
cursor auto
|
||||||
display block
|
display block
|
||||||
@ -209,10 +209,10 @@ export default Vue.extend({
|
|||||||
padding 8px
|
padding 8px
|
||||||
resize none
|
resize none
|
||||||
font-size 1em
|
font-size 1em
|
||||||
color #000
|
color isDark ? #fff : #000
|
||||||
outline none
|
outline none
|
||||||
border none
|
border none
|
||||||
border-top solid 1px #eee
|
border-top solid 1px isDark ? #4b5056 : #eee
|
||||||
border-radius 0
|
border-radius 0
|
||||||
box-shadow none
|
box-shadow none
|
||||||
background transparent
|
background transparent
|
||||||
@ -302,4 +302,10 @@ export default Vue.extend({
|
|||||||
input[type=file]
|
input[type=file]
|
||||||
display none
|
display none
|
||||||
|
|
||||||
|
.mk-messaging-form[data-darkmode]
|
||||||
|
root(true)
|
||||||
|
|
||||||
|
.mk-messaging-form:not([data-darkmode])
|
||||||
|
root(false)
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -59,8 +59,10 @@ export default Vue.extend({
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
.message
|
@import '~const.styl'
|
||||||
$me-balloon-color = #23A7B6
|
|
||||||
|
root(isDark)
|
||||||
|
$me-balloon-color = $theme-color
|
||||||
|
|
||||||
padding 10px 12px 10px 12px
|
padding 10px 12px 10px 12px
|
||||||
background-color transparent
|
background-color transparent
|
||||||
@ -126,7 +128,7 @@ export default Vue.extend({
|
|||||||
bottom -4px
|
bottom -4px
|
||||||
left -12px
|
left -12px
|
||||||
margin 0
|
margin 0
|
||||||
color rgba(#000, 0.5)
|
color isDark ? rgba(#fff, 0.5) : rgba(#000, 0.5)
|
||||||
font-size 11px
|
font-size 11px
|
||||||
|
|
||||||
> .content
|
> .content
|
||||||
@ -187,7 +189,7 @@ export default Vue.extend({
|
|||||||
display block
|
display block
|
||||||
margin 2px 0 0 0
|
margin 2px 0 0 0
|
||||||
font-size 10px
|
font-size 10px
|
||||||
color rgba(#000, 0.4)
|
color isDark ? rgba(#fff, 0.4) : rgba(#000, 0.4)
|
||||||
|
|
||||||
> [data-fa]
|
> [data-fa]
|
||||||
margin-left 4px
|
margin-left 4px
|
||||||
@ -200,8 +202,9 @@ export default Vue.extend({
|
|||||||
padding-left 66px
|
padding-left 66px
|
||||||
|
|
||||||
> .balloon
|
> .balloon
|
||||||
|
$color = isDark ? #2d3338 : #eee
|
||||||
float left
|
float left
|
||||||
background #eee
|
background $color
|
||||||
|
|
||||||
&[data-no-text]
|
&[data-no-text]
|
||||||
background transparent
|
background transparent
|
||||||
@ -209,10 +212,15 @@ export default Vue.extend({
|
|||||||
&:not([data-no-text]):before
|
&:not([data-no-text]):before
|
||||||
left -14px
|
left -14px
|
||||||
border-top solid 8px transparent
|
border-top solid 8px transparent
|
||||||
border-right solid 8px #eee
|
border-right solid 8px $color
|
||||||
border-bottom solid 8px transparent
|
border-bottom solid 8px transparent
|
||||||
border-left solid 8px transparent
|
border-left solid 8px transparent
|
||||||
|
|
||||||
|
> .content
|
||||||
|
> .text
|
||||||
|
if isDark
|
||||||
|
color #fff
|
||||||
|
|
||||||
> footer
|
> footer
|
||||||
text-align left
|
text-align left
|
||||||
|
|
||||||
@ -241,7 +249,7 @@ export default Vue.extend({
|
|||||||
> .content
|
> .content
|
||||||
|
|
||||||
> p.is-deleted
|
> p.is-deleted
|
||||||
color rgba(255, 255, 255, 0.5)
|
color rgba(#fff, 0.5)
|
||||||
|
|
||||||
> .text >>>
|
> .text >>>
|
||||||
&, *
|
&, *
|
||||||
@ -254,4 +262,10 @@ export default Vue.extend({
|
|||||||
> .baloon
|
> .baloon
|
||||||
opacity 0.5
|
opacity 0.5
|
||||||
|
|
||||||
|
.message[data-darkmode]
|
||||||
|
root(true)
|
||||||
|
|
||||||
|
.message:not([data-darkmode])
|
||||||
|
root(false)
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -18,7 +18,11 @@
|
|||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
<footer>
|
<footer>
|
||||||
<div ref="notifications" class="notifications"></div>
|
<transition name="fade">
|
||||||
|
<div class="new-message" v-show="showIndicator">
|
||||||
|
<button @click="onIndicatorClick">%fa:arrow-circle-down%%i18n:@new-message%</button>
|
||||||
|
</div>
|
||||||
|
</transition>
|
||||||
<x-form :user="user" ref="form"/>
|
<x-form :user="user" ref="form"/>
|
||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
@ -45,7 +49,9 @@ export default Vue.extend({
|
|||||||
fetchingMoreMessages: false,
|
fetchingMoreMessages: false,
|
||||||
messages: [],
|
messages: [],
|
||||||
existMoreMessages: false,
|
existMoreMessages: false,
|
||||||
connection: null
|
connection: null,
|
||||||
|
showIndicator: false,
|
||||||
|
timer: null
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -172,7 +178,7 @@ export default Vue.extend({
|
|||||||
});
|
});
|
||||||
} else if (message.userId != (this as any).os.i.id) {
|
} else if (message.userId != (this as any).os.i.id) {
|
||||||
// Notify
|
// Notify
|
||||||
this.notify('%i18n:@new-message%');
|
this.notifyNewMessage();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -205,18 +211,18 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
notify(message) {
|
onIndicatorClick() {
|
||||||
const n = document.createElement('p') as any;
|
this.showIndicator = false;
|
||||||
n.innerHTML = '%fa:arrow-circle-down%' + message;
|
|
||||||
n.onclick = () => {
|
|
||||||
this.scrollToBottom();
|
this.scrollToBottom();
|
||||||
n.parentNode.removeChild(n);
|
},
|
||||||
};
|
|
||||||
(this.$refs.notifications as any).appendChild(n);
|
|
||||||
|
|
||||||
setTimeout(() => {
|
notifyNewMessage() {
|
||||||
n.style.opacity = 0;
|
this.showIndicator = true;
|
||||||
setTimeout(() => n.parentNode.removeChild(n), 1000);
|
|
||||||
|
if (this.timer) clearTimeout(this.timer);
|
||||||
|
|
||||||
|
this.timer = setTimeout(() => {
|
||||||
|
this.showIndicator = false;
|
||||||
}, 4000);
|
}, 4000);
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -238,11 +244,12 @@ export default Vue.extend({
|
|||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
@import '~const.styl'
|
@import '~const.styl'
|
||||||
|
|
||||||
.mk-messaging-room
|
root(isDark)
|
||||||
display flex
|
display flex
|
||||||
flex 1
|
flex 1
|
||||||
flex-direction column
|
flex-direction column
|
||||||
height 100%
|
height 100%
|
||||||
|
background isDark ? #191b22 : #fff
|
||||||
|
|
||||||
> .stream
|
> .stream
|
||||||
width 100%
|
width 100%
|
||||||
@ -267,7 +274,7 @@ export default Vue.extend({
|
|||||||
padding 16px 8px 8px 8px
|
padding 16px 8px 8px 8px
|
||||||
text-align center
|
text-align center
|
||||||
font-size 0.8em
|
font-size 0.8em
|
||||||
color rgba(#000, 0.4)
|
color rgba(isDark ? #fff : #000, 0.4)
|
||||||
|
|
||||||
[data-fa]
|
[data-fa]
|
||||||
margin-right 4px
|
margin-right 4px
|
||||||
@ -278,7 +285,7 @@ export default Vue.extend({
|
|||||||
padding 16px
|
padding 16px
|
||||||
text-align center
|
text-align center
|
||||||
font-size 0.8em
|
font-size 0.8em
|
||||||
color rgba(#000, 0.4)
|
color rgba(isDark ? #fff : #000, 0.4)
|
||||||
|
|
||||||
[data-fa]
|
[data-fa]
|
||||||
margin-right 4px
|
margin-right 4px
|
||||||
@ -322,7 +329,7 @@ export default Vue.extend({
|
|||||||
left 0
|
left 0
|
||||||
right 0
|
right 0
|
||||||
margin 0 auto
|
margin 0 auto
|
||||||
background rgba(#000, 0.1)
|
background rgba(isDark ? #fff : #000, 0.1)
|
||||||
|
|
||||||
> span
|
> span
|
||||||
display inline-block
|
display inline-block
|
||||||
@ -330,8 +337,8 @@ export default Vue.extend({
|
|||||||
padding 0 16px
|
padding 0 16px
|
||||||
//font-weight bold
|
//font-weight bold
|
||||||
line-height 32px
|
line-height 32px
|
||||||
color rgba(#000, 0.3)
|
color rgba(isDark ? #fff : #000, 0.3)
|
||||||
background #fff
|
background isDark ? #191b22 : #fff
|
||||||
|
|
||||||
> footer
|
> footer
|
||||||
position -webkit-sticky
|
position -webkit-sticky
|
||||||
@ -342,30 +349,32 @@ export default Vue.extend({
|
|||||||
max-width 600px
|
max-width 600px
|
||||||
margin 0 auto
|
margin 0 auto
|
||||||
padding 0
|
padding 0
|
||||||
background rgba(255, 255, 255, 0.95)
|
background rgba(isDark ? #282c37 : #fff, 0.95)
|
||||||
background-clip content-box
|
background-clip content-box
|
||||||
|
|
||||||
> .notifications
|
> .new-message
|
||||||
position absolute
|
position absolute
|
||||||
top -48px
|
top -48px
|
||||||
width 100%
|
width 100%
|
||||||
padding 8px 0
|
padding 8px 0
|
||||||
text-align center
|
text-align center
|
||||||
|
|
||||||
&:empty
|
> button
|
||||||
display none
|
|
||||||
|
|
||||||
> p
|
|
||||||
display inline-block
|
display inline-block
|
||||||
margin 0
|
margin 0
|
||||||
padding 0 12px 0 28px
|
padding 0 12px 0 30px
|
||||||
cursor pointer
|
cursor pointer
|
||||||
line-height 32px
|
line-height 32px
|
||||||
font-size 12px
|
font-size 12px
|
||||||
color $theme-color-foreground
|
color $theme-color-foreground
|
||||||
background $theme-color
|
background $theme-color
|
||||||
border-radius 16px
|
border-radius 16px
|
||||||
transition opacity 1s ease
|
|
||||||
|
&:hover
|
||||||
|
background lighten($theme-color, 10%)
|
||||||
|
|
||||||
|
&:active
|
||||||
|
background darken($theme-color, 10%)
|
||||||
|
|
||||||
> [data-fa]
|
> [data-fa]
|
||||||
position absolute
|
position absolute
|
||||||
@ -374,4 +383,17 @@ export default Vue.extend({
|
|||||||
line-height 32px
|
line-height 32px
|
||||||
font-size 16px
|
font-size 16px
|
||||||
|
|
||||||
|
.fade-enter-active, .fade-leave-active
|
||||||
|
transition opacity 0.1s
|
||||||
|
|
||||||
|
.fade-enter, .fade-leave-to
|
||||||
|
transition opacity 0.5s
|
||||||
|
opacity 0
|
||||||
|
|
||||||
|
.mk-messaging-room[data-darkmode]
|
||||||
|
root(true)
|
||||||
|
|
||||||
|
.mk-messaging-room:not([data-darkmode])
|
||||||
|
root(false)
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -37,6 +37,7 @@ export default Vue.extend({
|
|||||||
fetch(cb?) {
|
fetch(cb?) {
|
||||||
this.fetching = true;
|
this.fetching = true;
|
||||||
(this as any).api('notes', {
|
(this as any).api('notes', {
|
||||||
|
local: true,
|
||||||
reply: false,
|
reply: false,
|
||||||
renote: false,
|
renote: false,
|
||||||
media: false,
|
media: false,
|
||||||
@ -52,15 +53,15 @@ export default Vue.extend({
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
.mk-welcome-timeline
|
root(isDark)
|
||||||
background #fff
|
background isDark ? #282C37 : #fff
|
||||||
|
|
||||||
> div
|
> div
|
||||||
padding 16px
|
padding 16px
|
||||||
overflow-wrap break-word
|
overflow-wrap break-word
|
||||||
font-size .9em
|
font-size .9em
|
||||||
color #4C4C4C
|
color isDark ? #fff : #4C4C4C
|
||||||
border-bottom 1px solid rgba(#000, 0.05)
|
border-bottom 1px solid isDark ? rgba(#000, 0.1) : rgba(#000, 0.05)
|
||||||
|
|
||||||
&:after
|
&:after
|
||||||
content ""
|
content ""
|
||||||
@ -95,17 +96,23 @@ export default Vue.extend({
|
|||||||
overflow hidden
|
overflow hidden
|
||||||
font-weight bold
|
font-weight bold
|
||||||
text-overflow ellipsis
|
text-overflow ellipsis
|
||||||
color #627079
|
color isDark ? #fff : #627079
|
||||||
|
|
||||||
> .username
|
> .username
|
||||||
margin 0 .5em 0 0
|
margin 0 .5em 0 0
|
||||||
color #ccc
|
color isDark ? #606984 : #ccc
|
||||||
|
|
||||||
> .info
|
> .info
|
||||||
margin-left auto
|
margin-left auto
|
||||||
font-size 0.9em
|
font-size 0.9em
|
||||||
|
|
||||||
> .created-at
|
> .created-at
|
||||||
color #c0c0c0
|
color isDark ? #606984 : #c0c0c0
|
||||||
|
|
||||||
|
.mk-welcome-timeline[data-darkmode]
|
||||||
|
root(true)
|
||||||
|
|
||||||
|
.mk-welcome-timeline:not([data-darkmode])
|
||||||
|
root(false)
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<mk-window width="400px" height="550px" @closed="$destroy">
|
<mk-window width="400px" height="550px" @closed="$destroy">
|
||||||
<span slot="header" :class="$style.header">
|
<span slot="header" :class="$style.header">
|
||||||
<img :src="`${user.avatarUrl}?thumbnail&size=64`" alt=""/>%i18n:@followers%.replace('{}', {{ user | userName }})
|
<img :src="`${user.avatarUrl}?thumbnail&size=64`" alt=""/>{{ '%i18n:@followers%'.replace('{}', name) }}
|
||||||
</span>
|
</span>
|
||||||
<mk-followers :user="user"/>
|
<mk-followers :user="user"/>
|
||||||
</mk-window>
|
</mk-window>
|
||||||
@ -11,7 +11,12 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: ['user']
|
props: ['user'],
|
||||||
|
computed: {
|
||||||
|
name(): string {
|
||||||
|
return Vue.filter('userName')(this.user);
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<mk-window width="400px" height="550px" @closed="$destroy">
|
<mk-window width="400px" height="550px" @closed="$destroy">
|
||||||
<span slot="header" :class="$style.header">
|
<span slot="header" :class="$style.header">
|
||||||
<img :src="`${user.avatarUrl}?thumbnail&size=64`" alt=""/>%i18n:@following%.replace('{}', {{ user | userName }})
|
<img :src="`${user.avatarUrl}?thumbnail&size=64`" alt=""/>{{ '%i18n:@following%'.replace('{}', name) }}
|
||||||
</span>
|
</span>
|
||||||
<mk-following :user="user"/>
|
<mk-following :user="user"/>
|
||||||
</mk-window>
|
</mk-window>
|
||||||
@ -11,7 +11,12 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: ['user']
|
props: ['user'],
|
||||||
|
computed: {
|
||||||
|
name(): string {
|
||||||
|
return Vue.filter('userName')(this.user);
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -4,6 +4,9 @@
|
|||||||
<div class="main">
|
<div class="main">
|
||||||
<header>
|
<header>
|
||||||
<router-link class="name" :to="note.user | userPage" v-user-preview="note.userId">{{ note.user | userName }}</router-link>
|
<router-link class="name" :to="note.user | userPage" v-user-preview="note.userId">{{ note.user | userName }}</router-link>
|
||||||
|
<span class="is-admin" v-if="note.user.isAdmin">admin</span>
|
||||||
|
<span class="is-bot" v-if="note.user.isBot">bot</span>
|
||||||
|
<span class="is-cat" v-if="note.user.isCat">cat</span>
|
||||||
<span class="username"><mk-acct :user="note.user"/></span>
|
<span class="username"><mk-acct :user="note.user"/></span>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<span class="mobile" v-if="note.viaMobile">%fa:mobile-alt%</span>
|
<span class="mobile" v-if="note.viaMobile">%fa:mobile-alt%</span>
|
||||||
@ -68,7 +71,6 @@ root(isDark)
|
|||||||
align-items baseline
|
align-items baseline
|
||||||
margin-bottom 2px
|
margin-bottom 2px
|
||||||
white-space nowrap
|
white-space nowrap
|
||||||
line-height 21px
|
|
||||||
|
|
||||||
> .name
|
> .name
|
||||||
display block
|
display block
|
||||||
@ -84,6 +86,20 @@ root(isDark)
|
|||||||
&:hover
|
&:hover
|
||||||
text-decoration underline
|
text-decoration underline
|
||||||
|
|
||||||
|
> .is-admin
|
||||||
|
> .is-bot
|
||||||
|
> .is-cat
|
||||||
|
margin 0 0.5em 0 0
|
||||||
|
padding 1px 5px
|
||||||
|
font-size 10px
|
||||||
|
color isDark ? #758188 : #aaa
|
||||||
|
border solid 1px isDark ? #57616f : #ddd
|
||||||
|
border-radius 3px
|
||||||
|
|
||||||
|
&.is-admin
|
||||||
|
border-color isDark ? #d42c41 : #f56a7b
|
||||||
|
color isDark ? #d42c41 : #f56a7b
|
||||||
|
|
||||||
> .username
|
> .username
|
||||||
margin 0 .5em 0 0
|
margin 0 .5em 0 0
|
||||||
color isDark ? #606984 : #d1d8da
|
color isDark ? #606984 : #d1d8da
|
||||||
|
@ -16,7 +16,9 @@
|
|||||||
<div class="main">
|
<div class="main">
|
||||||
<header>
|
<header>
|
||||||
<router-link class="name" :to="p.user | userPage" v-user-preview="p.user.id">{{ p.user | userName }}</router-link>
|
<router-link class="name" :to="p.user | userPage" v-user-preview="p.user.id">{{ p.user | userName }}</router-link>
|
||||||
<span class="is-bot" v-if="p.user.host === null && p.user.isBot">bot</span>
|
<span class="is-admin" v-if="p.user.isAdmin">admin</span>
|
||||||
|
<span class="is-bot" v-if="p.user.isBot">bot</span>
|
||||||
|
<span class="is-cat" v-if="p.user.isCat">cat</span>
|
||||||
<span class="username"><mk-acct :user="p.user"/></span>
|
<span class="username"><mk-acct :user="p.user"/></span>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<span class="app" v-if="p.app">via <b>{{ p.app.name }}</b></span>
|
<span class="app" v-if="p.app">via <b>{{ p.app.name }}</b></span>
|
||||||
@ -430,7 +432,9 @@ root(isDark)
|
|||||||
&:hover
|
&:hover
|
||||||
text-decoration underline
|
text-decoration underline
|
||||||
|
|
||||||
|
> .is-admin
|
||||||
> .is-bot
|
> .is-bot
|
||||||
|
> .is-cat
|
||||||
margin 0 .5em 0 0
|
margin 0 .5em 0 0
|
||||||
padding 1px 6px
|
padding 1px 6px
|
||||||
font-size 12px
|
font-size 12px
|
||||||
@ -438,6 +442,10 @@ root(isDark)
|
|||||||
border solid 1px isDark ? #57616f : #ddd
|
border solid 1px isDark ? #57616f : #ddd
|
||||||
border-radius 3px
|
border-radius 3px
|
||||||
|
|
||||||
|
&.is-admin
|
||||||
|
border-color isDark ? #d42c41 : #f56a7b
|
||||||
|
color isDark ? #d42c41 : #f56a7b
|
||||||
|
|
||||||
> .username
|
> .username
|
||||||
margin 0 .5em 0 0
|
margin 0 .5em 0 0
|
||||||
overflow hidden
|
overflow hidden
|
||||||
|
@ -24,7 +24,8 @@
|
|||||||
<button class="ui primary" @click="save">%i18n:@save%</button>
|
<button class="ui primary" @click="save">%i18n:@save%</button>
|
||||||
<section>
|
<section>
|
||||||
<h2>その他</h2>
|
<h2>その他</h2>
|
||||||
<mk-switch v-model="os.i.isBot" @change="onChangeIsBot" text="このアカウントはbotです"/>
|
<mk-switch v-model="os.i.isBot" @change="onChangeIsBot" text="%i18n:@is-bot%"/>
|
||||||
|
<mk-switch v-model="os.i.isCat" @change="onChangeIsCat" text="%i18n:@is-cat%"/>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -65,6 +66,11 @@ export default Vue.extend({
|
|||||||
(this as any).api('i/update', {
|
(this as any).api('i/update', {
|
||||||
isBot: (this as any).os.i.isBot
|
isBot: (this as any).os.i.isBot
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
onChangeIsCat() {
|
||||||
|
(this as any).api('i/update', {
|
||||||
|
isCat: (this as any).os.i.isCat
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -227,8 +227,7 @@ export default Vue.extend({
|
|||||||
version,
|
version,
|
||||||
langs,
|
langs,
|
||||||
latestVersion: undefined,
|
latestVersion: undefined,
|
||||||
checkingForUpdate: false,
|
checkingForUpdate: false
|
||||||
darkmode: localStorage.getItem('darkmode') == 'true'
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -246,6 +245,11 @@ export default Vue.extend({
|
|||||||
set(value) { this.$store.commit('device/set', { key: 'autoPopout', value }); }
|
set(value) { this.$store.commit('device/set', { key: 'autoPopout', value }); }
|
||||||
},
|
},
|
||||||
|
|
||||||
|
darkmode: {
|
||||||
|
get() { return this.$store.state.device.darkmode; },
|
||||||
|
set(value) { this.$store.commit('device/set', { key: 'darkmode', value }); }
|
||||||
|
},
|
||||||
|
|
||||||
enableSounds: {
|
enableSounds: {
|
||||||
get() { return this.$store.state.device.enableSounds; },
|
get() { return this.$store.state.device.enableSounds; },
|
||||||
set(value) { this.$store.commit('device/set', { key: 'enableSounds', value }); }
|
set(value) { this.$store.commit('device/set', { key: 'enableSounds', value }); }
|
||||||
@ -276,11 +280,6 @@ export default Vue.extend({
|
|||||||
set(value) { this.$store.commit('device/set', { key: 'enableExperimentalFeatures', value }); }
|
set(value) { this.$store.commit('device/set', { key: 'enableExperimentalFeatures', value }); }
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
|
||||||
darkmode() {
|
|
||||||
(this as any)._updateDarkmode_(this.darkmode);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
created() {
|
created() {
|
||||||
(this as any).os.getMeta().then(meta => {
|
(this as any).os.getMeta().then(meta => {
|
||||||
this.meta = meta;
|
this.meta = meta;
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
</ul>
|
</ul>
|
||||||
<ul>
|
<ul>
|
||||||
<li @click="dark">
|
<li @click="dark">
|
||||||
<p><span>%i18n:@dark%</span><template v-if="_darkmode_">%fa:moon%</template><template v-else>%fa:R moon%</template></p>
|
<p><span>%i18n:@dark%</span><template v-if="$store.state.device.darkmode">%fa:moon%</template><template v-else>%fa:R moon%</template></p>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@ -99,7 +99,10 @@ export default Vue.extend({
|
|||||||
(this as any).os.signout();
|
(this as any).os.signout();
|
||||||
},
|
},
|
||||||
dark() {
|
dark() {
|
||||||
(this as any)._updateDarkmode_(!(this as any)._darkmode_);
|
this.$store.commit('device/set', {
|
||||||
|
key: 'darkmode',
|
||||||
|
value: !this.$store.state.device.darkmode
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<mk-window ref="window" is-modal width="450px" height="500px" @closed="$destroy">
|
<mk-window ref="window" is-modal width="450px" height="500px" @closed="$destroy">
|
||||||
<span slot="header">%fa:list% リスト</span>
|
<span slot="header">%fa:list% リスト</span>
|
||||||
|
|
||||||
<div data-id="6e4caea3-d8f9-4ab7-96de-ab67fe8d5c82" :data-darkmode="_darkmode_">
|
<div data-id="6e4caea3-d8f9-4ab7-96de-ab67fe8d5c82" :data-darkmode="$store.state.device.darkmode">
|
||||||
<button class="ui" @click="add">%i18n:@create-list%</button>
|
<button class="ui" @click="add">%i18n:@create-list%</button>
|
||||||
<a v-for="list in lists" :key="list.id" @click="choice(list)">{{ list.title }}</a>
|
<a v-for="list in lists" :key="list.id" @click="choice(list)">{{ list.title }}</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -95,7 +95,7 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
created() {
|
created() {
|
||||||
if (this.$store.state.device.autoPopout && this.popoutUrl) {
|
if ((this as any).os.store.state.device.autoPopout && this.popoutUrl) {
|
||||||
this.popout();
|
this.popout();
|
||||||
this.preventMount = true;
|
this.preventMount = true;
|
||||||
} else {
|
} else {
|
||||||
|
@ -21,10 +21,21 @@ export default Vue.extend({
|
|||||||
$route: 'fetch'
|
$route: 'fetch'
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
const applyBg = v =>
|
||||||
|
document.documentElement.style.setProperty('background', v ? '#191b22' : '#fff', 'important');
|
||||||
|
|
||||||
|
applyBg(this.$store.state.device.darkmode);
|
||||||
|
|
||||||
|
this.unwatchDarkmode = this.$store.watch(s => {
|
||||||
|
return s.device.darkmode;
|
||||||
|
}, applyBg);
|
||||||
|
|
||||||
this.fetch();
|
this.fetch();
|
||||||
},
|
},
|
||||||
mounted() {
|
beforeDestroy() {
|
||||||
document.documentElement.style.background = '#fff';
|
document.documentElement.style.removeProperty('background');
|
||||||
|
document.documentElement.style.removeProperty('background-color'); // for safari's bug
|
||||||
|
this.unwatchDarkmode();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
fetch() {
|
fetch() {
|
||||||
@ -50,6 +61,5 @@ export default Vue.extend({
|
|||||||
flex 1
|
flex 1
|
||||||
flex-direction column
|
flex-direction column
|
||||||
min-height 100%
|
min-height 100%
|
||||||
background #fff
|
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -1,24 +1,17 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mk-welcome">
|
<div class="mk-welcome">
|
||||||
|
<button @click="dark">
|
||||||
|
<template v-if="$store.state.device.darkmode">%fa:moon%</template>
|
||||||
|
<template v-else>%fa:R moon%</template>
|
||||||
|
</button>
|
||||||
<main>
|
<main>
|
||||||
<div class="top">
|
<img :src="$store.state.device.darkmode ? 'assets/title-dark.svg' : 'assets/title.svg'" alt="Misskey">
|
||||||
<div>
|
<p><button class="signup" @click="signup">%i18n:@signup-button%</button><button class="signin" @click="signin">%i18n:@signin-button%</button></p>
|
||||||
<div>
|
|
||||||
<h1>Share<br><span ref="share">Everything!</span><span class="cursor">_</span></h1>
|
<div class="tl">
|
||||||
<p>ようこそ! <b>Misskey</b>はTwitter風ミニブログSNSです。思ったことや皆と共有したいことを投稿しましょう。タイムラインを見れば、皆の関心事をすぐにチェックすることもできます。<a :href="aboutUrl">詳しく...</a></p>
|
<header>%fa:comments R% %i18n:@timeline%<div><span></span><span></span><span></span></div></header>
|
||||||
<p><button class="signup" @click="signup">はじめる</button><button class="signin" @click="signin">ログイン</button></p>
|
|
||||||
<div class="users">
|
|
||||||
<mk-avatar class="avatar" v-for="user in users" :key="user.id" :user="user"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<div>
|
|
||||||
<header>%fa:comments R% タイムライン<div><span></span><span></span><span></span></div></header>
|
|
||||||
<mk-welcome-timeline/>
|
<mk-welcome-timeline/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</main>
|
</main>
|
||||||
<mk-forkit/>
|
<mk-forkit/>
|
||||||
<footer>
|
<footer>
|
||||||
@ -28,11 +21,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
<modal name="signup" width="500px" height="auto" scrollable>
|
<modal name="signup" width="500px" height="auto" scrollable>
|
||||||
<header :class="$style.signupFormHeader">新規登録</header>
|
<header :class="$style.signupFormHeader">%i18n:@signup%</header>
|
||||||
<mk-signup :class="$style.signupForm"/>
|
<mk-signup :class="$style.signupForm"/>
|
||||||
</modal>
|
</modal>
|
||||||
<modal name="signin" width="500px" height="auto" scrollable>
|
<modal name="signin" width="500px" height="auto" scrollable>
|
||||||
<header :class="$style.signinFormHeader">ログイン</header>
|
<header :class="$style.signinFormHeader">%i18n:@signin%</header>
|
||||||
<mk-signin :class="$style.signinForm"/>
|
<mk-signin :class="$style.signinForm"/>
|
||||||
</modal>
|
</modal>
|
||||||
</div>
|
</div>
|
||||||
@ -42,64 +35,21 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import { docsUrl, copyright, lang } from '../../../config';
|
import { docsUrl, copyright, lang } from '../../../config';
|
||||||
|
|
||||||
const shares = [
|
|
||||||
'Everything!',
|
|
||||||
'Webpages',
|
|
||||||
'Photos',
|
|
||||||
'Interests',
|
|
||||||
'Favorites'
|
|
||||||
];
|
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
aboutUrl: `${docsUrl}/${lang}/about`,
|
aboutUrl: `${docsUrl}/${lang}/about`,
|
||||||
copyright,
|
copyright
|
||||||
users: [],
|
|
||||||
clock: null,
|
|
||||||
i: 0
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
|
||||||
(this as any).api('users', {
|
|
||||||
sort: '+follower',
|
|
||||||
limit: 20
|
|
||||||
}).then(users => {
|
|
||||||
this.users = users;
|
|
||||||
});
|
|
||||||
|
|
||||||
this.clock = setInterval(() => {
|
|
||||||
if (++this.i == shares.length) this.i = 0;
|
|
||||||
const speed = 70;
|
|
||||||
const text = (this.$refs.share as any).innerText;
|
|
||||||
for (let i = 0; i < text.length; i++) {
|
|
||||||
setTimeout(() => {
|
|
||||||
if (this.$refs.share) {
|
|
||||||
(this.$refs.share as any).innerText = text.substr(0, text.length - i);
|
|
||||||
}
|
|
||||||
}, i * speed)
|
|
||||||
}
|
|
||||||
setTimeout(() => {
|
|
||||||
const newText = shares[this.i];
|
|
||||||
for (let i = 0; i <= newText.length; i++) {
|
|
||||||
setTimeout(() => {
|
|
||||||
if (this.$refs.share) {
|
|
||||||
(this.$refs.share as any).innerText = newText.substr(0, i);
|
|
||||||
}
|
|
||||||
}, i * speed)
|
|
||||||
}
|
|
||||||
}, text.length * speed);
|
|
||||||
}, 4000);
|
|
||||||
},
|
|
||||||
beforeDestroy() {
|
|
||||||
clearInterval(this.clock);
|
|
||||||
},
|
|
||||||
methods: {
|
methods: {
|
||||||
signup() {
|
signup() {
|
||||||
this.$modal.show('signup');
|
this.$modal.show('signup');
|
||||||
},
|
},
|
||||||
signin() {
|
signin() {
|
||||||
this.$modal.show('signin');
|
this.$modal.show('signin');
|
||||||
|
},
|
||||||
|
dark() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -115,73 +65,31 @@ export default Vue.extend({
|
|||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
@import '~const.styl'
|
@import '~const.styl'
|
||||||
|
|
||||||
@import url('https://fonts.googleapis.com/css?family=Sarpanch:700')
|
root(isDark)
|
||||||
|
|
||||||
.mk-welcome
|
|
||||||
display flex
|
display flex
|
||||||
flex-direction column
|
flex-direction column
|
||||||
flex 1
|
flex 1
|
||||||
$width = 1000px
|
|
||||||
|
|
||||||
background linear-gradient(to bottom, #1e1d65, #bd6659)
|
> button
|
||||||
//background-image url('/assets/welcome-bg.svg')
|
position absolute
|
||||||
background-size cover
|
z-index 1
|
||||||
background-position top center
|
top 0
|
||||||
|
|
||||||
&:before
|
|
||||||
content ""
|
|
||||||
display block
|
|
||||||
position fixed
|
|
||||||
bottom 0
|
|
||||||
left 0
|
left 0
|
||||||
width 100%
|
padding 16px
|
||||||
height 100%
|
font-size 18px
|
||||||
background-image url('/assets/welcome-fg.svg')
|
color isDark ? #fff : #555
|
||||||
background-size cover
|
|
||||||
background-position bottom center
|
|
||||||
|
|
||||||
> main
|
> main
|
||||||
display flex
|
|
||||||
flex 1
|
flex 1
|
||||||
|
padding 64px 0 0 0
|
||||||
|
text-align center
|
||||||
|
color isDark ? #9aa4b3 : #555
|
||||||
|
|
||||||
> .top
|
> img
|
||||||
display flex
|
width 350px
|
||||||
width 100%
|
|
||||||
|
|
||||||
> div
|
|
||||||
display flex
|
|
||||||
max-width $width + 64px
|
|
||||||
margin 0 auto
|
|
||||||
padding 80px 32px 0 32px
|
|
||||||
|
|
||||||
> *
|
|
||||||
margin-bottom 48px
|
|
||||||
|
|
||||||
> div:first-child
|
|
||||||
margin-right 48px
|
|
||||||
color #fff
|
|
||||||
text-shadow 0 0 12px #172062
|
|
||||||
|
|
||||||
> h1
|
|
||||||
margin 0
|
|
||||||
font-weight bold
|
|
||||||
//font-variant small-caps
|
|
||||||
letter-spacing 12px
|
|
||||||
font-family 'Sarpanch', sans-serif
|
|
||||||
font-size 42px
|
|
||||||
line-height 48px
|
|
||||||
|
|
||||||
> .cursor
|
|
||||||
animation cursor 1s infinite linear both
|
|
||||||
|
|
||||||
@keyframes cursor
|
|
||||||
0%
|
|
||||||
opacity 1
|
|
||||||
50%
|
|
||||||
opacity 0
|
|
||||||
|
|
||||||
> p
|
> p
|
||||||
margin 1em 0
|
margin 8px 0
|
||||||
line-height 2em
|
line-height 2em
|
||||||
|
|
||||||
button
|
button
|
||||||
@ -207,31 +115,21 @@ export default Vue.extend({
|
|||||||
|
|
||||||
.signin
|
.signin
|
||||||
&:hover
|
&:hover
|
||||||
color #fff
|
color isDark ? #fff : #000
|
||||||
|
|
||||||
> .users
|
> .tl
|
||||||
margin 16px 0 0 0
|
margin 32px auto 0 auto
|
||||||
|
|
||||||
> *
|
|
||||||
display inline-block
|
|
||||||
margin 4px
|
|
||||||
width 38px
|
|
||||||
height 38px
|
|
||||||
border-radius 6px
|
|
||||||
|
|
||||||
> div:last-child
|
|
||||||
|
|
||||||
> div
|
|
||||||
width 410px
|
width 410px
|
||||||
background #fff
|
text-align left
|
||||||
|
background isDark ? #313543 : #fff
|
||||||
border-radius 8px
|
border-radius 8px
|
||||||
box-shadow 0 0 0 12px rgba(#000, 0.1)
|
box-shadow 0 8px 32px rgba(#000, 0.15)
|
||||||
overflow hidden
|
overflow hidden
|
||||||
|
|
||||||
> header
|
> header
|
||||||
z-index 1
|
z-index 1
|
||||||
padding 12px 16px
|
padding 12px 16px
|
||||||
color #888d94
|
color isDark ? #e3e5e8 : #888d94
|
||||||
box-shadow 0 1px 0px rgba(#000, 0.1)
|
box-shadow 0 1px 0px rgba(#000, 0.1)
|
||||||
|
|
||||||
> div
|
> div
|
||||||
@ -245,7 +143,6 @@ export default Vue.extend({
|
|||||||
height 11px
|
height 11px
|
||||||
width 11px
|
width 11px
|
||||||
margin-left 6px
|
margin-left 6px
|
||||||
background #ccc
|
|
||||||
border-radius 100%
|
border-radius 100%
|
||||||
vertical-align middle
|
vertical-align middle
|
||||||
|
|
||||||
@ -264,12 +161,11 @@ export default Vue.extend({
|
|||||||
|
|
||||||
> footer
|
> footer
|
||||||
font-size 12px
|
font-size 12px
|
||||||
color #949ea5
|
color isDark ? #949ea5 : #737c82
|
||||||
|
|
||||||
> div
|
> div
|
||||||
max-width $width
|
|
||||||
margin 0 auto
|
margin 0 auto
|
||||||
padding 0 0 42px 0
|
padding 64px
|
||||||
text-align center
|
text-align center
|
||||||
|
|
||||||
> .c
|
> .c
|
||||||
@ -277,6 +173,12 @@ export default Vue.extend({
|
|||||||
font-size 10px
|
font-size 10px
|
||||||
opacity 0.7
|
opacity 0.7
|
||||||
|
|
||||||
|
.mk-welcome[data-darkmode]
|
||||||
|
root(true)
|
||||||
|
|
||||||
|
.mk-welcome:not([data-darkmode])
|
||||||
|
root(false)
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style lang="stylus" module>
|
<style lang="stylus" module>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<template slot="header">%fa:chart-pie%%i18n:@title%</template>
|
<template slot="header">%fa:chart-pie%%i18n:@title%</template>
|
||||||
<button slot="func" title="%i18n:@refresh%" @click="fetch">%fa:sync%</button>
|
<button slot="func" title="%i18n:@refresh%" @click="fetch">%fa:sync%</button>
|
||||||
|
|
||||||
<div class="mkw-polls--body" :data-darkmode="_darkmode_">
|
<div class="mkw-polls--body" :data-darkmode="$store.state.device.darkmode">
|
||||||
<div class="poll" v-if="!fetching && poll != null">
|
<div class="poll" v-if="!fetching && poll != null">
|
||||||
<p v-if="poll.text"><router-link to="poll | notePage">{{ poll.text }}</router-link></p>
|
<p v-if="poll.text"><router-link to="poll | notePage">{{ poll.text }}</router-link></p>
|
||||||
<p v-if="!poll.text"><router-link to="poll | notePage">%fa:link%</router-link></p>
|
<p v-if="!poll.text"><router-link to="poll | notePage">%fa:link%</router-link></p>
|
||||||
|
@ -49,48 +49,6 @@ Vue.mixin({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Dark/Light
|
|
||||||
const bus = new Vue();
|
|
||||||
Vue.mixin({
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
_darkmode_: localStorage.getItem('darkmode') == 'true'
|
|
||||||
};
|
|
||||||
},
|
|
||||||
beforeCreate() {
|
|
||||||
// なぜか警告が出るので
|
|
||||||
this._darkmode_ = localStorage.getItem('darkmode') == 'true';
|
|
||||||
},
|
|
||||||
beforeDestroy() {
|
|
||||||
bus.$off('updated', this._onDarkmodeUpdated_);
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this._onDarkmodeUpdated_(this._darkmode_);
|
|
||||||
bus.$on('updated', this._onDarkmodeUpdated_);
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
_updateDarkmode_(v) {
|
|
||||||
localStorage.setItem('darkmode', v.toString());
|
|
||||||
if (v) {
|
|
||||||
document.documentElement.setAttribute('data-darkmode', 'true');
|
|
||||||
} else {
|
|
||||||
document.documentElement.removeAttribute('data-darkmode');
|
|
||||||
}
|
|
||||||
bus.$emit('updated', v);
|
|
||||||
},
|
|
||||||
_onDarkmodeUpdated_(v) {
|
|
||||||
if (!this.$el || !this.$el.setAttribute) return;
|
|
||||||
if (v) {
|
|
||||||
this.$el.setAttribute('data-darkmode', 'true');
|
|
||||||
} else {
|
|
||||||
this.$el.removeAttribute('data-darkmode');
|
|
||||||
}
|
|
||||||
this._darkmode_ = v;
|
|
||||||
this.$forceUpdate();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* APP ENTRY POINT!
|
* APP ENTRY POINT!
|
||||||
*/
|
*/
|
||||||
@ -141,6 +99,43 @@ export default (callback: (launch: (router: VueRouter, api?: (os: MiOS) => API)
|
|||||||
const launch = (router: VueRouter, api?: (os: MiOS) => API) => {
|
const launch = (router: VueRouter, api?: (os: MiOS) => API) => {
|
||||||
os.apis = api ? api(os) : null;
|
os.apis = api ? api(os) : null;
|
||||||
|
|
||||||
|
//#region Dark/Light
|
||||||
|
Vue.mixin({
|
||||||
|
data() {
|
||||||
|
_unwatchDarkmode_: null
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
const apply = v => {
|
||||||
|
if (this.$el.setAttribute == null) return;
|
||||||
|
if (v) {
|
||||||
|
this.$el.setAttribute('data-darkmode', 'true');
|
||||||
|
} else {
|
||||||
|
this.$el.removeAttribute('data-darkmode');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
apply(os.store.state.device.darkmode);
|
||||||
|
|
||||||
|
this._unwatchDarkmode_ = os.store.watch(s => {
|
||||||
|
return s.device.darkmode;
|
||||||
|
}, apply);
|
||||||
|
},
|
||||||
|
beforeDestroy() {
|
||||||
|
this._unwatchDarkmode_();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
os.store.watch(s => {
|
||||||
|
return s.device.darkmode;
|
||||||
|
}, v => {
|
||||||
|
if (v) {
|
||||||
|
document.documentElement.setAttribute('data-darkmode', 'true');
|
||||||
|
} else {
|
||||||
|
document.documentElement.removeAttribute('data-darkmode');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//#endregion
|
||||||
|
|
||||||
Vue.mixin({
|
Vue.mixin({
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
@ -70,7 +70,7 @@ init((launch) => {
|
|||||||
routes: [
|
routes: [
|
||||||
{ path: '/', name: 'index', component: MkIndex },
|
{ path: '/', name: 'index', component: MkIndex },
|
||||||
{ path: '/signup', name: 'signup', component: MkSignup },
|
{ path: '/signup', name: 'signup', component: MkSignup },
|
||||||
{ path: '/i/settings', component: MkSettings },
|
{ path: '/i/settings', name: 'settings', component: MkSettings },
|
||||||
{ path: '/i/notifications', name: 'notifications', component: MkNotifications },
|
{ path: '/i/notifications', name: 'notifications', component: MkNotifications },
|
||||||
{ path: '/i/widgets', name: 'widgets', component: MkWidgets },
|
{ path: '/i/widgets', name: 'widgets', component: MkWidgets },
|
||||||
{ path: '/i/messaging', name: 'messaging', component: MkMessaging },
|
{ path: '/i/messaging', name: 'messaging', component: MkMessaging },
|
||||||
|
@ -1,9 +1,13 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="sub">
|
<div class="sub" :class="{ smart: $store.state.device.postStyle == 'smart' }">
|
||||||
<mk-avatar class="avatar" :user="note.user"/>
|
<mk-avatar class="avatar" :user="note.user" v-if="$store.state.device.postStyle != 'smart'"/>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<header>
|
<header>
|
||||||
|
<mk-avatar class="avatar" :user="note.user" v-if="$store.state.device.postStyle == 'smart'"/>
|
||||||
<router-link class="name" :to="note.user | userPage">{{ note.user | userName }}</router-link>
|
<router-link class="name" :to="note.user | userPage">{{ note.user | userName }}</router-link>
|
||||||
|
<span class="is-admin" v-if="note.user.isAdmin">admin</span>
|
||||||
|
<span class="is-bot" v-if="note.user.isBot">bot</span>
|
||||||
|
<span class="is-cat" v-if="note.user.isCat">cat</span>
|
||||||
<span class="username"><mk-acct :user="note.user"/></span>
|
<span class="username"><mk-acct :user="note.user"/></span>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<span class="mobile" v-if="note.viaMobile">%fa:mobile-alt%</span>
|
<span class="mobile" v-if="note.viaMobile">%fa:mobile-alt%</span>
|
||||||
@ -42,6 +46,13 @@ root(isDark)
|
|||||||
@media (min-width 600px)
|
@media (min-width 600px)
|
||||||
padding 24px 32px
|
padding 24px 32px
|
||||||
|
|
||||||
|
&.smart
|
||||||
|
> .main
|
||||||
|
width 100%
|
||||||
|
|
||||||
|
> header
|
||||||
|
align-items center
|
||||||
|
|
||||||
&:after
|
&:after
|
||||||
content ""
|
content ""
|
||||||
display block
|
display block
|
||||||
@ -73,6 +84,13 @@ root(isDark)
|
|||||||
margin-bottom 2px
|
margin-bottom 2px
|
||||||
white-space nowrap
|
white-space nowrap
|
||||||
|
|
||||||
|
> .avatar
|
||||||
|
flex-shrink 0
|
||||||
|
margin-right 8px
|
||||||
|
width 18px
|
||||||
|
height 18px
|
||||||
|
border-radius 100%
|
||||||
|
|
||||||
> .name
|
> .name
|
||||||
display block
|
display block
|
||||||
margin 0 0.5em 0 0
|
margin 0 0.5em 0 0
|
||||||
@ -88,6 +106,20 @@ root(isDark)
|
|||||||
&:hover
|
&:hover
|
||||||
text-decoration underline
|
text-decoration underline
|
||||||
|
|
||||||
|
> .is-admin
|
||||||
|
> .is-bot
|
||||||
|
> .is-cat
|
||||||
|
margin 0 0.5em 0 0
|
||||||
|
padding 1px 5px
|
||||||
|
font-size 10px
|
||||||
|
color isDark ? #758188 : #aaa
|
||||||
|
border solid 1px isDark ? #57616f : #ddd
|
||||||
|
border-radius 3px
|
||||||
|
|
||||||
|
&.is-admin
|
||||||
|
border-color isDark ? #d42c41 : #f56a7b
|
||||||
|
color isDark ? #d42c41 : #f56a7b
|
||||||
|
|
||||||
> .username
|
> .username
|
||||||
text-align left
|
text-align left
|
||||||
margin 0
|
margin 0
|
||||||
|
@ -17,7 +17,9 @@
|
|||||||
<header>
|
<header>
|
||||||
<mk-avatar class="avatar" :user="p.user" v-if="$store.state.device.postStyle == 'smart'"/>
|
<mk-avatar class="avatar" :user="p.user" v-if="$store.state.device.postStyle == 'smart'"/>
|
||||||
<router-link class="name" :to="p.user | userPage">{{ p.user | userName }}</router-link>
|
<router-link class="name" :to="p.user | userPage">{{ p.user | userName }}</router-link>
|
||||||
<span class="is-bot" v-if="p.user.host === null && p.user.isBot">bot</span>
|
<span class="is-admin" v-if="p.user.isAdmin">admin</span>
|
||||||
|
<span class="is-bot" v-if="p.user.isBot">bot</span>
|
||||||
|
<span class="is-cat" v-if="p.user.isCat">cat</span>
|
||||||
<span class="username"><mk-acct :user="p.user"/></span>
|
<span class="username"><mk-acct :user="p.user"/></span>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<span class="mobile" v-if="p.viaMobile">%fa:mobile-alt%</span>
|
<span class="mobile" v-if="p.viaMobile">%fa:mobile-alt%</span>
|
||||||
@ -288,6 +290,7 @@ root(isDark)
|
|||||||
padding 16px 32px
|
padding 16px 32px
|
||||||
|
|
||||||
.avatar
|
.avatar
|
||||||
|
flex-shrink 0
|
||||||
display inline-block
|
display inline-block
|
||||||
width 20px
|
width 20px
|
||||||
height 20px
|
height 20px
|
||||||
@ -367,6 +370,7 @@ root(isDark)
|
|||||||
margin-bottom 2px
|
margin-bottom 2px
|
||||||
|
|
||||||
> .avatar
|
> .avatar
|
||||||
|
flex-shrink 0
|
||||||
margin-right 8px
|
margin-right 8px
|
||||||
width 20px
|
width 20px
|
||||||
height 20px
|
height 20px
|
||||||
@ -385,7 +389,9 @@ root(isDark)
|
|||||||
&:hover
|
&:hover
|
||||||
text-decoration underline
|
text-decoration underline
|
||||||
|
|
||||||
|
> .is-admin
|
||||||
> .is-bot
|
> .is-bot
|
||||||
|
> .is-cat
|
||||||
margin 0 0.5em 0 0
|
margin 0 0.5em 0 0
|
||||||
padding 1px 6px
|
padding 1px 6px
|
||||||
font-size 12px
|
font-size 12px
|
||||||
@ -393,6 +399,10 @@ root(isDark)
|
|||||||
border solid 1px isDark ? #57616f : #ddd
|
border solid 1px isDark ? #57616f : #ddd
|
||||||
border-radius 3px
|
border-radius 3px
|
||||||
|
|
||||||
|
&.is-admin
|
||||||
|
border-color isDark ? #d42c41 : #f56a7b
|
||||||
|
color isDark ? #d42c41 : #f56a7b
|
||||||
|
|
||||||
> .username
|
> .username
|
||||||
margin 0 0.5em 0 0
|
margin 0 0.5em 0 0
|
||||||
overflow hidden
|
overflow hidden
|
||||||
|
@ -28,8 +28,8 @@
|
|||||||
<li><a @click="search">%fa:search%%i18n:@search%%fa:angle-right%</a></li>
|
<li><a @click="search">%fa:search%%i18n:@search%%fa:angle-right%</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<ul>
|
<ul>
|
||||||
<li><router-link to="/i/settings">%fa:cog%%i18n:@settings%%fa:angle-right%</router-link></li>
|
<li><router-link to="/i/settings" :data-active="$route.name == 'settings'">%fa:cog%%i18n:@settings%%fa:angle-right%</router-link></li>
|
||||||
<li @click="dark"><p><template v-if="_darkmode_">%fa:moon%</template><template v-else>%fa:R moon%</template><span>ダークモード</span></p></li>
|
<li @click="dark"><p><template v-if="$store.state.device.darkmode">%fa:moon%</template><template v-else>%fa:R moon%</template><span>ダークモード</span></p></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<a :href="aboutUrl"><p class="about">%i18n:@about%</p></a>
|
<a :href="aboutUrl"><p class="about">%i18n:@about%</p></a>
|
||||||
@ -117,7 +117,10 @@ export default Vue.extend({
|
|||||||
this.hasGameInvitations = false;
|
this.hasGameInvitations = false;
|
||||||
},
|
},
|
||||||
dark() {
|
dark() {
|
||||||
(this as any)._updateDarkmode_(!(this as any)._darkmode_);
|
this.$store.commit('device/set', {
|
||||||
|
key: 'darkmode',
|
||||||
|
value: !this.$store.state.device.darkmode
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
<button @click="fn">%fa:pencil-alt%</button>
|
<button @click="fn">%fa:pencil-alt%</button>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<main :data-darkmode="_darkmode_">
|
<main :data-darkmode="$store.state.device.darkmode">
|
||||||
<div class="nav" v-if="showNav">
|
<div class="nav" v-if="showNav">
|
||||||
<div class="bg" @click="showNav = false"></div>
|
<div class="bg" @click="showNav = false"></div>
|
||||||
<div class="body">
|
<div class="body">
|
||||||
|
@ -16,16 +16,30 @@ export default Vue.extend({
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
fetching: true,
|
fetching: true,
|
||||||
user: null
|
user: null,
|
||||||
|
unwatchDarkmode: null
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
$route: 'fetch'
|
$route: 'fetch'
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
document.documentElement.style.background = '#fff';
|
const applyBg = v =>
|
||||||
|
document.documentElement.style.setProperty('background', v ? '#191b22' : '#fff', 'important');
|
||||||
|
|
||||||
|
applyBg(this.$store.state.device.darkmode);
|
||||||
|
|
||||||
|
this.unwatchDarkmode = this.$store.watch(s => {
|
||||||
|
return s.device.darkmode;
|
||||||
|
}, applyBg);
|
||||||
|
|
||||||
this.fetch();
|
this.fetch();
|
||||||
},
|
},
|
||||||
|
beforeDestroy() {
|
||||||
|
document.documentElement.style.removeProperty('background');
|
||||||
|
document.documentElement.style.removeProperty('background-color'); // for safari's bug
|
||||||
|
this.unwatchDarkmode();
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
fetch() {
|
fetch() {
|
||||||
this.fetching = true;
|
this.fetching = true;
|
||||||
@ -39,4 +53,3 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -12,7 +12,6 @@ import getAcct from '../../../../../acct/render';
|
|||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
mounted() {
|
mounted() {
|
||||||
document.title = 'Misskey %i18n:@messaging%';
|
document.title = 'Misskey %i18n:@messaging%';
|
||||||
document.documentElement.style.background = '#fff';
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
navigate(user) {
|
navigate(user) {
|
||||||
|
@ -141,7 +141,6 @@ export default Vue.extend({
|
|||||||
version,
|
version,
|
||||||
codename,
|
codename,
|
||||||
langs,
|
langs,
|
||||||
darkmode: localStorage.getItem('darkmode') == 'true',
|
|
||||||
latestVersion: undefined,
|
latestVersion: undefined,
|
||||||
checkingForUpdate: false
|
checkingForUpdate: false
|
||||||
};
|
};
|
||||||
@ -152,6 +151,11 @@ export default Vue.extend({
|
|||||||
return Vue.filter('userName')((this as any).os.i);
|
return Vue.filter('userName')((this as any).os.i);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
darkmode: {
|
||||||
|
get() { return this.$store.state.device.darkmode; },
|
||||||
|
set(value) { this.$store.commit('device/set', { key: 'darkmode', value }); }
|
||||||
|
},
|
||||||
|
|
||||||
postStyle: {
|
postStyle: {
|
||||||
get() { return this.$store.state.device.postStyle; },
|
get() { return this.$store.state.device.postStyle; },
|
||||||
set(value) { this.$store.commit('device/set', { key: 'postStyle', value }); }
|
set(value) { this.$store.commit('device/set', { key: 'postStyle', value }); }
|
||||||
@ -168,12 +172,6 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
watch: {
|
|
||||||
darkmode() {
|
|
||||||
(this as any)._updateDarkmode_(this.darkmode);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
document.title = 'Misskey | %i18n:@settings%';
|
document.title = 'Misskey | %i18n:@settings%';
|
||||||
},
|
},
|
||||||
|
@ -27,7 +27,6 @@
|
|||||||
<md-icon>%fa:birthday-cake%</md-icon>
|
<md-icon>%fa:birthday-cake%</md-icon>
|
||||||
<label>%i18n:@birthday%</label>
|
<label>%i18n:@birthday%</label>
|
||||||
<md-input type="date" v-model="birthday" :disabled="saving"/>
|
<md-input type="date" v-model="birthday" :disabled="saving"/>
|
||||||
<span class="md-helper-text">%i18n:@will-be-published%</span>
|
|
||||||
</md-field>
|
</md-field>
|
||||||
|
|
||||||
<md-field>
|
<md-field>
|
||||||
@ -50,7 +49,7 @@
|
|||||||
md-content="%18n:!@uploading%"/>
|
md-content="%18n:!@uploading%"/>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<md-switch v-model="os.i.isBot" @change="onChangeIsBot">%i18n:@is-bot%</md-switch>
|
<md-switch v-model="isCat">%i18n:@is-cat%</md-switch>
|
||||||
</div>
|
</div>
|
||||||
</md-card-content>
|
</md-card-content>
|
||||||
|
|
||||||
@ -75,6 +74,8 @@ export default Vue.extend({
|
|||||||
birthday: null,
|
birthday: null,
|
||||||
avatarId: null,
|
avatarId: null,
|
||||||
bannerId: null,
|
bannerId: null,
|
||||||
|
isBot: false,
|
||||||
|
isCat: false,
|
||||||
saving: false,
|
saving: false,
|
||||||
uploading: false
|
uploading: false
|
||||||
};
|
};
|
||||||
@ -88,15 +89,11 @@ export default Vue.extend({
|
|||||||
this.birthday = (this as any).os.i.profile.birthday;
|
this.birthday = (this as any).os.i.profile.birthday;
|
||||||
this.avatarId = (this as any).os.i.avatarId;
|
this.avatarId = (this as any).os.i.avatarId;
|
||||||
this.bannerId = (this as any).os.i.bannerId;
|
this.bannerId = (this as any).os.i.bannerId;
|
||||||
|
this.isBot = (this as any).os.i.isBot;
|
||||||
|
this.isCat = (this as any).os.i.isCat;
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
onChangeIsBot() {
|
|
||||||
(this as any).api('i/update', {
|
|
||||||
isBot: (this as any).os.i.isBot
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
onAvatarChange([file]) {
|
onAvatarChange([file]) {
|
||||||
this.uploading = true;
|
this.uploading = true;
|
||||||
|
|
||||||
@ -150,7 +147,9 @@ export default Vue.extend({
|
|||||||
description: this.description || null,
|
description: this.description || null,
|
||||||
birthday: this.birthday || null,
|
birthday: this.birthday || null,
|
||||||
avatarId: this.avatarId,
|
avatarId: this.avatarId,
|
||||||
bannerId: this.bannerId
|
bannerId: this.bannerId,
|
||||||
|
isBot: this.isBot,
|
||||||
|
isCat: this.isCat
|
||||||
}).then(i => {
|
}).then(i => {
|
||||||
this.saving = false;
|
this.saving = false;
|
||||||
(this as any).os.i.avatarId = i.avatarId;
|
(this as any).os.i.avatarId = i.avatarId;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<mk-ui>
|
<mk-ui>
|
||||||
<template slot="header" v-if="!fetching"><img :src="`${user.avatarUrl}?thumbnail&size=64`" alt="">{{ user | userName }}</template>
|
<template slot="header" v-if="!fetching"><img :src="`${user.avatarUrl}?thumbnail&size=64`" alt="">{{ user | userName }}</template>
|
||||||
<main v-if="!fetching" :data-darkmode="_darkmode_">
|
<main v-if="!fetching" :data-darkmode="$store.state.device.darkmode">
|
||||||
<div class="is-suspended" v-if="user.isSuspended"><p>%fa:exclamation-triangle% %i18n:@is-suspended%</p></div>
|
<div class="is-suspended" v-if="user.isSuspended"><p>%fa:exclamation-triangle% %i18n:@is-suspended%</p></div>
|
||||||
<div class="is-remote" v-if="user.host != null"><p>%fa:exclamation-triangle% %i18n:@is-remote%<a :href="user.url || user.uri" target="_blank">%i18n:@view-remote%</a></p></div>
|
<div class="is-remote" v-if="user.host != null"><p>%fa:exclamation-triangle% %i18n:@is-remote%<a :href="user.url || user.uri" target="_blank">%i18n:@view-remote%</a></p></div>
|
||||||
<header>
|
<header>
|
||||||
|
@ -19,6 +19,7 @@ const defaultSettings = {
|
|||||||
const defaultDeviceSettings = {
|
const defaultDeviceSettings = {
|
||||||
apiViaStream: true,
|
apiViaStream: true,
|
||||||
autoPopout: false,
|
autoPopout: false,
|
||||||
|
darkmode: false,
|
||||||
enableSounds: true,
|
enableSounds: true,
|
||||||
soundVolume: 0.5,
|
soundVolume: 0.5,
|
||||||
lang: null,
|
lang: null,
|
||||||
|
@ -1,25 +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="レイヤー_1" 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">
|
|
||||||
<circle fill="#2B2F2D" cx="128" cy="153.6" r="19.201"/>
|
|
||||||
<circle fill="#2B2F2D" cx="51.2" cy="153.6" r="19.2"/>
|
|
||||||
<circle fill="#2B2F2D" cx="204.8" cy="153.6" r="19.2"/>
|
|
||||||
<polyline fill="none" stroke="#2B2F2D" stroke-width="16" stroke-linejoin="round" stroke-miterlimit="10" points="51.2,153.6
|
|
||||||
89.601,102.4 128,153.6 166.4,102.4 204.799,153.6 "/>
|
|
||||||
<circle fill="#2B2F2D" cx="89.6" cy="102.4" r="19.2"/>
|
|
||||||
<circle fill="#2B2F2D" cx="166.4" cy="102.4" r="19.199"/>
|
|
||||||
<g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 1021 B |
@ -10,11 +10,6 @@
|
|||||||
localStorage.setItem('v', v);
|
localStorage.setItem('v', v);
|
||||||
}
|
}
|
||||||
|
|
||||||
const lang = window.prompt('Enter language (optional):');
|
|
||||||
if (lang && lang.length > 0) {
|
|
||||||
localStorage.setItem('lang', lang);
|
|
||||||
}
|
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
location.href = '/';
|
location.href = '/';
|
||||||
}, 500);
|
}, 500);
|
||||||
|
@ -324,6 +324,10 @@ export const pack = async (
|
|||||||
// resolve promises in _note object
|
// resolve promises in _note object
|
||||||
_note = await rap(_note);
|
_note = await rap(_note);
|
||||||
|
|
||||||
|
if (_note.user.isCat && _note.text) {
|
||||||
|
_note.text = _note.text.replace(/な/g, 'にゃ').replace(/ナ/g, 'ニャ');
|
||||||
|
}
|
||||||
|
|
||||||
if (hide) {
|
if (hide) {
|
||||||
_note.mediaIds = [];
|
_note.mediaIds = [];
|
||||||
_note.text = null;
|
_note.text = null;
|
||||||
|
@ -77,6 +77,7 @@ export interface ILocalUser extends IUserBase {
|
|||||||
};
|
};
|
||||||
lastUsedAt: Date;
|
lastUsedAt: Date;
|
||||||
isBot: boolean;
|
isBot: boolean;
|
||||||
|
isCat: boolean;
|
||||||
isPro: boolean;
|
isPro: boolean;
|
||||||
twoFactorSecret: string;
|
twoFactorSecret: string;
|
||||||
twoFactorEnabled: boolean;
|
twoFactorEnabled: boolean;
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import * as mongo from 'mongodb';
|
import * as mongo from 'mongodb';
|
||||||
import { default as Notification, INotification } from '../../../models/notification';
|
import { default as Notification, INotification } from '../../../models/notification';
|
||||||
import publishUserStream from '../../../publishers/stream';
|
import publishUserStream from '../../../publishers/stream';
|
||||||
|
import Mute from '../../../models/mute';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mark as read notification(s)
|
* Mark as read notification(s)
|
||||||
@ -26,6 +27,11 @@ export default (
|
|||||||
? [new mongo.ObjectID(message)]
|
? [new mongo.ObjectID(message)]
|
||||||
: [(message as INotification)._id];
|
: [(message as INotification)._id];
|
||||||
|
|
||||||
|
const mute = await Mute.find({
|
||||||
|
muterId: userId
|
||||||
|
});
|
||||||
|
const mutedUserIds = mute.map(m => m.muteeId);
|
||||||
|
|
||||||
// Update documents
|
// Update documents
|
||||||
await Notification.update({
|
await Notification.update({
|
||||||
_id: { $in: ids },
|
_id: { $in: ids },
|
||||||
@ -42,6 +48,9 @@ export default (
|
|||||||
const count = await Notification
|
const count = await Notification
|
||||||
.count({
|
.count({
|
||||||
notifieeId: userId,
|
notifieeId: userId,
|
||||||
|
notifierId: {
|
||||||
|
$nin: mutedUserIds
|
||||||
|
},
|
||||||
isRead: false
|
isRead: false
|
||||||
}, {
|
}, {
|
||||||
limit: 1
|
limit: 1
|
||||||
|
@ -96,8 +96,7 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Serialize
|
// Serialize
|
||||||
res(await Promise.all(notifications.map(async notification =>
|
res(await Promise.all(notifications.map(notification => pack(notification))));
|
||||||
await pack(notification))));
|
|
||||||
|
|
||||||
// Mark as read all
|
// Mark as read all
|
||||||
if (notifications.length > 0 && markAsRead) {
|
if (notifications.length > 0 && markAsRead) {
|
||||||
|
@ -47,6 +47,11 @@ module.exports = async (params, user, app) => new Promise(async (res, rej) => {
|
|||||||
if (isBotErr) return rej('invalid isBot param');
|
if (isBotErr) return rej('invalid isBot param');
|
||||||
if (isBot != null) user.isBot = isBot;
|
if (isBot != null) user.isBot = isBot;
|
||||||
|
|
||||||
|
// Get 'isCat' parameter
|
||||||
|
const [isCat, isCatErr] = $.bool.optional().get(params.isCat);
|
||||||
|
if (isCatErr) return rej('invalid isCat param');
|
||||||
|
if (isCat != null) user.isCat = isCat;
|
||||||
|
|
||||||
// Get 'autoWatch' parameter
|
// Get 'autoWatch' parameter
|
||||||
const [autoWatch, autoWatchErr] = $.bool.optional().get(params.autoWatch);
|
const [autoWatch, autoWatchErr] = $.bool.optional().get(params.autoWatch);
|
||||||
if (autoWatchErr) return rej('invalid autoWatch param');
|
if (autoWatchErr) return rej('invalid autoWatch param');
|
||||||
@ -82,6 +87,7 @@ module.exports = async (params, user, app) => new Promise(async (res, rej) => {
|
|||||||
bannerColor: user.bannerColor,
|
bannerColor: user.bannerColor,
|
||||||
profile: user.profile,
|
profile: user.profile,
|
||||||
isBot: user.isBot,
|
isBot: user.isBot,
|
||||||
|
isCat: user.isCat,
|
||||||
settings: user.settings
|
settings: user.settings
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -8,6 +8,10 @@ import Note, { pack } from '../../../models/note';
|
|||||||
* Get all notes
|
* Get all notes
|
||||||
*/
|
*/
|
||||||
module.exports = (params) => new Promise(async (res, rej) => {
|
module.exports = (params) => new Promise(async (res, rej) => {
|
||||||
|
// Get 'local' parameter
|
||||||
|
const [local, localErr] = $.bool.optional().get(params.local);
|
||||||
|
if (localErr) return rej('invalid local param');
|
||||||
|
|
||||||
// Get 'reply' parameter
|
// Get 'reply' parameter
|
||||||
const [reply, replyErr] = $.bool.optional().get(params.reply);
|
const [reply, replyErr] = $.bool.optional().get(params.reply);
|
||||||
if (replyErr) return rej('invalid reply param');
|
if (replyErr) return rej('invalid reply param');
|
||||||
@ -61,6 +65,10 @@ module.exports = (params) => new Promise(async (res, rej) => {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (local) {
|
||||||
|
query['_user.host'] = null;
|
||||||
|
}
|
||||||
|
|
||||||
if (reply != undefined) {
|
if (reply != undefined) {
|
||||||
query.replyId = reply ? { $exists: true, $ne: null } : null;
|
query.replyId = reply ? { $exists: true, $ne: null } : null;
|
||||||
}
|
}
|
||||||
|
@ -9,8 +9,7 @@ import Mute from '../../../../models/mute';
|
|||||||
*/
|
*/
|
||||||
module.exports = (params, user) => new Promise(async (res, rej) => {
|
module.exports = (params, user) => new Promise(async (res, rej) => {
|
||||||
const mute = await Mute.find({
|
const mute = await Mute.find({
|
||||||
muterId: user._id,
|
muterId: user._id
|
||||||
deletedAt: { $exists: false }
|
|
||||||
});
|
});
|
||||||
const mutedUserIds = mute.map(m => m.muteeId);
|
const mutedUserIds = mute.map(m => m.muteeId);
|
||||||
|
|
||||||
|
@ -49,8 +49,8 @@ const router = new Router();
|
|||||||
//#region static assets
|
//#region static assets
|
||||||
|
|
||||||
router.get('/assets/*', async ctx => {
|
router.get('/assets/*', async ctx => {
|
||||||
// 無圧縮スクリプトを用意するのは大変なので一時的に無効化
|
// 互換性のため
|
||||||
const path = process.env.NODE_ENV == 'production' ? ctx.path.replace('raw.js', 'min.js') : ctx.path.replace('min.js', 'raw.js');
|
const path = ctx.path.replace('.raw.js', '.js').replace('.min.js', '.js');
|
||||||
await send(ctx, path, {
|
await send(ctx, path, {
|
||||||
root: client,
|
root: client,
|
||||||
maxage: ms('7 days'),
|
maxage: ms('7 days'),
|
||||||
|
Reference in New Issue
Block a user