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": {
|
||||
"ENV": true,
|
||||
"VERSION": true,
|
||||
"API": true
|
||||
"API": true,
|
||||
"LANGS": true
|
||||
}
|
||||
}
|
||||
|
@ -4,6 +4,10 @@
|
||||
notifications:
|
||||
email: false
|
||||
|
||||
branches:
|
||||
except:
|
||||
- l10n_master
|
||||
|
||||
language: 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
|
||||
----------------------------------------------------------------
|
||||
1. Copy `example.yml` of `.config` directory
|
||||
2. Rename it to `default.yml`
|
||||
3. Edit it
|
||||
|
||||
---
|
||||
|
||||
Or you can generate config file via `npm run config` command.
|
||||
You need to generate config file via `npm run config` command.
|
||||
|
||||
*5.* Build Misskey
|
||||
----------------------------------------------------------------
|
||||
|
@ -43,18 +43,14 @@ web-push generate-vapid-keys
|
||||
|
||||
*4.* 設定ファイルを用意する
|
||||
----------------------------------------------------------------
|
||||
1. `.config`ディレクトリ内の`example.yml`をコピー
|
||||
2. `default.yml`にリネーム
|
||||
3. 編集する
|
||||
|
||||
---
|
||||
|
||||
または、`npm run config`コマンドを利用して、ガイドに従って情報を
|
||||
入力して設定ファイルを生成することもできます。
|
||||
`npm run config`コマンドを利用して、ガイドに従って情報を入力してください。
|
||||
|
||||
*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.* 以上です!
|
||||
----------------------------------------------------------------
|
||||
|
@ -165,15 +165,15 @@ common/views/widgets/photo-stream.vue:
|
||||
common/views/widgets/server.vue:
|
||||
title: "Serverinformationen"
|
||||
toggle: "Sicht umschalten"
|
||||
commons/views/widgets/visibility-chooser.vue:
|
||||
public: "Öffentlich"
|
||||
home: "Home"
|
||||
home-desc: "Nur an dieser Stelle sichtbar"
|
||||
followers: "Follower"
|
||||
followers-desc: "Nur für diejenigen sichtbar, die dir folgen"
|
||||
specified: "Direkt"
|
||||
specified-desc: "Nur für bestimmte Benutzer"
|
||||
private: "Privat"
|
||||
common/views/widgets/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Schwarz ... komplett"
|
||||
notes: "Blau ... Hinweise"
|
||||
@ -475,6 +475,8 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "Profil aktualisieren"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
hidden: "(この投稿は非公開です)"
|
||||
media: "つのメディア"
|
||||
@ -521,6 +523,12 @@ desktop/views/components/users-list-item.vue:
|
||||
desktop/views/components/window.vue:
|
||||
popout: "ポップアウト"
|
||||
close: "閉じる"
|
||||
desktop/views/pages/welcome.vue:
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@ -674,7 +682,6 @@ mobile/views/pages/notifications.vue:
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
will-be-published: "※公開されます"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
@ -682,7 +689,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
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-internet: "There is no Internet connection"
|
||||
no-internet-desc: "Please make sure you are connected to the Internet."
|
||||
no-server: "Unable to connect to the 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."
|
||||
success: "Successfully connected to Misskey's 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 the Misskey server. There is a possibility that the server is either down or under maintenance, please try again later."
|
||||
success: "Successfully connected to the Misskey server"
|
||||
success-desc: "It seems to be able to connect. Please reload the page."
|
||||
flush: "Clean cache"
|
||||
set-version: "Specify version"
|
||||
@ -121,7 +121,7 @@ common/views/components/signup.vue:
|
||||
unavailable: "Unavailable"
|
||||
error: "Network error"
|
||||
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."
|
||||
password: "Password"
|
||||
password-placeholder: "We recommend more than 8 characters."
|
||||
@ -165,14 +165,14 @@ common/views/widgets/photo-stream.vue:
|
||||
common/views/widgets/server.vue:
|
||||
title: "Server info"
|
||||
toggle: "Toggle views"
|
||||
commons/views/widgets/visibility-chooser.vue:
|
||||
common/views/widgets/visibility-chooser.vue:
|
||||
public: "Public"
|
||||
home: "Home"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
home-desc: "Post to the home timeline only"
|
||||
followers: "Followers"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
followers-desc: "Post to followers only"
|
||||
specified: "Direct"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
specified-desc: "Post to specified users only"
|
||||
private: "Private"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
@ -188,7 +188,7 @@ desktop/views/components/calendar.vue:
|
||||
next: "Next month"
|
||||
go: "Click to naviguate"
|
||||
desktop/views/components/choose-file-from-drive-window.vue:
|
||||
choose-file: "ファイル選択中"
|
||||
choose-file: "Choosing files"
|
||||
upload: "Upload files from your PC"
|
||||
cancel: "Cancel"
|
||||
ok: "OK"
|
||||
@ -264,7 +264,7 @@ desktop/views/components/following-window.vue:
|
||||
desktop/views/components/following.vue:
|
||||
empty: "You don’t follow anyone."
|
||||
desktop/views/components/friends-maker.vue:
|
||||
title: "気になるユーザーをフォロー:"
|
||||
title: "Recommended users:"
|
||||
empty: "Similar users weren’t found."
|
||||
fetching: "Loading…"
|
||||
refresh: "More"
|
||||
@ -417,8 +417,8 @@ desktop/views/components/settings.vue:
|
||||
update-checking: "Checking for updates"
|
||||
do-update: "Check for update"
|
||||
update-settings: "Advanced settings"
|
||||
prevent-update: "アップデートを延期する(非推奨)"
|
||||
prevent-update-desc: "この設定をオンにしてもアップデートが反映される場合があります。この設定はこのデバイスのみ有効です。"
|
||||
prevent-update: "Postpone updates (not recommended)"
|
||||
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-desc: "Your Misskey is up to date."
|
||||
update-available: "New version is available!"
|
||||
@ -475,6 +475,8 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "Description"
|
||||
birthday: "Birthday"
|
||||
save: "Update profile"
|
||||
is-bot: "This account is a Bot"
|
||||
is-cat: "This account is a Cat"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
hidden: "(this post is private)"
|
||||
media: " media"
|
||||
@ -521,6 +523,12 @@ desktop/views/components/users-list-item.vue:
|
||||
desktop/views/components/window.vue:
|
||||
popout: "Popout"
|
||||
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:
|
||||
title: "Misskey Drive"
|
||||
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?"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "Profile"
|
||||
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: "This account is a Bot"
|
||||
is-cat: "This account is a Cat"
|
||||
save: "Update profile"
|
||||
saved: "Profile updated successfully"
|
||||
uploading: "Uploading"
|
||||
|
@ -165,7 +165,7 @@ common/views/widgets/photo-stream.vue:
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
commons/views/widgets/visibility-chooser.vue:
|
||||
common/views/widgets/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
@ -475,6 +475,8 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "保存"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
hidden: "(この投稿は非公開です)"
|
||||
media: "つのメディア"
|
||||
@ -521,6 +523,12 @@ desktop/views/components/users-list-item.vue:
|
||||
desktop/views/components/window.vue:
|
||||
popout: "ポップアウト"
|
||||
close: "閉じる"
|
||||
desktop/views/pages/welcome.vue:
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@ -674,7 +682,6 @@ mobile/views/pages/notifications.vue:
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
will-be-published: "※公開されます"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
@ -682,7 +689,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
meta:
|
||||
lang: "日本語"
|
||||
lang: "Français"
|
||||
divider: " "
|
||||
common:
|
||||
misskey: "Partagez avec les autres en utilisant Misskey"
|
||||
@ -165,7 +165,7 @@ common/views/widgets/photo-stream.vue:
|
||||
common/views/widgets/server.vue:
|
||||
title: "Info sur le serveur"
|
||||
toggle: "Afficher les vues"
|
||||
commons/views/widgets/visibility-chooser.vue:
|
||||
common/views/widgets/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
@ -475,6 +475,8 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "Description"
|
||||
birthday: "Date de naissance"
|
||||
save: "Mettre à jour le profil"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
hidden: "(この投稿は非公開です)"
|
||||
media: "つのメディア"
|
||||
@ -521,6 +523,12 @@ desktop/views/components/users-list-item.vue:
|
||||
desktop/views/components/window.vue:
|
||||
popout: "ポップアウト"
|
||||
close: "閉じる"
|
||||
desktop/views/pages/welcome.vue:
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
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?"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
will-be-published: "※公開されます"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
@ -682,7 +689,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
|
@ -165,7 +165,7 @@ common/views/widgets/photo-stream.vue:
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
commons/views/widgets/visibility-chooser.vue:
|
||||
common/views/widgets/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
@ -475,6 +475,8 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "保存"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
hidden: "(この投稿は非公開です)"
|
||||
media: "つのメディア"
|
||||
@ -521,6 +523,12 @@ desktop/views/components/users-list-item.vue:
|
||||
desktop/views/components/window.vue:
|
||||
popout: "ポップアウト"
|
||||
close: "閉じる"
|
||||
desktop/views/pages/welcome.vue:
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@ -674,7 +682,6 @@ mobile/views/pages/notifications.vue:
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
will-be-published: "※公開されます"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
@ -682,7 +689,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
|
@ -191,7 +191,7 @@ common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
|
||||
commons/views/widgets/visibility-chooser.vue:
|
||||
common/views/widgets/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
@ -550,6 +550,8 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "保存"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
hidden: "(この投稿は非公開です)"
|
||||
@ -610,6 +612,13 @@ desktop/views/components/window.vue:
|
||||
popout: "ポップアウト"
|
||||
close: "閉じる"
|
||||
|
||||
desktop/views/pages/welcome.vue:
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
|
||||
@ -805,7 +814,6 @@ mobile/views/pages/notifications.vue:
|
||||
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
will-be-published: "※公開されます"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
@ -813,7 +821,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
|
@ -165,7 +165,7 @@ common/views/widgets/photo-stream.vue:
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
commons/views/widgets/visibility-chooser.vue:
|
||||
common/views/widgets/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
@ -475,6 +475,8 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "保存"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
hidden: "(この投稿は非公開です)"
|
||||
media: "つのメディア"
|
||||
@ -521,6 +523,12 @@ desktop/views/components/users-list-item.vue:
|
||||
desktop/views/components/window.vue:
|
||||
popout: "ポップアウト"
|
||||
close: "閉じる"
|
||||
desktop/views/pages/welcome.vue:
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@ -674,7 +682,6 @@ mobile/views/pages/notifications.vue:
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
will-be-published: "※公開されます"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
@ -682,7 +689,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
meta:
|
||||
lang: "japoński"
|
||||
lang: "język polski"
|
||||
divider: " "
|
||||
common:
|
||||
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:
|
||||
title: "Informacje o serwerze"
|
||||
toggle: "Przełącz widok"
|
||||
commons/views/widgets/visibility-chooser.vue:
|
||||
common/views/widgets/visibility-chooser.vue:
|
||||
public: "Publiczny"
|
||||
home: "Lokalny"
|
||||
home-desc: "Widoczny tylko na tej instancji"
|
||||
@ -475,6 +475,8 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "Opis"
|
||||
birthday: "Data urodzenia"
|
||||
save: "Aktualizuj profil"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
hidden: "(この投稿は非公開です)"
|
||||
media: "つのメディア"
|
||||
@ -521,12 +523,18 @@ desktop/views/components/users-list-item.vue:
|
||||
desktop/views/components/window.vue:
|
||||
popout: "ポップアウト"
|
||||
close: "閉じる"
|
||||
desktop/views/pages/welcome.vue:
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
title: "Dysk Misskey"
|
||||
desktop/views/pages/favorites.vue:
|
||||
more: "さらに読み込む"
|
||||
more: "Załaduj więcej"
|
||||
desktop/views/pages/home-customize.vue:
|
||||
title: "ホームのカスタマイズ"
|
||||
title: "Dostosuj stronę główną"
|
||||
desktop/views/pages/note.vue:
|
||||
prev: "Poprzedni wpis"
|
||||
next: "Następny wpis"
|
||||
@ -536,9 +544,9 @@ desktop/views/pages/selectdrive.vue:
|
||||
cancel: "Anuluj"
|
||||
upload: "Wyślij pliki z Twojego komputera"
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "ユーザー"
|
||||
add-user: "ユーザーを追加"
|
||||
username: "ユーザー名"
|
||||
users: "Użytkownicy"
|
||||
add-user: "Dodaj użytkownika"
|
||||
username: "Nazwa użytkownika"
|
||||
desktop/views/pages/user/user.followers-you-know.vue:
|
||||
title: "Śledzący których znasz"
|
||||
loading: "Ładowanie"
|
||||
@ -566,10 +574,10 @@ desktop/views/pages/user/user.profile.vue:
|
||||
muted: "Wyciszyłeś"
|
||||
unmute: "Cofnij wyciszenie"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "投稿"
|
||||
with-replies: "投稿と返信"
|
||||
with-media: "メディア"
|
||||
empty: "このユーザーはまだ何も投稿していないようです。"
|
||||
default: "Wpisy"
|
||||
with-replies: "Wpisy i odpowiedzi"
|
||||
with-media: "Zawartość multimedialna"
|
||||
empty: "Ten użytkownik nie umieścił jeszcze niczego."
|
||||
desktop/views/widgets/messaging.vue:
|
||||
title: "Wiadomości"
|
||||
desktop/views/widgets/notifications.vue:
|
||||
@ -584,8 +592,8 @@ desktop/views/widgets/post-form.vue:
|
||||
note: "Wpis"
|
||||
placeholder: "Co się dzieje?"
|
||||
desktop/views/widgets/profile.vue:
|
||||
update-banner: "クリックでバナー編集"
|
||||
update-avatar: "クリックでアバター編集"
|
||||
update-banner: "Naciśnij, aby zmienić baner"
|
||||
update-avatar: "Naciśnij, aby zmienić awatar"
|
||||
desktop/views/widgets/trends.vue:
|
||||
title: "Na czasie"
|
||||
refresh: "Pokaż inne"
|
||||
@ -666,27 +674,26 @@ mobile/views/pages/messaging.vue:
|
||||
mobile/views/pages/messaging-room.vue:
|
||||
messaging: "Wiadomości"
|
||||
mobile/views/pages/note.vue:
|
||||
title: "Wyślij"
|
||||
title: "Wpis"
|
||||
prev: "Poprzedni wpis"
|
||||
next: "Następny wpis"
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "Powiadomienia"
|
||||
read-all: "Czy na pewno chcesz oznaczyć wszystkie powiadomienia jako przeczytane?"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
will-be-published: "※公開されます"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-bot: "このアカウントはBotです"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
title: "Profil"
|
||||
name: "Nazwa"
|
||||
account: "Konto"
|
||||
location: "Lokalizacja"
|
||||
description: "Opis"
|
||||
birthday: "Data urodzenia"
|
||||
avatar: "Awatar"
|
||||
banner: "Baner"
|
||||
is-cat: "このアカウントはCatです"
|
||||
save: "Aktualizuj profil"
|
||||
saved: "Pomyślnie zaktualizowano profil"
|
||||
uploading: "Wysyłanie"
|
||||
upload-failed: "Wysyłanie nie powiodło się"
|
||||
mobile/views/pages/search.vue:
|
||||
search: "Szukaj"
|
||||
empty: "Nie znaleziono wpisów zawierających '{}'"
|
||||
@ -707,8 +714,8 @@ mobile/views/pages/settings.vue:
|
||||
show-reply-target: "Pokazuj cel odpowiedzi"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
||||
post-style: "投稿の表示スタイル"
|
||||
post-style-standard: "標準"
|
||||
post-style: "Styl wpisów"
|
||||
post-style-standard: "Standardowy"
|
||||
post-style-smart: "スマート"
|
||||
behavior: "Zachowanie"
|
||||
fetch-on-scroll: "Automatycznie ładuj po przeciągnięciu w dół"
|
||||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
meta:
|
||||
lang: "日本語"
|
||||
lang: "Русский язык"
|
||||
divider: " "
|
||||
common:
|
||||
misskey: "Misskeyで皆と共有しよう。"
|
||||
@ -165,7 +165,7 @@ common/views/widgets/photo-stream.vue:
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
commons/views/widgets/visibility-chooser.vue:
|
||||
common/views/widgets/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
@ -475,6 +475,8 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "保存"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
hidden: "(この投稿は非公開です)"
|
||||
media: "つのメディア"
|
||||
@ -521,6 +523,12 @@ desktop/views/components/users-list-item.vue:
|
||||
desktop/views/components/window.vue:
|
||||
popout: "ポップアウト"
|
||||
close: "閉じる"
|
||||
desktop/views/pages/welcome.vue:
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@ -674,7 +682,6 @@ mobile/views/pages/notifications.vue:
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
will-be-published: "※公開されます"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
@ -682,7 +689,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
meta:
|
||||
lang: "日本語"
|
||||
lang: "中文(简体)"
|
||||
divider: ""
|
||||
common:
|
||||
misskey: "Misskeyで皆と共有しよう。"
|
||||
@ -165,7 +165,7 @@ common/views/widgets/photo-stream.vue:
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
commons/views/widgets/visibility-chooser.vue:
|
||||
common/views/widgets/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
@ -475,6 +475,8 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "保存"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
hidden: "(この投稿は非公開です)"
|
||||
media: "つのメディア"
|
||||
@ -521,6 +523,12 @@ desktop/views/components/users-list-item.vue:
|
||||
desktop/views/components/window.vue:
|
||||
popout: "ポップアウト"
|
||||
close: "閉じる"
|
||||
desktop/views/pages/welcome.vue:
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@ -674,7 +682,6 @@ mobile/views/pages/notifications.vue:
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
will-be-published: "※公開されます"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
@ -682,7 +689,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
|
@ -1,8 +1,8 @@
|
||||
{
|
||||
"name": "misskey",
|
||||
"author": "syuilo <i@syuilo.com>",
|
||||
"version": "2.13.0",
|
||||
"clientVersion": "1.0.5576",
|
||||
"version": "2.16.8",
|
||||
"clientVersion": "1.0.5694",
|
||||
"codename": "nighthike",
|
||||
"main": "./built/index.js",
|
||||
"private": true,
|
||||
|
@ -18,6 +18,14 @@
|
||||
return;
|
||||
}
|
||||
|
||||
//#region Load settings
|
||||
let settings = null;
|
||||
const vuex = localStorage.getItem('vuex');
|
||||
if (vuex) {
|
||||
settings = JSON.parse(vuex);
|
||||
}
|
||||
//#endregion
|
||||
|
||||
// Get the current url information
|
||||
const url = new URL(location.href);
|
||||
|
||||
@ -35,14 +43,9 @@
|
||||
// The default language is English
|
||||
if (!LANGS.includes(lang)) lang = 'en';
|
||||
|
||||
const vuex = localStorage.getItem('vuex');
|
||||
if (vuex) {
|
||||
const data = JSON.parse(vuex);
|
||||
if (data.device.lang) lang = data.device.lang;
|
||||
if (settings) {
|
||||
if (settings.device.lang) lang = settings.device.lang;
|
||||
}
|
||||
|
||||
const storedLang = localStorage.getItem('lang');
|
||||
if (storedLang) lang = storedLang;
|
||||
//#endregion
|
||||
|
||||
// Detect the user agent
|
||||
@ -71,9 +74,11 @@
|
||||
}
|
||||
|
||||
// Dark/Light
|
||||
if (localStorage.getItem('darkmode') == 'true') {
|
||||
if (settings) {
|
||||
if (settings.device.darkmode) {
|
||||
document.documentElement.setAttribute('data-darkmode', 'true');
|
||||
}
|
||||
}
|
||||
|
||||
// Script version
|
||||
const ver = localStorage.getItem('v') || VERSION;
|
||||
|
@ -26,7 +26,11 @@ export default Vue.extend({
|
||||
},
|
||||
style(): any {
|
||||
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)`,
|
||||
borderRadius: (this as any).clientSettings.circleIcons ? '100%' : null
|
||||
};
|
||||
|
@ -28,7 +28,7 @@ export default Vue.extend({
|
||||
},
|
||||
mounted() {
|
||||
document.title = 'Oops!';
|
||||
document.documentElement.style.background = '#f8f8f8';
|
||||
document.documentElement.style.setProperty('background', '#f8f8f8', 'important');
|
||||
},
|
||||
methods: {
|
||||
reload() {
|
||||
|
@ -197,7 +197,7 @@ export default Vue.extend({
|
||||
<style lang="stylus" scoped>
|
||||
@import '~const.styl'
|
||||
|
||||
.mk-messaging-form
|
||||
root(isDark)
|
||||
> textarea
|
||||
cursor auto
|
||||
display block
|
||||
@ -209,10 +209,10 @@ export default Vue.extend({
|
||||
padding 8px
|
||||
resize none
|
||||
font-size 1em
|
||||
color #000
|
||||
color isDark ? #fff : #000
|
||||
outline none
|
||||
border none
|
||||
border-top solid 1px #eee
|
||||
border-top solid 1px isDark ? #4b5056 : #eee
|
||||
border-radius 0
|
||||
box-shadow none
|
||||
background transparent
|
||||
@ -302,4 +302,10 @@ export default Vue.extend({
|
||||
input[type=file]
|
||||
display none
|
||||
|
||||
.mk-messaging-form[data-darkmode]
|
||||
root(true)
|
||||
|
||||
.mk-messaging-form:not([data-darkmode])
|
||||
root(false)
|
||||
|
||||
</style>
|
||||
|
@ -59,8 +59,10 @@ export default Vue.extend({
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
.message
|
||||
$me-balloon-color = #23A7B6
|
||||
@import '~const.styl'
|
||||
|
||||
root(isDark)
|
||||
$me-balloon-color = $theme-color
|
||||
|
||||
padding 10px 12px 10px 12px
|
||||
background-color transparent
|
||||
@ -126,7 +128,7 @@ export default Vue.extend({
|
||||
bottom -4px
|
||||
left -12px
|
||||
margin 0
|
||||
color rgba(#000, 0.5)
|
||||
color isDark ? rgba(#fff, 0.5) : rgba(#000, 0.5)
|
||||
font-size 11px
|
||||
|
||||
> .content
|
||||
@ -187,7 +189,7 @@ export default Vue.extend({
|
||||
display block
|
||||
margin 2px 0 0 0
|
||||
font-size 10px
|
||||
color rgba(#000, 0.4)
|
||||
color isDark ? rgba(#fff, 0.4) : rgba(#000, 0.4)
|
||||
|
||||
> [data-fa]
|
||||
margin-left 4px
|
||||
@ -200,8 +202,9 @@ export default Vue.extend({
|
||||
padding-left 66px
|
||||
|
||||
> .balloon
|
||||
$color = isDark ? #2d3338 : #eee
|
||||
float left
|
||||
background #eee
|
||||
background $color
|
||||
|
||||
&[data-no-text]
|
||||
background transparent
|
||||
@ -209,10 +212,15 @@ export default Vue.extend({
|
||||
&:not([data-no-text]):before
|
||||
left -14px
|
||||
border-top solid 8px transparent
|
||||
border-right solid 8px #eee
|
||||
border-right solid 8px $color
|
||||
border-bottom solid 8px transparent
|
||||
border-left solid 8px transparent
|
||||
|
||||
> .content
|
||||
> .text
|
||||
if isDark
|
||||
color #fff
|
||||
|
||||
> footer
|
||||
text-align left
|
||||
|
||||
@ -241,7 +249,7 @@ export default Vue.extend({
|
||||
> .content
|
||||
|
||||
> p.is-deleted
|
||||
color rgba(255, 255, 255, 0.5)
|
||||
color rgba(#fff, 0.5)
|
||||
|
||||
> .text >>>
|
||||
&, *
|
||||
@ -254,4 +262,10 @@ export default Vue.extend({
|
||||
> .baloon
|
||||
opacity 0.5
|
||||
|
||||
.message[data-darkmode]
|
||||
root(true)
|
||||
|
||||
.message:not([data-darkmode])
|
||||
root(false)
|
||||
|
||||
</style>
|
||||
|
@ -18,7 +18,11 @@
|
||||
</template>
|
||||
</div>
|
||||
<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"/>
|
||||
</footer>
|
||||
</div>
|
||||
@ -45,7 +49,9 @@ export default Vue.extend({
|
||||
fetchingMoreMessages: false,
|
||||
messages: [],
|
||||
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) {
|
||||
// Notify
|
||||
this.notify('%i18n:@new-message%');
|
||||
this.notifyNewMessage();
|
||||
}
|
||||
},
|
||||
|
||||
@ -205,18 +211,18 @@ export default Vue.extend({
|
||||
}
|
||||
},
|
||||
|
||||
notify(message) {
|
||||
const n = document.createElement('p') as any;
|
||||
n.innerHTML = '%fa:arrow-circle-down%' + message;
|
||||
n.onclick = () => {
|
||||
onIndicatorClick() {
|
||||
this.showIndicator = false;
|
||||
this.scrollToBottom();
|
||||
n.parentNode.removeChild(n);
|
||||
};
|
||||
(this.$refs.notifications as any).appendChild(n);
|
||||
},
|
||||
|
||||
setTimeout(() => {
|
||||
n.style.opacity = 0;
|
||||
setTimeout(() => n.parentNode.removeChild(n), 1000);
|
||||
notifyNewMessage() {
|
||||
this.showIndicator = true;
|
||||
|
||||
if (this.timer) clearTimeout(this.timer);
|
||||
|
||||
this.timer = setTimeout(() => {
|
||||
this.showIndicator = false;
|
||||
}, 4000);
|
||||
},
|
||||
|
||||
@ -238,11 +244,12 @@ export default Vue.extend({
|
||||
<style lang="stylus" scoped>
|
||||
@import '~const.styl'
|
||||
|
||||
.mk-messaging-room
|
||||
root(isDark)
|
||||
display flex
|
||||
flex 1
|
||||
flex-direction column
|
||||
height 100%
|
||||
background isDark ? #191b22 : #fff
|
||||
|
||||
> .stream
|
||||
width 100%
|
||||
@ -267,7 +274,7 @@ export default Vue.extend({
|
||||
padding 16px 8px 8px 8px
|
||||
text-align center
|
||||
font-size 0.8em
|
||||
color rgba(#000, 0.4)
|
||||
color rgba(isDark ? #fff : #000, 0.4)
|
||||
|
||||
[data-fa]
|
||||
margin-right 4px
|
||||
@ -278,7 +285,7 @@ export default Vue.extend({
|
||||
padding 16px
|
||||
text-align center
|
||||
font-size 0.8em
|
||||
color rgba(#000, 0.4)
|
||||
color rgba(isDark ? #fff : #000, 0.4)
|
||||
|
||||
[data-fa]
|
||||
margin-right 4px
|
||||
@ -322,7 +329,7 @@ export default Vue.extend({
|
||||
left 0
|
||||
right 0
|
||||
margin 0 auto
|
||||
background rgba(#000, 0.1)
|
||||
background rgba(isDark ? #fff : #000, 0.1)
|
||||
|
||||
> span
|
||||
display inline-block
|
||||
@ -330,8 +337,8 @@ export default Vue.extend({
|
||||
padding 0 16px
|
||||
//font-weight bold
|
||||
line-height 32px
|
||||
color rgba(#000, 0.3)
|
||||
background #fff
|
||||
color rgba(isDark ? #fff : #000, 0.3)
|
||||
background isDark ? #191b22 : #fff
|
||||
|
||||
> footer
|
||||
position -webkit-sticky
|
||||
@ -342,30 +349,32 @@ export default Vue.extend({
|
||||
max-width 600px
|
||||
margin 0 auto
|
||||
padding 0
|
||||
background rgba(255, 255, 255, 0.95)
|
||||
background rgba(isDark ? #282c37 : #fff, 0.95)
|
||||
background-clip content-box
|
||||
|
||||
> .notifications
|
||||
> .new-message
|
||||
position absolute
|
||||
top -48px
|
||||
width 100%
|
||||
padding 8px 0
|
||||
text-align center
|
||||
|
||||
&:empty
|
||||
display none
|
||||
|
||||
> p
|
||||
> button
|
||||
display inline-block
|
||||
margin 0
|
||||
padding 0 12px 0 28px
|
||||
padding 0 12px 0 30px
|
||||
cursor pointer
|
||||
line-height 32px
|
||||
font-size 12px
|
||||
color $theme-color-foreground
|
||||
background $theme-color
|
||||
border-radius 16px
|
||||
transition opacity 1s ease
|
||||
|
||||
&:hover
|
||||
background lighten($theme-color, 10%)
|
||||
|
||||
&:active
|
||||
background darken($theme-color, 10%)
|
||||
|
||||
> [data-fa]
|
||||
position absolute
|
||||
@ -374,4 +383,17 @@ export default Vue.extend({
|
||||
line-height 32px
|
||||
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>
|
||||
|
@ -37,6 +37,7 @@ export default Vue.extend({
|
||||
fetch(cb?) {
|
||||
this.fetching = true;
|
||||
(this as any).api('notes', {
|
||||
local: true,
|
||||
reply: false,
|
||||
renote: false,
|
||||
media: false,
|
||||
@ -52,15 +53,15 @@ export default Vue.extend({
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
.mk-welcome-timeline
|
||||
background #fff
|
||||
root(isDark)
|
||||
background isDark ? #282C37 : #fff
|
||||
|
||||
> div
|
||||
padding 16px
|
||||
overflow-wrap break-word
|
||||
font-size .9em
|
||||
color #4C4C4C
|
||||
border-bottom 1px solid rgba(#000, 0.05)
|
||||
color isDark ? #fff : #4C4C4C
|
||||
border-bottom 1px solid isDark ? rgba(#000, 0.1) : rgba(#000, 0.05)
|
||||
|
||||
&:after
|
||||
content ""
|
||||
@ -95,17 +96,23 @@ export default Vue.extend({
|
||||
overflow hidden
|
||||
font-weight bold
|
||||
text-overflow ellipsis
|
||||
color #627079
|
||||
color isDark ? #fff : #627079
|
||||
|
||||
> .username
|
||||
margin 0 .5em 0 0
|
||||
color #ccc
|
||||
color isDark ? #606984 : #ccc
|
||||
|
||||
> .info
|
||||
margin-left auto
|
||||
font-size 0.9em
|
||||
|
||||
> .created-at
|
||||
color #c0c0c0
|
||||
color isDark ? #606984 : #c0c0c0
|
||||
|
||||
.mk-welcome-timeline[data-darkmode]
|
||||
root(true)
|
||||
|
||||
.mk-welcome-timeline:not([data-darkmode])
|
||||
root(false)
|
||||
|
||||
</style>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<mk-window width="400px" height="550px" @closed="$destroy">
|
||||
<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>
|
||||
<mk-followers :user="user"/>
|
||||
</mk-window>
|
||||
@ -11,7 +11,12 @@
|
||||
import Vue from 'vue';
|
||||
|
||||
export default Vue.extend({
|
||||
props: ['user']
|
||||
props: ['user'],
|
||||
computed: {
|
||||
name(): string {
|
||||
return Vue.filter('userName')(this.user);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<mk-window width="400px" height="550px" @closed="$destroy">
|
||||
<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>
|
||||
<mk-following :user="user"/>
|
||||
</mk-window>
|
||||
@ -11,7 +11,12 @@
|
||||
import Vue from 'vue';
|
||||
|
||||
export default Vue.extend({
|
||||
props: ['user']
|
||||
props: ['user'],
|
||||
computed: {
|
||||
name(): string {
|
||||
return Vue.filter('userName')(this.user);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
|
@ -4,6 +4,9 @@
|
||||
<div class="main">
|
||||
<header>
|
||||
<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>
|
||||
<div class="info">
|
||||
<span class="mobile" v-if="note.viaMobile">%fa:mobile-alt%</span>
|
||||
@ -68,7 +71,6 @@ root(isDark)
|
||||
align-items baseline
|
||||
margin-bottom 2px
|
||||
white-space nowrap
|
||||
line-height 21px
|
||||
|
||||
> .name
|
||||
display block
|
||||
@ -84,6 +86,20 @@ root(isDark)
|
||||
&:hover
|
||||
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
|
||||
margin 0 .5em 0 0
|
||||
color isDark ? #606984 : #d1d8da
|
||||
|
@ -16,7 +16,9 @@
|
||||
<div class="main">
|
||||
<header>
|
||||
<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>
|
||||
<div class="info">
|
||||
<span class="app" v-if="p.app">via <b>{{ p.app.name }}</b></span>
|
||||
@ -430,7 +432,9 @@ root(isDark)
|
||||
&:hover
|
||||
text-decoration underline
|
||||
|
||||
> .is-admin
|
||||
> .is-bot
|
||||
> .is-cat
|
||||
margin 0 .5em 0 0
|
||||
padding 1px 6px
|
||||
font-size 12px
|
||||
@ -438,6 +442,10 @@ root(isDark)
|
||||
border solid 1px isDark ? #57616f : #ddd
|
||||
border-radius 3px
|
||||
|
||||
&.is-admin
|
||||
border-color isDark ? #d42c41 : #f56a7b
|
||||
color isDark ? #d42c41 : #f56a7b
|
||||
|
||||
> .username
|
||||
margin 0 .5em 0 0
|
||||
overflow hidden
|
||||
|
@ -24,7 +24,8 @@
|
||||
<button class="ui primary" @click="save">%i18n:@save%</button>
|
||||
<section>
|
||||
<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>
|
||||
</div>
|
||||
</template>
|
||||
@ -65,6 +66,11 @@ export default Vue.extend({
|
||||
(this as any).api('i/update', {
|
||||
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,
|
||||
langs,
|
||||
latestVersion: undefined,
|
||||
checkingForUpdate: false,
|
||||
darkmode: localStorage.getItem('darkmode') == 'true'
|
||||
checkingForUpdate: false
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -246,6 +245,11 @@ export default Vue.extend({
|
||||
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: {
|
||||
get() { return this.$store.state.device.enableSounds; },
|
||||
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 }); }
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
darkmode() {
|
||||
(this as any)._updateDarkmode_(this.darkmode);
|
||||
}
|
||||
},
|
||||
created() {
|
||||
(this as any).os.getMeta().then(meta => {
|
||||
this.meta = meta;
|
||||
|
@ -35,7 +35,7 @@
|
||||
</ul>
|
||||
<ul>
|
||||
<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>
|
||||
</ul>
|
||||
</div>
|
||||
@ -99,7 +99,10 @@ export default Vue.extend({
|
||||
(this as any).os.signout();
|
||||
},
|
||||
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">
|
||||
<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>
|
||||
<a v-for="list in lists" :key="list.id" @click="choice(list)">{{ list.title }}</a>
|
||||
</div>
|
||||
|
@ -95,7 +95,7 @@ export default Vue.extend({
|
||||
},
|
||||
|
||||
created() {
|
||||
if (this.$store.state.device.autoPopout && this.popoutUrl) {
|
||||
if ((this as any).os.store.state.device.autoPopout && this.popoutUrl) {
|
||||
this.popout();
|
||||
this.preventMount = true;
|
||||
} else {
|
||||
|
@ -21,10 +21,21 @@ export default Vue.extend({
|
||||
$route: 'fetch'
|
||||
},
|
||||
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();
|
||||
},
|
||||
mounted() {
|
||||
document.documentElement.style.background = '#fff';
|
||||
beforeDestroy() {
|
||||
document.documentElement.style.removeProperty('background');
|
||||
document.documentElement.style.removeProperty('background-color'); // for safari's bug
|
||||
this.unwatchDarkmode();
|
||||
},
|
||||
methods: {
|
||||
fetch() {
|
||||
@ -50,6 +61,5 @@ export default Vue.extend({
|
||||
flex 1
|
||||
flex-direction column
|
||||
min-height 100%
|
||||
background #fff
|
||||
|
||||
</style>
|
||||
|
@ -1,24 +1,17 @@
|
||||
<template>
|
||||
<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>
|
||||
<div class="top">
|
||||
<div>
|
||||
<div>
|
||||
<h1>Share<br><span ref="share">Everything!</span><span class="cursor">_</span></h1>
|
||||
<p>ようこそ! <b>Misskey</b>はTwitter風ミニブログSNSです。思ったことや皆と共有したいことを投稿しましょう。タイムラインを見れば、皆の関心事をすぐにチェックすることもできます。<a :href="aboutUrl">詳しく...</a></p>
|
||||
<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>
|
||||
<img :src="$store.state.device.darkmode ? 'assets/title-dark.svg' : 'assets/title.svg'" alt="Misskey">
|
||||
<p><button class="signup" @click="signup">%i18n:@signup-button%</button><button class="signin" @click="signin">%i18n:@signin-button%</button></p>
|
||||
|
||||
<div class="tl">
|
||||
<header>%fa:comments R% %i18n:@timeline%<div><span></span><span></span><span></span></div></header>
|
||||
<mk-welcome-timeline/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<mk-forkit/>
|
||||
<footer>
|
||||
@ -28,11 +21,11 @@
|
||||
</div>
|
||||
</footer>
|
||||
<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"/>
|
||||
</modal>
|
||||
<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"/>
|
||||
</modal>
|
||||
</div>
|
||||
@ -42,64 +35,21 @@
|
||||
import Vue from 'vue';
|
||||
import { docsUrl, copyright, lang } from '../../../config';
|
||||
|
||||
const shares = [
|
||||
'Everything!',
|
||||
'Webpages',
|
||||
'Photos',
|
||||
'Interests',
|
||||
'Favorites'
|
||||
];
|
||||
|
||||
export default Vue.extend({
|
||||
data() {
|
||||
return {
|
||||
aboutUrl: `${docsUrl}/${lang}/about`,
|
||||
copyright,
|
||||
users: [],
|
||||
clock: null,
|
||||
i: 0
|
||||
copyright
|
||||
};
|
||||
},
|
||||
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: {
|
||||
signup() {
|
||||
this.$modal.show('signup');
|
||||
},
|
||||
signin() {
|
||||
this.$modal.show('signin');
|
||||
},
|
||||
dark() {
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -115,73 +65,31 @@ export default Vue.extend({
|
||||
<style lang="stylus" scoped>
|
||||
@import '~const.styl'
|
||||
|
||||
@import url('https://fonts.googleapis.com/css?family=Sarpanch:700')
|
||||
|
||||
.mk-welcome
|
||||
root(isDark)
|
||||
display flex
|
||||
flex-direction column
|
||||
flex 1
|
||||
$width = 1000px
|
||||
|
||||
background linear-gradient(to bottom, #1e1d65, #bd6659)
|
||||
//background-image url('/assets/welcome-bg.svg')
|
||||
background-size cover
|
||||
background-position top center
|
||||
|
||||
&:before
|
||||
content ""
|
||||
display block
|
||||
position fixed
|
||||
bottom 0
|
||||
> button
|
||||
position absolute
|
||||
z-index 1
|
||||
top 0
|
||||
left 0
|
||||
width 100%
|
||||
height 100%
|
||||
background-image url('/assets/welcome-fg.svg')
|
||||
background-size cover
|
||||
background-position bottom center
|
||||
padding 16px
|
||||
font-size 18px
|
||||
color isDark ? #fff : #555
|
||||
|
||||
> main
|
||||
display flex
|
||||
flex 1
|
||||
padding 64px 0 0 0
|
||||
text-align center
|
||||
color isDark ? #9aa4b3 : #555
|
||||
|
||||
> .top
|
||||
display flex
|
||||
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
|
||||
> img
|
||||
width 350px
|
||||
|
||||
> p
|
||||
margin 1em 0
|
||||
margin 8px 0
|
||||
line-height 2em
|
||||
|
||||
button
|
||||
@ -207,31 +115,21 @@ export default Vue.extend({
|
||||
|
||||
.signin
|
||||
&:hover
|
||||
color #fff
|
||||
color isDark ? #fff : #000
|
||||
|
||||
> .users
|
||||
margin 16px 0 0 0
|
||||
|
||||
> *
|
||||
display inline-block
|
||||
margin 4px
|
||||
width 38px
|
||||
height 38px
|
||||
border-radius 6px
|
||||
|
||||
> div:last-child
|
||||
|
||||
> div
|
||||
> .tl
|
||||
margin 32px auto 0 auto
|
||||
width 410px
|
||||
background #fff
|
||||
text-align left
|
||||
background isDark ? #313543 : #fff
|
||||
border-radius 8px
|
||||
box-shadow 0 0 0 12px rgba(#000, 0.1)
|
||||
box-shadow 0 8px 32px rgba(#000, 0.15)
|
||||
overflow hidden
|
||||
|
||||
> header
|
||||
z-index 1
|
||||
padding 12px 16px
|
||||
color #888d94
|
||||
color isDark ? #e3e5e8 : #888d94
|
||||
box-shadow 0 1px 0px rgba(#000, 0.1)
|
||||
|
||||
> div
|
||||
@ -245,7 +143,6 @@ export default Vue.extend({
|
||||
height 11px
|
||||
width 11px
|
||||
margin-left 6px
|
||||
background #ccc
|
||||
border-radius 100%
|
||||
vertical-align middle
|
||||
|
||||
@ -264,12 +161,11 @@ export default Vue.extend({
|
||||
|
||||
> footer
|
||||
font-size 12px
|
||||
color #949ea5
|
||||
color isDark ? #949ea5 : #737c82
|
||||
|
||||
> div
|
||||
max-width $width
|
||||
margin 0 auto
|
||||
padding 0 0 42px 0
|
||||
padding 64px
|
||||
text-align center
|
||||
|
||||
> .c
|
||||
@ -277,6 +173,12 @@ export default Vue.extend({
|
||||
font-size 10px
|
||||
opacity 0.7
|
||||
|
||||
.mk-welcome[data-darkmode]
|
||||
root(true)
|
||||
|
||||
.mk-welcome:not([data-darkmode])
|
||||
root(false)
|
||||
|
||||
</style>
|
||||
|
||||
<style lang="stylus" module>
|
||||
|
@ -4,7 +4,7 @@
|
||||
<template slot="header">%fa:chart-pie%%i18n:@title%</template>
|
||||
<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">
|
||||
<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>
|
||||
|
@ -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!
|
||||
*/
|
||||
@ -141,6 +99,43 @@ export default (callback: (launch: (router: VueRouter, api?: (os: MiOS) => API)
|
||||
const launch = (router: VueRouter, api?: (os: MiOS) => API) => {
|
||||
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({
|
||||
data() {
|
||||
return {
|
||||
|
@ -70,7 +70,7 @@ init((launch) => {
|
||||
routes: [
|
||||
{ path: '/', name: 'index', component: MkIndex },
|
||||
{ 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/widgets', name: 'widgets', component: MkWidgets },
|
||||
{ path: '/i/messaging', name: 'messaging', component: MkMessaging },
|
||||
|
@ -1,9 +1,13 @@
|
||||
<template>
|
||||
<div class="sub">
|
||||
<mk-avatar class="avatar" :user="note.user"/>
|
||||
<div class="sub" :class="{ smart: $store.state.device.postStyle == 'smart' }">
|
||||
<mk-avatar class="avatar" :user="note.user" v-if="$store.state.device.postStyle != 'smart'"/>
|
||||
<div class="main">
|
||||
<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>
|
||||
<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>
|
||||
<div class="info">
|
||||
<span class="mobile" v-if="note.viaMobile">%fa:mobile-alt%</span>
|
||||
@ -42,6 +46,13 @@ root(isDark)
|
||||
@media (min-width 600px)
|
||||
padding 24px 32px
|
||||
|
||||
&.smart
|
||||
> .main
|
||||
width 100%
|
||||
|
||||
> header
|
||||
align-items center
|
||||
|
||||
&:after
|
||||
content ""
|
||||
display block
|
||||
@ -73,6 +84,13 @@ root(isDark)
|
||||
margin-bottom 2px
|
||||
white-space nowrap
|
||||
|
||||
> .avatar
|
||||
flex-shrink 0
|
||||
margin-right 8px
|
||||
width 18px
|
||||
height 18px
|
||||
border-radius 100%
|
||||
|
||||
> .name
|
||||
display block
|
||||
margin 0 0.5em 0 0
|
||||
@ -88,6 +106,20 @@ root(isDark)
|
||||
&:hover
|
||||
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
|
||||
text-align left
|
||||
margin 0
|
||||
|
@ -17,7 +17,9 @@
|
||||
<header>
|
||||
<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>
|
||||
<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>
|
||||
<div class="info">
|
||||
<span class="mobile" v-if="p.viaMobile">%fa:mobile-alt%</span>
|
||||
@ -288,6 +290,7 @@ root(isDark)
|
||||
padding 16px 32px
|
||||
|
||||
.avatar
|
||||
flex-shrink 0
|
||||
display inline-block
|
||||
width 20px
|
||||
height 20px
|
||||
@ -367,6 +370,7 @@ root(isDark)
|
||||
margin-bottom 2px
|
||||
|
||||
> .avatar
|
||||
flex-shrink 0
|
||||
margin-right 8px
|
||||
width 20px
|
||||
height 20px
|
||||
@ -385,7 +389,9 @@ root(isDark)
|
||||
&:hover
|
||||
text-decoration underline
|
||||
|
||||
> .is-admin
|
||||
> .is-bot
|
||||
> .is-cat
|
||||
margin 0 0.5em 0 0
|
||||
padding 1px 6px
|
||||
font-size 12px
|
||||
@ -393,6 +399,10 @@ root(isDark)
|
||||
border solid 1px isDark ? #57616f : #ddd
|
||||
border-radius 3px
|
||||
|
||||
&.is-admin
|
||||
border-color isDark ? #d42c41 : #f56a7b
|
||||
color isDark ? #d42c41 : #f56a7b
|
||||
|
||||
> .username
|
||||
margin 0 0.5em 0 0
|
||||
overflow hidden
|
||||
|
@ -28,8 +28,8 @@
|
||||
<li><a @click="search">%fa:search%%i18n:@search%%fa:angle-right%</a></li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li><router-link to="/i/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><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="$store.state.device.darkmode">%fa:moon%</template><template v-else>%fa:R moon%</template><span>ダークモード</span></p></li>
|
||||
</ul>
|
||||
</div>
|
||||
<a :href="aboutUrl"><p class="about">%i18n:@about%</p></a>
|
||||
@ -117,7 +117,10 @@ export default Vue.extend({
|
||||
this.hasGameInvitations = false;
|
||||
},
|
||||
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>
|
||||
</template>
|
||||
|
||||
<main :data-darkmode="_darkmode_">
|
||||
<main :data-darkmode="$store.state.device.darkmode">
|
||||
<div class="nav" v-if="showNav">
|
||||
<div class="bg" @click="showNav = false"></div>
|
||||
<div class="body">
|
||||
|
@ -16,16 +16,30 @@ export default Vue.extend({
|
||||
data() {
|
||||
return {
|
||||
fetching: true,
|
||||
user: null
|
||||
user: null,
|
||||
unwatchDarkmode: null
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
$route: 'fetch'
|
||||
},
|
||||
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();
|
||||
},
|
||||
beforeDestroy() {
|
||||
document.documentElement.style.removeProperty('background');
|
||||
document.documentElement.style.removeProperty('background-color'); // for safari's bug
|
||||
this.unwatchDarkmode();
|
||||
},
|
||||
methods: {
|
||||
fetch() {
|
||||
this.fetching = true;
|
||||
@ -39,4 +53,3 @@ export default Vue.extend({
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
|
@ -12,7 +12,6 @@ import getAcct from '../../../../../acct/render';
|
||||
export default Vue.extend({
|
||||
mounted() {
|
||||
document.title = 'Misskey %i18n:@messaging%';
|
||||
document.documentElement.style.background = '#fff';
|
||||
},
|
||||
methods: {
|
||||
navigate(user) {
|
||||
|
@ -141,7 +141,6 @@ export default Vue.extend({
|
||||
version,
|
||||
codename,
|
||||
langs,
|
||||
darkmode: localStorage.getItem('darkmode') == 'true',
|
||||
latestVersion: undefined,
|
||||
checkingForUpdate: false
|
||||
};
|
||||
@ -152,6 +151,11 @@ export default Vue.extend({
|
||||
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: {
|
||||
get() { return this.$store.state.device.postStyle; },
|
||||
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() {
|
||||
document.title = 'Misskey | %i18n:@settings%';
|
||||
},
|
||||
|
@ -27,7 +27,6 @@
|
||||
<md-icon>%fa:birthday-cake%</md-icon>
|
||||
<label>%i18n:@birthday%</label>
|
||||
<md-input type="date" v-model="birthday" :disabled="saving"/>
|
||||
<span class="md-helper-text">%i18n:@will-be-published%</span>
|
||||
</md-field>
|
||||
|
||||
<md-field>
|
||||
@ -50,7 +49,7 @@
|
||||
md-content="%18n:!@uploading%"/>
|
||||
|
||||
<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>
|
||||
</md-card-content>
|
||||
|
||||
@ -75,6 +74,8 @@ export default Vue.extend({
|
||||
birthday: null,
|
||||
avatarId: null,
|
||||
bannerId: null,
|
||||
isBot: false,
|
||||
isCat: false,
|
||||
saving: false,
|
||||
uploading: false
|
||||
};
|
||||
@ -88,15 +89,11 @@ export default Vue.extend({
|
||||
this.birthday = (this as any).os.i.profile.birthday;
|
||||
this.avatarId = (this as any).os.i.avatarId;
|
||||
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: {
|
||||
onChangeIsBot() {
|
||||
(this as any).api('i/update', {
|
||||
isBot: (this as any).os.i.isBot
|
||||
});
|
||||
},
|
||||
|
||||
onAvatarChange([file]) {
|
||||
this.uploading = true;
|
||||
|
||||
@ -150,7 +147,9 @@ export default Vue.extend({
|
||||
description: this.description || null,
|
||||
birthday: this.birthday || null,
|
||||
avatarId: this.avatarId,
|
||||
bannerId: this.bannerId
|
||||
bannerId: this.bannerId,
|
||||
isBot: this.isBot,
|
||||
isCat: this.isCat
|
||||
}).then(i => {
|
||||
this.saving = false;
|
||||
(this as any).os.i.avatarId = i.avatarId;
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<mk-ui>
|
||||
<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-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>
|
||||
|
@ -19,6 +19,7 @@ const defaultSettings = {
|
||||
const defaultDeviceSettings = {
|
||||
apiViaStream: true,
|
||||
autoPopout: false,
|
||||
darkmode: false,
|
||||
enableSounds: true,
|
||||
soundVolume: 0.5,
|
||||
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);
|
||||
}
|
||||
|
||||
const lang = window.prompt('Enter language (optional):');
|
||||
if (lang && lang.length > 0) {
|
||||
localStorage.setItem('lang', lang);
|
||||
}
|
||||
|
||||
setTimeout(() => {
|
||||
location.href = '/';
|
||||
}, 500);
|
||||
|
@ -324,6 +324,10 @@ export const pack = async (
|
||||
// resolve promises in _note object
|
||||
_note = await rap(_note);
|
||||
|
||||
if (_note.user.isCat && _note.text) {
|
||||
_note.text = _note.text.replace(/な/g, 'にゃ').replace(/ナ/g, 'ニャ');
|
||||
}
|
||||
|
||||
if (hide) {
|
||||
_note.mediaIds = [];
|
||||
_note.text = null;
|
||||
|
@ -77,6 +77,7 @@ export interface ILocalUser extends IUserBase {
|
||||
};
|
||||
lastUsedAt: Date;
|
||||
isBot: boolean;
|
||||
isCat: boolean;
|
||||
isPro: boolean;
|
||||
twoFactorSecret: string;
|
||||
twoFactorEnabled: boolean;
|
||||
|
@ -1,6 +1,7 @@
|
||||
import * as mongo from 'mongodb';
|
||||
import { default as Notification, INotification } from '../../../models/notification';
|
||||
import publishUserStream from '../../../publishers/stream';
|
||||
import Mute from '../../../models/mute';
|
||||
|
||||
/**
|
||||
* Mark as read notification(s)
|
||||
@ -26,6 +27,11 @@ export default (
|
||||
? [new mongo.ObjectID(message)]
|
||||
: [(message as INotification)._id];
|
||||
|
||||
const mute = await Mute.find({
|
||||
muterId: userId
|
||||
});
|
||||
const mutedUserIds = mute.map(m => m.muteeId);
|
||||
|
||||
// Update documents
|
||||
await Notification.update({
|
||||
_id: { $in: ids },
|
||||
@ -42,6 +48,9 @@ export default (
|
||||
const count = await Notification
|
||||
.count({
|
||||
notifieeId: userId,
|
||||
notifierId: {
|
||||
$nin: mutedUserIds
|
||||
},
|
||||
isRead: false
|
||||
}, {
|
||||
limit: 1
|
||||
|
@ -96,8 +96,7 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
|
||||
});
|
||||
|
||||
// Serialize
|
||||
res(await Promise.all(notifications.map(async notification =>
|
||||
await pack(notification))));
|
||||
res(await Promise.all(notifications.map(notification => pack(notification))));
|
||||
|
||||
// Mark as read all
|
||||
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 (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
|
||||
const [autoWatch, autoWatchErr] = $.bool.optional().get(params.autoWatch);
|
||||
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,
|
||||
profile: user.profile,
|
||||
isBot: user.isBot,
|
||||
isCat: user.isCat,
|
||||
settings: user.settings
|
||||
}
|
||||
});
|
||||
|
@ -8,6 +8,10 @@ import Note, { pack } from '../../../models/note';
|
||||
* Get all notes
|
||||
*/
|
||||
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
|
||||
const [reply, replyErr] = $.bool.optional().get(params.reply);
|
||||
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) {
|
||||
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) => {
|
||||
const mute = await Mute.find({
|
||||
muterId: user._id,
|
||||
deletedAt: { $exists: false }
|
||||
muterId: user._id
|
||||
});
|
||||
const mutedUserIds = mute.map(m => m.muteeId);
|
||||
|
||||
|
@ -49,8 +49,8 @@ const router = new Router();
|
||||
//#region static assets
|
||||
|
||||
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, {
|
||||
root: client,
|
||||
maxage: ms('7 days'),
|
||||
|
Reference in New Issue
Block a user