pages/public/lit/docs/layer-features.html

53 lines
No EOL
52 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>Layer Features | The Paper Pilot</title>
<meta name="description" content="The Paper Pilot's Digital Garden">
<meta name="generator" content="VitePress v1.2.2">
<link rel="preload stylesheet" href="/assets/style.CjXGZyiT.css" as="style">
<script type="module" src="/assets/app.BX9nMp7S.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.DvHfxfnp.js">
<link rel="modulepreload" href="/assets/chunks/theme.CWf7izAC.js">
<link rel="modulepreload" href="/assets/public_lit_docs_layer-features.md.DF81fjyw.lean.js">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Itim&amp;family=Roboto+Mono:ital,wght@0,400;0,600;1,400&amp;display=block">
<link rel="manifest" href="/site.webmanifest">
<link rel="alternate" type="text/mf2+html" href="/changelog">
<link rel="alternate" type="application/rss+xml" title="Changelog" href="/changelog/rss">
<link rel="alternate" type="application/atom+xml" title="Changelog" href="/changelog/atom">
<link rel="alternate" type="application/json+xml" title="Changelog" href="/changelog/json">
<link rel="me" href="mailto:thepaperpilot@incremental.social">
<link rel="me" href="https://incremental.social/u/thepaperpilot">
<link rel="me" href="https://matrix.to/#/@thepaperpilot:incremental.social">
<link rel="me" href="https://code.incremental.social/thepaperpilot">
<link rel="me" href="https://www.linkedin.com/in/anthony-lawn/">
<link rel="me" href="https://mastodon.gamedev.place/@thepaperpilot">
<link rel="me" href="https://beehaw.org/u/thepaperpilot">
<link rel="me" href="https://www.reddit.com/user/ThePaperPilot/">
<link rel="me" href="https://github.com/thepaperpilot">
<link rel="me" href="https://twitter.com/ThePaperPilot">
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
<meta name="og:title" content="Layer Features">
<meta name="og:description" content="">
<meta name="og:image" content="https://www.thepaperpilot.org/paperpilot_thumb.png">
<meta name="og:site_name" content="The Paper Pilot's Digital Garden">
</head>
<body>
<div id="app"><div class="Layout" data-v-5a79a4a1 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="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></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="VPSocialLinks VPNavBarSocialLinks social-links" data-v-ccf7ddec data-v-0394ad82 data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://code.incremental.social/thepaperpilot" aria-label target="_blank" rel="noopener" data-v-7bc22406 data-v-eee4e7cb><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Forgejo</title><path d="M16.7773 0c1.6018 0 2.9004 1.2986 2.9004 2.9005s-1.2986 2.9004-2.9004 2.9004c-1.0854 0-2.0315-.596-2.5288-1.4787H12.91c-2.3322 0-4.2272 1.8718-4.2649 4.195l-.0007 2.1175a7.0759 7.0759 0 0 1 4.148-1.4205l.1176-.001 1.3385.0002c.4973-.8827 1.4434-1.4788 2.5288-1.4788 1.6018 0 2.9004 1.2986 2.9004 2.9005s-1.2986 2.9004-2.9004 2.9004c-1.0854 0-2.0315-.596-2.5288-1.4787H12.91c-2.3322 0-4.2272 1.8718-4.2649 4.195l-.0007 2.319c.8827.4973 1.4788 1.4434 1.4788 2.5287 0 1.602-1.2986 2.9005-2.9005 2.9005-1.6018 0-2.9004-1.2986-2.9004-2.9005 0-1.0853.596-2.0314 1.4788-2.5287l-.0002-9.9831c0-3.887 3.1195-7.0453 6.9915-7.108l.1176-.001h1.3385C14.7458.5962 15.692 0 16.7773 0ZM7.2227 19.9052c-.6596 0-1.1943.5347-1.1943 1.1943s.5347 1.1943 1.1943 1.1943 1.1944-.5347 1.1944-1.1943-.5348-1.1943-1.1944-1.1943Zm9.5546-10.4644c-.6596 0-1.1944.5347-1.1944 1.1943s.5348 1.1943 1.1944 1.1943c.6596 0 1.1943-.5347 1.1943-1.1943s-.5347-1.1943-1.1943-1.1943Zm0-7.7346c-.6596 0-1.1944.5347-1.1944 1.1943s.5348 1.1943 1.1944 1.1943c.6596 0 1.1943-.5347 1.1943-1.1943s-.5347-1.1943-1.1943-1.1943Z"/></svg></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 role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Matrix</title><path d="M.632.55v22.9H2.28V24H0V0h2.28v.55zm7.043 7.26v1.157h.033c.309-.443.683-.784 1.117-1.024.433-.245.936-.365 1.5-.365.54 0 1.033.107 1.481.314.448.208.785.582 1.02 1.108.254-.374.6-.706 1.034-.992.434-.287.95-.43 1.546-.43.453 0 .872.056 1.26.167.388.11.716.286.993.53.276.245.489.559.646.951.152.392.23.863.23 1.417v5.728h-2.349V11.52c0-.286-.01-.559-.032-.812a1.755 1.755 0 0 0-.18-.66 1.106 1.106 0 0 0-.438-.448c-.194-.11-.457-.166-.785-.166-.332 0-.6.064-.803.189a1.38 1.38 0 0 0-.48.499 1.946 1.946 0 0 0-.231.696 5.56 5.56 0 0 0-.06.785v4.768h-2.35v-4.8c0-.254-.004-.503-.018-.752a2.074 2.074 0 0 0-.143-.688 1.052 1.052 0 0 0-.415-.503c-.194-.125-.476-.19-.854-.19-.111 0-.259.024-.439.074-.18.051-.36.143-.53.282-.171.138-.319.337-.439.595-.12.259-.18.6-.18 1.02v4.966H5.46V7.81zm15.693 15.64V.55H21.72V0H24v24h-2.28v-.55z"/></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><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fediverse</title><path d="M4.589 7.91a2.295 2.295 0 01-2.416 2.166A2.295 2.295 0 01.005 7.66a2.295 2.295 0 012.418-2.167A2.295 2.295 0 014.589 7.91zm1.876 11.995a2.295 2.295 0 01-2.417 2.167 2.295 2.295 0 01-2.166-2.417 2.295 2.295 0 012.416-2.166 2.295 2.295 0 012.167 2.416zm11.993 1.925a2.295 2.295 0 01-2.416 2.167 2.295 2.295 0 01-2.168-2.418 2.295 2.295 0 012.417-2.167 2.295 2.295 0 012.167 2.418zm5.537-10.807a2.295 2.295 0 01-2.417 2.168 2.295 2.295 0 01-2.168-2.418 2.295 2.295 0 012.418-2.165 2.295 2.295 0 012.167 2.415zm-8.57-8.603a2.295 2.295 0 01-2.419 2.168A2.295 2.295 0 0110.84 2.17 2.295 2.295 0 0113.256.003a2.295 2.295 0 012.168 2.418zM4.79 7.407a2.525 2.525 0 01.028.516 2.525 2.525 0 01-.263.99l3.716.595.731-1.425zm6.368 1.022l-.73 1.425 8.777 1.41a2.525 2.525 0 01-.025-.502 2.525 2.525 0 01.27-1.002zm3.118-3.887a2.525 2.525 0 01-1.283.274 2.525 2.525 0 01-.22-.023l.58 3.712 1.58.254zm-.588 6.12l1.37 8.775a2.525 2.525 0 011.245-.254 2.525 2.525 0 01.264.03l-1.296-8.297zm-3.046-7.96L4.098 6.02a2.525 2.525 0 01.688 1.36l6.545-3.317a2.525 2.525 0 01-.688-1.358zm4.725.76a2.525 2.525 0 01-1.08 1.074l5.177 5.197a2.525 2.525 0 011.08-1.075zm4.56 9.23l-3.343 6.524a2.525 2.525 0 011.355.695l3.344-6.525a2.525 2.525 0 01-1.357-.695zm-13.26 6.716a2.525 2.525 0 01.025.51 2.525 2.525 0 01-.266.995l7.243 1.163a2.525 2.525 0 01-.027-.508 2.525 2.525 0 01.267-.997zm-3.245-9.366a2.525 2.525 0 01-1.26.264 2.525 2.525 0 01-.245-.026l1.132 7.244a2.525 2.525 0 011.262-.264 2.525 2.525 0 01.243.025zm7.935-5.954l-3.83 7.474 1.13 1.135 4.055-7.914a2.525 2.525 0 01-1.355-.695zm-4.826 9.418l-1.94 3.786a2.525 2.525 0 011.356.696l1.715-3.348zm12.682-2.2l-3.355 1.7.247 1.583 3.797-1.925a2.525 2.525 0 01-.689-1.36zm-5.305 2.687l-7.935 4.02a2.525 2.525 0 01.69 1.36l7.494-3.797zM4.534 8.95a2.525 2.525 0 01-1.08 1.075l5.93 5.95 1.43-.724zm7.821 7.85l-1.43.724 3.004 3.014a2.525 2.525 0 011.08-1.075z"/></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 social-links" data-v-d0bd9dde><div class="VPSocialLinks social-links-list" data-v-d0bd9dde data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://code.incremental.social/thepaperpilot" aria-label target="_blank" rel="noopener" data-v-7bc22406 data-v-eee4e7cb><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Forgejo</title><path d="M16.7773 0c1.6018 0 2.9004 1.2986 2.9004 2.9005s-1.2986 2.9004-2.9004 2.9004c-1.0854 0-2.0315-.596-2.5288-1.4787H12.91c-2.3322 0-4.2272 1.8718-4.2649 4.195l-.0007 2.1175a7.0759 7.0759 0 0 1 4.148-1.4205l.1176-.001 1.3385.0002c.4973-.8827 1.4434-1.4788 2.5288-1.4788 1.6018 0 2.9004 1.2986 2.9004 2.9005s-1.2986 2.9004-2.9004 2.9004c-1.0854 0-2.0315-.596-2.5288-1.4787H12.91c-2.3322 0-4.2272 1.8718-4.2649 4.195l-.0007 2.319c.8827.4973 1.4788 1.4434 1.4788 2.5287 0 1.602-1.2986 2.9005-2.9005 2.9005-1.6018 0-2.9004-1.2986-2.9004-2.9005 0-1.0853.596-2.0314 1.4788-2.5287l-.0002-9.9831c0-3.887 3.1195-7.0453 6.9915-7.108l.1176-.001h1.3385C14.7458.5962 15.692 0 16.7773 0ZM7.2227 19.9052c-.6596 0-1.1943.5347-1.1943 1.1943s.5347 1.1943 1.1943 1.1943 1.1944-.5347 1.1944-1.1943-.5348-1.1943-1.1944-1.1943Zm9.5546-10.4644c-.6596 0-1.1944.5347-1.1944 1.1943s.5348 1.1943 1.1944 1.1943c.6596 0 1.1943-.5347 1.1943-1.1943s-.5347-1.1943-1.1943-1.1943Zm0-7.7346c-.6596 0-1.1944.5347-1.1944 1.1943s.5348 1.1943 1.1944 1.1943c.6596 0 1.1943-.5347 1.1943-1.1943s-.5347-1.1943-1.1943-1.1943Z"/></svg></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 role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Matrix</title><path d="M.632.55v22.9H2.28V24H0V0h2.28v.55zm7.043 7.26v1.157h.033c.309-.443.683-.784 1.117-1.024.433-.245.936-.365 1.5-.365.54 0 1.033.107 1.481.314.448.208.785.582 1.02 1.108.254-.374.6-.706 1.034-.992.434-.287.95-.43 1.546-.43.453 0 .872.056 1.26.167.388.11.716.286.993.53.276.245.489.559.646.951.152.392.23.863.23 1.417v5.728h-2.349V11.52c0-.286-.01-.559-.032-.812a1.755 1.755 0 0 0-.18-.66 1.106 1.106 0 0 0-.438-.448c-.194-.11-.457-.166-.785-.166-.332 0-.6.064-.803.189a1.38 1.38 0 0 0-.48.499 1.946 1.946 0 0 0-.231.696 5.56 5.56 0 0 0-.06.785v4.768h-2.35v-4.8c0-.254-.004-.503-.018-.752a2.074 2.074 0 0 0-.143-.688 1.052 1.052 0 0 0-.415-.503c-.194-.125-.476-.19-.854-.19-.111 0-.259.024-.439.074-.18.051-.36.143-.53.282-.171.138-.319.337-.439.595-.12.259-.18.6-.18 1.02v4.966H5.46V7.81zm15.693 15.64V.55H21.72V0H24v24h-2.28v-.55z"/></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><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fediverse</title><path d="M4.589 7.91a2.295 2.295 0 01-2.416 2.166A2.295 2.295 0 01.005 7.66a2.295 2.295 0 012.418-2.167A2.295 2.295 0 014.589 7.91zm1.876 11.995a2.295 2.295 0 01-2.417 2.167 2.295 2.295 0 01-2.166-2.417 2.295 2.295 0 012.416-2.166 2.295 2.295 0 012.167 2.416zm11.993 1.925a2.295 2.295 0 01-2.416 2.167 2.295 2.295 0 01-2.168-2.418 2.295 2.295 0 012.417-2.167 2.295 2.295 0 012.167 2.418zm5.537-10.807a2.295 2.295 0 01-2.417 2.168 2.295 2.295 0 01-2.168-2.418 2.295 2.295 0 012.418-2.165 2.295 2.295 0 012.167 2.415zm-8.57-8.603a2.295 2.295 0 01-2.419 2.168A2.295 2.295 0 0110.84 2.17 2.295 2.295 0 0113.256.003a2.295 2.295 0 012.168 2.418zM4.79 7.407a2.525 2.525 0 01.028.516 2.525 2.525 0 01-.263.99l3.716.595.731-1.425zm6.368 1.022l-.73 1.425 8.777 1.41a2.525 2.525 0 01-.025-.502 2.525 2.525 0 01.27-1.002zm3.118-3.887a2.525 2.525 0 01-1.283.274 2.525 2.525 0 01-.22-.023l.58 3.712 1.58.254zm-.588 6.12l1.37 8.775a2.525 2.525 0 011.245-.254 2.525 2.525 0 01.264.03l-1.296-8.297zm-3.046-7.96L4.098 6.02a2.525 2.525 0 01.688 1.36l6.545-3.317a2.525 2.525 0 01-.688-1.358zm4.725.76a2.525 2.525 0 01-1.08 1.074l5.177 5.197a2.525 2.525 0 011.08-1.075zm4.56 9.23l-3.343 6.524a2.525 2.525 0 011.355.695l3.344-6.525a2.525 2.525 0 01-1.357-.695zm-13.26 6.716a2.525 2.525 0 01.025.51 2.525 2.525 0 01-.266.995l7.243 1.163a2.525 2.525 0 01-.027-.508 2.525 2.525 0 01.267-.997zm-3.245-9.366a2.525 2.525 0 01-1.26.264 2.525 2.525 0 01-.245-.026l1.132 7.244a2.525 2.525 0 011.262-.264 2.525 2.525 0 01.243.025zm7.935-5.954l-3.83 7.474 1.13 1.135 4.055-7.914a2.525 2.525 0 01-1.355-.695zm-4.826 9.418l-1.94 3.786a2.525 2.525 0 011.356.696l1.715-3.348zm12.682-2.2l-3.355 1.7.247 1.583 3.797-1.925a2.525 2.525 0 01-.689-1.36zm-5.305 2.687l-7.935 4.02a2.525 2.525 0 01.69 1.36l7.494-3.797zM4.534 8.95a2.525 2.525 0 01-1.08 1.075l5.93 5.95 1.43-.724zm7.821 7.85l-1.43.724 3.004 3.014a2.525 2.525 0 011.08-1.075z"/></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/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/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/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/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="/about" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>About Me</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="/now" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>/now</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="/changelog" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Site 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 class="h-entry vp-doc _public_lit_docs_layer-features" data-v-39a288b8><div><h1 id="layer-features" tabindex="-1">Layer Features <a class="header-anchor" href="#layer-features" aria-label="Permalink to &quot;Layer Features&quot;"></a></h1><p>This is a more comprehensive list of established features to add to layers. You can add more freely, if you want to have other functions or values associated with your layer. These have special functionality, though.</p><p>You can make almost any value dynamic by using a function in its place, including all display strings and styling/color features.</p><h2 id="layer-definition-features" tabindex="-1">Layer Definition features <a class="header-anchor" href="#layer-definition-features" aria-label="Permalink to &quot;Layer Definition features&quot;"></a></h2><ul><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 to access the saved value. It makes copying code to new layers easier. It is also assigned to all upgrades and buyables and such.</p></li><li><p>name: <strong>optional</strong>. used in reset confirmations (and the default infobox title). If absent, it just uses the layer&#39;s id.</p></li><li><p>startData(): A function to return the default save data for this layer. Add any variables you have to it. Make sure to use <code>Decimal</code> values rather than normal numbers.</p><p>Standard values: - Required: - unlocked: a bool determining if this layer is unlocked or not - points: a Decimal, the main currency for the layer - Optional: - total: A Decimal, tracks total amount of main prestige currency. Always tracked, but only shown if you add it here. - best: A Decimal, tracks highest amount of main prestige currency. Always tracked, but only shown if you add it here. - unlockOrder: used to keep track of relevant layers unlocked before this one. - resetTime: A number, time since this layer was last prestiged (or reset by another layer)</p></li><li><p>color: A color associated with this layer, used in many places. (A string in hex format with a #)</p></li><li><p>row: The row of the layer, starting at 0. This affects where the node appears on the standard tree, and which resets affect the layer.</p><p>Using &quot;side&quot; instead of a number will cause the layer to appear off to the side as a smaller node (useful for achievements and statistics). Side layers are not affected by resets unless you add a doReset to them.</p></li><li><p>displayRow: <strong>OVERRIDE</strong> Changes where the layer node appears without changing where it is in the reset order.</p></li><li><p>resource: Name of the main currency you gain by resetting on this layer.</p></li><li><p>effect(): <strong>optional</strong>. A function that calculates and returns the current values of any bonuses inherent to the main currency. Can return a value or an object containing multiple values. <em>You will also have to implement the effect where it is applied.</em></p></li><li><p>effectDescription: <strong>optional</strong>. A function that returns a description of this effect. If the text stays constant, it can just be a string.</p></li><li><p>layerShown(): <strong>optional</strong>, A function returning a bool which determines if this layer&#39;s node should be visible on the tree. It can also return &quot;ghost&quot;, which will hide the layer, but its node will still take up space in the tree. Defaults to true.</p></li><li><p>hotkeys: <strong>optional</strong>. An array containing information on any hotkeys associated with this layer:</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;">hotkeys</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</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;"> key: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;p&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// What the hotkey button is. Use uppercase if it&#39;s combined with shift, or &quot;ctrl+x&quot; for holding down ctrl.</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> description: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;p: reset your points for prestige points&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// The description of the hotkey that is displayed in the game&#39;s How To Play tab</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> onPress</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (player.p.unlocked) </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">doReset</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;p&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) }</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;">]</span></span></code></pre></div></li><li><p>style: <strong>optional</strong>. a &quot;CSS object&quot; where the keys are CSS attributes, containing any CSS that should affect this layer&#39;s entire tab.</p></li><li><p>tabFormat: <strong>optional</strong>. use this if you want to add extra things to your tab or change the layout. <a href="./custom-tab-layouts">See here for more info.</a></p></li><li><p>midsection: <strong>optional</strong>, an alternative to <code>tabFormat</code>, which is inserted in between Milestones and Buyables in the standard tab layout. (cannot do subtabs)</p></li></ul><h2 id="big-features-all-optional" tabindex="-1">Big features (all optional) <a class="header-anchor" href="#big-features-all-optional" aria-label="Permalink to &quot;Big features (all optional)&quot;"></a></h2><ul><li><p>upgrades: A grid of one-time purchases which can have unique upgrade conditions, currency costs, and bonuses. <a href="./upgrades">See here for more info.</a></p></li><li><p>milestones: A list of bonuses gained upon reaching certain thresholds of a resource. Often used for automation/QOL. <a href="./milestones">See here for more info.</a></p></li><li><p>challenges: The player can enter challenges, which make the game harder. If they reach a goal and beat the challenge, they recieve a bonus. <a href="./challenges">See here for more info.</a></p></li><li><p>buyables: Effectively upgrades that can be bought multiple times, and are optionally respeccable. Many uses. <a href="./buyables">See here for more info.</a></p></li><li><p>clickables: Extremely versatile and generalized buttons which can only be clicked sometimes. <a href="./clickables">See here for more info.</a></p></li><li><p>microtabs: An area that functions like a set of subtabs, with buttons at the top changing the content within. (Advanced) <a href="./subtabs-and-microtabs">See here for more info.</a></p></li><li><p>bars: Display some information as a progress bar, gague, or similar. They are highly customizable, and can be vertical as well. <a href="./bars">See here for more info.</a></p></li><li><p>achievements: Kind of like milestones, but with a different display style and some other differences. Extra features are on the way at a later date! <a href="./achievements">See here for more info.</a></p></li><li><p>infoboxes: Displays some text in a box that can be shown or hidden. <a href="./infoboxes">See here for more info.</a></p></li><li><p>achievementPopups, milestonePopups: <strong>optional</strong>, If false, disables popup message when you get the achievement/milestone. True by default.</p></li></ul><h2 id="prestige-formula-features" tabindex="-1">Prestige formula features <a class="header-anchor" href="#prestige-formula-features" aria-label="Permalink to &quot;Prestige formula features&quot;"></a></h2><ul><li><p>type: <strong>optional</strong>. Determines which prestige formula you use. Defaults to &quot;none&quot;.</p><ul><li>&quot;normal&quot;: The amount of currency you gain is independent of its current amount (like Prestige). The formula before bonuses is based on <code>baseResource^exponent</code></li><li>&quot;static&quot;: The cost is dependent on your total after reset. The formula before bonuses is based on <code>base^(x^exponent)</code></li><li>&quot;custom&quot;: You can define everything, from the calculations to the text on the button, yourself. (See more at the bottom)</li><li>&quot;none&quot;: This layer does not prestige, and therefore does not need any of the other features in this section.</li></ul></li><li><p>baseResource: The name of the resource that determines how much of the main currency you gain on reset.</p></li><li><p>baseAmount(): A function that gets the current value of the base resource.</p></li><li><p>requires: A Decimal, the amount of the base needed to gain 1 of the prestige currency. Also the amount required to unlock the layer. You can instead make this a function, to make it harder if another layer was unlocked first (based on unlockOrder).</p></li><li><p>exponent: Used as described above.</p></li><li><p>base: <strong>sometimes required</strong>. required for &quot;static&quot; layers, used as described above. If absent, defaults to 2. Must be greater than 1.</p></li><li><p>roundUpCost: <strong>optional</strong>. a bool, which is true if the resource cost needs to be rounded up. (use if the base resource is a &quot;static&quot; currency.)</p></li><li><p>gainMult(), gainExp(): <strong>optional</strong>. Functions that calculate the multiplier and exponent on resource gain from upgrades and boosts and such. Plug in any bonuses here.</p></li><li><p>softcap, softcapPower: <strong>optional</strong>. For normal layers, gain beyond [softcap] points is put to the [softcapPower]th power Default for softcap is e1e7, and for power is 0.5.</p></li></ul><h2 id="other-prestige-related-features" tabindex="-1">Other prestige-related features <a class="header-anchor" href="#other-prestige-related-features" aria-label="Permalink to &quot;Other prestige-related features&quot;"></a></h2><ul><li><p>canBuyMax(): <strong>sometimes required</strong>. required for static layers, function used to determine if buying max is permitted.</p></li><li><p>onPrestige(gain): <strong>optional</strong>. A function that triggers when this layer prestiges, just before you gain the currency. Can be used to have secondary resource gain on prestige, or to recalculate things or whatnot.</p></li><li><p>resetDescription: <strong>optional</strong>. Use this to replace &quot;Reset for &quot; on the Prestige button with something else.</p></li><li><p>prestigeButtonText(): <strong>sometimes required</strong>. Use this to make the entirety of the text a Prestige button contains. Only required for custom layers, but usable by all types.</p></li><li><p>passiveGeneration(): <strong>optional</strong>, returns a regular number. You automatically generate your gain times this number every second (does nothing if absent) This is good for automating Normal layers.</p></li><li><p>autoPrestige(): <strong>optional</strong>, returns a boolean, if true, the layer will always automatically do a prestige if it can. This is good for automating Static layers.</p></li></ul><h2 id="tree-node-features" tabindex="-1">Tree/node features <a class="header-anchor" href="#tree-node-features" aria-label="Permalink to &quot;Tree/node features&quot;"></a></h2><ul><li><p>symbol: <strong>optional</strong>. The text that appears on this layer&#39;s node. Default is the layer id with the first letter capitalized.</p></li><li><p>image: <strong>override</strong>. The url (local or global) of an image that goes on the node. (Overrides symbol)</p></li><li><p>position: <strong>optional</strong>. Determines the horizontal position of the layer in its row in a standard tree. By default, it uses the layer id, and layers are sorted in alphabetical order.</p></li><li><p>branches: <strong>optional</strong>. An array of layer/node ids. On a tree, a line will appear from this layer to all of the layers in the list. Alternatively, an entry in the array can be a 2-element array consisting of the layer id and a color value. The color value can either be a string with a hex color code, or a number from 1-3 (theme-affected colors).</p></li><li><p>nodeStyle: <strong>optional</strong>. A CSS object, where the keys are CSS attributes, which styles this layer&#39;s node on the tree.</p></li><li><p>tooltip() / tooltipLocked(): <strong>optional</strong>. Functions that return text, which is the tooltip for the node when the layer is unlocked or locked, respectively. By default the tooltips behave the same as in the original Prestige Tree. If the value is &quot;&quot;, the tooltip will be disabled.</p></li></ul><h2 id="other-features" tabindex="-1">Other features <a class="header-anchor" href="#other-features" aria-label="Permalink to &quot;Other features&quot;"></a></h2><ul><li><p>doReset(resettingLayer): <strong>optional</strong>. Is triggered when a layer on a row greater than or equal to this one does a reset. The default behavior is to reset everything on the row, but only if it was triggered by a layer in a higher row. <code>doReset</code> is always called for side layers, but for these the default behavior is to reset nothing.</p><p>If you want to keep things, determine what to keep based on <code>resettingLayer</code>, <code>milestones</code>, and such, then call <code>layerDataReset(layer, keep)</code>, where <code>layer</code> is this layer, and <code>keep</code> is an array of the names of things to keep. It can include things like &quot;points&quot;, &quot;best&quot;, &quot;total&quot; (for this layer&#39;s prestige currency), &quot;upgrades&quot;, any unique variables like &quot;generatorPower&quot;, etc. If you want to only keep specific upgrades or something like that, save them in a separate variable, then call <code>layerDataReset</code>, and then set <code>player[this.layer].upgrades</code> to the saved upgrades.</p></li><li><p>update(diff): <strong>optional</strong>. This function is called every game tick. Use it for any passive resource production or time-based things. <code>diff</code> is the time since the last tick.</p></li><li><p>autoUpgrade: <strong>optional</strong>, a boolean value, if true, the game will attempt to buy this layer&#39;s upgrades every tick. Defaults to false.</p></li><li><p>automate(): <strong>optional</strong>. This function is called every game tick, after production. Use it to activate automation things that aren&#39;t otherwise supported.</p></li><li><p>resetsNothing: <strong>optional</strong>. Returns true if this layer shouldn&#39;t trigger any resets when you prestige.</p></li><li><p>increaseUnlockOrder: <strong>optional</strong>. An array of layer ids. When this layer is unlocked for the first time, the <code>unlockOrder</code> value for any not-yet-unlocked layers in this list increases. This can be used to make them harder to unlock.</p></li><li><p>shouldNotify: <strong>optional</strong>. A function to return true if this layer should be highlighted in the tree. The layer will automatically be highlighted if you can buy an upgrade whether you have this or not.</p></li><li><p>componentStyles: <strong>optional</strong>. An object that contains a set of functions returning CSS objects. Each of these will be applied to any components on the layer with the type of its id. Example:</p></li></ul><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;">componentStyles</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;challenge&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;height&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;200px&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">} },</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;prestige-button&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;color&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;#AA66AA&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">} }</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="custom-prestige-type" tabindex="-1">Custom Prestige type <a class="header-anchor" href="#custom-prestige-type" aria-label="Permalink to &quot;Custom Prestige type&quot;"></a></h2><p>(All of these can also be used by other prestige types)</p><ul><li><p>getResetGain(): <strong>mostly for custom prestige type</strong>. Returns how many points you should get if you reset now. You can call <code>getResetGain(this.layer, useType = &quot;static&quot;)</code> or similar to calculate what your gain would be under another prestige type (provided you have all of the required features in the layer).</p></li><li><p>getNextAt(canMax=false): <strong>mostly for custom prestige type</strong>. Returns how many of the base currency you need to get to the next point. <code>canMax</code> is an optional variable used with Static-ish layers to differentiate between if it&#39;s looking for the first point you can reset at, or the requirement for any gain at all (Supporting both is good). You can also call <code>getNextAt(this.layer, canMax=false, useType = &quot;static&quot;)</code> or similar to calculate what your next at would be under another prestige type (provided you have all of the required features in the layer).</p></li><li><p>canReset(): <strong>mostly for custom prestige type</strong>. Return true only if you have the resources required to do a prestige here.</p></li><li><p>prestigeNotify(): <strong>mostly for custom prestige types</strong>, returns true if this layer should be subtly highlighted to indicate you can prestige for a meaningful gain.</p></li></ul></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-d4a0bba5><!--[--><!--]--><!----><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/the-small-web" data-v-d4a0bba5><!--[--><span class="desc" data-v-d4a0bba5>Next page</span><span class="title" data-v-d4a0bba5>The Small Web</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><footer class="vp-doc" data-v-5a79a4a1><div data-v-5a79a4a1>CC 2024 <a class="h-card" rel="me" href="/about" data-v-5a79a4a1><img src="/me.jpg" alt="" data-v-5a79a4a1>The Paper Pilot</a>. <a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/4.0/" data-v-5a79a4a1>CC BY-NC-SA 4.0</a>.</div><div data-v-5a79a4a1>Any and all opinions listed here are my own and not representative of my employers; future, past and present.</div><div data-v-5a79a4a1><a href="https://resume.incremental.social/thepaperpilot/thepaperpilot" data-v-5a79a4a1>Resume</a> (not actively seeking new opportunities).</div><div data-v-5a79a4a1>Site built from <a href="https://code.incremental.social/thepaperpilot/pages/commit/d9934161540c6e6edc8e71d0ed2359a3e1bbae88" data-v-5a79a4a1>this commit</a> on <time data-v-5a79a4a1>Friday, June 28, 2024 at 08:57:44</time>. <a href="https://www.thepaperpilot.org/licenses.txt" data-v-5a79a4a1>Legal disclaimers</a>.</div></footer><!--]--></div></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"garden_freeform_index.md\":\"BkExsvjG\",\"garden_advent-incremental_index.md\":\"DiMhSx-e\",\"garden_artificial-intelligence_index.md\":\"BrofDUyq\",\"garden_commune_index.md\":\"CvOQ3hT4\",\"garden_chat-glue_index.md\":\"Dkp9maBT\",\"garden_chronological_index.md\":\"CVZwS4Eh\",\"garden_guide-to-incrementals_appeal-to-developers_index.md\":\"BO6yGgKj\",\"garden_federated-identity_index.md\":\"CCW9pAse\",\"garden_fediverse_index.md\":\"DxQE10P4\",\"garden_forgejo_index.md\":\"C3KgDtFH\",\"garden_freeform-vs-chronological-dichotomy_index.md\":\"BijYTVcS\",\"garden_garden-rss_index.md\":\"fUyRDsTg\",\"garden_game-dev-tree_index.md\":\"D__Q57ok\",\"garden_davey-wreden_index.md\":\"3SvfUHMm\",\"garden_guide-to-incrementals_appeal-to-players_index.md\":\"CKYRwnXQ\",\"garden_fedi-v2_index.md\":\"DniyVohW\",\"garden_incremental-social_index.md\":\"D8a7_RCt\",\"garden_digital-gardens_index.md\":\"Be5xH3NK\",\"garden_ivy-road_index.md\":\"C7uDDzvI\",\"garden_command-palettes_index.md\":\"DmgfwlxA\",\"about_index.md\":\"DNEsxkhw\",\"garden_activitypub_index.md\":\"DDmFevpk\",\"garden_capture-the-citadel_index.md\":\"CCV0NE3k\",\"garden_dice-armor_index.md\":\"NJ0L-bhj\",\"changelog_index.md\":\"BUV_cTEH\",\"garden_the-indieweb_amplification_index.md\":\"mD7RNZbH\",\"garden_vitepress_index.md\":\"CPLm28R1\",\"garden_wanderstop_index.md\":\"CXR17GUc\",\"garden_video-game-monetization_index.md\":\"CxE6NvSz\",\"garden_weird_index.md\":\"CWVUzOIG\",\"guide-to-incrementals_design_criticism_index.md\":\"B6v371xb\",\"public_kronos_docs_main-mod-info.md\":\"TWb3xDwG\",\"public_kronos_docs_milestones.md\":\"BqiEbWx4\",\"public_kronos_docs_particles.md\":\"a4-BPTpH\",\"garden_mbin_index.md\":\"BNsSwsWx\",\"garden_webrings_index.md\":\"DUwlwFzH\",\"public_gamedevtree_readme.md\":\"DVS2_5Qr\",\"public_kronos_docs_subtabs-and-microtabs.md\":\"B3i34UtK\",\"public_gamedevtree_2.0-format-changes.md\":\"DRd3bhvM\",\"public_kronos_docs_upgrades.md\":\"D1pH3BI1\",\"public_gamedevtree_docs_infoboxes.md\":\"B4DD8BvC\",\"public_lit_docs_main-mod-info.md\":\"CcRWcMdS\",\"public_lit_docs_milestones.md\":\"CGwN80sv\",\"garden_matrix_index.md\":\"CRY8KxOn\",\"public_kronos_docs_infoboxes.md\":\"BXXHzXvY\",\"public_kronos_docs_grids.md\":\"DGDenQsi\",\"public_gamedevtree_docs_main-mod-info.md\":\"SBsEn9C7\",\"public_gamedevtree_docs_layer-features.md\":\"I54r8Buk\",\"public_gamedevtree_docs_milestones.md\":\"Idyk5tE3\",\"public_gamedevtree_docs_updating-tmt.md\":\"Clk0TMnI\",\"public_gamedevtree_docs_subtabs-and-microtabs.md\":\"BhlicLTn\",\"public_gamedevtree_docs_upgrades.md\":\"BspSzPzA\",\"public_kronos_old things_2.0-format-changes.md\":\"BM0FXptY\",\"public_kronos_docs_!general-info.md\":\"jKiOCSlr\",\"public_kronos_readme.md\":\"zcQPLTsl\",\"public_kronos_changelog.md\":\"BB6U1JML\",\"public_kronos_docs_achievements.md\":\"CWA5xmwG\",\"public_gamedevtree_docs_challenges.md\":\"cvYq35wY\",\"public_kronos_docs_bars.md\":\"DU3nCdnU\",\"public_gamedevtree_docs_custom-tab-layouts.md\":\"DIYFlfWc\",\"public_gamedevtree_docs_getting-started.md\":\"CyNrXhyL\",\"public_kronos_docs_buyables.md\":\"0zoux8fQ\",\"public_gamedevtree_docs_basic-layer-breakdown.md\":\"Ykqytlzk\",\"public_kronos_docs_challenges.md\":\"DvQ_P73q\",\"public_kronos_docs_basic-layer-breakdown.md\":\"BZhX1dEF\",\"public_gamedevtree_docs_clickables.md\":\"CwLsimiU\",\"garden_guide-to-incrementals_what-is-content_index.md\":\"DABYM3H9\",\"public_gamedevtree_docs_achievements.md\":\"jhkjuzaR\",\"garden_atproto_index.md\":\"BCYXC0to\",\"public_kronos_docs_layer-features.md\":\"C1uOzCZ-\",\"garden_babble-buds_index.md\":\"D5ugZVzA\",\"index.md\":\"YpYYi6vJ\",\"garden_life-is-strange_index.md\":\"DvvGhSm_\",\"garden_kronos_index.md\":\"ChGNKmLx\",\"public_kronos_docs_clickables.md\":\"C1ENZgWW\",\"garden_guide-to-incrementals_index.md\":\"BjLCDBKq\",\"garden_cinny_index.md\":\"CJpoLlEX\",\"garden_decentralized_index.md\":\"DMYu8cEm\",\"garden_the-cozy-web_index.md\":\"rjN3H0C8\",\"garden_logseq_index.md\":\"DG7s0_6q\",\"public_lit_docs_!general-info.md\":\"D2rjMfl1\",\"garden_guide-to-incrementals_defining-the-genre_index.md\":\"PpvVz-fM\",\"garden_v-ecs_index.md\":\"5AydekFl\",\"garden_mtx_index.md\":\"Dd4h9UKg\",\"public_lit_docs_basic-layer-breakdown.md\":\"DKkhjhoJ\",\"public_lit_docs_bars.md\":\"DFEFprv8\",\"garden_the-indieweb_signature-blocks_index.md\":\"DiJ9A9Vr\",\"public_lit_docs_buyables.md\":\"DrqS8H2k\",\"public_kronos_docs_trees-and-tree-customization.md\":\"bHBppIK5\",\"public_lit_docs_upgrades.md\":\"D1Ns9VTR\",\"garden_guide-to-incrementals_navigating-criticism_index.md\":\"DXKJCd43\",\"public_lit_docs_custom-tab-layouts.md\":\"C-TlZHYA\",\"public_gamedevtree_docs_!general-info.md\":\"DK2xr3yI\",\"public_lit_old things_2.0-format-changes.md\":\"BwaKJMKt\",\"garden_the-small-web_index.md\":\"BIff5ZrT\",\"guide-to-incrementals_index.md\":\"BDIw2r0j\",\"guide-to-incrementals_ludology_appeal-developers_index.md\":\"DcS04Tze\",\"now_index.md\":\"towQWDR6\",\"public_lit_docs_subtabs-and-microtabs.md\":\"BQEflp-r\",\"guide-to-incrementals_ludology_definition_index.md\":\"D74RDRJR\",\"garden_nostr_index.md\":\"DVWnHg1A\",\"public_lit_readme.md\":\"84-k6GVT\",\"guide-to-incrementals_ludology_content_index.md\":\"CEcHoIrC\",\"garden_open-source_index.md\":\"dsSWrjJu\",\"garden_opti-speech_index.md\":\"CjDieRDV\",\"garden_premium-currency_index.md\":\"CCC3xOOo\",\"garden_planar-pioneers_index.md\":\"DswGqmHU\",\"public_gamedevtree_changelog.md\":\"Bp63oq83\",\"public_lit_docs_achievements.md\":\"D0gRoIWt\",\"garden_the-beginner-s-guide_index.md\":\"B7atDb7V\",\"public_lit_docs_updating-tmt.md\":\"C3AjdOjF\",\"garden_profectus_index.md\":\"B-Ukc061\",\"garden_social-media_index.md\":\"BCefaUld\",\"garden_pre-order-bonuses_index.md\":\"DMeqyDoY\",\"garden_my-projects_index.md\":\"Ca-ys1xT\",\"public_gamedevtree_docs_buyables.md\":\"C7aL_4eK\",\"public_kronos_docs_updating-tmt.md\":\"BxVzngxM\",\"public_kronos_docs_custom-tab-layouts.md\":\"D4DCXZo7\",\"garden_this-knowledge-hub_index.md\":\"CPRHZOBS\",\"public_gamedevtree_docs_bars.md\":\"CBtj98pG\",\"public_lit_docs_getting-started.md\":\"BxRLZ8_n\",\"public_lit_docs_clickables.md\":\"CoIWXGHw\",\"garden_synapse_index.md\":\"BegNqSHz\",\"public_kronos_docs_getting-started.md\":\"N-haPVCK\",\"garden_my-personal-website_index.md\":\"BeeHwa0f\",\"public_lit_changelog.md\":\"BAnHXxRw\",\"guide-to-incrementals_ludology_appeal-gamers_index.md\":\"Dlz9nqsb\",\"public_lit_docs_layer-features.md\":\"DF81fjyw\",\"public_lit_docs_challenges.md\":\"DtmSP6zf\",\"public_lit_docs_infoboxes.md\":\"C0nPRfky\",\"public_lit_docs_trees-and-tree-customization.md\":\"C8iASWgy\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"The Paper Pilot\",\"description\":\"The Paper Pilot's Digital Garden\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":false,\"themeConfig\":{\"search\":{\"provider\":\"local\",\"options\":{}},\"outline\":\"deep\",\"nav\":[{\"text\":\"Profectus\",\"link\":\"https://moddingtree.com\"},{\"text\":\"Incremental Social\",\"link\":\"https://incremental.social\"}],\"socialLinks\":[{\"icon\":{\"svg\":\"<svg role=\\\"img\\\" viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><title>Forgejo</title><path d=\\\"M16.7773 0c1.6018 0 2.9004 1.2986 2.9004 2.9005s-1.2986 2.9004-2.9004 2.9004c-1.0854 0-2.0315-.596-2.5288-1.4787H12.91c-2.3322 0-4.2272 1.8718-4.2649 4.195l-.0007 2.1175a7.0759 7.0759 0 0 1 4.148-1.4205l.1176-.001 1.3385.0002c.4973-.8827 1.4434-1.4788 2.5288-1.4788 1.6018 0 2.9004 1.2986 2.9004 2.9005s-1.2986 2.9004-2.9004 2.9004c-1.0854 0-2.0315-.596-2.5288-1.4787H12.91c-2.3322 0-4.2272 1.8718-4.2649 4.195l-.0007 2.319c.8827.4973 1.4788 1.4434 1.4788 2.5287 0 1.602-1.2986 2.9005-2.9005 2.9005-1.6018 0-2.9004-1.2986-2.9004-2.9005 0-1.0853.596-2.0314 1.4788-2.5287l-.0002-9.9831c0-3.887 3.1195-7.0453 6.9915-7.108l.1176-.001h1.3385C14.7458.5962 15.692 0 16.7773 0ZM7.2227 19.9052c-.6596 0-1.1943.5347-1.1943 1.1943s.5347 1.1943 1.1943 1.1943 1.1944-.5347 1.1944-1.1943-.5348-1.1943-1.1944-1.1943Zm9.5546-10.4644c-.6596 0-1.1944.5347-1.1944 1.1943s.5348 1.1943 1.1944 1.1943c.6596 0 1.1943-.5347 1.1943-1.1943s-.5347-1.1943-1.1943-1.1943Zm0-7.7346c-.6596 0-1.1944.5347-1.1944 1.1943s.5348 1.1943 1.1944 1.1943c.6596 0 1.1943-.5347 1.1943-1.1943s-.5347-1.1943-1.1943-1.1943Z\\\"/></svg>\"},\"link\":\"https://code.incremental.social/thepaperpilot\"},{\"icon\":{\"svg\":\"<svg role=\\\"img\\\" viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><title>Matrix</title><path d=\\\"M.632.55v22.9H2.28V24H0V0h2.28v.55zm7.043 7.26v1.157h.033c.309-.443.683-.784 1.117-1.024.433-.245.936-.365 1.5-.365.54 0 1.033.107 1.481.314.448.208.785.582 1.02 1.108.254-.374.6-.706 1.034-.992.434-.287.95-.43 1.546-.43.453 0 .872.056 1.26.167.388.11.716.286.993.53.276.245.489.559.646.951.152.392.23.863.23 1.417v5.728h-2.349V11.52c0-.286-.01-.559-.032-.812a1.755 1.755 0 0 0-.18-.66 1.106 1.106 0 0 0-.438-.448c-.194-.11-.457-.166-.785-.166-.332 0-.6.064-.803.189a1.38 1.38 0 0 0-.48.499 1.946 1.946 0 0 0-.231.696 5.56 5.56 0 0 0-.06.785v4.768h-2.35v-4.8c0-.254-.004-.503-.018-.752a2.074 2.074 0 0 0-.143-.688 1.052 1.052 0 0 0-.415-.503c-.194-.125-.476-.19-.854-.19-.111 0-.259.024-.439.074-.18.051-.36.143-.53.282-.171.138-.319.337-.439.595-.12.259-.18.6-.18 1.02v4.966H5.46V7.81zm15.693 15.64V.55H21.72V0H24v24h-2.28v-.55z\\\"/></svg>\"},\"link\":\"https://matrix.to/#/@thepaperpilot:incremental.social\"},{\"icon\":{\"svg\":\"<svg role=\\\"img\\\" viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><title>Fediverse</title><path d=\\\"M4.589 7.91a2.295 2.295 0 01-2.416 2.166A2.295 2.295 0 01.005 7.66a2.295 2.295 0 012.418-2.167A2.295 2.295 0 014.589 7.91zm1.876 11.995a2.295 2.295 0 01-2.417 2.167 2.295 2.295 0 01-2.166-2.417 2.295 2.295 0 012.416-2.166 2.295 2.295 0 012.167 2.416zm11.993 1.925a2.295 2.295 0 01-2.416 2.167 2.295 2.295 0 01-2.168-2.418 2.295 2.295 0 012.417-2.167 2.295 2.295 0 012.167 2.418zm5.537-10.807a2.295 2.295 0 01-2.417 2.168 2.295 2.295 0 01-2.168-2.418 2.295 2.295 0 012.418-2.165 2.295 2.295 0 012.167 2.415zm-8.57-8.603a2.295 2.295 0 01-2.419 2.168A2.295 2.295 0 0110.84 2.17 2.295 2.295 0 0113.256.003a2.295 2.295 0 012.168 2.418zM4.79 7.407a2.525 2.525 0 01.028.516 2.525 2.525 0 01-.263.99l3.716.595.731-1.425zm6.368 1.022l-.73 1.425 8.777 1.41a2.525 2.525 0 01-.025-.502 2.525 2.525 0 01.27-1.002zm3.118-3.887a2.525 2.525 0 01-1.283.274 2.525 2.525 0 01-.22-.023l.58 3.712 1.58.254zm-.588 6.12l1.37 8.775a2.525 2.525 0 011.245-.254 2.525 2.525 0 01.264.03l-1.296-8.297zm-3.046-7.96L4.098 6.02a2.525 2.525 0 01.688 1.36l6.545-3.317a2.525 2.525 0 01-.688-1.358zm4.725.76a2.525 2.525 0 01-1.08 1.074l5.177 5.197a2.525 2.525 0 011.08-1.075zm4.56 9.23l-3.343 6.524a2.525 2.525 0 011.355.695l3.344-6.525a2.525 2.525 0 01-1.357-.695zm-13.26 6.716a2.525 2.525 0 01.025.51 2.525 2.525 0 01-.266.995l7.243 1.163a2.525 2.525 0 01-.027-.508 2.525 2.525 0 01.267-.997zm-3.245-9.366a2.525 2.525 0 01-1.26.264 2.525 2.525 0 01-.245-.026l1.132 7.244a2.525 2.525 0 011.262-.264 2.525 2.525 0 01.243.025zm7.935-5.954l-3.83 7.474 1.13 1.135 4.055-7.914a2.525 2.525 0 01-1.355-.695zm-4.826 9.418l-1.94 3.786a2.525 2.525 0 011.356.696l1.715-3.348zm12.682-2.2l-3.355 1.7.247 1.583 3.797-1.925a2.525 2.525 0 01-.689-1.36zm-5.305 2.687l-7.935 4.02a2.525 2.525 0 01.69 1.36l7.494-3.797zM4.534 8.95a2.525 2.525 0 01-1.08 1.075l5.93 5.95 1.43-.724zm7.821 7.85l-1.43.724 3.004 3.014a2.525 2.525 0 011.08-1.075z\\\"/></svg>\"},\"link\":\"https://incremental.social/u/thepaperpilot\"}],\"sidebar\":[{\"text\":\"Recommended Pages\",\"items\":[{\"text\":\"The Small Web\",\"link\":\"/garden/the-small-web\"},{\"text\":\"Guide to Incrementals\",\"link\":\"/garden/guide-to-incrementals\"},{\"text\":\"My Projects\",\"link\":\"/garden/my-projects\"},{\"text\":\"Fedi v2\",\"link\":\"/garden/fedi-v2\"}]},{\"text\":\"About Me\",\"link\":\"/about\"},{\"text\":\"/now\",\"link\":\"/now\"},{\"text\":\"Site Changelog\",\"link\":\"/changelog\"}]},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":true,\"contentProps\":{\"class\":{\"h-entry\":true}}}");</script>
</body>
</html>