Compare commits
168 Commits
develop
...
ncat/dev/e
Author | SHA1 | Date | |
---|---|---|---|
ffe75d85ae | |||
|
8168b4edad | ||
|
ab9b648c59 | ||
|
710e633e33 | ||
|
dfe6615d68 | ||
|
a9ec9df606 | ||
|
2ff8ace195 | ||
|
17081c4612 | ||
|
deaea4a0d8 | ||
|
8646f653d0 | ||
8252edfc1e | |||
|
cf77eaaba9 | ||
|
d52b8ca8ab | ||
|
0109308f5a | ||
|
fc06bb8c49 | ||
|
fc39383d65 | ||
|
2f621ceb7a | ||
|
483c97e224 | ||
|
b6a92f3680 | ||
|
a1a6e3560a | ||
|
c7f9a84970 | ||
|
81374e0eac | ||
|
7cf524c8f8 | ||
|
1c1013046e | ||
|
2689836ab1 | ||
cfc5578d14 | |||
|
c4a166db59 | ||
|
22933ef7f1 | ||
|
692a1ba551 | ||
|
9507b44d22 | ||
|
f7114628e0 | ||
|
9a53bb67fc | ||
|
18a2d430fc | ||
|
4a836121b4 | ||
|
30399dee8f | ||
|
f0f3442fb1 | ||
|
d31446d8aa | ||
|
c214fe17bf | ||
|
5f40394a8e | ||
|
97f725ae9c | ||
|
0706c775ac | ||
be45be0be9 | |||
|
9abbabd64f | ||
|
39221998bd | ||
|
de66f35798 | ||
|
2b402fe3a0 | ||
|
03fe23d507 | ||
|
b2ffcb77e0 | ||
|
f37bd9ea65 | ||
|
750d528db2 | ||
|
d837bbf5f7 | ||
|
38d3703484 | ||
|
7667493d56 | ||
|
ff96126057 | ||
|
477163cb84 | ||
|
a3dbde894a | ||
|
59b2715058 | ||
|
270b842c71 | ||
|
8b197ed4d6 | ||
|
3a38bbbe6d | ||
|
f70838a983 | ||
|
1fd2a7ec13 | ||
|
dac56bace9 | ||
|
bb655b1807 | ||
|
b68e98d521 | ||
|
c36dee8808 | ||
|
86847f1866 | ||
|
203454848a | ||
|
2f640ccdf1 | ||
|
aaf0f9aab1 | ||
|
377f84e26e | ||
|
7384c55b69 | ||
|
83726b9c96 | ||
|
3295696a20 | ||
|
054db12d02 | ||
|
3de91eee2c | ||
|
3ef1748e6d | ||
|
8402a9b665 | ||
|
dd47d50679 | ||
|
595f01ed28 | ||
3a83aabf42 | |||
87ba0ec566 | |||
75482bb4b3 | |||
|
c57f03b092 | ||
|
e53e40bf62 | ||
|
be4d3a2b84 | ||
|
08d0b0f5ef | ||
|
828121217d | ||
|
49fad60683 | ||
|
adc85b8af4 | ||
|
7532e44d37 | ||
|
081a312132 | ||
|
f5ba0db663 | ||
|
ed727aac78 | ||
|
8f85675275 | ||
|
5d1946465b | ||
|
839dbd98da | ||
|
866f3954a9 | ||
|
dd2f324050 | ||
|
ee6209afb2 | ||
|
3b68630e61 | ||
|
8f539adfdb | ||
|
56f552cc89 | ||
|
bb7fc84fab | ||
|
e7ae677b71 | ||
|
64f80f122f | ||
|
43a59c9b80 | ||
|
53f548bb08 | ||
|
291743087d | ||
|
432210e1b5 | ||
|
cb115d31cc | ||
|
088ecac89d | ||
|
7257336dc5 | ||
|
feb4373735 | ||
|
9861135546 | ||
|
22c0d5cb4e | ||
|
9d1e4b9014 | ||
|
99971cb91c | ||
|
c40da925a3 | ||
|
7c75e6666e | ||
|
922b7b0ad3 | ||
|
05c2db1dc0 | ||
|
282c2be5af | ||
|
6fd089d31a | ||
|
4850919a5b | ||
|
ed0eafbfd0 | ||
|
89120d45c0 | ||
|
1eedeb5842 | ||
|
c363154e07 | ||
|
87627eebaa | ||
|
a5956fc2f4 | ||
|
2924b84deb | ||
|
3b303a20a4 | ||
|
0fb9a438f9 | ||
|
139f4ae26b | ||
|
7e25be2513 | ||
|
c32edde497 | ||
|
b6e66d1d39 | ||
|
1d3ec1f31c | ||
|
a8abf35a91 | ||
|
90462ea1de | ||
|
bb1d02bde2 | ||
|
884f6a2fc9 | ||
|
d5ae48a754 | ||
|
0e04fd26d7 | ||
|
14440a95af | ||
|
645d945a33 | ||
|
1024fa4706 | ||
|
f231ad84e9 | ||
|
5c79e72774 | ||
|
639024897a | ||
|
0103cf8cd5 | ||
|
37129c2aa2 | ||
|
30f7e9e104 | ||
|
edad7fdbfe | ||
|
ec6facfe7d | ||
|
42184984a2 | ||
|
cc82bc182a | ||
|
6e52dc622d | ||
|
55ee63a57e | ||
|
a03f330c49 | ||
|
01185a830b | ||
|
502441c0e8 | ||
|
e1985690d2 | ||
|
eedd182187 | ||
|
e9e803db18 | ||
|
22c91811ad | ||
|
ded13933f2 |
18
.github/workflows/docker-image.yml
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
name: Docker Image CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
|
||||
jobs:
|
||||
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Build the Docker image
|
||||
run: docker build . --file Dockerfile --tag my-image-name:$(date +%s)
|
@ -32,4 +32,3 @@ COPY --from=builder /misskey/packages/client/node_modules ./packages/client/node
|
||||
COPY . ./
|
||||
|
||||
CMD ["npm", "run", "migrateandstart"]
|
||||
|
||||
|
173
README.md
@ -1,168 +1,7 @@
|
||||
[](https://join.misskey.page/)
|
||||
## これってなに?
|
||||
[Misskey](https://github.com/misskey-dev/misskey)ベースのSNS
|
||||
|
||||
<div align="center">
|
||||
|
||||
**🌎 A forever evolving, interplanetary microblogging platform. 🚀**
|
||||
|
||||
**Misskey** is a distributed microblogging platform with advanced features such as Reactions and a highly customizable UI.
|
||||
|
||||
[Learn more](https://misskey-hub.net/)
|
||||
|
||||
---
|
||||
|
||||
[✨ Find an instance](https://misskey-hub.net/instances.html)
|
||||
•
|
||||
[📦 Create your own instance](https://misskey-hub.net/docs/install.html)
|
||||
•
|
||||
[🛠️ Contribute](./CONTRIBUTING.md)
|
||||
•
|
||||
[🚀 Join the community](https://discord.gg/Wp8gVStHW3)
|
||||
|
||||
---
|
||||
|
||||
<a href="https://www.patreon.com/syuilo"><img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" alt="Become a Patron!" width="160" /></a>
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
<a href="https://xn--931a.moe/"><img src="https://github.com/misskey-dev/misskey/blob/develop/assets/ai.png?raw=true" align="right" height="320px"/></a>
|
||||
|
||||
## ✨ Features
|
||||
- **ActivityPub support**\
|
||||
It is possible to interact with other software.
|
||||
- **Reactions**\
|
||||
You can add "reactions" to each post, making it easy for you to express your feelings.
|
||||
- **Drive**\
|
||||
An interface to manage uploaded files such as images, videos, sounds, etc.
|
||||
You can also organize your favorite content into folders, making it easy to share again.
|
||||
- **Rich Web UI**\
|
||||
Misskey has a rich WebUI by default.
|
||||
It is highly customizable by flexibly changing the layout and installing various widgets and themes.
|
||||
Furthermore, plug-ins can be created using AiScript, a original programming language.
|
||||
- and more...
|
||||
|
||||
</div>
|
||||
|
||||
<div style="clear: both;"></div>
|
||||
|
||||
## Sponsors
|
||||
<div align="center">
|
||||
<a class="rss3" title="RSS3" href="https://rss3.io/" target="_blank"><img src="https://rss3.mypinata.cloud/ipfs/QmUG6H3Z7D5P511shn7sB4CPmpjH5uZWu4m5mWX7U3Gqbu" alt="RSS3" height="60"></a>
|
||||
</div>
|
||||
|
||||
## Backers
|
||||
<!-- PATREON_START -->
|
||||
<table><tr>
|
||||
<td><img src="https://c8.patreon.com/2/200/20832595" alt="Roujo " width="100"></td>
|
||||
<td><img src="https://c8.patreon.com/2/200/27956229" alt="Oliver Maximilian Seidel" width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12190916/fb7fa7983c14425f890369535b1506a4/3.png?token-time=2145916800&token-hash=oH_i7gJjNT7Ot6j9JiVwy7ZJIBqACVnzLqlz4YrDAZA%3D" alt="weepjp " width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/19045173/cb91c0f345c24d4ebfd05f19906d5e26/1.png?token-time=2145916800&token-hash=o_zKBytJs_AxHwSYw_5R8eD0eSJe3RoTR3kR3Q0syN0%3D" alt="kiritan " width="100"></td>
|
||||
<td><img src="https://c8.patreon.com/2/200/27648259" alt="みなしま " width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/24430516/b1964ac5b9f746d2a12ff53dbc9aa40a/1.jpg?token-time=2145916800&token-hash=bmEiMGYpp3bS7hCCbymjGGsHBZM3AXuBOFO3Kro37PU%3D" alt="Eduardo Quiros" width="100"></td>
|
||||
</tr><tr>
|
||||
<td><a href="https://www.patreon.com/user?u=20832595">Roujo </a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=27956229">Oliver Maximilian Seidel</a></td>
|
||||
<td><a href="https://www.patreon.com/weepjp">weepjp </a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=19045173">kiritan </a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=27648259">みなしま </a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=24430516">Eduardo Quiros</a></td>
|
||||
</tr></table>
|
||||
<table><tr>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/14215107/1cbe1912c26143919fa0faca16f12ce1/4.jpg?token-time=2145916800&token-hash=BslMqDjTjz8KYANLvxL87agHTugHa0dMPUzT-hwR6Vk%3D" alt="Nesakko" width="100"></td>
|
||||
<td><img src="https://c8.patreon.com/2/200/776209" alt="Demogrognard" width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/3075183/c2ae575c604e420297f000ccc396e395/1.jpeg?token-time=2145916800&token-hash=O9qmPtpo6wWb0OuvnkEekhk_1WO2MTdytLr7ZgsAr80%3D" alt="Liaizon Wakest" width="100"></td>
|
||||
<td><img src="https://c8.patreon.com/2/200/557245" alt="mkatze " width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/23915207/25428766ecd745478e600b3d7f871eb2/1.png?token-time=2145916800&token-hash=urCLLA4KjJZX92Y1CxcBP4d8bVTHGkiaPnQZp-Tqz68%3D" alt="kabo2468y " width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/8249688/4aacf36b6b244ab1bc6653591b6640df/2.png?token-time=2145916800&token-hash=1ZEf2w6L34253cZXS_HlVevLEENWS9QqrnxGUAYblPo%3D" alt="AureoleArk " width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5670915/ee175f0bfb6347ffa4ea101a8c097bff/1.jpg?token-time=2145916800&token-hash=mPLM9CA-riFHx-myr3bLZJuH2xBRHA9se5VbHhLIOuA%3D" alt="osapon " width="100"></td>
|
||||
<td><img src="https://c8.patreon.com/2/200/16869916" alt="見当かなみ " width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/36813045/29876ea679d443bcbba3c3f16edab8c2/2.jpeg?token-time=2145916800&token-hash=YCKWnIhrV9rjUCV9KqtJnEqjy_uGYF3WMXftjUdpi7o%3D" alt="Wataru Manji (manji0)" width="100"></td>
|
||||
</tr><tr>
|
||||
<td><a href="https://www.patreon.com/Nesakko">Nesakko</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=776209">Demogrognard</a></td>
|
||||
<td><a href="https://www.patreon.com/wakest">Liaizon Wakest</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=557245">mkatze </a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=23915207">kabo2468y </a></td>
|
||||
<td><a href="https://www.patreon.com/AureoleArk">AureoleArk </a></td>
|
||||
<td><a href="https://www.patreon.com/osapon">osapon </a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=16869916">見当かなみ </a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=36813045">Wataru Manji (manji0)</a></td>
|
||||
</tr></table>
|
||||
<table><tr>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/18899730/6a22797f68254034a854d69ea2445fc8/1.png?token-time=2145916800&token-hash=b_uj57yxo5VzkSOUS7oXE_762dyOTB_oxzbO6lFNG3k%3D" alt="YuzuRyo61 " width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5788159/af42076ab3354bb49803cfba65f94bee/1.jpg?token-time=2145916800&token-hash=iSaxp_Yr2-ZiU2YVi9rcpZZj9mj3UvNSMrZr4CU4qtA%3D" alt="mewl hayabusa" width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/28779508/3cd4cb7f017f4ee0864341e3464d42f9/1.png?token-time=2145916800&token-hash=eGQtR15be44kgvh8fw2Jx8Db4Bv15YBp2ldxh0EKRxA%3D" alt="S Y" width="100"></td>
|
||||
<td><img src="https://c8.patreon.com/2/200/16542964" alt="Takumi Sugita" width="100"></td>
|
||||
<td><img src="https://c8.patreon.com/2/200/17866454" alt="sikyosyounin " width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5881381/6235ca5d3fb04c8e95ef5b4ff2abcc18/3.png?token-time=2145916800&token-hash=KjfQL8nf3AIf6WqzLshBYAyX44piAqOAZiYXgZS_H6A%3D" alt="YUKIMOCHI" width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/38837364/9421361c54c645ac8f5fc442a40c32e9/1.png?token-time=2145916800&token-hash=TUZB48Nem3BeUPLBH6s3P6WyKBnQOy0xKaDSTBBUNzA%3D" alt="xianon" width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/26340354/08834cf767b3449e93098ef73a434e2f/2.png?token-time=2145916800&token-hash=nyM8DnKRL8hR47HQ619mUzsqVRpkWZjgtgBU9RY15Uc%3D" alt="totokoro " width="100"></td>
|
||||
</tr><tr>
|
||||
<td><a href="https://www.patreon.com/Yuzulia">YuzuRyo61 </a></td>
|
||||
<td><a href="https://www.patreon.com/hs_sh_net">mewl hayabusa</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=28779508">S Y</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=16542964">Takumi Sugita</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=17866454">sikyosyounin </a></td>
|
||||
<td><a href="https://www.patreon.com/yukimochi">YUKIMOCHI</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=38837364">xianon</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=26340354">totokoro </a></td>
|
||||
</tr></table>
|
||||
<table><tr>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/19356899/496b4681d33b4520bd7688e0fd19c04d/2.jpeg?token-time=2145916800&token-hash=_sTj3dUBOhn9qwiJ7F19Qd-yWWfUqJC_0jG1h0agEqQ%3D" alt="sheeta.s " width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5827393/59893c191dda408f9cabd0f20a3a5627/1.jpeg?token-time=2145916800&token-hash=i9N05vOph-eP1LTLb9_npATjYOpntL0ZsHNaZFSsPmE%3D" alt="motcha " width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/20494440/540beaf2445f408ea6597bc61e077bb3/1.png?token-time=2145916800&token-hash=UJ0JQge64Bx9XmN_qYA1inMQhrWf4U91fqz7VAKJeSg%3D" alt="axtuki1 " width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/13737140/1adf7835017d479280d90fe8d30aade2/1.png?token-time=2145916800&token-hash=0pdle8h5pDZrww0BDOjdz6zO-HudeGTh36a3qi1biVU%3D" alt="Satsuki Yanagi" width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/17880724/311738c8a48f4a6b9443c2445a75adde/1.jpg?token-time=2145916800&token-hash=nVAntpybQrznE0rg05keLrSE6ogPKJXB13rmrJng42c%3D" alt="takimura " width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/13100201/fc5be4fa90444f09a9c8a06f72385272/1.png?token-time=2145916800&token-hash=i8PjlgfOB2LPEdbtWyx8ZPsBKhGcNZqcw_FQmH71UGU%3D" alt="aqz tamaina" width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/9109588/e3cffc48d20a4e43afe04123e696781d/3.png?token-time=2145916800&token-hash=T_VIUA0IFIbleZv4pIjiszZGnQonwn34sLCYFIhakBo%3D" alt="nafuchoco " width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/16900731/619ab87cc08448439222631ebb26802f/1.gif?token-time=2145916800&token-hash=o27K7M02s1z-LkDUEO5Oa7cu-GviRXeOXxryi4o_6VU%3D" alt="Atsuko Tominaga" width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/4389829/9f709180ac714651a70f74a82f3ffdb9/3.png?token-time=2145916800&token-hash=FTm3WVom4dJ9NwWMU4OpCL_8Yc13WiwEbKrDPyTZTPs%3D" alt="natalie" width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/26144593/9514b10a5c1b42a3af58621aee213d1d/1.png?token-time=2145916800&token-hash=v1PYRsjzu4c_mndN4Hvi_dlispZJsuGRCQeNS82pUSM%3D" alt="EBISUME" width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5923936/2a743cbfbff946c2af3f09026047c0da/2.png?token-time=2145916800&token-hash=h6yphW1qnM0n_NOWaf8qtszMRLXEwIxfk5beu4RxdT0%3D" alt="noellabo " width="100"></td>
|
||||
</tr><tr>
|
||||
<td><a href="https://www.patreon.com/user?u=19356899">sheeta.s </a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=5827393">motcha </a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=20494440">axtuki1 </a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=13737140">Satsuki Yanagi</a></td>
|
||||
<td><a href="https://www.patreon.com/takimura">takimura </a></td>
|
||||
<td><a href="https://www.patreon.com/aqz">aqz tamaina</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=9109588">nafuchoco </a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=16900731">Atsuko Tominaga</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=4389829">natalie</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=26144593">EBISUME</a></td>
|
||||
<td><a href="https://www.patreon.com/noellabo">noellabo </a></td>
|
||||
</tr></table>
|
||||
<table><tr>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/2384390/5681180e1efb46a8b28e0e8d4c8b9037/1.jpg?token-time=2145916800&token-hash=SJcMy-Q1BcS940-LFUVOMfR7-5SgrzsEQGhYb3yowFk%3D" alt="CG " width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/18072312/98e894d960314fa7bc236a72a39488fe/1.jpg?token-time=2145916800&token-hash=7bkMqTwHPRsJPGAq42PYdDXDZBVGLqdgr1ZmBxX8GFQ%3D" alt="Hekovic " width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/24641572/b4fd175424814f15b0ca9178d2d2d2e4/1.png?token-time=2145916800&token-hash=e2fyqdbuJbpCckHcwux7rbuW6OPkKdERcus0u2wIEWU%3D" alt="uroco @99" width="100"></td>
|
||||
<td><img src="https://c8.patreon.com/2/200/14661394" alt="Chandler " width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5731881/4b6038e6cda34c04b83a5fcce3806a93/1.png?token-time=2145916800&token-hash=hBayGfOmQH3kRMdNnDe4oCZD_9fsJWSt29xXR3KRMVk%3D" alt="Nokotaro Takeda" width="100"></td>
|
||||
<td><img src="https://c8.patreon.com/2/200/23932002" alt="nenohi " width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/9481273/7fa89168e72943859c3d3c96e424ed31/4.jpeg?token-time=2145916800&token-hash=5w1QV1qXe-NdWbdFmp1H7O_-QBsSiV0haumk3XTHIEg%3D" alt="Efertone " width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12531784/93a45137841849329ba692da92ac7c60/1.jpeg?token-time=2145916800&token-hash=vGe7wXGqmA8Q7m-kDNb6fyGdwk-Dxk4F-ut8ZZu51RM%3D" alt="Takashi Shibuya" width="100"></td>
|
||||
</tr><tr>
|
||||
<td><a href="https://www.patreon.com/Corset">CG </a></td>
|
||||
<td><a href="https://www.patreon.com/hekovic">Hekovic </a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=24641572">uroco @99</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=14661394">Chandler </a></td>
|
||||
<td><a href="https://www.patreon.com/takenoko">Nokotaro Takeda</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=23932002">nenohi </a></td>
|
||||
<td><a href="https://www.patreon.com/efertone">Efertone </a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=12531784">Takashi Shibuya</a></td>
|
||||
</tr></table>
|
||||
|
||||
**Last updated:** Sun, 26 Jul 2020 07:00:10 UTC
|
||||
<!-- PATREON_END -->
|
||||
|
||||
[backer-url]: #backers
|
||||
[backer-badge]: https://opencollective.com/misskey/backers/badge.svg
|
||||
[backers-image]: https://opencollective.com/misskey/backers.svg
|
||||
[sponsor-url]: #sponsors
|
||||
[sponsor-badge]: https://opencollective.com/misskey/sponsors/badge.svg
|
||||
[sponsors-image]: https://opencollective.com/misskey/sponsors.svg
|
||||
[support-url]: https://opencollective.com/misskey#support
|
||||
|
||||
[syuilo-link]: https://syuilo.com
|
||||
[syuilo-icon]: https://avatars2.githubusercontent.com/u/4439005?v=3&s=70
|
||||
## 本家との違い
|
||||
[ここ](https://nullc.at/nca10.net/)にかいてあるよ
|
||||
## 導入方法
|
||||
[MisskeyHub](https://misskey-hub.net/docs/install.html)をみてね
|
||||
|
Before Width: | Height: | Size: 94 KiB |
Before Width: | Height: | Size: 317 KiB |
Before Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 95 KiB |
Before Width: | Height: | Size: 200 KiB |
BIN
assets/ai.png
Before Width: | Height: | Size: 235 KiB |
Before Width: | Height: | Size: 238 KiB |
Before Width: | Height: | Size: 148 KiB |
BIN
assets/title.png
Before Width: | Height: | Size: 3.8 KiB |
@ -1,50 +1,29 @@
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
web:
|
||||
build: .
|
||||
restart: always
|
||||
links:
|
||||
- db
|
||||
- redis
|
||||
# - es
|
||||
ports:
|
||||
- "127.0.0.1:3000:3000"
|
||||
networks:
|
||||
- internal_network
|
||||
- external_network
|
||||
volumes:
|
||||
- ./files:/misskey/files
|
||||
- ./.config:/misskey/.config:ro
|
||||
|
||||
redis:
|
||||
restart: always
|
||||
image: redis:4.0-alpine
|
||||
networks:
|
||||
- internal_network
|
||||
volumes:
|
||||
- ./redis:/data
|
||||
|
||||
db:
|
||||
restart: always
|
||||
image: postgres:12.2-alpine
|
||||
ports:
|
||||
- "5432:5432"
|
||||
networks:
|
||||
- internal_network
|
||||
- external_network
|
||||
env_file:
|
||||
- .config/docker.env
|
||||
volumes:
|
||||
- ./db:/var/lib/postgresql/data
|
||||
|
||||
# es:
|
||||
# restart: always
|
||||
# image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.4.2
|
||||
# environment:
|
||||
# - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
|
||||
# - "TAKE_FILE_OWNERSHIP=111"
|
||||
# networks:
|
||||
# - internal_network
|
||||
# volumes:
|
||||
# - ./elasticsearch:/usr/share/elasticsearch/data
|
||||
redis:
|
||||
restart: always
|
||||
image: redis:4.0-alpine
|
||||
ports:
|
||||
- "6379:6379"
|
||||
networks:
|
||||
- internal_network
|
||||
- external_network
|
||||
volumes:
|
||||
- ./redis:/data
|
||||
|
||||
networks:
|
||||
internal_network:
|
||||
|
6
explanation/instancecolor.md
Normal file
@ -0,0 +1,6 @@
|
||||
`packages/backend/src/server/web/views/base.pug` の中の
|
||||
```
|
||||
meta(name='theme-color' content='#好きな色')
|
||||
meta(name='theme-color-orig' content='#好きな色')
|
||||
```
|
||||
の好きな色の部分を変更する(Hex値)
|
15
explanation/ncatlang.md
Normal file
@ -0,0 +1,15 @@
|
||||
## 主な変更点
|
||||
- なとナがにゃ
|
||||
- コピーがコビー
|
||||
- あなたが僕
|
||||
- パスワードが鍵
|
||||
- doneがドネ
|
||||
- ユーザー名が名前
|
||||
- バナーがバニャーニャ
|
||||
- ユーザーネームがid
|
||||
- コントロールパネルがコンソトールパネル
|
||||
|
||||
## ぬるきゃごの導入方法
|
||||
1. `./locales/ja-JP.yml` を `ja-NCAT.yml` に変更
|
||||
2. `ja-NCAT.yml` を `./locales` のなかに入れる
|
||||
3. `./locales/inde.js` の `const languages` に `ja-NCAT` を追加する
|
@ -94,6 +94,8 @@ unfollow: "Unfollow"
|
||||
followRequestPending: "Follow request pending"
|
||||
enterEmoji: "Enter an emoji"
|
||||
renote: "Renote"
|
||||
renoteHomeOnly: "Renote to home only"
|
||||
renoteFollowersOnly: "Renote to followers only"
|
||||
unrenote: "Take back renote"
|
||||
renoted: "Renoted."
|
||||
cantRenote: "This post can't be renoted."
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "misskey",
|
||||
"version": "12.110.1",
|
||||
"version": "12.110.1-nca10.net-v1",
|
||||
"codename": "indigo",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 74 KiB |
@ -113,18 +113,26 @@
|
||||
// eslint-disable-next-line no-inner-declarations
|
||||
function renderError(code, details) {
|
||||
document.documentElement.innerHTML = `
|
||||
<h1>⚠エラーが発生しました</h1>
|
||||
<p>問題が解決しない場合は管理者までお問い合わせください。以下のオプションを試すこともできます:</p>
|
||||
<ul>
|
||||
<li><a href="/cli">簡易クライアント</a>を起動</li>
|
||||
<li><a href="/bios">BIOS</a>で修復を試みる</li>
|
||||
<li><a href="/flush">キャッシュをクリア</a>する</li>
|
||||
</ul>
|
||||
<hr>
|
||||
<code>ERROR CODE: ${code}</code>
|
||||
<details>
|
||||
${details}
|
||||
</details>
|
||||
<style>body { background-color: #010080; }</style>
|
||||
<div style="color: #FFF; padding: 128px;">
|
||||
<h1 style="font-family: system-ui; font-size: 100px; margin: 0;">:(</h1>
|
||||
<h1>おまえが悪い</h1>
|
||||
<p>問題が解決しない場合はおまえが修正しろ。以下のオプションを試すこともできる:</p>
|
||||
<div style="display: flex; flex-direction: row;">
|
||||
<img style="width: 192px; image-rendering: pixelated;" src="data:image/gif;base64,R0lGODlhIwAjAIAAAP///wEAgCH5BAAAAAAALAAAAAAjACMAAAK1hI+py+0Pozyh2mAquBtdq2DeplGjaCYYuIpr97avSsZZ1sJ1R7O3XItpUKkiLGfkeT625vEjkRFJ0Z6LKsRNTaDgrIvd3nC/kBZSGpdYnLQZOPSVRzSdN73Oh67I3VtMFUbh1mZHx0d2dQIo6KfFBNSAJKXjoqgydMSlGSEUR2TJxlhnQ2a6AHnW5QNWZ/TleLk4E8QD2ceVOfi4p5RL+/OVakYXa1u7lZqHqDbh/AwdLZ1QAAA7">
|
||||
<div style="display: flex; flex-direction: column; justify-content: space-between; padding-block: 16px;">
|
||||
<ul style="margin: 0;">
|
||||
<li><a style="color: red;" href="/cli">簡易クライアント</a>を起動しろ</li>
|
||||
<li><a style="color: red;" href="/bios">BIOS</a>で修復を試みろ</li>
|
||||
<li><a style="color: red;" href="/flush">キャッシュを消せ</a></li>
|
||||
</ul>
|
||||
<div style="padding-left: 40px;">
|
||||
<p style="margin: 0;"><code>停止コード: ${code}</code></p>
|
||||
<p style="margin: 0;"><code>失敗した内容: ${details}</code></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
{
|
||||
"short_name": "Misskey",
|
||||
"name": "Misskey",
|
||||
"short_name": "nca10.net",
|
||||
"name": "ぬるきゃのおうち",
|
||||
"start_url": "/",
|
||||
"display": "standalone",
|
||||
"background_color": "#313a42",
|
||||
"theme_color": "#86b300",
|
||||
"theme_color": "#96CCE7",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/static-assets/icons/192.png",
|
||||
|
@ -27,11 +27,11 @@ html
|
||||
link(rel='icon' href= icon || '/favicon.ico')
|
||||
link(rel='apple-touch-icon' href= icon || '/apple-touch-icon.png')
|
||||
link(rel='manifest' href='/manifest.json')
|
||||
link(rel='prefetch' href='https://xn--931a.moe/assets/info.jpg')
|
||||
link(rel='prefetch' href='https://xn--931a.moe/assets/not-found.jpg')
|
||||
link(rel='prefetch' href='https://xn--931a.moe/assets/error.jpg')
|
||||
link(rel='preload' href='/assets/fontawesome/css/all.css' as='style')
|
||||
link(rel='stylesheet' href='/assets/fontawesome/css/all.css')
|
||||
link(rel='prefetch' href='https://s3.nca10.net/misskey/3e1a7f0c-b106-41a1-b4ea-3ac896a0f3a4.png')
|
||||
link(rel='prefetch' href='https://s3.nca10.net/misskey/20b71322-00a7-4f57-8eb0-947df6cc0ccb.png')
|
||||
link(rel='prefetch' href='https://s3.nca10.net/misskey/ba995335-fca2-485b-8203-65e26a67f019.png')
|
||||
link(rel='preload' href='https://use.fontawesome.com/releases/v5.15.3/css/all.css' as='style')
|
||||
link(rel='stylesheet' href='https://use.fontawesome.com/releases/v5.15.3/css/all.css')
|
||||
|
||||
title
|
||||
block title
|
||||
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 9.2 KiB |
1
packages/client/assets/nca10.net.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 106.54"><path d="M282.88,106.54c-14.68,0-25.73-5-32.86-14.78-6.54-9-9.86-21.9-9.86-38.43s3.32-29.44,9.86-38.42C257.14,5,268.21,0,282.88,0c14.29,0,24.71,4.36,31.85,13.33s10.62,22.31,10.62,40-3.57,31.08-10.62,39.91S297.17,106.54,282.88,106.54ZM437.71,106c-8.86,0-15.72-2.4-21-7.34-5.63-5.19-8.39-12.41-8.39-22s2.71-16.84,8.29-22c5.2-4.88,12-7.25,20.89-7.25,4.92,0,12.17.5,18.31,4.88,6.36,4.54,10.06,12.2,11,22.78a5.78,5.78,0,0,1-5.75,6.29H426.55c1.39,6.08,5.08,9.16,11,9.16,4.2,0,7.46-1.26,9.68-3.74a5.79,5.79,0,0,1,4.3-1.91,5.72,5.72,0,0,1,1.86.31l6.45,2.19a5.79,5.79,0,0,1,2.68,9C457.46,102.72,449.13,106,437.71,106Zm-.86-44c-4.68,0-7.83,2.46-9.63,7.53H448C447,64.54,443.24,62,436.85,62ZM133.7,106c-12.72,0-19.17-5.68-19.17-16.88,0-8.86,4.56-15,13.55-18.12,5.38-1.92,12.91-2.86,23-2.86a6.79,6.79,0,0,0-2.38-5.06c-1.39-1.07-3.83-1.62-7.25-1.62-4.48,0-9.52,1.48-15,4.39a5.8,5.8,0,0,1-7.64-2.08L117.14,61a5.78,5.78,0,0,1,2.65-8.33c8.32-3.56,16.2-5.36,23.45-5.36,10.78,0,18.14,2.31,22.49,7.07,4.12,4.5,4.12,9.63,4.12,12.1V99.24a5.78,5.78,0,0,1-5.78,5.78h-7.48a5.77,5.77,0,0,1-5.43-3.82A31.37,31.37,0,0,1,133.7,106Zm17.46-25.65a55.1,55.1,0,0,0-11.45.85c-4.62,1.08-7,3.23-7,6.39,0,2.91,1.89,4.39,5.63,4.39a17.88,17.88,0,0,0,12.78-5.24ZM85.83,106c-8.73,0-15.4-2.4-20.41-7.34-5.25-5.13-7.82-12.34-7.82-22s2.56-16.9,7.82-22c5-4.88,11.68-7.25,20.41-7.25,12.39,0,20.56,4.22,24.26,12.54a5.77,5.77,0,0,1-3.79,7.94l-6.87,1.82a5.72,5.72,0,0,1-1.48.19,5.79,5.79,0,0,1-5-2.87c-1.41-2.42-3.74-3.6-7.13-3.6-6.42,0-9.54,4.34-9.54,13.26,0,8.72,3.12,13,9.54,13A7.72,7.72,0,0,0,93,85.78,5.76,5.76,0,0,1,97.9,83a5.83,5.83,0,0,1,1.65.24l6.94,2.08a5.77,5.77,0,0,1,3.6,7.94C106.22,101.7,98.06,106,85.83,106Zm93.89-.56a5.78,5.78,0,0,1-5.78-5.78V89.07a5.78,5.78,0,0,1,5.78-5.78h17V30.08l-9.45,7.28a5.81,5.81,0,0,1-3.53,1.2,5.45,5.45,0,0,1-.89-.08A5.75,5.75,0,0,1,179,36.05L173,27.44a5.78,5.78,0,0,1,1.29-7.89L198.43,1.41A5.8,5.8,0,0,1,201.91.25h15A5.78,5.78,0,0,1,222.73,6V83.29h14.06a5.78,5.78,0,0,1,5.78,5.78V99.63a5.78,5.78,0,0,1-5.78,5.78ZM494.55,105c-6.1,0-10.2-1.1-12.55-3.34s-3.47-6.19-3.47-11.83v-26h-5.29A5.78,5.78,0,0,1,467.46,58V54a5.77,5.77,0,0,1,5.78-5.77h5.29v-9.1a5.77,5.77,0,0,1,5.77-5.78h7.14a5.78,5.78,0,0,1,5.78,5.78v9.1h9A5.77,5.77,0,0,1,512,54V58a5.78,5.78,0,0,1-5.78,5.78h-9V85.28c0,3.81,1.65,4.1,2.19,4.19a17.21,17.21,0,0,0,2.19.1h4.15a5.77,5.77,0,0,1,5.77,5.77v3.9a5.77,5.77,0,0,1-5.77,5.78ZM392,105a5.78,5.78,0,0,1-5.78-5.78V73.07c0-2.95-.37-5-1.14-6.39-1.08-1.9-3-2.86-5.72-2.86-2.25,0-4.37,1-6.49,3.14a15.18,15.18,0,0,0-3.53,5.92V99.24a5.78,5.78,0,0,1-5.78,5.78h-7a5.77,5.77,0,0,1-5.77-5.78V54a5.77,5.77,0,0,1,5.77-5.77h7.12a5.77,5.77,0,0,1,5.7,4.86c4-3.8,9.12-5.72,15.26-5.72,6,0,10.62,1.5,14.21,4.58,4.05,3.48,6.1,8.87,6.1,16V99.24a5.77,5.77,0,0,1-5.77,5.78Zm-60.84,0a5.78,5.78,0,0,1-5.78-5.78V91.91a5.78,5.78,0,0,1,5.78-5.78H340a5.78,5.78,0,0,1,5.78,5.78v7.33A5.78,5.78,0,0,1,340,105Zm-289.9,0a5.77,5.77,0,0,1-5.77-5.78V73.07c0-2.95-.38-5-1.15-6.39-1.08-1.9-3-2.86-5.72-2.86-2.25,0-4.37,1-6.48,3.14a15.06,15.06,0,0,0-3.53,5.92V99.24A5.78,5.78,0,0,1,12.82,105h-7A5.78,5.78,0,0,1,0,99.24V54a5.77,5.77,0,0,1,5.78-5.77h7.11A5.78,5.78,0,0,1,18.6,53c4-3.8,9.12-5.72,15.26-5.72,6,0,10.61,1.5,14.21,4.58,4,3.48,6.1,8.87,6.1,16V99.24A5.78,5.78,0,0,1,48.39,105ZM276.5,43.74a5.69,5.69,0,1,0-6.66-4.54A5.7,5.7,0,0,0,276.5,43.74ZM265.91,44a5.69,5.69,0,1,0,.55,8A5.69,5.69,0,0,0,265.91,44Zm40.57-1.31A5.69,5.69,0,1,0,311,49.31,5.69,5.69,0,0,0,306.48,42.65Zm-10.59-.22a5.69,5.69,0,0,0,.55-8h0a5.69,5.69,0,1,0-.55,8Zm-12.52,9.1c-9,0-18.93,10.38-16.06,17.77,2.78,7.14,11.45,4.2,16.06,4.2s13.27,2.94,16.05-4.2C302.29,61.91,292.36,51.53,283.37,51.53Z" style="fill:#fff"/></svg>
|
After Width: | Height: | Size: 3.6 KiB |
@ -64,14 +64,14 @@ const alpha = (hex, a) => {
|
||||
};
|
||||
|
||||
const colors = {
|
||||
blue: '#008FFB',
|
||||
green: '#00E396',
|
||||
yellow: '#FEB019',
|
||||
red: '#FF4560',
|
||||
purple: '#e300db',
|
||||
orange: '#fe6919',
|
||||
lime: '#bde800',
|
||||
cyan: '#00e0e0',
|
||||
blue: '#96CCE7',
|
||||
green: '#B0E7CB',
|
||||
yellow: '#E7E7B0',
|
||||
red: '#FF9D9D',
|
||||
purple: '#CECEFF',
|
||||
orange: '#E7BA95',
|
||||
lime: '#C5E37F',
|
||||
cyan: '#96E7E7',
|
||||
};
|
||||
const colorSets = [colors.blue, colors.green, colors.yellow, colors.red, colors.purple];
|
||||
const getColor = (i) => {
|
||||
|
@ -15,7 +15,7 @@
|
||||
<header v-if="title"><Mfm :text="title"/></header>
|
||||
<div v-if="text" class="body"><Mfm :text="text"/></div>
|
||||
<MkInput v-if="input" v-model="inputValue" autofocus :type="input.type || 'text'" :placeholder="input.placeholder || undefined" @keydown="onInputKeydown">
|
||||
<template v-if="input.type === 'password'" #prefix><i class="fas fa-lock"></i></template>
|
||||
<template v-if="input.type === 'password'" #prefix><i style="color: #96CCE7;" class="fas fa-lock"></i></template>
|
||||
</MkInput>
|
||||
<MkSelect v-if="select" v-model="selectedValue" autofocus>
|
||||
<template v-if="select.items">
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<transition :name="$store.state.animation ? 'zoom' : ''" appear>
|
||||
<div class="mjndxjcg">
|
||||
<img src="https://xn--931a.moe/assets/error.jpg" class="_ghost"/>
|
||||
<img src="https://s3.nca10.net/misskey/ba995335-fca2-485b-8203-65e26a67f019.png" class="_ghost"/>
|
||||
<p><i class="fas fa-exclamation-triangle"></i> {{ $ts.somethingHappened }}</p>
|
||||
<MkButton class="button" @click="() => $emit('retry')">{{ $ts.retry }}</MkButton>
|
||||
</div>
|
||||
|
@ -25,6 +25,7 @@
|
||||
</div>
|
||||
</template>
|
||||
<div class="buttons right">
|
||||
<button class="_button button" v-tooltip="'リロード'" onclick="location.reload();"><i class="fas fa-redo"></i></button>
|
||||
<template v-if="info && info.actions && !narrow">
|
||||
<template v-for="action in info.actions">
|
||||
<MkButton v-if="action.asFullButton" class="fullButton" primary @click.stop="action.handler"><i :class="action.icon" style="margin-right: 6px;"></i>{{ action.text }}</MkButton>
|
||||
|
@ -42,7 +42,7 @@
|
||||
<MkA v-user-preview="appearNote.user.id" class="name" :to="userPage(appearNote.user)">
|
||||
<MkUserName :user="appearNote.user"/>
|
||||
</MkA>
|
||||
<span v-if="appearNote.user.isBot" class="is-bot">bot</span>
|
||||
<span v-if="appearNote.user.isBot"><svg xmlns="http://www.w3.org/2000/svg" class="is-bot-icon" fill="#FFFFFF" viewBox="0 0 512 512"><title>Hardware Chip</title><path d="M352 128H160a32 32 0 00-32 32v192a32 32 0 0032 32h192a32 32 0 0032-32V160a32 32 0 00-32-32zm0 216a8 8 0 01-8 8H168a8 8 0 01-8-8V168a8 8 0 018-8h176a8 8 0 018 8z" fill="none"/><rect x="160" y="160" width="192" height="192" rx="8" ry="8"/><path d="M464 192a16 16 0 000-32h-16v-32a64.07 64.07 0 00-64-64h-32V48a16 16 0 00-32 0v16h-48V48a16 16 0 00-32 0v16h-48V48a16 16 0 00-32 0v16h-32a64.07 64.07 0 00-64 64v32H48a16 16 0 000 32h16v48H48a16 16 0 000 32h16v48H48a16 16 0 000 32h16v32a64.07 64.07 0 0064 64h32v16a16 16 0 0032 0v-16h48v16a16 16 0 0032 0v-16h48v16a16 16 0 0032 0v-16h32a64.07 64.07 0 0064-64v-32h16a16 16 0 000-32h-16v-48h16a16 16 0 000-32h-16v-48zm-80 160a32 32 0 01-32 32H160a32 32 0 01-32-32V160a32 32 0 0132-32h192a32 32 0 0132 32z"/></svg></span>
|
||||
<span v-if="appearNote.visibility !== 'public'" class="visibility">
|
||||
<i v-if="appearNote.visibility === 'home'" class="fas fa-home"></i>
|
||||
<i v-else-if="appearNote.visibility === 'followers'" class="fas fa-unlock"></i>
|
||||
@ -432,14 +432,18 @@ if (appearNote.replyId) {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
> .is-bot {
|
||||
flex-shrink: 0;
|
||||
align-self: center;
|
||||
margin: 0 0.5em;
|
||||
padding: 4px 6px;
|
||||
font-size: 80%;
|
||||
border: solid 0.5px var(--divider);
|
||||
border-radius: 4px;
|
||||
.is-bot-icon {
|
||||
transform: translateY(4px);
|
||||
width: 20px;
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
> .visibility {
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
> .localOnly {
|
||||
margin-left: 8px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3,14 +3,12 @@
|
||||
<MkA v-user-preview="note.user.id" class="name" :to="userPage(note.user)">
|
||||
<MkUserName :user="note.user"/>
|
||||
</MkA>
|
||||
<div v-if="note.user.isBot" class="is-bot">bot</div>
|
||||
<div class="username"><MkAcct :user="note.user"/></div>
|
||||
<div class="info">
|
||||
<MkA class="created-at" :to="notePage(note)">
|
||||
<MkTime :time="note.createdAt"/>
|
||||
</MkA>
|
||||
<span v-if="note.visibility !== 'public'" class="visibility">
|
||||
<i v-if="note.visibility === 'home'" class="fas fa-home"></i>
|
||||
<MkTime :time="note.createdAt"/></MkA>
|
||||
<span v-if="note.user.isBot"><svg xmlns="http://www.w3.org/2000/svg" class="is-bot" fill="#FFFFFF" viewBox="0 0 512 512"><title>Hardware Chip</title><path d="M352 128H160a32 32 0 00-32 32v192a32 32 0 0032 32h192a32 32 0 0032-32V160a32 32 0 00-32-32zm0 216a8 8 0 01-8 8H168a8 8 0 01-8-8V168a8 8 0 018-8h176a8 8 0 018 8z" fill="none"/><rect x="160" y="160" width="192" height="192" rx="8" ry="8"/><path d="M464 192a16 16 0 000-32h-16v-32a64.07 64.07 0 00-64-64h-32V48a16 16 0 00-32 0v16h-48V48a16 16 0 00-32 0v16h-48V48a16 16 0 00-32 0v16h-32a64.07 64.07 0 00-64 64v32H48a16 16 0 000 32h16v48H48a16 16 0 000 32h16v48H48a16 16 0 000 32h16v32a64.07 64.07 0 0064 64h32v16a16 16 0 0032 0v-16h48v16a16 16 0 0032 0v-16h48v16a16 16 0 0032 0v-16h32a64.07 64.07 0 0064-64v-32h16a16 16 0 000-32h-16v-48h16a16 16 0 000-32h-16v-48zm-80 160a32 32 0 01-32 32H160a32 32 0 01-32-32V160a32 32 0 0132-32h192a32 32 0 0132 32z"/></svg></span>
|
||||
<span v-if="note.visibility !== 'public'" class="visibility"><i v-if="note.visibility === 'home'" class="fas fa-home"></i>
|
||||
<i v-else-if="note.visibility === 'followers'" class="fas fa-unlock"></i>
|
||||
<i v-else-if="note.visibility === 'specified'" class="fas fa-envelope"></i>
|
||||
</span>
|
||||
@ -53,16 +51,6 @@ defineProps<{
|
||||
}
|
||||
}
|
||||
|
||||
> .is-bot {
|
||||
flex-shrink: 0;
|
||||
align-self: center;
|
||||
margin: 0 .5em 0 0;
|
||||
padding: 1px 6px;
|
||||
font-size: 80%;
|
||||
border: solid 0.5px var(--divider);
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
> .username {
|
||||
flex-shrink: 9999999;
|
||||
margin: 0 .5em 0 0;
|
||||
@ -75,6 +63,12 @@ defineProps<{
|
||||
margin-left: auto;
|
||||
font-size: 0.9em;
|
||||
|
||||
.is-bot {
|
||||
width: 18px;
|
||||
margin-left: 8px;
|
||||
transform: translateY(4px);
|
||||
}
|
||||
|
||||
> .visibility {
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
@ -339,7 +339,7 @@ function readPromo() {
|
||||
line-height: 24px;
|
||||
font-size: 90%;
|
||||
white-space: pre;
|
||||
color: #d28a3f;
|
||||
color: #E7BA95;
|
||||
|
||||
> i {
|
||||
margin-right: 4px;
|
||||
|
@ -2,7 +2,7 @@
|
||||
<MkPagination ref="pagingComponent" :pagination="pagination">
|
||||
<template #empty>
|
||||
<div class="_fullinfo">
|
||||
<img src="https://xn--931a.moe/assets/info.jpg" class="_ghost"/>
|
||||
<img src="https://s3.nca10.net/misskey/3e1a7f0c-b106-41a1-b4ea-3ac896a0f3a4.png" class="_ghost"/>
|
||||
<div>{{ $ts.noNotes }}</div>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -2,7 +2,7 @@
|
||||
<MkPagination ref="pagingComponent" :pagination="pagination">
|
||||
<template #empty>
|
||||
<div class="_fullinfo">
|
||||
<img src="https://xn--931a.moe/assets/info.jpg" class="_ghost"/>
|
||||
<img src="https://s3.nca10.net/misskey/3e1a7f0c-b106-41a1-b4ea-3ac896a0f3a4.png" class="_ghost"/>
|
||||
<div>{{ $ts.noNotifications }}</div>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -8,9 +8,6 @@
|
||||
>
|
||||
<header>
|
||||
<button v-if="!fixed" class="cancel _button" @click="cancel"><i class="fas fa-times"></i></button>
|
||||
<button v-click-anime v-tooltip="i18n.ts.switchAccount" class="account _button" @click="openAccountMenu">
|
||||
<MkAvatar :user="postAccount ?? $i" class="avatar"/>
|
||||
</button>
|
||||
<div>
|
||||
<span class="text-count" :class="{ over: textLength > maxTextLength }">{{ maxTextLength - textLength }}</span>
|
||||
<span v-if="localOnly" class="local-only"><i class="fas fa-biohazard"></i></span>
|
||||
@ -51,6 +48,7 @@
|
||||
<button v-tooltip="i18n.ts.useCw" class="_button" :class="{ active: useCw }" @click="useCw = !useCw"><i class="fas fa-eye-slash"></i></button>
|
||||
<button v-tooltip="i18n.ts.mention" class="_button" @click="insertMention"><i class="fas fa-at"></i></button>
|
||||
<button v-tooltip="i18n.ts.hashtags" class="_button" :class="{ active: withHashtags }" @click="withHashtags = !withHashtags"><i class="fas fa-hashtag"></i></button>
|
||||
<button v-tooltip="i18n.ts.kao" class="_button" @click="kao"><i class="fas fa-paw"></i></button>
|
||||
<button v-tooltip="i18n.ts.emoji" class="_button" @click="insertEmoji"><i class="fas fa-laugh-squint"></i></button>
|
||||
<button v-if="postFormActions.length > 0" v-tooltip="i18n.ts.plugin" class="_button" @click="showActions"><i class="fas fa-plug"></i></button>
|
||||
</footer>
|
||||
@ -87,6 +85,8 @@ import MkInfo from '@/components/ui/info.vue';
|
||||
import { i18n } from '@/i18n';
|
||||
import { instance } from '@/instance';
|
||||
import { $i, getAccounts, openAccountMenu as openAccountMenu_ } from '@/account';
|
||||
import {api} from "@/os";
|
||||
import {deckStore} from "@/ui/deck/deck-store";
|
||||
|
||||
const modal = inject('modal');
|
||||
|
||||
@ -355,6 +355,49 @@ function chooseFileFrom(ev) {
|
||||
});
|
||||
}
|
||||
|
||||
async function kao() {
|
||||
const list = [
|
||||
"(=^・・^=)",
|
||||
"v('ω')v",
|
||||
"( ᐢ˙꒳˙ᐢ )",
|
||||
"(。>﹏<。)",
|
||||
"(Δ・x・Δ)",
|
||||
"(´-ω-`)",
|
||||
"(๑•﹏•)",
|
||||
"(。ì _ í。)",
|
||||
"(´×ω×`)",
|
||||
"(´+ω+`)",
|
||||
"(。-ω-)zzz",
|
||||
"(><)",
|
||||
"(。>ㅿ<。)",
|
||||
"(´;ω;`)",
|
||||
"ฅ^•ω•^ฅ",
|
||||
"⊂(・﹏・⊂)",
|
||||
"ᕦ(ò_óˇ)ᕤ",
|
||||
"ᕙ(⇀‸↼‶)ᕗ",
|
||||
"(・o・;)",
|
||||
"(。ŏ﹏ŏ)",
|
||||
"Σ(^._.^=ノ)ノ",
|
||||
" (๑•̀ - •́)و✧",
|
||||
"(,,> <,,)♡",
|
||||
"o(>_<)o",
|
||||
"(っ´・ω・)っ",
|
||||
"(´。-ω(-ω-。`)ギュ ",
|
||||
]
|
||||
|
||||
const faces = list.map(kao => {
|
||||
return {
|
||||
type: 'button' as const,
|
||||
text: kao,
|
||||
action() {
|
||||
text += kao
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
await os.popupMenu(faces)
|
||||
}
|
||||
|
||||
function detachFile(id) {
|
||||
files = files.filter(x => x.id != id);
|
||||
}
|
||||
|
@ -80,8 +80,8 @@ export default defineComponent({
|
||||
tension: 0,
|
||||
borderWidth: 2,
|
||||
borderJoinStyle: 'round',
|
||||
borderColor: '#00E396',
|
||||
backgroundColor: alpha('#00E396', 0.1),
|
||||
borderColor: '#B0E7CB',
|
||||
backgroundColor: alpha('#B0E7CB', 0.1),
|
||||
data: []
|
||||
}, {
|
||||
label: 'Active',
|
||||
@ -89,8 +89,8 @@ export default defineComponent({
|
||||
tension: 0,
|
||||
borderWidth: 2,
|
||||
borderJoinStyle: 'round',
|
||||
borderColor: '#00BCD4',
|
||||
backgroundColor: alpha('#00BCD4', 0.1),
|
||||
borderColor: '#96CCE7',
|
||||
backgroundColor: alpha('#96CCE7', 0.1),
|
||||
data: []
|
||||
}, {
|
||||
label: 'Waiting',
|
||||
@ -98,8 +98,8 @@ export default defineComponent({
|
||||
tension: 0,
|
||||
borderWidth: 2,
|
||||
borderJoinStyle: 'round',
|
||||
borderColor: '#FFB300',
|
||||
backgroundColor: alpha('#FFB300', 0.1),
|
||||
borderColor: '#E7E7B0',
|
||||
backgroundColor: alpha('#E7E7B0', 0.1),
|
||||
yAxisID: 'y2',
|
||||
data: []
|
||||
}, {
|
||||
@ -108,7 +108,7 @@ export default defineComponent({
|
||||
tension: 0,
|
||||
borderWidth: 2,
|
||||
borderJoinStyle: 'round',
|
||||
borderColor: '#E53935',
|
||||
borderColor: '#FF9D9D',
|
||||
borderDash: [5, 5],
|
||||
fill: false,
|
||||
yAxisID: 'y2',
|
||||
|
@ -117,10 +117,10 @@ export default defineComponent({
|
||||
<style lang="scss" scoped>
|
||||
.hkzvhatu {
|
||||
display: inline-block;
|
||||
height: 32px;
|
||||
margin: 2px;
|
||||
padding: 0 6px;
|
||||
padding: 4px;
|
||||
border-radius: 4px;
|
||||
line-height: 0;
|
||||
|
||||
&.canToggle {
|
||||
background: rgba(0, 0, 0, 0.05);
|
||||
@ -135,10 +135,11 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
&.reacted {
|
||||
background: var(--accent);
|
||||
border: 2px solid var(--accent);
|
||||
background: rgb(150 204 231 / 25%);
|
||||
|
||||
&:hover {
|
||||
background: var(--accent);
|
||||
border-color: rgb(150 204 231 / 100%);
|
||||
}
|
||||
|
||||
> span {
|
||||
@ -148,7 +149,6 @@ export default defineComponent({
|
||||
|
||||
> span {
|
||||
font-size: 0.9em;
|
||||
line-height: 32px;
|
||||
margin: 0 0 0 4px;
|
||||
}
|
||||
}
|
||||
|
@ -12,12 +12,18 @@ defineProps<{
|
||||
.jmgmzlwq {
|
||||
font-size: 0.8em;
|
||||
padding: 16px;
|
||||
background: var(--infoWarnBg);
|
||||
color: var(--infoWarnFg);
|
||||
background: none;
|
||||
border: solid 2px #E7E7B0;
|
||||
color: #E7E7B0;
|
||||
|
||||
> a {
|
||||
margin-left: 4px;
|
||||
color: var(--accent);
|
||||
|
||||
&:hover{
|
||||
text-shadow: -6px 0px 15px rgba(150, 204, 231, 0.83),
|
||||
6px 0px 15px rgba(150, 204, 231, 0.83);
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -66,7 +66,25 @@ export default defineComponent({
|
||||
renoteId: props.note.id
|
||||
});
|
||||
}
|
||||
}, {
|
||||
},{
|
||||
text: i18n.ts.renoteHomeOnly,
|
||||
icon: 'fas fa-home',
|
||||
action: () => {
|
||||
os.api('notes/create', {
|
||||
renoteId: props.note.id,
|
||||
visibility: 'home'
|
||||
});
|
||||
}
|
||||
},{
|
||||
text: i18n.ts.renoteFollowersOnly,
|
||||
icon: 'fas fa-unlock',
|
||||
action: () => {
|
||||
os.api('notes/create', {
|
||||
renoteId: props.note.id,
|
||||
visibility: 'followers'
|
||||
});
|
||||
}
|
||||
},{
|
||||
text: i18n.ts.quote,
|
||||
icon: 'fas fa-quote-right',
|
||||
action: () => {
|
||||
|
@ -8,7 +8,7 @@
|
||||
<template #suffix>@{{ host }}</template>
|
||||
</MkInput>
|
||||
<MkInput v-if="!user || user && !user.usePasswordLessLogin" v-model="password" class="_formBlock" :placeholder="$ts.password" type="password" :with-password-toggle="true" required data-cy-signin-password>
|
||||
<template #prefix><i class="fas fa-lock"></i></template>
|
||||
<template #prefix><i style="color: #96CCE7;" class="fas fa-lock"></i></template>
|
||||
<template #caption><button class="_textButton" type="button" @click="resetPassword">{{ $ts.forgotPassword }}</button></template>
|
||||
</MkInput>
|
||||
<MkButton class="_formBlock" type="submit" primary :disabled="signing" style="margin: 0 auto;">{{ signing ? $ts.loggingIn : $ts.login }}</MkButton>
|
||||
@ -27,7 +27,7 @@
|
||||
<p style="margin-bottom:0;">{{ $ts.twoStepAuthentication }}</p>
|
||||
<MkInput v-if="user && user.usePasswordLessLogin" v-model="password" type="password" :with-password-toggle="true" required>
|
||||
<template #label>{{ $ts.password }}</template>
|
||||
<template #prefix><i class="fas fa-lock"></i></template>
|
||||
<template #prefix><i style="color: #96CCE7;" class="fas fa-lock"></i></template>
|
||||
</MkInput>
|
||||
<MkInput v-model="token" type="text" pattern="^[0-9]{6}$" autocomplete="off" spellcheck="false" required>
|
||||
<template #label>{{ $ts.token }}</template>
|
||||
|
@ -36,7 +36,7 @@
|
||||
</MkInput>
|
||||
<MkInput v-model="password" class="_formBlock" type="password" :autocomplete="Math.random()" required data-cy-signup-password @update:modelValue="onChangePassword">
|
||||
<template #label>{{ $ts.password }}</template>
|
||||
<template #prefix><i class="fas fa-lock"></i></template>
|
||||
<template #prefix><i style="color: #96CCE7;" class="fas fa-lock"></i></template>
|
||||
<template #caption>
|
||||
<span v-if="passwordStrength == 'low'" style="color: var(--error)"><i class="fas fa-exclamation-triangle fa-fw"></i> {{ $ts.weakPassword }}</span>
|
||||
<span v-if="passwordStrength == 'medium'" style="color: var(--warn)"><i class="fas fa-check fa-fw"></i> {{ $ts.normalPassword }}</span>
|
||||
@ -45,7 +45,7 @@
|
||||
</MkInput>
|
||||
<MkInput v-model="retypedPassword" class="_formBlock" type="password" :autocomplete="Math.random()" required data-cy-signup-password-retype @update:modelValue="onChangePasswordRetype">
|
||||
<template #label>{{ $ts.password }} ({{ $ts.retype }})</template>
|
||||
<template #prefix><i class="fas fa-lock"></i></template>
|
||||
<template #prefix><i style="color: #96CCE7;" class="fas fa-lock"></i></template>
|
||||
<template #caption>
|
||||
<span v-if="passwordRetypeState == 'match'" style="color: var(--success)"><i class="fas fa-check fa-fw"></i> {{ $ts.passwordMatched }}</span>
|
||||
<span v-if="passwordRetypeState == 'not-match'" style="color: var(--error)"><i class="fas fa-exclamation-triangle fa-fw"></i> {{ $ts.passwordNotMatched }}</span>
|
||||
|
@ -146,14 +146,16 @@ export default defineComponent({
|
||||
line-height: 22px;
|
||||
box-shadow: none;
|
||||
text-decoration: none;
|
||||
background: var(--buttonBg);
|
||||
background: none;
|
||||
border: solid 2px var(--accent);
|
||||
border-radius: 5px;
|
||||
overflow: clip;
|
||||
box-sizing: border-box;
|
||||
transition: background 0.1s ease;
|
||||
|
||||
&:not(:disabled):hover {
|
||||
background: var(--buttonHoverBg);
|
||||
text-shadow: -6px 0px 15px rgba(150, 204, 231, 0.83),
|
||||
6px 0px 15px rgba(150, 204, 231, 0.83);
|
||||
}
|
||||
|
||||
&:not(:disabled):active {
|
||||
@ -168,20 +170,6 @@ export default defineComponent({
|
||||
border-radius: 999px;
|
||||
}
|
||||
|
||||
&.primary {
|
||||
font-weight: bold;
|
||||
color: var(--fgOnAccent) !important;
|
||||
background: var(--accent);
|
||||
|
||||
&:not(:disabled):hover {
|
||||
background: var(--X8);
|
||||
}
|
||||
|
||||
&:not(:disabled):active {
|
||||
background: var(--X8);
|
||||
}
|
||||
}
|
||||
|
||||
&.gradate {
|
||||
font-weight: bold;
|
||||
color: var(--fgOnAccent) !important;
|
||||
@ -197,19 +185,12 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
&.danger {
|
||||
color: #ff2a2a;
|
||||
|
||||
&.primary {
|
||||
color: #fff;
|
||||
background: #ff2a2a;
|
||||
border-color: #FF9D9D;
|
||||
|
||||
&:not(:disabled):hover {
|
||||
background: #ff4242;
|
||||
}
|
||||
text-shadow: -6px 0px 15px rgba(255, 157, 157, 0.83),
|
||||
6px 0px 15px rgba(255, 157, 157, 0.83);
|
||||
|
||||
&:not(:disabled):active {
|
||||
background: #d42e2e;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -163,13 +163,13 @@ function focusDown() {
|
||||
}
|
||||
|
||||
&.danger {
|
||||
color: #ff2a2a;
|
||||
color: #FF9D9D;
|
||||
|
||||
&:hover {
|
||||
color: #fff;
|
||||
|
||||
&:before {
|
||||
background: #ff4242;
|
||||
background: #FF9D9D;
|
||||
}
|
||||
}
|
||||
|
||||
@ -177,7 +177,7 @@ function focusDown() {
|
||||
color: #fff;
|
||||
|
||||
&:before {
|
||||
background: #d42e2e;
|
||||
background: #FF9D9D;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -7,7 +7,7 @@
|
||||
<div v-else-if="empty" key="_empty_" class="empty">
|
||||
<slot name="empty">
|
||||
<div class="_fullinfo">
|
||||
<img src="https://xn--931a.moe/assets/info.jpg" class="_ghost"/>
|
||||
<img src="https://s3.nca10.net/misskey/3e1a7f0c-b106-41a1-b4ea-3ac896a0f3a4.png" class="_ghost"/>
|
||||
<div>{{ $ts.nothing }}</div>
|
||||
</div>
|
||||
</slot>
|
||||
|
@ -2,7 +2,7 @@
|
||||
<MkPagination ref="pagingComponent" :pagination="pagination">
|
||||
<template #empty>
|
||||
<div class="_fullinfo">
|
||||
<img src="https://xn--931a.moe/assets/info.jpg" class="_ghost"/>
|
||||
<img src="https://s3.nca10.net/misskey/3e1a7f0c-b106-41a1-b4ea-3ac896a0f3a4.png" class="_ghost"/>
|
||||
<div>{{ $ts.noUsers }}</div>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -27,19 +27,19 @@ const text = $computed(() => {
|
||||
border-radius: 120%; // Blinkのバグか知らんけど、100%ぴったりにすると何故か若干楕円でレンダリングされる
|
||||
|
||||
&.online {
|
||||
background: #58d4c9;
|
||||
background: #96E7E7;
|
||||
}
|
||||
|
||||
&.active {
|
||||
background: #e4bc48;
|
||||
background: #E7E7B0;
|
||||
}
|
||||
|
||||
&.offline {
|
||||
background: #ea5353;
|
||||
background: #FF9D9D;
|
||||
}
|
||||
|
||||
&.unknown {
|
||||
background: #888;
|
||||
background: #4F5766;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -2,7 +2,7 @@
|
||||
<MkLoading v-if="!loaded"/>
|
||||
<transition :name="$store.state.animation ? 'zoom' : ''" appear>
|
||||
<div v-show="loaded" class="mjndxjch">
|
||||
<img src="https://xn--931a.moe/assets/error.jpg" class="_ghost"/>
|
||||
<img src="https://s3.nca10.net/misskey/ba995335-fca2-485b-8203-65e26a67f019.png" class="_ghost"/>
|
||||
<p><b><i class="fas fa-exclamation-triangle"></i> {{ i18n.ts.pageLoadError }}</b></p>
|
||||
<p v-if="meta && (version === meta.version)">{{ i18n.ts.pageLoadErrorDescription }}</p>
|
||||
<p v-else-if="serverIsDead">{{ i18n.ts.serverIsDead }}</p>
|
||||
|
270
packages/client/src/pages/admin/emojigen.vue
Normal file
@ -0,0 +1,270 @@
|
||||
<template>
|
||||
<MkSpacer :content-max="700" :margin-min="16" :margin-max="32">
|
||||
<div class="cwepdizn _formRoot">
|
||||
<FormInput v-model="emojiName" class="_formBlock">
|
||||
<template #label>{{ $ts.emojiName }}</template>
|
||||
</FormInput>
|
||||
|
||||
<FormTextarea v-model="text" class="_formBlock">
|
||||
<template #label>{{ $ts.text }}</template>
|
||||
</FormTextarea>
|
||||
|
||||
<FormRadios v-model="emojiAlign" class="_formBlock">
|
||||
<template #label>{{ $ts.emojiAlign }}</template>
|
||||
<option value="left"><i class="fa-solid fa-align-left"/></option>
|
||||
<option value="center"><i class="fa-solid fa-align-center"></i></option>
|
||||
<option value="right"><i class="fa-solid fa-align-right"/></option>
|
||||
</FormRadios>
|
||||
|
||||
<FormSection>
|
||||
<template #label>{{ $ts.emojiSizeSetting }}</template>
|
||||
<FormSwitch v-model="emojiSizeFixed" class="_formBlock">
|
||||
<template #label>{{ $ts.emojiSizeFixed }}</template>
|
||||
</FormSwitch>
|
||||
|
||||
<FormSwitch v-model="emojiStretch" class="_formBlock">
|
||||
<template #label>{{ $ts.emojiStretch }}</template>
|
||||
</FormSwitch>
|
||||
</FormSection>
|
||||
|
||||
<FormRadios v-model="font" class="_formBlock">
|
||||
<template #label>{{ $ts.font }}</template>
|
||||
<option value="notosans-mono-bold">Noto Sans Mono CJK JP Bold</option>
|
||||
<option value="mplus-1p-black">M+ 1p black</option>
|
||||
<option value="rounded-x-mplus-1p-black">Rounded M+ 1p black</option>
|
||||
<option value="ipamjm">IPAmj明朝</option>
|
||||
<option value="aoyagireisyoshimo">青柳隷書しも</option>
|
||||
<option value="LinLibertine_RBah">LinLibertine Bold</option>
|
||||
</FormRadios>
|
||||
|
||||
<FormSection>
|
||||
<template #label>{{ $ts.emojiColor }}</template>
|
||||
<div class="cwepdizn-colors">
|
||||
<div class="row">
|
||||
<button v-for="color in accentColors" :key="color" class="color rounded _button" @click="setAccentColor(color)">
|
||||
<div class="preview" :style="{ background: color }"></div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<FormInput v-model="emojiColor" class="_formBlock">
|
||||
<template #prefix><i class="fas fa-palette"></i></template>
|
||||
<template #label>{{ $ts.emojiColor }}</template>
|
||||
<template #caption>#RRGGBB</template>
|
||||
</FormInput>
|
||||
</FormSection>
|
||||
|
||||
<FormButton primary class="_formBlock" @click="emojiGenerate">{{ $ts.emojiGenerate }}</FormButton>
|
||||
|
||||
<FormSection>
|
||||
<template #label>{{ $ts.preview }}</template>
|
||||
<img :src="emojiUrl" class="img" :alt="emojiName"/>
|
||||
<a href="{{ emojiUrl }}"><p>{{ emojiUrl }}</p></a>
|
||||
</FormSection>
|
||||
<FormButton primary class="_formBlock" @click="emojiApproval">{{ $ts.emojiApproval }}</FormButton>
|
||||
</div>
|
||||
</MkSpacer>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import {defineComponent} from 'vue';
|
||||
import FormSwitch from '@/components/form/switch.vue';
|
||||
import FormInput from '@/components/form/input.vue';
|
||||
import FormTextarea from '@/components/form/textarea.vue';
|
||||
import FormRadios from '@/components/form/radios.vue';
|
||||
import FormSection from '@/components/form/section.vue';
|
||||
import FormButton from '@/components/ui/button.vue';
|
||||
import * as os from '@/os';
|
||||
import * as symbols from '@/symbols';
|
||||
import {defaultStore} from "@/store";
|
||||
import {stream} from "@/stream";
|
||||
|
||||
|
||||
export default defineComponent({
|
||||
components: {
|
||||
FormInput,
|
||||
FormTextarea,
|
||||
FormRadios,
|
||||
FormSection,
|
||||
FormSwitch,
|
||||
FormButton,
|
||||
},
|
||||
|
||||
emits: ['info'],
|
||||
|
||||
data() {
|
||||
return {
|
||||
[symbols.PAGE_INFO]: {
|
||||
title: this.$ts.emojiGen,
|
||||
icon: 'fas fa-laugh',
|
||||
bg: 'var(--bg)',
|
||||
},
|
||||
emojiName: '',
|
||||
text: '',
|
||||
emojiAlign: 'center',
|
||||
emojiSizeFixed: false,
|
||||
emojiStretch: false,
|
||||
font: 'notosans-mono-bold',
|
||||
emojiColor: '38BA91',
|
||||
emojiUrl: '',
|
||||
accentColors: ['#e36749', '#f29924', '#98c934', '#34c9a9', '#34a1c9', '#606df7', '#8d34c9', '#e84d83']
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
async init() {
|
||||
},
|
||||
|
||||
emojiGenerate() {
|
||||
//https://emoji-gen.ninja/result?text=%E7%B5%B5%E6%96%87%0A%E5%AD%97%E3%80%82&color=EC71A1FF&back_color=00000000&font=notosans-mono-bold&size_fixed=false&align=center&stretch=true&public_fg=true&locale=ja
|
||||
|
||||
const apiUrl = `https://emoji-gen.ninja/emoji`
|
||||
let query = {"text": encodeURI(this.text), "color": this.emojiColor.replace('#','') + "FF", "back_color": "00000000", "font": this.font, "size_fixed": this.emojiSizeFixed, "align": this.emojiAlign, "stretch": this.emojiStretch, "public_fg": "false", "locale": "ja"}
|
||||
|
||||
this.emojiUrl = apiUrl + '?' + Object.entries(query).map((e) => `${e[0]}=${e[1]}`).join('&');
|
||||
|
||||
|
||||
|
||||
},
|
||||
|
||||
emojiApproval: function () {
|
||||
|
||||
//emojiUploadでは、絵文字をdrive/files/upload-from-urlでアップロードしたあと、emojiAddでリネーム、登録をして、emojiAddの戻り値(絵文字のid)を返す
|
||||
const emojiUpload = () => new Promise(async resolve => {
|
||||
const marker = Math.random().toString(); // TODO: UUIDとか使う
|
||||
|
||||
//先にコネクションを貼って監視する
|
||||
const connection = stream.useChannel('main');
|
||||
connection.on('urlUploadFinished', async data => {
|
||||
if (data.marker === marker) {
|
||||
const fileId = await emojiAdd(data.file.id);
|
||||
resolve(fileId);
|
||||
connection.dispose();
|
||||
}
|
||||
});
|
||||
|
||||
await os.api('drive/files/upload-from-url', {
|
||||
url: this.emojiUrl,
|
||||
folderId: defaultStore.state.uploadFolder,
|
||||
marker
|
||||
});
|
||||
|
||||
//リネーム→登録→登録されたIDを返す
|
||||
const emojiAdd = (fileId) => new Promise<Record<string, any> | null>(async resolve => {
|
||||
await os.api('drive/files/update', {
|
||||
fileId,
|
||||
name: this.emojiName + '.png',
|
||||
});
|
||||
|
||||
const response = await os.api('admin/emoji/add', {
|
||||
fileId,
|
||||
})
|
||||
|
||||
resolve(response);
|
||||
})
|
||||
});
|
||||
|
||||
//emoji関数 admin/emoji/listでは、idによる検索ができないため、自分のidをuntilIdに入れて1つ前のidを取得してからそれをsinceIdに指定して、絵文字情報をlist→objectで取得する
|
||||
const emoji = (emojiId) => new Promise<Record<string, any> | null>(async resolve => {
|
||||
const sinceId = await os.api('admin/emoji/list', {
|
||||
limit: 1,
|
||||
untilId: emojiId.id
|
||||
})
|
||||
|
||||
if (!sinceId) {
|
||||
resolve(null);
|
||||
return;
|
||||
}
|
||||
|
||||
const id = await os.api('admin/emoji/list', {
|
||||
limit: 1,
|
||||
sinceId: sinceId[0].id
|
||||
});
|
||||
|
||||
if (!id) {
|
||||
resolve(null);
|
||||
return;
|
||||
}
|
||||
|
||||
resolve(id[0]);
|
||||
});
|
||||
|
||||
//edit関数には、emojiのobjectを渡す
|
||||
const edit = (emoji) => {
|
||||
os.popup(import('./emoji-edit-dialog.vue'), {
|
||||
emoji: emoji
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
(async () => {
|
||||
await this.emojiGenerate()
|
||||
const emojiId = await emojiUpload();//emojiIdはファイルID emojiUploadはファイルIDを返す
|
||||
const emojiObj = await emoji(emojiId);//emojiObjはemojiオブジェクト emoji関数はemojiIdを引数に受け取りemojiオブジェクトを返す
|
||||
edit(emojiObj);
|
||||
})();
|
||||
},
|
||||
|
||||
setAccentColor(color){
|
||||
this.emojiColor = color.replace('#', '');
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.cwepdizn {
|
||||
::v-deep(.cwepdizn-colors) {
|
||||
text-align: center;
|
||||
|
||||
> .row {
|
||||
> .color {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
width: 64px;
|
||||
height: 64px;
|
||||
border-radius: 8px;
|
||||
|
||||
> .preview {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
margin: auto;
|
||||
width: 42px;
|
||||
height: 42px;
|
||||
border-radius: 4px;
|
||||
box-shadow: 0 2px 4px rgb(0 0 0 / 30%);
|
||||
transition: transform 0.15s ease;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
> .preview {
|
||||
transform: scale(1.1);
|
||||
}
|
||||
}
|
||||
|
||||
&.active {
|
||||
box-shadow: 0 0 0 2px var(--divider) inset;
|
||||
}
|
||||
|
||||
&.rounded {
|
||||
border-radius: 999px;
|
||||
|
||||
> .preview {
|
||||
border-radius: 999px;
|
||||
}
|
||||
}
|
||||
|
||||
&.char {
|
||||
line-height: 42px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -129,6 +129,13 @@ const add = async (ev: MouseEvent) => {
|
||||
os.promiseDialog(promise);
|
||||
};
|
||||
|
||||
const create = async (ev: MouseEvent) => {
|
||||
await os.popupMenu([
|
||||
{ type: 'button', text: '絵文字ジェネレーター', action: () => window.open('https://emoji-gen.ninja/') },
|
||||
{ type: 'button', text: 'MEGAMOJI', action: () => window.open('https://zk-phi.github.io/MEGAMOJI/') }
|
||||
], (ev.currentTarget ?? ev.target ?? undefined) as HTMLElement | undefined);
|
||||
};
|
||||
|
||||
const edit = (emoji) => {
|
||||
os.popup(import('./emoji-edit-dialog.vue'), {
|
||||
emoji: emoji
|
||||
@ -275,10 +282,16 @@ defineExpose({
|
||||
icon: 'fas fa-plus',
|
||||
text: i18n.ts.addEmoji,
|
||||
handler: add,
|
||||
}, {
|
||||
asFullButton: true,
|
||||
icon: 'fas fa-pencil-alt',
|
||||
text: '絵文字を作成',
|
||||
handler: create,
|
||||
}, {
|
||||
icon: 'fas fa-ellipsis-h',
|
||||
handler: menu,
|
||||
}],
|
||||
|
||||
tabs: [{
|
||||
active: tab.value === 'local',
|
||||
title: i18n.ts.local,
|
||||
|
@ -120,6 +120,11 @@ export default defineComponent({
|
||||
text: i18n.ts.customEmojis,
|
||||
to: '/admin/emojis',
|
||||
active: page.value === 'emojis',
|
||||
}, {
|
||||
icon: 'fas fa-laugh',
|
||||
text: i18n.ts.emojiGen,
|
||||
to: '/admin/emojigen',
|
||||
active: page.value === 'emojigen',
|
||||
}, {
|
||||
icon: 'fas fa-globe',
|
||||
text: i18n.ts.federation,
|
||||
@ -214,6 +219,7 @@ export default defineComponent({
|
||||
case 'overview': return defineAsyncComponent(() => import('./overview.vue'));
|
||||
case 'users': return defineAsyncComponent(() => import('./users.vue'));
|
||||
case 'emojis': return defineAsyncComponent(() => import('./emojis.vue'));
|
||||
case 'emojigen': return defineAsyncComponent(() => import('./emojigen.vue'));
|
||||
case 'federation': return defineAsyncComponent(() => import('../federation.vue'));
|
||||
case 'queue': return defineAsyncComponent(() => import('./queue.vue'));
|
||||
case 'files': return defineAsyncComponent(() => import('./files.vue'));
|
||||
|
@ -43,8 +43,8 @@
|
||||
<header>
|
||||
<MkUserName class="name" :user="user"/>
|
||||
<span class="acct">@{{ acct(user) }}</span>
|
||||
<span v-if="user.isAdmin" class="staff"><i class="fas fa-bookmark"></i></span>
|
||||
<span v-if="user.isModerator" class="staff"><i class="far fa-bookmark"></i></span>
|
||||
<span v-if="user.isAdmin" class="staff"><img style="height: 20px;transform: translateY(4px);" src="https://s3.nca10.net/misskey/622dcedb-865a-4668-9779-41b02aa50927.png"/></span>
|
||||
<span v-if="user.isModerator" class="staff"><img style="height: 20px;transform: translateY(4px);" src="https://s3.nca10.net/misskey/622dcedb-865a-4668-9779-41b02aa50927.png"/></span>
|
||||
<span v-if="user.isSilenced" class="punished"><i class="fas fa-microphone-slash"></i></span>
|
||||
<span v-if="user.isSuspended" class="punished"><i class="fas fa-snowflake"></i></span>
|
||||
</header>
|
||||
@ -206,6 +206,8 @@ defineExpose({
|
||||
> .staff {
|
||||
margin-left: 0.5em;
|
||||
color: var(--badge);
|
||||
height: 20px;
|
||||
transform: translateY(4px);
|
||||
}
|
||||
|
||||
> .punished {
|
||||
|
@ -3,7 +3,7 @@
|
||||
<MkPagination ref="pagingComponent" :pagination="pagination">
|
||||
<template #empty>
|
||||
<div class="_fullinfo">
|
||||
<img src="https://xn--931a.moe/assets/info.jpg" class="_ghost"/>
|
||||
<img src="https://s3.nca10.net/misskey/3e1a7f0c-b106-41a1-b4ea-3ac896a0f3a4.png" class="_ghost"/>
|
||||
<div>{{ $ts.noNotes }}</div>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -3,7 +3,7 @@
|
||||
<MkPagination ref="paginationComponent" :pagination="pagination">
|
||||
<template #empty>
|
||||
<div class="_fullinfo">
|
||||
<img src="https://xn--931a.moe/assets/info.jpg" class="_ghost"/>
|
||||
<img src="https://s3.nca10.net/misskey/3e1a7f0c-b106-41a1-b4ea-3ac896a0f3a4.png" class="_ghost"/>
|
||||
<div>{{ $ts.noFollowRequests }}</div>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -30,7 +30,7 @@
|
||||
</MkA>
|
||||
</div>
|
||||
<div v-if="!fetching && messages.length == 0" class="_fullinfo">
|
||||
<img src="https://xn--931a.moe/assets/info.jpg" class="_ghost"/>
|
||||
<img src="https://s3.nca10.net/misskey/3e1a7f0c-b106-41a1-b4ea-3ac896a0f3a4.png" class="_ghost"/>
|
||||
<div>{{ $ts.noHistory }}</div>
|
||||
</div>
|
||||
<MkLoading v-if="fetching"/>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="ipledcug">
|
||||
<div class="_fullinfo">
|
||||
<img src="https://xn--931a.moe/assets/not-found.jpg" class="_ghost"/>
|
||||
<img src="https://s3.nca10.net/misskey/20b71322-00a7-4f57-8eb0-947df6cc0ccb.png" class="_ghost"/>
|
||||
<div>{{ $ts.notFoundDescription }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -2,7 +2,7 @@
|
||||
<MkSpacer v-if="token" :content-max="700" :margin-min="16" :margin-max="32">
|
||||
<div class="_formRoot">
|
||||
<FormInput v-model="password" type="password" class="_formBlock">
|
||||
<template #prefix><i class="fas fa-lock"></i></template>
|
||||
<template #prefix><i style="color: #96CCE7;" class="fas fa-lock"></i></template>
|
||||
<template #label>{{ i18n.ts.newPassword }}</template>
|
||||
</FormInput>
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
<FormPagination ref="list" :pagination="pagination">
|
||||
<template #empty>
|
||||
<div class="_fullinfo">
|
||||
<img src="https://xn--931a.moe/assets/info.jpg" class="_ghost"/>
|
||||
<img src="https://s3.nca10.net/misskey/3e1a7f0c-b106-41a1-b4ea-3ac896a0f3a4.png" class="_ghost"/>
|
||||
<div>{{ $ts.nothing }}</div>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -19,10 +19,10 @@
|
||||
<MkUserName class="name" :user="user" :nowrap="true"/>
|
||||
<div class="bottom">
|
||||
<span class="username"><MkAcct :user="user" :detail="true" /></span>
|
||||
<span v-if="user.isAdmin" :title="$ts.isAdmin" style="color: var(--badge);"><i class="fas fa-bookmark"></i></span>
|
||||
<span v-if="!user.isAdmin && user.isModerator" :title="$ts.isModerator" style="color: var(--badge);"><i class="far fa-bookmark"></i></span>
|
||||
<span v-if="user.isLocked" :title="$ts.isLocked"><i class="fas fa-lock"></i></span>
|
||||
<span v-if="user.isBot" :title="$ts.isBot"><i class="fas fa-robot"></i></span>
|
||||
<span v-if="user.isAdmin" :title="$ts.isAdmin" style="color: var(--badge);"><img style="height: 20px; transform: translateY(4px);" src="https://s3.nca10.net/misskey/622dcedb-865a-4668-9779-41b02aa50927.png"/></span>
|
||||
<span v-if="!user.isAdmin && user.isModerator" :title="$ts.isModerator" style="color: var(--badge);"><img style="height: 20px; transform: translateY(4px);" src="https://s3.nca10.net/misskey/622dcedb-865a-4668-9779-41b02aa50927.png"/></span>
|
||||
<span v-if="user.isLocked" :title="$ts.isLocked"><i style="color: #96CCE7;" class="fas fa-lock"></i></span>
|
||||
<span v-if="user.isBot" :title="$ts.isBot"><svg xmlns="http://www.w3.org/2000/svg" class="is-bot-icon" fill="#96CCE7" viewBox="0 0 512 512"><title>Hardware Chip</title><path d="M352 128H160a32 32 0 00-32 32v192a32 32 0 0032 32h192a32 32 0 0032-32V160a32 32 0 00-32-32zm0 216a8 8 0 01-8 8H168a8 8 0 01-8-8V168a8 8 0 018-8h176a8 8 0 018 8z" fill="none"/><rect x="160" y="160" width="192" height="192" rx="8" ry="8"/><path d="M464 192a16 16 0 000-32h-16v-32a64.07 64.07 0 00-64-64h-32V48a16 16 0 00-32 0v16h-48V48a16 16 0 00-32 0v16h-48V48a16 16 0 00-32 0v16h-32a64.07 64.07 0 00-64 64v32H48a16 16 0 000 32h16v48H48a16 16 0 000 32h16v48H48a16 16 0 000 32h16v32a64.07 64.07 0 0064 64h32v16a16 16 0 0032 0v-16h48v16a16 16 0 0032 0v-16h48v16a16 16 0 0032 0v-16h32a64.07 64.07 0 0064-64v-32h16a16 16 0 000-32h-16v-48h16a16 16 0 000-32h-16v-48zm-80 160a32 32 0 01-32 32H160a32 32 0 01-32-32V160a32 32 0 0132-32h192a32 32 0 0132 32z"/></svg></span>
|
||||
</div>
|
||||
</div>
|
||||
<span v-if="$i && $i.id != user.id && user.isFollowed" class="followed">{{ $ts.followsYou }}</span>
|
||||
@ -36,10 +36,10 @@
|
||||
<MkUserName :user="user" :nowrap="false" class="name"/>
|
||||
<div class="bottom">
|
||||
<span class="username"><MkAcct :user="user" :detail="true" /></span>
|
||||
<span v-if="user.isAdmin" :title="$ts.isAdmin" style="color: var(--badge);"><i class="fas fa-bookmark"></i></span>
|
||||
<span v-if="!user.isAdmin && user.isModerator" :title="$ts.isModerator" style="color: var(--badge);"><i class="far fa-bookmark"></i></span>
|
||||
<span v-if="user.isLocked" :title="$ts.isLocked"><i class="fas fa-lock"></i></span>
|
||||
<span v-if="user.isBot" :title="$ts.isBot"><i class="fas fa-robot"></i></span>
|
||||
<span v-if="user.isAdmin" :title="$ts.isAdmin" style="color: var(--badge);"><img style="height: 20px; transform: translateY(4px);" src="https://s3.nca10.net/misskey/622dcedb-865a-4668-9779-41b02aa50927.png"/></span>
|
||||
<span v-if="!user.isAdmin && user.isModerator" :title="$ts.isModerator" style="color: var(--badge);"><img style="height: 20px; transform: translateY(4px);" src="https://s3.nca10.net/misskey/622dcedb-865a-4668-9779-41b02aa50927.png"/></span>
|
||||
<span v-if="user.isLocked" :title="$ts.isLocked"><i style="color: #96CCE7;" class="fas fa-lock"></i></span>
|
||||
<span v-if="user.isBot" :title="$ts.isBot"><svg xmlns="http://www.w3.org/2000/svg" class="is-bot-icon" fill="#96CCE7" viewBox="0 0 512 512"><title>Hardware Chip</title><path d="M352 128H160a32 32 0 00-32 32v192a32 32 0 0032 32h192a32 32 0 0032-32V160a32 32 0 00-32-32zm0 216a8 8 0 01-8 8H168a8 8 0 01-8-8V168a8 8 0 018-8h176a8 8 0 018 8z" fill="none"/><rect x="160" y="160" width="192" height="192" rx="8" ry="8"/><path d="M464 192a16 16 0 000-32h-16v-32a64.07 64.07 0 00-64-64h-32V48a16 16 0 00-32 0v16h-48V48a16 16 0 00-32 0v16h-48V48a16 16 0 00-32 0v16h-32a64.07 64.07 0 00-64 64v32H48a16 16 0 000 32h16v48H48a16 16 0 000 32h16v48H48a16 16 0 000 32h16v32a64.07 64.07 0 0064 64h32v16a16 16 0 0032 0v-16h48v16a16 16 0 0032 0v-16h48v16a16 16 0 0032 0v-16h32a64.07 64.07 0 0064-64v-32h16a16 16 0 000-32h-16v-48h16a16 16 0 000-32h-16v-48zm-80 160a32 32 0 01-32 32H160a32 32 0 01-32-32V160a32 32 0 0132-32h192a32 32 0 0132 32z"/></svg></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="description">
|
||||
@ -293,6 +293,12 @@ export default defineComponent({
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.is-bot-icon {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
transform: translateY(5px);
|
||||
}
|
||||
|
||||
.fade-enter-active,
|
||||
.fade-leave-active {
|
||||
transition: opacity 0.125s ease;
|
||||
@ -399,7 +405,7 @@ export default defineComponent({
|
||||
> .bottom {
|
||||
> * {
|
||||
display: inline-block;
|
||||
margin-right: 16px;
|
||||
margin-right: 8px;
|
||||
line-height: 20px;
|
||||
opacity: 0.8;
|
||||
|
||||
|
@ -5,13 +5,13 @@
|
||||
<XTimeline class="tl"/>
|
||||
<div class="shape1"></div>
|
||||
<div class="shape2"></div>
|
||||
<img src="/client-assets/misskey.svg" class="misskey"/>
|
||||
<img src="/client-assets/nca10.net.svg" class="misskey"/>
|
||||
<div class="emojis">
|
||||
<MkEmoji :normal="true" :no-style="true" emoji="👍"/>
|
||||
<MkEmoji :normal="true" :no-style="true" emoji="❤"/>
|
||||
<MkEmoji :normal="true" :no-style="true" emoji="😆"/>
|
||||
<MkEmoji :normal="true" :no-style="true" emoji="🎉"/>
|
||||
<MkEmoji :normal="true" :no-style="true" emoji="🍮"/>
|
||||
<MkEmoji :normal="true" :no-style="true" emoji="💤"/>
|
||||
<MkEmoji :normal="true" :no-style="true" emoji="🧬"/>
|
||||
<MkEmoji :normal="true" :no-style="true" emoji="💙"/>
|
||||
<MkEmoji :normal="true" :no-style="true" emoji="🐟"/>
|
||||
<MkEmoji :normal="true" :no-style="true" emoji="👾"/>
|
||||
</div>
|
||||
<div class="main _panel">
|
||||
<div class="bg">
|
||||
@ -27,13 +27,12 @@
|
||||
<div class="desc" v-html="meta.description || $ts.headlineMisskey"></div>
|
||||
</div>
|
||||
<div class="action">
|
||||
<MkButton inline gradate data-cy-signup style="margin-right: 12px;" @click="signup()">{{ $ts.signup }}</MkButton>
|
||||
<MkButton inline data-cy-signin @click="signin()">{{ $ts.login }}</MkButton>
|
||||
<MkButton inline data-cy-signin @click="signin()"><i class="fas fa-lock"></i></MkButton>
|
||||
</div>
|
||||
<div v-if="onlineUsersCount && stats" class="status">
|
||||
<div>
|
||||
<I18n :src="$ts.nUsers" text-tag="span" class="users">
|
||||
<template #n><b>{{ number(stats.originalUsersCount) }}</b></template>
|
||||
<template #n><b>3</b></template>
|
||||
</I18n>
|
||||
<I18n :src="$ts.nNotes" text-tag="span" class="notes">
|
||||
<template #n><b>{{ number(stats.originalNotesCount) }}</b></template>
|
||||
@ -296,7 +295,7 @@ export default defineComponent({
|
||||
|
||||
> .online {
|
||||
::v-deep(b) {
|
||||
color: #41b781;
|
||||
color: #B0E7CB;
|
||||
}
|
||||
|
||||
::v-deep(span) {
|
||||
|
@ -12,8 +12,7 @@
|
||||
<div class="desc" v-html="meta.description || $ts.headlineMisskey"></div>
|
||||
</div>
|
||||
<div class="action">
|
||||
<MkButton class="signup" inline gradate @click="signup()">{{ $ts.signup }}</MkButton>
|
||||
<MkButton class="signin" inline @click="signin()">{{ $ts.login }}</MkButton>
|
||||
<MkButton class="signin" inline @click="signin()"><i class="fas fa-lock"></i></MkButton>
|
||||
</div>
|
||||
<div v-if="onlineUsersCount && stats" class="status">
|
||||
<div>
|
||||
@ -29,7 +28,7 @@
|
||||
</I18n>
|
||||
</div>
|
||||
</div>
|
||||
<img src="/client-assets/misskey.svg" class="misskey"/>
|
||||
<img src="/client-assets/nca10.net.svg" class="misskey"/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -11,7 +11,7 @@
|
||||
<MkEmoji :normal="true" :no-style="true" emoji="🍮"/>
|
||||
</div>
|
||||
<div class="main">
|
||||
<img src="/client-assets/misskey.svg" class="misskey"/>
|
||||
<img src="/client-assets/nca10.net.svg" class="misskey"/>
|
||||
<div class="form _panel">
|
||||
<div class="bg">
|
||||
<div class="fade"></div>
|
||||
@ -24,8 +24,7 @@
|
||||
<div class="desc" v-html="meta.description || $ts.headlineMisskey"></div>
|
||||
</div>
|
||||
<div class="action">
|
||||
<MkButton inline gradate @click="signup()">{{ $ts.signup }}</MkButton>
|
||||
<MkButton inline @click="signin()">{{ $ts.login }}</MkButton>
|
||||
<MkButton inline @click="signin()"><i class="fas fa-lock"></i></MkButton>
|
||||
</div>
|
||||
<div v-if="onlineUsersCount && stats" class="status">
|
||||
<div>
|
||||
@ -267,7 +266,7 @@ export default defineComponent({
|
||||
|
||||
> .online {
|
||||
::v-deep(b) {
|
||||
color: #41b781;
|
||||
color: #B0E7CB;
|
||||
}
|
||||
|
||||
::v-deep(span) {
|
||||
|
@ -10,7 +10,7 @@
|
||||
</MkInput>
|
||||
<MkInput v-model="password" type="password" data-cy-admin-password class="_formBlock">
|
||||
<template #label>{{ $ts.password }}</template>
|
||||
<template #prefix><i class="fas fa-lock"></i></template>
|
||||
<template #prefix><i style="color: #96CCE7;" class="fas fa-lock"></i></template>
|
||||
</MkInput>
|
||||
<div class="bottom _formBlock">
|
||||
<MkButton gradate type="submit" :disabled="submitting" data-cy-admin-ok>
|
||||
|
@ -33,6 +33,7 @@ export const builtinThemes = [
|
||||
require('@/themes/d-ice.json5'),
|
||||
require('@/themes/d-pumpkin.json5'),
|
||||
require('@/themes/d-black.json5'),
|
||||
require('@/themes/d-ncat.json5'),
|
||||
] as Theme[];
|
||||
|
||||
let timeout = null;
|
||||
|
@ -257,8 +257,8 @@ type Plugin = {
|
||||
*/
|
||||
export class ColdDeviceStorage {
|
||||
public static default = {
|
||||
lightTheme: require('@/themes/l-light.json5') as Theme,
|
||||
darkTheme: require('@/themes/d-dark.json5') as Theme,
|
||||
lightTheme: require('@/themes/d-ncat.json5') as Theme,
|
||||
darkTheme: require('@/themes/d-ncat.json5') as Theme,
|
||||
syncDeviceDarkMode: true,
|
||||
plugins: [] as Plugin[],
|
||||
mediaVolume: 0.5,
|
||||
|
20
packages/client/src/themes/d-ncat.json5
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
id: '5cba19a8-b0e0-42b2-9ab2-35ffd623b045',
|
||||
base: 'dark',
|
||||
desc: 'ぬぁ~んဗ',
|
||||
name: 'Ncat.',
|
||||
props: {
|
||||
bg: '#13141C',
|
||||
fg: '#FFF',
|
||||
link: '#B0E7E7',
|
||||
navBg: '@bg',
|
||||
panel: '@bg',
|
||||
accent: '#96CCE7',
|
||||
renote: '#B0E7CB',
|
||||
success: '#B0E7CB',
|
||||
error: '#FF9D9D',
|
||||
warn: '#E7E7B0',
|
||||
hashtag: '#96CCE7'
|
||||
},
|
||||
author: '@n@nca10.net',
|
||||
}
|
@ -15,9 +15,6 @@
|
||||
</component>
|
||||
</template>
|
||||
<div class="divider"></div>
|
||||
<MkA v-if="$i.isAdmin || $i.isModerator" v-click-anime class="item" active-class="active" to="/admin">
|
||||
<i class="fas fa-door-open fa-fw"></i><span class="text">{{ $ts.controlPanel }}</span>
|
||||
</MkA>
|
||||
<button v-click-anime class="item _button" @click="more">
|
||||
<i class="fa fa-ellipsis-h fa-fw"></i><span class="text">{{ $ts.more }}</span>
|
||||
<span v-if="otherMenuItemIndicated" class="indicator"><i class="fas fa-circle"></i></span>
|
||||
@ -25,6 +22,9 @@
|
||||
<MkA v-click-anime class="item" active-class="active" to="/settings">
|
||||
<i class="fas fa-cog fa-fw"></i><span class="text">{{ $ts.settings }}</span>
|
||||
</MkA>
|
||||
<MkA v-if="$i.isAdmin || $i.isModerator" v-click-anime class="item" active-class="active" to="/admin">
|
||||
<i class="fas fa-door-open fa-fw"></i><span class="text">{{ $ts.controlPanel }}</span>
|
||||
</MkA>
|
||||
<button class="item _button post" data-cy-open-post-form @click="post">
|
||||
<i class="fas fa-pencil-alt fa-fw"></i><span class="text">{{ $ts.note }}</span>
|
||||
</button>
|
||||
|
@ -15,9 +15,6 @@
|
||||
</component>
|
||||
</template>
|
||||
<div class="divider"></div>
|
||||
<MkA v-if="$i.isAdmin || $i.isModerator" v-click-anime class="item" active-class="active" to="/admin">
|
||||
<i class="fas fa-door-open fa-fw"></i><span class="text">{{ $ts.controlPanel }}</span>
|
||||
</MkA>
|
||||
<button v-click-anime class="item _button" @click="more">
|
||||
<i class="fa fa-ellipsis-h fa-fw"></i><span class="text">{{ $ts.more }}</span>
|
||||
<span v-if="otherMenuItemIndicated" class="indicator"><i class="fas fa-circle"></i></span>
|
||||
@ -25,6 +22,9 @@
|
||||
<MkA v-click-anime class="item" active-class="active" to="/settings">
|
||||
<i class="fas fa-cog fa-fw"></i><span class="text">{{ $ts.settings }}</span>
|
||||
</MkA>
|
||||
<MkA v-if="$i.isAdmin || $i.isModerator" v-click-anime class="item" active-class="active" to="/admin">
|
||||
<i class="fas fa-door-open fa-fw"></i><span class="text">{{ $ts.controlPanel }}</span>
|
||||
</MkA>
|
||||
<button class="item _button post" data-cy-open-post-form @click="os.post">
|
||||
<i class="fas fa-pencil-alt fa-fw"></i><span class="text">{{ $ts.note }}</span>
|
||||
</button>
|
||||
|
@ -20,9 +20,6 @@
|
||||
</component>
|
||||
</template>
|
||||
<div class="divider"></div>
|
||||
<MkA v-if="$i.isAdmin || $i.isModerator" v-click-anime class="item" active-class="active" to="/admin" :behavior="settingsWindowed ? 'modalWindow' : null">
|
||||
<i class="fas fa-door-open fa-fw"></i><span class="text">{{ $ts.controlPanel }}</span>
|
||||
</MkA>
|
||||
<button v-click-anime class="item _button" @click="more">
|
||||
<i class="fas fa-ellipsis-h fa-fw"></i><span class="text">{{ $ts.more }}</span>
|
||||
<span v-if="otherNavItemIndicated" class="indicator"><i class="fas fa-circle"></i></span>
|
||||
@ -30,6 +27,9 @@
|
||||
<MkA v-click-anime class="item" active-class="active" to="/settings" :behavior="settingsWindowed ? 'modalWindow' : null">
|
||||
<i class="fas fa-cog fa-fw"></i><span class="text">{{ $ts.settings }}</span>
|
||||
</MkA>
|
||||
<MkA v-if="$i.isAdmin || $i.isModerator" v-click-anime class="item" active-class="active" to="/admin" :behavior="settingsWindowed ? 'modalWindow' : null">
|
||||
<i class="fas fa-door-open fa-fw"></i><span class="text">{{ $ts.controlPanel }}</span>
|
||||
</MkA>
|
||||
<div class="divider"></div>
|
||||
<div class="about">
|
||||
<MkA v-click-anime class="link" to="/about">
|
||||
@ -49,7 +49,7 @@ import { menuDef } from '@/menu';
|
||||
import { openAccountMenu } from '@/account';
|
||||
import MkButton from '@/components/ui/button.vue';
|
||||
import { StickySidebar } from '@/scripts/sticky-sidebar';
|
||||
//import MisskeyLogo from '@assets/client/misskey.svg';
|
||||
//import MisskeyLogo from '@assets/client/nca10.net.svg';
|
||||
|
||||
export default defineComponent({
|
||||
components: {
|
||||
|
@ -7,7 +7,6 @@
|
||||
<div class="desc" v-html="meta.description || $ts.introMisskey"></div>
|
||||
</div>
|
||||
<div class="action">
|
||||
<button class="_button primary" @click="signup()">{{ $ts.signup }}</button>
|
||||
<button class="_button" @click="signin()">{{ $ts.login }}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="mk-app">
|
||||
<a v-if="root" href="https://github.com/misskey-dev/misskey" target="_blank" class="github-corner" aria-label="View source on GitHub"><svg width="80" height="80" viewBox="0 0 250 250" style="fill:var(--panel); color:var(--fg); position: fixed; z-index: 10; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a>
|
||||
<a v-if="root" href="https://github.com/nullnyat/nca10.net" target="_blank" class="github-corner" aria-label="View source on GitHub"><svg width="80" height="80" viewBox="0 0 250 250" style="fill:var(--panel); color:var(--fg); position: fixed; z-index: 10; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a>
|
||||
|
||||
<div v-if="!narrow && !root" class="side">
|
||||
<XKanban class="kanban" full/>
|
||||
@ -40,7 +40,6 @@
|
||||
<MkA to="/featured" class="link" active-class="active"><i class="fas fa-fire-alt icon"></i>{{ $ts.featured }}</MkA>
|
||||
<MkA to="/channels" class="link" active-class="active"><i class="fas fa-satellite-dish icon"></i>{{ $ts.channel }}</MkA>
|
||||
<div class="action">
|
||||
<button class="_buttonPrimary" @click="signup()">{{ $ts.signup }}</button>
|
||||
<button class="_button" @click="signin()">{{ $ts.login }}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -17,7 +17,6 @@
|
||||
</div>
|
||||
<div class="right">
|
||||
<button class="_button search" @click="search()"><i class="fas fa-search icon"></i><span>{{ $ts.search }}</span></button>
|
||||
<button class="_buttonPrimary signup" @click="signup()">{{ $ts.signup }}</button>
|
||||
<button class="_button login" @click="signin()">{{ $ts.login }}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -11,7 +11,6 @@
|
||||
<div class="desc" v-html="meta.description || $ts.introMisskey"></div>
|
||||
</div>
|
||||
<div class="action">
|
||||
<button class="_buttonPrimary" @click="signup()">{{ $ts.signup }}</button>
|
||||
<button class="_button" @click="signin()">{{ $ts.login }}</button>
|
||||
</div>
|
||||
<div class="announcements panel">
|
||||
|
@ -4,17 +4,17 @@
|
||||
:points="pointsNote"
|
||||
fill="none"
|
||||
stroke-width="1"
|
||||
stroke="#41ddde"/>
|
||||
stroke="#96CCE7"/>
|
||||
<polyline
|
||||
:points="pointsReply"
|
||||
fill="none"
|
||||
stroke-width="1"
|
||||
stroke="#f7796c"/>
|
||||
stroke="#FF9D9D"/>
|
||||
<polyline
|
||||
:points="pointsRenote"
|
||||
fill="none"
|
||||
stroke-width="1"
|
||||
stroke="#a1de41"/>
|
||||
stroke="#B0E7CB"/>
|
||||
<polyline
|
||||
:points="pointsTotal"
|
||||
fill="none"
|
||||
|
@ -133,7 +133,7 @@ defineExpose<WidgetComponentExpose>({
|
||||
|
||||
&.isHoliday {
|
||||
> .day {
|
||||
color: #ef95a0;
|
||||
color: #96CCE7;
|
||||
}
|
||||
}
|
||||
|
||||
@ -151,6 +151,7 @@ defineExpose<WidgetComponentExpose>({
|
||||
margin: 10px 0;
|
||||
line-height: 32px;
|
||||
font-size: 1.75em;
|
||||
color: #96CCE7;
|
||||
}
|
||||
}
|
||||
|
||||
@ -193,19 +194,19 @@ defineExpose<WidgetComponentExpose>({
|
||||
|
||||
&:nth-child(1) {
|
||||
> .meter > .val {
|
||||
background: #f7796c;
|
||||
background: #96CCE7;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(2) {
|
||||
> .meter > .val {
|
||||
background: #a1de41;
|
||||
background: #CECEFF;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(3) {
|
||||
> .meter > .val {
|
||||
background: #41ddde;
|
||||
background: #B0E7CB;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -68,7 +68,7 @@ defineExpose<WidgetComponentExpose>({
|
||||
|
||||
> .text {
|
||||
::v-deep(b) {
|
||||
color: #41b781;
|
||||
color: #96E7E7;
|
||||
}
|
||||
|
||||
::v-deep(span) {
|
||||
|
@ -3,8 +3,8 @@
|
||||
<svg :viewBox="`0 0 ${ viewBoxX } ${ viewBoxY }`">
|
||||
<defs>
|
||||
<linearGradient :id="cpuGradientId" x1="0" x2="0" y1="1" y2="0">
|
||||
<stop offset="0%" stop-color="hsl(180, 80%, 70%)"></stop>
|
||||
<stop offset="100%" stop-color="hsl(0, 80%, 70%)"></stop>
|
||||
<stop offset="0%" stop-color="#96CCE7"></stop>
|
||||
<stop offset="100%" stop-color="#FF9D9D"></stop>
|
||||
</linearGradient>
|
||||
<mask :id="cpuMaskId" x="0" y="0" :width="viewBoxX" :height="viewBoxY">
|
||||
<polygon
|
||||
@ -36,8 +36,8 @@
|
||||
<svg :viewBox="`0 0 ${ viewBoxX } ${ viewBoxY }`">
|
||||
<defs>
|
||||
<linearGradient :id="memGradientId" x1="0" x2="0" y1="1" y2="0">
|
||||
<stop offset="0%" stop-color="hsl(180, 80%, 70%)"></stop>
|
||||
<stop offset="100%" stop-color="hsl(0, 80%, 70%)"></stop>
|
||||
<stop offset="0%" stop-color="#96CCE7"></stop>
|
||||
<stop offset="100%" stop-color="#FF9D9D"></stop>
|
||||
</linearGradient>
|
||||
<mask :id="memMaskId" x="0" y="0" :width="viewBoxX" :height="viewBoxY">
|
||||
<polygon
|
||||
|
@ -3,40 +3,40 @@
|
||||
<svg :viewBox="`0 0 ${ viewBoxX } ${ viewBoxY }`">
|
||||
<polygon
|
||||
:points="inPolygonPoints"
|
||||
fill="#94a029"
|
||||
fill="#B0E7CB"
|
||||
fill-opacity="0.5"
|
||||
/>
|
||||
<polyline
|
||||
:points="inPolylinePoints"
|
||||
fill="none"
|
||||
stroke="#94a029"
|
||||
stroke="#B0E7CB"
|
||||
stroke-width="1"
|
||||
/>
|
||||
<circle
|
||||
:cx="inHeadX"
|
||||
:cy="inHeadY"
|
||||
r="1.5"
|
||||
fill="#94a029"
|
||||
fill="#B0E7CB"
|
||||
/>
|
||||
<text x="1" y="5">NET rx <tspan>{{ bytes(inRecent) }}</tspan></text>
|
||||
</svg>
|
||||
<svg :viewBox="`0 0 ${ viewBoxX } ${ viewBoxY }`">
|
||||
<polygon
|
||||
:points="outPolygonPoints"
|
||||
fill="#ff9156"
|
||||
fill="#E7BA95"
|
||||
fill-opacity="0.5"
|
||||
/>
|
||||
<polyline
|
||||
:points="outPolylinePoints"
|
||||
fill="none"
|
||||
stroke="#ff9156"
|
||||
stroke="#E7BA95"
|
||||
stroke-width="1"
|
||||
/>
|
||||
<circle
|
||||
:cx="outHeadX"
|
||||
:cy="outHeadY"
|
||||
r="1.5"
|
||||
fill="#ff9156"
|
||||
fill="#E7BA95"
|
||||
/>
|
||||
<text x="1" y="5">NET tx <tspan>{{ bytes(outRecent) }}</tspan></text>
|
||||
</svg>
|
||||
|
@ -14,7 +14,7 @@
|
||||
:stroke-dashoffset="strokeDashoffset"
|
||||
fill="none"
|
||||
stroke-width="0.1"
|
||||
:stroke="color"
|
||||
stroke="#CECEFF"
|
||||
/>
|
||||
<text x="50%" y="50%" dy="0.05" text-anchor="middle">{{ (value * 100).toFixed(0) }}%</text>
|
||||
</svg>
|
||||
|