pages/public/lit/docs/upgrades.html

322 lines
No EOL
47 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en-US" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Upgrades | The Paper Pilot</title>
<meta name="description" content="The Paper Pilot Personal Website">
<meta name="generator" content="VitePress v1.2.2">
<link rel="preload stylesheet" href="/assets/style.DZitj0Al.css" as="style">
<script type="module" src="/assets/app.PtcB0WCG.js"></script>
<link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="modulepreload" href="/assets/chunks/framework.D8PMdl4T.js">
<link rel="modulepreload" href="/assets/chunks/theme.FDzX7Ub-.js">
<link rel="modulepreload" href="/assets/public_lit_docs_upgrades.md.DnP9Av1u.lean.js">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Pacifico&amp;family=Roboto+Mono:ital,wght@0,400;0,600;1,400&amp;display=swap">
<link rel="manifest" href="/site.webmanifest">
<link rel="alternate" type="text/mf2+html" href="/changelog">
<meta name="og:description" content="The Paper Pilot portfolio site">
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
</head>
<body>
<div id="app"><div class="Layout" data-v-5d98c3a5><!--[--><!--[--><!--]--><!--]--><!--[--><span tabindex="-1" data-v-0f60ec36></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0f60ec36> Skip to content </a><!--]--><!----><header class="VPNav" data-v-5d98c3a5 data-v-ae24b3ad><div class="VPNavBar has-sidebar top" data-v-ae24b3ad data-v-ccf7ddec><div class="wrapper" data-v-ccf7ddec><div class="container" data-v-ccf7ddec><div class="title" data-v-ccf7ddec><div class="VPNavBarTitle has-sidebar" data-v-ccf7ddec data-v-ab179fa1><a class="title" href="/" data-v-ab179fa1><!--[--><!--]--><!----><span data-v-ab179fa1>The Paper Pilot</span><!--[--><!--]--></a></div></div><div class="content" data-v-ccf7ddec><div class="content-body" data-v-ccf7ddec><!--[--><!--]--><div class="VPNavBarSearch search" data-v-ccf7ddec><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><span class="DocSearch-Button-Key">Meta</span><span class="DocSearch-Button-Key">K</span></span></button></div></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-ccf7ddec data-v-7f418b0f><span id="main-nav-aria-label" class="visually-hidden" data-v-7f418b0f>Main Navigation</span><!--[--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://moddingtree.com" target="_blank" rel="noreferrer" tabindex="0" data-v-7f418b0f data-v-9c663999><!--[--><span data-v-9c663999>Profectus</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://incremental.social" target="_blank" rel="noreferrer" tabindex="0" data-v-7f418b0f data-v-9c663999><!--[--><span data-v-9c663999>Incremental Social</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-ccf7ddec data-v-e6aabb21><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="Switch to dark theme" aria-checked="false" data-v-e6aabb21 data-v-d1f28634 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-d1f28634></span><span class="vpi-moon moon" data-v-d1f28634></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-ccf7ddec data-v-0394ad82 data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://github.com/thepaperpilot" aria-label="github" target="_blank" rel="noopener" data-v-7bc22406 data-v-eee4e7cb><span class="vpi-social-github" /></a><a class="VPSocialLink no-icon" href="https://www.linkedin.com/pub/anthony-lawn/a9/a98/2" aria-label="linkedin" target="_blank" rel="noopener" data-v-7bc22406 data-v-eee4e7cb><span class="vpi-social-linkedin" /></a><a class="VPSocialLink no-icon" href="https://matrix.to/#/@thepaperpilot:incremental.social" aria-label target="_blank" rel="noopener" data-v-7bc22406 data-v-eee4e7cb><svg xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" version="1.1" viewBox="0 0 27.9 32" style="background-color:white">
<g xmlns="http://www.w3.org/2000/svg" transform="translate(-.095 .005)" fill="#040404">
<path d="m27.1 31.2v-30.5h-2.19v-0.732h3.04v32h-3.04v-0.732z"/>
<path d="m8.23 10.4v1.54h0.044c0.385-0.564 0.893-1.03 1.49-1.37 0.58-0.323 1.25-0.485 1.99-0.485 0.72 0 1.38 0.14 1.97 0.42 0.595 0.279 1.05 0.771 1.36 1.48 0.338-0.5 0.796-0.941 1.38-1.32 0.58-0.383 1.27-0.574 2.06-0.574 0.602 0 1.16 0.074 1.67 0.22 0.514 0.148 0.954 0.383 1.32 0.707 0.366 0.323 0.653 0.746 0.859 1.27 0.205 0.522 0.308 1.15 0.308 1.89v7.63h-3.13v-6.46c0-0.383-0.015-0.743-0.044-1.08-0.0209-0.307-0.103-0.607-0.242-0.882-0.133-0.251-0.336-0.458-0.584-0.596-0.257-0.146-0.606-0.22-1.05-0.22-0.44 0-0.796 0.085-1.07 0.253-0.272 0.17-0.485 0.39-0.639 0.662-0.159 0.287-0.264 0.602-0.308 0.927-0.052 0.347-0.078 0.697-0.078 1.05v6.35h-3.13v-6.4c0-0.338-7e-3 -0.673-0.021-1-0.0114-0.314-0.0749-0.623-0.188-0.916-0.108-0.277-0.3-0.512-0.55-0.673-0.258-0.168-0.636-0.253-1.14-0.253-0.198 0.0083-0.394 0.042-0.584 0.1-0.258 0.0745-0.498 0.202-0.705 0.374-0.228 0.184-0.422 0.449-0.584 0.794-0.161 0.346-0.242 0.798-0.242 1.36v6.62h-3.13v-11.4z"/>
<path d="m0.936 0.732v30.5h2.19v0.732h-3.04v-32h3.03v0.732z"/>
</g>
</svg></a><a class="VPSocialLink no-icon" href="https://incremental.social/u/thepaperpilot" aria-label target="_blank" rel="noopener" data-v-7bc22406 data-v-eee4e7cb><?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
viewBox="0 0 334.73599 334.736"
id="svg40"
sodipodi:docname="logo_condensed.svg"
inkscape:version="1.3.1 (5ab75fa947, 2023-11-03)"
width="334.73599"
height="334.73599"
inkscape:export-filename="logo_condensed_forgejo.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs44" />
<sodipodi:namedview
id="namedview42"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="2.8284271"
inkscape:cx="87.327687"
inkscape:cy="132.40574"
inkscape:window-width="2560"
inkscape:window-height="1369"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g4"
inkscape:showpageshadow="0"
inkscape:deskcolor="#d1d1d1"
showguides="true">
<sodipodi:guide
position="264.97068,-61.5051"
orientation="1,0"
id="guide1"
inkscape:locked="false" />
<sodipodi:guide
position="93.001002,77.044749"
orientation="1,0"
id="guide2"
inkscape:locked="false" />
<sodipodi:guide
position="109.56249,95.005809"
orientation="1,0"
id="guide3"
inkscape:locked="false" />
<sodipodi:guide
position="163.99999,77.505809"
orientation="1,0"
id="guide4"
inkscape:locked="false" />
<sodipodi:guide
position="179,1.5058096"
orientation="1,0"
id="guide5"
inkscape:locked="false" />
</sodipodi:namedview>
<g
id="g1"
transform="translate(-1,84.932692)">
<path
fill="#6b438b"
d="m 271.24983,105.65061 q -0.36,4.08 -0.31,8.47 0.05,4.56 -4.49,8.19 -9.11,7.28 -17.84,-0.35 c -5.3,-4.65 -3.99,-10.34 -4.42,-16.25 -11.33,-3.3 -21.65,-12.470005 -22.8,-24.590005 q -0.53,-5.59 -0.95,-11.21 -0.04,-0.52 -0.53,-0.64 c -4.87,-1.23 -7.99,-2.08 -10.29,-6.94 -3.9,-8.23 0.79,-15.35 8.92,-18.12 a 0.39,0.4 77.9 0 0 0.27,-0.41 c -0.74,-8.02 -1.4,-15.08 1.56,-22.79 3.11,-8.09 9.57,-14.2599996 17.53,-17.6199996 q 4.11,-1.73 10.44,-2.07 8.68,-0.46000001 17.4,-0.26 16.85,0.37 26.28,13.5899996 c 6.43,9.02 5.96,18.48 5.03,29.16 q -0.05,0.51 0.45,0.64 c 13.7,3.61 12.56,22.82 -1.42,24.78 a 0.71,0.71 0 0 0 -0.61,0.65 c -0.38,5.39 -0.17,11.34 -2.1,16.46 q -5.7,15.160005 -22.12,19.310005 z"
id="path28"
style="display:inline" />
<path
fill="#eceff4"
d="m 142.39,41.700605 -31,11.57 a 0.62,0.61 79.8 0 1 -0.83,-0.58 l 0.01,-19.31 q 0,-0.55 0.51,-0.74 23.03,-8.68 46.02,-17.25 c 2.57,-0.96 4.78,-0.76 7.42,-0.75 a 0.49,0.49 0 0 1 0.49,0.49 V 147.45061 a 0.79,0.79 0 0 1 -0.8,0.79 l -19.99,-0.01 q -1.17,0 -1.17,-1.16 V 42.160605 a 0.49,0.49 0 0 0 -0.66,-0.46 z"
id="path30"
style="display:inline" />
<path
fill="#eceff4"
d="m 59.21,74.480605 h 33.95 a 0.84,0.84 0 0 1 0.84,0.84 l -0.01,18.96 a 0.84,0.84 0 0 1 -0.84,0.84 l -33.88,0.03 a 0.84,0.84 0 0 0 -0.84,0.84 l -0.08,38.580005 a 0.84,0.84 0 0 1 -0.84,0.84 l -20.11,-0.01 a 0.84,0.84 0 0 1 -0.84,-0.84 L 36.55,95.980605 a 0.84,0.84 0 0 0 -0.84,-0.84 H 1.84 a 0.84,0.84 0 0 1 -0.84,-0.84 l 0.02,-19.02 a 0.84,0.84 0 0 1 0.84,-0.84 l 33.86,0.02 a 0.84,0.84 0 0 0 0.84,-0.84 v -35.79 a 0.84,0.84 0 0 1 0.84,-0.84 l 20.13,-0.02 a 0.84,0.84 0 0 1 0.84,0.84 v 35.83 a 0.84,0.84 0 0 0 0.84,0.84 z"
id="path32"
style="display:inline" />
<path
fill="#533566"
d="m 244.18983,105.71061 c 0.43,5.91 -0.88,11.6 4.42,16.25 q 8.73,7.63 17.84,0.35 4.54,-3.63 4.49,-8.19 -0.05,-4.39 0.31,-8.47 24.6,4 42.34,20.72 l -0.18,37.49 -110.93,0.01 -0.09,-37.61 q 17.53,-16.43 41.8,-20.55 z"
id="path34"
style="display:inline" />
<path
fill="#6b438b"
d="m 202.38983,126.26061 0.09,37.61 -21.38,-0.49 a 1.13,1.13 0 0 1 -1.04,-1.49 q 7.21,-21.29 22.33,-35.63 z"
id="path36"
style="display:inline" />
<path
fill="#6b438b"
d="m 313.58983,126.37061 q 12.71,12.03 19.9,29.52 1.79,4.36 2.23,6.86 0.11,0.61 -0.51,0.62 l -21.8,0.49 z"
id="path38"
style="display:inline" />
<g
transform="matrix(0.77226665,0,0,0.77226665,154.89692,5.2164554)"
id="g4"
style="display:none">
<path
d="M 58,168 V 70 a 50,50 0 0 1 50,-50 h 20"
class="orange"
id="path1"
style="fill:none;stroke:#ff6600;stroke-width:25" />
<path
d="m 58,168 v -30 a 50,50 0 0 1 50,-50 h 20"
class="red"
id="path2-3"
style="fill:none;stroke:#d40000;stroke-width:25" />
<circle
cx="142"
cy="20"
r="18"
class="orange"
id="circle2"
style="fill:none;stroke:#ff6600;stroke-width:15" />
<circle
cx="142"
cy="88"
r="18"
class="red"
id="circle3"
style="fill:none;stroke:#d40000;stroke-width:15" />
<circle
cx="58"
cy="180"
r="18"
class="red"
id="circle4"
style="fill:none;stroke:#d40000;stroke-width:15" />
</g>
</g>
</svg>
</a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-ccf7ddec data-v-d0bd9dde data-v-b6c34ac9><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-b6c34ac9><span class="vpi-more-horizontal icon" data-v-b6c34ac9></span></button><div class="menu" data-v-b6c34ac9><div class="VPMenu" data-v-b6c34ac9 data-v-e7ea1737><!----><!--[--><!--[--><!----><div class="group" data-v-d0bd9dde><div class="item appearance" data-v-d0bd9dde><p class="label" data-v-d0bd9dde>Appearance</p><div class="appearance-action" data-v-d0bd9dde><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="Switch to dark theme" aria-checked="false" data-v-d0bd9dde data-v-d1f28634 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-d1f28634></span><span class="vpi-moon moon" data-v-d1f28634></span><!--]--></span></span></button></div></div></div><div class="group" data-v-d0bd9dde><div class="item social-links" data-v-d0bd9dde><div class="VPSocialLinks social-links-list" data-v-d0bd9dde data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://github.com/thepaperpilot" aria-label="github" target="_blank" rel="noopener" data-v-7bc22406 data-v-eee4e7cb><span class="vpi-social-github" /></a><a class="VPSocialLink no-icon" href="https://www.linkedin.com/pub/anthony-lawn/a9/a98/2" aria-label="linkedin" target="_blank" rel="noopener" data-v-7bc22406 data-v-eee4e7cb><span class="vpi-social-linkedin" /></a><a class="VPSocialLink no-icon" href="https://matrix.to/#/@thepaperpilot:incremental.social" aria-label target="_blank" rel="noopener" data-v-7bc22406 data-v-eee4e7cb><svg xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" version="1.1" viewBox="0 0 27.9 32" style="background-color:white">
<g xmlns="http://www.w3.org/2000/svg" transform="translate(-.095 .005)" fill="#040404">
<path d="m27.1 31.2v-30.5h-2.19v-0.732h3.04v32h-3.04v-0.732z"/>
<path d="m8.23 10.4v1.54h0.044c0.385-0.564 0.893-1.03 1.49-1.37 0.58-0.323 1.25-0.485 1.99-0.485 0.72 0 1.38 0.14 1.97 0.42 0.595 0.279 1.05 0.771 1.36 1.48 0.338-0.5 0.796-0.941 1.38-1.32 0.58-0.383 1.27-0.574 2.06-0.574 0.602 0 1.16 0.074 1.67 0.22 0.514 0.148 0.954 0.383 1.32 0.707 0.366 0.323 0.653 0.746 0.859 1.27 0.205 0.522 0.308 1.15 0.308 1.89v7.63h-3.13v-6.46c0-0.383-0.015-0.743-0.044-1.08-0.0209-0.307-0.103-0.607-0.242-0.882-0.133-0.251-0.336-0.458-0.584-0.596-0.257-0.146-0.606-0.22-1.05-0.22-0.44 0-0.796 0.085-1.07 0.253-0.272 0.17-0.485 0.39-0.639 0.662-0.159 0.287-0.264 0.602-0.308 0.927-0.052 0.347-0.078 0.697-0.078 1.05v6.35h-3.13v-6.4c0-0.338-7e-3 -0.673-0.021-1-0.0114-0.314-0.0749-0.623-0.188-0.916-0.108-0.277-0.3-0.512-0.55-0.673-0.258-0.168-0.636-0.253-1.14-0.253-0.198 0.0083-0.394 0.042-0.584 0.1-0.258 0.0745-0.498 0.202-0.705 0.374-0.228 0.184-0.422 0.449-0.584 0.794-0.161 0.346-0.242 0.798-0.242 1.36v6.62h-3.13v-11.4z"/>
<path d="m0.936 0.732v30.5h2.19v0.732h-3.04v-32h3.03v0.732z"/>
</g>
</svg></a><a class="VPSocialLink no-icon" href="https://incremental.social/u/thepaperpilot" aria-label target="_blank" rel="noopener" data-v-7bc22406 data-v-eee4e7cb><?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
viewBox="0 0 334.73599 334.736"
id="svg40"
sodipodi:docname="logo_condensed.svg"
inkscape:version="1.3.1 (5ab75fa947, 2023-11-03)"
width="334.73599"
height="334.73599"
inkscape:export-filename="logo_condensed_forgejo.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs44" />
<sodipodi:namedview
id="namedview42"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="2.8284271"
inkscape:cx="87.327687"
inkscape:cy="132.40574"
inkscape:window-width="2560"
inkscape:window-height="1369"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g4"
inkscape:showpageshadow="0"
inkscape:deskcolor="#d1d1d1"
showguides="true">
<sodipodi:guide
position="264.97068,-61.5051"
orientation="1,0"
id="guide1"
inkscape:locked="false" />
<sodipodi:guide
position="93.001002,77.044749"
orientation="1,0"
id="guide2"
inkscape:locked="false" />
<sodipodi:guide
position="109.56249,95.005809"
orientation="1,0"
id="guide3"
inkscape:locked="false" />
<sodipodi:guide
position="163.99999,77.505809"
orientation="1,0"
id="guide4"
inkscape:locked="false" />
<sodipodi:guide
position="179,1.5058096"
orientation="1,0"
id="guide5"
inkscape:locked="false" />
</sodipodi:namedview>
<g
id="g1"
transform="translate(-1,84.932692)">
<path
fill="#6b438b"
d="m 271.24983,105.65061 q -0.36,4.08 -0.31,8.47 0.05,4.56 -4.49,8.19 -9.11,7.28 -17.84,-0.35 c -5.3,-4.65 -3.99,-10.34 -4.42,-16.25 -11.33,-3.3 -21.65,-12.470005 -22.8,-24.590005 q -0.53,-5.59 -0.95,-11.21 -0.04,-0.52 -0.53,-0.64 c -4.87,-1.23 -7.99,-2.08 -10.29,-6.94 -3.9,-8.23 0.79,-15.35 8.92,-18.12 a 0.39,0.4 77.9 0 0 0.27,-0.41 c -0.74,-8.02 -1.4,-15.08 1.56,-22.79 3.11,-8.09 9.57,-14.2599996 17.53,-17.6199996 q 4.11,-1.73 10.44,-2.07 8.68,-0.46000001 17.4,-0.26 16.85,0.37 26.28,13.5899996 c 6.43,9.02 5.96,18.48 5.03,29.16 q -0.05,0.51 0.45,0.64 c 13.7,3.61 12.56,22.82 -1.42,24.78 a 0.71,0.71 0 0 0 -0.61,0.65 c -0.38,5.39 -0.17,11.34 -2.1,16.46 q -5.7,15.160005 -22.12,19.310005 z"
id="path28"
style="display:inline" />
<path
fill="#eceff4"
d="m 142.39,41.700605 -31,11.57 a 0.62,0.61 79.8 0 1 -0.83,-0.58 l 0.01,-19.31 q 0,-0.55 0.51,-0.74 23.03,-8.68 46.02,-17.25 c 2.57,-0.96 4.78,-0.76 7.42,-0.75 a 0.49,0.49 0 0 1 0.49,0.49 V 147.45061 a 0.79,0.79 0 0 1 -0.8,0.79 l -19.99,-0.01 q -1.17,0 -1.17,-1.16 V 42.160605 a 0.49,0.49 0 0 0 -0.66,-0.46 z"
id="path30"
style="display:inline" />
<path
fill="#eceff4"
d="m 59.21,74.480605 h 33.95 a 0.84,0.84 0 0 1 0.84,0.84 l -0.01,18.96 a 0.84,0.84 0 0 1 -0.84,0.84 l -33.88,0.03 a 0.84,0.84 0 0 0 -0.84,0.84 l -0.08,38.580005 a 0.84,0.84 0 0 1 -0.84,0.84 l -20.11,-0.01 a 0.84,0.84 0 0 1 -0.84,-0.84 L 36.55,95.980605 a 0.84,0.84 0 0 0 -0.84,-0.84 H 1.84 a 0.84,0.84 0 0 1 -0.84,-0.84 l 0.02,-19.02 a 0.84,0.84 0 0 1 0.84,-0.84 l 33.86,0.02 a 0.84,0.84 0 0 0 0.84,-0.84 v -35.79 a 0.84,0.84 0 0 1 0.84,-0.84 l 20.13,-0.02 a 0.84,0.84 0 0 1 0.84,0.84 v 35.83 a 0.84,0.84 0 0 0 0.84,0.84 z"
id="path32"
style="display:inline" />
<path
fill="#533566"
d="m 244.18983,105.71061 c 0.43,5.91 -0.88,11.6 4.42,16.25 q 8.73,7.63 17.84,0.35 4.54,-3.63 4.49,-8.19 -0.05,-4.39 0.31,-8.47 24.6,4 42.34,20.72 l -0.18,37.49 -110.93,0.01 -0.09,-37.61 q 17.53,-16.43 41.8,-20.55 z"
id="path34"
style="display:inline" />
<path
fill="#6b438b"
d="m 202.38983,126.26061 0.09,37.61 -21.38,-0.49 a 1.13,1.13 0 0 1 -1.04,-1.49 q 7.21,-21.29 22.33,-35.63 z"
id="path36"
style="display:inline" />
<path
fill="#6b438b"
d="m 313.58983,126.37061 q 12.71,12.03 19.9,29.52 1.79,4.36 2.23,6.86 0.11,0.61 -0.51,0.62 l -21.8,0.49 z"
id="path38"
style="display:inline" />
<g
transform="matrix(0.77226665,0,0,0.77226665,154.89692,5.2164554)"
id="g4"
style="display:none">
<path
d="M 58,168 V 70 a 50,50 0 0 1 50,-50 h 20"
class="orange"
id="path1"
style="fill:none;stroke:#ff6600;stroke-width:25" />
<path
d="m 58,168 v -30 a 50,50 0 0 1 50,-50 h 20"
class="red"
id="path2-3"
style="fill:none;stroke:#d40000;stroke-width:25" />
<circle
cx="142"
cy="20"
r="18"
class="orange"
id="circle2"
style="fill:none;stroke:#ff6600;stroke-width:15" />
<circle
cx="142"
cy="88"
r="18"
class="red"
id="circle3"
style="fill:none;stroke:#d40000;stroke-width:15" />
<circle
cx="58"
cy="180"
r="18"
class="red"
id="circle4"
style="fill:none;stroke:#d40000;stroke-width:15" />
</g>
</g>
</svg>
</a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-ccf7ddec data-v-e5dd9c1c><span class="container" data-v-e5dd9c1c><span class="top" data-v-e5dd9c1c></span><span class="middle" data-v-e5dd9c1c></span><span class="bottom" data-v-e5dd9c1c></span></span></button></div></div></div></div><div class="divider" data-v-ccf7ddec><div class="divider-line" data-v-ccf7ddec></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-5d98c3a5 data-v-a6f0e41e><div class="container" data-v-a6f0e41e><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-a6f0e41e><span class="vpi-align-left menu-icon" data-v-a6f0e41e></span><span class="menu-text" data-v-a6f0e41e>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-a6f0e41e data-v-17a5e62e><button data-v-17a5e62e>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-5d98c3a5 data-v-575e6a36><div class="curtain" data-v-575e6a36></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-575e6a36><span class="visually-hidden" id="sidebar-aria-label" data-v-575e6a36> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="group" data-v-575e6a36><section class="VPSidebarItem level-0" data-v-575e6a36 data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h2 class="text" data-v-b8d55f3b>Recommended Pages</h2><!----></div><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/garden/my-projects" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>My Projects</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/garden/guide-to-incrementals" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Guide to Incrementals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/garden/the-small-web" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>The Small Web</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/garden/fedi-v2" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Fedi v2</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-575e6a36><section class="VPSidebarItem level-0" data-v-575e6a36 data-v-b8d55f3b><!----><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/changelog" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Changelog</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-5d98c3a5 data-v-1428d186><div class="VPDoc has-sidebar has-aside" data-v-1428d186 data-v-39a288b8><!--[--><!--]--><div class="container" data-v-39a288b8><div class="aside" data-v-39a288b8><div class="aside-curtain" data-v-39a288b8></div><div class="aside-container" data-v-39a288b8><div class="aside-content" data-v-39a288b8><div class="VPDocAside" data-v-39a288b8 data-v-3f215769><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-3f215769 data-v-a5bbad30><div class="content" data-v-a5bbad30><div class="outline-marker" data-v-a5bbad30></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-a5bbad30>On this page</div><ul class="VPDocOutlineItem root" data-v-a5bbad30 data-v-b933a997><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-3f215769></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-39a288b8><div class="content-container" data-v-39a288b8><!--[--><!--]--><main class="main" data-v-39a288b8><div style="position:relative;" class="vp-doc _public_lit_docs_upgrades" data-v-39a288b8><div><h1 id="upgrades" tabindex="-1">Upgrades <a class="header-anchor" href="#upgrades" aria-label="Permalink to &quot;Upgrades&quot;"></a></h1><p>Useful functions for dealing with Upgrades and implementing their effects:</p><ul><li>hasUpgrade(layer, id): determine if the player has the upgrade</li><li>upgradeEffect(layer, id): Returns the current effects of the upgrade, if any</li><li>buyUpgrade(layer, id): Buys an upgrade directly (if affordable)</li></ul><p>Hint: Basic point gain is calculated in <a href="/js/mod.js">mod.js</a>&#39;s &quot;getPointGen&quot; function.</p><p>Upgrades are stored in the following format:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">upgrades</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> rows</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: # </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">of</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> rows,</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> cols</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: # </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">of</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> columns,</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 11</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> description: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;Blah&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> cost: </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Decimal</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">100</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">),</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> etc</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> etc</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>Each upgrade should have an id where the first digit is the row and the second digit is the column.</p><p>Individual upgrades can have these features:</p><ul><li><p>title: <strong>optional</strong>. Displayed at the top in a larger font. It can also be a function that returns updating text. Can use basic HTML.</p></li><li><p>description: A description of the upgrade&#39;s effect. <em>You will also have to implement the effect where it is applied.</em> It can also be a function that returns updating text. Can use basic HTML.</p></li><li><p>effect(): <strong>optional</strong>. A function that calculates and returns the current values of any bonuses from the upgrade. Can return a value or an object containing multiple values.</p></li><li><p>effectDisplay(): <strong>optional</strong>. A function that returns a display of the current effects of the upgrade with formatting. Default displays nothing. Can use basic HTML.</p></li><li><p>fullDisplay(): <strong>OVERRIDE</strong>. Overrides the other displays and descriptions, and lets you set the full text for the upgrade. Can use basic HTML.</p></li><li><p>cost: A Decimal for the cost of the upgrade. By default, upgrades cost the main prestige currency for the layer.</p></li><li><p>unlocked(): <strong>optional</strong>. A function returning a bool to determine if the upgrade is visible or not. Default is unlocked.</p></li><li><p>onPurchase(): <strong>optional</strong>. This function will be called when the upgrade is purchased. Good for upgrades like &quot;makes this layer act like it was unlocked first&quot;.</p></li><li><p>style: <strong>optional</strong>. Applies CSS to this upgrade, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).</p></li><li><p>layer: <strong>assigned automagically</strong>. It&#39;s the same value as the name of this layer, so you can do <code>player[this.layer].points</code> or similar.</p></li><li><p>id: <strong>assigned automagically</strong>. It&#39;s the &quot;key&quot; which the upgrade was stored under, for convenient access. The upgrade in the example&#39;s id is 11.</p></li></ul><p>By default, upgrades use the main prestige currency for the layer. You can include these to change them (but it needs to be a Decimal):</p><ul><li><p>currencyDisplayName: <strong>optional</strong>. The name to display for the currency for the upgrade.</p></li><li><p>currencyInternalName: <strong>optional</strong>. The internal name for that currency.</p></li><li><p>currencyLayer: <strong>optional</strong>. The internal name of the layer that currency is stored in. If it&#39;s not in a layer (like Points), omit. If it&#39;s not stored directly in a layer, instead use the next feature.</p></li><li><p>currencyLocation: <strong>optional</strong>. If your currency is stored in something inside a layer (e.g. a buyable&#39;s amount), you can access it this way. This is a function returning the object in &quot;player&quot; that contains the value (like <code>player[this.layer].buyables</code>)</p></li></ul><p>If you want to do something more complicated like upgrades that cost two currencies, you can override the purchase system with these (and you need to use fullDisplay as well)</p><ul><li><p>canAfford(): <strong>OVERRIDE</strong>, a function determining if you are able to buy the upgrade</p></li><li><p>pay(): <strong>OVERRIDE</strong>, a function that reduces your currencies when you buy the upgrade</p></li></ul></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-d4a0bba5><!--[--><!--]--><div class="edit-info" data-v-d4a0bba5><!----><div class="last-updated" data-v-d4a0bba5><p class="VPLastUpdated" data-v-d4a0bba5 data-v-7e05ebdb>Last updated: <time datetime="2023-11-28T02:07:43.000Z" data-v-7e05ebdb></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-d4a0bba5><span class="visually-hidden" id="doc-footer-aria-label" data-v-d4a0bba5>Pager</span><div class="pager" data-v-d4a0bba5><!----></div><div class="pager" data-v-d4a0bba5><a class="VPLink link pager-link next" href="/garden/my-projects" data-v-d4a0bba5><!--[--><span class="desc" data-v-d4a0bba5>Next page</span><span class="title" data-v-d4a0bba5>My Projects</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"garden_open-source_index.md\":\"Y1Hj3nrd\",\"garden_advent-incremental_index.md\":\"B0XTCVXl\",\"garden_atproto_index.md\":\"Cyo2sC83\",\"changelog_index.md\":\"BwV4LaGd\",\"garden_babble-buds_index.md\":\"BauUUM6I\",\"garden_guide-to-incrementals_navigating-criticism_index.md\":\"CMwZX7Ph\",\"garden_my-personal-website_index.md\":\"DQZQnVUg\",\"garden_matrix_index.md\":\"OqO_Q0mM\",\"garden_kronos_index.md\":\"BDBUcfVF\",\"garden_activitypub_index.md\":\"Di_yVOdJ\",\"garden_forgejo_index.md\":\"DJulsGO7\",\"garden_chat-glue_index.md\":\"Bpgm7CWX\",\"garden_chronological_index.md\":\"Cd-xwCUg\",\"garden_commune_index.md\":\"B-K7CSbM\",\"garden_logseq_index.md\":\"Cl8B1iNK\",\"garden_dice-armor_index.md\":\"COvDpQAI\",\"garden_incremental-social_index.md\":\"n7o6Nj2g\",\"garden_mbin_index.md\":\"CN9pPi-M\",\"garden_federated-identity_index.md\":\"D-rPgV8P\",\"garden_the-beginner-s-guide_index.md\":\"BpByCu4t\",\"garden_the-cozy-web_index.md\":\"t3zllEfv\",\"garden_this-knowledge-hub_index.md\":\"CNGcAqoo\",\"garden_wanderstop_index.md\":\"D9-8n2TP\",\"garden_webrings_index.md\":\"BTkm5IDe\",\"garden_ivy-road_index.md\":\"Ft1KYtnl\",\"garden_decentralized_index.md\":\"6UOMxEBF\",\"garden_freeform-vs-chronological-dichotomy_index.md\":\"Cd3oyGml\",\"garden_fediverse_index.md\":\"2XKf31Ag\",\"garden_planar-pioneers_index.md\":\"hn_kJMkJ\",\"garden_game-dev-tree_index.md\":\"DBh0TgV1\",\"garden_cinny_index.md\":\"Bss7HQO5\",\"garden_social-media_index.md\":\"D5KXsIaj\",\"garden_weird_index.md\":\"CXWwzbbK\",\"garden_v-ecs_index.md\":\"CiH9UtXe\",\"garden_davey-wreden_index.md\":\"Bg9kqpin\",\"garden_opti-speech_index.md\":\"CzXrZWab\",\"garden_garden-rss_index.md\":\"CtGr3-wN\",\"garden_profectus_index.md\":\"DIXr6iUB\",\"garden_digital-gardens_index.md\":\"C--zDPHT\",\"garden_my-projects_index.md\":\"1oaQdOdu\",\"public_gamedevtree_2.0-format-changes.md\":\"BJWVbIw2\",\"public_gamedevtree_docs_bars.md\":\"BOkZNfjK\",\"public_gamedevtree_readme.md\":\"BcJ-DaYW\",\"public_gamedevtree_changelog.md\":\"yaSdB86a\",\"public_gamedevtree_docs_!general-info.md\":\"60si-HlW\",\"public_gamedevtree_docs_achievements.md\":\"Byb7DjwU\",\"garden_freeform_index.md\":\"BjCjyuRU\",\"guide-to-incrementals_ludology_content_index.md\":\"DrX3RUub\",\"garden_guide-to-incrementals_index.md\":\"Co1JL6p4\",\"garden_synapse_index.md\":\"BT9y_kIz\",\"garden_capture-the-citadel_index.md\":\"Dr3mlMpo\",\"garden_vitepress_index.md\":\"FUjQrRdI\",\"guide-to-incrementals_ludology_appeal-developers_index.md\":\"B3Lh8HIP\",\"garden_guide-to-incrementals_what-is-content_index.md\":\"CqCONGzP\",\"garden_nostr_index.md\":\"YXtJK3SL\",\"guide-to-incrementals_design_criticism_index.md\":\"f96IunmV\",\"guide-to-incrementals_index.md\":\"DKlWf0lO\",\"public_gamedevtree_docs_buyables.md\":\"Bdb3l1uw\",\"public_gamedevtree_docs_challenges.md\":\"BsXIWoTI\",\"public_gamedevtree_docs_basic-layer-breakdown.md\":\"Lt_Kak5C\",\"public_gamedevtree_docs_clickables.md\":\"CYP_r85U\",\"public_gamedevtree_docs_milestones.md\":\"Phzy1O6H\",\"public_gamedevtree_docs_infoboxes.md\":\"u7lbf1fe\",\"public_gamedevtree_docs_subtabs-and-microtabs.md\":\"D3v8JvXX\",\"public_gamedevtree_docs_main-mod-info.md\":\"CzntOXuT\",\"public_gamedevtree_docs_getting-started.md\":\"53r6S_jZ\",\"public_gamedevtree_docs_layer-features.md\":\"BBomRnin\",\"public_gamedevtree_docs_updating-tmt.md\":\"Cym0rRYz\",\"public_kronos_docs_basic-layer-breakdown.md\":\"MMKYyoj1\",\"public_kronos_docs_buyables.md\":\"DApk6nw5\",\"public_kronos_docs_challenges.md\":\"Cn9Xc7xE\",\"public_kronos_docs_clickables.md\":\"BzXBLTUl\",\"public_kronos_docs_custom-tab-layouts.md\":\"BbyIoWME\",\"public_kronos_docs_grids.md\":\"3_YSBuDO\",\"public_kronos_docs_infoboxes.md\":\"DpZxLNRR\",\"public_kronos_docs_milestones.md\":\"D2as2Rdw\",\"public_kronos_docs_layer-features.md\":\"Bz9OYgri\",\"public_kronos_docs_getting-started.md\":\"CQfW9cEX\",\"public_kronos_docs_main-mod-info.md\":\"ByNe_g0w\",\"public_kronos_docs_subtabs-and-microtabs.md\":\"Bqm7YUXh\",\"public_kronos_docs_particles.md\":\"DkE7U5GT\",\"public_lit_old things_2.0-format-changes.md\":\"y8RAczqh\",\"public_kronos_docs_trees-and-tree-customization.md\":\"DZzDglty\",\"public_lit_readme.md\":\"pVsJJuH2\",\"public_kronos_docs_updating-tmt.md\":\"B2tZSHuA\",\"public_lit_docs_achievements.md\":\"z7uTtaPO\",\"public_kronos_docs_bars.md\":\"JgNsk6mY\",\"public_kronos_docs_upgrades.md\":\"5OAqntPP\",\"public_lit_changelog.md\":\"Dj7fgFUm\",\"public_lit_docs_bars.md\":\"hc6LT70W\",\"guide-to-incrementals_ludology_appeal-gamers_index.md\":\"CjswzOO0\",\"public_lit_docs_milestones.md\":\"DKpEd4GK\",\"public_lit_docs_challenges.md\":\"FvqZDXVG\",\"guide-to-incrementals_ludology_definition_index.md\":\"DKOCC4rn\",\"index.md\":\"e0Tbp8L9\",\"public_lit_docs_infoboxes.md\":\"Be2LqzDD\",\"public_lit_docs_layer-features.md\":\"BSLdBpI-\",\"public_lit_docs_trees-and-tree-customization.md\":\"CWsN4p6Q\",\"garden_guide-to-incrementals_appeal-to-players_index.md\":\"CDzvJbrR\",\"public_lit_docs_subtabs-and-microtabs.md\":\"CICoMMMb\",\"garden_fedi-v2_index.md\":\"CexUvcsw\",\"public_lit_docs_upgrades.md\":\"DnP9Av1u\",\"garden_guide-to-incrementals_appeal-to-developers_index.md\":\"D4ecLSjy\",\"garden_the-small-web_index.md\":\"CrRjNrVJ\",\"public_lit_docs_main-mod-info.md\":\"CUo3Y8ir\",\"public_gamedevtree_docs_custom-tab-layouts.md\":\"DXFeTlpj\",\"public_gamedevtree_docs_upgrades.md\":\"hegmaS21\",\"public_lit_docs_getting-started.md\":\"MYuuOf2Q\",\"public_lit_docs_buyables.md\":\"DilfnDIO\",\"public_lit_docs_!general-info.md\":\"CDTQvlu3\",\"public_lit_docs_clickables.md\":\"D9eesbmM\",\"public_lit_docs_basic-layer-breakdown.md\":\"CqbgegVm\",\"public_kronos_old things_2.0-format-changes.md\":\"B6DTr0jJ\",\"public_kronos_docs_!general-info.md\":\"DvOjN6Rt\",\"public_lit_docs_custom-tab-layouts.md\":\"BYNeuJZ1\",\"public_lit_docs_updating-tmt.md\":\"K90Uh1tC\",\"public_kronos_readme.md\":\"DOcyAoHv\",\"public_kronos_changelog.md\":\"paCgtsXh\",\"garden_guide-to-incrementals_defining-the-genre_index.md\":\"B3Pbk9_M\",\"public_kronos_docs_achievements.md\":\"B2ZLvQuE\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"The Paper Pilot\",\"description\":\"The Paper Pilot Personal Website\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"outline\":\"deep\",\"nav\":[{\"text\":\"Profectus\",\"link\":\"https://moddingtree.com\"},{\"text\":\"Incremental Social\",\"link\":\"https://incremental.social\"}],\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/thepaperpilot\"},{\"icon\":\"linkedin\",\"link\":\"https://www.linkedin.com/pub/anthony-lawn/a9/a98/2\"},{\"icon\":{\"svg\":\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:cc=\\\"http://creativecommons.org/ns#\\\" xmlns:dc=\\\"http://purl.org/dc/elements/1.1/\\\" xmlns:rdf=\\\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\\\" version=\\\"1.1\\\" viewBox=\\\"0 0 27.9 32\\\" style=\\\"background-color:white\\\">\\n <g xmlns=\\\"http://www.w3.org/2000/svg\\\" transform=\\\"translate(-.095 .005)\\\" fill=\\\"#040404\\\">\\n <path d=\\\"m27.1 31.2v-30.5h-2.19v-0.732h3.04v32h-3.04v-0.732z\\\"/>\\n <path d=\\\"m8.23 10.4v1.54h0.044c0.385-0.564 0.893-1.03 1.49-1.37 0.58-0.323 1.25-0.485 1.99-0.485 0.72 0 1.38 0.14 1.97 0.42 0.595 0.279 1.05 0.771 1.36 1.48 0.338-0.5 0.796-0.941 1.38-1.32 0.58-0.383 1.27-0.574 2.06-0.574 0.602 0 1.16 0.074 1.67 0.22 0.514 0.148 0.954 0.383 1.32 0.707 0.366 0.323 0.653 0.746 0.859 1.27 0.205 0.522 0.308 1.15 0.308 1.89v7.63h-3.13v-6.46c0-0.383-0.015-0.743-0.044-1.08-0.0209-0.307-0.103-0.607-0.242-0.882-0.133-0.251-0.336-0.458-0.584-0.596-0.257-0.146-0.606-0.22-1.05-0.22-0.44 0-0.796 0.085-1.07 0.253-0.272 0.17-0.485 0.39-0.639 0.662-0.159 0.287-0.264 0.602-0.308 0.927-0.052 0.347-0.078 0.697-0.078 1.05v6.35h-3.13v-6.4c0-0.338-7e-3 -0.673-0.021-1-0.0114-0.314-0.0749-0.623-0.188-0.916-0.108-0.277-0.3-0.512-0.55-0.673-0.258-0.168-0.636-0.253-1.14-0.253-0.198 0.0083-0.394 0.042-0.584 0.1-0.258 0.0745-0.498 0.202-0.705 0.374-0.228 0.184-0.422 0.449-0.584 0.794-0.161 0.346-0.242 0.798-0.242 1.36v6.62h-3.13v-11.4z\\\"/>\\n <path d=\\\"m0.936 0.732v30.5h2.19v0.732h-3.04v-32h3.03v0.732z\\\"/>\\n </g>\\n </svg>\"},\"link\":\"https://matrix.to/#/@thepaperpilot:incremental.social\"},{\"icon\":{\"svg\":\"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\"?>\\n<svg\\n version=\\\"1.1\\\"\\n viewBox=\\\"0 0 334.73599 334.736\\\"\\n id=\\\"svg40\\\"\\n sodipodi:docname=\\\"logo_condensed.svg\\\"\\n inkscape:version=\\\"1.3.1 (5ab75fa947, 2023-11-03)\\\"\\n width=\\\"334.73599\\\"\\n height=\\\"334.73599\\\"\\n inkscape:export-filename=\\\"logo_condensed_forgejo.png\\\"\\n inkscape:export-xdpi=\\\"96\\\"\\n inkscape:export-ydpi=\\\"96\\\"\\n xmlns:inkscape=\\\"http://www.inkscape.org/namespaces/inkscape\\\"\\n xmlns:sodipodi=\\\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n xmlns:svg=\\\"http://www.w3.org/2000/svg\\\">\\n <defs\\n id=\\\"defs44\\\" />\\n <sodipodi:namedview\\n id=\\\"namedview42\\\"\\n pagecolor=\\\"#505050\\\"\\n bordercolor=\\\"#eeeeee\\\"\\n borderopacity=\\\"1\\\"\\n inkscape:pageshadow=\\\"0\\\"\\n inkscape:pageopacity=\\\"0\\\"\\n inkscape:pagecheckerboard=\\\"0\\\"\\n showgrid=\\\"false\\\"\\n inkscape:zoom=\\\"2.8284271\\\"\\n inkscape:cx=\\\"87.327687\\\"\\n inkscape:cy=\\\"132.40574\\\"\\n inkscape:window-width=\\\"2560\\\"\\n inkscape:window-height=\\\"1369\\\"\\n inkscape:window-x=\\\"-8\\\"\\n inkscape:window-y=\\\"-8\\\"\\n inkscape:window-maximized=\\\"1\\\"\\n inkscape:current-layer=\\\"g4\\\"\\n inkscape:showpageshadow=\\\"0\\\"\\n inkscape:deskcolor=\\\"#d1d1d1\\\"\\n showguides=\\\"true\\\">\\n <sodipodi:guide\\n position=\\\"264.97068,-61.5051\\\"\\n orientation=\\\"1,0\\\"\\n id=\\\"guide1\\\"\\n inkscape:locked=\\\"false\\\" />\\n <sodipodi:guide\\n position=\\\"93.001002,77.044749\\\"\\n orientation=\\\"1,0\\\"\\n id=\\\"guide2\\\"\\n inkscape:locked=\\\"false\\\" />\\n <sodipodi:guide\\n position=\\\"109.56249,95.005809\\\"\\n orientation=\\\"1,0\\\"\\n id=\\\"guide3\\\"\\n inkscape:locked=\\\"false\\\" />\\n <sodipodi:guide\\n position=\\\"163.99999,77.505809\\\"\\n orientation=\\\"1,0\\\"\\n id=\\\"guide4\\\"\\n inkscape:locked=\\\"false\\\" />\\n <sodipodi:guide\\n position=\\\"179,1.5058096\\\"\\n orientation=\\\"1,0\\\"\\n id=\\\"guide5\\\"\\n inkscape:locked=\\\"false\\\" />\\n </sodipodi:namedview>\\n <g\\n id=\\\"g1\\\"\\n transform=\\\"translate(-1,84.932692)\\\">\\n <path\\n fill=\\\"#6b438b\\\"\\n d=\\\"m 271.24983,105.65061 q -0.36,4.08 -0.31,8.47 0.05,4.56 -4.49,8.19 -9.11,7.28 -17.84,-0.35 c -5.3,-4.65 -3.99,-10.34 -4.42,-16.25 -11.33,-3.3 -21.65,-12.470005 -22.8,-24.590005 q -0.53,-5.59 -0.95,-11.21 -0.04,-0.52 -0.53,-0.64 c -4.87,-1.23 -7.99,-2.08 -10.29,-6.94 -3.9,-8.23 0.79,-15.35 8.92,-18.12 a 0.39,0.4 77.9 0 0 0.27,-0.41 c -0.74,-8.02 -1.4,-15.08 1.56,-22.79 3.11,-8.09 9.57,-14.2599996 17.53,-17.6199996 q 4.11,-1.73 10.44,-2.07 8.68,-0.46000001 17.4,-0.26 16.85,0.37 26.28,13.5899996 c 6.43,9.02 5.96,18.48 5.03,29.16 q -0.05,0.51 0.45,0.64 c 13.7,3.61 12.56,22.82 -1.42,24.78 a 0.71,0.71 0 0 0 -0.61,0.65 c -0.38,5.39 -0.17,11.34 -2.1,16.46 q -5.7,15.160005 -22.12,19.310005 z\\\"\\n id=\\\"path28\\\"\\n style=\\\"display:inline\\\" />\\n <path\\n fill=\\\"#eceff4\\\"\\n d=\\\"m 142.39,41.700605 -31,11.57 a 0.62,0.61 79.8 0 1 -0.83,-0.58 l 0.01,-19.31 q 0,-0.55 0.51,-0.74 23.03,-8.68 46.02,-17.25 c 2.57,-0.96 4.78,-0.76 7.42,-0.75 a 0.49,0.49 0 0 1 0.49,0.49 V 147.45061 a 0.79,0.79 0 0 1 -0.8,0.79 l -19.99,-0.01 q -1.17,0 -1.17,-1.16 V 42.160605 a 0.49,0.49 0 0 0 -0.66,-0.46 z\\\"\\n id=\\\"path30\\\"\\n style=\\\"display:inline\\\" />\\n <path\\n fill=\\\"#eceff4\\\"\\n d=\\\"m 59.21,74.480605 h 33.95 a 0.84,0.84 0 0 1 0.84,0.84 l -0.01,18.96 a 0.84,0.84 0 0 1 -0.84,0.84 l -33.88,0.03 a 0.84,0.84 0 0 0 -0.84,0.84 l -0.08,38.580005 a 0.84,0.84 0 0 1 -0.84,0.84 l -20.11,-0.01 a 0.84,0.84 0 0 1 -0.84,-0.84 L 36.55,95.980605 a 0.84,0.84 0 0 0 -0.84,-0.84 H 1.84 a 0.84,0.84 0 0 1 -0.84,-0.84 l 0.02,-19.02 a 0.84,0.84 0 0 1 0.84,-0.84 l 33.86,0.02 a 0.84,0.84 0 0 0 0.84,-0.84 v -35.79 a 0.84,0.84 0 0 1 0.84,-0.84 l 20.13,-0.02 a 0.84,0.84 0 0 1 0.84,0.84 v 35.83 a 0.84,0.84 0 0 0 0.84,0.84 z\\\"\\n id=\\\"path32\\\"\\n style=\\\"display:inline\\\" />\\n <path\\n fill=\\\"#533566\\\"\\n d=\\\"m 244.18983,105.71061 c 0.43,5.91 -0.88,11.6 4.42,16.25 q 8.73,7.63 17.84,0.35 4.54,-3.63 4.49,-8.19 -0.05,-4.39 0.31,-8.47 24.6,4 42.34,20.72 l -0.18,37.49 -110.93,0.01 -0.09,-37.61 q 17.53,-16.43 41.8,-20.55 z\\\"\\n id=\\\"path34\\\"\\n style=\\\"display:inline\\\" />\\n <path\\n fill=\\\"#6b438b\\\"\\n d=\\\"m 202.38983,126.26061 0.09,37.61 -21.38,-0.49 a 1.13,1.13 0 0 1 -1.04,-1.49 q 7.21,-21.29 22.33,-35.63 z\\\"\\n id=\\\"path36\\\"\\n style=\\\"display:inline\\\" />\\n <path\\n fill=\\\"#6b438b\\\"\\n d=\\\"m 313.58983,126.37061 q 12.71,12.03 19.9,29.52 1.79,4.36 2.23,6.86 0.11,0.61 -0.51,0.62 l -21.8,0.49 z\\\"\\n id=\\\"path38\\\"\\n style=\\\"display:inline\\\" />\\n <g\\n transform=\\\"matrix(0.77226665,0,0,0.77226665,154.89692,5.2164554)\\\"\\n id=\\\"g4\\\"\\n style=\\\"display:none\\\">\\n <path\\n d=\\\"M 58,168 V 70 a 50,50 0 0 1 50,-50 h 20\\\"\\n class=\\\"orange\\\"\\n id=\\\"path1\\\"\\n style=\\\"fill:none;stroke:#ff6600;stroke-width:25\\\" />\\n <path\\n d=\\\"m 58,168 v -30 a 50,50 0 0 1 50,-50 h 20\\\"\\n class=\\\"red\\\"\\n id=\\\"path2-3\\\"\\n style=\\\"fill:none;stroke:#d40000;stroke-width:25\\\" />\\n <circle\\n cx=\\\"142\\\"\\n cy=\\\"20\\\"\\n r=\\\"18\\\"\\n class=\\\"orange\\\"\\n id=\\\"circle2\\\"\\n style=\\\"fill:none;stroke:#ff6600;stroke-width:15\\\" />\\n <circle\\n cx=\\\"142\\\"\\n cy=\\\"88\\\"\\n r=\\\"18\\\"\\n class=\\\"red\\\"\\n id=\\\"circle3\\\"\\n style=\\\"fill:none;stroke:#d40000;stroke-width:15\\\" />\\n <circle\\n cx=\\\"58\\\"\\n cy=\\\"180\\\"\\n r=\\\"18\\\"\\n class=\\\"red\\\"\\n id=\\\"circle4\\\"\\n style=\\\"fill:none;stroke:#d40000;stroke-width:15\\\" />\\n </g>\\n </g>\\n</svg>\\n\"},\"link\":\"https://incremental.social/u/thepaperpilot\"}],\"sidebar\":[{\"text\":\"Recommended Pages\",\"items\":[{\"text\":\"My Projects\",\"link\":\"/garden/my-projects\"},{\"text\":\"Guide to Incrementals\",\"link\":\"/garden/guide-to-incrementals\"},{\"text\":\"The Small Web\",\"link\":\"/garden/the-small-web\"},{\"text\":\"Fedi v2\",\"link\":\"/garden/fedi-v2\"}]},{\"text\":\"Changelog\",\"link\":\"/changelog\"}]},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":true}");</script>
</body>
</html>