A wobsite on the interblag

This commit is contained in:
Matt Pharoah
2025-07-30 12:33:52 -04:00
commit 49d95ffa51
57 changed files with 3252 additions and 0 deletions

8
.gitlab-ci.yml Normal file
View File

@@ -0,0 +1,8 @@
pages:
script:
- find public -type f -iregex '.*\.\(html\|css\|png\|svg\)$' -execdir gzip -f --keep {} \;
artifacts:
paths:
- public
only:
- master

4
README.md Normal file
View File

@@ -0,0 +1,4 @@
This repository is just for the Parallel Launcher webpage. You are probably
looking for the actual software, which can be found here:
https://gitlab.com/parallel-launcher/parallel-launcher

View File

@@ -0,0 +1 @@
5309b2c4-f927-4f49-b472-765be5d28dcb

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
public/img/appicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

80
public/img/appicon.svg Normal file
View File

@@ -0,0 +1,80 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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"
id="svg4675"
viewBox="0 0 389.61821 389.61821"
height="256"
width="256"
version="1.1">
<metadata
id="metadata4681">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs4679" />
<g
id="g4673"
transform="matrix(2.4919039,0,0,2.4919039,0,-73.645788)">
<g
transform="translate(-16.773187,-13.369163)"
id="g5369">
<g
id="g5350">
<path
id="path4641"
d="m 72.5,84.9 22.6,-8.6 22.6,8.6 v 0 l -22.6,8.6 z"
style="fill:#ffc001;stroke:none" />
<path
id="path5228"
d="M 72.499999,84.900002 72.399999,176.4 95,185.9 95.1,93.500001 Z"
style="fill:#069330;fill-opacity:1;stroke:none;stroke-width:0.61075634px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
id="path5230"
d="M 117.6,176.4 95,185.9 95.1,93.500001 117.7,84.900002 Z"
style="fill:#011da9;fill-opacity:1;stroke:none;stroke-width:0.61075634px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<g
id="g5345">
<path
id="path4645"
d="m 41.1,56.3 21.3,8.2 -21.3,8.2 -21.3,-8.2 v 0 z"
style="fill:#ffc001;stroke:none" />
<path
id="path5226"
d="m 41.1,163.2 -21.4,-9 0.1,-89.7 21.3,8.200003 z"
style="fill:#069330;fill-opacity:1;stroke:none;stroke-width:0.61075634px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
style="fill:#011da9;fill-opacity:1;stroke:none;stroke-width:0.61075634px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 41.1,163.2 V 72.700005 L 62.4,64.500002 V 154.2 Z"
id="path5234" />
</g>
<g
id="g5355">
<path
id="path4643"
d="m 148.9,56.3 21.3,8.2 -21.3,8.2 -21.3,-8.2 v 0 z"
style="fill:#ffc001;stroke:none" />
<path
id="path5232"
d="M 148.9,163.2 V 72.700003 L 170.2,64.5 v 89.7 z"
style="fill:#011da9;fill-opacity:1;stroke:none;stroke-width:0.61075634px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
style="fill:#069330;fill-opacity:1;stroke:none;stroke-width:0.61075634px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 148.9,163.2 -21.4,-9 0.1,-89.700002 21.3,8.200003 z"
id="path5236" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
public/img/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

1
public/img/flatpak Symbolic link
View File

@@ -0,0 +1 @@
/home/matt/Programming/parallel-launcher.gitlab.io/public/img/screenshots

252
public/img/logo-deb.svg Normal file
View File

@@ -0,0 +1,252 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/"
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:xlink="http://www.w3.org/1999/xlink"
id="svg8"
version="1.1"
viewBox="0 0 16.933333 16.933334"
height="64"
width="64">
<defs
id="defs2">
<filter
id="filter3573"
style="color-interpolation-filters:sRGB">
<feGaussianBlur
id="feGaussianBlur3575"
stdDeviation="1.6284922" />
</filter>
<linearGradient
y2="408.57144"
x2="116.42857"
y1="362.14285"
x1="61.42857"
gradientTransform="matrix(1.091261,0,0,1.091261,196.35071,-38.224469)"
gradientUnits="userSpaceOnUse"
id="linearGradient3538"
xlink:href="#linearGradient3312" />
<linearGradient
id="linearGradient3312">
<stop
id="stop3314"
offset="0"
style="stop-color:#c7f994;stop-opacity:1;" />
<stop
id="stop3316"
offset="1"
style="stop-color:#87cf3e;stop-opacity:1;" />
</linearGradient>
<linearGradient
y2="375.87961"
x2="113.64215"
y1="416.38858"
x1="70.491508"
spreadMethod="pad"
gradientTransform="translate(0,80)"
gradientUnits="userSpaceOnUse"
id="linearGradient4136"
xlink:href="#linearGradient3431" />
<linearGradient
id="linearGradient3431">
<stop
style="stop-color:#3d3d3d;stop-opacity:1;"
offset="0"
id="stop3433" />
<stop
style="stop-color:#000000;stop-opacity:0.11400651;"
offset="1"
id="stop3435" />
</linearGradient>
<filter
id="filter3291"
style="color-interpolation-filters:sRGB">
<feGaussianBlur
id="feGaussianBlur3293"
stdDeviation="0.400625" />
</filter>
<filter
id="filter3546"
style="color-interpolation-filters:sRGB">
<feGaussianBlur
id="feGaussianBlur3548"
stdDeviation="0.15992437" />
</filter>
</defs>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(0,-280.06665)"
id="layer1">
<g
i:rgbTrio="#4F008000FFFF"
i:dimmedPercent="50"
i:layer="yes"
id="Layer_1"
transform="matrix(0.07807049,0,0,0.07807049,0.83879365,280.06665)">
<g
id="g28">
<path
id="path4"
d="m 51.986,57.297 c -1.797,0.025 0.34,0.926 2.686,1.287 0.648,-0.506 1.236,-1.018 1.76,-1.516 -1.461,0.358 -2.948,0.366 -4.446,0.229"
i:knockout="Off"
style="fill:#a80030" />
<path
id="path6"
d="m 61.631,54.893 c 1.07,-1.477 1.85,-3.094 2.125,-4.766 -0.24,1.192 -0.887,2.221 -1.496,3.307 -3.359,2.115 -0.316,-1.256 -0.002,-2.537 -3.612,4.546 -0.496,2.726 -0.627,3.996"
i:knockout="Off"
style="fill:#a80030" />
<path
id="path8"
d="m 65.191,45.629 c 0.217,-3.236 -0.637,-2.213 -0.924,-0.978 0.335,0.174 0.6,2.281 0.924,0.978"
i:knockout="Off"
style="fill:#a80030" />
<path
id="path10"
d="m 45.172,1.399 c 0.959,0.172 2.072,0.304 1.916,0.533 1.049,-0.23 1.287,-0.442 -1.916,-0.533"
i:knockout="Off"
style="fill:#a80030" />
<path
id="path12"
d="M 47.088,1.932 46.41,2.072 47.041,2.016 47.088,1.932"
i:knockout="Off"
style="fill:#a80030" />
<path
id="path14"
d="m 76.992,46.856 c 0.107,2.906 -0.85,4.316 -1.713,6.812 l -1.553,0.776 c -1.271,2.468 0.123,1.567 -0.787,3.53 -1.984,1.764 -6.021,5.52 -7.313,5.863 -0.943,-0.021 0.639,-1.113 0.846,-1.541 -2.656,1.824 -2.131,2.738 -6.193,3.846 L 60.16,65.878 C 50.142,70.591 36.226,61.251 36.409,48.507 c -0.107,0.809 -0.304,0.607 -0.526,0.934 -0.517,-6.557 3.028,-13.143 9.007,-15.832 5.848,-2.895 12.704,-1.707 16.893,2.197 -2.301,-3.014 -6.881,-6.209 -12.309,-5.91 -5.317,0.084 -10.291,3.463 -11.951,7.131 -2.724,1.715 -3.04,6.611 -4.227,7.507 -1.597,11.737 3.004,16.808 10.787,22.773 1.225,0.826 0.345,0.951 0.511,1.58 -2.586,-1.211 -4.954,-3.039 -6.901,-5.277 1.033,1.512 2.148,2.982 3.589,4.137 -2.438,-0.826 -5.695,-5.908 -6.646,-6.115 4.203,7.525 17.052,13.197 23.78,10.383 -3.113,0.115 -7.068,0.064 -10.566,-1.229 -1.469,-0.756 -3.467,-2.322 -3.11,-2.615 9.182,3.43 18.667,2.598 26.612,-3.771 2.021,-1.574 4.229,-4.252 4.867,-4.289 -0.961,1.445 0.164,0.695 -0.574,1.971 2.014,-3.248 -0.875,-1.322 2.082,-5.609 l 1.092,1.504 c -0.406,-2.696 3.348,-5.97 2.967,-10.234 0.861,-1.304 0.961,1.403 0.047,4.403 1.268,-3.328 0.334,-3.863 0.66,-6.609 0.352,0.923 0.814,1.904 1.051,2.878 -0.826,-3.216 0.848,-5.416 1.262,-7.285 -0.408,-0.181 -1.275,1.422 -1.473,-2.377 0.029,-1.65 0.459,-0.865 0.625,-1.271 -0.324,-0.186 -1.174,-1.451 -1.691,-3.877 0.375,-0.57 1.002,1.478 1.512,1.562 -0.328,-1.929 -0.893,-3.4 -0.916,-4.88 -1.49,-3.114 -0.527,0.415 -1.736,-1.337 -1.586,-4.947 1.316,-1.148 1.512,-3.396 2.404,3.483 3.775,8.881 4.404,11.117 -0.48,-2.726 -1.256,-5.367 -2.203,-7.922 0.73,0.307 -1.176,-5.609 0.949,-1.691 C 83.519,18.706 76.074,10.902 69.225,7.24 70.063,8.007 71.121,8.97 70.741,9.121 67.335,7.093 67.934,6.935 67.446,6.078 64.671,4.949 64.489,6.169 62.651,6.08 57.421,3.306 56.413,3.601 51.6,1.863 l 0.219,1.023 c -3.465,-1.154 -4.037,0.438 -7.782,0.004 -0.228,-0.178 1.2,-0.644 2.375,-0.815 -3.35,0.442 -3.193,-0.66 -6.471,0.122 0.808,-0.567 1.662,-0.942 2.524,-1.424 -2.732,0.166 -6.522,1.59 -5.352,0.295 -4.456,1.988 -12.37,4.779 -16.811,8.943 l -0.14,-0.933 c -2.035,2.443 -8.874,7.296 -9.419,10.46 l -0.544,0.127 c -1.059,1.793 -1.744,3.825 -2.584,5.67 -1.385,2.36 -2.03,0.908 -1.833,1.278 -2.724,5.523 -4.077,10.164 -5.246,13.97 0.833,1.245 0.02,7.495 0.335,12.497 -1.368,24.704 17.338,48.69 37.785,54.228 2.997,1.072 7.454,1.031 11.245,1.141 -4.473,-1.279 -5.051,-0.678 -9.408,-2.197 -3.143,-1.48 -3.832,-3.17 -6.058,-5.102 l 0.881,1.557 c -4.366,-1.545 -2.539,-1.912 -6.091,-3.037 l 0.941,-1.229 C 28.751,98.334 26.418,96.056 25.78,94.795 l -1.548,0.061 c -1.86,-2.295 -2.851,-3.949 -2.779,-5.23 l -0.5,0.891 c -0.567,-0.973 -6.843,-8.607 -3.587,-6.83 -0.605,-0.553 -1.409,-0.9 -2.281,-2.484 l 0.663,-0.758 c -1.567,-2.016 -2.884,-4.6 -2.784,-5.461 0.836,1.129 1.416,1.34 1.99,1.533 -3.957,-9.818 -4.179,-0.541 -7.176,-9.994 L 8.412,66.472 C 7.926,65.74 7.631,64.945 7.24,64.165 l 0.276,-2.75 C 4.667,58.121 6.719,47.409 7.13,41.534 7.415,39.145 9.508,36.602 11.1,32.614 l -0.97,-0.167 c 1.854,-3.234 10.586,-12.988 14.63,-12.486 1.959,-2.461 -0.389,-0.009 -0.772,-0.629 4.303,-4.453 5.656,-3.146 8.56,-3.947 3.132,-1.859 -2.688,0.725 -1.203,-0.709 5.414,-1.383 3.837,-3.144 10.9,-3.846 0.745,0.424 -1.729,0.655 -2.35,1.205 4.511,-2.207 14.275,-1.705 20.617,1.225 7.359,3.439 15.627,13.605 15.953,23.17 l 0.371,0.1 c -0.188,3.802 0.582,8.199 -0.752,12.238 l 0.908,-1.912"
i:knockout="Off"
style="fill:#a80030" />
<path
id="path16"
d="m 32.372,59.764 -0.252,1.26 c 1.181,1.604 2.118,3.342 3.626,4.596 -1.085,-2.118 -1.891,-2.993 -3.374,-5.856"
i:knockout="Off"
style="fill:#a80030" />
<path
id="path18"
d="m 35.164,59.654 c -0.625,-0.691 -0.995,-1.523 -1.409,-2.352 0.396,1.457 1.207,2.709 1.962,3.982 l -0.553,-1.63"
i:knockout="Off"
style="fill:#a80030" />
<path
id="path20"
d="m 84.568,48.916 -0.264,0.662 c -0.484,3.438 -1.529,6.84 -3.131,9.994 1.77,-3.328 2.915,-6.968 3.395,-10.656"
i:knockout="Off"
style="fill:#a80030" />
<path
id="path22"
d="M 45.527,0.537 C 46.742,0.092 48.514,0.293 49.803,0 48.123,0.141 46.451,0.225 44.8,0.438 l 0.727,0.099"
i:knockout="Off"
style="fill:#a80030" />
<path
id="path24"
d="m 2.872,23.219 c 0.28,2.592 -1.95,3.598 0.494,1.889 1.31,-2.951 -0.512,-0.815 -0.494,-1.889"
i:knockout="Off"
style="fill:#a80030" />
<path
id="path26"
d="M 0,35.215 C 0.563,33.487 0.665,32.449 0.88,31.449 -0.676,33.438 0.164,33.862 0,35.215"
i:knockout="Off"
style="fill:#a80030" />
</g>
</g>
<g
id="g3647"
transform="matrix(0.09486687,0,0,0.09486762,-65.813324,279.06588)">
<path
id="path2819-8-3-8"
d="m 872.23977,55.171341 c 0,24.64394 -19.97925,44.625008 -44.62479,44.625008 -24.64456,0 -44.62309,-19.981068 -44.62309,-44.625008 0,-24.644245 19.97853,-44.622169 44.62309,-44.622169 24.64554,0 44.62479,19.977924 44.62479,44.622169 z"
style="fill:#0079c1" />
<g
style="fill:#ffffff;fill-opacity:1"
transform="matrix(0.415288,0,0,0.415288,609.13611,80.906538)"
id="g4835-5-6-3">
<path
d="m 490.89173,-23.585335 3.65182,-79.224895 -24.28352,-22.12009 c -0.57715,-0.37695 -1.33691,-0.29883 -1.82178,0.18945 l -11.21875,11.2168 c -0.47168,0.47314 -0.56055,1.20801 -0.21289,1.78076 l 13.13428,21.631353 c -2.32959,3.9165 -4.19531,8.13965 -5.52979,12.594237 l -24.11377,5.01563 c -0.6709,0.13916 -1.1543,0.7334 -1.1543,1.42188 v 15.862785 c 0,0.6709 0.45801,1.25195 1.10449,1.4082 l 23.4043,5.7207 c 1.24805,5.15918 3.18262,10.05078 5.73877,14.5459 l -13.54639,20.6582 c -0.37793,0.57715 -0.29883,1.33789 0.18945,1.82422 l 11.21533,11.21680039 c 0.47168,0.4707 1.20801,0.56152 1.7832,0.21582 z"
style="fill:#ffffff;fill-opacity:1"
id="path79-9-8-1" />
</g>
<g
style="fill:#ffffff;fill-opacity:1"
transform="matrix(-0.21579109,0.35482154,-0.35482154,-0.21579109,919.22927,-144.75119)"
id="g4835-5-6-3-7">
<path
d="m 492.48953,-21.721918 0.2923,-79.602262 -22.5218,-23.60614 c -0.57715,-0.37695 -1.33691,-0.29883 -1.82178,0.18945 l -11.21875,11.2168 c -0.47168,0.47314 -0.56055,1.20801 -0.21289,1.78076 l 13.13428,21.631353 c -2.32959,3.9165 -4.19531,8.13965 -5.52979,12.594237 l -24.11377,5.01563 c -0.6709,0.13916 -1.1543,0.7334 -1.1543,1.42188 v 15.862785 c 0,0.6709 0.45801,1.25195 1.10449,1.4082 l 23.4043,5.7207 c 1.24805,5.15918 3.18262,10.05078 5.73877,14.5459 l -13.54639,20.6582 c -0.37793,0.57715 -0.29883,1.33789 0.18945,1.82422 l 11.21533,11.21680039 c 0.47168,0.4707 1.20801,0.56152 1.7832,0.21582 z"
style="fill:#ffffff;fill-opacity:1"
id="path79-9-8-1-7" />
</g>
<g
style="fill:#ffffff;fill-opacity:1"
transform="matrix(-0.20731956,-0.35983709,0.35983709,-0.20731956,958.85963,231.66525)"
id="g4835-5-6-3-1">
<path
d="m 491.63809,-24.019439 1.65581,-78.077921 -23.03387,-22.83296 c -0.57715,-0.37695 -1.33691,-0.29883 -1.82178,0.18945 l -11.21875,11.2168 c -0.47168,0.47314 -0.56055,1.20801 -0.21289,1.78076 l 13.13428,21.631353 c -2.32959,3.9165 -4.19531,8.13965 -5.52979,12.594237 l -24.11377,5.01563 c -0.6709,0.13916 -1.1543,0.7334 -1.1543,1.42188 v 15.862785 c 0,0.6709 0.45801,1.25195 1.10449,1.4082 l 23.4043,5.7207 c 1.24805,5.15918 3.18262,10.05078 5.73877,14.5459 l -13.54639,20.6582 c -0.37793,0.57715 -0.29883,1.33789 0.18945,1.82422 l 11.21533,11.21680039 c 0.47168,0.4707 1.20801,0.56152 1.7832,0.21582 z"
style="fill:#ffffff;fill-opacity:1"
id="path79-9-8-1-5" />
</g>
<path
id="path2819-8-3-8-5"
d="m 849.15577,55.172072 c 0,11.895612 -9.64397,21.540458 -21.54035,21.540458 -11.89591,0 -21.53953,-9.644846 -21.53953,-21.540458 0,-11.895759 9.64362,-21.539088 21.53953,-21.539088 11.89638,0 21.54035,9.643329 21.54035,21.539088 z"
style="fill:#0079c1;fill-opacity:1" />
</g>
<g
id="g1987"
transform="matrix(0.02986858,0,0,0.02986858,-2.1166967,286.41665)">
<path
id="path1983"
d="m 354.331,212.595 c 0,78.279 -63.45,141.735 -141.729,141.735 -78.279,0 -141.735,-63.456 -141.735,-141.735 0,-78.274 63.457,-141.728 141.735,-141.728 78.279,0 141.729,63.453 141.729,141.728 z"
style="fill:#e95420" />
<path
id="path1985"
d="m 139.043,212.595 c 0,10.064 -8.159,18.225 -18.23,18.225 -10.059,0 -18.218,-8.16 -18.218,-18.225 0,-10.06 8.159,-18.219 18.218,-18.219 10.071,0 18.23,8.159 18.23,18.219 z m 103.674,88.606 c 5.033,8.709 16.173,11.696 24.889,6.67 8.715,-5.033 11.701,-16.179 6.669,-24.895 -5.032,-8.715 -16.173,-11.695 -24.888,-6.663 -8.716,5.033 -11.702,16.173 -6.67,24.888 z m 31.557,-158.982 c 5.032,-8.717 2.052,-19.86 -6.669,-24.887 -8.71,-5.032 -19.855,-2.046 -24.889,6.667 -5.032,8.715 -2.046,19.857 6.67,24.889 8.716,5.032 19.862,2.046 24.888,-6.669 z m -61.672,18.413 c 27.153,0 49.434,20.814 51.761,47.364 l 26.372,-0.416 c -1.252,-19.727 -9.809,-37.469 -22.995,-50.551 -6.98,2.693 -15.079,2.327 -22.066,-1.71 -6.992,-4.037 -11.359,-10.871 -12.514,-18.275 -6.554,-1.78 -13.448,-2.733 -20.558,-2.733 -12.471,0 -24.259,2.916 -34.727,8.103 l 12.832,23.043 c 6.65,-3.09 14.077,-4.825 21.895,-4.825 z m -51.969,51.963 c 0,-17.577 8.734,-33.121 22.097,-42.52 l -13.54,-22.634 c -15.684,10.474 -27.367,26.451 -32.296,45.183 5.833,4.697 9.57,11.897 9.57,19.972 0,8.08 -3.738,15.28 -9.57,19.978 4.929,18.731 16.612,34.708 32.296,45.188 l 13.54,-22.634 c -13.363,-9.406 -22.097,-24.944 -22.097,-42.533 z m 51.969,51.973 c -7.817,0 -15.244,-1.734 -21.895,-4.83 l -12.832,23.043 c 10.468,5.191 22.255,8.104 34.727,8.104 7.109,0 14.004,-0.946 20.558,-2.729 1.154,-7.409 5.521,-14.243 12.514,-18.273 6.987,-4.037 15.086,-4.404 22.066,-1.711 13.187,-13.088 21.743,-30.83 22.995,-50.557 l -26.372,-0.409 c -2.328,26.543 -24.608,47.362 -51.761,47.362 z"
style="fill:#ffffff" />
</g>
<g
transform="matrix(0.06591089,0,0,0.06591089,-7.284405,267.10572)"
id="g2720">
<path
style="display:inline;overflow:visible;visibility:visible;opacity:0.26000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;filter:url(#filter3573);enable-background:accumulate"
d="m 331.79042,510.93347 c -21.29012,0 -39.7658,-16.13992 -39.7658,-37.41096 l -0.0191,-21.99227 v -6.58604 h -13.49776 v -36.6513 l 56.92036,0.26806 17.80557,0.0383 c 21.30926,0 39.76579,16.12071 39.76579,37.41086 v 64.92334 h -61.20904 v 0 0 z"
id="path3543"
transform="matrix(1.0429295,0,0,1.0429295,-46.853192,-90.016462)" />
<path
style="display:inline;fill:url(#linearGradient3538);fill-opacity:1;fill-rule:evenodd"
d="m 354.82505,425.26498 c 0,-14.72024 0,-49.44521 0,-49.44521 0,-16.51906 -14.4866,-29.9098 -32.36077,-29.9098 h -18.55166 v -0.0399 l -50.17518,-0.21924 v 18.04093 c 0,0 4.09686,0 7.7022,0 5.37631,0 6.32609,3.71136 6.32609,8.84831 l 0.0399,31.89432 c 0,16.51907 14.48666,29.90979 32.34088,29.90979 h 44.08203 c 5.65135,0 10.59654,-3.57895 10.59654,-9.07924 z"
id="path2576" />
<path
style="display:inline;opacity:0.17514122;fill:url(#linearGradient4136);fill-opacity:1;fill-rule:nonzero;filter:url(#filter3291)"
d="m 142.9375,500.53125 c -10.75182,-7.40935 -18.36682,-15.92034 -24.78125,-27.1875 -12.64444,-23.35809 -9.68791,-34.95326 -41,-37.6875 -9.036289,0 -15.051217,-2 -24.5625,-2 v 3.3125 c 10e-7,10e-6 3.758681,1.90749 7.0625,1.90749 4.926697,1e-5 5.78125,3.41765 5.78125,8.125 l 0.03125,29.15501 c -3e-6,15.13758 13.295158,27.40625 29.65625,27.40625 H 135.5 c 2.96358,0 5.62572,-1.16787 7.4375,-3.03125 z"
id="path3419"
transform="matrix(1.0484996,0,0,1.0484996,200.58,-95.364589)" />
<path
style="display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:0.08040203;fill-rule:evenodd;stroke:none;stroke-width:4.7667098;marker:none;filter:url(#filter3546);enable-background:accumulate"
d="m 105.51844,438.54009 c -3.83671,0 -7.245744,1.42445 -9.984837,4.1914 -2.737725,2.76548 -4.1752,6.21796 -4.17519,10.11421 v 19.69466 h 8.932957 V 452.8457 c 0,-1.49338 0.48728,-2.66108 1.55355,-3.73818 1.06977,-1.08055 2.2026,-1.56971 3.67352,-1.56971 1.50175,0 2.61758,0.4867 3.68969,1.56971 1.06628,1.0771 1.55356,2.2448 1.55356,3.73818 v 19.69466 h 8.93297 V 452.8457 c 0,-1.49338 0.48728,-2.66108 1.55356,-3.73818 1.07211,-1.08301 2.18794,-1.56971 3.68971,-1.56971 1.47093,0 2.60373,0.48916 3.6735,1.56971 1.06627,1.0771 1.55356,2.2448 1.55356,3.73818 l 0.0486,23.01222 c 0,4.90894 -4.67486,9.04618 -10.68071,9.04618 l -28.805549,-0.11326 c -4.634707,0 -8.593128,-4.51117 -8.593128,-10.30852 v -43.33528 h -8.447462 v 45.00209 c 0,4.77471 1.747181,8.96178 5.146164,12.3476 2.905193,2.8676 6.399074,4.56445 10.324689,4.98427 v 0.16191 h 32.074486 c 4.92872,0 9.25884,-1.83265 12.75212,-5.38904 h 0.0162 c 2.97102,-3.05245 4.70787,-6.70998 5.12997,-10.82624 l -0.0324,-24.58193 c 0,-3.89625 -1.43744,-7.34873 -4.17521,-10.11421 -2.73906,-2.76695 -6.14812,-4.1914 -9.98482,-4.1914 -3.76604,0 -7.06133,1.40042 -9.72593,3.96479 -2.65681,-2.56014 -5.92908,-3.96479 -9.69356,-3.96479 z"
id="path2620"
transform="matrix(1.0484996,0,0,1.0484996,200.58,-95.364589)" />
<path
style="display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;enable-background:accumulate"
d="m 310.46807,364.69038 c -4.02279,0 -7.59716,1.49353 -10.4691,4.39468 -2.87051,2.8996 -4.3777,6.51953 -4.37769,10.60474 v 20.64985 h 9.36621 V 379.6898 c 0,-1.5658 0.51091,-2.79014 1.62889,-3.91948 1.12166,-1.13295 2.30943,-1.64584 3.85169,-1.64584 1.57458,0 2.74453,0.51031 3.86864,1.64584 1.11799,1.12934 1.62891,2.35368 1.62891,3.91948 v 20.64985 h 9.3662 V 379.6898 c 0,-1.5658 0.51092,-2.79014 1.62892,-3.91948 1.1241,-1.13553 2.29405,-1.64584 3.86866,-1.64584 1.54227,0 2.73001,0.51289 3.85165,1.64584 1.11799,1.12934 1.62891,2.35368 1.62891,3.91948 l 0.0509,24.12831 c 0,5.14702 -4.90159,9.48491 -11.19872,9.48491 l -30.2026,-0.11875 c -4.85949,0 -9.00989,-4.72996 -9.00989,-10.80848 v -45.43702 h -8.85716 v 47.18467 c 0,5.00628 1.83192,9.39642 5.39575,12.94646 3.04609,3.00667 6.70943,4.95566 10.82542,5.39584 l 33.6301,-8e-5 c 5.16776,0 9.70788,-1.92153 13.37059,-5.6504 h 0.017 c 3.1151,-3.2005 4.9362,-7.03541 5.37877,-11.35131 l -0.0339,-25.77415 c 0,-4.08521 -1.50714,-7.70514 -4.37769,-10.60474 -2.87191,-2.90115 -6.44631,-4.39468 -10.46908,-4.39468 -3.94869,0 -7.4038,1.46834 -10.19764,4.15708 -2.78567,-2.68431 -6.21663,-4.15708 -10.16369,-4.15708 z"
id="path4130" />
<path
style="display:inline;overflow:visible;visibility:visible;opacity:0.3;fill:#52a800;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;enable-background:accumulate"
d="m 304.96011,413.21566 v 9.25 h 22 c 5.16774,0 9.68104,-1.92738 13.34374,-5.65625 h 0.0313 c 3.11511,-3.20051 4.93243,-7.02785 5.375,-11.34375 v -5.25 h -9.34375 v 3.59375 c 0,5.14705 -4.89038,9.46875 -11.18751,9.46875 l -20.21874,-0.0625 z"
id="path4132" />
<path
id="path6141"
style="display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;enable-background:accumulate"
d="m 299.85338,441.19135 c -21.29012,0 -39.76579,-16.13992 -39.76579,-37.41096 l -0.0191,-25.82763 v -6.58603 h -13.49775 v -32.81595 l 56.92035,0.26806 17.80558,0.0383 c 21.30925,0 39.76578,16.12071 39.76578,37.41085 v 64.92335 h -61.20904 v 0 0 z m 52.53596,-17.41567 c 0,-14.14342 0,-47.50768 0,-47.50768 0,-15.87175 -13.91893,-28.73777 -31.0927,-28.73777 h -17.82471 v -0.0383 l -48.20903,-0.21065 v 15.41237 c 0,0 1.93631,0 5.40037,0 3.6664,0 8.0782,3.44547 8.0782,8.50158 l 0.0383,32.56616 c 0,15.87176 13.919,28.73776 31.0736,28.73776 h 42.35465 c 5.42989,0 10.18131,-3.43871 10.18131,-8.72347 z" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 20 KiB

BIN
public/img/logo-flatpak.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View File

@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 586 559" width="64" height="64" style="enable-background:new 0 0 586 559;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FAFAFA;}
.st1{fill:#F0F0F0;}
.st2{fill:#FFFFFF;}
.st3{fill:#E24329;}
.st4{fill:#FCA326;}
.st5{fill:#FC6D26;}
.st6{fill:#8C929D;}
.st7{fill:#2E2E2E;}
.st8{fill:none;stroke:#FCA326;stroke-width:16;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st9{fill:none;stroke:#FC6D26;stroke-width:16;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st10{fill:none;stroke:#E24329;stroke-width:16;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st11{fill:none;stroke:#F0F0F0;stroke-miterlimit:10;}
.st12{fill:#231F20;}
.st13{fill:none;stroke:#231F20;stroke-width:16;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st14{display:none;}
.st15{display:inline;opacity:0.1;fill:#E828E3;}
.st16{display:inline;}
.st17{opacity:0.1;fill:#E828E3;}
.st18{font-family:'SourceSansPro-Semibold';}
.st19{font-size:24px;}
.st20{display:inline;fill:#DB3B21;}
.st21{display:inline;fill:#FC6D26;}
.st22{display:inline;fill:#2E2E2E;}
.st23{display:inline;fill:#6E49CB;}
.st24{display:inline;fill:#380D75;}
.st25{display:inline;fill:#FCA121;}
.st26{opacity:0.6;fill:none;stroke:#231F20;stroke-width:2;stroke-miterlimit:10;stroke-dasharray:12,6;}
.st27{fill:none;stroke:#444444;stroke-width:1.5339;stroke-miterlimit:10;}
</style>
<g id="logo_art">
<g>
<path id="path50_2_" class="st3" d="M293.026,434.983L293.026,434.983l62.199-191.322H230.918L293.026,434.983L293.026,434.983z"
/>
<path id="path66_6_" class="st4" d="M143.798,243.662L143.798,243.662l-18.941,58.126c-1.714,5.278,0.137,11.104,4.661,14.394
l163.509,118.801L143.798,243.662L143.798,243.662z"/>
<path id="path74_2_" class="st3" d="M143.798,243.662h87.12l-37.494-115.224c-1.919-5.895-10.282-5.895-12.27,0L143.798,243.662
L143.798,243.662z"/>
<path id="path82_6_" class="st4" d="M442.346,243.662L442.346,243.662l18.873,58.126c1.714,5.278-0.137,11.104-4.661,14.394
L293.026,434.983L442.346,243.662L442.346,243.662z"/>
<path id="path86_2_" class="st3" d="M442.346,243.662h-87.12l37.425-115.224c1.919-5.895,10.282-5.895,12.27,0L442.346,243.662
L442.346,243.662z"/>
<polygon class="st5" points="293.026,434.983 355.225,243.662 442.346,243.662 "/>
<polygon class="st5" points="293.026,434.983 143.798,243.662 230.918,243.662 "/>
</g>
</g>
<g id="spacing_guides" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns" class="st14">
<path id="path40_18_" sketch:type="MSShapeGroup" class="st15" d="M0,0.5v124h586V0.5H0L0,0.5z"/>
<path id="path40_16_" sketch:type="MSShapeGroup" class="st15" d="M0,435.5v124h586v-124H0L0,435.5z"/>
<path id="path40_15_" sketch:type="MSShapeGroup" class="st15" d="M462.2,560h124V0h-124V560L462.2,560z"/>
<g class="st16">
<text transform="matrix(1 0 0 1 511.2881 283.3319)" class="st18 st19">1x</text>
</g>
<g class="st16">
<text transform="matrix(1 0 0 1 281.2881 500.9978)" class="st18 st19">1x</text>
</g>
<g class="st16">
<text transform="matrix(1 0 0 1 281.2881 65.998)" class="st18 st19">1x</text>
</g>
<path id="path40_5_" sketch:type="MSShapeGroup" class="st15" d="M0,560h124V0H0V560L0,560z"/>
<g class="st16">
<text transform="matrix(1 0 0 1 51.2881 283.3319)" class="st18 st19">1x</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

30
public/img/logo-osx.svg Normal file
View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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"
id="svg4"
version="1.1"
height="64"
width="64">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<path
style="fill:#666666;fill-opacity:1;stroke-width:0.06204721"
id="path2"
d="m 49.402256,60.503275 c -3.362959,3.263683 -7.073382,2.754896 -10.610073,1.216125 -3.760061,-1.569794 -7.197477,-1.669069 -11.168498,0 C 22.678522,63.853824 20.053926,63.233352 17.07566,60.503275 0.26086504,43.192103 2.7427534,16.822039 21.853294,15.829283 c 4.634927,0.248189 7.879996,2.56255 10.610073,2.754896 4.057888,-0.825227 7.942043,-3.189226 12.285348,-2.87899 5.21817,0.421921 9.120941,2.481888 11.726923,6.186106 -10.734168,6.452911 -8.190231,20.599675 1.66907,24.570696 -1.973101,5.180942 -4.504628,10.299837 -8.748657,14.084716 z M 32.091084,15.643142 C 31.588501,7.9492878 37.824246,1.6204723 44.996904,1.0000001 45.983454,9.8727512 36.930766,16.511802 32.091084,15.643142 Z" />
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

529
public/img/logo-pkg.svg Normal file
View File

@@ -0,0 +1,529 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
id="svg8"
version="1.1"
viewBox="0 0 16.933333 16.933334"
height="64"
width="64"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs2">
<linearGradient
xlink:href="#linearGradient2098"
id="linearGradient2351"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.251723,-2251.3535)"
x1="84.990685"
y1="236.78419"
x2="104.03497"
y2="236.78419" />
<linearGradient
id="linearGradient2098">
<stop
id="stop2094"
offset="0"
style="stop-color:#2972e2;stop-opacity:1" />
<stop
id="stop2096"
offset="1"
style="stop-color:#26c7fc;stop-opacity:1" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient2110"
id="linearGradient2353"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(11.753378,-3.0260219,3.0260219,11.753378,-861.16535,-1931.923)"
x1="60.396301"
y1="249.92128"
x2="73.893196"
y2="249.92128" />
<linearGradient
id="linearGradient2110">
<stop
id="stop2106"
offset="0"
style="stop-color:#26c4fb;stop-opacity:1" />
<stop
id="stop2108"
offset="1"
style="stop-color:#2977e3;stop-opacity:1" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient2110"
id="linearGradient2355"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.251723,-2251.3535)"
x1="60.396301"
y1="249.92128"
x2="73.997559"
y2="246.41939" />
<linearGradient
xlink:href="#linearGradient2098"
id="linearGradient2357"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.251723,-2251.3535)"
x1="64.392105"
y1="228.14523"
x2="84.990685"
y2="228.14523" />
<linearGradient
xlink:href="#linearGradient2110"
id="linearGradient2359"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.251723,-2251.3535)"
x1="84.361542"
y1="234.05646"
x2="84.151169"
y2="237.95784" />
<linearGradient
xlink:href="#linearGradient2110"
id="linearGradient2361"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.251723,-2251.3535)"
x1="9.4423542"
y1="230.94318"
x2="50.305416"
y2="223.45911" />
<linearGradient
xlink:href="#linearGradient2110"
id="linearGradient2363"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.251723,-2251.3536)"
x1="26.040033"
y1="222.32001"
x2="64.62645"
y2="222.32001" />
<linearGradient
xlink:href="#linearGradient2104"
id="linearGradient2365"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.251723,-2251.3535)"
x1="84.990685"
y1="226.43633"
x2="94.986862"
y2="226.43633" />
<linearGradient
id="linearGradient2104">
<stop
id="stop2100"
offset="0"
style="stop-color:#279ff0;stop-opacity:1" />
<stop
id="stop2102"
offset="1"
style="stop-color:#8de1fd;stop-opacity:1" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient2104"
id="linearGradient2367"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.985533,-2253.0565)"
x1="84.990685"
y1="228.64478"
x2="104.03497"
y2="228.64478" />
<linearGradient
xlink:href="#linearGradient2104"
id="linearGradient2369"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.251723,-2251.3535)"
x1="96.589539"
y1="242.79604"
x2="104.03497"
y2="242.79604" />
<linearGradient
xlink:href="#linearGradient2110"
id="linearGradient2371"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.251723,-2251.3535)"
x1="68.41713"
y1="213.70825"
x2="87.139732"
y2="213.70825" />
<linearGradient
xlink:href="#linearGradient2104"
id="linearGradient2373"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.251723,-2251.3535)"
x1="49.313831"
y1="210.37106"
x2="78.71286"
y2="210.37106" />
<linearGradient
xlink:href="#linearGradient2110"
id="linearGradient2375"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.251723,-2251.3535)"
x1="26.040033"
y1="215.47971"
x2="68.747917"
y2="215.47971" />
<linearGradient
xlink:href="#linearGradient2098"
id="linearGradient2377"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.251723,-2251.3535)"
x1="68.473366"
y1="219.45323"
x2="87.139732"
y2="218.32979" />
<linearGradient
xlink:href="#linearGradient2098"
id="linearGradient2379"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.251723,-2251.3535)"
x1="73.07399"
y1="226.43633"
x2="87.139732"
y2="226.43633" />
<linearGradient
xlink:href="#linearGradient2098"
id="linearGradient2381"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.251723,-2251.3535)"
x1="64.010452"
y1="229.4481"
x2="84.990685"
y2="229.4481" />
<linearGradient
xlink:href="#linearGradient2098"
id="linearGradient2383"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.251723,-2251.3535)"
x1="60.738827"
y1="229.79071"
x2="31.603239"
y2="237.79631" />
<linearGradient
xlink:href="#linearGradient2110"
id="linearGradient2385"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.251723,-2251.3535)"
x1="74.356033"
y1="245.42155"
x2="73.301544"
y2="232.25313" />
<linearGradient
xlink:href="#linearGradient2110"
id="linearGradient2389"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.251723,-2251.3535)"
x1="15.984433"
y1="239.53865"
x2="61.029278"
y2="227.73369" />
<linearGradient
xlink:href="#linearGradient2110"
id="linearGradient2391"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.251723,-2251.3535)"
x1="0.45401412"
y1="245.29109"
x2="47.828709"
y2="245.29109" />
<linearGradient
xlink:href="#linearGradient2110"
id="linearGradient2393"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.251723,-2251.3535)"
x1="3.0690458"
y1="248.2049"
x2="47.828709"
y2="248.2049" />
<linearGradient
xlink:href="#linearGradient2104"
id="linearGradient2395"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.251723,-2251.3535)"
x1="25.745007"
y1="247.43947"
x2="35.366211"
y2="259.47876" />
<linearGradient
xlink:href="#linearGradient2110"
id="linearGradient2397"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.251723,-2251.3535)"
x1="26.82168"
y1="250.59947"
x2="47.828709"
y2="257.93643" />
<linearGradient
xlink:href="#linearGradient2110"
id="linearGradient2399"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.251723,-2251.3535)"
x1="47.828709"
y1="252.61922"
x2="72.465904"
y2="252.61922" />
<linearGradient
xlink:href="#linearGradient2098"
id="linearGradient2401"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.251723,-2251.3535)"
x1="47.828709"
y1="255.66508"
x2="69.110939"
y2="255.66508" />
<linearGradient
xlink:href="#linearGradient2110"
id="linearGradient2403"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.251723,-2251.3535)"
x1="29.910975"
y1="255.24037"
x2="50.258846"
y2="262.24741" />
<linearGradient
xlink:href="#linearGradient2098"
id="linearGradient2405"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.251723,-2251.3535)"
x1="47.828709"
y1="258.90265"
x2="65.866058"
y2="258.90265" />
<linearGradient
xlink:href="#linearGradient2110"
id="linearGradient2407"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.251723,-2251.3535)"
x1="39.274921"
y1="261.4118"
x2="52.925247"
y2="261.11023" />
<linearGradient
xlink:href="#linearGradient2110"
id="linearGradient2409"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(12.136667,0,0,12.136667,-91.251723,-2251.3535)"
x1="47.828709"
y1="260.43134"
x2="60.346333"
y2="260.43134" />
<linearGradient
xlink:href="#linearGradient2110"
id="linearGradient2411"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(11.753378,-3.0260219,3.0260219,11.753378,-860.04625,-1932.0431)"
x1="54.119331"
y1="231.45634"
x2="73.555878"
y2="257.89557" />
</defs>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<path
style="fill:#1793d1;stroke-width:0.047763"
id="path896"
d="M 3.9671917,0.60325498 C 3.6138891,1.469395 3.4008184,2.036005 3.0074905,2.876435 3.2486457,3.132065 3.5446327,3.429725 4.0253668,3.765985 3.5085716,3.553295 3.1560809,3.339735 2.8925728,3.118215 2.3891988,4.168615 1.600489,5.664945 0,8.540745 c 1.2579809,-0.726 2.2330618,-1.17401 3.1418477,-1.34452 -0.039022,-0.16813 -0.061185,-0.34963 -0.059704,-0.53877 l 0.00148,-0.0406 c 0.019965,-0.80576 0.4391803,-1.42547 0.9358197,-1.3834 0.4966391,0.0421 0.882564,0.73001 0.8625035,1.53577 -0.00335,0.15189 -0.020538,0.29757 -0.050629,0.43274 0.898899,0.17577 1.8637106,0.62234 3.1045921,1.33879 C 7.6913635,8.090355 7.4726095,7.684365 7.2643629,7.297485 6.9357537,7.042915 6.593293,6.711435 5.8940438,6.352735 6.374539,6.477875 6.7184322,6.621635 6.9868605,6.782595 4.8661849,2.834135 4.6945726,2.309545 3.9671427,0.60350498 l 4.79e-5,-1.8e-4 z" />
<g
id="g2171"
transform="translate(0,0.60325498)">
<g
style="fill:#35bf5c;fill-opacity:1"
id="g5967"
transform="matrix(0.0396875,0,0,0.0396875,17.822797,-9.40198)">
<g
style="fill:#35bf5c;fill-opacity:1"
transform="matrix(1.2196132,0,0,1.0000088,-467.56616,-225.96506)"
id="g4446">
<rect
y="462.86115"
x="317.00177"
height="199.99825"
width="47.994675"
id="rect4149-7"
style="opacity:1;fill:#35bf5c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:7.074;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:21.222, 21.222;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="533.59174"
x="259.00415"
height="129.26767"
width="47.994675"
id="rect4149-0-6"
style="opacity:1;fill:#35bf5c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:7.074;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:21.222, 21.222;stroke-dashoffset:0;stroke-opacity:1" />
</g>
<path
style="fill:#35bf5c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m -222.41168,236.90016 h 129.26633 v 58.53494 h -70.93002 v 141.46508 h -58.33631 z"
id="path5961" />
</g>
</g>
<g
id="g2183"
transform="translate(0,-0.60326128)">
<path
d="m 4.953574,9.7430417 c 0.7699942,1.1093233 4.0100356,5.4004273 1.8028311,6.2947663 -1.031152,0.483286 -5.7286223,-0.283781 -5.6612267,-0.158401 -0.33697779,0.564121 -0.60487513,1.018169 -0.60487513,1.018169 0,0 3.62251113,0.166313 6.41942673,-0.218425 3.993187,-0.546922 -0.8222258,-5.761602 -1.9544711,-6.9311217 z"
style="fill:#7f7fff;stroke-width:0.567275"
id="path890" />
<path
d="M 4.953574,9.7430417 C 4.6974709,9.7789872 6.04e-7,15.676633 6.04e-7,15.676633 c 0,0 0.338662666,0.09803 1.108656896,0.211545 0.2493636,-0.197786 3.7573022,-6.2259707 3.8583956,-6.1399767 -0.0018,-0.00243 -0.00472,-0.00332 -0.0088,-0.00275 z"
style="fill:#ff7f7f;stroke-width:0.567275"
id="path892" />
<path
d="m 4.953574,9.7430417 c -0.1617494,-0.02683 -3.8583956,6.1399763 -3.8583956,6.1399763 0,0 3.3529289,0.361175 4.7345378,0.337097 3.8920934,-0.06707 0.029654,-5.262837 -0.8694027,-6.4839528 -0.00118,-0.0012 -0.00254,-0.00186 -0.00418,-0.00213 z"
style="fill:#7f3fbf;stroke-width:0.567275"
id="path894" />
</g>
<g
id="g2158"
transform="matrix(0.08205128,0,0,0.08205128,6.1221652,8.9655335)"
style="stroke-width:12.1875">
<g
id="g1194"
transform="translate(27.250697,-198.19875)"
style="stroke-width:12.1875">
<path
id="path2279"
d="m 48.341992,282.31263 c -6.163408,-2.05291 -14.122286,-4.64259 -14.268132,-4.64259 -0.110184,0 -0.237921,0.23008 -0.442308,0.79668 -0.158065,0.43817 -0.287389,0.8284 -0.287389,0.86716 0,0.0387 -0.05243,0.14237 -0.116439,0.23023 -0.133267,0.18282 0.325977,0.41286 -6.616325,-3.31412 -5.156977,-2.76851 -5.291361,-2.83501 -5.454569,-2.69914 -0.07027,0.0585 -0.668661,0.86453 -1.329804,1.79125 l -1.202088,1.6849 -0.128258,-0.30726 c -0.134107,-0.3213 -2.385113,-6.72225 -4.42409,-12.58035 -0.655365,-1.88287 -1.22909,-3.42341 -1.27496,-3.42341 -0.123116,0 -1.669629,1.07316 -4.3415067,3.01268 -1.302444,0.94545 -2.381487,1.70636 -2.397887,1.69093 -0.01639,-0.0155 0.730859,-1.7403 1.660564,-3.83302 2.9706177,-6.68672 3.1867947,-7.20508 3.0048817,-7.20508 -0.02981,0 -1.4923767,0.73687 -3.2502947,1.63748 -1.757927,0.90061 -3.1962187,1.6154 -3.1962187,1.58844 0,-0.0269 0.5223637,-1.65462 1.1608067,-3.61699 0.638443,-1.96239 1.160817,-3.62319 1.160817,-3.69069 2.1e-5,-0.15181 0.08338,-0.17693 -2.4562837,0.74033 -1.121114,0.40492 -2.069052,0.72505 -2.106502,0.71139 -0.07119,-0.026 0.995129,-1.20161 5.3866757,-5.93906 2.445499,-2.6381 2.7116847,-2.95938 3.7056467,-4.47248 2.560911,-3.8984 4.664206,-7.17962 4.664206,-7.27632 0,-0.0595 -0.09004,-0.0854 -0.208956,-0.06 -0.114921,0.0245 -1.103136,0.24086 -2.196039,0.48082 -1.092904,0.23997 -2.046424,0.42394 -2.118938,0.40883 -0.07252,-0.0152 2.367884,-1.58597 5.423123,-3.49079 11.441102,-7.13311 13.752278,-8.54068 14.370153,-8.75187 0.233731,-0.0799 0.424975,-0.16671 0.424975,-0.19292 0,-0.0262 -0.971611,-0.0173 -2.159135,0.0197 -1.187526,0.0371 -2.13824,0.048 -2.112693,0.0243 0.0546,-0.0507 10.661999,-8.29351 15.09069,-11.72676 3.565757,-2.76426 6.687112,-5.14044 7.306705,-5.56231 0.365271,-0.24872 0.520874,-0.29592 0.975085,-0.2958 0.297258,7e-5 3.340364,0.18821 6.76249,0.41805 15.762215,1.05866 21.373695,1.45778 21.554166,1.53309 0.107276,0.0447 2.061578,2.3969 4.34292,5.22696 l 4.147888,5.14556 3.829247,1.76537 c 2.10612,0.97095 3.835667,1.77172 3.843467,1.77948 0,0 0.30834,0.53375 0.0787,0.25262 l 0.26214,0.29996 c 0.50589,0.57885 8.630127,11.45556 8.669517,11.60674 0.035,0.13398 -1.02218,9.24873 -1.13122,9.75377 -0.0382,0.17711 -5.426227,5.40433 -5.426227,5.87855 -0.0166,-0.0167 0.11358,-2.08158 0.28946,-4.58855 0.17588,-2.50697 0.60602,-5.00034 0.37829,-5.41287 l -0.47186,-0.85474 -0.40282,-0.0541 c -0.44283,-0.0594 -8.435934,-0.56952 -19.022435,-1.21394 -3.754101,-0.22852 -7.17039,-0.44026 -7.591751,-0.47052 l -0.766172,-0.0551 v 0.29027 c 0,0.30549 0.893879,8.13979 2.141006,18.76494 l 0.742972,6.32993 -0.325154,0.47033 c -0.178823,0.25867 -1.051835,1.47617 -1.940005,2.70556 l -1.614862,2.23525 0.235817,0.42368 0.235818,0.42366 -2.059443,2.56524 c -1.132684,1.41087 -2.059413,2.6369 -2.059413,2.7245 0,0.0877 0.19699,0.62495 0.437781,1.19412 l 0.437782,1.03485 -0.307951,0.24225 c -0.169363,0.13324 -1.526049,1.04356 -3.014802,2.02293 l -2.706862,1.78068 0.02393,0.3153 c 0.0131,0.1734 0.151921,0.83287 0.308229,1.46548 0.156318,0.63263 0.269183,1.16531 0.250797,1.18375 -0.03654,0.0367 -3.452564,-0.41795 -7.026769,-0.93504 -1.24561,-0.1802 -2.316812,-0.32764 -2.380478,-0.32764 -0.08905,0 -0.104436,0.27988 -0.06681,1.21101 0.02789,0.68859 0.0132,1.20696 -0.03405,1.20166 -0.04566,-0.005 -1.336684,-0.42694 -2.868969,-0.93731 z"
style="fill:#297be5;fill-opacity:1;stroke-width:1.13534" />
<path
d="m 83.738847,231.43197 20.733013,1.45581 -6.618081,4.89893 z"
style="fill:url(#linearGradient2351);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2281" />
<path
id="path2283"
style="fill:url(#linearGradient2353);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
d="m 61.690611,235.37776 11.354657,26.092 -18.858141,-26.57714 z" />
<path
d="m 69.981292,235.23962 3.0912,26.30949 -12.057298,-27.05388 z"
style="fill:url(#linearGradient2355);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2285" />
<path
d="m 64.994335,223.24925 20.51266,8.84378 -11.866987,-11.51215 z"
style="fill:url(#linearGradient2357);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2287" />
<path
d="M 97.856152,237.76954 85.439391,231.93975 48.113374,234.6415 Z"
style="fill:url(#linearGradient2359);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.228853"
id="path2289" />
<path
d="M 10.222543,235.27979 30.766147,222.54901 84.12897,219.06268 Z"
style="fill:url(#linearGradient2361);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2291" />
<path
d="m 69.175497,212.53161 c 0,0 -39.919641,9.59918 -42.373415,10.16508 l 2.044539,-0.29694 -2.020866,0.29539 46.875213,-2.05175 -2.502544,-4.39424 h 5.27e-4 z"
style="fill:url(#linearGradient2363);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2293" />
<path
d="m 95.461486,220.78101 -9.954491,11.31202 2.140087,-14.9157 z"
style="fill:url(#linearGradient2365);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2295" />
<path
d="M 104.51042,232.89367 95.360547,220.69818 85.446776,231.9533 Z"
style="fill:url(#linearGradient2367);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2297" />
<path
d="m 97.057474,248.96552 0.796305,-11.17881 6.618081,-4.89893 -1.22756,10.05922 -6.186826,6.01852"
style="fill:url(#linearGradient2369);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2299" />
<path
d="m 87.647082,217.17733 -8.443268,-10.4343 -10.500601,5.87812 z"
style="fill:url(#linearGradient2371);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2301" />
<path
d="m 49.97895,204.75199 19.159118,7.76984 10.117292,-5.76994 z"
style="fill:url(#linearGradient2373);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2303" />
<path
d="m 26.802225,222.69653 23.176725,-17.94454 19.290178,7.82037 z"
style="fill:url(#linearGradient2375);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2305" />
<path
d="m 87.647082,217.17733 -14.080951,3.55478 -4.440524,-8.1881 z"
style="fill:url(#linearGradient2377);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2307" />
<path
d="m 87.647082,217.17733 -14.788944,3.57718 12.648857,11.33852 z"
style="fill:url(#linearGradient2379);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2309" />
<path
d="m 66.108871,230.91584 19.398124,1.17719 -20.540349,-8.9543 z"
style="fill:url(#linearGradient2381);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2311" />
<path
d="M 66.222168,230.90768 9.990181,242.83046 65.038751,223.10769 Z"
style="fill:url(#linearGradient2383);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2313" />
<path
d="m 48.562314,234.64625 17.749036,-3.75768 19.568694,1.11159 z"
style="fill:url(#linearGradient2385);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2315" />
<path
d="m 65.026806,223.1446 -49.279157,10.90506 -5.757468,8.7808 z"
style="fill:url(#linearGradient2389);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2319" />
<path
d="M 48.500019,234.6505 9.990181,242.83046 1.32292,252.17208 Z"
style="fill:url(#linearGradient2391);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2321" />
<path
d="M 3.92705,257.97538 48.500019,234.6505 6.537907,250.23522 Z"
style="fill:url(#linearGradient2393);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2323" />
<path
d="M 5.60595,265.91234 10.781272,254.38861 48.500019,234.6505 Z"
style="fill:url(#linearGradient2395);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2325" />
<path
d="M 18.524062,277.35731 12.645322,260.46619 48.500019,234.6505 Z"
style="fill:url(#linearGradient2397);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2327" />
<path
d="M 73.034461,261.42578 69.17008,266.76722 48.500019,234.6505 Z"
style="fill:url(#linearGradient2399);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2329" />
<path
d="M 65.409524,272.83354 48.500019,234.6505 69.693486,267.5802 Z"
style="fill:url(#linearGradient2401);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2331" />
<path
d="M 33.265299,279.9577 21.237057,273.49201 48.500019,234.6505 Z"
style="fill:url(#linearGradient2403);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2333" />
<path
d="M 66.462136,275.21019 48.500019,234.6505 60.189863,279.28165 Z"
style="fill:url(#linearGradient2405);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2335" />
<path
d="m 48.500019,234.6505 2.993967,48.76415 -17.472942,-5.7049 z"
style="fill:url(#linearGradient2407);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2337" />
<path
d="m 48.500019,234.6505 2.832074,46.27865 9.69918,1.37778 z"
style="fill:url(#linearGradient2409);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2339" />
<path
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:4.5778px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 56.755443,217.22848 c 9.7056,-4.45351 18.334521,9.19849 23.472344,3.65198 -2.239659,3.57968 -7.453759,3.90526 -11.088773,3.91761 0,0 -5.577588,-0.13282 -4.847188,-4.81398 -1.205199,-1.99087 -5.022378,-1.95121 -7.536383,-2.75561 z"
id="path2341" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5.02994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
d="m 65.851932,218.62017 a 2.9547924,2.9547924 0 0 0 -1.228081,2.39306 2.9547924,2.9547924 0 0 0 2.955027,2.95504 2.9547924,2.9547924 0 0 0 2.954292,-2.95504 2.9547924,2.9547924 0 0 0 -0.08803,-0.70573 2.4069938,2.9215925 0 0 1 -2.252216,1.90082 2.4069938,2.9215925 0 0 1 -2.407014,-2.9213 2.4069938,2.9215925 0 0 1 0.06602,-0.66685 z"
id="path2343" />
<path
id="path2345"
d="m 91.922244,223.72124 c 0,0 -3.359235,0.83979 -2.939326,2.72935 0,0 1.364686,-0.10495 2.939326,-2.72935 z"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.55879px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
d="M 54.611051,235.04937 73.057695,261.48192 48.474062,234.65737 Z"
style="fill:url(#linearGradient2411);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.227985"
id="path2347" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 26 KiB

219
public/img/logo-rpm.svg Normal file
View File

@@ -0,0 +1,219 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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"
id="svg8"
version="1.1"
viewBox="0 0 16.933333 16.933333"
height="64"
width="64">
<defs
id="defs2">
<clipPath
id="clipPath4429">
<g
id="g4431"
transform="matrix(0.9947658,0,0,1,1.7860989,0)">
<path
style="display:inline;overflow:visible;visibility:visible;fill:#efa724;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:30;marker:none"
id="path4433"
d="m 322.54143,2800.9375 -4.43505,5.7298 -4.43495,-5.7298 v -43.1429 h -18.93972 l 23.37467,-25.5367 23.13125,25.5367 h -18.6962 z" />
</g>
</clipPath>
<clipPath
id="clipPath2274">
<g
id="g2272"
transform="matrix(0.9947658,0,0,1,1.7860989,0)">
<path
style="display:inline;overflow:visible;visibility:visible;fill:#efa724;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:30;marker:none"
id="path2270"
d="m 322.54143,2800.9375 -4.43505,5.7298 -4.43495,-5.7298 v -43.1429 h -18.93972 l 23.37467,-25.5367 23.13125,25.5367 h -18.6962 z" />
</g>
</clipPath>
<clipPath
id="clipPath2280">
<g
id="g2278"
transform="matrix(0.9947658,0,0,1,1.7860989,0)">
<path
style="display:inline;overflow:visible;visibility:visible;fill:#efa724;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:30;marker:none"
id="path2276"
d="m 322.54143,2800.9375 -4.43505,5.7298 -4.43495,-5.7298 v -43.1429 h -18.93972 l 23.37467,-25.5367 23.13125,25.5367 h -18.6962 z" />
</g>
</clipPath>
<clipPath
id="clipPath2286">
<g
id="g2284"
transform="matrix(0.9947658,0,0,1,1.7860989,0)">
<path
style="display:inline;overflow:visible;visibility:visible;fill:#efa724;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:30;marker:none"
id="path2282"
d="m 322.54143,2800.9375 -4.43505,5.7298 -4.43495,-5.7298 v -43.1429 h -18.93972 l 23.37467,-25.5367 23.13125,25.5367 h -18.6962 z" />
</g>
</clipPath>
</defs>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(0,-280.06667)"
id="layer1">
<g
transform="matrix(0.25734549,0,0,0.25734549,-41.561297,280.06667)"
id="g2184">
<path
style="fill:#072b61"
d="M 194.4,16.4 C 194.4,7.4 187,0 177.9,0 168.8,0 161.5,7.4 161.5,16.4 v 0 12.8 0 c 0,2 1.6,3.7 3.7,3.7 v 0 0 h 12.7 c 9.1,0 16.5,-7.4 16.5,-16.5"
id="path1009" />
<path
d="m 182.8,3.9 c -4.3,0 -7.8,3.5 -7.8,7.7 v 4.1 h -4.1 c -4.2,0 -7.7,3.4 -7.7,7.7 0,4.3 3.5,7.7 7.7,7.7 4.3,0 7.8,-3.4 7.8,-7.7 v -4.1 h 4.1 c 4.2,0 7.7,-3.4 7.7,-7.7 0,-4.2 -3.5,-7.7 -7.7,-7.7 z m 0,3.6 c 2.2,0 4,1.9 4,4.1 0,2.3 -1.8,4.1 -4,4.1 h -0.1 -3.4 c -0.4,0 -0.6,-0.3 -0.6,-0.6 v -3.5 c 0,-2.2 1.8,-4.1 4.1,-4.1 z m -11.9,11.8 h 3.5 c 0.4,0 0.6,0.3 0.6,0.6 v 3.5 c 0,2.3 -1.8,4.1 -4.1,4.1 -2.2,0 -4.1,-1.8 -4.1,-4.1 0,-2.2 1.9,-4.1 4.1,-4.1 z"
id="path1011"
style="fill:#0a57a4" />
<path
style="fill:#ffffff"
d="m 175,15.7 v -4.1 0 c 0,-4.2 3.5,-7.7 7.7,-7.7 0.7,0 1.1,0.1 1.7,0.2 0.9,0.3 1.6,1 1.6,1.8 0,1 -0.7,1.7 -1.8,1.7 -0.5,0 -0.7,-0.1 -1.5,-0.1 -2.2,0 -4,1.9 -4,4.1 v 3.5 0 c 0,0.4 0.2,0.6 0.5,0.6 v 0 h 2.7 c 1,0 1.8,0.8 1.8,1.8 0,1 -0.8,1.8 -1.8,1.8 h -3.2 v 4.1 0 c 0,4.3 -3.5,7.7 -7.8,7.7 -0.6,0 -1.1,0 -1.7,-0.2 -0.8,-0.2 -1.5,-0.9 -1.5,-1.8 0,-1 0.7,-1.7 1.8,-1.7 0.5,0 0.7,0.1 1.4,0.1 2.3,0 4.1,-1.8 4.1,-4.1 v -3.5 c 0,-0.3 -0.2,-0.6 -0.6,-0.6 v 0 h -2.6 c -1,0 -1.8,-0.8 -1.8,-1.8 0,-1 0.8,-1.8 1.8,-1.8 h 3.2"
id="path1013" />
</g>
<g
transform="matrix(0.05280028,0,0,0.05280049,13.908828,231.02072)"
id="g3664">
<g
transform="rotate(-90,-298.5197,1636.0002)"
id="g12802">
<g
transform="translate(16.279512,-899.16723)"
id="g12804">
<g
transform="matrix(1.0666663,0,0,1,-26.935596,-4.1328125e-5)"
id="g12806">
<path
d="m 323.36653,2798.1614 -5.40616,5.8005 -5.40616,-5.8005 v -40.8261 h -18.01333 l 23.41949,-24.8979 23.02487,24.8979 h -17.6187 z"
id="path12808"
style="display:inline;overflow:visible;visibility:visible;fill:#932279;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:30;marker:none" />
</g>
<g
transform="matrix(1.0722788,0,0,1,-28.850792,-4.1328125e-5)"
clip-path="url(#clipPath4429)"
id="g12812" />
</g>
</g>
<g
transform="translate(-351.30671,-902.55818)"
id="g12768">
<g
transform="translate(16.279512,-899.16723)"
id="g12770">
<g
transform="matrix(1.0666663,0,0,1,-26.935596,-4.1328125e-5)"
id="g12772">
<path
d="m 323.36653,2798.1614 -5.40616,5.8005 -5.40616,-5.8005 v -40.8261 h -18.01333 l 23.41949,-24.8979 23.02487,24.8979 h -17.6187 z"
id="path12774"
style="display:inline;overflow:visible;visibility:visible;fill:#efa724;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:30;marker:none" />
</g>
<g
transform="matrix(1.0722788,0,0,1,-28.850792,-4.1328125e-5)"
clip-path="url(#clipPath4429)"
id="g12778" />
</g>
</g>
<g
transform="rotate(90,1045.4823,1742.4169)"
id="g12780">
<g
transform="matrix(1.0666663,0,0,1,-26.935596,-4.1328125e-5)"
id="g12782">
<path
d="m 323.36653,2798.1614 -5.40616,5.8005 -5.40616,-5.8005 v -40.8261 h -18.01333 l 23.41949,-24.8979 23.02487,24.8979 h -17.6187 z"
id="path12784"
style="display:inline;overflow:visible;visibility:visible;fill:#262577;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:30;marker:none" />
</g>
<g
transform="matrix(1.0722788,0,0,1,-28.850792,-4.1328125e-5)"
clip-path="url(#clipPath4429)"
id="g12788" />
</g>
<g
transform="rotate(180,152.75931,1460.3469)"
id="g12790">
<g
transform="translate(16.279512,-899.16723)"
id="g12792">
<g
transform="matrix(1.0666663,0,0,1,-26.935596,-4.1328125e-5)"
id="g12794">
<path
d="m 323.36653,2798.1614 -5.40616,5.8005 -5.40616,-5.8005 v -40.8261 h -18.01333 l 23.41949,-24.8979 23.02487,24.8979 h -17.6187 z"
id="path12796"
style="display:inline;overflow:visible;visibility:visible;fill:#9ccd2a;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:30;marker:none" />
</g>
<g
transform="matrix(1.0722788,0,0,1,-28.850792,-4.1328125e-5)"
clip-path="url(#clipPath4429)"
id="g12800" />
</g>
</g>
<g
transform="translate(-749.79982,-1331.6428)"
id="g12742">
<path
d="m 671.98437,2285.7893 h 49.60645 v 49.6065 h -49.60645 z"
id="rect12744"
style="fill:#9ccd2a;fill-opacity:1;stroke:#ffffff;stroke-width:3.54330707;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
<path
d="m 732.22076,2285.7893 h 49.60645 v 49.6065 h -49.60645 z"
id="rect12746"
style="fill:#932279;fill-opacity:1;stroke:#ffffff;stroke-width:3.54330707;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
<path
d="m 732.22076,2346.0256 h 49.60645 v 49.6065 h -49.60645 z"
id="rect12748"
style="fill:#efa724;fill-opacity:1;stroke:#ffffff;stroke-width:3.54330707;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
<path
d="m 671.98437,2346.0256 h 49.60645 v 49.6065 h -49.60645 z"
id="rect12750"
style="fill:#262577;fill-opacity:1;stroke:#ffffff;stroke-width:3.54330707;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
</g>
<path
d="m -784.62878,642.40875 h 49.60644 v 49.60645 h -49.60644 z"
transform="rotate(-45)"
id="rect12760"
style="fill:none;stroke:#ffffff;stroke-width:3.54330707;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
<path
d="m -724.39233,642.40875 h 49.60645 v 49.60645 h -49.60645 z"
transform="rotate(-45)"
id="rect12762"
style="fill:none;stroke:#ffffff;stroke-width:3.54306793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
d="m -15.377623,1009.0679 35.077058,-35.0771 35.077058,35.0771 -35.077058,35.077 z"
id="rect12764"
style="fill:none;stroke:#ffffff;stroke-width:3.54330707;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
<path
d="m -784.62878,702.64508 h 49.60644 v 49.60645 h -49.60644 z"
transform="rotate(-45)"
id="rect12766"
style="fill:none;stroke:#ffffff;stroke-width:3.54330707;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
</g>
<g
transform="matrix(0.05649752,0,0,-0.05649752,14.150209,290.72484)"
id="g20">
<path
id="path22"
style="fill:#73ba25;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 0,0 c 0.175,4.73 2.156,9.12 5.614,12.34 3.46,3.231 7.975,4.9 12.708,4.75 9.761,-0.349 17.43,-8.589 17.095,-18.339 -0.184,-4.73 -2.164,-9.12 -5.614,-12.329 -3.46,-3.25 -7.964,-4.92 -12.719,-4.76 C 7.335,-17.979 -0.326,-9.758 0,0 Z m 47.347,-17.439 c 0.805,0.532 1.396,0.972 1.645,1.07 l 0.269,0.419 c -0.681,4.28 -7.06,25.03 -11.885,30.019 -1.329,1.36 -2.394,2.7 -4.549,3.961 -17.455,10.17 -58.863,16.309 -60.803,16.589 l -0.33,-0.091 -0.124,-0.3 c 0,0 -0.16,-8.58 -0.184,-9.539 -4.229,1.421 -34.972,11.351 -63.791,12.351 -24.44,0.859 -60.033,4.02 -107.196,-24.981 l -1.395,-0.868 c -22.189,-13.841 -37.509,-30.91 -45.517,-50.739 -2.512,-6.24 -5.89,-20.32 -2.542,-33.569 1.442,-5.791 4.131,-11.61 7.756,-16.819 8.194,-11.77 21.944,-19.58 36.748,-20.899 20.905,-1.87 36.733,7.519 42.363,25.1 3.871,12.129 0,29.927 -14.839,39.007 -12.07,7.391 -25.049,5.711 -32.578,0.73 -6.532,-4.331 -10.231,-11.06 -10.166,-18.451 0.151,-13.11 11.444,-20.078 19.565,-20.099 2.359,0 4.728,0.41 7.399,1.28 0.951,0.29 1.845,0.649 2.831,1.259 l 0.309,0.181 0.194,0.13 -0.065,-0.039 c 1.851,1.261 2.964,3.312 2.964,5.511 0,0.6 -0.084,1.208 -0.256,1.82 -0.959,3.32 -4.239,5.329 -7.638,4.71 l -0.459,-0.109 -0.621,-0.19 -0.901,-0.31 c -1.87,-0.46 -3.27,-0.5 -3.569,-0.51 -0.951,0.061 -5.625,1.461 -5.625,6.58 v 0.07 c 0,1.88 0.754,3.199 1.17,3.92 1.454,2.28 5.435,4.518 10.814,4.05 7.059,-0.611 12.149,-4.231 15.52,-11.06 3.129,-6.349 2.31,-14.159 -2.11,-19.88 -4.39,-5.669 -12.205,-8.078 -22.598,-6.959 -10.481,1.159 -19.34,7.19 -24.304,16.579 -4.856,9.178 -5.121,20.059 -0.685,28.418 10.609,20.029 30.648,19.82 41.636,17.921 16.26,-2.821 34.758,-17.82 41.319,-35.139 1.06,-2.761 1.6,-4.949 2.072,-6.951 l 0.708,-2.99 18.37,-8.969 0.24,-0.181 0.446,0.041 0.081,0.529 c -0.114,0.411 -0.381,0.789 -0.805,5.93 -0.349,4.562 -1.06,17.051 5.228,23.24 2.441,2.419 6.161,4.578 9.099,5.269 12.04,2.941 26.159,0.912 39.507,-14.539 6.911,-7.981 10.28,-11.62 11.97,-13.249 l 0.59,-0.532 0.694,-0.519 c 0.554,-0.301 22.955,-10.621 22.955,-10.621 l 0.461,0.11 0.009,0.479 c -0.149,0.17 -14.199,18.328 -11.698,33.28 1.969,11.908 11.447,10.83 24.557,9.35 4.28,-0.5 9.152,-1.06 14.196,-1.172 14.083,-0.089 29.254,2.511 38.604,6.601 6.049,2.63 9.909,4.38 12.328,6.579 0.87,0.721 1.32,1.891 1.791,3.15 l 0.329,0.831 c 0.391,1.021 0.967,3.171 1.219,4.35 0.102,0.519 0.162,1.068 -0.209,1.359 l -1.294,-0.24 c -4.106,-2.471 -14.369,-7.15 -23.965,-7.35 -11.914,-0.241 -35.898,11.98 -38.398,13.28 l -0.241,0.279 c -0.589,1.44 -4.19,9.949 -4.96,11.749 17.27,-11.379 31.594,-17.669 42.559,-18.639 12.207,-1.087 21.722,5.574 25.786,8.422 z M 20.194,-1.64 c -3.031,0 -5.479,1.64 -5.479,3.65 0,2.029 2.448,3.66 5.479,3.66 3.031,0 5.486,-1.631 5.486,-3.66 C 25.678,0 23.223,-1.64 20.194,-1.64 M 18.173,11.872 C 14.862,11.991 11.723,10.821 9.323,8.571 6.924,6.321 5.509,3.273 5.409,-0.028 c -0.23,-6.821 5.111,-12.559 11.916,-12.81 3.309,-0.1 6.464,1.07 8.878,3.32 2.409,2.261 3.795,5.311 3.9,8.599 0.23,6.819 -5.109,12.549 -11.93,12.791 z" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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"
style="fill:#0078d6"
id="svg4"
version="1.1"
height="96"
width="96">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<path
id="path2"
d="m 4.35,16.7 35.7,-4.9 V 46.3 H 4.35 m 40,-35.2 47.3,-6.9 V 46 h -47.3 m -40,3.94 h 35.7 v 34.6 l -35.7,-5 m 40,-29.14 h 47.3 v 41.4 l -47.3,-6.7" />
</svg>

After

Width:  |  Height:  |  Size: 882 B

BIN
public/img/screenshot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 301 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 297 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 301 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 298 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 299 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 KiB

159
public/index.html Normal file
View File

@@ -0,0 +1,159 @@
<!DOCTYPE html>
<html>
<head>
<link rel="canonical" href="https://parallel-launcher.ca" />
<link rel="shortcut icon" href="img/favicon.ico" type="image/x-icon">
<link rel="stylesheet" type="text/css" href="style.css">
<link rel="stylesheet" type="text/css" href="mobile.css" media="(min-resolution: 1.5dppx) or (max-width: 1000px)" id="mobile-style">
<meta charset="UTF-8">
<meta name="KEYWORDS" content="N64, Emulator, ParallelN64, Linux, Windows, Mac, RetroArch">
<meta name="DESCRIPTION" content="A launcher for the ParallelN64 and Mupen64Plus-Next emulators">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta property="og:title" content="Parallel Launcher" />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://parallel-launcher.ca/img/appicon.png" />
<meta property="og:image:type" content="image/png" />
<meta property="og:image:width" content="320" />
<meta property="og:image:height" content="320" />
<meta property="og:image:alt" content="The Parallel Launcher application icon" />
<meta property="og:url" content="https://parallel-launcher.ca" />
<meta property="og:description" content="A simple easy-to-use launcher for the ParallelN64 and Mupen64Plus-Next emulators." />
<meta property="og:locale" content="en_CA" />
<meta property="og:locale:alternate" content="en_US" />
<meta property="og:locale:alternate" content="en_GB" />
<title>Parallel Launcher</title>
<script type="application/javascript">
if( navigator.userAgent.includes( 'Googlebot' ) && navigator.userAgent.includes( 'Mobile' ) ) {
document.getElementById( 'mobile-style' ).media = '';
}
</script>
</head>
<body>
<div id="main">
<div itemscope itemtype="http://schema.org/SoftwareApplication">
<meta itemprop="name" content="Parallel Launcher" />
<meta itemprop="image" content="https://parallel-launcher.ca/img/appicon.svg" />
<meta itemprop="softwareVersion" content="8.3.0" />
<meta itemprop="screenshot" content="https://parallel-launcher.ca/img/screenshot.png" />
<div itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="name" content="Matt Pharoah" />
<meta itemprop="givenName" content="Matt" />
<meta itemprop="familyName" conent="Pharoah" />
<meta itemprop="gender" content="male" />
</div>
<meta itemprop="copyrightYear" content="2020" />
</div>
<div id="background"></div>
<div id="content">
<h1> <img src="img/appicon.svg" id="logo"> Parallel Launcher </h1>
<div id="copyright">&copy; 2020-2025 Matt Pharoah</div>
<p>Parallel Launcher is an easy to use launcher for the ParallelN64 emulator, featuring very easy
controller configuration, custom modifications to the emulator core that improve accuracy and add
enhancements, automatic loading of ROMs from given folders, automatic setup of optimal settings, and
optional integration with romhacking.com.</p>
<div id="top">
<div id="downloads">
<div class="download-box">
<img src="img/logo-windows.svg">
<div>
<b>Windows</b><br>
<a download href="windows-releases/parallel-launcher-v8.3.0-windows64.zip">Download Installer (64-bit)</a><br>
<a download href="windows-releases/parallel-launcher-v8.3.0-windows32.zip">Download Installer (32-bit)</a>
</div>
</div>
<div class="download-box">
<img src="img/logo-deb.svg">
<div>
<b>Debian/Ubuntu/Mint</b><br>
<a href="https://launchpad.net/~mpharoah/+archive/ubuntu/parallel-launcher">Add the PPA</a><br>
<a download href="https://launchpad.net/~mpharoah/+archive/ubuntu/parallel-launcher/+files/parallel-launcher_8.3-0backport1_amd64.deb">Download Debian Package</a>
</div>
</div>
<div class="download-box">
<img src="img/logo-rpm.svg">
<div>
<b>Fedora/CentOS/OpenSUSE + Others<sup>1</sup></b><br>
<a href="https://copr.fedorainfracloud.org/coprs/mpharoah/parallel-launcher/">Add the COPR Repo</a><br>
<a download href="https://gitlab.com/-/project/22150690/uploads/ddb0929f3491a25b4e0dea9a4294cf33/parallel-launcher-8.3.0-0.x86_64.rpm">Download RPM Package</a>
</div>
</div>
<div class="download-box">
<img src="img/logo-pkg.svg">
<div>
<b>Arch/Manjaro/EndeavourOS/Garuda</b><br>
<a href="https://aur.archlinux.org/packages/parallel-launcher/">Available on AUR</a><br>
<a download href="https://gitlab.com/-/project/22150690/uploads/8a2c0f724099ae19a341690fb3642a0a/parallel-launcher-8.3.0-0-x86_64.pkg.tar.zst">Download Arch Package</a>
</div>
</div>
<div class="download-box">
<img src="img/logo-flatpak.png">
<div>
<b>Flatpak (SteamOS/Other)</b><br>
<a href="https://flathub.org/apps/details/ca.parallel_launcher.ParallelLauncher">Install from Flathub</a><br>
</div>
</div>
<div class="download-box">
<img src="img/logo-osx.svg">
<div>
<b>MacOS</b><br>
<a download href="latest/parallel-launcher-x86_64.dmg">Download (Intel x86_64)<sup>2</sup></a>
</div>
</div>
<div class="download-box">
<img src="img/logo-gitlab.svg">
<div>
<b>Source Code</b><br>
<a href="https://gitlab.com/parallel-launcher/parallel-launcher">View on GitLab</a><br>
<a href="https://gitlab.com/parallel-launcher/parallel-launcher/-/boards/2128467">View Bug/Feature Tracker</a>
</div>
</div>
</div>
<div id="screenshot">
<img src="img/screenshot.png">
</div>
</div>
<div style="font-size: 0.8em;">
<sup>1</sup> Also supports RedHat, Mageia, OpenMandriva, and OpenEuler<br/>
<sup>2</sup> While Parallel Launcher itself is x86, if you are on an ARM machine, the ARM version of the emulator core will be loaded.
</div>
<div id="mobile-only">
<br>
<a id="screenshot-toggle">Click to Show Screenshot</a>
<img id="mobile-screenshot" hidden src="img/screenshot.png">
</div>
<h3>But why?</h3>
<p>The ParallelN64 core for RetroArch has a number of advantages over other emulators: it's faster and more accurate than Project64, it comes with all graphics plugins built in so you don't need to manually install and update them, and it runs on Windows, Linux, and Mac. However, as a RetroArch core, it also has some downsides: setting up controllers in RetroArch is needlessly confusing and difficult, you need to change the default settings for the best experience, and it doesn't have a great way to manage your library of games.</p>
<p>Parallel Launcher aims to fix all of these problems, so you can get the best of Nintendo 64 emulation without all the hastle. Parallel Launcher features a very straight-forward controller setup, shows you the important options with good defaults enabled by default, and has a simple game library interface that allows you to categorize your games and track your play time.</p>
<p>Parallel Launcher also features optional integration with <a href="https://romhacking.com/">romhacking.com</a>. With this integration, you can download hacks from your playlists (with the recommended graphics plugin and other settings set automatically for you), as well as rate hacks and manage your playlists from within the app. It also features a built-in star display for SM64 hacks to track your progress in each hack.</p>
</div>
</div>
<script type="application/javascript">
const ssToggle = document.getElementById( 'screenshot-toggle' );
ssToggle.onclick = function() {
const image = document.getElementById( 'mobile-screenshot' );
if( image.hidden ) {
ssToggle.textContent = "Click to Hide Screenshot";
image.hidden = false;
} else {
ssToggle.textContent = "Click to Show Screenshot";
image.hidden = true;
}
};
</script>
</body>
</html>

976
public/latest/changelog.htm Normal file
View File

@@ -0,0 +1,976 @@
<!DOCTYPE html>
<html>
<head>
<style>
ul {
margin-top: 0;
margin-bottom: 0.5em;
}
</style>
</head>
<body>
<p><b>v8.3.0</b></p>
<ul>
<li>Parallel Launcher now supports cloud saves when RHDC integration is enabled. This feature can be turned on and off in settings</li>
<li>Users running the 32-bit version of Parallel Launcher on a 64-bit Windows machine will now be prompted to switch to the 64-bit version. If the 32-bit version of RetroArch or ParallelN64 is found while running the 64-bit version of Parallel Launcher, the correct 64-bit version will be downloaded to replace it.</li>
<li>If a Japanese character is encountered in the IS Viewer window, the font will now automatically switch to another monospace font that better handles JP characters</li>
<li>Fixed a bug where the IS Viewer window would open at the wrong size on machines using desktop UI scaling</li>
<li>Fixed the Japanese translations using a fallback bitmap font instead of the intended smooth font on Windows</li>
<li>Fixed an oversight that could cause the basic save editor to appear for vanilla SM64 instead of the more comprehensive SM64 save file editor when RHDC integration is enabled</li>
<li>Fixed the SM64 save editor corrupting vanilla SM64 save files</li>
</ul>
<p><b>v8.2.1</b></p>
<ul>
<li>Fixed a regression from v8.0.0 that broke some libpl integrations</li>
<li>Fixed the IS Viewer window not properly alternating background colours once the max history size is reached</li>
<li>Fixed the IS Viewer history size in settings showing "1050" instead of "Unlimited" when set to unlimited</li>
</ul>
<p><b>v8.2.0</b></p>
<ul>
<li>Fixed an issue that caused save files using SRAM or FlashRAM to not be portable across devices with different CPU endianness</li>
<li>The IS Viewer now correctly only displays new lines when the rom explicitly sends a line feed character (instead of automatically inserting a new line after every message)</li>
<li>The IS Viewer now correctly decodes text from retail roms from EUC-JP instead of assuming UTF-8, fixing mojibake when playing the OOT Master Quest debug rom. The character encoding can be changed in settings.</li>
<li>The IS Viewer window now remembers its size</li>
<li>IS Viewer messages are now printed to standard output on Linux and Mac even if the IS Viewer window is disabled (NOTE: output is not converted from EUC-JP to UTF-8 if the IS Viewer window is not enabled)</li>
</ul>
<p><b>v8.1.0</b></p>
<ul>
<li>Added a setting to control the RetroArch logging level</li>
<li>Improved RetroArch crash detection</li>
<li>Fixed a bug where the selected SD card was being set back to None after playing a ROM</li>
<li>Fixed some rom settings getting cut off if the window is made too small</li>
</ul>
<p><b>v8.0.1</b></p>
<ul>
<li>Fixed a database migration error that resulted in a crash on startup if a previous version of Parallel Launcher hasn't been run before</li>
</ul>
<p><b>v8.0.0</b></p>
<ul>
<li>Removed the the deprecated Mupen64plus-next emulator core</li>
<li>Redesigned the ROM settings UI to be more compact</li>
<li>Fixed the Flatpak version not checking for core updates consistently</li>
<li>Fixed various actions that open your file browser not working correctly when Nautilus is your default file browser</li>
<li>Fixed RetroArch screenshots being placed in unexpected locations</li>
</ul>
<p><b>v7.12.0</b></p>
<ul>
<li>The MacOS version of Parallel Launcher now supports SDL2 as a controller input driver</li>
<li>Large rom support in the ParallelN64 core is now only enabled when launching a rom larger than 64 MiB (fixes saves not loading correctly in Paper Mario)</li>
<li>Fixed an issue where the error toast message on a failed patch would not appear when launching Parallel Launcher via the Play Now button</li>
</ul>
<p><b>v7.11.0</b></p>
<ul>
<li>Updated RetroArch to version 1.20.0</li>
<li>When enabling RHDC integration, the initial state of the 'Prefer HLE Plugins' checkbox is set based on whether your system appears to support ParaLLEl or not.</li>
<li>The Mupen64Plus-Next core is now deprecated. You can continue to use it for now, but it will be removed in a future update.</li>
</ul>
<p><b>v7.10.1</b></p>
<ul>
<li>Fixed a bug with the libpl emulator extension that caused it to fail to correctly fetch RHDC avatars when using the RGBA5551 format</li>
<li>Fixed a bug with the libpl emulator extension that caused it to incorrectly return a rate limit status sometimes</li>
</ul>
<p><b>v7.10.0</b></p>
<ul>
<li>Parallel Launcher now always downloads only pre-approved versions of RetroArch instead of the latest version (fixes recent issues with failing to install RetroArch)</li>
<li>Fixed a bug with the libpl emulator extension that caused it to fail when fetching an RHDC user avatar that isn't a square image</li>
</ul>
<p><b>v7.9.1 (Windows Only)</b></p>
<ul>
<li>Fixed a bug in the Windows crash handler that would cause the application to lock up and generate an extremely large crash log file.</li>
</ul>
<p><b>v7.9.0</b></p>
<ul>
<li>The Overclock VI option no longer requires <i>Show advanced ROM options</i> to be enabled to see it.</li>
<li>The Overclock VI option now has a much larger effect. It is not recommended for use with retail roms, but it is very useful for certain romhacks.</li>
</ul>
<p><b>v7.8.0</b></p>
<ul>
<li>Added Japanese translations (thanks to Rulu for the translations)</li>
<li>Fixed RetroArch failing to be unzipped on certain RPM based Linux distros</li>
<li>Fixed RetroArch not updating to versions newer than 1.17.0</li>
<li>Fixed star icons being cut off in certain star layouts</li>
</ul>
<p><b>v7.7.0</b></p>
<ul>
<li>Enabled error logging in RetroArch</li>
<li>When RetroArch crashes shortly after starting, the error logs can now be viewed in the error dialog</li>
<li>Worked around a Windows bug that prevented SD card mounting from working if file compression is enabled</li>
<li>Fixed the incorrect error code being logged when an SD card fails to mount on Windows</li>
</ul>
<p><b>v7.6.0</b></p>
<ul>
<li>Added a x9 option for window scale</li>
<li>Fixed the application icon not showing up on Linux when using Wayland</li>
<li>Fixed the Open Containing Folder option not working on Windows if the rom path contains non-ASCII characters</li>
<li>Fixed a rare application freeze on Windows if IS Viewer or Parallel Launcher integration fails to connect to the emulator in a specific way</li>
<li>Updated the minimum allowed version of the ParallelN64 core to ensure you have the latest security updates</li>
</ul>
<p><b>v7.5.3</b></p>
<ul>
<li>Fixed a crash on Windows when trying to automatically import a PJ64 save file if the internal rom name is neither valid Shift-JIS nor valid UTF-8</li>
<li>Improved parsing of internal rom names to ensure that the parsed result is always a valid UTF-8 string even if the internal rom name is not correctly encoded</li>
</ul>
<p><b>v7.5.2</b></p>
<ul>
<li>Fixed a major regression that prevented RHDC hacks with star layouts from being downloaded in Parallel Launcher</li>
</ul>
<p><b>v7.5.1</b></p>
<ul>
<li>Fixed issues loading roms with non-ASCII characters in their filename on Windows</li>
<li>Fixed inability to import PJ64 save files on Windows if the internal rom name contains Japanese characters</li>
<li>Parallel Launcher now checks for star layout updates when launching a rom using the Play Now button on the RHDC website</li>
<li>Resetting your RetroArch config in Parallel Launcher settings will now also purge the shader cache</li>
<li>Fixed audio crackling on some systems when playing on a monitor with a refresh rate higher than 60Hz</li>
<li>Fixed a crash if the stored RHDC credentials somehow become corrupted</li>
</ul>
<p><b>v7.5.0</b></p>
<ul>
<li>Added two more sorting methods to the RHDC view:<ul>
<li><b>Fixed Shuffle</b> sorts the hacks in an arbitrary but consistent order</li>
<li><b>Random Shuffle</b> sorts the hacks in a new random order every time the list is refreshed</li>
</ul></li>
<li>Fixed a crash when launching roms or going to controller configuration if the SDL driver helper is missing</li>
<li>Fixed an oversight where Parallel Launcher would always disable video shaders on startup</li>
<li>Fixed default controller profile for the Gamecube having incorrect mappings on SDL</li>
<li>Fixed the star layout tester and save file editor not being resizable</li>
</ul>
<p><b>v7.4.0</b></p>
<ul>
<li>Added a "secret" debugging feature: pressing F8 will now open a dialog showing previous crash logs (only crashes from this version onwards are logged)</li>
<li>Fixed a bug where OGRE and GLideN64 with framebuffer emulation disabled would not work correctly on certain GPUs</li>
</ul>
<p><b>v7.3.0</b></p>
<ul>
<li>Updated RHDC hack rating from Parallel Launcher to reflect the new Romhacking.com rating system</li>
<li>Updated RHDC integration to use the latest APIs</li>
<li>Improved performance of OGRE and GLideN64 cores when not using framebuffer emulation</li>
</ul>
<p><b>v7.2.0</b></p>
<ul>
<li>Disabled anti-aliasing in the GLideN64 plugin by default due to graphical bugs that appear when it is enabled.<ul>
<li>You can re-enable GLideN64 anti-aliasing in your Parallel Launcher settings if you want to</li>
</ul></li>
<li>Updated the SDL2 input driver on Windows (v2.0.10 &rightarrow; v2.30.0)</li>
<li>Updated French translations</li>
<li>Fixed an issue where old crash reports would be repeatedly sent on startup if Parallel Launcher crashed while being run with elevated permissions<ul>
<li>Users should not run Parallel Launcher as Administrator. This is not necessary and may cause permission errors when run normally later.</li>
</ul></li>
</ul>
<p><b>v7.1.0</b></p>
<ul>
<li>Added an LLE RSP option to the GLideN64 plugin. This allows homebrew/romhacks with custom microcode to be run on GLideN64 instead of just ParaLLEl and Angrylion; however, due to inaccuracies with GLideN64 when using this option, ParaLLEl is still recommended for these hacks.</li>
</ul>
<p><b>v7.0.0</b></p>
<ul>
<li>The non-flatpak Linux version of Parallel Launcher no longer uses a Flatpak installation to install and update an isolated RetroArch installation. Instead, it now simply uses a RetroArch appimage.</li>
<li>Fixed a bug where the Windows and Flatpak versions of Parallel Launcher could sometimes assign the wrong controller to RetroArch when multiple controllers are connected</li>
<li>Fixed a rare crash on Windows when refreshing your rom list under certain conditions</li>
</ul>
<p><b>v6.22.6</b></p>
<ul>
<li>When using the Angrylion RDP (graphics) plugin, the RSP is now emulated with parallel-rsp instead of cxd4<ul>
<li>parallel-rsp has also been updated; f3dex3 is now emulated correctly when using ParaLLEl or Angrylion</li>
</ul></li>
<li>Fixed a bug where the "(recommended by hack author)" text would not show up beside GLideN64 for RHDC hacks that recommend that plugin</li>
</ul>
<p><b>v6.22.5</b></p>
<ul>
<li>Fixed a rare crash when downloading a hack from RHDC</li>
<li>Fixed the MacOS version using a debug build in the 6.22.3 release<ul>
<li>Also fixes the above crash happening consistently on MacOS</li>
</ul></li>
</ul>
<p><b>v6.22.4 (Windows only)</b></p>
<ul>
<li>Moved the SD card mounting feature out of the core Parallel Launcher install and into a downloadable extension because poorly designed virus scanners were flagging anything using the Windows virtual disk APIs as potentially dangerous. Parallel Launcher should no longer trigger false positives on some virus scanners. The extension will automatically be downloaded if and when you mount an SD card for the first time.</li>
</ul>
<p><b>v6.22.3</b></p>
<ul>
<li>Fixed a bug that prevented hacks being downloaded from RHDC if their filename contained certain characters</li>
<li>Fixed a bug where hack versions that were deleted from RHDC could still show up but could not be downloaded</li>
</ul>
<p><b>v6.22.2 (Windows only)</b></p>
<ul>
<li>Changed some compilation flags. Some Windows virus scanners that were reporting false positives on the previous 64-bit version no longer incorrectly flag this version as potentially malicious.</li>
</ul>
<p><b>v6.22.1 (Windows only hotfix)</b></p>
<ul>
<li>Fixed a freeze when attempting to browse files on an SD card on Windows</li>
</ul>
<p><b>v6.22.0</b></p>
<ul>
<li>Added an option to browse and edit files on virtual SD cards<ul>
<li>NOTE: Due to Windows OS limitations, mounting the SD card will require an admin prompt on the Windows version</li>
</ul></li>
<li>Added an option to clone virtual SD cards</li>
<li>Fixed SM64 save file editing, star layouts, and star progress not working correctly on romhacking that use SRAM or FlashRAM</li>
<li>Fixed play time not always syncing correctly between different versions of the same RHDC hack</li>
<li>Fixed an issue that could result in save files appearing to be lost due to RetroArch putting save files in an unexpected place</li>
<li>Fixed a bug where SD cards could not be imported if no other SD cards existed yet</li>
<li>Fixed a bug where hacks supporting N64 mouse input would not be detected as such if they were first discovered by Parallel Launcher in a version earlier than 6.2.0</li>
<li>Enabled bilinear filtering when playing in fullscreen or using stretched widescreen</li>
<li>Added an emulator extension to allow romhacks to create or request an SD card</li>
</ul>
<p><b>v6.21.0</b></p>
<ul>
<li>You can now set the analog to digital button press threshold on your controller profiles, allowing you to change how far down you need to press a trigger or how far you need to move a control stick for it to be considered a button press</li>
<li>Changed the default value for the aforementioned threshold from 50% to 70%</li>
<li>When playing a romhacks that supports the N64 mouse peripheral, the mouse cursor is now automatically captured by default</li>
<li>Fixed a bug that caused the main Parallel Launcher window to not size itself correctly</li>
</ul>
<p><b>v6.20.2 (Windows only hotfix)</b></p>
<ul>
<li>RetroArch version is no longer locked to 1.12.0 (mouse bug has been fixed in the emulator core)</li>
</ul>
<p><b>v6.20.1 (Windows only hotfix)</b></p>
<ul>
<li>Fixed mouse button clicks not working for N64 mouse emulation on the Windows version</li>
<li>Locked the RetroArch version to 1.12.0 on Windows</li>
</ul>
<p><b>v6.20.0</b></p>
<ul>
<li>Added an emulator extension that allows roms to display your username and avatar when romhacking.com integration is enabled</li>
<li>Fixed a bug where internal rom names containing a dakuten or handakuten are not decoded correctly</li>
</ul>
<p><b>v6.19.0</b></p>
<ul>
<li>Added the ability to import SD cards from ISO files</li>
<li>You can now set the time on the N64 realtime clock, and optionally have it roll back the clock when loading a savestate. (Settings -> System Clock)</li>
<li>When using Open Containing Folder, the rom file will now be selected in the opened file browser</li>
<li>Added a Show Save File option to the context menu for roms which opens the save directory in your file browser and selects the save file</li>
<li>Added a Data Directories submenu to the ≡ main menu where you can open your save directory among other things</li>
<li>You will no longer be fully signed out of romhacking.com integration if you open Parallel Launcher with no internet connection</li>
<li>Fixed a crash if the rom list updates after right clicking on a rom but before clicking an option on the opened context menu</li>
</ul>
<p><b>v6.18.2</b></p>
<ul>
<li>Fixed SD cards larger than 2 GiB not showing</li>
<li>Fixed a crash when creating an SD card with no filesystem</li>
<li>Fixed some windows and dialogs being smaller than intended on high DPI displays</li>
</ul>
<p><b>v6.18.1</b></p>
<ul>
<li>Fixed a bug that would cause you to be signed out of RHDC integration when launching Parallel Launcher from the Play Now button on the RHDC website</li>
<li>Updated Québécois French translations</li>
<li>Added missing Portuguese translations</li>
</ul>
<p><b>v6.18.0</b></p>
<ul>
<li>Added support for emulating the SD card interface on the SummerCart64 flash cart (thanks to devwizard for implementing this in the ParallelN64 emulator core)</li>
<li>Fixed a semi-rare bug in the RHDC integration that could cause you to suddenly be signed out of your RHDC account</li>
<li>Fixed a very rare crash that can happen when refreshing your list of ROMs or starting the program</li>
</ul>
<p><b>v6.17.0</b></p>
<ul>
<li>Added a search bar to both the classic and RHDC views</li>
<li>Added IS Viewer support to help in developing romhacks or homebrew. It can be enabled under the new Developer section of the Settings dialog.</li>
<li>Fixed a bug where new thumbnails failed to load in the RHDC view</li>
</ul>
<p><b>v6.16.1</b></p>
<ul>
<li>Fixed a bug that would cause users to be signed out of RHDC integration after about a week</li>
</ul>
<p><b>v6.16.0</b></p>
<ul>
<li>Added Portuguese translations (thanks to Lila)</li>
<li>RHDC integration: support accounts with multi-factor authentication</li>
</ul>
<p><b>v6.15.2</b></p>
<ul>
<li>Properly handle archived hack versions in the RHDC integration</li>
<li>Updated Qt to 5.15 in the Windows bundle</li>
</ul>
<p><b>v6.15.1</b></p>
<ul>
<li>Fixed star layouts failing to download for RHDC hacks</li>
</ul>
<p><b>v6.15.0</b></p>
<ul>
<li>Updating Romhacking.com iconography</li>
<li>Update to latest Romhacking.com API</li>
<li>Fixed blurriness on MacOS when using a high DPI display</li>
</ul>
<p><b>v6.14.1</b></p>
<ul>
<li>Fixed a bug where the star display window could be larger than the desktop, making some content offscreen and inaccessible.</li>
</ul>
<p><b>v6.14.0 (MacOS Only)</b></p>
<ul>
<li>When playing on an ARM machine (Apple Silicon), the native ARM version of the ParallelN64 emulator core will now be used instead of needing to emulate the emulator. This should result in significant performance gains for ARM machines, bringing them up to par with x86.<br/>If you encounter any issues with the ARM core, you can revert to using the x86 core by going to the Emulation page of your Parallel Launcher settings and checking the <b>Use x86 emulator core (Not Recommended)</b> checkbox.<br/>Please report any bugs with the new ARM build on the Parallel Launcher GitLab page or by e-mail.</li>
</ul>
<p><b>v6.13.0</b></p>
<ul>
<li>When playing a hack in fullscreen with Widescreen (Viewport Hack) on, an aspect ratio of 16:10 will now be used instead of 16:9 if that more closely matches the aspect ratio of your monitor.</li>
<li>Similarly, the SteamDeck version will no longer use a 16:10 aspect ratio if it is connected to an external display with a different aspect ratio.</li>
<li>Fixed a bug where the Tab key could not be bound to a hotkey or virtual controller input</li>
<li>Updated the RetroArch build in the Flatpak version of Parallel Launcher</li>
</ul>
<p><b>v6.12.3</b></p>
<ul>
<li>Fixed a bug where removing the last group in the Manage Groups dialog and then clicking on Delete or Rename would result in a crash</li>
<li>Fixed a potential crash when updating emulator cores under certain conditions</li>
<li>Fixed a potential rare crash when the sqlite database is busy</li>
<li>Updated the sqlite library in the Windows version</li>
<li>Include debug symbols in the Linux and Mac versions so that crash logs can include a backtrace</li>
</ul>
<p><b>v6.12.2</b></p>
<ul>
<li>Reverted the previous vsync change in the Windows version as it was causing issues for a few Windows users</li>
</ul>
<p><b>v6.12.1</b></p>
<ul>
<li>Vsync is now enabled by default. This should improve performance without causing any input lag, but if you notice any issues you can turn it back off in the Emulation tab of the Settings dialog</li>
</ul>
<p><b>v6.12.0</b></p>
<ul>
<li>The ParaLLEl plugin is now supported on MacOS (if your hardware supports it)</li>
<li>Updates specific to the MacOS version of Parallel Launcher will no longer require the Windows version to be updated, and vice versa</li>
</ul>
<p><b>v6.11.1</b></p>
<ul>
<li>Fixed OGRE modifications being applied when using the GLideN64 plugin.</li>
</ul>
<p><b>v6.11.0</b></p>
<ul>
<li>Changed the default audio driver on Windows to DirectSound because XAudio2 was causing emulation to run muted at uncapped speed for a small percentage of Windows users.</li>
<li>The audio driver can now be set in Parallel Launcher settings under the Emulation tab in the Windows version.</li>
</ul>
<p><b>v6.10.0</b></p>
<ul>
<li>Changed the controller selection dialog when starting a singleplayer game with multiple controllers detected. You now only need to press any button on the controller you wish to use instead of having to select it from a list.</li>
<li>Added a metainfo file to the Linux packages for better integration with GUI package managers</li>
<li>Fixed a crash on the controller setup dialog when rapidly connecting and disconnecting a controller while using the JoyDev driver.</li>
</ul>
<p><b>v6.9.4</b></p>
<ul>
<li>Fixed misaligned icon and text for hack difficulty in the RHDC view</li>
<li>Fixed the window sometimes resizing itself vertically even when it doesn't actually need any more space</li>
<li>Fixed the plugin selection widget not resizing itself correctly when changing emulators</li>
<li>Fixed Québécois French not showing up the language selection</li>
<li>Fixed missing Arabic translations in the Debian package</li>
</ul>
<p><b>v6.9.3</b></p>
<ul>
<li>Fixed crashes that can occur when multiple instances of Parallel Launcher are open at the same time</li>
<li>Fixed a crash when loading roms if the OS returns an error code when fetching the size of a rom file</li>
<li>Fixed a crash when clicking on the New/Edit Profile button in the controller select dialog if you somehow manage to have no controller profile selected</li>
<li>Fixed a bug where your selected controller profile for an input device could be reset when changing input drivers</li>
</ul>
<p><b>v6.9.2</b></p>
<ul>
<li>Fixed a crash that can occur when changing the controller input driver</li>
<li>Fixed long author lists causing the RHDC view window to expand very wide</li>
<li>Fixed the crash reporter not giving useful stack traces on Linux</li>
</ul>
<p><b>v6.9.1</b></p>
<ul>
<li>Fixed a crash when changing the RHDC download folder if the previous download location no longer exists</li>
<li>Fixed incorrect icon scaling for high DPI screens on MacOS</li>
<li>Fixed a missing maximize button on the ROM Sources window on Windows</li>
<li>Fixed an issue where the Windows installer would attempt to reinstall already installed fonts and would sometimes fail</li>
<li>[Telemetry] Fixed Windows 11 reporting itself as Windows 10</li>
<li>[Telemetry] Fixed the OS name and version not being reported correctly in the Flatpak version</li>
</ul>
<p><b>v6.9.0</b></p>
<ul>
<li>Added Arabic translations (thanks to <b>Elazul</b> for the translations)</li>
<li>Fixed missing translations for the input select dropdown</li>
<li>Fixed input binding not working on some newer Linux distros when using the SDL2 driver</li>
</ul>
<p><b>v6.8.0</b></p>
<ul>
<li>Parallel Launcher now submits crash reports and basic telemetry data (no kind of personal information is ever sent)</li>
</ul>
<p><b>v6.7.0</b></p>
<ul>
<li>Save files can now be shared between different versions of the same RHDC hack. (Requires Romhacking.com integration to be enabled)</li>
<li>Hacks can now be sorted by star count in the RHDC view</li>
<li>Fixed a bug in the classic view where a group that was collapsed would expand itself again after a refresh if the currently selected rom is in the group</li>
</ul>
<p><b>v6.6.3</b></p>
<ul>
<li>Fixed a crash when launching Parallel Launcher by clicking on a rom file that hasn't yet been seen by Parallel Launcher and isn't from RHDC</li>
<li>Fixed dialog windows missing a maximize button on Windows</li>
</ul>
<p><b>v6.6.2</b></p>
<ul>
<li>Fixed the Now Playing window always appearing in the top left corner (except on Windows which would otherwise lay out the windows terribly)</li>
<li>Fixed the Now Playing window having its title bar offscreen on Windows</li>
</ul>
<p><b>v6.6.1 (Windows Only Release)</b></p>
<ul>
<li>Reverted to launching RetroArch with normal priority on Windows</li>
</ul>
<p><b>v6.6.0 (Flatpak Only Release)</b></p>
<ul>
<li>The <b>Widescreen (Viewport Hack)</b> option will now use 16:10 widescreen on the Steam Deck instead of 16:9, so it now fills the entire screen.</li>
</ul>
<p><b>v6.5.0</b></p>
<ul>
<li>Parallel Launcher will now always check romhacking.com for graphics plugin recommendations when finding new roms, even if RHDC Integration is disabled.</li>
<li>Disabled integer scaling for the ParaLLEl plugin. It will now always scale to fill the window.</li>
<li>Fixed the RHDC icon being tiny on high DPI displays</li>
<li>RetroArch is now launched with a higher process priority on the Windows version</li>
</ul>
<p><b>v6.4.2</b></p>
<ul>
<li>Fixed the GoldenEye input mode mapping the triggers incorrectly</li>
<li>Fixed icon-only buttons being too small on high dpi monitors</li>
<li>Removed the warning when starting Parallel Launcher in gaming mode on the Steam Deck</li>
</ul>
<p><b>v6.4.1</b></p>
<ul>
<li>Fixed a bug where opening a .bps patch from an external file browser would create a corrupted rom entry in the Parallel Launcher classic view</li>
<li>Removed the <i>Automatically Added</i> category. Roms added by launching them from a file browser now just go into Uncategorized</li>
<li>Fixed a bug where the controller deadzone and sensitivity settings were not being applied for users whose locale settings use a comma instead of a period for the decimal separator.</li>
<li>Slightly changed the buttons in the controller selection and setup dialogs to be less confusing when creating a new profile from a default.</li>
</ul>
<p><b>v6.4.0</b></p>
<ul>
<li>Added an setting to start the emulator in fullscreen mode</li>
<li>Tweaked various things when playing on Steam Deck for a better user experience</li>
<li>Changed the layout of the RHDC view to be more horizontal</li>
<li>Enable Discord integration by default in the Flatpak version</li>
<li>Renamed the ParallelN64 core file to ensure RetroArch will never overwrite it</li>
<li>The Parallel Launcher window now has two separate sizes that it saves separately for the classic and RHDC views</li>
<li>Fixed a bug where the RHDC view would not remember your last selected ROM on startup</li>
<li>Fixed graphical bugs in the RHDC view when horizontally resizing the window</li>
<li>Fixed the last few controller mappings going to the wrong inputs when using Quick Configure</li>
</ul>
<p><b>v6.2.1 (Windows and Mac only)</b></p>
<ul>
<li>Fixed a crash on startup on Windows and MacOS if the UI theme saved in the settings file is no longer installed</li>
</ul>
<p><b>v6.2.0</b></p>
<ul>
<li>Added support for emulated gamecube controllers (thanks to Wiseguy for implementing this in the ParallelN64 core)</li>
<li>Added N64 mouse support</li>
<li>Fixed incorrect text for save slots in the SM64 save file editor</li>
</ul>
<p><b>v6.1.1</b></p>
<ul>
<li>Fixed the <i>Remove Black Borders</i> option showing up everywhere when it should only be visible for the ParaLLEl plugin on ParallelN64</li>
<li>The Now Playing window now makes the star display scrollable so the window can be made smaller and will not be larger than the screen</li>
<li>Fixed the display of rom internal names containing dakuten and/or handakuten</li>
<li>Added an information bubble guiding the user to the RHDC view after RHDC integration is enabled</li>
<li>Removed the windowsvista style from the Windows themes because it does not get styled correctly</li>
<li>Removed the macintosh style from the MacOS themes because it does not get styled correctly</li>
</ul>
<p><b>v6.1.0</b></p>
<ul>
<li>Added a Dark Mode option to Windows and Mac</li>
<li>Added missing French and German translations</li>
<li>Updated ParallelN64 core<ul>
<li>Added an option to remove the black borders on the sides when using the ParaLLEl plugin</li>
<li>Fixed a bug where the GLideN64 plugin would stop working for some Windows users when going fullscreen or disabling RetroArch notifications (thanks to aglab2 for this fix)</li>
<li>Fixed incorrect rendering of PAL roms in GLideN64 when framebuffer emulation is enabled</li>
</ul></li>
</ul>
<p><b>v6.0.0</b></p>
<ul>
<li>Parallel Launcher now uses a custom build of the ParallelN64 core<ul>
<li>Fixed inaccuracies with the Taz Express ROM</li>
<li>The EverDrive ROM header will now be respected for determining the save type of romhacks</li>
<li>The GLideN64 plugin is now supported on ParallelN64, and some rendering bugs have been fixed. (Huge thanks to aglab2 for bringing this plugin to ParallelN64)</li>
<li>A new graphics plugin has been added: OGRE (<b>O</b>ffshoot <b>G</b>LideN64: <b>R</b>omhack <b>E</b>dition). This plugin is a modification (by aglab2) of the GLideN64 plugin that is designed to be compatible with older romhacks that don't work in the mainline version of GLideN64. This plugin should replace Glide64 and Rice in 95% of use cases.</li>
</ul></li>
<li>Added a setting to show advanced rom options<ul>
<li>The Overclock VI option is now an advanced option</li>
<li>Added an option to force the use of 16kB EEPROM save data</li>
<li>Added an option to use an interpreter core instead of the dynamic recompiler</li>
</ul></li>
<li>Disabled the ParaLLEl graphics plugin on MacOS (it never actually worked before and instead just loaded the Glide64 plugin when selected)</li>
<li>The main window now has a smaller minimum size when in the classic view</li>
<li>Fixed the Now Playing window sometimes being bigger than it should be</li>
<li>Separated the French translations into Standard French and Québécois French (thanks to Naeso for the Standard French translations)</li>
</ul>
<p><b>v5.12.1</b></p>
<ul>
<li>Fixed rhdc:// links not always download the correct version of the hack</li>
</ul>
<p><b>v5.12.0</b></p>
<ul>
<li>Improved the advanced star layout format to support groups on the top and/or bottom that span both the left and right columns</li>
<li>Fixed star layouts not showing up when testing a star layout for a hack that is not yet on romhacking.com</li>
<li>Fixed star icons being cut off in the star layout tester window</li>
<li>Fixed vertical misalignments in the star layout displays</li>
<li>Fixed missing monospace font on Windows and Mac</li>
</ul>
<p><b>v5.11.0</b></p>
<ul>
<li>Added a joydev input driver to the Linux version</li>
<li>Added a default SDL profile for Switch Pro controllers</li>
<li>Fixed a bug with the star layout editor window suddenly growing unusably large on the Windows version because reasons</li>
</ul>
<p><b>v5.10.3</b></p>
<ul>
<li>Fixed controller names not being detected in the SDL driver on Windows</li>
<li>Fixed rhdc:// links not launching on MacOS if Parallel Launcher is already open</li>
</ul>
<p><b>v5.10.2</b></p>
<ul>
<li>Fixed play time and progress not being submitted to romhacking.com when
launching Parallel Launcher via an rhdc:// link</li>
<li>Fixed core info files being redownloaded more often than they need to be</li>
<li>Fixed the internal resolution being lower than it should be when using
widescreen on the Mupen64plus-Next core</li>
<li>Fixed the SDL input driver not working on the Windows version</li>
<li>Fixed the MacOS version not being able to launch rhdc:// links</li>
</ul>
<p><b>v5.10.1</b></p>
<ul>
<li>Fixed some rhdc:// links not launching correctly</li>
<li>Don't show the content loaded RetroArch notification</li>
<li>Fixed savestates not working on RetroArch 1.10.1 on Linux</li>
</ul>
<p><b>v5.10.0</b></p>
<ul>
<li>Changed the 'Reload ROM' button text to 'Hard Reset' and made the button always visible</li>
<li>Added an option to hide RetroArch notifications</li>
<li>Added an 'Add Single ROM' action to the ≡ menu that allows for a rom or patch to be quickly added without going through the ROM Sources dialog</li>
<li>Added a URL scheme handler that will allow for Parallel Launcher to be launched directly from romhacking.com (coming soon)</li>
<li>Fixed savestates not working on RetroArch 1.10.1</li>
<li>Fixed controller setup not working on Arch Linux if Parallel Launcher was installed via the AUR repo</li>
</ul>
<p><b>v5.9.2 (Windows only)</b></p>
<ul>
<li>Fixed an error when attempting to install or update an emulator core on Windows if your Windows username contains non-ASCII characters</li>
</ul>
<p><b>v5.9.1 (Windows and Mac only)</b></p>
<ul>
<li>Fixed RHDC romhacks failing to patch on Windows if the vanilla SM64 rom is located on an external drive</li>
<li>Fixed the font on Windows and Mac to be consistent with the Linux version</li>
<li>Fixed misaligned text in star layouts on the Windows version</li>
<li>Fixed the font size on the MacOS version</li>
<li>Fixed the font colour on selected hacks in the RHDC view on MacOS</li>
<li>Fixed missing icons on dialog buttons in the MacOS version</li>
<li>Made the MacOS version themeable and set the default theme to Fusion</li>
</ul>
<p><b>v5.9.0</b></p>
<ul>
<li>Added an option to use DirectInput8 as the controller input driver on Windows. If you have a controller that was not working correctly before, try switching to the DirectInput8 driver.</li>
<li>Fixed SVG images in star layouts not loading on MacOS</li>
<li>Ensure that the temporary directory is always cleared on shutdown on Linux</li>
<li>Corrected some German and Italian translations</li>
</ul>
<p><b>v5.8.0</b></p>
<ul>
<li>Added an option in settings that, when enabled, will add a Reload ROM button to the Now Playing window, allowing romhack creators to quickly reload their changes.</li>
<li>Fixed keyboard controls not being mapped correctly</li>
</ul>
<p><b>v5.7.2</b></p>
<ul>
<li>Fixed crash when unselecting a ROM or when launching the program without a rom having been previously selected</li>
</ul>
<p><b>v5.7.1</b></p>
<ul>
<li>The plugin previously listed as "GLideN64 [Old]" is actually gln64, the predecessor to GLideN64. This name has been corrected.</li>
<li>Altered controller binding method to allow opposite C buttons to be pressed at the same time</li>
<li>Fixed Gamecube controller mapping on Linux</li>
<li>The SDL library used by RetroArch no longer needs to be replaced on Linux</li>
</ul>
<p><b>v5.7.0</b></p>
<ul>
<li>Added a Widescreen (Viewport Hack) option when using GLideN64</li>
<li>Fixed a bug where the emulator could launch with a larger window size than it should</li>
<li>For RHDC hacks with a recommended plugin, show which plugin was recommended by the hack uploader</li>
<li>Added British English localization</li>
</ul>
<p><b>v5.6.4</b></p>
<ul>
<li>Fixed some toast messages not being displayed when they should</li>
<li>Fixed some issues handling ROMs that have a non-ASCII character in their file path on Windows</li>
<li>Fixed the application freezing when attempting to install the ParallelN64 core on MacOS</li>
</ul>
<p><b>v5.6.3</b></p>
<ul>
<li>Changed how the Now Playing / Star Display window is managed to make it behave better in screen capturing software such as OBS</li>
</ul>
<p><b>v5.6.2</b></p>
<ul>
<li>Locks the ParallelN64 emulator core to a specific version on MacOS, as newer builds are broken on this operating system. On MacOS, you will receive a prompt to update ParallelN64 regardless of your current update settings and should accept it. Other operating systems are not affected and will continue to update as usual.</li>
</ul>
<p><b>v5.6.1</b></p>
<ul>
<li>Changed the default star layout to have generic course names</li>
<li>Improved detection of MOP2 patch for plugin recommendations</li>
<li>Fixed one incorrect warning text in the Spanish translation</li>
<li>Fixed minor inconsistency in Spanish and German translations</li>
</ul>
<p><b>v5.6.0</b></p>
<ul>
<li>Added an option to display a default star layout for RHDC hacks if none is provided by the hack author. This is enabled by default, but can be disabled in the romhacking.com options if you prefer.</li>
</ul>
<p><b>v5.5.3</b></p>
<ul>
<li>Fixed a crash on startup when following a hack on RHDC that has no authors</li>
<li>Search in more places for Project64 save files</li>
</ul>
<p><b>v5.5.2</b></p>
<ul>
<li>Fixed a bug where downloading an RHDC hack from the classic view would install the oldest version instead of the latest version of the hack</li>
<li>Fixed a bug where the RHDC view would default to the oldest version of a hack instead of the latest version</li>
<li>Fixed warning text being unreadable on dark themes</li>
</ul>
<p><b>v5.5.1</b></p>
<ul>
<li>Fixed a bug where removing a hack from a list on the romhacking.com site then starting Parallel Launcher would re-add the hack to the list instead of removing it from the group in Parallel Launcher</li>
<li>Parallel Launcher will no longer automatically submit star progress for kaizo hacks that require video proof.</li>
</ul>
<p><b>v5.5.0</b></p>
<ul>
<li>Updated RHDC integration to use a newer more efficient API.</li>
</ul>
<p><b>v5.4.4</b></p>
<ul>
<li>Fixed a bug in the conversion of the legacy star layout format that would cause star layouts to not work for some hacks.</li>
</ul>
<p><b>v5.4.3</b></p>
<ul>
<li>Force both Parallel Launcher and RetroArch to use a specific version of the SDL library (fixes controller mapping issues).</li>
</ul>
<p><b>v5.4.2</b></p>
<ul>
<li>Fixed a bug in the Windows version when multiple controllers are connected that would cause the first controller in the list to be used instead of the one actually selected.</li>
</ul>
<p><b>v5.4.1</b></p>
<ul>
<li>Fixed a missing dependency in the Windows version that would cause all web requests to fail on certain Windows installations that don't have the expected C runtime.</li>
</ul>
<p><b>v5.4.0</b></p>
<ul>
<li>The Windows version will now automatically import your Project64 saves when a new rom is found if Project64 is installed to a standard location.</li>
<li>Added a way to test star layout files in Parallel Launcher</li>
<li>When downloading an RHDC hack with no recommended plugin, Rice will be selected by default if the hack uses the MOP2 patch.</li>
<li>Decreased the scroll speed of the hack list in the RHDC view</li>
<li>Fixed a bug where star layouts without a missing star icon set would not show uncollected stars at all</li>
</ul>
<p><b>v5.3.0</b></p>
<ul>
<li>Use a star display based save editor for RHDC hacks with a layout file</li>
<li>Added a Project64 save importer. To import your save data from Project64, right-click on a rom in the classic view (or click the &#8801; button in the RHDC view) and select <i>Import Project64 Save File</i></li>
</ul>
<p><b>v5.2.2</b></p>
<ul>
<li>Fixed a bug where layouts for existing romhacks would be not automatically downloaded until another rom with a layout was downloaded.</li>
<li>Fixed a bug in the conversion of old layouts that could result in an extra star being added to every course</li>
</ul>
<p><b>v5.2.1</b></p>
<ul>
<li>Fixed Discord integration not working on Windows. It will still initially show RetroArch as the active game, but should now switch to Parallel Launcher after several seconds. The Linux and Mac versions will still work immediately.</li>
</ul>
<p><b>v5.2.0</b></p>
<ul>
<li>Added optional Discord integration to set your game status when playing roms. You can enable/disable this feature in Settings.</li>
<li>Controller binding is now fully functional on MacOS</li>
<li>Fixed unwanted padding in the UI on MacOS</li>
</ul>
<p><b>v5.1.2</b></p>
<ul>
<li>Fixed errors installing emulator cores and downloading hacks on the 64-bit Windows version when your username contains non-ASCII characters</li>
</ul>
<p><b>v5.1.1</b></p>
<ul>
<li>Fixed alignment of text in star display</li>
<li>Fixed the RHDC view button having a toggle state when it should not</li>
<li>Fixed the text in the RHDC view not changing colour when selected</li>
<li>The icons in the RHDC view are now coloured to match the text colour</li>
<li>Fixed incorrect spacing and font size in the RHDC view on MacOS</li>
</ul>
<p><b>v5.1.0</b></p>
<ul>
<li>Added support for a new star layout format</li>
<li>Fixed incorrect star display on hacks with the 8 star per level patch</li>
<li>Fixed misalignments in star display ui</li>
</ul>
<p><b>v5.0.1</b></p>
<ul>
<li>Fixed a bug that could cause some roms to not appear in the correct group/list after syncing with romhacking.com</li>
<li>Fixed a crash when clicking 'Open Containing Folder' in the classic view</li>
</ul>
<p><b>v5.0.0</b></p>
<ul>
<li>Added an alternate view to show only romhacking.com roms in a card list layout. You can switch between the classic view and the RHDC view by clicking on the rainbow star button.</li>
<li>When playing an RHDC hack that has a layout file, a live star display is shown in the Now Playing window tracking the stars you have collected.
This view updates when your save file does.</li>
<li>You can now override the application language in Settings</li>
<li>Added German translations (thanks to Kate "CommandMC" Dröge)</li>
<li>Added French translations (thanks to max954)</li>
<li>You can now bind the left and right modifier keys (Shift, Ctrl, etc.) separately on Windows and Linux.</li>
<li>Fixed a bug where keyboard bindings would not be set correctly when using a non-English keyboard layout</li>
<li>Fixed an error when double-clicking a rom in the classic view that hasn't been downloaded yet</li>
<li>Removes the 'Sync Groups' option in RHDC settings. Your Parallel Launcher groups are now always synced with your hack lists on romhacking.com.</li>
</ul>
<p><b>v4.6.3</b></p>
<ul>
<li>Fixed a crash when selecting an RHDC rom that has Glide64 or Rice as its recommended plugin</li>
<li>Changed sorting of roms to be case insensitive</li>
<li>Show more information in the error message when a download fails</li>
</ul>
<p><b>v4.6.2</b></p>
<ul>
<li>Fixed a bug where the internal rom name would be empty for hacks downloaded from romhacking.com</li>
<li>Fixed a bug where names of already existing roms would not update when linked with romhacking.com</li>
<li>Fixed a bug where some translations were not being used on the Windows version of Parallel Launcher</li>
</ul>
<p><b>v4.6.1</b></p>
<ul>
<li>Fixed a bug where hacks that require user authentication to access could not be downloaded</li>
<li>Fixed missing translations on the Windows and Mac versions</li>
<li>Fixed missing button icons on the Windows and Mac versions</li>
</ul>
<p><b>v4.6.0</b></p>
<ul>
<li>RHDC Integration no longer requires all hacks to be immediately downloaded. All followed hacks now show up and can be downloaded on demand.</li>
<li>Fixed translations not working on the Windows version</li>
<li>Updated some of the Spanish translations</li>
</ul>
<p><b>v4.5.0</b></p>
<ul>
<li>Added a checkbox for whether or not the emulator should pause when it loses focus (defaults to no pause)</li>
<li>Added Spanish translations (Thanks to Daniel "Reonu" León)</li>
<li>Fixed a bug where the 'Emulate N64 Depth Compare' checkbox for GLideN64 didn't correctly save your choice</li>
</ul>
<p><b>v4.4.2</b></p>
<ul>
<li>Fixed the quality slider in the RHDC rating dialog incorrectly altering the difficulty rating descriptions</li>
<li>Fixed missing Italian translations in the Debian version</li>
<li>Fixed missing RetroArch assets in the MacOS version</li>
<li>Fixed the default XBox360 controller profile on MacOS<ul>
<li>Custom controller bindings are still broken on MacOS due to the Mac build of RetroArch missing an input library I depend upon. A fix for this is coming soon.</li>
</ul></li>
</ul>
<p><b>v4.4.1</b></p>
<ul>
<li>Fixed radio buttons for plugin selection becoming squished and cut off when the window is too small</li>
<li>Fixed text being cut off in the RHDC integration settings if the window is too small</li>
</ul>
<p><b>v4.4.0</b></p>
<ul>
<li>Your play time is now synced with RHDC if you have romhacking.com integration enabled</li>
</ul>
<p><b>v4.3.0</b></p>
<ul>
<li>Released a MacOS version!</li>
<li>Added Italian translations (thanks to Luigi "JakeDower" Orabona)</li>
<li>Fixed a bug that caused the automatic plugin detection to suggest the wrong plugin</li>
<li>Fixed a bug where a previously empty rom list would remain empty after downloading hacks from romhacking.com until the program was restarted or a rom was added via another source</li>
</ul>
<p><b>v4.2.0</b></p>
<ul>
<li>When downloading a hack from romhacking.com, automatically select the recommended plugin if it has one<ul>
<li>romhacking.com does not currently support setting a recommended plugin; however, with this update, Parallel Launcher will immediately begin using it when romhacking.com is updated to support this.</li>
</ul></li>
<li>Added an error log viewer accessible by pressing F7 on the main window</li>
</ul>
<p><b>v4.1.2</b></p>
<ul>
<li>Fixed a plugin setting being configured incorrectly (fixes the bowser/peach painting in Super Mario 64 not transitioning correctly when using the ParaLLEl plugin)</li>
</ul>
<p><b>v4.1.1</b></p>
<ul>
<li>Fixed major graphical errors when disabling GLideN64 framebuffer emulation when anti-aliasing is enabled</li>
<li>Prevent GLideN64 N64 Depth Compare from being enabled when framebuffer emulation is disabled</li>
</ul>
<p><b>v4.1.0</b></p>
<ul>
<li>The widescreen checkbox will now be on the same line as the others if the window is wide enough</li>
<li>Changed the broken GLideN64 anti-aliasing settings to an FXAA toggle</li>
<li>Correctly stylized GlideN64 as GLideN64</li>
<li>Added an option for whether ParaLLEl should upscale TEXRECTs or not</li>
<li>Added on option for whether or not to enable framebuffer emulation in GLideN64</li>
<li>The two above options as well as the existing N64 Depth Compare option for GLideN64 can now be set per rom instead of just globally</li>
</ul>
<p><b>v4.0.0</b></p>
<ul>
<li>If no controller is connected when you launch a rom, the controller bindings from the last used controller profile are used</li>
<li>Added preliminary integration with romhacking.com:<ul>
<li>You can enable it by clicking 'Enable romhacking.com integration' in the ≡ menu</li>
<li>Your followed hacks are automatically downloaded and patched</li>
<li>You can optionally sync your groups in Parallel Launcher with your lists on romhacking.com</li>
<li>Star progress is automatically submitted to romhacking.com when you finish playing a rom</li>
<li>Parallel Launcher attempts to guess the appropriate graphics plugin to use when downloading a hack from romhacking.com</li>
<li>You can rate a hack from Parallel Launcher by right-clicking on it in your rom list and selecting 'Rate Hack'</li>
<li>Hacks that do not have stars can be marked as complete from the right-click menu</li>
</ul></li>
</ul>
<p><b>v3.2.1</b></p>
<ul>
<li>Fixed a potential crash on startup if the database gets into a bad state</li>
<li>Fixed groups being lost when a rom is updated</li>
<li>Fixed unnecessary recalculation of rom checksums (rom scanning should be faster now)</li>
<li>Fixed group renaming not always working correctly</li>
<li>Fixed sorting by name not working</li>
</ul>
<p><b>v3.2.0</b></p>
<ul>
<li>Added a right-click option to rename a rom in Parallel Launcher</li>
<li>Fixed the 'Delete ROM' right-click action not working</li>
<li>Fixed all groups collapsing after playing a rom when sorting by play time</li>
<li>Fixed empty groups continuing to show up after they are deleted</li>
</ul>
<p><b>v3.1.1</b></p>
<ul>
<li>Fixed infinite loading bar when roms are removed and no new or changed roms are found</li>
<li>Fixed crash on Windows when looking for a rom that is on a network drive or WSL environment that no longer exists</li>
<li>Fixed rom names not updating when a rom file is renamed</li>
<li>Fixed a crash when multiple rom files have the same checksum and one of them is updated but the other is not</li>
</ul>
<p><b>v3.1.0</b></p>
<ul>
<li>Switched rom storage from a json file to a sqlite database</li>
<li>The application should now be more responsive when you have a large number of roms</li>
<li>Parallel Launcher is now smarter at tracking roms:<ul>
<li>Moving a ROM from one location to another will no longer result in your play time and plugin settings being lost</li>
<li>If a ROM is deleted, but later restored, your play time and settings are restored</li>
<li>Manually added rom paths are automatically cleaned up when the rom is moved or deleted</li>
<li>If two rom files are identical, their settings and play time are synced</li>
</ul></li>
<li>Fixed a bug where resetting your RetroArch config could result in the assets directory being incorrect</li>
<li>Your controllers with rumble disabled now emulate having a memory pak inserted instead of nothing</li>
</ul>
<p><b>v3.0.3</b></p>
<ul>
<li>Fixed a regression in version 3.0.0 that could cause controllers to bind incorrectly or not at all on Linux when multiple controllers are connected</li>
<li>The Windows version now supports Windows 7 as well</li>
</ul>
<p><b>v3.0.2</b></p>
<ul>
<li>Prevent accidentally created game overrides in RetroArch from overriding your Parallel Launcher settings</li>
<li>Suppress the double controller binding notifications when launching RetroArch</li>
</ul>
<p><b>v3.0.1</b></p>
<ul>
<li>Fixed a bug on the Linux version where a successful first installation of RetroArch would incorrectly be reported as a failure</li>
<li>Fixed a bug where launching a ROM or patch file from your file browser rather than the Parallel Launcher UI would result in your total play time being reset</li>
</ul>
<p><b>v3.0.0</b></p>
<ul>
<li>RetroArch is now automatically installed and updated by Parallel Launcher. This RetroArch install is separate from your system-wide or user installation, so if you previously installed RetroArch and only use it for Parallel Launcher, you can now safely uninstall it.</li>
<li>Double-clicking a ROM will now launch it</li>
</ul>
<p><b>v2.10.1 (Windows Only)</b></p>
<ul>
<li>Fixed an oddly specific bug on Windows where if an XBox One controller connected to a dongle with 5GHz WiFi was turned off (either manually or by inactivity) while Parallel Launcher is running, it would turn itself off again whenever launching a ROM or entering the controller configuration screen.</li>
</ul>
<p><b>v2.10.0</b></p>
<ul>
<li>Allow binding controller inputs to Fast Forward and Slow Motion</li>
<li>Added an automatic core updater</li>
<li>Added an <i>Open Containing Folder</i> option to the rom list right-click menu</li>
<li>Added a <i>Delete ROM</i> option to the rom list right-click menu</li>
</ul>
<p><b>v2.9.0</b></p>
<ul>
<li>Exposed more graphics plugin settings through Parallel Launcher</li>
<li>Improved the default settings for some graphics plugins</li>
<li>Added a button in settings to reset your RetroArch config</li>
<li>Slightly improved performance when the list of ROMs is very large</li>
</ul>
<p><b>v2.8.0</b></p>
<ul>
<li>The settings dialog is now categorized and more compact</li>
<li>You can now set a folder to put patched roms in when loading a bps patch</li>
<li>In future updates, the Windows installer will no longer require manually clicking through it when doing an update.</li>
<li>When opening a new rom or patch file from your file browser, it is no longer added to your explicit rom list if it is already covered by an existing rom search path.</li>
<li>Fixed a bug in the Windows version where the file dialog to add a specific rom or to apply a BPS patch would not work when selecting (a) file(s) in a WSL directory.</li>
<li>Fixed a bug in the Windows version where roms could not be added if their file path contains characters not in the Latin1 character set.</li>
</ul>
<p><b>v2.7.2</b></p>
<ul>
<li>Fixed inputs not working in RetroArch version 1.9.1</li>
<li>Fixed the D-Pad not working on certain controllers</li>
<li>Fixed broken rom names on Windows when a ROM contains non-ASCII characters</li>
<li>Fixed explicit x4 and x8 ParaLLEl scaling not working</li>
<li>Added a default controller profile for USB N64 controllers</li>
</ul>
<p><b>v2.7.1 (Windows only)</b></p>
<ul>
<li>Fixed a bug where the Windows version of Parallel Launcher would sometimes fail to detect RetroArch even though it is installed in the correct location</li>
<li>Parallel Launcher now searches in more locations for RetroArch before asking the user to provide the path</li>
</ul>
<p><b>v2.7.0</b></p>
<ul>
<li>Added support for widescreen mode</li>
</ul>
<p><b>v2.6.0</b></p>
<ul>
<li>Parallel Launcher will now offer to install emulator cores for you, removing the need to manually install them in RetroArch first</li>
</ul>
<p><b>v2.5.0</b></p>
<ul>
<li>Fixed a bug where launching Parallel Launcher by clicking on a ROM file would not work correctly in some file browsers on Linux</li>
<li>Show a warning when using the outdated GlideN64 plugin on ParallelN64</li>
<li>Changed the behaviour of Parallel Launcher when launched by clicking on a ROM in the file browser to now exit when the ROM is closed</li>
<li>Fixed RetroArch crashing when using the mupen64plus-next core</li>
</ul>
<p><b>v2.4.0</b></p>
<ul>
<li>Added an Input Mode option to allow for dual analog input that maps to two N64 controllers</li>
</ul>
<p><b>v2.3.1</b></p>
<ul>
<li>Fixed HTML characters not rendering correctly in file paths or internal ROM names</li>
</ul>
<p><b>v2.3.0</b></p>
<ul>
<li>Fixed .bps files not being associated with Parallel Launcher on Linux</li>
<li>Added an automatic updater to the Windows version</li>
</ul>
<p><b>v2.2.0</b></p>
<ul>
<li>Parallel Launcher now supports automatically patching <b>.bps</b> files onto known ROMs</li>
<li>Fixed the <i>Last Played</i> field giving incorrect dates on the Windows version</li>
<li>Fixed an error when loading the ROM list if a ROM has a nul character in its internal name</li>
</ul>
<p><b>v2.1.3</b></p>
<ul>
<li>Fixed a bug where the internal rom name would be scrambled for roms not in big-endian format</li>
<li>Internal rom names now update when the rom file is modified</li>
</ul>
<p><b>v2.1.1</b></p>
<ul>
<li>Fixed a bug where the internal ROM name could have the last character cut off</li>
</ul>
<p><b>v2.1.0</b></p>
<ul>
<li>Added an optional column to display the internal name of each ROM</li>
<li>Support adding individual ROMs instead of just search directories</li>
<li>When opening a new ROM in Parallel Launcher, add it to the list of known ROMs</li>
<li>When opening a known ROM in Parallel Launcher, immediately play the ROM in the preferred emulator</li>
<li>Prevent a controller input from being inadvertantly mapped to C Button Mode</li>
<li>Fixed potential issue with file paths containing non-ASCII characters</li>
</ul>
<p><b>v2.0.2</b></p>
<ul>
<li>Fixed controller profiles not saving when using a locale that uses a comma as the decimal separator</li>
</ul>
<p><b>v2.0.1</b></p>
<ul>
<li>Fixed Kill Emulator button not working on Linux when using the Flatpak install of RetroArch</li>
<li>The Windows version is now compiled with MSVC</li>
<li>Fixed potential crash when searching for ROMs in the Windows version</li>
</ul>
<p><b>v2.0.0</b></p>
<ul>
<li>Split <i>Optimize for Performance</i> checkbox into two separate options</li>
<li>Added support for the Mupen64Plus-Next emulator!</li>
</ul>
<p><b>v1.2.1</b></p>
<ul>
<li>Fixed a bug where certain controller types could have their control scheme changes and attempting to bind to an axis would result in a crash</li>
</ul>
<p><b>v1.2.0</b></p>
<ul>
<li>Improved performance of recursive ROM searches, especially on Linux</li>
<li>Don't force integer scaling on HLE plugins</li>
<li>Fixed potential crash when refreshing the ROM list while it is already in the process of refreshing</li>
<li>Show a loading bar when refreshing the ROM list</li>
</ul>
<p><b>v1.1.0</b></p>
<ul>
<li>Support configuration of hotkeys and keyboard controls from within Parallel Launcher</li>
<li>Removed the warning when launching a ROM with no controllers plugged in</li>
</ul>
</body>
</html>

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,27 @@
{
"linux_x64": {
"version": "2.24.1",
"sha1": "6fb8283f11f4984a4b52b37610b51f029b0835ff",
"url": "https://gitlab.com/-/project/34649479/uploads/b479b4177cb7787d7b65860796764f1d/parallel_n64_libretro_linux64.zip"
},
"windows_x64": {
"version": "2.24.2",
"sha1": "a311e156ce5a4fa460800948e51a4bc3469c45e0",
"url": "https://gitlab.com/-/project/34649479/uploads/cfe6676f27bd3416dd8912da907cbf69/parallel_n64_libretro_win64.zip"
},
"windows_x86": {
"version": "2.24.2",
"sha1": "b12232f6daf7cc7c38414326b7eafcf476b5af7c",
"url": "https://gitlab.com/-/project/34649479/uploads/10bcd09dca2f1d7ab2468ad0232fe52a/parallel_n64_libretro_win32.zip"
},
"macos_x64": {
"version": "2.24.1",
"sha1": "70e9ff7293bfb7995c616a2ffec3e037cd3d4415",
"url": "https://gitlab.com/-/project/34649479/uploads/6c6abf6be9fb3d9cdb0bd4509684efd9/parallel_n64_libretro_mac64.zip"
},
"macos_arm64": {
"version": "2.24.1",
"sha1": "becbd4fba15079ec24ec301882580a4a92af5b8d",
"url": "https://gitlab.com/-/project/34649479/uploads/c2d4e981ca85a03a2a2130829a24f725/parallel_n64_libretro_mac-arm64.zip"
}
}

View File

@@ -0,0 +1,7 @@
{
"macos_x64": {
"version": "1.20.3",
"zipSha1": "e9c72644fff4b55a7d8360ee6f91300ebdc1d605",
"url": "https://gitlab.com/parallel-launcher/parallel-launcher.gitlab.io/-/package_files/187099847/download"
}
}

1
public/latest/version Normal file
View File

@@ -0,0 +1 @@
8.3.0

View File

@@ -0,0 +1,5 @@
{
"win_x64": "8.3.0",
"win_x86": "8.3.0",
"mac_x64": "8.3.0"
}

View File

@@ -0,0 +1,102 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://parallel-launcher.ca/layout/advanced-01/schema.json",
"title": "Advanced Parallel Star Layout Schema",
"type": "object",
"properties": {
"$schema": {
"type": "string",
"const": "https://parallel-launcher.ca/layout/advanced-01/schema.json"
},
"format": {
"type": "object",
"properties": {
"save_type": {
"type": "string",
"enum": [ "EEPROM", "SRAM", "FlashRAM", "MemPak", "Multi" ],
"default": "EEPROM"
},
"num_slots": {
"type": "integer",
"minimum": 1
},
"slots_start": {
"type": "integer",
"minimum": 0
},
"slot_size": {
"type": "integer",
"minimum": 1
},
"active_bit": {
"type": "integer",
"minimum": 0
},
"checksum_offset": {
"type": [ "integer", "null" ],
"minimum": 1
}
},
"required": [ "num_slots", "slots_start", "slot_size", "active_bit", "checksum_offset" ]
},
"groups": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"side": {
"type": "string",
"enum": [ "left", "right", "top", "bottom" ]
},
"courses": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"data": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"offset": {
"type": "integer",
"minimum": 0
},
"mask": {
"type": "integer",
"minimum": 1,
"maximum": 255
}
},
"required": [ "offset", "mask" ]
}
}
},
"required": [ "data" ]
}
}
},
"required": [ "name", "side", "courses" ]
}
},
"collectedStarIcon": {
"type": [ "string", "null" ],
"pattern": "[a-zA-Z0-9+/]+={0,2}",
"maxLength": 6828
},
"missingStarIcon": {
"type": [ "string", "null" ],
"pattern": "[a-zA-Z0-9+/]+={0,2}",
"maxLength": 6828
}
},
"required": [ "$schema", "format", "groups" ]
}

View File

@@ -0,0 +1,127 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://parallel-launcher.ca/layout/advanced-02/schema.json",
"title": "Advanced Parallel Star Layout Schema",
"type": "object",
"properties": {
"$schema": {
"type": "string",
"const": "https://parallel-launcher.ca/layout/advanced-02/schema.json"
},
"format": {
"type": "object",
"properties": {
"save_type": {
"type": "string",
"enum": [ "EEPROM", "SRAM", "FlashRAM", "MemPak", "Multi" ],
"default": "EEPROM"
},
"num_slots": {
"type": "integer",
"minimum": 1
},
"slots_start": {
"type": "integer",
"minimum": 0
},
"slot_size": {
"type": "integer",
"minimum": 1
},
"active_bit": {
"type": "integer",
"minimum": 0
},
"checksum_offset": {
"type": [ "integer", "null" ],
"minimum": 1
}
},
"required": [ "num_slots", "slots_start", "slot_size", "active_bit", "checksum_offset" ]
},
"groups": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"side": {
"type": "string",
"enum": [ "left", "right", "top", "bottom" ]
},
"optional": {
"type": "boolean",
"default": false
},
"collectedIcon": { "type": "string" },
"missingIcon": { "type": "string" },
"courses": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"optional": {
"type": "boolean"
},
"collectedIcon": { "type": "string" },
"missingIcon": { "type": "string" },
"data": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"offset": {
"type": "integer",
"minimum": 0
},
"mask": {
"type": "integer",
"minimum": 1,
"maximum": 255
},
"optional": {
"type": "boolean"
},
"collectedIcon": { "type": "string" },
"missingIcon": { "type": "string" }
},
"required": [ "offset", "mask" ]
}
}
},
"required": [ "data" ]
}
}
},
"required": [ "name", "side", "courses" ]
}
},
"collectedIcon": {
"type": "string",
"default": "Default::Star"
},
"missingIcon": {
"type": "string",
"default": "~Default::Star"
},
"icons": {
"type": "object",
"propertyNames": {
"pattern": "^(?!Default::|~).+$"
},
"additionalProperties": {
"type": "string",
"pattern": "[a-zA-Z0-9+/]+={0,2}",
"maxLength": 6828
}
}
},
"required": [ "$schema", "format", "groups" ]
}

View File

@@ -0,0 +1,65 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://parallel-launcher.ca/layout/basic-01/schema.json",
"title": "Basic Parallel Star Layout Schema",
"type": "object",
"properties": {
"$schema": {
"type": "string",
"const": "https://parallel-launcher.ca/layout/basic-01/schema.json"
},
"skipFileSelect": {
"type": "boolean"
},
"groups": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"side": {
"type": "string",
"enum": [ "left", "right" ]
},
"courses": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"courseId": {
"type": "integer",
"minimum": 0,
"maximum": 25
},
"starMask": {
"type": "integer",
"minimum": 1,
"maximum": 255
}
},
"required": [ "courseId", "starMask" ]
}
}
},
"required": [ "name", "side", "courses" ]
}
},
"collectedStarIcon": {
"type": [ "string", "null" ],
"pattern": "[a-zA-Z0-9+/]+={0,2}",
"maxLength": 6828
},
"missingStarIcon": {
"type": [ "string", "null" ],
"pattern": "[a-zA-Z0-9+/]+={0,2}",
"maxLength": 6828
}
},
"required": [ "$schema", "groups", "skipFileSelect" ]
}

255
public/layout/docs.html Normal file
View File

@@ -0,0 +1,255 @@
<!DOCTYPE html>
<html>
<head>
<link rel="canonical" href="https://parallel-launcher.ca/layout/docs" />
<link rel="shortcut icon" href="../img/favicon.ico" type="image/x-icon" />
<meta charset="UTF-8">
<title>Advanced Star Layout Documentation</title>
<style>
body {
position: relative;
font-family: sans-serif;
max-width: 1200px;
margin: auto;
padding: 0.5rem;
padding-bottom: 5rem;
}
h2 {
text-decoration: underline;
}
h3 {
margin-bottom: 0.5rem;
}
h4 {
margin-bottom: 0;
}
p {
margin-top: 0;
}
pre.schema {
color: black;
font-family: monospace;
tab-size: 4;
}
pre.schema > span {
color: #707070;
}
pre.schema > span > b {
color: black;
}
div.props {
color: black;
}
div.props > b {
font-family: monospace;
font-size: 1.25em;
}
div.props > div {
margin-left: 4ch;
}
div.props > div > span {
font-family: monospace;
}
div.props > div > a {
color: #26802f;
text-decoration: none;
}
div.props > div > a:hover {
text-decoration: underline dotted;
}
a.link {
color: #0033AA !important;
text-decoration: underline dotted !important;
}
#dark-mode {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
backdrop-filter: invert( 100% );
z-index: 100;
pointer-events: none;
}
#theme-switcher {
position: relative;
vertical-align: middle;
z-index: 101;
padding-left: 0;
padding-right: 0;
}
</style>
</head>
<body>
<div id="dark-mode" hidden></div>
<h1>Parallel Launcher Avanced Star Layout Creation <button id="theme-switcher">🌘</button></h1>
<p>This document decribes how to create and test a custom star layout for your SM64 hack.</p>
<p><b>This process is intended for romhack developers who have altered how their hack stores save data. If your hack simply uses the vanilla save format, or only uses the 8 star per course patch, then you can instead use the much simpler web UI on romhacking.com to create your star layout.</b></p>
<p>Advanced star layouts consist of a single json file that tells Parallel Launcher where to look in the save data for star progress and how it should display that information to the user.</p>
<h2>Layout Schema</h2>
<pre class="schema">
{
"$schema": "https://parallel-launcher.ca/layout/advanced-01/schema.json",
"format": {
"save_type": <span>[Optional] (string)</span>,
"num_slots": <span>(number)</span>,
"slots_start": <span>(number)</span>,
"slot_size": <span>(number)</span>,
"active_bit": <span>(number)</span>,
"checksum_offset": <span>(number <b>OR</b> null)</span>
},
"groups": [
{
"name": <span>(string)</span>,
"side": <span>(string)</span>,
"courses": [
{
"name": <span>[Optional] (string)</span>,
"data": [
{
"offset": <span>(number)</span>,
"mask": <span>(number)</span>
},
...
]
},
...
]
},
...
],
"collectedStarIcon": <span>[Optional] (string <b>OR</b> null)</span>,
"missingStarIcon": <span>[Optional] (string <b>OR</b> null)</span>
}
</pre>
<h3 id="s-root">Top Level Properties</h3>
<div class="props">
<b>$schema</b> - string, requried
<div>The schema uri. Must be <span>"https://parallel-launcher.ca/layout/advanced-01/schema.json"</span></div>
<b>format</b> - object, required
<div>A <a href="#s-format">Format</a> object describing the save type and slot layout</div>
<b>groups</b> - array, required
<div>An array of one or more <a href="#s-group">Group</a>s (see below)</div>
<b>collectedStarIcon</b> - string | null, optional
<div>A base64-encoded image to use as an icon for collected stars. The image must be under 5kB and will be displayed at 24x24 resolution. Recommended format is SVG or PNG. You can use <a class="link" href="icon-encoder">this web UI</a> to convert an icon into base64. If not present, a default star icon will be used.</div>
<b>missingStarIcon</b> - string | null, optional
<div>Same as above, but for the icon shown for uncollected stars. If not present, a grey silhouette of the collected star icon will be used.</div>
</div>
<h3 id="s-format">Format Properties</h3>
<div class="props">
<b>save_type</b> - string, optional
<div>What type of save data is used. Valid values are <span>EEPROM</span>, <span>SRAM</span>, <span>FlashRAM</span>, <span>MemPak</span>, and <span>Multi</span>. If this property is not present, it defaults to <span>EEPROM</span>. See <a href="#save-types">Save Types</a> for more information.</div>
<b>num_slots</b> - number, required
<div>The number of save slots accessible. All slots are assumed to be directly next to each other in the save file.</div>
<b>slots_start</b> - number, required
<div>The offset from the start of the save data where the first save slot begins. In the vanilla save format, this has value <span>0</span>. If you are using the <span>MemPak</span> save type and your total save file size is greater than 32kB, then this must have value <span>0</span>.</div>
<b>slot_size</b> - number, required
<div>The size of each save slot in bytes. In the vanilla save format, this has value <span>112</span>. If you are using the <span>MemPak</span> save type and your total save file size is greater than 32kB, then this must have value <span>32768</span>.</div>
<b>active_bit</b> - number, required
<div>The offset from the start of the save slot in bits of the bit that indicates whether a save slot exists or not. In the vanilla format, this has value <span>95</span>.</div>
<b>checksum_offset</b> - number | null, required
<div>The offset from the start of the save slot where the checksum is located. In the vanilla save format, this has value 54. If you have removed the checksum from your save format, enter <span>null</span> for this value.</div>
</div>
<h3 id="s-group">Group Properties</h3>
<div class="props">
<b>name</b> - string, required
<div>The name of the group to show in Parallel Launcher.</div>
<b>side</b> - string, required
<div>One of <span>"left"</span>, <span>"right"</span>, <span>"top"</span>, or <span>"bottom"</span> indicating which side of the UI the group should appear on. Groups in the top or bottom sides will span both the left and right columns.</div>
<b>courses</b> - array, required
<div>An array of <a href="#s-course">Course</a>s to list in the group. Usually, this represents a course, but it can be any collection of star data. This array can be empty if you simply want to use the group to display a line of text.</div>
</div>
<h3 id="s-course">Course Properties</h3>
<div class="props">
<b>name</b> - string, optional
<div>The label to show in front of the stars. If this property is not present, no label will be shown.</div>
<b>data</b> - array, required
<div>An array of <a href="#s-data">Star Data</a>, each representing a single byte of save data. Must contain at least one entry. All stars in a course will be shown on the same line. To show stars on multiple lines, add another <a href="#s-course">Course</a> with an empty name below this one instead. Note that the stars in each datum will be in order of the least significant bit on the left, and the most significant bit on the right, opposite to how the number would be written in binary. This is to make it consistent with how star data is stored in vanilla.</div>
</div>
<h3 id="s-data">Star Data Properties</h3>
<div class="props">
<b>offset</b> - number, required
<div>The offset of the byte from the start of the save slot</div>
<b>mask</b> - number, required
<div>A mask of which bits in the byte contain star data. For example, <span>255</span> means all bits contain star data, while <span>1</span> means only the least significant bit should be checked. Cannot be <span>0</span>.</div>
</div>
<h3 id="save-types">Save Types</h3>
<p>The following save types are supported:</p>
<h4>EEPROM</h4>
<p>The most common save format, and the kind used for vanilla SM64. Maximum save file size is 2kB (2048 bytes), but if you use more than 512 bytes, your hack may require some <a class="link" href="http://krikzz.com/pub/support/everdrive-64/x-series/everdrive-64-manual.pdf">configuration</a> to work on Everdrive.</p>
<h4>SRAM</h4>
<p>A larger save format with a maximum size of 32kB (32768 bytes). May require some <a class="link" href="http://krikzz.com/pub/support/everdrive-64/x-series/everdrive-64-manual.pdf">configuration</a> to work on Everdrive.</p>
<h4>FlashRAM</h4>
<p>The largest save format available with a maximum size of 128kB (131072 bytes). May require some <a class="link" href="http://krikzz.com/pub/support/everdrive-64/x-series/everdrive-64-manual.pdf">configuration</a> to work on Everdrive.</p>
<h4>MemPak</h4>
<p>A save format that, on console, stores data in the MemPak addon for your N64 controller. This means you cannot use both MemPak saves and rumble for the same hack. Each MemPak can hold 32kB (32768 bytes), for a total of 128kB (131072 bytes) if all four controllers are used.</p>
<h4>Multi</h4>
<p>This mode operates on RetroArch's raw save file (SRM), allowing you to access all of the above save formats at once. There is very little reason to actually do this. In this mode, your offsets should be given from the start of the SRM save file. The SRM save format is simply all 2kB of EEPROM, followed by all 4 MemPaks in order, followed by SRAM, followed by FlashRAM.</p>
<h2>Testing Your Layout</h2>
<p>You can test the basic syntax of your layout using any JSON schema validator such as <a class="link" href="https://www.jsonschemavalidator.net/">this one</a>. The schema to validate against can be found <a class="link" href="https://parallel-launcher.ca/layout/advanced-01/schema.json">here</a>.</p>
<p>To test that your layout is reading save data correctly, you can use the star layout tester in Parallel Launcher. In the classic view, right click on the rom you want to test your layout on (or, if you are in the RHDC view, select the hack and click the &#8801; button beside the version selector), then select <i>[RHDC] Test Star Layout</i>. You can then paste the contents of your layout file into the textbox, and Parallel Launcher will validate it and show you a preview of what it will look like on your current save file. You can also click on the stars to temporarily toggle them in your save file and use the <b>Test Layout</b> button to test your rom with the altered save file to verify that it behaves as expected. Any changes you make to your save file here will be reverted once you close the layout tester dialog, and no progress will be submitted to RHDC, so you can freely test without worrying about breaking your save file or star progress.</p>
<script>
const themeSwitcher = document.getElementById( 'theme-switcher' );
const darkMode = document.getElementById( 'dark-mode' );
if( darkMode.style['backdrop-filter'] === undefined ) {
themeSwitcher.hidden = true;
} else if( localStorage.getItem( 'dark-mode' ) ) {
darkMode.hidden = false;
themeSwitcher.textContent = '🌞';
}
themeSwitcher.addEventListener( 'click', function() {
if( darkMode.hidden ) {
darkMode.hidden = false;
themeSwitcher.textContent = '🌞';
localStorage.setItem( 'dark-mode', '1' );
} else {
darkMode.hidden = true;
themeSwitcher.textContent = '🌘';
localStorage.removeItem( 'dark-mode' );
}
});
</script>
</body>
</html>

View File

@@ -0,0 +1,99 @@
<!DOCTYPE html>
<html>
<head>
<link rel="canonical" href="https://parallel-launcher.ca/layout/icon-encoder" />
<link rel="shortcut icon" href="../img/favicon.ico" type="image/x-icon" />
<meta charset="UTF-8">
<title>Star Icon Encoder</title>
<style>
body {
font-family: sans-serif;
max-width: 1200px;
margin: auto;
padding: 0.5rem;
}
textarea {
font-family: monospace;
width: 1200px;
height: 600px;
max-width: 90vw;
max-height: 80vh;
resize: none;
margin-top: 0.5rem;
}
textarea.fail {
color: red;
}
#icon-preview {
vertical-align: middle;
}
</style>
</head>
<body>
<div style="display: inline-block;">
<label for="file-upload">Upload an image:&nbsp;</label>
<input type="file" id="file-upload" accept="image/svg+xml, image/png, image/bmp, image/gif, image/jpeg, image/x-portable-pixmap, image/x-portable-graymap, image/x-portable-pixmap, image/x-xbitmap, image/x-xpixmap">
</div>
<img id="icon-preview" width="24" height="24" hidden>
<br>
<textarea id="base64" readonly></textarea>
<script type="application/javascript">
'use strict';
const bufferToBase64 = function( data ) {
let dataString = '';
new Uint8Array( data ).forEach( function( byte ) {
dataString += String.fromCharCode( byte );
});
return btoa( dataString );
};
const fileUpload = document.getElementById( 'file-upload' );
const preview = document.getElementById( 'icon-preview' );
const output = document.getElementById( 'base64' );
fileUpload.value = '';
output.value = '';
fileUpload.addEventListener( 'change', function(){
preview.src = null;
preview.hidden = true;
if( fileUpload.files.length <= 0 ) {
output.value = '';
return;
}
const file = fileUpload.files.item( 0 );
if( file.size > 5120 ) {
output.className = 'fail';
output.value = 'Image filesize must be 5kB or less';
return;
}
file.arrayBuffer().then( function( data ) {
const base64 = bufferToBase64( data );
output.className = '';
output.value = base64;
output.select();
preview.src = `data:${file.type};base64,${base64}`;
preview.hidden = false;
}, function() {
output.className = 'fail';
output.value = 'Failed to read image data.';
});
});
output.addEventListener( 'focus', function() {
output.select();
});
</script>
</body>
</html>

52
public/mobile.css Normal file
View File

@@ -0,0 +1,52 @@
div#main {
width: 100%;
margin: 0;
}
div#background {
width: 100%;
margin: 0;
}
div#content {
width: 100%;
padding: 23px;
margin: 0 0 1.5em 0;
box-sizing: border-box;
}
div#top {
display: block;
}
div#screenshot {
display: none;
}
div.download-box {
line-height: 1.44em;
}
div.download-box > img {
width: 4.32em;
height: 4.32em;
}
div#mobile-only {
display: block;
}
img#mobile-screenshot {
max-width: 100%;
height: auto;
}
a#screenshot-toggle {
text-decoration: underline;
color: blue;
cursor: pointer;
}
div#copyright {
right: 20px;
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

154
public/style.css Normal file
View File

@@ -0,0 +1,154 @@
@font-face {
font-family: NotoSans;
font-weight: normal;
src: url("font/NotoSans-Regular.ttf") format("truetype");
}
@font-face {
font-family: NotoSans;
font-weight: bold;
src: url("font/NotoSans-Bold.ttf") format("truetype");
}
html {
width:100%;
height:100%;
margin:0;
padding:0;
font-family: NotoSans;
font-size: 16px;
}
body {
text-align: center;
height:100%;
margin:0;
padding:0;
background-color: #7ea6c8;
}
div#main {
width: 1000px;
height: 100%;
margin-top: 0;
margin-bottom: 0;
margin-left: auto;
margin-right: auto;
padding: 0;
position: relative;
}
div#background {
background-color: #f8f8f8;
width: 1000px;
height: 100%;
margin-top: 0;
margin-bottom: 0;
margin-left: auto;
margin-right: auto;
padding: 0;
position: fixed;
z-index: 1;
}
div#content {
width: 954px;
margin: 23px;
margin-bottom: 0;
text-align: left;
padding: 0;
padding-bottom: 1.5em;
position: absolute;
top: 0;
left: 0;
z-index: 2;
}
div#copyright {
position: absolute;
top: 1ex;
right: 0;
}
h1 {
margin-top: 0;
}
h1, h3 {
margin-bottom: 0;
}
div#top {
display: flex;
}
div#downloads {
flex-grow: 1;
}
div#screenshot {
flex-grow: 0;
position: relative;
bottom: 53px;
left: 65px;
margin-left: -70px;
margin-bottom: -125px;
}
img#logo {
display: inline;
vertical-align: middle;
margin-right: 0.5ch;
width: 1.5em;
height: 1.5em;
}
div.download-box {
display: flex;
border: 1px solid black;
border-radius: 4px;
background-color: #eff0f1;
margin-bottom: 6px;
padding: 4px;
}
div.download-box > img {
flex-grow: 0;
width: 64px;
height: 64px;
}
div.download-box > div {
flex-grow: 1;
margin-left: 4px;
}
a:link {
color: #0033aa;
text-decoration: none;
}
a:visited {
color: #0033aa;
text-decoration: none;
}
a:hover {
color: #0033aa;
text-decoration: underline;
}
a:active {
color: #3366cc;
text-decoration: underline;
}
p {
text-align: justify;
margin-top: 0;
}
div#mobile-only {
display: none;
}