forked from gbtami/pychess-variants
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathabout.ts
130 lines (127 loc) · 8.5 KB
/
about.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
import { h, VNode } from 'snabbdom';
import { _ } from './i18n';
import { PyChessModel } from "./types";
export function aboutView(model: PyChessModel): VNode[] {
const untitled = [
_("\"To me, how we've got here today is owing to Stockfish in a BIG way. They rallied global volunteers to come together in the open-source spirit and create such a powerful engine for FREE. That's a lot of great minds and computing power they've managed to harness."),
_("Then we've got Lichess to thank. Lichess was also born out of the same open-source spirit, and it too drew in great people as well. Once Lichess incorporated Stockfish as its brains, the rest is history."),
_("Lichess enables the online, real-time, and competitive aspects of game-play. They also bring the enormous power of Stockfish to the masses, who can now benefit from it without configuring a local GUI. I believe this development turns out to be of great consequence and significance."),
_("Later on, developers close to the Lichess project eventually extended Stockfish into Multivariant-Stockfish, in order to support Crazyhouse et al. The father of Fairy-Stockfish, Fabian, is also one of those devs (still) working on that fork, and he later took several steps further in terms of variant support and extensibility. Thus Fairy-Stockfish was born, so powerful because it builds on the Stockfish project."),
_("Then comes our beloved pychess-variants, which again very smartly harnesses the underlying superpowers of the big projects. Same online, real-time, and competitive aspects. Same clean and familiar Lichess look and feel. Plus the power of Stockfish!\""),
]
return [
h('div.about', [
h('img.center', { attrs: { src: `${model.assetURL}/favicon/favicon-96x96.png` } }),
h('h1', { attrs: { align: 'center' } }, _('About pychess')),
h('p', _('Pychess is a free, open-source chess server designed to play several chess variants.')),
h('p', [
// TODO Automate the generation of this list
_("Currently supported games are "),
h('a', { attrs: { href: 'https://www.pychess.org/variants/makruk' } }, 'Makruk'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/makpong' } }, 'Makpong'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/cambodian' } }, 'Ouk Chaktrang'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/sittuyin' } }, 'Sittuyin'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/asean' } }, 'ASEAN Chess'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/shogi' } }, 'Shogi'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/minishogi' } }, 'Minishogi'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/kyotoshogi' } }, 'Kyoto shogi'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/dobutsu' } }, 'Dobutsu shogi'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/gorogoro' } }, 'Gorogoro shogi'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/xiangqi' } }, 'Xiangqi'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/manchu' } }, 'Manchu'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/janggi' } }, 'Janggi'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/minixiangqi' } }, 'Minixiangqi'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/placement' } }, 'Placement'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/crazyhouse' } }, 'Crazyhouse'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/atomic' } }, 'Atomic'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/duck' } }, 'Duck chess'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/seirawan' } }, 'S-chess'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/capablanca' } }, 'Capablanca'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/gothic' } }, 'Gothic'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/grand' } }, 'Grand'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/shako' } }, 'Shako'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/shogun' } }, 'Shogun'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/orda' } }, 'Orda'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/synochess' } }, 'Synochess'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/hoppelpoppel' } }, 'Hoppel-Poppel'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/shinobi' } }, 'Shinobi'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/empire' } }, 'Empire'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/ordamirror' } }, 'Orda Mirror'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/chak' } }, 'Chak'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/chennis' } }, 'Chennis'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/shouse' } }, 'S-house (S-chess+Crazyhouse)'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/capahouse' } }, 'Capahouse (Capablanca+Crazyhouse)'),
", ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/grandhouse' } }, 'Grandhouse (Grand+Crazyhouse)'),
", and ",
h('a', { attrs: { href: 'https://www.pychess.org/variants/chess' } }, 'Chess.'),
]),
h('p', [
_('Additionally, you can check the Chess960 option for Chess, Crazyhouse, Atomic, S-chess, Capablanca, and Capahouse to start games from random positions with '),
h('a', { attrs: { href: 'https://en.wikipedia.org/wiki/Fischer_random_chess#Castling_rules' } }, _('Chess960 castling rules.'))
]),
h('p', [
_('For move generation, validation, analysis, and engine play, we use '),
h('a', { attrs: { href: 'https://github.com/ianfab/Fairy-Stockfish' } }, 'Fairy-Stockfish'),
", ",
h('a', { attrs: { href: 'https://github.com/ianfab/fairy-stockfish.wasm' } }, 'fairy-stockfish.wasm'),
", ",
h('a', { attrs: { href: 'https://github.com/gbtami/fairyfishnet' } }, 'fairyfishnet'),
", and ",
h('a', { attrs: { href: 'https://github.com/gbtami/lichess-bot-variants' } }, 'lichess-bot-variants.'),
]),
h('p', [
_('On client side, the user interface of the game board is based on '),
h('a', { attrs: { href: 'https://github.com/gbtami/chessgroundx' } }, 'chessgroundx.'),
]),
h('p', [
_('The source code of the server is available on '),
h('a', { attrs: { href: 'https://github.com/gbtami/pychess-variants' } }, 'GitHub.'),
]),
h('hr'),
h('p', [
_('To play on PyChess, you need to have an open and unmarked account on Lichess. '),
_('Regarding Privacy and Terms of Service, the rules of lichess.org are also applied here. '),
h('a', { attrs: { href: 'https://lichess.org/privacy' } }, 'Privacy'),
", ",
h('a', { attrs: { href: 'https://lichess.org/terms-of-service' } }, 'ToS'),
]),
h('hr'),
h('p', untitled.map(paragraph => h('p', paragraph))),
h('p', 'Untitled_Entity'),
]),
];
}