Commit
+31 -972 +/-23 browse
1 | diff --git a/contrib/nginx/nginx.conf b/contrib/nginx/nginx.conf |
2 | index a5429c5..dc82b8c 100644 |
3 | --- a/contrib/nginx/nginx.conf |
4 | +++ b/contrib/nginx/nginx.conf |
5 | @@ -75,12 +75,12 @@ http { |
6 | } |
7 | |
8 | |
9 | - # an additional virtual host which will pass the Host: my-custom-domain.local |
10 | + # an additional virtual host which will pass the Host: ayllu-dev.local |
11 | # and serve static content when requested. |
12 | server { |
13 | |
14 | listen 8081; |
15 | - server_name my-custom-domain.local; |
16 | + server_name ayllu-dev.local; |
17 | |
18 | include config.d/security.conf; |
19 | include config.d/general.conf; |
20 | diff --git a/scripts/gen_www.sh b/scripts/gen_www.sh |
21 | new file mode 100755 |
22 | index 0000000..d5a8f6d |
23 | --- /dev/null |
24 | +++ b/scripts/gen_www.sh |
25 | @@ -0,0 +1,29 @@ |
26 | + #!/bin/sh |
27 | + # Generate the Ayllu static site along with all of it's related crate |
28 | + # documentation. This script it meant to be run ONLY on the `www` branch |
29 | + # and can produce an automated commit there which will be served by the Ayllu |
30 | + # binary. |
31 | + |
32 | + if git status --porcelain | grep -q .; then |
33 | + echo "repository dirty, aborting" |
34 | + exit 1 |
35 | + fi |
36 | + |
37 | + if [ "$(git rev-parse --abbrev-ref HEAD)" -ne "main" ]; then |
38 | + echo "repository needs to be on the main branch" |
39 | + exit 1 |
40 | + fi |
41 | + |
42 | + git checkout www |
43 | + git reset --hard main |
44 | + git clean -fd |
45 | + |
46 | + [ -d www/public ] && rm -r www/public |
47 | + cd www && zola build && cd .. |
48 | + cargo doc --no-deps --release |
49 | + cp -Rv target/doc www/public/crates |
50 | + |
51 | + git add --all |
52 | + git commit -m 'automated www update' |
53 | + |
54 | + git checkout main |
55 | diff --git a/www/public/404.html b/www/public/404.html |
56 | deleted file mode 100644 |
57 | index 9634e57..0000000 |
58 | --- a/www/public/404.html |
59 | +++ /dev/null |
60 | @@ -1 +0,0 @@ |
61 | - <!doctype html><title>404 Not Found</title><h1>404 Not Found</h1> |
62 | \ No newline at end of file |
63 | diff --git a/www/public/assets/architecture.svg b/www/public/assets/architecture.svg |
64 | deleted file mode 100644 |
65 | index e05c148..0000000 |
66 | --- a/www/public/assets/architecture.svg |
67 | +++ /dev/null |
68 | @@ -1,598 +0,0 @@ |
69 | - <svg version="1.1" baseProfile="full" width="1817.5" height="664.0" viewBox="0 0 1817.5 664" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"> |
70 | - <desc >[reverse_proxy] |
71 | - |
72 | - [reverse_proxy]<-->[Rudolfs (LFS API)] |
73 | - |
74 | - [reverse_proxy]<-->[ayllu-core | |
75 | - [axum http interface] |
76 | - [sites static hosting] |
77 | - [tarpc-server (job_server)] |
78 | - [git repositories via libgit2] |
79 | - [<database> sqlite] |
80 | - ] |
81 | - |
82 | - [ayllu-core] <--> [ |
83 | - ayllu-mail| |
84 | - [tarpc-server] |
85 | - [mailpot] |
86 | - [postfix] |
87 | - [<database> sqlite] |
88 | - ] <-- SMTP [<actor> contributor-2] |
89 | - |
90 | - [ayllu-core] <--> [ |
91 | - ayllu-xmpp | |
92 | - [tarpc-server] |
93 | - [chat interface/bot] |
94 | - [<database> sqlite] |
95 | - ] <-- XMPP [<actor>; contributor-2] |
96 | - |
97 | - [ayllu-core] <--> [ |
98 | - ayllu-build | |
99 | - [tarpc-server] |
100 | - [<database> sqlite] |
101 | - ] |
102 | - |
103 | - [ayllu-core] <--> [ayllu-shell] <-- SSH [<actor> contributor] |
104 | - [ayllu-core] <--> [ayllu-cli] <-- [<actor> admin] |
105 | - |
106 | - |
107 | - [ayllu-build]<-->[ |
108 | - ayllu-builder-1 | |
109 | - [<package>qemu-x86_64| tarpc-server | executor] |
110 | - ] |
111 | - |
112 | - [ayllu-build]<-->[ |
113 | - ayllu-builder-2 | |
114 | - [<package>qemu-aarch64| tarpc-server | exectuor] |
115 | - ] |
116 | - |
117 | - [ayllu-build]<-->[ |
118 | - ayllu-builder-n | |
119 | - [<package>lxc| tarpc-server | executor] |
120 | - ] --> [ayllu-core] |
121 | - </desc> |
122 | - <g stroke-width="1.0" text-align="left" font="12pt Helvetica, Arial, sans-serif" font-size="12pt" font-family="Helvetica" font-weight="normal" font-style="normal"> |
123 | - <g font-family="Helvetica" font-size="12pt" font-weight="bold" font-style="normal" stroke-width="3.0" stroke-linejoin="round" stroke-linecap="round" stroke="#33322E"> |
124 | - <g stroke="transparent" fill="transparent"> |
125 | - <rect x="0.0" y="0.0" height="664.0" width="1817.5" stroke="none"></rect> |
126 | - </g> |
127 | - <g transform="translate(8, 8)" fill="#33322E"> |
128 | - <g transform="translate(20, 20)" fill="#33322E" font-family="Helvetica" font-size="12pt" font-weight="normal" font-style="normal"> |
129 | - <g stroke-dasharray="6 6"> |
130 | - <path d="M873.9 24.0 L631.5 52 L631.5 117.33333333333333 L631.5 117.3 " fill="none"></path> |
131 | - </g> |
132 | - <path d="M626.2 110.7 L631.5 117.3 L636.8 110.7 L631.5 124.0 Z"></path> |
133 | - <path d="M867.9 30.1 L873.9 24.0 L866.6 19.5 L880.5 23.2 Z"></path> |
134 | - <g stroke-dasharray="6 6"> |
135 | - <path d="M1012.1 24.0 L1254.5 52 L1254.5 65.33333333333333 L1254.5 65.3 " fill="none"></path> |
136 | - </g> |
137 | - <path d="M1249.2 58.7 L1254.5 65.3 L1259.8 58.7 L1254.5 72.0 Z"></path> |
138 | - <path d="M1019.4 19.5 L1012.1 24.0 L1018.1 30.1 L1005.5 23.2 Z"></path> |
139 | - <g stroke-dasharray="6 6"> |
140 | - <path d="M740.9 184.6 L242 228 L242 241.33333333333334 L242.0 241.3 " fill="none"></path> |
141 | - </g> |
142 | - <path d="M236.7 234.7 L242.0 241.3 L247.3 234.7 L242.0 248.0 Z"></path> |
143 | - <path d="M734.7 190.5 L740.9 184.6 L733.8 179.9 L747.5 184.1 Z"></path> |
144 | - <text x="698.3" y="495.3" stroke="none">SMTP</text> |
145 | - <g stroke-dasharray="6 6"> |
146 | - <path d="M242.0 390.7 L242 404 L690.25 503.2664359861592 L690.3 503.3 " fill="none"></path> |
147 | - </g> |
148 | - <path d="M247.3 397.3 L242.0 390.7 L236.7 397.3 L242.0 384.0 Z"></path> |
149 | - <g stroke-dasharray="6 6"> |
150 | - <path d="M858.5 209.1 L750.5 228 L750.5 241.33333333333334 L750.5 241.3 " fill="none"></path> |
151 | - </g> |
152 | - <path d="M745.2 234.7 L750.5 241.3 L755.8 234.7 L750.5 248.0 Z"></path> |
153 | - <path d="M852.8 215.5 L858.5 209.1 L851.0 205.0 L865.0 208.0 Z"></path> |
154 | - <text x="695.6" y="480.0" stroke="none">XMPP</text> |
155 | - <g stroke-dasharray="6 6"> |
156 | - <path d="M750.5 390.7 L750.5 404 L748.4375 488 L748.4 488.0 " fill="none"></path> |
157 | - </g> |
158 | - <path d="M755.8 397.3 L750.5 390.7 L745.2 397.3 L750.5 384.0 Z"></path> |
159 | - <g stroke-dasharray="6 6"> |
160 | - <path d="M1183.6 212.8 L1168.75 228 L1168.75 241.33333333333334 L1168.8 241.3 " fill="none"></path> |
161 | - </g> |
162 | - <path d="M1163.4 234.7 L1168.8 241.3 L1174.1 234.7 L1168.8 248.0 Z"></path> |
163 | - <path d="M1182.8 221.3 L1183.6 212.8 L1175.1 213.8 L1188.2 208.0 Z"></path> |
164 | - <g stroke-dasharray="6 6"> |
165 | - <path d="M1472.2 210.0 L1528 228 L1528 293.3333333333333 L1528.0 293.3 " fill="none"></path> |
166 | - </g> |
167 | - <path d="M1522.7 286.7 L1528.0 293.3 L1533.3 286.7 L1528.0 300.0 Z"></path> |
168 | - <path d="M1480.2 207.0 L1472.2 210.0 L1476.9 217.2 L1465.8 208.0 Z"></path> |
169 | - <text x="1487.3" y="480.0" stroke="none">SSH</text> |
170 | - <g stroke-dasharray="6 6"> |
171 | - <path d="M1528.0 338.7 L1528 404 L1528 488 L1528.0 488.0 " fill="none"></path> |
172 | - </g> |
173 | - <path d="M1533.3 345.3 L1528.0 338.7 L1522.7 345.3 L1528.0 332.0 Z"></path> |
174 | - <g stroke-dasharray="6 6"> |
175 | - <path d="M1568.6 209.4 L1652.5 228 L1652.5 293.3333333333333 L1652.5 293.3 " fill="none"></path> |
176 | - </g> |
177 | - <path d="M1647.2 286.7 L1652.5 293.3 L1657.8 286.7 L1652.5 300.0 Z"></path> |
178 | - <path d="M1576.2 205.7 L1568.6 209.4 L1573.9 216.1 L1562.0 208.0 Z"></path> |
179 | - <g stroke-dasharray="6 6"> |
180 | - <path d="M1652.5 338.7 L1652.5 404 L1652.5 488 L1652.5 488.0 " fill="none"></path> |
181 | - </g> |
182 | - <path d="M1657.8 345.3 L1652.5 338.7 L1647.2 345.3 L1652.5 332.0 Z"></path> |
183 | - <g stroke-dasharray="6 6"> |
184 | - <path d="M1031.0 367.4 L933 404 L933 417.3333333333333 L933.0 417.3 " fill="none"></path> |
185 | - </g> |
186 | - <path d="M927.7 410.7 L933.0 417.3 L938.3 410.7 L933.0 424.0 Z"></path> |
187 | - <path d="M1026.6 374.7 L1031.0 367.4 L1022.9 364.8 L1037.3 365.1 Z"></path> |
188 | - <g stroke-dasharray="6 6"> |
189 | - <path d="M1152.9 390.5 L1150 404 L1150 417.3333333333333 L1150.0 417.3 " fill="none"></path> |
190 | - </g> |
191 | - <path d="M1144.7 410.7 L1150.0 417.3 L1155.3 410.7 L1150.0 424.0 Z"></path> |
192 | - <path d="M1156.7 398.2 L1152.9 390.5 L1146.3 395.9 L1154.3 384.0 Z"></path> |
193 | - <g stroke-dasharray="6 6"> |
194 | - <path d="M1255.6 388.3 L1274.5 404 L1285.5740965207704 418.6780924298968 L1285.6 418.7 " fill="none"></path> |
195 | - </g> |
196 | - <path d="M1277.3 416.6 L1285.6 418.7 L1285.8 410.1 L1289.6 424.0 Z"></path> |
197 | - <path d="M1264.1 388.4 L1255.6 388.3 L1257.3 396.6 L1250.5 384.0 Z"></path> |
198 | - <g stroke-dasharray="6 6"> |
199 | - <path d="M1392.7 424.0 L1400 404 L1400 316 L1400 316 L1400 228 L1400 228 L1372.6362943277163 211.45012990267378 L1372.6 211.5 " fill="none"></path> |
200 | - </g> |
201 | - <path d="M1381.1 210.3 L1372.6 211.5 L1375.6 219.5 L1366.9 208.0 Z"></path> |
202 | - <g data-name="reverse_proxy"> |
203 | - <g fill="#eee8d5" stroke="#33322E" data-name="reverse_proxy"> |
204 | - <rect x="880.5" y="0.0" height="32.0" width="125.0" data-name="reverse_proxy"></rect> |
205 | - </g> |
206 | - <g transform="translate(880.5, 0)" font-family="Helvetica" font-size="12pt" font-weight="bold" font-style="normal" data-name="reverse_proxy"> |
207 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="reverse_proxy"> |
208 | - <text x="54.5" y="14.1" stroke="none" text-anchor="middle" data-name="reverse_proxy">reverse_proxy</text> |
209 | - |
210 | - </g> |
211 | - </g> |
212 | - </g> |
213 | - <g data-name="Rudolfs (LFS API)"> |
214 | - <g fill="#eee8d5" stroke="#33322E" data-name="Rudolfs (LFS API)"> |
215 | - <rect x="555.5" y="124.0" height="32.0" width="152.0" data-name="Rudolfs (LFS API)"></rect> |
216 | - </g> |
217 | - <g transform="translate(555.5, 124)" font-family="Helvetica" font-size="12pt" font-weight="bold" font-style="normal" data-name="Rudolfs (LFS API)"> |
218 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="Rudolfs (LFS API)"> |
219 | - <text x="68.0" y="14.1" stroke="none" text-anchor="middle" data-name="Rudolfs (LFS API)">Rudolfs (LFS API)</text> |
220 | - |
221 | - </g> |
222 | - </g> |
223 | - </g> |
224 | - <g data-name="ayllu-core"> |
225 | - <g fill="#eee8d5" stroke="#33322E" data-name="ayllu-core"> |
226 | - <rect x="747.5" y="72.0" height="136.0" width="1014.0" data-name="ayllu-core"></rect> |
227 | - <path d="M747.5 104.0 L1761.5 104.0" fill="none" data-name="ayllu-core"></path> |
228 | - </g> |
229 | - <g transform="translate(747.5, 72)" font-family="Helvetica" font-size="12pt" font-weight="bold" font-style="normal" data-name="ayllu-core"> |
230 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="ayllu-core"> |
231 | - <text x="499.0" y="14.1" stroke="none" text-anchor="middle" data-name="ayllu-core">ayllu-core</text> |
232 | - |
233 | - </g> |
234 | - </g> |
235 | - <g transform="translate(747.5, 104)" font-family="Helvetica" font-size="12pt" font-weight="normal" font-style="normal" data-name="ayllu-core"> |
236 | - <g transform="translate(8, 8)" fill="#33322E" data-name="ayllu-core"> |
237 | - <g transform="translate(20, 20)" data-name="ayllu-core"> |
238 | - <g data-name="axum http interface"> |
239 | - <g fill="#fdf6e3" stroke="#33322E" data-name="axum http interface"> |
240 | - <rect x="0.0" y="8.0" height="32.0" width="164.0" data-name="axum http interface"></rect> |
241 | - </g> |
242 | - <g transform="translate(0, 8)" font-family="Helvetica" font-size="12pt" font-weight="bold" font-style="normal" data-name="axum http interface"> |
243 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="axum http interface"> |
244 | - <text x="74.0" y="14.1" stroke="none" text-anchor="middle" data-name="axum http interface">axum http interface</text> |
245 | - |
246 | - </g> |
247 | - </g> |
248 | - </g> |
249 | - <g data-name="sites static hosting"> |
250 | - <g fill="#fdf6e3" stroke="#33322E" data-name="sites static hosting"> |
251 | - <rect x="204.0" y="8.0" height="32.0" width="161.0" data-name="sites static hosting"></rect> |
252 | - </g> |
253 | - <g transform="translate(204, 8)" font-family="Helvetica" font-size="12pt" font-weight="bold" font-style="normal" data-name="sites static hosting"> |
254 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="sites static hosting"> |
255 | - <text x="72.5" y="14.1" stroke="none" text-anchor="middle" data-name="sites static hosting">sites static hosting</text> |
256 | - |
257 | - </g> |
258 | - </g> |
259 | - </g> |
260 | - <g data-name="tarpc-server (job_server)"> |
261 | - <g fill="#fdf6e3" stroke="#33322E" data-name="tarpc-server (job_server)"> |
262 | - <rect x="405.0" y="8.0" height="32.0" width="205.0" data-name="tarpc-server (job_server)"></rect> |
263 | - </g> |
264 | - <g transform="translate(405, 8)" font-family="Helvetica" font-size="12pt" font-weight="bold" font-style="normal" data-name="tarpc-server (job_server)"> |
265 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="tarpc-server (job_server)"> |
266 | - <text x="94.5" y="14.1" stroke="none" text-anchor="middle" data-name="tarpc-server (job_server)">tarpc-server (job_server)</text> |
267 | - |
268 | - </g> |
269 | - </g> |
270 | - </g> |
271 | - <g data-name="git repositories via libgit2"> |
272 | - <g fill="#fdf6e3" stroke="#33322E" data-name="git repositories via libgit2"> |
273 | - <rect x="650.0" y="8.0" height="32.0" width="210.0" data-name="git repositories via libgit2"></rect> |
274 | - </g> |
275 | - <g transform="translate(650, 8)" font-family="Helvetica" font-size="12pt" font-weight="bold" font-style="normal" data-name="git repositories via libgit2"> |
276 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="git repositories via libgit2"> |
277 | - <text x="97.0" y="14.1" stroke="none" text-anchor="middle" data-name="git repositories via libgit2">git repositories via libgit2</text> |
278 | - |
279 | - </g> |
280 | - </g> |
281 | - </g> |
282 | - <g data-name="sqlite"> |
283 | - <g fill="#fdf6e3" stroke="#33322E" data-name="sqlite"> |
284 | - <rect x="900.0" y="8.0" height="32.0" width="58.0" stroke="none" data-name="sqlite"></rect> |
285 | - <path d="M900.0 8.0 L900.0 40.0" fill="none" data-name="sqlite"></path> |
286 | - <path d="M958.0 8.0 L958.0 40.0" fill="none" data-name="sqlite"></path> |
287 | - <ellipse cx="929.0" cy="8.0" rx="29.0" ry="6.0" data-name="sqlite"></ellipse> |
288 | - <path d="M958.0 40.0 L958.0 40.3 L957.9 40.6 L957.7 40.9 L957.4 41.2 L957.1 41.5 L956.7 41.8 L956.3 42.1 L955.7 42.3 L955.1 42.6 L954.5 42.9 L953.7 43.1 L953.0 43.4 L952.1 43.6 L951.2 43.9 L950.3 44.1 L949.2 44.3 L948.2 44.5 L947.1 44.7 L945.9 44.9 L944.7 45.0 L943.5 45.2 L942.2 45.3 L940.9 45.5 L939.6 45.6 L938.2 45.7 L936.9 45.8 L935.5 45.8 L934.0 45.9 L932.6 46.0 L931.2 46.0 L929.7 46.0 L928.3 46.0 L926.8 46.0 L925.4 46.0 L924.0 45.9 L922.5 45.8 L921.1 45.8 L919.8 45.7 L918.4 45.6 L917.1 45.5 L915.8 45.3 L914.5 45.2 L913.3 45.0 L912.1 44.9 L910.9 44.7 L909.8 44.5 L908.8 44.3 L907.7 44.1 L906.8 43.9 L905.9 43.6 L905.0 43.4 L904.3 43.1 L903.5 42.9 L902.9 42.6 L902.3 42.3 L901.7 42.1 L901.3 41.8 L900.9 41.5 L900.6 41.2 L900.3 40.9 L900.1 40.6 L900.0 40.3 L900.0 40.0" data-name="sqlite"></path> |
289 | - </g> |
290 | - <g transform="translate(900, 12)" font-family="Helvetica" font-size="12pt" font-weight="bold" font-style="normal" data-name="sqlite"> |
291 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="sqlite"> |
292 | - <text x="21.0" y="14.1" stroke="none" text-anchor="middle" data-name="sqlite">sqlite</text> |
293 | - |
294 | - </g> |
295 | - </g> |
296 | - </g> |
297 | - </g> |
298 | - </g> |
299 | - </g> |
300 | - </g> |
301 | - <g data-name="ayllu-mail"> |
302 | - <g fill="#eee8d5" stroke="#33322E" data-name="ayllu-mail"> |
303 | - <rect x="0.0" y="248.0" height="136.0" width="484.0" data-name="ayllu-mail"></rect> |
304 | - <path d="M0.0 280.0 L484.0 280.0" fill="none" data-name="ayllu-mail"></path> |
305 | - </g> |
306 | - <g transform="translate(0, 248)" font-family="Helvetica" font-size="12pt" font-weight="bold" font-style="normal" data-name="ayllu-mail"> |
307 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="ayllu-mail"> |
308 | - <text x="234.0" y="14.1" stroke="none" text-anchor="middle" data-name="ayllu-mail">ayllu-mail</text> |
309 | - |
310 | - </g> |
311 | - </g> |
312 | - <g transform="translate(0, 280)" font-family="Helvetica" font-size="12pt" font-weight="normal" font-style="normal" data-name="ayllu-mail"> |
313 | - <g transform="translate(8, 8)" fill="#33322E" data-name="ayllu-mail"> |
314 | - <g transform="translate(20, 20)" data-name="ayllu-mail"> |
315 | - <g data-name="tarpc-server"> |
316 | - <g fill="#fdf6e3" stroke="#33322E" data-name="tarpc-server"> |
317 | - <rect x="0.0" y="8.0" height="32.0" width="109.0" data-name="tarpc-server"></rect> |
318 | - </g> |
319 | - <g transform="translate(0, 8)" font-family="Helvetica" font-size="12pt" font-weight="bold" font-style="normal" data-name="tarpc-server"> |
320 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="tarpc-server"> |
321 | - <text x="46.5" y="14.1" stroke="none" text-anchor="middle" data-name="tarpc-server">tarpc-server</text> |
322 | - |
323 | - </g> |
324 | - </g> |
325 | - </g> |
326 | - <g data-name="mailpot"> |
327 | - <g fill="#fdf6e3" stroke="#33322E" data-name="mailpot"> |
328 | - <rect x="149.0" y="8.0" height="32.0" width="73.0" data-name="mailpot"></rect> |
329 | - </g> |
330 | - <g transform="translate(149, 8)" font-family="Helvetica" font-size="12pt" font-weight="bold" font-style="normal" data-name="mailpot"> |
331 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="mailpot"> |
332 | - <text x="28.5" y="14.1" stroke="none" text-anchor="middle" data-name="mailpot">mailpot</text> |
333 | - |
334 | - </g> |
335 | - </g> |
336 | - </g> |
337 | - <g data-name="postfix"> |
338 | - <g fill="#fdf6e3" stroke="#33322E" data-name="postfix"> |
339 | - <rect x="262.0" y="8.0" height="32.0" width="68.0" data-name="postfix"></rect> |
340 | - </g> |
341 | - <g transform="translate(262, 8)" font-family="Helvetica" font-size="12pt" font-weight="bold" font-style="normal" data-name="postfix"> |
342 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="postfix"> |
343 | - <text x="26.0" y="14.1" stroke="none" text-anchor="middle" data-name="postfix">postfix</text> |
344 | - |
345 | - </g> |
346 | - </g> |
347 | - </g> |
348 | - <g data-name="sqlite"> |
349 | - <g fill="#fdf6e3" stroke="#33322E" data-name="sqlite"> |
350 | - <rect x="370.0" y="8.0" height="32.0" width="58.0" stroke="none" data-name="sqlite"></rect> |
351 | - <path d="M370.0 8.0 L370.0 40.0" fill="none" data-name="sqlite"></path> |
352 | - <path d="M428.0 8.0 L428.0 40.0" fill="none" data-name="sqlite"></path> |
353 | - <ellipse cx="399.0" cy="8.0" rx="29.0" ry="6.0" data-name="sqlite"></ellipse> |
354 | - <path d="M428.0 40.0 L428.0 40.3 L427.9 40.6 L427.7 40.9 L427.4 41.2 L427.1 41.5 L426.7 41.8 L426.3 42.1 L425.7 42.3 L425.1 42.6 L424.5 42.9 L423.7 43.1 L423.0 43.4 L422.1 43.6 L421.2 43.9 L420.3 44.1 L419.2 44.3 L418.2 44.5 L417.1 44.7 L415.9 44.9 L414.7 45.0 L413.5 45.2 L412.2 45.3 L410.9 45.5 L409.6 45.6 L408.2 45.7 L406.9 45.8 L405.5 45.8 L404.0 45.9 L402.6 46.0 L401.2 46.0 L399.7 46.0 L398.3 46.0 L396.8 46.0 L395.4 46.0 L394.0 45.9 L392.5 45.8 L391.1 45.8 L389.8 45.7 L388.4 45.6 L387.1 45.5 L385.8 45.3 L384.5 45.2 L383.3 45.0 L382.1 44.9 L380.9 44.7 L379.8 44.5 L378.8 44.3 L377.7 44.1 L376.8 43.9 L375.9 43.6 L375.0 43.4 L374.3 43.1 L373.5 42.9 L372.9 42.6 L372.3 42.3 L371.7 42.1 L371.3 41.8 L370.9 41.5 L370.6 41.2 L370.3 40.9 L370.1 40.6 L370.0 40.3 L370.0 40.0" data-name="sqlite"></path> |
355 | - </g> |
356 | - <g transform="translate(370, 12)" font-family="Helvetica" font-size="12pt" font-weight="bold" font-style="normal" data-name="sqlite"> |
357 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="sqlite"> |
358 | - <text x="21.0" y="14.1" stroke="none" text-anchor="middle" data-name="sqlite">sqlite</text> |
359 | - |
360 | - </g> |
361 | - </g> |
362 | - </g> |
363 | - </g> |
364 | - </g> |
365 | - </g> |
366 | - </g> |
367 | - <g data-name="contributor-2"> |
368 | - <g fill="#eee8d5" stroke="#33322E" data-name="contributor-2"> |
369 | - <circle r="4.0" cx="747.8" cy="500.0" data-name="contributor-2"></circle> |
370 | - <path d="M747.8 504.0 L747.8 512.0" fill="none" data-name="contributor-2"></path> |
371 | - <path d="M743.8 508.0 L751.8 508.0" fill="none" data-name="contributor-2"></path> |
372 | - <path d="M743.8 516.0 L747.8 512.0 L751.8 516.0" fill="none" data-name="contributor-2"></path> |
373 | - </g> |
374 | - <g transform="translate(690.25, 512)" font-family="Helvetica" font-size="12pt" font-weight="normal" font-style="normal" data-name="contributor-2"> |
375 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="contributor-2"> |
376 | - <text x="49.5" y="14.1" stroke="none" text-anchor="middle" data-name="contributor-2">contributor-2</text> |
377 | - |
378 | - </g> |
379 | - </g> |
380 | - </g> |
381 | - <g data-name="ayllu-xmpp"> |
382 | - <g fill="#eee8d5" stroke="#33322E" data-name="ayllu-xmpp"> |
383 | - <rect x="524.0" y="248.0" height="136.0" width="453.0" data-name="ayllu-xmpp"></rect> |
384 | - <path d="M524.0 280.0 L977.0 280.0" fill="none" data-name="ayllu-xmpp"></path> |
385 | - </g> |
386 | - <g transform="translate(524, 248)" font-family="Helvetica" font-size="12pt" font-weight="bold" font-style="normal" data-name="ayllu-xmpp"> |
387 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="ayllu-xmpp"> |
388 | - <text x="218.5" y="14.1" stroke="none" text-anchor="middle" data-name="ayllu-xmpp">ayllu-xmpp</text> |
389 | - |
390 | - </g> |
391 | - </g> |
392 | - <g transform="translate(524, 280)" font-family="Helvetica" font-size="12pt" font-weight="normal" font-style="normal" data-name="ayllu-xmpp"> |
393 | - <g transform="translate(8, 8)" fill="#33322E" data-name="ayllu-xmpp"> |
394 | - <g transform="translate(20, 20)" data-name="ayllu-xmpp"> |
395 | - <g data-name="tarpc-server"> |
396 | - <g fill="#fdf6e3" stroke="#33322E" data-name="tarpc-server"> |
397 | - <rect x="0.0" y="8.0" height="32.0" width="109.0" data-name="tarpc-server"></rect> |
398 | - </g> |
399 | - <g transform="translate(0, 8)" font-family="Helvetica" font-size="12pt" font-weight="bold" font-style="normal" data-name="tarpc-server"> |
400 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="tarpc-server"> |
401 | - <text x="46.5" y="14.1" stroke="none" text-anchor="middle" data-name="tarpc-server">tarpc-server</text> |
402 | - |
403 | - </g> |
404 | - </g> |
405 | - </g> |
406 | - <g data-name="chat interface/bot"> |
407 | - <g fill="#fdf6e3" stroke="#33322E" data-name="chat interface/bot"> |
408 | - <rect x="149.0" y="8.0" height="32.0" width="150.0" data-name="chat interface/bot"></rect> |
409 | - </g> |
410 | - <g transform="translate(149, 8)" font-family="Helvetica" font-size="12pt" font-weight="bold" font-style="normal" data-name="chat interface/bot"> |
411 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="chat interface/bot"> |
412 | - <text x="67.0" y="14.1" stroke="none" text-anchor="middle" data-name="chat interface/bot">chat interface/bot</text> |
413 | - |
414 | - </g> |
415 | - </g> |
416 | - </g> |
417 | - <g data-name="sqlite"> |
418 | - <g fill="#fdf6e3" stroke="#33322E" data-name="sqlite"> |
419 | - <rect x="339.0" y="8.0" height="32.0" width="58.0" stroke="none" data-name="sqlite"></rect> |
420 | - <path d="M339.0 8.0 L339.0 40.0" fill="none" data-name="sqlite"></path> |
421 | - <path d="M397.0 8.0 L397.0 40.0" fill="none" data-name="sqlite"></path> |
422 | - <ellipse cx="368.0" cy="8.0" rx="29.0" ry="6.0" data-name="sqlite"></ellipse> |
423 | - <path d="M397.0 40.0 L397.0 40.3 L396.9 40.6 L396.7 40.9 L396.4 41.2 L396.1 41.5 L395.7 41.8 L395.3 42.1 L394.7 42.3 L394.1 42.6 L393.5 42.9 L392.7 43.1 L392.0 43.4 L391.1 43.6 L390.2 43.9 L389.3 44.1 L388.2 44.3 L387.2 44.5 L386.1 44.7 L384.9 44.9 L383.7 45.0 L382.5 45.2 L381.2 45.3 L379.9 45.5 L378.6 45.6 L377.2 45.7 L375.9 45.8 L374.5 45.8 L373.0 45.9 L371.6 46.0 L370.2 46.0 L368.7 46.0 L367.3 46.0 L365.8 46.0 L364.4 46.0 L363.0 45.9 L361.5 45.8 L360.1 45.8 L358.8 45.7 L357.4 45.6 L356.1 45.5 L354.8 45.3 L353.5 45.2 L352.3 45.0 L351.1 44.9 L349.9 44.7 L348.8 44.5 L347.8 44.3 L346.7 44.1 L345.8 43.9 L344.9 43.6 L344.0 43.4 L343.3 43.1 L342.5 42.9 L341.9 42.6 L341.3 42.3 L340.7 42.1 L340.3 41.8 L339.9 41.5 L339.6 41.2 L339.3 40.9 L339.1 40.6 L339.0 40.3 L339.0 40.0" data-name="sqlite"></path> |
424 | - </g> |
425 | - <g transform="translate(339, 12)" font-family="Helvetica" font-size="12pt" font-weight="bold" font-style="normal" data-name="sqlite"> |
426 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="sqlite"> |
427 | - <text x="21.0" y="14.1" stroke="none" text-anchor="middle" data-name="sqlite">sqlite</text> |
428 | - |
429 | - </g> |
430 | - </g> |
431 | - </g> |
432 | - </g> |
433 | - </g> |
434 | - </g> |
435 | - </g> |
436 | - <g data-name="ayllu-build"> |
437 | - <g fill="#eee8d5" stroke="#33322E" data-name="ayllu-build"> |
438 | - <rect x="1037.3" y="248.0" height="136.0" width="263.0" data-name="ayllu-build"></rect> |
439 | - <path d="M1037.3 280.0 L1300.3 280.0" fill="none" data-name="ayllu-build"></path> |
440 | - </g> |
441 | - <g transform="translate(1037.25, 248)" font-family="Helvetica" font-size="12pt" font-weight="bold" font-style="normal" data-name="ayllu-build"> |
442 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="ayllu-build"> |
443 | - <text x="123.5" y="14.1" stroke="none" text-anchor="middle" data-name="ayllu-build">ayllu-build</text> |
444 | - |
445 | - </g> |
446 | - </g> |
447 | - <g transform="translate(1037.25, 280)" font-family="Helvetica" font-size="12pt" font-weight="normal" font-style="normal" data-name="ayllu-build"> |
448 | - <g transform="translate(8, 8)" fill="#33322E" data-name="ayllu-build"> |
449 | - <g transform="translate(20, 20)" data-name="ayllu-build"> |
450 | - <g data-name="tarpc-server"> |
451 | - <g fill="#fdf6e3" stroke="#33322E" data-name="tarpc-server"> |
452 | - <rect x="0.0" y="8.0" height="32.0" width="109.0" data-name="tarpc-server"></rect> |
453 | - </g> |
454 | - <g transform="translate(0, 8)" font-family="Helvetica" font-size="12pt" font-weight="bold" font-style="normal" data-name="tarpc-server"> |
455 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="tarpc-server"> |
456 | - <text x="46.5" y="14.1" stroke="none" text-anchor="middle" data-name="tarpc-server">tarpc-server</text> |
457 | - |
458 | - </g> |
459 | - </g> |
460 | - </g> |
461 | - <g data-name="sqlite"> |
462 | - <g fill="#fdf6e3" stroke="#33322E" data-name="sqlite"> |
463 | - <rect x="149.0" y="8.0" height="32.0" width="58.0" stroke="none" data-name="sqlite"></rect> |
464 | - <path d="M149.0 8.0 L149.0 40.0" fill="none" data-name="sqlite"></path> |
465 | - <path d="M207.0 8.0 L207.0 40.0" fill="none" data-name="sqlite"></path> |
466 | - <ellipse cx="178.0" cy="8.0" rx="29.0" ry="6.0" data-name="sqlite"></ellipse> |
467 | - <path d="M207.0 40.0 L207.0 40.3 L206.9 40.6 L206.7 40.9 L206.4 41.2 L206.1 41.5 L205.7 41.8 L205.3 42.1 L204.7 42.3 L204.1 42.6 L203.5 42.9 L202.7 43.1 L202.0 43.4 L201.1 43.6 L200.2 43.9 L199.3 44.1 L198.2 44.3 L197.2 44.5 L196.1 44.7 L194.9 44.9 L193.7 45.0 L192.5 45.2 L191.2 45.3 L189.9 45.5 L188.6 45.6 L187.2 45.7 L185.9 45.8 L184.5 45.8 L183.0 45.9 L181.6 46.0 L180.2 46.0 L178.7 46.0 L177.3 46.0 L175.8 46.0 L174.4 46.0 L173.0 45.9 L171.5 45.8 L170.1 45.8 L168.8 45.7 L167.4 45.6 L166.1 45.5 L164.8 45.3 L163.5 45.2 L162.3 45.0 L161.1 44.9 L159.9 44.7 L158.8 44.5 L157.8 44.3 L156.7 44.1 L155.8 43.9 L154.9 43.6 L154.0 43.4 L153.3 43.1 L152.5 42.9 L151.9 42.6 L151.3 42.3 L150.7 42.1 L150.3 41.8 L149.9 41.5 L149.6 41.2 L149.3 40.9 L149.1 40.6 L149.0 40.3 L149.0 40.0" data-name="sqlite"></path> |
468 | - </g> |
469 | - <g transform="translate(149, 12)" font-family="Helvetica" font-size="12pt" font-weight="bold" font-style="normal" data-name="sqlite"> |
470 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="sqlite"> |
471 | - <text x="21.0" y="14.1" stroke="none" text-anchor="middle" data-name="sqlite">sqlite</text> |
472 | - |
473 | - </g> |
474 | - </g> |
475 | - </g> |
476 | - </g> |
477 | - </g> |
478 | - </g> |
479 | - </g> |
480 | - <g data-name="ayllu-shell"> |
481 | - <g fill="#eee8d5" stroke="#33322E" data-name="ayllu-shell"> |
482 | - <rect x="1481.0" y="300.0" height="32.0" width="94.0" data-name="ayllu-shell"></rect> |
483 | - </g> |
484 | - <g transform="translate(1481, 300)" font-family="Helvetica" font-size="12pt" font-weight="bold" font-style="normal" data-name="ayllu-shell"> |
485 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="ayllu-shell"> |
486 | - <text x="39.0" y="14.1" stroke="none" text-anchor="middle" data-name="ayllu-shell">ayllu-shell</text> |
487 | - |
488 | - </g> |
489 | - </g> |
490 | - </g> |
491 | - <g data-name="contributor"> |
492 | - <g fill="#eee8d5" stroke="#33322E" data-name="contributor"> |
493 | - <circle r="4.0" cx="1528.0" cy="500.0" data-name="contributor"></circle> |
494 | - <path d="M1528.0 504.0 L1528.0 512.0" fill="none" data-name="contributor"></path> |
495 | - <path d="M1524.0 508.0 L1532.0 508.0" fill="none" data-name="contributor"></path> |
496 | - <path d="M1524.0 516.0 L1528.0 512.0 L1532.0 516.0" fill="none" data-name="contributor"></path> |
497 | - </g> |
498 | - <g transform="translate(1477.5, 512)" font-family="Helvetica" font-size="12pt" font-weight="normal" font-style="normal" data-name="contributor"> |
499 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="contributor"> |
500 | - <text x="42.5" y="14.1" stroke="none" text-anchor="middle" data-name="contributor">contributor</text> |
501 | - |
502 | - </g> |
503 | - </g> |
504 | - </g> |
505 | - <g data-name="ayllu-cli"> |
506 | - <g fill="#eee8d5" stroke="#33322E" data-name="ayllu-cli"> |
507 | - <rect x="1615.0" y="300.0" height="32.0" width="75.0" data-name="ayllu-cli"></rect> |
508 | - </g> |
509 | - <g transform="translate(1615, 300)" font-family="Helvetica" font-size="12pt" font-weight="bold" font-style="normal" data-name="ayllu-cli"> |
510 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="ayllu-cli"> |
511 | - <text x="29.5" y="14.1" stroke="none" text-anchor="middle" data-name="ayllu-cli">ayllu-cli</text> |
512 | - |
513 | - </g> |
514 | - </g> |
515 | - </g> |
516 | - <g data-name="admin"> |
517 | - <g fill="#eee8d5" stroke="#33322E" data-name="admin"> |
518 | - <circle r="4.0" cx="1652.5" cy="500.0" data-name="admin"></circle> |
519 | - <path d="M1652.5 504.0 L1652.5 512.0" fill="none" data-name="admin"></path> |
520 | - <path d="M1648.5 508.0 L1656.5 508.0" fill="none" data-name="admin"></path> |
521 | - <path d="M1648.5 516.0 L1652.5 512.0 L1656.5 516.0" fill="none" data-name="admin"></path> |
522 | - </g> |
523 | - <g transform="translate(1621, 512)" font-family="Helvetica" font-size="12pt" font-weight="normal" font-style="normal" data-name="admin"> |
524 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="admin"> |
525 | - <text x="23.5" y="14.1" stroke="none" text-anchor="middle" data-name="admin">admin</text> |
526 | - |
527 | - </g> |
528 | - </g> |
529 | - </g> |
530 | - <g data-name="ayllu-builder-1"> |
531 | - <g fill="#eee8d5" stroke="#33322E" data-name="ayllu-builder-1"> |
532 | - <rect x="846.5" y="424.0" height="184.0" width="173.0" data-name="ayllu-builder-1"></rect> |
533 | - <path d="M846.5 456.0 L1019.5 456.0" fill="none" data-name="ayllu-builder-1"></path> |
534 | - </g> |
535 | - <g transform="translate(846.5, 424)" font-family="Helvetica" font-size="12pt" font-weight="bold" font-style="normal" data-name="ayllu-builder-1"> |
536 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="ayllu-builder-1"> |
537 | - <text x="78.5" y="14.1" stroke="none" text-anchor="middle" data-name="ayllu-builder-1">ayllu-builder-1</text> |
538 | - |
539 | - </g> |
540 | - </g> |
541 | - <g transform="translate(846.5, 456)" font-family="Helvetica" font-size="12pt" font-weight="normal" font-style="normal" data-name="ayllu-builder-1"> |
542 | - <g transform="translate(8, 8)" fill="#33322E" data-name="ayllu-builder-1"> |
543 | - <g transform="translate(20, 20)" data-name="ayllu-builder-1"> |
544 | - <g data-name="qemu-x86_64"> |
545 | - <g fill="#fdf6e3" stroke="#33322E" data-name="qemu-x86_64"> |
546 | - <rect x="0.0" y="32.0" height="64.0" width="117.0" data-name="qemu-x86_64"></rect> |
547 | - <path d="M0.0 32.0 L0.0 0.0 L113.1 0.0 L113.1 32.0 Z" data-name="qemu-x86_64"></path> |
548 | - <path d="M0.0 32.0 L117.0 32.0" fill="none" data-name="qemu-x86_64"></path> |
549 | - <path d="M0.0 64.0 L117.0 64.0" fill="none" data-name="qemu-x86_64"></path> |
550 | - </g> |
551 | - <g transform="translate(0, 0)" font-family="Helvetica" font-size="12pt" font-weight="normal" font-style="normal" data-name="qemu-x86_64"> |
552 | - <g transform="translate(8, 8)" fill="#33322E" text-align="left" data-name="qemu-x86_64"> |
553 | - <text x="0.0" y="14.1" stroke="none" data-name="qemu-x86_64">qemu-x86_64</text> |
554 | - |
555 | - </g> |
556 | - </g> |
557 | - <g transform="translate(0, 32)" font-family="Helvetica" font-size="12pt" font-weight="normal" font-style="normal" data-name="qemu-x86_64"> |
558 | - <g transform="translate(8, 8)" fill="#33322E" text-align="left" data-name="qemu-x86_64"> |
559 | - <text x="0.0" y="14.1" stroke="none" data-name="qemu-x86_64">tarpc-server</text> |
560 | - |
561 | - </g> |
562 | - </g> |
563 | - <g transform="translate(0, 64)" font-family="Helvetica" font-size="12pt" font-weight="normal" font-style="normal" data-name="qemu-x86_64"> |
564 | - <g transform="translate(8, 8)" fill="#33322E" text-align="left" data-name="qemu-x86_64"> |
565 | - <text x="0.0" y="14.1" stroke="none" data-name="qemu-x86_64">executor</text> |
566 | - |
567 | - </g> |
568 | - </g> |
569 | - </g> |
570 | - </g> |
571 | - </g> |
572 | - </g> |
573 | - </g> |
574 | - <g data-name="ayllu-builder-2"> |
575 | - <g fill="#eee8d5" stroke="#33322E" data-name="ayllu-builder-2"> |
576 | - <rect x="1059.5" y="424.0" height="184.0" width="181.0" data-name="ayllu-builder-2"></rect> |
577 | - <path d="M1059.5 456.0 L1240.5 456.0" fill="none" data-name="ayllu-builder-2"></path> |
578 | - </g> |
579 | - <g transform="translate(1059.5, 424)" font-family="Helvetica" font-size="12pt" font-weight="bold" font-style="normal" data-name="ayllu-builder-2"> |
580 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="ayllu-builder-2"> |
581 | - <text x="82.5" y="14.1" stroke="none" text-anchor="middle" data-name="ayllu-builder-2">ayllu-builder-2</text> |
582 | - |
583 | - </g> |
584 | - </g> |
585 | - <g transform="translate(1059.5, 456)" font-family="Helvetica" font-size="12pt" font-weight="normal" font-style="normal" data-name="ayllu-builder-2"> |
586 | - <g transform="translate(8, 8)" fill="#33322E" data-name="ayllu-builder-2"> |
587 | - <g transform="translate(20, 20)" data-name="ayllu-builder-2"> |
588 | - <g data-name="qemu-aarch64"> |
589 | - <g fill="#fdf6e3" stroke="#33322E" data-name="qemu-aarch64"> |
590 | - <rect x="0.0" y="32.0" height="64.0" width="125.0" data-name="qemu-aarch64"></rect> |
591 | - <path d="M0.0 32.0 L0.0 0.0 L118.9 0.0 L118.9 32.0 Z" data-name="qemu-aarch64"></path> |
592 | - <path d="M0.0 32.0 L125.0 32.0" fill="none" data-name="qemu-aarch64"></path> |
593 | - <path d="M0.0 64.0 L125.0 64.0" fill="none" data-name="qemu-aarch64"></path> |
594 | - </g> |
595 | - <g transform="translate(0, 0)" font-family="Helvetica" font-size="12pt" font-weight="normal" font-style="normal" data-name="qemu-aarch64"> |
596 | - <g transform="translate(8, 8)" fill="#33322E" text-align="left" data-name="qemu-aarch64"> |
597 | - <text x="0.0" y="14.1" stroke="none" data-name="qemu-aarch64">qemu-aarch64</text> |
598 | - |
599 | - </g> |
600 | - </g> |
601 | - <g transform="translate(0, 32)" font-family="Helvetica" font-size="12pt" font-weight="normal" font-style="normal" data-name="qemu-aarch64"> |
602 | - <g transform="translate(8, 8)" fill="#33322E" text-align="left" data-name="qemu-aarch64"> |
603 | - <text x="0.0" y="14.1" stroke="none" data-name="qemu-aarch64">tarpc-server</text> |
604 | - |
605 | - </g> |
606 | - </g> |
607 | - <g transform="translate(0, 64)" font-family="Helvetica" font-size="12pt" font-weight="normal" font-style="normal" data-name="qemu-aarch64"> |
608 | - <g transform="translate(8, 8)" fill="#33322E" text-align="left" data-name="qemu-aarch64"> |
609 | - <text x="0.0" y="14.1" stroke="none" data-name="qemu-aarch64">exectuor</text> |
610 | - |
611 | - </g> |
612 | - </g> |
613 | - </g> |
614 | - </g> |
615 | - </g> |
616 | - </g> |
617 | - </g> |
618 | - <g data-name="ayllu-builder-n"> |
619 | - <g fill="#eee8d5" stroke="#33322E" data-name="ayllu-builder-n"> |
620 | - <rect x="1280.5" y="424.0" height="184.0" width="157.0" data-name="ayllu-builder-n"></rect> |
621 | - <path d="M1280.5 456.0 L1437.5 456.0" fill="none" data-name="ayllu-builder-n"></path> |
622 | - </g> |
623 | - <g transform="translate(1280.5, 424)" font-family="Helvetica" font-size="12pt" font-weight="bold" font-style="normal" data-name="ayllu-builder-n"> |
624 | - <g transform="translate(8, 8)" fill="#33322E" text-align="center" data-name="ayllu-builder-n"> |
625 | - <text x="70.5" y="14.1" stroke="none" text-anchor="middle" data-name="ayllu-builder-n">ayllu-builder-n</text> |
626 | - |
627 | - </g> |
628 | - </g> |
629 | - <g transform="translate(1280.5, 456)" font-family="Helvetica" font-size="12pt" font-weight="normal" font-style="normal" data-name="ayllu-builder-n"> |
630 | - <g transform="translate(8, 8)" fill="#33322E" data-name="ayllu-builder-n"> |
631 | - <g transform="translate(20, 20)" data-name="ayllu-builder-n"> |
632 | - <g data-name="lxc"> |
633 | - <g fill="#fdf6e3" stroke="#33322E" data-name="lxc"> |
634 | - <rect x="0.0" y="32.0" height="64.0" width="101.0" data-name="lxc"></rect> |
635 | - <path d="M0.0 32.0 L0.0 0.0 L35.2 0.0 L35.2 32.0 Z" data-name="lxc"></path> |
636 | - <path d="M0.0 32.0 L101.0 32.0" fill="none" data-name="lxc"></path> |
637 | - <path d="M0.0 64.0 L101.0 64.0" fill="none" data-name="lxc"></path> |
638 | - </g> |
639 | - <g transform="translate(0, 0)" font-family="Helvetica" font-size="12pt" font-weight="normal" font-style="normal" data-name="lxc"> |
640 | - <g transform="translate(8, 8)" fill="#33322E" text-align="left" data-name="lxc"> |
641 | - <text x="0.0" y="14.1" stroke="none" data-name="lxc">lxc</text> |
642 | - |
643 | - </g> |
644 | - </g> |
645 | - <g transform="translate(0, 32)" font-family="Helvetica" font-size="12pt" font-weight="normal" font-style="normal" data-name="lxc"> |
646 | - <g transform="translate(8, 8)" fill="#33322E" text-align="left" data-name="lxc"> |
647 | - <text x="0.0" y="14.1" stroke="none" data-name="lxc">tarpc-server</text> |
648 | - |
649 | - </g> |
650 | - </g> |
651 | - <g transform="translate(0, 64)" font-family="Helvetica" font-size="12pt" font-weight="normal" font-style="normal" data-name="lxc"> |
652 | - <g transform="translate(8, 8)" fill="#33322E" text-align="left" data-name="lxc"> |
653 | - <text x="0.0" y="14.1" stroke="none" data-name="lxc">executor</text> |
654 | - |
655 | - </g> |
656 | - </g> |
657 | - </g> |
658 | - </g> |
659 | - </g> |
660 | - </g> |
661 | - </g> |
662 | - </g> |
663 | - </g> |
664 | - </g> |
665 | - </g> |
666 | - </svg> |
667 | diff --git a/www/public/assets/ayllu_logo.png b/www/public/assets/ayllu_logo.png |
668 | deleted file mode 100644 |
669 | index caf4865..0000000 |
670 | Binary files a/www/public/assets/ayllu_logo.png and /dev/null differ |
671 | diff --git a/www/public/assets/ayllu_logo.svg b/www/public/assets/ayllu_logo.svg |
672 | deleted file mode 100644 |
673 | index d1db83a..0000000 |
674 | --- a/www/public/assets/ayllu_logo.svg |
675 | +++ /dev/null |
676 | @@ -1,101 +0,0 @@ |
677 | - <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
678 | - <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" inkscape:version="1.0 (1.0+r73+1)" sodipodi:docname="textil-inca-pattern-3a.svg" version="1.1" viewBox="0 0 902 702"> |
679 | - <metadata> |
680 | - <rdf:RDF> |
681 | - <cc:Work rdf:about=""> |
682 | - <dc:format>image/svg+xml</dc:format> |
683 | - <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> |
684 | - </cc:Work> |
685 | - </rdf:RDF> |
686 | - </metadata> |
687 | - <sodipodi:namedview inkscape:current-layer="svg159" inkscape:window-maximized="1" inkscape:window-y="27" inkscape:window-x="67" inkscape:cy="467.33333" inkscape:cx="600.66667" inkscape:zoom="0.75746799" showgrid="false" id="namedview161" inkscape:window-height="1025" inkscape:window-width="1853" inkscape:pageshadow="2" inkscape:pageopacity="0" guidetolerance="10" gridtolerance="10" objecttolerance="10" borderopacity="1" bordercolor="#666666" pagecolor="#ffffff"/> |
688 | - <g fill-rule="evenodd" stroke-width="2" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-opacity="1"> |
689 | - <g id="brown" fill="#5c451c" stroke="#5c451c"> |
690 | - <path style="" d="M 1,1 H 901 V 701 H 1 Z m 0,0"/> |
691 | - </g> |
692 | - <g id="orange" fill="#ffa300" stroke="#ffa300"> |
693 | - <path d="m 641,341 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
694 | - <path d="m 121,341 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
695 | - <path d="m 401,341 h 20 v -20 h 20 v 20 h 20 v 20 h -20 v 20 h -20 v -20 h -20 z m 0,0"/> |
696 | - <path d="m 441,341 h 20 v -20 h 20 v 20 h 20 v 20 h -20 v 20 h -20 v -20 h -20 z m 0,0"/> |
697 | - </g> |
698 | - <g id="turquoise" fill="#358794" stroke="#358794"> |
699 | - <path d="m 701,221 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h -40 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
700 | - <path d="m 701,481 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h -40 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 z m 0,0"/> |
701 | - <path d="m 621,361 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 40 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
702 | - <path d="m 621,341 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -40 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 z m 0,0"/> |
703 | - <path d="m 201,221 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 H 81 v 20 H 61 v 20 h 40 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 z m 0,0"/> |
704 | - <path d="M 201,481 H 181 V 461 H 161 V 441 H 141 V 421 H 121 V 401 H 101 V 381 H 81 V 361 H 61 v -20 h 40 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 z m 0,0"/> |
705 | - <path d="m 281,361 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 40 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 z m 0,0"/> |
706 | - <path d="m 281,341 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -40 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 z m 0,0"/> |
707 | - <path d="m 441,121 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 40 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
708 | - <path d="m 261,361 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 40 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
709 | - <path d="m 461,121 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 40 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 z m 0,0"/> |
710 | - <path d="m 641,361 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 40 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 z m 0,0"/> |
711 | - </g> |
712 | - <g id="white" fill="#ffffff" stroke="#ffffff"> |
713 | - <path d="m 701,161 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h -40 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
714 | - <path d="m 701,541 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h -40 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 z m 0,0"/> |
715 | - <path d="m 441,61 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 40 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
716 | - <path d="m 441,641 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -40 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 z m 0,0"/> |
717 | - <path d="m 461,61 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 40 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 z m 0,0"/> |
718 | - <path d="m 621,421 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 40 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
719 | - <path d="m 621,281 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -40 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 z m 0,0"/> |
720 | - <path d="m 281,281 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -40 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 z m 0,0"/> |
721 | - <path d="m 201,161 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 H 81 v 20 H 61 v 20 H 41 v 20 H 21 v 20 H 1 v 20 h 40 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 z m 0,0"/> |
722 | - <path d="M 201,541 H 181 V 521 H 161 V 501 H 141 V 481 H 121 V 461 H 101 V 441 H 81 V 421 H 61 V 401 H 41 V 381 H 21 V 361 H 1 v -20 h 40 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 z m 0,0"/> |
723 | - <path d="m 461,641 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -40 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 z m 0,0"/> |
724 | - <path d="m 281,421 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 40 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 z m 0,0"/> |
725 | - <path d="m 701,181 h 20 v -80 h 100 v 40 h -40 v -20 h -20 v 40 h 80 V 81 H 701 Z m 0,0"/> |
726 | - <path d="M 721,181 H 701 V 101 H 601 v 40 h 40 v -20 h 20 v 40 H 581 V 81 h 140 z m 0,0"/> |
727 | - <path d="m 701,521 h 20 v 80 h 100 v -40 h -40 v 20 h -20 v -40 h 80 v 80 H 701 Z m 0,0"/> |
728 | - <path d="m 721,521 h -20 v 80 H 601 v -40 h 40 v 20 h 20 v -40 h -80 v 80 h 140 z m 0,0"/> |
729 | - <path d="m 181,521 h 20 v 80 h 100 v -40 h -40 v 20 h -20 v -40 h 80 v 80 H 181 Z m 0,0"/> |
730 | - <path d="m 201,521 h -20 v 80 H 81 v -40 h 40 v 20 h 20 V 541 H 61 v 80 h 140 z m 0,0"/> |
731 | - <path d="m 181,181 h 20 v -80 h 100 v 40 h -40 v -20 h -20 v 40 h 80 V 81 H 181 Z m 0,0"/> |
732 | - <path d="M 201,181 H 181 V 101 H 81 v 40 h 40 v -20 h 20 v 40 H 61 V 81 h 140 z m 0,0"/> |
733 | - <path d="m 441,181 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h -40 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
734 | - <path d="m 461,181 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h 40 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 z m 0,0"/> |
735 | - <path d="m 441,521 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h -40 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 z m 0,0"/> |
736 | - <path d="m 461,521 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h 40 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 z m 0,0"/> |
737 | - <path d="M 1,21 H 881 V 61 H 1 Z m 0,0"/> |
738 | - <path d="m 1,641 h 880 v 40 H 1 Z m 0,0"/> |
739 | - <path d="m 421,281 h 20 v -20 h 20 v 20 h 20 v 20 h -20 v 20 h -20 v -20 h -20 z m 0,0"/> |
740 | - <path d="m 681,341 h 20 v -20 h 20 v 20 h 20 v 20 h -20 v 20 h -20 v -20 h -20 z m 0,0"/> |
741 | - <path d="m 161,341 h 20 v -20 h 20 v 20 h 20 v 20 h -20 v 20 h -20 v -20 h -20 z m 0,0"/> |
742 | - <path d="m 421,401 h 20 v -20 h 20 v 20 h 20 v 20 h -20 v 20 h -20 v -20 h -20 z m 0,0"/> |
743 | - <path d="m 401,301 h 20 v 20 h -20 z m 0,0"/> |
744 | - <path d="m 381,321 h 20 v 20 h -20 z m 0,0"/> |
745 | - <path d="m 361,341 h 20 v 20 h -20 z m 0,0"/> |
746 | - <path d="m 381,361 h 20 v 20 h -20 z m 0,0"/> |
747 | - <path d="m 401,381 h 20 v 20 h -20 z m 0,0"/> |
748 | - <path d="m 501,321 h 20 v 20 h -20 z m 0,0"/> |
749 | - <path d="m 521,341 h 20 v 20 h -20 z m 0,0"/> |
750 | - <path d="m 501,361 h 20 v 20 h -20 z m 0,0"/> |
751 | - <path d="m 481,381 h 20 v 20 h -20 z m 0,0"/> |
752 | - <path d="m 421,341 h 20 v 20 h -20 z m 0,0"/> |
753 | - <path d="m 461,341 h 20 v 20 h -20 z m 0,0"/> |
754 | - <path d="m 881,21 h 20 v 40 h -20 z m 0,0"/> |
755 | - <path d="m 881,641 h 20 v 40 h -20 z m 0,0"/> |
756 | - </g> |
757 | - <g id="red" fill="#de3333" stroke="#de3333"> |
758 | - <path d="m 801,201 h 60 V 81 h 40 v 220 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
759 | - <path d="M 101,201 H 41 V 81 H 1 v 220 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 z m 0,0"/> |
760 | - <path d="M 101,501 H 41 V 621 H 1 V 401 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 z m 0,0"/> |
761 | - <path d="m 801,501 h 60 v 120 h 40 V 401 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 z m 0,0"/> |
762 | - <path d="m 381,341 h 20 v 20 h -20 z m 0,0"/> |
763 | - <path d="m 401,321 h 20 v 20 h -20 z m 0,0"/> |
764 | - <path d="m 421,301 h 20 v 20 h -20 z m 0,0"/> |
765 | - <path d="m 461,301 h 20 v 20 h -20 z m 0,0"/> |
766 | - <path d="m 481,321 h 20 v 20 h -20 z m 0,0"/> |
767 | - <path d="m 501,341 h 20 v 20 h -20 z m 0,0"/> |
768 | - <path d="m 481,361 h 20 v 20 h -20 z m 0,0"/> |
769 | - <path d="m 461,381 h 20 v 20 h -20 z m 0,0"/> |
770 | - <path d="m 441,361 h 20 v 20 h -20 z m 0,0"/> |
771 | - <path d="m 421,381 h 20 v 20 h -20 z m 0,0"/> |
772 | - <path d="m 401,361 h 20 v 20 h -20 z m 0,0"/> |
773 | - <path d="m 881,81 h 20 v 220 h -20 z m 0,0"/> |
774 | - <path d="m 881,401 h 20 v 220 h -20 z m 0,0"/> |
775 | - </g> |
776 | - </g> |
777 | - </svg> |
778 | diff --git a/www/public/assets/images/ui-day.png b/www/public/assets/images/ui-day.png |
779 | deleted file mode 100644 |
780 | index 3e217a7..0000000 |
781 | Binary files a/www/public/assets/images/ui-day.png and /dev/null differ |
782 | diff --git a/www/public/assets/images/ui.png b/www/public/assets/images/ui.png |
783 | deleted file mode 100644 |
784 | index bf94438..0000000 |
785 | Binary files a/www/public/assets/images/ui.png and /dev/null differ |
786 | diff --git a/www/public/docs/architecture/index.html b/www/public/docs/architecture/index.html |
787 | deleted file mode 100644 |
788 | index aeeafe9..0000000 |
789 | --- a/www/public/docs/architecture/index.html |
790 | +++ /dev/null |
791 | @@ -1 +0,0 @@ |
792 | - <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li class=active><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li><a href=https://ayllu-forge.org/docs/mail/>Mail</a><li><a href=https://ayllu-forge.org/docs/proxy/>Reverse Proxy</a><li><a href=https://ayllu-forge.org/docs/sites/>Static Hosting</a><li><a href=https://ayllu-forge.org/docs/themes/>Themes</a></ul></div><div class=doc-content><h1 id=the-architecture-of-ayllu><a aria-label="Anchor link for: the-architecture-of-ayllu" class=zola-anchor href=#the-architecture-of-ayllu>The Architecture of Ayllu</a></h1><p><strong>Ayllu is a new software project and it's design is evolving.</strong><p>It's basic architecture is that of a single binary providing a web interface to browse and interact with Git repositories as well as an RPC server based on <a href=https://github.com/google/tarpc>tarpc</a> with an embedded client. The RPC server running in the core Ayllu binary is called the <code>job_server</code> and it provides an interface to interact with Ayllu for administrators. Much of the functionality of Ayllu is implemented via <code>RPC extensions</code> which are minimal binaries that are used to extend the core functionality of Ayllu.<p>The current architecture of Ayllu is depicted below:<p><a href=/assets/architecture.svg><img class=diagram src=/assets/architecture.svg></a></div></div></main><footer class=page-footer>2024, <a href=/ayllu/ayllu/blob/main/ATTRIBUTIONS.md>attributions</a></footer></div> |
793 | \ No newline at end of file |
794 | diff --git a/www/public/docs/builds/index.html b/www/public/docs/builds/index.html |
795 | deleted file mode 100644 |
796 | index 1d1f6b4..0000000 |
797 | --- a/www/public/docs/builds/index.html |
798 | +++ /dev/null |
799 | @@ -1,37 +0,0 @@ |
800 | - <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li class=active><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li><a href=https://ayllu-forge.org/docs/mail/>Mail</a><li><a href=https://ayllu-forge.org/docs/proxy/>Reverse Proxy</a><li><a href=https://ayllu-forge.org/docs/sites/>Static Hosting</a><li><a href=https://ayllu-forge.org/docs/themes/>Themes</a></ul></div><div class=doc-content><p>Ayllu contains a plugin called <code>ayllu-build</code> which is responsible for executing build manifests in a CI/CD environment. The design of the build system prioritizes the ability to run the entire workflow locally.<h3 id=an-example-local-workflow><a aria-label="Anchor link for: an-example-local-workflow" class=zola-anchor href=#an-example-local-workflow>An Example Local Workflow</a></h3><p>Build manifests are written in <a href=https://nickel-lang.org/>Nickel</a>.<pre class=language-sh data-lang=sh><code class=language-sh data-lang=sh>mkdir -p my-test-repo/.ayllu/build |
801 | - cd my-test-repo && git init |
802 | - # create a simple workflow that prints "Hello" and "World" |
803 | - cat <<EOF > .ayllu/build/main.ncl |
804 | - { |
805 | - workflows = [ |
806 | - { |
807 | - name = "Simple", |
808 | - steps = [ |
809 | - { |
810 | - name = "Hello", |
811 | - input = "echo -n Hello" |
812 | - }, |
813 | - { |
814 | - name = "World", |
815 | - input = "echo -n World" |
816 | - } |
817 | - ] |
818 | - } |
819 | - ] |
820 | - } |
821 | - EOF |
822 | - # validate the build plan and generate a DOT file to stdout |
823 | - ayllu_build plan |
824 | - >>> 2023-12-14T21:58:37.777493Z INFO ayllu_build:66: logger initialized |
825 | - >>> digraph { |
826 | - >>> 0 [ label = "Workflow: Simple" ] |
827 | - >>> 1 [ label = "Step: Hello" ] |
828 | - >>> 2 [ label = "Step: World" ] |
829 | - >>> 0 -> 1 [ label = "0" ] |
830 | - >>> 0 -> 2 [ label = "0" ] |
831 | - >>> } |
832 | - # if you have graphviz installed you can visualize this output: |
833 | - ayllu_build plan | dot -Tx11 |
834 | - # finally you can execute the workflow locally |
835 | - ayllu_build evaluate |
836 | - </code></pre></div></div></main><footer class=page-footer>2024, <a href=/ayllu/ayllu/blob/main/ATTRIBUTIONS.md>attributions</a></footer></div> |
837 | \ No newline at end of file |
838 | diff --git a/www/public/docs/configuration/index.html b/www/public/docs/configuration/index.html |
839 | deleted file mode 100644 |
840 | index 4952999..0000000 |
841 | --- a/www/public/docs/configuration/index.html |
842 | +++ /dev/null |
843 | @@ -1,87 +0,0 @@ |
844 | - <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li class=active><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li><a href=https://ayllu-forge.org/docs/mail/>Mail</a><li><a href=https://ayllu-forge.org/docs/proxy/>Reverse Proxy</a><li><a href=https://ayllu-forge.org/docs/sites/>Static Hosting</a><li><a href=https://ayllu-forge.org/docs/themes/>Themes</a></ul></div><div class=doc-content><h1 id=initial-configuration><a aria-label="Anchor link for: initial-configuration" class=zola-anchor href=#initial-configuration>Initial Configuration</a></h1><p>After following the <a href=https://ayllu-forge.org/docs/installation>installation</a> you need to setup your configuration file and initialize the database.<h2 id=user-based-installation><a aria-label="Anchor link for: user-based-installation" class=zola-anchor href=#user-based-installation>User Based Installation</a></h2><pre class=language-sh data-lang=sh><code class=language-sh data-lang=sh>mkdir ~/.config/ayllu |
845 | - ayllu config generate > ~/.config/ayllu/config.yaml |
846 | - # open up config.yaml in your favorite editor and configure at least one |
847 | - # collection |
848 | - vim ~/.config/ayllu/config.yaml |
849 | - # now verify the config is valid |
850 | - ayllu config display |
851 | - # initialize and migrate the database |
852 | - ayllu migrate |
853 | - # launch the web server |
854 | - ayllu serve |
855 | - </code></pre><h1 id=collections><a aria-label="Anchor link for: collections" class=zola-anchor href=#collections>Collections</a></h1><p>Collections are simply a directory on your file system that contains zero or more Git repositories. They can be structured in whichever way is suitable for your personal workflow.<pre class=language-toml data-lang=toml><code class=language-toml data-lang=toml># On my system I keep active projects in a directory called "projects" |
856 | - [[collections]] |
857 | - name = "projects" |
858 | - description = "active projects" |
859 | - path = "/home/kevin/repos/projects" |
860 | - # And another directory of archived projects that I call "the attic" |
861 | - [[collections]] |
862 | - name = "attic" |
863 | - description = "projects stowed away in the attic" |
864 | - path = "/home/kevin/repos/attic" |
865 | - |
866 | - # it's also possible to create hidden collections that aren't showed in the |
867 | - # collections index page but will be rendered if you know the link to them. |
868 | - # If you want to restrict access completely you'll need to employ basic auth |
869 | - # or similiar in your webserver. |
870 | - [[collections]] |
871 | - name = "private" |
872 | - description = "my private code, no looking!" |
873 | - path = "/home/kevin/repos/private" |
874 | - </code></pre><h1 id=running-jobs><a aria-label="Anchor link for: running-jobs" class=zola-anchor href=#running-jobs>Running Jobs</a></h1><p>Once Ayllu has been configured and the server is running you'll want to run jobs against your repositories. Jobs do things like compute authorship stats and determine code composition. Keep in mind that <code>jobs</code> are distinct from <code>builds</code>. Jobs perform internal actions that allow Ayllu to function while builds are for running codebase specific workflows.<p>Most jobs are run via <a href=https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks>git hooks</a><pre class=language-sh data-lang=sh><code class=language-sh data-lang=sh># ayllu's internal job server will be listening on a unix socket |
875 | - ss -xlp |grep ayllu |
876 | - u_str LISTEN 0 1024 /run/user/1000/ayllu.sock 305937 * 0 users:(("ayllu",pid=70917,fd=14)) |
877 | - cd ~/repos/projects/ayllu |
878 | - # run against your repository |
879 | - # depending on the number of commits this can take a considerable amount of |
880 | - # time to run as it needs to perform computations against each commit. |
881 | - ayllu jobs run . |
882 | - </code></pre><h1 id=tree-sitter><a aria-label="Anchor link for: tree-sitter" class=zola-anchor href=#tree-sitter>Tree Sitter</a></h1><p>Syntax highlighting in the web interface is implemented with <a href=https://tree-sitter.github.io/tree-sitter/>tree-sitter</a>. Instead of embedding and compiling potentially hundreds of individual shared modules for each language you can install languages you are interested in via your operating system's package manager. Unfortunately, not all parsers are consistently packaged and thus it is possible to override system defaults as described below.<h2 id=customizing-shared-module-paths><a aria-label="Anchor link for: customizing-shared-module-paths" class=zola-anchor href=#customizing-shared-module-paths>Customizing Shared Module Paths</a></h2><p>Normally tree-sitter parsers should have the following layout:<pre class=language-text data-lang=text><code class=language-text data-lang=text># compiled shared modules |
883 | - /usr/lib/libtree-sitter-$language.so |
884 | - # supplemental query files |
885 | - /usr/share/tree-sitter/queries/$language/[highlights|injections|locals].scm |
886 | - </code></pre><p>By default Ayllu will attempt to load parsers and query files from those directories.<h3 id=example-custom-configuration><a aria-label="Anchor link for: example-custom-configuration" class=zola-anchor href=#example-custom-configuration>Example Custom Configuration</a></h3><div class=info>NOTE: Refer to <a href=https://ayllu-forge.org/ayllu/ayllu/blob/main/config.example.toml>config.sample.toml</a> for the latest example configuration or <a href=https://ayllu-forge.org/ayllu/ayllu/blob/main/src/config.rs>config.rs</a>.</div><pre class=language-toml data-lang=toml><code class=language-toml data-lang=toml>[tree-sitter] |
887 | - # specify the base path to search for libtree-sitter-$language.so |
888 | - base_path = "/usr/lib" |
889 | - # directory of syntax queries |
890 | - queries_path = "/usr/share/tree-sitter/queries" |
891 | - </code></pre><h2 id=adding-a-additional-queries><a aria-label="Anchor link for: adding-a-additional-queries" class=zola-anchor href=#adding-a-additional-queries>Adding a Additional Queries</a></h2><p>An additional path to look for queries can also be added:<pre class=language-toml data-lang=toml><code class=language-toml data-lang=toml>[tree-sitter] |
892 | - queries_extras_path = "/etc/ayllu/queries" |
893 | - </code></pre><h2 id=adding-additional-parsers><a aria-label="Anchor link for: adding-additional-parsers" class=zola-anchor href=#adding-additional-parsers>Adding Additional Parsers</a></h2><p>If you want to add a custom parser that's installed at a non-standard path you can do that too. This can be useful for parsers that aren't packaged on your system and also for custom programming languages.<pre class=language-toml data-lang=toml><code class=language-toml data-lang=toml>[[tree-sitter.parsers]] |
894 | - name = "fuu-lang" |
895 | - shared_object = "/etc/ayllu/parsers/libtree-sitter-fuu.so" |
896 | - highlight_query = "/etc/ayllu/queries/fuu/highlights.scm" |
897 | - locals_query = "/etc/ayllu/queries/fuu/locals.scm" |
898 | - injections = "/etc/ayllu/queries/fuu/injections.scm" |
899 | - </code></pre><h1 id=language-detection-syntax-highlighting><a aria-label="Anchor link for: language-detection-syntax-highlighting" class=zola-anchor href=#language-detection-syntax-highlighting>Language Detection & Syntax Highlighting</a></h1><p>Ayllu determines which language is being rendered by file extension, file name, or an "alias" in the case of a markdown code block.<h2 id=language-mapping><a aria-label="Anchor link for: language-mapping" class=zola-anchor href=#language-mapping>Language Mapping</a></h2><p>Sometimes you want one language to be detected and presented as something different. For instance by default Ayllu will detect <code>hello.ml</code> as a Standard ML file, but you can override this to OCaml with a mapping.<pre class=language-toml data-lang=toml><code class=language-toml data-lang=toml>[languages] |
900 | - [languages.mappings] |
901 | - "Standard ML" = "OCaml" |
902 | - </code></pre><h2 id=custom-languages><a aria-label="Anchor link for: custom-languages" class=zola-anchor href=#custom-languages>Custom Languages</a></h2><p>If you're the author of a programming language and want Ayllu to detect it based on file extensions you can add an additional language in your config file.<pre class=language-toml data-lang=toml><code class=language-toml data-lang=toml># append the following in your config.toml |
903 | - [[ languages.extras ]] |
904 | - name = "BazQux" |
905 | - extensions = [".baz", ".qux", ".bq"] |
906 | - # any file with this name will be detected as BazQux |
907 | - filename = [".bazscript"] |
908 | - # deep pink |
909 | - color = "#ff1493" |
910 | - </code></pre><p>You can also use the languages section to modify existing languages, for instance if for some reason you didn't like the default colors associated with a particular programming language, you can adjust it here.<pre class=language-toml data-lang=toml><code class=language-toml data-lang=toml># append the following in your config.toml |
911 | - [[ languages.extras ]] |
912 | - name = "go" |
913 | - # Go is pink! |
914 | - color = "#ff1493" |
915 | - </code></pre><h1 id=adding-custom-tree-sitter-highlights><a aria-label="Anchor link for: adding-custom-tree-sitter-highlights" class=zola-anchor href=#adding-custom-tree-sitter-highlights>Adding Custom Tree Sitter Highlights</a></h1><p>You can override system installed tree-sitter <a href=https://tree-sitter.github.io/tree-sitter/syntax-highlighting#highlights>highlights</a> in the Ayllu configuration file. For example we can add two new highlight queries to the <code>diff</code> parser called <code>@addition</code> and <code>@removal</code>. With these enabled Ayllu will paint the relevant code sections with CSS classes <code>ts_addition</code> and <code>ts_removal</code> which you can style in theme configurations.<pre class=language-toml data-lang=toml><code class=language-toml data-lang=toml>[tree-sitter.highlights] |
916 | - diff = """ |
917 | - ; used to highlight diffs in the UI |
918 | - [(addition) (new_file)] @addition |
919 | - [(deletion) (old_file)] @removal |
920 | - |
921 | - (commit) @constant |
922 | - (location) @attribute |
923 | - (command) @variable.builtin |
924 | - """ |
925 | - </code></pre><h1 id=mirroring><a aria-label="Anchor link for: mirroring" class=zola-anchor href=#mirroring>Mirroring</a></h1><p>Git mirrors will be automatically detected by looking at git configuration to determine if the repository has a <code>mirror = true</code> flag present in any of it's configured remotes. If any remote is flagged as a mirror then the repository will be considered a mirror. Mirror repositories will not be listed in RSS feeds, be subject to certain jobs types, or be available in the remote API.<h2 id=creating-a-mirror><a aria-label="Anchor link for: creating-a-mirror" class=zola-anchor href=#creating-a-mirror>Creating a Mirror</a></h2><p>The simplest way to create a mirror is by cloning a repository with the <code>--mirror</code> flag. For example: <code>git clone https://ayllu-forge.org/ayllu/ayllu --mirror</code> will result in a git config such as:<pre><code>[remote "origin"] |
926 | - url = https://ayllu-forge.org/ayllu/ayllu |
927 | - fetch = +refs/*:refs/* |
928 | - mirror = true |
929 | - |
930 | - </code></pre></div></div></main><footer class=page-footer>2024, <a href=/ayllu/ayllu/blob/main/ATTRIBUTIONS.md>attributions</a></footer></div> |
931 | \ No newline at end of file |
932 | diff --git a/www/public/docs/developers/index.html b/www/public/docs/developers/index.html |
933 | deleted file mode 100644 |
934 | index dcf23b7..0000000 |
935 | --- a/www/public/docs/developers/index.html |
936 | +++ /dev/null |
937 | @@ -1,5 +0,0 @@ |
938 | - <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li class=active><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li><a href=https://ayllu-forge.org/docs/mail/>Mail</a><li><a href=https://ayllu-forge.org/docs/proxy/>Reverse Proxy</a><li><a href=https://ayllu-forge.org/docs/sites/>Static Hosting</a><li><a href=https://ayllu-forge.org/docs/themes/>Themes</a></ul></div><div class=doc-content><h1 id=developing-components><a aria-label="Anchor link for: developing-components" class=zola-anchor href=#developing-components>Developing Components</a></h1><p>Ayllu is split up into several distinct components, to work on one of them you typically want to start one of two feedback cycles: <code>lint->test->compile</code> or <code>compile->serve</code>. To start each one you can can run <code>scripts/test.sh $COMPONENT</code> or <code>scripts/watch.sh $COMPONENT</code> and the appropriate <code>cargo watch</code> command will be started for you.<h1 id=testing-the-entire-ci-workflow><a aria-label="Anchor link for: testing-the-entire-ci-workflow" class=zola-anchor href=#testing-the-entire-ci-workflow>Testing the Entire CI Workflow</a></h1><p>You can run all of the CI tests locally by invoking <code>ayllu-build</code> directly, assuming it is compiled it can be launched like this:<pre class=language-sh data-lang=sh><code class=language-sh data-lang=sh># run all tests in .ayllu |
939 | - ayllu-build evaluate |
940 | - </code></pre><h1 id=ayllu-forge-org><a aria-label="Anchor link for: ayllu-forge-org" class=zola-anchor href=#ayllu-forge-org>ayllu-forge.org</a></h1><p>The <a href=https://ayllu-forge.org>Ayllu website</a> and project documentation are built together with <a href=https://www.getzola.org/>Zola</a> which you must install. After which you can startup a local preview of the site with the following commands:<pre class=language-sh data-lang=sh><code class=language-sh data-lang=sh>cd www && zola serve |
941 | - </code></pre><p>The generated content are hosted directly from Ayllu and you simply need to build and commit the generated code directly into the repository.<pre class=language-sh data-lang=sh><code class=language-sh data-lang=sh>cd www && zola build |
942 | - </code></pre><h2 id=diagrams><a aria-label="Anchor link for: diagrams" class=zola-anchor href=#diagrams>Diagrams</a></h2><p>Diagrams are built with <a href=https://www.nomnoml.com/>nomnoml</a> and their SVG content contain the source for generating the diagrams. Simply open one of the source SVGs up and copy-paste it to the editor of the nomnoml website.</div></div></main><footer class=page-footer>2024, <a href=/ayllu/ayllu/blob/main/ATTRIBUTIONS.md>attributions</a></footer></div> |
943 | \ No newline at end of file |
944 | diff --git a/www/public/docs/faq/index.html b/www/public/docs/faq/index.html |
945 | deleted file mode 100644 |
946 | index 74d3488..0000000 |
947 | --- a/www/public/docs/faq/index.html |
948 | +++ /dev/null |
949 | @@ -1 +0,0 @@ |
950 | - <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li class=active><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li><a href=https://ayllu-forge.org/docs/mail/>Mail</a><li><a href=https://ayllu-forge.org/docs/proxy/>Reverse Proxy</a><li><a href=https://ayllu-forge.org/docs/sites/>Static Hosting</a><li><a href=https://ayllu-forge.org/docs/themes/>Themes</a></ul></div><div class=doc-content><h5 id=what-does-ayllu-mean><a aria-label="Anchor link for: what-does-ayllu-mean" class=zola-anchor href=#what-does-ayllu-mean>What Does "Ayllu" Mean?</a></h5><p>The name <a href=https://en.wikipedia.org/wiki/Ayllu>Ayllu</a> <em>/ˈajʎu/</em>, <em>eye-joo</em> is the Quechua word for the traditional form of a community in the Andes region of South America, particularly in Bolivia and Peru.<h5 id=do-you-provide-hosting><a aria-label="Anchor link for: do-you-provide-hosting" class=zola-anchor href=#do-you-provide-hosting>Do You Provide Hosting?</a></h5><p>Not currently. If there was enough interest the project might offer hosted environments as a way to sustain it's development.</div></div></main><footer class=page-footer>2024, <a href=/ayllu/ayllu/blob/main/ATTRIBUTIONS.md>attributions</a></footer></div> |
951 | \ No newline at end of file |
952 | diff --git a/www/public/docs/index.html b/www/public/docs/index.html |
953 | deleted file mode 100644 |
954 | index d4492db..0000000 |
955 | --- a/www/public/docs/index.html |
956 | +++ /dev/null |
957 | @@ -1 +0,0 @@ |
958 | - <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li><a href=https://ayllu-forge.org/docs/mail/>Mail</a><li><a href=https://ayllu-forge.org/docs/proxy/>Reverse Proxy</a><li><a href=https://ayllu-forge.org/docs/sites/>Static Hosting</a><li><a href=https://ayllu-forge.org/docs/themes/>Themes</a></ul></div><div class=doc-content><h1 id=documentation><a aria-label="Anchor link for: documentation" class=zola-anchor href=#documentation>Documentation</a></h1><p>Welcome to the Ayllu documentation 📖, this is section serves as an authoritative reference on all things related to the Ayllu code forge!</div></div></main><footer class=page-footer>2024, <a href=/ayllu/ayllu/blob/main/ATTRIBUTIONS.md>attributions</a></footer></div> |
959 | \ No newline at end of file |
960 | diff --git a/www/public/docs/installation/index.html b/www/public/docs/installation/index.html |
961 | deleted file mode 100644 |
962 | index 1dc5c80..0000000 |
963 | --- a/www/public/docs/installation/index.html |
964 | +++ /dev/null |
965 | @@ -1,60 +0,0 @@ |
966 | - <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li class=active><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li><a href=https://ayllu-forge.org/docs/mail/>Mail</a><li><a href=https://ayllu-forge.org/docs/proxy/>Reverse Proxy</a><li><a href=https://ayllu-forge.org/docs/sites/>Static Hosting</a><li><a href=https://ayllu-forge.org/docs/themes/>Themes</a></ul></div><div class=doc-content><h1 id=running-as-a-container><a aria-label="Anchor link for: running-as-a-container" class=zola-anchor href=#running-as-a-container>Running as a Container</a></h1><p>The quickest way to get started running Ayllu is by using a container. <a href=https://podman.io/>Podman</a> is the only supported container platform although Docker may work as well.<p>There are several different configurations that can be used to run Ayllu as a container.<ul><li><a href=https://ayllu-forge.org/docs/installation/#rootless-container-with-ayllu-running-as-root>Rootless with Ayllu running as root within the container</a><li><a href=https://ayllu-forge.org/docs/installation/#rootless-with-a-non-root-user-within-a-container>Rootless with a non-root user within the container</a><li><a href=https://ayllu-forge.org/docs/installation/#as-root-with-ayllu-running-as-a-non-root-user>As root with Ayllu running as a non-root user</a></ul><h2 id=rootless-container-with-ayllu-running-as-root><a aria-label="Anchor link for: rootless-container-with-ayllu-running-as-root" class=zola-anchor href=#rootless-container-with-ayllu-running-as-root>Rootless Container with Ayllu Running as Root</a></h2><p>This configuration works best if you want Ayllu to have access to your repositories for browsing your code locally. The tutorial assumes that you have permissions to access all of your code repositories.Note that the commands below use a separate configuration and data paths to avoid conflicting with the default paths if the Ayllu binary is installed directly on your system.<p>First create configuration and data paths that we will map into the container.<pre><code>mkdir ~/.config/ayllu-podman |
967 | - mkdir ~/.local/share/ayllu-podman |
968 | - </code></pre><p>Next pull the latest version of the container and generate a new configuration file.<pre><code>podman pull registry.ayllu-forge.org/ayllu/ayllu:main |
969 | - podman run --rm -ti registry.ayllu-forge.org/ayllu/ayllu:main ayllu config generate > ~/.config/ayllu-podman/config.toml |
970 | - </code></pre><p>The next step is to map "collections" (directories that contain git repositories) into the Ayllu container. On my system I keep active projects I'm working on in a directory called <code>~/repos/projects</code> and I keep past projects for reference in a directory called <code>~/repos/attic</code>.<pre><code>... |
971 | - [[collections]] |
972 | - name = "projects" |
973 | - description = "active projects" |
974 | - # ~/repos/projects --> /repos in the container |
975 | - path = "/repos/projects" |
976 | - |
977 | - [[collections]] |
978 | - name = "attic" |
979 | - description = "past projects stowed away in the attic" |
980 | - path = "/repos/attic" |
981 | - ... |
982 | - </code></pre><p>Now you can start the container ensuring that you map the code collection into the correct path which you configured in the step above. In the commands below we will use the following volume maps from my host system into the container. Take a look at the Podman <a href=https://github.com/containers/podman/blob/main/docs/tutorials/rootless_tutorial.md>rootless tutorial</a> for a refresher on how rootless volume mappings work. Note that below the repositories are mounted as :rw. This is because Ayllu uses Git <a href=https://git-scm.com/docs/git-worktree>worktrees</a> to run certain types of analysis such as the code composition chart. If you don't care about that you can change this to read-only to prevent any write access at all.<pre><code># code repositories |
983 | - -v ~/repos:/repos:rw |
984 | - # configuration directory |
985 | - -v ~/.config/ayllu-podman:/root/.config/ayllu |
986 | - # stateful sqlite database |
987 | - -v ~/.local/share/ayllu-podman:/root/.local/share/ayllu |
988 | - </code></pre><p>Finally we can launch the actual container.<pre><code>podman run \ |
989 | - --net host --rm -ti --user root \ |
990 | - -v ~/repos:/repos \ |
991 | - -v ~/.config/ayllu-podman:/root/.config/ayllu \ |
992 | - -v ~/.local/share/ayllu-podman:/root/.local/share/ayllu \ |
993 | - registry.ayllu-forge.org/ayllu/ayllu:main \ |
994 | - ayllu serve |
995 | - </code></pre><p>You should now be able to browse to the user interface at <a href=http://localhost:8080>localhost:8080</a>.<h3 id=configure-with-systemd><a aria-label="Anchor link for: configure-with-systemd" class=zola-anchor href=#configure-with-systemd>Configure with Systemd</a></h3><p>You can also configure the container to run as a systemd-user service. See the documentation for <a href=https://docs.podman.io/en/latest/markdown/podman-systemd.unit.5.html>podman systemd units</a>. You can also checkout the <a href=https://wiki.archlinux.org/title/Podman#Quadlet>archlinux wiki</a> for a tutorial.<p>Here is an example file at <code>~/.config/containers/systemd/ayllu.container</code>.<pre><code>[Unit] |
996 | - Description=Ayllu Container |
997 | - |
998 | - [Container] |
999 | - ContainerName=ayllu |
1000 | - Image=registry.ayllu-forge.org/ayllu/ayllu:main |
1001 | - Network=host |
1002 | - User=root |
1003 | - Volume=%h/repos:/repos:rw |
1004 | - Volume=%h/.config/ayllu-podman:/root/.config/ayllu |
1005 | - Volume=%h/.local/share/ayllu-podman:/root/.local/share/ayllu |
1006 | - Exec=ayllu serve |
1007 | - |
1008 | - [Service] |
1009 | - Restart=on-failure |
1010 | - |
1011 | - # Extend Timeout to allow time to pull the image |
1012 | - TimeoutStartSec=300 |
1013 | - |
1014 | - # The [Install] section allows enabling the generated service. |
1015 | - [Install] |
1016 | - WantedBy=default.target |
1017 | - </code></pre><p>Once you've configured the file you can install and run it:<pre><code># validate the configuration |
1018 | - /usr/lib/podman/quadlet -user -dryrun |
1019 | - # install generated systemd services |
1020 | - /usr/lib/podman/quadlet -user ~/.config/systemd/user |
1021 | - # reload the user daemon |
1022 | - systemctl --user daemon-reload |
1023 | - # start the ayllu container |
1024 | - systemctl --user start ayllu |
1025 | - </code></pre><p>If all went well Ayllu should now be running as a container managed by systemd!<h1 id=rootless-with-a-non-root-user-within-a-container><a aria-label="Anchor link for: rootless-with-a-non-root-user-within-a-container" class=zola-anchor href=#rootless-with-a-non-root-user-within-a-container>Rootless with a non-root User within a Container</a></h1><p>This method is the most restricted technique for running Ayllu in a production deployment. Not fully supported yet, TODO.<h1 id=as-root-with-ayllu-running-as-a-non-root-user><a aria-label="Anchor link for: as-root-with-ayllu-running-as-a-non-root-user" class=zola-anchor href=#as-root-with-ayllu-running-as-a-non-root-user>As Root with Ayllu Running as a Non-root User</a></h1><p>This method is a hybrid approach that is useful for serving components of Ayllu from a container but also retaining a system level installation. Not fully supported yet, TODO.<h1 id=distribution-packages><a aria-label="Anchor link for: distribution-packages" class=zola-anchor href=#distribution-packages>Distribution Packages</a></h1><div class=warning>NOTE: Few distribution packages currently exist for Ayllu, any contributions in this regard would be gladly accepted!</div><h2 id=arch-linux><a aria-label="Anchor link for: arch-linux" class=zola-anchor href=#arch-linux>Arch Linux</a></h2><h6 id=release-package-unfinished><a aria-label="Anchor link for: release-package-unfinished" class=zola-anchor href=#release-package-unfinished>Release Package (Unfinished)</a></h6><p><a href=https://aur.archlinux.org/packages/ayllu>ayllu</a><h6 id=source-package-unfinished><a aria-label="Anchor link for: source-package-unfinished" class=zola-anchor href=#source-package-unfinished>Source Package (Unfinished)</a></h6><p><a href=https://aur.archlinux.org/packages/ayllu-git>ayllu-git</a><h1 id=from-source><a aria-label="Anchor link for: from-source" class=zola-anchor href=#from-source>From Source</a></h1><p>TODO</div></div></main><footer class=page-footer>2024, <a href=/ayllu/ayllu/blob/main/ATTRIBUTIONS.md>attributions</a></footer></div> |
1026 | \ No newline at end of file |
1027 | diff --git a/www/public/docs/mail/index.html b/www/public/docs/mail/index.html |
1028 | deleted file mode 100644 |
1029 | index 663b950..0000000 |
1030 | --- a/www/public/docs/mail/index.html |
1031 | +++ /dev/null |
1032 | @@ -1 +0,0 @@ |
1033 | - <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li class=active><a href=https://ayllu-forge.org/docs/mail/>Mail</a><li><a href=https://ayllu-forge.org/docs/proxy/>Reverse Proxy</a><li><a href=https://ayllu-forge.org/docs/sites/>Static Hosting</a><li><a href=https://ayllu-forge.org/docs/themes/>Themes</a></ul></div><div class=doc-content><h1 id=mailing-list-support><a aria-label="Anchor link for: mailing-list-support" class=zola-anchor href=#mailing-list-support>Mailing List Support</a></h1><p>Ayllu has full featured support for email based development workflows. It is based on the excellent <a href=https://git.meli-email.org/meli/mailpot>mailpot</a> mailing list manager.<h2 id=configuration><a aria-label="Anchor link for: configuration" class=zola-anchor href=#configuration>Configuration</a></h2><p>The configuration of mail servers can be complex. Ayllu encapsulates most of these settings in the <a href=https://ayllu-forge.org/ayllu/ayllu/tree/main/containers/multiuser>mutliuser</a> container which can be used as a reference for configuring your own mail server.<h3 id=minimum-recommended-security-settings><a aria-label="Anchor link for: minimum-recommended-security-settings" class=zola-anchor href=#minimum-recommended-security-settings>Minimum Recommended Security Settings</a></h3><h4 id=dkim><a aria-label="Anchor link for: dkim" class=zola-anchor href=#dkim>DKIM</a></h4><h4 id=spf-validation><a aria-label="Anchor link for: spf-validation" class=zola-anchor href=#spf-validation>SPF Validation</a></h4><p>The container provides SPF validation and the recommended DNS configuration for a single host e.g. <code>ayllu-forge.org</code> is <code>"v=spf1 a mx ~all"</code>.</div></div></main><footer class=page-footer>2024, <a href=/ayllu/ayllu/blob/main/ATTRIBUTIONS.md>attributions</a></footer></div> |
1034 | \ No newline at end of file |
1035 | diff --git a/www/public/docs/proxy/index.html b/www/public/docs/proxy/index.html |
1036 | deleted file mode 100644 |
1037 | index ca71389..0000000 |
1038 | --- a/www/public/docs/proxy/index.html |
1039 | +++ /dev/null |
1040 | @@ -1 +0,0 @@ |
1041 | - <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li><a href=https://ayllu-forge.org/docs/mail/>Mail</a><li class=active><a href=https://ayllu-forge.org/docs/proxy/>Reverse Proxy</a><li><a href=https://ayllu-forge.org/docs/sites/>Static Hosting</a><li><a href=https://ayllu-forge.org/docs/themes/>Themes</a></ul></div><div class=doc-content><h1 id=proxy-configuration><a aria-label="Anchor link for: proxy-configuration" class=zola-anchor href=#proxy-configuration>Proxy Configuration</a></h1><p>Ayllu is designed to be run behind a reverse proxy server and it is not recommended to deploy Ayllu directly to the internet. Things such as TLS termination or basic authentication for private repositories are not directly supported by Ayllu although some of these features may be added in the future.<h2 id=nginx><a aria-label="Anchor link for: nginx" class=zola-anchor href=#nginx>Nginx</a></h2><p><a href=https://nginx.org/>nginx</a> is the only supported software but others are likely to work and we will happily accept documentation for operating other free software proxy servers.</div></div></main><footer class=page-footer>2024, <a href=/ayllu/ayllu/blob/main/ATTRIBUTIONS.md>attributions</a></footer></div> |
1042 | \ No newline at end of file |
1043 | diff --git a/www/public/docs/sites/index.html b/www/public/docs/sites/index.html |
1044 | deleted file mode 100644 |
1045 | index 87d1631..0000000 |
1046 | --- a/www/public/docs/sites/index.html |
1047 | +++ /dev/null |
1048 | @@ -1,13 +0,0 @@ |
1049 | - <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li><a href=https://ayllu-forge.org/docs/mail/>Mail</a><li><a href=https://ayllu-forge.org/docs/proxy/>Reverse Proxy</a><li class=active><a href=https://ayllu-forge.org/docs/sites/>Static Hosting</a><li><a href=https://ayllu-forge.org/docs/themes/>Themes</a></ul></div><div class=doc-content><h1 id=static-hosting><a aria-label="Anchor link for: static-hosting" class=zola-anchor href=#static-hosting>Static Hosting</a></h1><p>Ayllu can serve content directly from a git repository, you just need to toggle a few options in your git configuration file.<h2 id=example-configuration><a aria-label="Anchor link for: example-configuration" class=zola-anchor href=#example-configuration>Example Configuration</a></h2><p>In your git configuration file you can specify one or more headers which if detected by Ayllu will cause it to serve content from the directory rather then it's web interface.<p>Below we specify that any request sent to Ayllu with header <code>Host = example.org</code> should return HTML content from within the repository directory www/public.<pre><code>[ayllu-sites] |
1050 | - enabled = true |
1051 | - header = Host=example.org |
1052 | - content = www/public |
1053 | - </code></pre><h2 id=proxy-configuration><a aria-label="Anchor link for: proxy-configuration" class=zola-anchor href=#proxy-configuration>Proxy configuration</a></h2><p>Typically you would want a proxy server in front of your Ayllu instance. You can then pass any headers to your downstream instance and it should serve the content as expected.<h3 id=example-nginx-proxy><a aria-label="Anchor link for: example-nginx-proxy" class=zola-anchor href=#example-nginx-proxy>Example Nginx Proxy</a></h3><pre><code>... |
1054 | - location / { |
1055 | - include config.d/proxy.conf; |
1056 | - proxy_pass http://127.0.0.1:8080; |
1057 | - proxy_set_header Host $host; |
1058 | - proxy_set_header X-Real-IP $remote_addr; |
1059 | - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
1060 | - } |
1061 | - </code></pre></div></div></main><footer class=page-footer>2024, <a href=/ayllu/ayllu/blob/main/ATTRIBUTIONS.md>attributions</a></footer></div> |
1062 | \ No newline at end of file |
1063 | diff --git a/www/public/docs/themes/index.html b/www/public/docs/themes/index.html |
1064 | deleted file mode 100644 |
1065 | index 7189ffa..0000000 |
1066 | --- a/www/public/docs/themes/index.html |
1067 | +++ /dev/null |
1068 | @@ -1,18 +0,0 @@ |
1069 | - <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li><a href=https://ayllu-forge.org/docs/mail/>Mail</a><li><a href=https://ayllu-forge.org/docs/proxy/>Reverse Proxy</a><li><a href=https://ayllu-forge.org/docs/sites/>Static Hosting</a><li class=active><a href=https://ayllu-forge.org/docs/themes/>Themes</a></ul></div><div class=doc-content><h1 id=themeing-ayllu><a aria-label="Anchor link for: themeing-ayllu" class=zola-anchor href=#themeing-ayllu>Themeing Ayllu</a></h1><p>Ayllu can be customized in a variety of ways including custom CSS, modifying Jinja based HTML templates, or by adding new static assets such as images. Available themes can be viewed and enabled from the <code>/config</code> page.<h2 id=the-default-theme><a aria-label="Anchor link for: the-default-theme" class=zola-anchor href=#the-default-theme>The Default Theme</a></h2><p>The default theme is located in <code>ayllu/themes/default</code> and is served as a base and all themes serve content from this theme if they do not override it's assets. It is possible to change the default theme by setting it in your Ayllu configuration file.<pre><code>[web] |
1070 | - default_theme = "my-custom-theme" |
1071 | - </code></pre><p>By changing the default theme all additionally loaded themes will inherit the templates and assets of the default theme.<h2 id=built-in-vs-external-themes><a aria-label="Anchor link for: built-in-vs-external-themes" class=zola-anchor href=#built-in-vs-external-themes>Built-in vs External Themes</a></h2><h3 id=built-in-themes><a aria-label="Anchor link for: built-in-themes" class=zola-anchor href=#built-in-themes>Built-in Themes</a></h3><p>Built-in themes are compiled into the Ayllu binary and available for selection from the config section of the web interface. These themes are available at <code>ayllu/themes/</code>. These themes use <a href=https://lightningcss.dev/>lightning css</a> at build time to build the theme's <code>main.min.css</code> file.<h3 id=external-themes><a aria-label="Anchor link for: external-themes" class=zola-anchor href=#external-themes>External Themes</a></h3><p>Additional themes can be loaded directly from the file system and allow the addition of new themes without recompiling Ayllu.<pre><code>[web] |
1072 | - |
1073 | - default_theme = "default" |
1074 | - |
1075 | - [[web.theme]] |
1076 | - |
1077 | - name = "my-custom-theme" |
1078 | - # path to a directory of theme templates, assets, and stylesheets |
1079 | - path = "/var/lib/ayllu/themes/my-custom-theme" |
1080 | - </code></pre><h3 id=file-system-layout><a aria-label="Anchor link for: file-system-layout" class=zola-anchor href=#file-system-layout>File System Layout</a></h3><p>All files are optional in themes, an empty directory is considered a valid theme and will result in an identical configuration to the <code>default_theme</code>.<pre><code>assets/ # SVG and other static assets served from /assets |
1081 | - assets/logo.svg # main logo in the left hand nav bar |
1082 | - assets/feed.xsl # XSL file used to style RSS feeds |
1083 | - assets/*.svg # additional assets for various parts of the UI |
1084 | - templates/ # directory of Jinja templates |
1085 | - theme.css # additional stylesheet to extend the default |
1086 | - </code></pre><p>See <code>contrib/example-theme</code> for a functional custom theme to extend as a base.</div></div></main><footer class=page-footer>2024, <a href=/ayllu/ayllu/blob/main/ATTRIBUTIONS.md>attributions</a></footer></div> |
1087 | \ No newline at end of file |
1088 | diff --git a/www/public/index.html b/www/public/index.html |
1089 | deleted file mode 100644 |
1090 | index d1d7f39..0000000 |
1091 | --- a/www/public/index.html |
1092 | +++ /dev/null |
1093 | @@ -1 +0,0 @@ |
1094 | - <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><h3 id=hyper-performant-hackable-code-forge-built-on-open-standards>Hyper Performant & Hackable Code Forge Built on Open Standards</h3><p>Ayllu is a lightweight <a href=https://en.wikipedia.org/wiki/Forge_(software)>code forge</a> designed to help individuals and grassroots community projects create and develop software in collaboration across open internet standards.<hr><p>Check out the <a href=/docs>documentation</a> or <a href=/browse>browse</a> some of the projects hosted on this server.</main><footer class=page-footer>2024, <a href=/ayllu/ayllu/blob/main/ATTRIBUTIONS.md>attributions</a></footer></div> |
1095 | \ No newline at end of file |
1096 | diff --git a/www/public/main.css b/www/public/main.css |
1097 | deleted file mode 100644 |
1098 | index dc98047..0000000 |
1099 | --- a/www/public/main.css |
1100 | +++ /dev/null |
1101 | @@ -1 +0,0 @@ |
1102 | - :where(html){--link:var(--indigo-7);--link-visited:var(--purple-7);--text-1:var(--gray-12);--text-2:var(--gray-7);--surface-1:var(--gray-0);--surface-2:var(--gray-2);--surface-3:var(--gray-3);--surface-4:var(--gray-4);--scrollthumb-color:var(--gray-7);-webkit-text-size-adjust:none;accent-color:var(--brand, var(--link));background-color:var(--surface-1);block-size:100%;caret-color:var(--brand, var(--link));color:var(--text-1);color-scheme:light;font-family:var(--font-system-ui);line-height:var(--font-lineheight-3);scrollbar-color:var(--scrollthumb-color) transparent}@media (dynamic-range: high) or (color-gamut: p3){@supports (color: color(display-p3 0 0 0)){:where(html){--link:color(display-p3 .1 .4 1);--link-visited:color(display-p3 .6 .2 1)}}}:where(html) :where(dialog){background-color:var(--surface-1)}:where(html) :where(button,.btn){--_highlight:var(--_highlight-light);--_bg:var(--_bg-light);--_ink-shadow:var(--_ink-shadow-light)}:where(html) :where(button,.btn) :where([type=reset]){--_text:var(--red-6);--_border:var(--red-3)}:where(html) :where(button,.btn,input:is([type=button],[type=submit],[type=reset]))[disabled]{--_text:var(--gray-6)}:where(html) :where(textarea,select,input:not([type=button],[type=submit],[type=reset])){background-color:var(--surface-2)}@media (prefers-color-scheme: dark){:where(html){--link:var(--indigo-3);--link-visited:var(--purple-3);--text-1:var(--gray-1);--text-2:var(--gray-4);--surface-1:var(--gray-9);--surface-2:var(--gray-8);--surface-3:var(--gray-7);--surface-4:var(--gray-6);--scrollthumb-color:var(--gray-6);--shadow-strength:10%;--shadow-color:220 40% 2%;color-scheme:dark}}:where(a[href]){color:var(--brand, var(--link))}:where(a[href]):where(:visited){color:var(--link-visited)}:focus-visible{outline-color:var(--brand, var(--link))}*,:after,:before{box-sizing:border-box}:where(:not(dialog)){margin:0}:where(:not(fieldset,progress,meter)){background-origin:border-box;background-repeat:no-repeat;border-style:solid;border-width:0}@media (prefers-reduced-motion: no-preference){:where(html){scroll-behavior:smooth}}@media (prefers-reduced-motion: no-preference){:where(:focus-visible){transition:outline-offset 145ms var(--ease-2)}:where(:not(:active):focus-visible){transition-duration:.25s}}:where(:not(:active):focus-visible){outline-offset:5px}:where(body){min-block-size:100%}:where(h1,h2,h3,h4,h5,h6){text-wrap:balance;font-weight:var(--font-weight-9);line-height:var(--font-lineheight-1)}:where(h1){font-size:var(--font-size-8);max-inline-size:var(--size-header-1)}:where(h2){font-size:var(--font-size-6);max-inline-size:var(--size-header-2)}:where(h3){font-size:var(--font-size-5)}:where(h4){font-size:var(--font-size-4)}:where(h5){font-size:var(--font-size-3)}:where(h3,h4,h5,h6,dt){max-inline-size:var(--size-header-3)}:where(p,ul,ol,dl,h6){font-size:var(--font-size-2)}:where(a,u,ins,abbr){text-underline-offset:1px}@supports (-moz-appearance: none){:where(a,u,ins,abbr){text-underline-offset:2px}}:where(a[href],area,button,input:not([type=text],[type=email],[type=number],[type=password],[type=""],[type=tel],[type=url]),label[for],select,summary,[tabindex]:not([tabindex*="-"])){cursor:pointer}:where(a[href],area,button,input,label[for],select,summary,textarea,[tabindex]:not([tabindex*="-"])){-webkit-tap-highlight-color:transparent;touch-action:manipulation}:where(a):where([href]){text-decoration-color:var(--indigo-2)}:where(a):where([href]):where(:visited){text-decoration-color:var(--purple-2)}:where(a):where(:not(:hover)){text-decoration:inherit}:where(img,svg,video,canvas,audio,iframe,embed,object){display:block}:where(img,svg,video){block-size:auto;max-inline-size:100%}:where(input,button,textarea,select),:where(input[type=file])::-webkit-file-upload-button{color:inherit;font:inherit;font-size:inherit;letter-spacing:inherit}::placeholder{color:var(--gray-7);opacity:.75}:where(input:not([type=range]),textarea){padding-block:var(--size-1);padding-inline:var(--size-2)}:where(select){padding-block:.75ch;padding-inline:var(--size-relative-4) 0}:where(textarea,select,input:not([type=button],[type=submit],[type=reset])){background-color:var(--surface-2);border-radius:var(--radius-2)}:where(textarea){resize:block}:where(input[type=checkbox],input[type=radio]){block-size:var(--size-3);inline-size:var(--size-3)}:where(svg:not([width])){inline-size:var(--size-10)}:where(code,kbd,samp,pre){font-family:var(--font-monospace-code),monospace}:where(:not(pre)>code,kbd){white-space:nowrap}:where(pre){direction:ltr;max-inline-size:max-content;min-inline-size:0;white-space:pre;writing-mode:lr}:where(:not(pre)>code){background:var(--surface-2);border-radius:var(--radius-2);padding:var(--size-1) var(--size-2);writing-mode:lr}:where(kbd,var){border-color:var(--surface-4);border-radius:var(--radius-2);border-width:var(--border-size-1);padding:var(--size-1) var(--size-2)}:where(mark){border-radius:var(--radius-2);padding-inline:var(--size-1)}:where(ol,ul){padding-inline-start:var(--size-8)}:where(li){padding-inline-start:var(--size-2)}:where(li,dd,figcaption){max-inline-size:var(--size-content-2)}:where(p){text-wrap:pretty;max-inline-size:var(--size-content-3)}:where(dt,summary){font-weight:var(--font-weight-7)}:where(dt:not(:first-of-type)){margin-block-start:var(--size-5)}:where(small){font-size:max(.5em,var(--font-size-0));max-inline-size:var(--size-content-1)}:where(hr){background-color:var(--surface-3);height:var(--border-size-2);margin-block:var(--size-fluid-5)}:where(figure){display:grid;gap:var(--size-2);place-items:center}:where(figure)>:where(figcaption){text-wrap:balance;font-size:var(--font-size-1)}:where(blockquote,:not(blockquote)>cite){border-inline-start-width:var(--border-size-3)}:where(blockquote){display:grid;gap:var(--size-3);max-inline-size:var(--size-content-2);padding-block:var(--size-3);padding-inline:var(--size-4)}:where(:not(blockquote)>cite){padding-inline-start:var(--size-2)}:where(summary){background:var(--surface-3);border-radius:var(--radius-2);margin:calc(var(--size-2)*-1) calc(var(--size-3)*-1);padding:var(--size-2) var(--size-3)}:where(details){background:var(--surface-2);border-radius:var(--radius-2);padding-block:var(--size-2);padding-inline:var(--size-3)}:where(details[open]>summary){border-end-end-radius:0;border-end-start-radius:0;margin-bottom:var(--size-2)}:where(fieldset){border:var(--border-size-1) solid var(--surface-4);border-radius:var(--radius-2)}:where(del){background:var(--red-9);color:var(--red-2)}:where(ins){background:var(--green-9);color:var(--green-1)}:where(abbr){text-decoration-color:var(--blue-5)}:where(dialog){background-color:var(--surface-1);border-radius:var(--radius-3);box-shadow:var(--shadow-6);color:inherit}:where(dialog)::backdrop{backdrop-filter:blur(25px)}:where(html[\:has\(dialog\[open\]\)]){overflow:hidden}:where(html:has(dialog[open])){overflow:hidden}:where(menu){display:flex;gap:var(--size-3);padding-inline-start:0}:where(sup){font-size:.5em}:where(table){--nice-inner-radius:calc(var(--radius-3) - 2px);background:var(--surface-2);border:1px solid var(--surface-2);border-radius:var(--radius-3);width:fit-content}:where(table[\:not-has\(tfoot\)] tr:last-child td:first-child){border-end-start-radius:var(--nice-inner-radius)}:where(table:not(:has(tfoot)) tr:last-child td:first-child){border-end-start-radius:var(--nice-inner-radius)}:where(table[\:not-has\(tfoot\)] tr:last-child td:last-child){border-end-end-radius:var(--nice-inner-radius)}:where(table:not(:has(tfoot)) tr:last-child td:last-child){border-end-end-radius:var(--nice-inner-radius)}:where(table thead tr:first-child th:first-child){border-start-start-radius:var(--nice-inner-radius)}:where(table thead tr:first-child th:last-child){border-start-end-radius:var(--nice-inner-radius)}:where(tfoot tr:last-child :is(th,td):first-of-type){border-end-start-radius:var(--nice-inner-radius)}:where(tfoot tr:last-child :is(th,td):last-of-type){border-end-end-radius:var(--nice-inner-radius)}:where(th){background-color:var(--surface-2);color:var(--text-1)}:where(table :is(a,button,[contenteditable]):is(:focus-visible)){outline-offset:-2px}:where(td){text-wrap:pretty;background:var(--surface-1);max-inline-size:var(--size-content-2)}:where(td,th){padding:var(--size-2);text-align:left}:where(:is(td,th):not([align])){text-align:center}:where(thead){border-collapse:collapse}:where(table tr:hover td),:where(tbody tr:nth-child(2n):hover td){background-color:var(--gray-10)}@media (prefers-color-scheme: light){:where(table tr:hover td),:where(tbody tr:nth-child(2n):hover td){background-color:#fff}}:where(table>caption){margin:var(--size-3)}:where(tfoot button){padding-block:var(--size-1);padding-inline:var(--size-3)}@media (prefers-color-scheme: dark){:where(textarea,select,input:not([type=button],[type=submit],[type=reset])){background-color:#171a1c}:where(dialog){background-color:var(--surface-2)}::placeholder{color:var(--gray-6)}}:where(html){--font-system-ui:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif;--font-transitional:Charter,Bitstream Charter,Sitka Text,Cambria,serif;--font-old-style:Iowan Old Style,Palatino Linotype,URW Palladio L,P052,serif;--font-humanist:Seravek,Gill Sans Nova,Ubuntu,Calibri,DejaVu Sans,source-sans-pro,sans-serif;--font-geometric-humanist:Avenir,Montserrat,Corbel,URW Gothic,source-sans-pro,sans-serif;--font-classical-humanist:Optima,Candara,Noto Sans,source-sans-pro,sans-serif;--font-neo-grotesque:Inter,Roboto,Helvetica Neue,Arial Nova,Nimbus Sans,Arial,sans-serif;--font-monospace-slab-serif:Nimbus Mono PS,Courier New,monospace;--font-monospace-code:Dank Mono,Operator Mono,Inconsolata,Fira Mono,ui-monospace,SF Mono,Monaco,Droid Sans Mono,Source Code Pro,Cascadia Code,Menlo,Consolas,DejaVu Sans Mono,monospace;--font-industrial:Bahnschrift,DIN Alternate,Franklin Gothic Medium,Nimbus Sans Narrow,sans-serif-condensed,sans-serif;--font-rounded-sans:ui-rounded,Hiragino Maru Gothic ProN,Quicksand,Comfortaa,Manjari,Arial Rounded MT,Arial Rounded MT Bold,Calibri,source-sans-pro,sans-serif;--font-slab-serif:Rockwell,Rockwell Nova,Roboto Slab,DejaVu Serif,Sitka Small,serif;--font-antique:Superclarendon,Bookman Old Style,URW Bookman,URW Bookman L,Georgia Pro,Georgia,serif;--font-didone:Didot,Bodoni MT,Noto Serif Display,URW Palladio L,P052,Sylfaen,serif;--font-handwritten:Segoe Print,Bradley Hand,Chilanka,TSCu_Comic,casual,cursive;--font-sans:var(--font-system-ui);--font-serif:ui-serif,serif;--font-mono:var(--font-monospace-code);--font-weight-1:100;--font-weight-2:200;--font-weight-3:300;--font-weight-4:400;--font-weight-5:500;--font-weight-6:600;--font-weight-7:700;--font-weight-8:800;--font-weight-9:900;--font-lineheight-00:.95;--font-lineheight-0:1.1;--font-lineheight-1:1.25;--font-lineheight-2:1.375;--font-lineheight-3:1.5;--font-lineheight-4:1.75;--font-lineheight-5:2;--font-letterspacing-0:-.05em;--font-letterspacing-1:.025em;--font-letterspacing-2:.050em;--font-letterspacing-3:.075em;--font-letterspacing-4:.150em;--font-letterspacing-5:.500em;--font-letterspacing-6:.750em;--font-letterspacing-7:1em;--font-size-00:.5rem;--font-size-0:.75rem;--font-size-1:1rem;--font-size-2:1.1rem;--font-size-3:1.25rem;--font-size-4:1.5rem;--font-size-5:2rem;--font-size-6:2.5rem;--font-size-7:3rem;--font-size-8:3.5rem;--font-size-fluid-0:clamp(.75rem,2vw,1rem);--font-size-fluid-1:clamp(1rem,4vw,1.5rem);--font-size-fluid-2:clamp(1.5rem,6vw,2.5rem);--font-size-fluid-3:clamp(2rem,9vw,3.5rem);--size-000:-.5rem;--size-00:-.25rem;--size-1:.25rem;--size-2:.5rem;--size-3:1rem;--size-4:1.25rem;--size-5:1.5rem;--size-6:1.75rem;--size-7:2rem;--size-8:3rem;--size-9:4rem;--size-10:5rem;--size-11:7.5rem;--size-12:10rem;--size-13:15rem;--size-14:20rem;--size-15:30rem;--size-px-000:-8px;--size-px-00:-4px;--size-px-1:4px;--size-px-2:8px;--size-px-3:16px;--size-px-4:20px;--size-px-5:24px;--size-px-6:28px;--size-px-7:32px;--size-px-8:48px;--size-px-9:64px;--size-px-10:80px;--size-px-11:120px;--size-px-12:160px;--size-px-13:240px;--size-px-14:320px;--size-px-15:480px;--size-fluid-1:clamp(.5rem,1vw,1rem);--size-fluid-2:clamp(1rem,2vw,1.5rem);--size-fluid-3:clamp(1.5rem,3vw,2rem);--size-fluid-4:clamp(2rem,4vw,3rem);--size-fluid-5:clamp(4rem,5vw,5rem);--size-fluid-6:clamp(5rem,7vw,7.5rem);--size-fluid-7:clamp(7.5rem,10vw,10rem);--size-fluid-8:clamp(10rem,20vw,15rem);--size-fluid-9:clamp(15rem,30vw,20rem);--size-fluid-10:clamp(20rem,40vw,30rem);--size-content-1:20ch;--size-content-2:45ch;--size-content-3:60ch;--size-header-1:20ch;--size-header-2:25ch;--size-header-3:35ch;--size-xxs:240px;--size-xs:360px;--size-sm:480px;--size-md:768px;--size-lg:1024px;--size-xl:1440px;--size-xxl:1920px;--size-relative-000:-.5ch;--size-relative-00:-.25ch;--size-relative-1:.25ch;--size-relative-2:.5ch;--size-relative-3:1ch;--size-relative-4:1.25ch;--size-relative-5:1.5ch;--size-relative-6:1.75ch;--size-relative-7:2ch;--size-relative-8:3ch;--size-relative-9:4ch;--size-relative-10:5ch;--size-relative-11:7.5ch;--size-relative-12:10ch;--size-relative-13:15ch;--size-relative-14:20ch;--size-relative-15:30ch;--ease-1:cubic-bezier(.25,0,.5,1);--ease-2:cubic-bezier(.25,0,.4,1);--ease-3:cubic-bezier(.25,0,.3,1);--ease-4:cubic-bezier(.25,0,.2,1);--ease-5:cubic-bezier(.25,0,.1,1);--ease-in-1:cubic-bezier(.25,0,1,1);--ease-in-2:cubic-bezier(.50,0,1,1);--ease-in-3:cubic-bezier(.70,0,1,1);--ease-in-4:cubic-bezier(.90,0,1,1);--ease-in-5:cubic-bezier(1,0,1,1);--ease-out-1:cubic-bezier(0,0,.75,1);--ease-out-2:cubic-bezier(0,0,.50,1);--ease-out-3:cubic-bezier(0,0,.3,1);--ease-out-4:cubic-bezier(0,0,.1,1);--ease-out-5:cubic-bezier(0,0,0,1);--ease-in-out-1:cubic-bezier(.1,0,.9,1);--ease-in-out-2:cubic-bezier(.3,0,.7,1);--ease-in-out-3:cubic-bezier(.5,0,.5,1);--ease-in-out-4:cubic-bezier(.7,0,.3,1);--ease-in-out-5:cubic-bezier(.9,0,.1,1);--ease-elastic-out-1:cubic-bezier(.5,.75,.75,1.25);--ease-elastic-out-2:cubic-bezier(.5,1,.75,1.25);--ease-elastic-out-3:cubic-bezier(.5,1.25,.75,1.25);--ease-elastic-out-4:cubic-bezier(.5,1.5,.75,1.25);--ease-elastic-out-5:cubic-bezier(.5,1.75,.75,1.25);--ease-elastic-in-1:cubic-bezier(.5,-0.25,.75,1);--ease-elastic-in-2:cubic-bezier(.5,-0.50,.75,1);--ease-elastic-in-3:cubic-bezier(.5,-0.75,.75,1);--ease-elastic-in-4:cubic-bezier(.5,-1.00,.75,1);--ease-elastic-in-5:cubic-bezier(.5,-1.25,.75,1);--ease-elastic-in-out-1:cubic-bezier(.5,-.1,.1,1.5);--ease-elastic-in-out-2:cubic-bezier(.5,-.3,.1,1.5);--ease-elastic-in-out-3:cubic-bezier(.5,-.5,.1,1.5);--ease-elastic-in-out-4:cubic-bezier(.5,-.7,.1,1.5);--ease-elastic-in-out-5:cubic-bezier(.5,-.9,.1,1.5);--ease-step-1:steps(2);--ease-step-2:steps(3);--ease-step-3:steps(4);--ease-step-4:steps(7);--ease-step-5:steps(10);--ease-elastic-1:var(--ease-elastic-out-1);--ease-elastic-2:var(--ease-elastic-out-2);--ease-elastic-3:var(--ease-elastic-out-3);--ease-elastic-4:var(--ease-elastic-out-4);--ease-elastic-5:var(--ease-elastic-out-5);--ease-squish-1:var(--ease-elastic-in-out-1);--ease-squish-2:var(--ease-elastic-in-out-2);--ease-squish-3:var(--ease-elastic-in-out-3);--ease-squish-4:var(--ease-elastic-in-out-4);--ease-squish-5:var(--ease-elastic-in-out-5);--ease-spring-1:linear(0,0.006,0.025 2.8%,0.101 6.1%,0.539 18.9%,0.721 25.3%,0.849 31.5%,0.937 38.1%,0.968 41.8%,0.991 45.7%,1.006 50.1%,1.015 55%,1.017 63.9%,1.001);--ease-spring-2:linear(0,0.007,0.029 2.2%,0.118 4.7%,0.625 14.4%,0.826 19%,0.902,0.962,1.008 26.1%,1.041 28.7%,1.064 32.1%,1.07 36%,1.061 40.5%,1.015 53.4%,0.999 61.6%,0.995 71.2%,1);--ease-spring-3:linear(0,0.009,0.035 2.1%,0.141 4.4%,0.723 12.9%,0.938 16.7%,1.017,1.077,1.121,1.149 24.3%,1.159,1.163,1.161,1.154 29.9%,1.129 32.8%,1.051 39.6%,1.017 43.1%,0.991,0.977 51%,0.974 53.8%,0.975 57.1%,0.997 69.8%,1.003 76.9%,1);--ease-spring-4:linear(0,0.009,0.037 1.7%,0.153 3.6%,0.776 10.3%,1.001,1.142 16%,1.185,1.209 19%,1.215 19.9% 20.8%,1.199,1.165 25%,1.056 30.3%,1.008 33%,0.973,0.955 39.2%,0.953 41.1%,0.957 43.3%,0.998 53.3%,1.009 59.1% 63.7%,0.998 78.9%,1);--ease-spring-5:linear(0,0.01,0.04 1.6%,0.161 3.3%,0.816 9.4%,1.046,1.189 14.4%,1.231,1.254 17%,1.259,1.257 18.6%,1.236,1.194 22.3%,1.057 27%,0.999 29.4%,0.955 32.1%,0.942,0.935 34.9%,0.933,0.939 38.4%,1 47.3%,1.011,1.017 52.6%,1.016 56.4%,1 65.2%,0.996 70.2%,1.001 87.2%,1);--ease-bounce-1:linear(0,0.004,0.016,0.035,0.063,0.098,0.141,0.191,0.25,0.316,0.391 36.8%,0.563,0.766,1 58.8%,0.946,0.908 69.1%,0.895,0.885,0.879,0.878,0.879,0.885,0.895,0.908 89.7%,0.946,1);--ease-bounce-2:linear(0,0.004,0.016,0.035,0.063,0.098,0.141 15.1%,0.25,0.391,0.562,0.765,1,0.892 45.2%,0.849,0.815,0.788,0.769,0.757,0.753,0.757,0.769,0.788,0.815,0.85,0.892 75.2%,1 80.2%,0.973,0.954,0.943,0.939,0.943,0.954,0.973,1);--ease-bounce-3:linear(0,0.004,0.016,0.035,0.062,0.098,0.141 11.4%,0.25,0.39,0.562,0.764,1 30.3%,0.847 34.8%,0.787,0.737,0.699,0.672,0.655,0.65,0.656,0.672,0.699,0.738,0.787,0.847 61.7%,1 66.2%,0.946,0.908,0.885 74.2%,0.879,0.878,0.879,0.885 79.5%,0.908,0.946,1 87.4%,0.981,0.968,0.96,0.957,0.96,0.968,0.981,1);--ease-bounce-4:linear(0,0.004,0.016 3%,0.062,0.141,0.25,0.391,0.562 18.2%,1 24.3%,0.81,0.676 32.3%,0.629,0.595,0.575,0.568,0.575,0.595,0.629,0.676 48.2%,0.811,1 56.2%,0.918,0.86,0.825,0.814,0.825,0.86,0.918,1 77.2%,0.94 80.6%,0.925,0.92,0.925,0.94 87.5%,1 90.9%,0.974,0.965,0.974,1);--ease-bounce-5:linear(0,0.004,0.016 2.5%,0.063,0.141,0.25 10.1%,0.562,1 20.2%,0.783,0.627,0.534 30.9%,0.511,0.503,0.511,0.534 38%,0.627,0.782,1 48.7%,0.892,0.815,0.769 56.3%,0.757,0.753,0.757,0.769 61.3%,0.815,0.892,1 68.8%,0.908 72.4%,0.885,0.878,0.885,0.908 79.4%,1 83%,0.954 85.5%,0.943,0.939,0.943,0.954 90.5%,1 93%,0.977,0.97,0.977,1);--layer-1:1;--layer-2:2;--layer-3:3;--layer-4:4;--layer-5:5;--layer-important:2147483647;--shadow-color:220 3% 15%;--shadow-strength:1%;--inner-shadow-highlight:inset 0 -.5px 0 0 #fff,inset 0 .5px 0 0 rgba(0,0,0,.067);--shadow-1:0 1px 2px -1px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 9%));--shadow-2:0 3px 5px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 3%)),0 7px 14px -5px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 5%));--shadow-3:0 -1px 3px 0 hsl(var(--shadow-color)/calc(var(--shadow-strength) + 2%)),0 1px 2px -5px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 2%)),0 2px 5px -5px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 4%)),0 4px 12px -5px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 5%)),0 12px 15px -5px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 7%));--shadow-4:0 -2px 5px 0 hsl(var(--shadow-color)/calc(var(--shadow-strength) + 2%)),0 1px 1px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 3%)),0 2px 2px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 3%)),0 5px 5px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 4%)),0 9px 9px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 5%)),0 16px 16px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 6%));--shadow-5:0 -1px 2px 0 hsl(var(--shadow-color)/calc(var(--shadow-strength) + 2%)),0 2px 1px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 3%)),0 5px 5px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 3%)),0 10px 10px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 4%)),0 20px 20px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 5%)),0 40px 40px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 7%));--shadow-6:0 -1px 2px 0 hsl(var(--shadow-color)/calc(var(--shadow-strength) + 2%)),0 3px 2px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 3%)),0 7px 5px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 3%)),0 12px 10px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 4%)),0 22px 18px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 5%)),0 41px 33px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 6%)),0 100px 80px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 7%));--inner-shadow-0:inset 0 0 0 1px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 9%));--inner-shadow-1:inset 0 1px 2px 0 hsl(var(--shadow-color)/calc(var(--shadow-strength) + 9%)),var(--inner-shadow-highlight);--inner-shadow-2:inset 0 1px 4px 0 hsl(var(--shadow-color)/calc(var(--shadow-strength) + 9%)),var(--inner-shadow-highlight);--inner-shadow-3:inset 0 2px 8px 0 hsl(var(--shadow-color)/calc(var(--shadow-strength) + 9%)),var(--inner-shadow-highlight);--inner-shadow-4:inset 0 2px 14px 0 hsl(var(--shadow-color)/calc(var(--shadow-strength) + 9%)),var(--inner-shadow-highlight);--ratio-square:1;--ratio-landscape:4/3;--ratio-portrait:3/4;--ratio-widescreen:16/9;--ratio-ultrawide:18/5;--ratio-golden:1.6180/1;--gray-0:#f8f9fa;--gray-1:#f1f3f5;--gray-2:#e9ecef;--gray-3:#dee2e6;--gray-4:#ced4da;--gray-5:#adb5bd;--gray-6:#868e96;--gray-7:#495057;--gray-8:#343a40;--gray-9:#212529;--gray-10:#16191d;--gray-11:#0d0f12;--gray-12:#030507;--stone-0:#f8fafb;--stone-1:#f2f4f6;--stone-2:#ebedef;--stone-3:#e0e4e5;--stone-4:#d1d6d8;--stone-5:#b1b6b9;--stone-6:#979b9d;--stone-7:#7e8282;--stone-8:#666968;--stone-9:#50514f;--stone-10:#3a3a37;--stone-11:#252521;--stone-12:#121210;--red-0:#fff5f5;--red-1:#ffe3e3;--red-2:#ffc9c9;--red-3:#ffa8a8;--red-4:#ff8787;--red-5:#ff6b6b;--red-6:#fa5252;--red-7:#f03e3e;--red-8:#e03131;--red-9:#c92a2a;--red-10:#b02525;--red-11:#962020;--red-12:#7d1a1a;--pink-0:#fff0f6;--pink-1:#ffdeeb;--pink-2:#fcc2d7;--pink-3:#faa2c1;--pink-4:#f783ac;--pink-5:#f06595;--pink-6:#e64980;--pink-7:#d6336c;--pink-8:#c2255c;--pink-9:#a61e4d;--pink-10:#8c1941;--pink-11:#731536;--pink-12:#59102a;--purple-0:#f8f0fc;--purple-1:#f3d9fa;--purple-2:#eebefa;--purple-3:#e599f7;--purple-4:#da77f2;--purple-5:#cc5de8;--purple-6:#be4bdb;--purple-7:#ae3ec9;--purple-8:#9c36b5;--purple-9:#862e9c;--purple-10:#702682;--purple-11:#5a1e69;--purple-12:#44174f;--violet-0:#f3f0ff;--violet-1:#e5dbff;--violet-2:#d0bfff;--violet-3:#b197fc;--violet-4:#9775fa;--violet-5:#845ef7;--violet-6:#7950f2;--violet-7:#7048e8;--violet-8:#6741d9;--violet-9:#5f3dc4;--violet-10:#5235ab;--violet-11:#462d91;--violet-12:#3a2578;--indigo-0:#edf2ff;--indigo-1:#dbe4ff;--indigo-2:#bac8ff;--indigo-3:#91a7ff;--indigo-4:#748ffc;--indigo-5:#5c7cfa;--indigo-6:#4c6ef5;--indigo-7:#4263eb;--indigo-8:#3b5bdb;--indigo-9:#364fc7;--indigo-10:#2f44ad;--indigo-11:#283a94;--indigo-12:#21307a;--blue-0:#e7f5ff;--blue-1:#d0ebff;--blue-2:#a5d8ff;--blue-3:#74c0fc;--blue-4:#4dabf7;--blue-5:#339af0;--blue-6:#228be6;--blue-7:#1c7ed6;--blue-8:#1971c2;--blue-9:#1864ab;--blue-10:#145591;--blue-11:#114678;--blue-12:#0d375e;--cyan-0:#e3fafc;--cyan-1:#c5f6fa;--cyan-2:#99e9f2;--cyan-3:#66d9e8;--cyan-4:#3bc9db;--cyan-5:#22b8cf;--cyan-6:#15aabf;--cyan-7:#1098ad;--cyan-8:#0c8599;--cyan-9:#0b7285;--cyan-10:#095c6b;--cyan-11:#074652;--cyan-12:#053038;--teal-0:#e6fcf5;--teal-1:#c3fae8;--teal-2:#96f2d7;--teal-3:#63e6be;--teal-4:#38d9a9;--teal-5:#20c997;--teal-6:#12b886;--teal-7:#0ca678;--teal-8:#099268;--teal-9:#087f5b;--teal-10:#066649;--teal-11:#054d37;--teal-12:#033325;--green-0:#ebfbee;--green-1:#d3f9d8;--green-2:#b2f2bb;--green-3:#8ce99a;--green-4:#69db7c;--green-5:#51cf66;--green-6:#40c057;--green-7:#37b24d;--green-8:#2f9e44;--green-9:#2b8a3e;--green-10:#237032;--green-11:#1b5727;--green-12:#133d1b;--lime-0:#f4fce3;--lime-1:#e9fac8;--lime-2:#d8f5a2;--lime-3:#c0eb75;--lime-4:#a9e34b;--lime-5:#94d82d;--lime-6:#82c91e;--lime-7:#74b816;--lime-8:#66a80f;--lime-9:#5c940d;--lime-10:#4c7a0b;--lime-11:#3c6109;--lime-12:#2c4706;--yellow-0:#fff9db;--yellow-1:#fff3bf;--yellow-2:#ffec99;--yellow-3:#ffe066;--yellow-4:#ffd43b;--yellow-5:#fcc419;--yellow-6:#fab005;--yellow-7:#f59f00;--yellow-8:#f08c00;--yellow-9:#e67700;--yellow-10:#b35c00;--yellow-11:#804200;--yellow-12:#663500;--orange-0:#fff4e6;--orange-1:#ffe8cc;--orange-2:#ffd8a8;--orange-3:#ffc078;--orange-4:#ffa94d;--orange-5:#ff922b;--orange-6:#fd7e14;--orange-7:#f76707;--orange-8:#e8590c;--orange-9:#d9480f;--orange-10:#bf400d;--orange-11:#99330b;--orange-12:#802b09;--choco-0:#fff8dc;--choco-1:#fce1bc;--choco-2:#f7ca9e;--choco-3:#f1b280;--choco-4:#e99b62;--choco-5:#df8545;--choco-6:#d46e25;--choco-7:#bd5f1b;--choco-8:#a45117;--choco-9:#8a4513;--choco-10:#703a13;--choco-11:#572f12;--choco-12:#3d210d;--brown-0:#faf4eb;--brown-1:#ede0d1;--brown-2:#e0cab7;--brown-3:#d3b79e;--brown-4:#c5a285;--brown-5:#b78f6d;--brown-6:#a87c56;--brown-7:#956b47;--brown-8:#825b3a;--brown-9:#6f4b2d;--brown-10:#5e3a21;--brown-11:#4e2b15;--brown-12:#422412;--sand-0:#f8fafb;--sand-1:#e6e4dc;--sand-2:#d5cfbd;--sand-3:#c2b9a0;--sand-4:#aea58c;--sand-5:#9a9178;--sand-6:#867c65;--sand-7:#736a53;--sand-8:#5f5746;--sand-9:#4b4639;--sand-10:#38352d;--sand-11:#252521;--sand-12:#121210;--camo-0:#f9fbe7;--camo-1:#e8ed9c;--camo-2:#d2df4e;--camo-3:#c2ce34;--camo-4:#b5bb2e;--camo-5:#a7a827;--camo-6:#999621;--camo-7:#8c851c;--camo-8:#7e7416;--camo-9:#6d6414;--camo-10:#5d5411;--camo-11:#4d460e;--camo-12:#36300a;--jungle-0:#ecfeb0;--jungle-1:#def39a;--jungle-2:#d0e884;--jungle-3:#c2dd6e;--jungle-4:#b5d15b;--jungle-5:#a8c648;--jungle-6:#9bbb36;--jungle-7:#8fb024;--jungle-8:#84a513;--jungle-9:#7a9908;--jungle-10:#658006;--jungle-11:#516605;--jungle-12:#3d4d04;--gradient-1:linear-gradient(to bottom right,#1f005c,#5b0060,#870160,#ac255e,#ca485c,#e16b5c,#f39060,#ffb56b);--gradient-2:linear-gradient(to bottom right,#48005c,#8300e2,#a269ff);--gradient-3:radial-gradient(circle at top right,#0ff,rgba(0,255,255,0)),radial-gradient(circle at bottom left,#ff1492,rgba(255,20,146,0));--gradient-4:linear-gradient(to bottom right,#00f5a0,#00d9f5);--gradient-5:conic-gradient(from -270deg at 75% 110%,#f0f,#fffaf0);--gradient-6:conic-gradient(from -90deg at top left,#000,#fff);--gradient-7:linear-gradient(to bottom right,#72c6ef,#004e8f);--gradient-8:conic-gradient(from 90deg at 50% 0%,#111,50%,#222,#111);--gradient-9:conic-gradient(from .5turn at bottom center,#add8e6,#fff);--gradient-10:conic-gradient(from 90deg at 40% -25%,gold,#f79d03,#ee6907,#e6390a,#de0d0d,#d61039,#cf1261,#c71585,#cf1261,#d61039,#de0d0d,#ee6907,#f79d03,gold,gold,gold);--gradient-11:conic-gradient(at bottom left,#ff1493,cyan);--gradient-12:conic-gradient(from 90deg at 25% -10%,#ff4500,#d3f340,#7bee85,#afeeee,#7bee85);--gradient-13:radial-gradient(circle at 50% 200%,#000142,#3b0083,#b300c3,#ff059f,#ff4661,#ffad86,#fff3c7);--gradient-14:conic-gradient(at top right,lime,cyan);--gradient-15:linear-gradient(to bottom right,#c7d2fe,#fecaca,#fef3c7);--gradient-16:radial-gradient(circle at 50% -250%,#374151,#111827,#000);--gradient-17:conic-gradient(from -90deg at 50% -25%,blue,#8a2be2);--gradient-18:linear-gradient(0deg,rgba(255,0,0,.8),rgba(255,0,0,0) 75%),linear-gradient(60deg,rgba(255,255,0,.8),rgba(255,255,0,0) 75%),linear-gradient(120deg,rgba(0,255,0,.8),rgba(0,255,0,0) 75%),linear-gradient(180deg,rgba(0,255,255,.8),rgba(0,255,255,0) 75%),linear-gradient(240deg,rgba(0,0,255,.8),rgba(0,0,255,0) 75%),linear-gradient(300deg,rgba(255,0,255,.8),rgba(255,0,255,0) 75%);--gradient-19:linear-gradient(to bottom right,#ffe259,#ffa751);--gradient-20:conic-gradient(from -135deg at -10% center,orange,#ff7715,#ff522a,#ff3f47,#ff5482,#ff69b4);--gradient-21:conic-gradient(from -90deg at 25% 115%,red,#f06,#f0c,#c0f,#60f,#00f,#00f,#00f,#00f);--gradient-22:linear-gradient(to bottom right,#acb6e5,#86fde8);--gradient-23:linear-gradient(to bottom right,#536976,#292e49);--gradient-24:conic-gradient(from .5turn at 0% 0%,#00c476,10%,#82b0ff,90%,#00c476);--gradient-25:conic-gradient(at 125% 50%,#b78cf7,#ff7c94,#ffcf0d,#ff7c94,#b78cf7);--gradient-26:linear-gradient(to bottom right,#9796f0,#fbc7d4);--gradient-27:conic-gradient(from .5turn at bottom left,#ff1493,#639);--gradient-28:conic-gradient(from -90deg at 50% 105%,#fff,orchid);--gradient-29:radial-gradient(circle at top right,#bfb3ff,rgba(191,179,255,0)),radial-gradient(circle at bottom left,#86acf9,rgba(134,172,249,0));--gradient-30:radial-gradient(circle at top right,#00ff80,rgba(0,255,128,0)),radial-gradient(circle at bottom left,#adffd6,rgba(173,255,214,0));--noise-1:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.005' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)'/%3E%3C/svg%3E");--noise-2:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 300 300' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.05' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)'/%3E%3C/svg%3E");--noise-3:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.25' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)'/%3E%3C/svg%3E");--noise-4:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 2056 2056' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.5' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)'/%3E%3C/svg%3E");--noise-5:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 2056 2056' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.75' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)'/%3E%3C/svg%3E");--noise-filter-1:contrast(300%) brightness(100%);--noise-filter-2:contrast(200%) brightness(150%);--noise-filter-3:contrast(200%) brightness(250%);--noise-filter-4:contrast(200%) brightness(500%);--noise-filter-5:contrast(200%) brightness(1000%);--animation-fade-in:fade-in .5s var(--ease-3);--animation-fade-in-bloom:fade-in-bloom 2s var(--ease-3);--animation-fade-out:fade-out .5s var(--ease-3);--animation-fade-out-bloom:fade-out-bloom 2s var(--ease-3);--animation-scale-up:scale-up .5s var(--ease-3);--animation-scale-down:scale-down .5s var(--ease-3);--animation-slide-out-up:slide-out-up .5s var(--ease-3);--animation-slide-out-down:slide-out-down .5s var(--ease-3);--animation-slide-out-right:slide-out-right .5s var(--ease-3);--animation-slide-out-left:slide-out-left .5s var(--ease-3);--animation-slide-in-up:slide-in-up .5s var(--ease-3);--animation-slide-in-down:slide-in-down .5s var(--ease-3);--animation-slide-in-right:slide-in-right .5s var(--ease-3);--animation-slide-in-left:slide-in-left .5s var(--ease-3);--animation-shake-x:shake-x .75s var(--ease-out-5);--animation-shake-y:shake-y .75s var(--ease-out-5);--animation-shake-z:shake-z 1s var(--ease-in-out-3);--animation-spin:spin 2s linear infinite;--animation-ping:ping 5s var(--ease-out-3) infinite;--animation-blink:blink 1s var(--ease-out-3) infinite;--animation-float:float 3s var(--ease-in-out-3) infinite;--animation-bounce:bounce 2s var(--ease-squish-2) infinite;--animation-pulse:pulse 2s var(--ease-out-3) infinite;--border-size-1:1px;--border-size-2:2px;--border-size-3:5px;--border-size-4:10px;--border-size-5:25px;--radius-1:2px;--radius-2:5px;--radius-3:1rem;--radius-4:2rem;--radius-5:4rem;--radius-6:8rem;--radius-drawn-1:255px 15px 225px 15px/15px 225px 15px 255px;--radius-drawn-2:125px 10px 20px 185px/25px 205px 205px 25px;--radius-drawn-3:15px 255px 15px 225px/225px 15px 255px 15px;--radius-drawn-4:15px 25px 155px 25px/225px 150px 25px 115px;--radius-drawn-5:250px 25px 15px 20px/15px 80px 105px 115px;--radius-drawn-6:28px 100px 20px 15px/150px 30px 205px 225px;--radius-round:1e5px;--radius-blob-1:30% 70% 70% 30%/53% 30% 70% 47%;--radius-blob-2:53% 47% 34% 66%/63% 46% 54% 37%;--radius-blob-3:37% 63% 56% 44%/49% 56% 44% 51%;--radius-blob-4:63% 37% 37% 63%/43% 37% 63% 57%;--radius-blob-5:49% 51% 48% 52%/57% 44% 56% 43%;--radius-conditional-1:clamp(0px,calc(100vw - 100%) * 1e5,var(--radius-1));--radius-conditional-2:clamp(0px,calc(100vw - 100%) * 1e5,var(--radius-2));--radius-conditional-3:clamp(0px,calc(100vw - 100%) * 1e5,var(--radius-3));--radius-conditional-4:clamp(0px,calc(100vw - 100%) * 1e5,var(--radius-4));--radius-conditional-5:clamp(0px,calc(100vw - 100%) * 1e5,var(--radius-5));--radius-conditional-6:clamp(0px,calc(100vw - 100%) * 1e5,var(--radius-6))}@media (prefers-color-scheme: dark){:where(html){--shadow-color:220 40% 2%;--shadow-strength:25%;--inner-shadow-highlight:inset 0 -.5px 0 0 hsla(0,0%,100%,.067),inset 0 .5px 0 0 rgba(0,0,0,.467)}}@keyframes fade-in{to{opacity:1}}@keyframes fade-in-bloom{0%{filter:brightness(1) blur(20px);opacity:0}10%{filter:brightness(2) blur(10px);opacity:1}to{filter:brightness(1) blur(0);opacity:1}}@keyframes fade-out{to{opacity:0}}@keyframes fade-out-bloom{to{filter:brightness(1) blur(20px);opacity:0}10%{filter:brightness(2) blur(10px);opacity:1}0%{filter:brightness(1) blur(0);opacity:1}}@keyframes scale-up{to{transform:scale(1.25)}}@keyframes scale-down{to{transform:scale(.75)}}@keyframes slide-out-up{to{transform:translateY(-100%)}}@keyframes slide-out-down{to{transform:translateY(100%)}}@keyframes slide-out-right{to{transform:translateX(100%)}}@keyframes slide-out-left{to{transform:translateX(-100%)}}@keyframes slide-in-up{0%{transform:translateY(100%)}}@keyframes slide-in-down{0%{transform:translateY(-100%)}}@keyframes slide-in-right{0%{transform:translateX(-100%)}}@keyframes slide-in-left{0%{transform:translateX(100%)}}@keyframes shake-x{0%, to{transform:translateX(0)}20%{transform:translateX(-5%)}40%{transform:translateX(5%)}60%{transform:translateX(-5%)}80%{transform:translateX(5%)}}@keyframes shake-y{0%, to{transform:translateY(0)}20%{transform:translateY(-5%)}40%{transform:translateY(5%)}60%{transform:translateY(-5%)}80%{transform:translateY(5%)}}@keyframes shake-z{0%, to{transform:rotate(0deg)}20%{transform:rotate(-2deg)}40%{transform:rotate(2deg)}60%{transform:rotate(-2deg)}80%{transform:rotate(2deg)}}@keyframes spin{to{transform:rotate(1turn)}}@keyframes ping{90%, to{opacity:0;transform:scale(2)}}@keyframes blink{0%, to{opacity:1}50%{opacity:.5}}@keyframes float{50%{transform:translateY(-25%)}}@keyframes bounce{25%{transform:translateY(-20%)}40%{transform:translateY(-3%)}0%, 60%, to{transform:translateY(0)}}@keyframes pulse{50%{transform:scale(.9)}}@media (prefers-color-scheme: dark){@keyframes fade-in-bloom{0%{filter:brightness(1) blur(20px);opacity:0}10%{filter:brightness(.5) blur(10px);opacity:1}to{filter:brightness(1) blur(0);opacity:1}}}@media (prefers-color-scheme: dark){@keyframes fade-out-bloom{to{filter:brightness(1) blur(20px);opacity:0}10%{filter:brightness(.5) blur(10px);opacity:1}0%{filter:brightness(1) blur(0);opacity:1}}}a:visited{color:var(--link)}li.active{color:var(--text-2);text-shadow:0 0 10px var(--camo-5),0 0 25px var(--camo-7)}code{background:none}pre{padding:1em;color:var(--text-2)}div.doc-content>h1,h2,h3,h4,h5{font-size:var(--font-size-5)}img.logo{max-width:72px}html,body{box-sizing:border-box;height:100%}.content{display:flex;justify-content:center;align-items:center}body>footer{margin:0px;padding:0px}.wrapper{min-height:100%;display:flex;flex-direction:column;box-sizing:border-box}.page-body{flex-grow:1}.page-footer{flex-grow:0;flex-shrink:0}footer{text-align:center;font-size:.8em}article{padding:.5em}nav{display:flex;justify-content:space-between;align-items:center;background-color:var(--surface-1);padding:10px;color:var(--text-1);box-shadow:var(--shadow-3)}nav.subnav{background-color:var(--surface-2);color:var(--text-1);box-shadow:var(--shadow-5)}nav .logo{font-size:20px;font-weight:bold}nav ul{list-style-type:none;margin:0;padding:0;display:flex}nav ul li{margin-left:20px}nav ul li a{color:var(--link);text-decoration:none}.documentation{margin:1em}@media (width > 768px){.documentation{display:flex}}.documentation .doc-content{max-width:100%}.documentation .side-panel{margin-right:3em;margin-bottom:1em;min-width:200px}.documentation .side-panel ul>li{list-style:none;font-weight:bold;font-size:1.2em}h1,h2,h3,h4,h5{max-inline-size:none;margin-top:.5em;margin-bottom:.5em}main.page-body{margin:2em}div.side-panel>ul{padding-left:0px}.diagram{min-width:200%} |
1103 | \ No newline at end of file |
1104 | diff --git a/www/public/robots.txt b/www/public/robots.txt |
1105 | deleted file mode 100644 |
1106 | index 8fe72ba..0000000 |
1107 | --- a/www/public/robots.txt |
1108 | +++ /dev/null |
1109 | @@ -1,4 +0,0 @@ |
1110 | - User-agent: * |
1111 | - Disallow: |
1112 | - Allow: / |
1113 | - Sitemap: https://ayllu-forge.org/sitemap.xml |
1114 | diff --git a/www/public/sitemap.xml b/www/public/sitemap.xml |
1115 | deleted file mode 100644 |
1116 | index b0a8b91..0000000 |
1117 | --- a/www/public/sitemap.xml |
1118 | +++ /dev/null |
1119 | @@ -1,39 +0,0 @@ |
1120 | - <?xml version="1.0" encoding="UTF-8"?> |
1121 | - <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> |
1122 | - <url> |
1123 | - <loc>https://ayllu-forge.org/</loc> |
1124 | - </url> |
1125 | - <url> |
1126 | - <loc>https://ayllu-forge.org/docs/</loc> |
1127 | - </url> |
1128 | - <url> |
1129 | - <loc>https://ayllu-forge.org/docs/architecture/</loc> |
1130 | - </url> |
1131 | - <url> |
1132 | - <loc>https://ayllu-forge.org/docs/builds/</loc> |
1133 | - </url> |
1134 | - <url> |
1135 | - <loc>https://ayllu-forge.org/docs/configuration/</loc> |
1136 | - </url> |
1137 | - <url> |
1138 | - <loc>https://ayllu-forge.org/docs/developers/</loc> |
1139 | - </url> |
1140 | - <url> |
1141 | - <loc>https://ayllu-forge.org/docs/faq/</loc> |
1142 | - </url> |
1143 | - <url> |
1144 | - <loc>https://ayllu-forge.org/docs/installation/</loc> |
1145 | - </url> |
1146 | - <url> |
1147 | - <loc>https://ayllu-forge.org/docs/mail/</loc> |
1148 | - </url> |
1149 | - <url> |
1150 | - <loc>https://ayllu-forge.org/docs/proxy/</loc> |
1151 | - </url> |
1152 | - <url> |
1153 | - <loc>https://ayllu-forge.org/docs/sites/</loc> |
1154 | - </url> |
1155 | - <url> |
1156 | - <loc>https://ayllu-forge.org/docs/themes/</loc> |
1157 | - </url> |
1158 | - </urlset> |