2026-06-03 10:17:44 +00:00
<!doctype html>
< html lang = "en" class = "no-js" >
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width,initial-scale=1" >
< meta name = "description" content = "A living guide for awakening consciousness — practices, teachings, and community for the journey upward" >
< meta name = "author" content = "aja" >
< link rel = "canonical" href = "https://tree.ad/contributing/" >
< link rel = "prev" href = "./.." >
< link rel = "next" href = "./markdown/" >
< link rel = "icon" href = "../assets/images/favicon.png" >
< meta name = "generator" content = "zensical-0.0.43" >
< title > Contributing - Tree of Ascension Docs< / title >
< link rel = "stylesheet" href = "../assets/stylesheets/modern/main.fba56155.min.css" >
< link rel = "stylesheet" href = "../assets/stylesheets/modern/palette.dfe2e883.min.css" >
< link rel = "preconnect" href = "https://fonts.gstatic.com" crossorigin >
< link rel = "stylesheet" href = "https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetBrains+Mono:400,400i,700,700i&display=fallback" >
< style > : root { --md-text-font : "Inter" ; --md-code-font : "JetBrains Mono" } < / style >
< link rel = "stylesheet" href = "../stylesheets/extra.css" >
< script > _ _md _scope = new URL ( ".." , location ) , _ _md _scope . pathname . endsWith ( "/" ) || ( _ _md _scope = new URL ( _ _md _scope . pathname + "/" , location ) ) , _ _md _hash = e => [ ... e ] . reduce ( ( ( e , t ) => ( e << 5 ) - e + t . charCodeAt ( 0 ) ) , 0 ) , _ _md _get = ( e , t = localStorage , _ = _ _md _scope ) => JSON . parse ( t . getItem ( _ . pathname + "." + e ) ) , _ _md _set = ( e , t , _ = localStorage , a = _ _md _scope ) => { try { _ . setItem ( a . pathname + "." + e , JSON . stringify ( t ) ) } catch ( e ) { } } , document . documentElement . setAttribute ( "data-platform" , navigator . platform ) < / script >
< / head >
< body dir = "ltr" data-md-color-scheme = "default" data-md-color-primary = "green" data-md-color-accent = "teal" >
< input class = "md-toggle" data-md-toggle = "drawer" type = "checkbox" id = "__drawer" autocomplete = "off" >
< input class = "md-toggle" data-md-toggle = "search" type = "checkbox" id = "__search" autocomplete = "off" >
< label class = "md-overlay" for = "__drawer" aria-label = "Navigation" > < / label >
< div data-md-component = "skip" >
< a href = "#contributing-to-tree-of-ascension-docs" class = "md-skip" >
Skip to content
< / a >
< / div >
< div data-md-component = "announce" >
< / div >
< header class = "md-header md-header--shadow" data-md-component = "header" >
< nav class = "md-header__inner md-grid" aria-label = "Header" >
< a href = "./.." title = "Tree of Ascension Docs" class = "md-header__button md-logo" aria-label = "Tree of Ascension Docs" data-md-component = "logo" >
< img src = "../assets/images/tree-ad-logo.svg" alt = "Tree of Ascension Docs" >
< / a >
< label class = "md-header__button md-icon" for = "__drawer" aria-label = "Navigation" >
< svg xmlns = "http://www.w3.org/2000/svg" fill = "none" stroke = "currentColor" stroke-linecap = "round" stroke-linejoin = "round" stroke-width = "2" class = "lucide lucide-menu" viewBox = "0 0 24 24" > < path d = "M4 5h16M4 12h16M4 19h16" / > < / svg >
< / label >
< div class = "md-header__title" data-md-component = "header-title" >
< div class = "md-header__ellipsis" >
< div class = "md-header__topic" >
< span class = "md-ellipsis" >
Tree of Ascension Docs
< / span >
< / div >
< div class = "md-header__topic" data-md-component = "header-topic" >
< span class = "md-ellipsis" >
Contributing
< / span >
< / div >
< / div >
< / div >
< form class = "md-header__option" data-md-component = "palette" >
< input class = "md-option" data-md-color-media = "none" data-md-color-scheme = "default" data-md-color-primary = "green" data-md-color-accent = "teal" aria-label = "Switch to dark mode" type = "radio" name = "__palette" id = "__palette_0" >
< label class = "md-header__button md-icon" title = "Switch to dark mode" for = "__palette_1" hidden >
< svg xmlns = "http://www.w3.org/2000/svg" fill = "none" stroke = "currentColor" stroke-linecap = "round" stroke-linejoin = "round" stroke-width = "2" class = "lucide lucide-sun" viewBox = "0 0 24 24" > < circle cx = "12" cy = "12" r = "4" / > < path d = "M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41" / > < / svg >
< / label >
< input class = "md-option" data-md-color-media = "none" data-md-color-scheme = "slate" data-md-color-primary = "green" data-md-color-accent = "teal" aria-label = "Switch to light mode" type = "radio" name = "__palette" id = "__palette_1" >
< label class = "md-header__button md-icon" title = "Switch to light mode" for = "__palette_0" hidden >
< svg xmlns = "http://www.w3.org/2000/svg" fill = "none" stroke = "currentColor" stroke-linecap = "round" stroke-linejoin = "round" stroke-width = "2" class = "lucide lucide-moon" viewBox = "0 0 24 24" > < path d = "M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401" / > < / svg >
< / label >
< / form >
< script > var palette = _ _md _get ( "__palette" ) ; if ( palette && palette . color ) { if ( "(prefers-color-scheme)" === palette . color . media ) { var media = matchMedia ( "(prefers-color-scheme: light)" ) , input = document . querySelector ( media . matches ? "[data-md-color-media='(prefers-color-scheme: light)']" : "[data-md-color-media='(prefers-color-scheme: dark)']" ) ; palette . color . media = input . getAttribute ( "data-md-color-media" ) , palette . color . scheme = input . getAttribute ( "data-md-color-scheme" ) , palette . color . primary = input . getAttribute ( "data-md-color-primary" ) , palette . color . accent = input . getAttribute ( "data-md-color-accent" ) } for ( var [ key , value ] of Object . entries ( palette . color ) ) document . body . setAttribute ( "data-md-color-" + key , value ) } < / script >
< label class = "md-header__button md-icon" for = "__search" aria-label = "Search" >
< svg xmlns = "http://www.w3.org/2000/svg" fill = "none" stroke = "currentColor" stroke-linecap = "round" stroke-linejoin = "round" stroke-width = "2" class = "lucide lucide-search" viewBox = "0 0 24 24" > < path d = "m21 21-4.34-4.34" / > < circle cx = "11" cy = "11" r = "8" / > < / svg >
< / label >
< div class = "md-search" data-md-component = "search" role = "dialog" aria-label = "Search" >
< button type = "button" class = "md-search__button" >
Search
< / button >
< / div >
< div class = "md-header__source" >
< a href = "https://bali.krystl.org/aja/up" title = "Go to repository" class = "md-source" data-md-component = "source" >
< div class = "md-source__icon md-icon" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 448 512" > <!-- ! Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2026 Fonticons, Inc. --> < path fill = "currentColor" d = "M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4" / > < / svg >
< / div >
< div class = "md-source__repository" >
Contribute
< / div >
< / a >
< / div >
< / nav >
< / header >
< div class = "md-container" data-md-component = "container" >
< main class = "md-main" data-md-component = "main" >
< div class = "md-main__inner md-grid" >
< div class = "md-sidebar md-sidebar--primary" data-md-component = "sidebar" data-md-type = "navigation" >
< div class = "md-sidebar__scrollwrap" >
< div class = "md-sidebar__inner" >
< nav class = "md-nav md-nav--primary" aria-label = "Navigation" data-md-level = "0" >
< label class = "md-nav__title" for = "__drawer" >
< a href = "./.." title = "Tree of Ascension Docs" class = "md-nav__button md-logo" aria-label = "Tree of Ascension Docs" data-md-component = "logo" >
< img src = "../assets/images/tree-ad-logo.svg" alt = "Tree of Ascension Docs" >
< / a >
Tree of Ascension Docs
< / label >
< div class = "md-nav__source" >
< a href = "https://bali.krystl.org/aja/up" title = "Go to repository" class = "md-source" data-md-component = "source" >
< div class = "md-source__icon md-icon" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 448 512" > <!-- ! Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2026 Fonticons, Inc. --> < path fill = "currentColor" d = "M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4" / > < / svg >
< / div >
< div class = "md-source__repository" >
Contribute
< / div >
< / a >
< / div >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "./.." class = "md-nav__link" >
< svg xmlns = "http://www.w3.org/2000/svg" fill = "none" stroke = "currentColor" stroke-linecap = "round" stroke-linejoin = "round" stroke-width = "2" class = "lucide lucide-leaf" viewBox = "0 0 24 24" > < path d = "M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10" / > < path d = "M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12" / > < / svg >
< span class = "md-ellipsis" >
2026-06-03 11:50:10 +00:00
Tree of Ascension
2026-06-03 10:17:44 +00:00
< / span >
< / a >
< / li >
< li class = "md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_2" checked >
< div class = "md-nav__link md-nav__container" >
< a href = "././" class = "md-nav__link md-nav__link--active" >
2026-06-03 10:30:05 +00:00
< svg xmlns = "http://www.w3.org/2000/svg" fill = "none" stroke = "currentColor" stroke-linecap = "round" stroke-linejoin = "round" stroke-width = "2" class = "lucide lucide-heart-handshake" viewBox = "0 0 24 24" > < path d = "M19.414 14.414C21 12.828 22 11.5 22 9.5a5.5 5.5 0 0 0-9.591-3.676.6.6 0 0 1-.818.001A5.5 5.5 0 0 0 2 9.5c0 2.3 1.5 4 3 5.5l5.535 5.362a2 2 0 0 0 2.879.052 2.12 2.12 0 0 0-.004-3 2.124 2.124 0 1 0 3-3 2.124 2.124 0 0 0 3.004 0 2 2 0 0 0 0-2.828l-1.881-1.882a2.41 2.41 0 0 0-3.409 0l-1.71 1.71a2 2 0 0 1-2.828 0 2 2 0 0 1 0-2.828l2.823-2.762" / > < / svg >
2026-06-03 10:17:44 +00:00
< span class = "md-ellipsis" >
Contributing
< / span >
< / a >
< label class = "md-nav__link md-nav__link--active" for = "__nav_2" id = "__nav_2_label" tabindex = "" >
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< / div >
< nav class = "md-nav" data-md-level = "1" aria-labelledby = "__nav_2_label" aria-expanded = "true" >
< label class = "md-nav__title" for = "__nav_2" >
< span class = "md-nav__icon md-icon" > < / span >
Contributing
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "./markdown/" class = "md-nav__link" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M22.27 19.385H1.73A1.73 1.73 0 0 1 0 17.655V6.345a1.73 1.73 0 0 1 1.73-1.73h20.54A1.73 1.73 0 0 1 24 6.345v11.308a1.73 1.73 0 0 1-1.73 1.731zM5.769 15.923v-4.5l2.308 2.885 2.307-2.885v4.5h2.308V8.078h-2.308l-2.307 2.885-2.308-2.885H3.46v7.847zM21.232 12h-2.309V8.077h-2.307V12h-2.308l3.461 4.039z" / > < / svg >
< span class = "md-ellipsis" >
Markdown in 5min
< / span >
< / a >
< / li >
< / ul >
< / nav >
< / li >
2026-06-03 11:50:10 +00:00
2026-06-03 10:17:44 +00:00
< li class = "md-nav__item md-nav__item--section md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_3" >
< div class = "md-nav__link md-nav__container" >
< a href = "../practices/" class = "md-nav__link " >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M13.5 5.5c1.09 0 2-.92 2-2a2 2 0 0 0-2-2c-1.11 0-2 .88-2 2 0 1.08.89 2 2 2M9.89 19.38l1-4.38L13 17v6h2v-7.5l-2.11-2 .61-3A7.3 7.3 0 0 0 19 13v-2c-1.91 0-3.5-1-4.31-2.42l-1-1.58c-.4-.62-1-1-1.69-1-.31 0-.5.08-.81.08L6 8.28V13h2V9.58l1.79-.7L8.19 17l-4.9-1-.4 2z" / > < / svg >
< span class = "md-ellipsis" >
Practices
< / span >
< / a >
< label class = "md-nav__link " for = "__nav_3" id = "__nav_3_label" tabindex = "" >
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< / div >
< nav class = "md-nav" data-md-level = "1" aria-labelledby = "__nav_3_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_3" >
< span class = "md-nav__icon md-icon" > < / span >
Practices
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../practices/daily-sadhana/" class = "md-nav__link" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M12 4c1.11 0 2 .89 2 2s-.89 2-2 2-2-.89-2-2 .9-2 2-2m9 12v-2c-2.24 0-4.16-.96-5.6-2.68l-1.34-1.6A1.98 1.98 0 0 0 12.53 9H11.5c-.61 0-1.17.26-1.55.72l-1.34 1.6C7.16 13.04 5.24 14 3 14v2c2.77 0 5.19-1.17 7-3.25V15l-3.88 1.55c-.67.27-1.12.95-1.12 1.66C5 19.2 5.8 20 6.79 20H9v-.5a2.5 2.5 0 0 1 2.5-2.5h3c.28 0 .5.22.5.5s-.22.5-.5.5h-3c-.83 0-1.5.67-1.5 1.5v.5h7.21c.99 0 1.79-.8 1.79-1.79 0-.71-.45-1.39-1.12-1.66L14 15v-2.25c1.81 2.08 4.23 3.25 7 3.25" / > < / svg >
< span class = "md-ellipsis" >
Daily Sadhana
< / span >
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../practices/digital-wellness/" class = "md-nav__link" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M6.62 10.79a15.1 15.1 0 0 0 6.59 6.59l2.2-2.2a1 1 0 0 1 1-.25 11.4 11.4 0 0 0 3.59.57 1 1 0 0 1 1 1V20a1 1 0 0 1-1 1A17 17 0 0 1 3 4a1 1 0 0 1 1-1h3.5a1 1 0 0 1 1 1 11.4 11.4 0 0 0 .57 3.57 1 1 0 0 1-.25 1m12.89-3.86-1.42-1.42L15 8.59l-2.29-2.3-1.42 1.42 3.71 3.7Z" / > < / svg >
< span class = "md-ellipsis" >
Digital Wellness
< / span >
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../practices/grounding-in-nature/" class = "md-nav__link" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M4.5 11A1.5 1.5 0 0 0 6 9.5 1.5 1.5 0 0 0 4.5 8 1.5 1.5 0 0 0 3 9.5 1.5 1.5 0 0 0 4.5 11m17.67-1.83c0-3.87-3.13-7-7-7a7 7 0 0 0-7 7c0 3.47 2.52 6.33 5.83 6.89V20H6v-3h1v-4a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v4h1v5h16v-2h-3v-3.88a7 7 0 0 0 6.17-6.95" / > < / svg >
< span class = "md-ellipsis" >
Grounding in Nature
< / span >
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../practices/nourishing-the-body/" class = "md-nav__link" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M20 10c2 3-3 12-5 12s-2-1-3-1-1 1-3 1-7-9-5-12 5-3 7-2V5C5.38 8.07 4.11 3.78 4.11 3.78S6.77.19 11 5V3h2v5c2-1 5-1 7 2" / > < / svg >
< span class = "md-ellipsis" >
Nourishing the Body
< / span >
< / a >
< / li >
2026-06-03 11:50:10 +00:00
< li class = "md-nav__item" >
< a href = "../practices/spiritual-hygiene/" class = "md-nav__link" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M15.5 9.63c-.19-2.79-1.32-5.51-3.44-7.63A12.25 12.25 0 0 0 8.5 9.63c1.29.68 2.47 1.56 3.5 2.63a14.2 14.2 0 0 1 3.5-2.63M12 15.45C9.85 12.17 6.18 10 2 10c0 10 9.32 11.89 10 12 .68-.12 10-2 10-12-4.18 0-7.85 2.17-10 5.45" / > < / svg >
< span class = "md-ellipsis" >
Spiritual Hygiene
< / span >
< / a >
< / li >
2026-06-03 10:17:44 +00:00
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--section md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_4" >
< div class = "md-nav__link md-nav__container" >
2026-06-03 11:50:10 +00:00
< a href = "../strategies/" class = "md-nav__link " >
2026-06-03 10:17:44 +00:00
2026-06-03 11:50:10 +00:00
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M19 22H5v-2h14zM13 2c-1.25 0-2.42.62-3.11 1.66L7 8l2 2 2.06-1.37c.44-.31 1.08-.19 1.39.27.02.03.05.06.05.1.3.59.19 1.3-.28 1.77l-4.8 4.8c-.55.56-.55 1.46.01 2.01.26.26.62.42.99.42H17V6a4 4 0 0 0-4-4" / > < / svg >
2026-06-03 10:17:44 +00:00
< span class = "md-ellipsis" >
2026-06-03 11:50:10 +00:00
Strategies
2026-06-03 10:17:44 +00:00
< / span >
< / a >
< label class = "md-nav__link " for = "__nav_4" id = "__nav_4_label" tabindex = "" >
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< / div >
< nav class = "md-nav" data-md-level = "1" aria-labelledby = "__nav_4_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_4" >
< span class = "md-nav__icon md-icon" > < / span >
2026-06-03 11:50:10 +00:00
Strategies
2026-06-03 10:17:44 +00:00
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
2026-06-03 11:50:10 +00:00
< a href = "../strategies/collective-awakening/" class = "md-nav__link" >
2026-06-03 10:17:44 +00:00
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M20 17q.86 0 1.45.6t.58 1.4L14 22l-7-2v-9h1.95l7.27 2.69q.78.31.78 1.12 0 .47-.34.82t-.86.37H13l-1.75-.67-.33.94L13 17zM16 3.23Q17.06 2 18.7 2q1.36 0 2.3 1t1 2.3q0 1.03-1 2.46t-1.97 2.39T16 13q-2.08-1.89-3.06-2.85t-1.97-2.39T10 5.3q0-1.36.97-2.3t2.34-1q1.6 0 2.69 1.23M.984 11H5v11H.984z" / > < / svg >
< span class = "md-ellipsis" >
Collective Awakening
< / span >
< / a >
< / li >
< li class = "md-nav__item" >
2026-06-03 11:50:10 +00:00
< a href = "../strategies/community-sovereignty/" class = "md-nav__link" >
2026-06-03 10:17:44 +00:00
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M3.69 9.12a.88.88 0 0 0-.65-.28c-.41 0-.72.19-.92.58s-.15.76.17 1.11q1.77 1.59 2.25 2.25c.41.56.61 1.38.61 2.44 0 1.31.5 2.28 1.5 2.95.56.44 1.17.77 1.85.99v-3.89c0-.94-.33-1.72-.96-2.35m8.92.05c-.62.62-.96 1.39-.96 2.3v3.93c.96-.34 1.76-.87 2.42-1.57.65-.7.98-1.47.98-2.41 0-1.13.19-1.94.57-2.44.09-.16.26-.36.53-.61.23-.25.47-.49.71-.71.23-.21.46-.43.68-.65l.33-.28a.9.9 0 0 0 .28-.66c0-.28-.09-.53-.28-.73s-.42-.3-.72-.3-.5.09-.69.28M12 20c.69 0 1.36-.09 2-.28v-3.57c0-.59-.18-1.05-.59-1.49Q12.795 14 12 14c-.53 0-1 .2-1.38.61-.4.39-.62.85-.62 1.45v3.66c.64.19 1.31.28 2 .28M9 8.5c0 .83-.67 1.5-1.5 1.5S6 9.33 6 8.5 6.67 7 7.5 7 9 7.67 9 8.5m9 0c0 .83-.67 1.5-1.5 1.5S15 9.33 15 8.5 15.67 7 16.5 7s1.5.67 1.5 1.5m-4.5-3c0 .83-.67 1.5-1.5 1.5s-1.5-.67-1.5-1.5S11.17 4 12 4s1.5.67 1.5 1.5m0 5.5c0 .83-.67 1.5-1.5 1.5s-1.5-.67-1.5-1.5.67-1.5 1.5-1.5 1.5.67 1.5 1.5" / > < / svg >
< span class = "md-ellipsis" >
Community Sovereignty
< / span >
< / a >
< / li >
< li class = "md-nav__item" >
2026-06-03 11:50:10 +00:00
< a href = "../strategies/digital-sovereignty/" class = "md-nav__link" >
2026-06-03 10:17:44 +00:00
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M12 1 3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5zm0 6c1.4 0 2.8 1.1 2.8 2.5V11c.6 0 1.2.6 1.2 1.3v3.5c0 .6-.6 1.2-1.3 1.2H9.2c-.6 0-1.2-.6-1.2-1.3v-3.5c0-.6.6-1.2 1.2-1.2V9.5C9.2 8.1 10.6 7 12 7m0 1.2c-.8 0-1.5.5-1.5 1.3V11h3V9.5c0-.8-.7-1.3-1.5-1.3" / > < / svg >
< span class = "md-ellipsis" >
Digital Sovereignty
< / span >
< / a >
< / li >
< li class = "md-nav__item" >
2026-06-03 11:50:10 +00:00
< a href = "../strategies/finding-purpose/" class = "md-nav__link" >
2026-06-03 10:17:44 +00:00
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M14.19 14.19 6 18l3.81-8.19L18 6m-6-4A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 8.9a1.1 1.1 0 0 0-1.1 1.1 1.1 1.1 0 0 0 1.1 1.1 1.1 1.1 0 0 0 1.1-1.1 1.1 1.1 0 0 0-1.1-1.1" / > < / svg >
< span class = "md-ellipsis" >
Finding Your Purpose
< / span >
< / a >
< / li >
< / ul >
< / nav >
< / li >
< / ul >
< / nav >
< / div >
< / div >
< / div >
< div class = "md-sidebar md-sidebar--secondary" data-md-component = "sidebar" data-md-type = "toc" >
< div class = "md-sidebar__scrollwrap" >
< input class = "md-nav__toggle md-toggle" type = "checkbox" id = "__toc" >
< div class = "md-sidebar-button__wrapper" >
< label class = "md-sidebar-button" for = "__toc" > < / label >
< / div >
< div class = "md-sidebar__inner" >
< nav class = "md-nav md-nav--secondary" aria-label = "On this page" >
< label class = "md-nav__title" for = "__toc" >
< span class = "md-nav__icon md-icon" > < / span >
On this page
< / label >
< ul class = "md-nav__list" data-md-component = "toc" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "#request-access" class = "md-nav__link" >
< span class = "md-ellipsis" >
< span class = "md-typeset" >
🔐 Request access
< / span >
< / span >
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#how-it-works" class = "md-nav__link" >
< span class = "md-ellipsis" >
< span class = "md-typeset" >
🛠 How it works
< / span >
< / span >
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#making-your-first-edit" class = "md-nav__link" >
< span class = "md-ellipsis" >
< span class = "md-typeset" >
✏️ Making your first edit
< / span >
< / span >
< / a >
< nav class = "md-nav" aria-label = "✏️ Making your first edit" >
< ul class = "md-nav__list" >
< li class = "md-nav__item" >
< a href = "#step-1-open-the-repo-in-forgejo" class = "md-nav__link" >
< span class = "md-ellipsis" >
< span class = "md-typeset" >
Step 1 — Open the repo in Forgejo
< / span >
< / span >
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#step-2-create-your-branch" class = "md-nav__link" >
< span class = "md-ellipsis" >
< span class = "md-typeset" >
Step 2 — Create your branch
< / span >
< / span >
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#step-3-edit-a-file" class = "md-nav__link" >
< span class = "md-ellipsis" >
< span class = "md-typeset" >
Step 3 — Edit a file
< / span >
< / span >
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#step-4-open-a-pull-request" class = "md-nav__link" >
< span class = "md-ellipsis" >
< span class = "md-typeset" >
Step 4 — Open a Pull Request
< / span >
< / span >
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
< a href = "#editing-locally-optional" class = "md-nav__link" >
< span class = "md-ellipsis" >
< span class = "md-typeset" >
💻 Editing locally (optional)
< / span >
< / span >
< / a >
< nav class = "md-nav" aria-label = "💻 Editing locally (optional)" >
< ul class = "md-nav__list" >
< li class = "md-nav__item" >
< a href = "#youll-need" class = "md-nav__link" >
< span class = "md-ellipsis" >
< span class = "md-typeset" >
You'll need
< / span >
< / span >
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#steps" class = "md-nav__link" >
< span class = "md-ellipsis" >
< span class = "md-typeset" >
Steps
< / span >
< / span >
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
< a href = "#plant-your-own" class = "md-nav__link" >
< span class = "md-ellipsis" >
< span class = "md-typeset" >
🌱 Plant Your Own
< / span >
< / span >
< / a >
< nav class = "md-nav" aria-label = "🌱 Plant Your Own" >
< ul class = "md-nav__list" >
< li class = "md-nav__item" >
< a href = "#copy-the-repo" class = "md-nav__link" >
< span class = "md-ellipsis" >
< span class = "md-typeset" >
Copy the repo
< / span >
< / span >
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#set-up-zensical" class = "md-nav__link" >
< span class = "md-ellipsis" >
< span class = "md-typeset" >
Set up Zensical
< / span >
< / span >
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#make-it-yours" class = "md-nav__link" >
< span class = "md-ellipsis" >
< span class = "md-typeset" >
Make it yours
< / span >
< / span >
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#use-your-own-domain" class = "md-nav__link" >
< span class = "md-ellipsis" >
< span class = "md-typeset" >
Use your own domain
< / span >
< / span >
< / a >
< / li >
< / ul >
< / nav >
< / li >
< / ul >
< / nav >
< / div >
< / div >
< / div >
< div class = "md-content" data-md-component = "content" >
< nav class = "md-path" aria-label = "Navigation" >
< ol class = "md-path__list" >
< li class = "md-path__item" >
< a href = "./.." class = "md-path__link" >
< span class = "md-ellipsis" >
2026-06-03 11:50:10 +00:00
Tree of Ascension
2026-06-03 10:17:44 +00:00
< / span >
< / a >
< / li >
< li class = "md-path__item" >
< a href = "././" class = "md-path__link" >
< span class = "md-ellipsis" >
Contributing
< / span >
< / a >
< / li >
< / ol >
< / nav >
< article class = "md-content__inner md-typeset" >
< h1 id = "contributing-to-tree-of-ascension-docs" > Contributing to Tree of Ascension Docs< a class = "headerlink" href = "#contributing-to-tree-of-ascension-docs" title = "Permanent link" > ¶ < / a > < / h1 >
< p > Welcome! This guide will get you from zero to making your first edit — even if you've never used git before.< / p >
< blockquote >
< p > < strong > 🔒 Registration is currently closed.< / strong > New contributor accounts are not available at this moment. If you'd like to get involved, solve the puzzle below to reveal the contact email and request access.< / p >
< / blockquote >
< hr / >
< h2 id = "request-access" > 🔐 Request access< a class = "headerlink" href = "#request-access" title = "Permanent link" > ¶ < / a > < / h2 >
< div class = "captcha-game" style = "background:linear-gradient(135deg,#f0f7f2,#e5f0e8);border-radius:16px;padding:1.5rem 1.8rem;margin:1.2rem 0 1.8rem;text-align:center;border:1px solid #c8dcd0;" >
< p style = "margin:0 0 1rem;color:#3d6b52;font-weight:650;font-size:1.05rem;" > 🌱 Click each leaf in order to reveal the contact email:< / p >
< div id = "leaf-container" style = "display:flex;gap:0.8rem;justify-content:center;align-items:center;flex-wrap:wrap;" > < / div >
< p id = "captcha-hint" style = "margin:0.9rem 0 0;font-size:0.85rem;color:#6b8b7a;" > Click them from smallest to largest 🌱 → 🌳< / p >
< div id = "captcha-result" style = "display:none;margin-top:1rem;padding:0.8rem 1rem;background:white;border-radius:10px;font-size:1.05rem;border:1px dashed #92ad9e;" > < / div >
< / div >
< script >
(function(){
if(window._leafCaptchaDone)return;window._leafCaptchaDone=true;
var leafTypes=[{e:'🌱'},{e:'🌿'},{e:'🪴'},{e:'🌳'}];
// shuffle
for(var i=leafTypes.length-1;i>0;i--){var j=Math.floor(Math.random()*(i+1));var t=leafTypes[i];leafTypes[i]=leafTypes[j];leafTypes[j]=t;}
var container=document.getElementById('leaf-container');
var correct=[]; // will hold positions of 🌱,🌿,🪴,🌳 in shuffled visual order
leafTypes.forEach(function(l,pos){
if(l.e==='🌱')correct[0]=pos;
if(l.e==='🌿')correct[1]=pos;
if(l.e==='🪴')correct[2]=pos;
if(l.e==='🌳')correct[3]=pos;
var s=document.createElement('span');
s.textContent=l.e;
s.id='leaf-'+pos;
s.style.cssText='cursor:pointer;display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;background:#4a8262;color:white;font-size:1.4rem;transition:all 0.3s;user-select:none;';
s.onclick=function(){captchaClick(pos);};
container.appendChild(s);
});
var order=[],step=0;
function resetAll(){
order=[];step=0;
for(var i=0;i< 4 ; i + + ) { var p = document.getElementById('leaf-'+i);if(p)p.style.background='#4a8262';}
}
window.captchaClick=function(i){
if(order.indexOf(i)!==-1)return;
order.push(i);
var p=document.getElementById('leaf-'+i);if(p)p.style.background='#b9a5d7';
if(correct[step]===i){step++;
if(step===4){
var r=document.getElementById('captcha-result');
r.innerHTML='📧 < a href = \"mailto:tree.ad@use.startmail.com\" > tree.ad@use.startmail.com< / a > ';
r.style.display='block';
var h=document.getElementById('captcha-hint');
h.textContent='✨ You found it! Send an email to request access.';
}
}else{
resetAll();
document.getElementById('captcha-hint').textContent='Not quite — try again! Click smallest to largest 🌱 → 🌿 → 🪴 → 🌳';
}
};
})();
< / script >
< p > Once you have access, read on below.< / p >
< hr / >
< h2 id = "how-it-works" > 🛠 How it works< a class = "headerlink" href = "#how-it-works" title = "Permanent link" > ¶ < / a > < / h2 >
< table >
< thead >
< tr >
< th > What< / th >
< th > Details< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > < strong > Site host< / strong > < / td >
< td > < a href = "https://forgejo.org" > Forgejo< / a > — a friendly, self-hosted git platform< / td >
< / tr >
< tr >
< td > < strong > Repo< / strong > < / td >
< td > < a href = "https://bali.krystl.org/aja/up" > bali.krystl.org/aja/up< / a > < / td >
< / tr >
< tr >
< td > < strong > Built with< / strong > < / td >
< td > < a href = "https://zensical.org" > Zensical< / a > — turns Markdown files into a beautiful docs site< / td >
< / tr >
< tr >
< td > < strong > Local editor< / strong > < / td >
< td > < a href = "https://tolaria.dev" > Tolaria< / a > — a simple desktop app for editing Markdown with git built in< / td >
< / tr >
< / tbody >
< / table >
< hr / >
< h2 id = "making-your-first-edit" > ✏️ Making your first edit< a class = "headerlink" href = "#making-your-first-edit" title = "Permanent link" > ¶ < / a > < / h2 >
< p > Follow these steps. If you get stuck, the answer is usually just a few clicks away.< / p >
< h3 id = "step-1-open-the-repo-in-forgejo" > Step 1 — Open the repo in Forgejo< a class = "headerlink" href = "#step-1-open-the-repo-in-forgejo" title = "Permanent link" > ¶ < / a > < / h3 >
< p > Go to < strong > < a href = "https://bali.krystl.org/aja/up" > bali.krystl.org/aja/up< / a > < / strong > and sign in with your account.< / p >
< h3 id = "step-2-create-your-branch" > Step 2 — Create your branch< a class = "headerlink" href = "#step-2-create-your-branch" title = "Permanent link" > ¶ < / a > < / h3 >
< p > Every edit lives on its own branch. This keeps the main site safe while you work.< / p >
< ul >
< li > Click the < strong > branch dropdown< / strong > (near the top of the page, it probably says < code > main< / code > or < code > master< / code > )< / li >
< li > Type a short name for your branch — like < code > add-meditation-guide< / code > or < code > fix-typo-daily-sadhana< / code > < / li >
< li > Click < strong > "Create branch"< / strong > < / li >
< / ul >
< p > You're now on your own copy of the site. Any changes you make stay on this branch until you're ready to share them.< / p >
< h3 id = "step-3-edit-a-file" > Step 3 — Edit a file< a class = "headerlink" href = "#step-3-edit-a-file" title = "Permanent link" > ¶ < / a > < / h3 >
< ul >
< li > Browse to the file you want to edit (all content lives in the < code > docs/< / code > folder)< / li >
< li > Click the < strong > pencil icon< / strong > (✏️) in the toolbar above the file< / li >
< li > Make your changes using Markdown (see our < a href = "markdown/" > Markdown quick reference< / a > )< / li >
< li > Scroll down and write a short commit message — something like < code > Add breathing exercise section< / code > < / li >
< li > Click < strong > "Commit changes"< / strong > < / li >
< / ul >
< h3 id = "step-4-open-a-pull-request" > Step 4 — Open a Pull Request< a class = "headerlink" href = "#step-4-open-a-pull-request" title = "Permanent link" > ¶ < / a > < / h3 >
< p > When your changes are ready:< / p >
< ul >
< li > Go back to the repo homepage< / li >
< li > You'll see a banner: < em > "You pushed to your branch — want to open a pull request?"< / em > < / li >
< li > Click < strong > "Compare & pull request"< / strong > < / li >
< li > Add a title and a short description of what you changed< / li >
< li > Click < strong > "Create pull request"< / strong > < / li >
< / ul >
< p > A maintainer will review your changes and merge them into the main site. That's it! 🎉< / p >
< hr / >
< h2 id = "editing-locally-optional" > 💻 Editing locally (optional)< a class = "headerlink" href = "#editing-locally-optional" title = "Permanent link" > ¶ < / a > < / h2 >
< p > If you prefer to work on your own computer:< / p >
< h3 id = "youll-need" > You'll need< a class = "headerlink" href = "#youll-need" title = "Permanent link" > ¶ < / a > < / h3 >
< ul >
< li > < strong > < a href = "https://git-scm.com/downloads" > git< / a > < / strong > — the version control tool< / li >
< li > < strong > < a href = "https://tolaria.dev" > Tolaria< / a > < / strong > — a friendly Markdown editor with git support< / li >
< / ul >
< h3 id = "steps" > Steps< a class = "headerlink" href = "#steps" title = "Permanent link" > ¶ < / a > < / h3 >
< div class = "language-bash highlight" > < pre > < span > < / span > < code > < span id = "__span-0-1" > < a id = "__codelineno-0-1" name = "__codelineno-0-1" href = "#__codelineno-0-1" > < / a > < span class = "c1" > # 1. Clone the repo< / span >
< / span > < span id = "__span-0-2" > < a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" > < / a > git< span class = "w" > < / span > clone< span class = "w" > < / span > https://bali.krystl.org/aja/up.git
< / span > < span id = "__span-0-3" > < a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" > < / a > < span class = "nb" > cd< / span > < span class = "w" > < / span > up
< / span > < span id = "__span-0-4" > < a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" > < / a >
< / span > < span id = "__span-0-5" > < a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" > < / a > < span class = "c1" > # 2. Create your branch< / span >
< / span > < span id = "__span-0-6" > < a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" > < / a > git< span class = "w" > < / span > checkout< span class = "w" > < / span > -b< span class = "w" > < / span > my-edit
< / span > < span id = "__span-0-7" > < a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" > < / a >
< / span > < span id = "__span-0-8" > < a id = "__codelineno-0-8" name = "__codelineno-0-8" href = "#__codelineno-0-8" > < / a > < span class = "c1" > # 3. Open the folder in Tolaria and start editing< / span >
< / span > < span id = "__span-0-9" > < a id = "__codelineno-0-9" name = "__codelineno-0-9" href = "#__codelineno-0-9" > < / a >
< / span > < span id = "__span-0-10" > < a id = "__codelineno-0-10" name = "__codelineno-0-10" href = "#__codelineno-0-10" > < / a > < span class = "c1" > # 4. When done, commit and push< / span >
< / span > < span id = "__span-0-11" > < a id = "__codelineno-0-11" name = "__codelineno-0-11" href = "#__codelineno-0-11" > < / a > git< span class = "w" > < / span > add< span class = "w" > < / span > .
< / span > < span id = "__span-0-12" > < a id = "__codelineno-0-12" name = "__codelineno-0-12" href = "#__codelineno-0-12" > < / a > git< span class = "w" > < / span > commit< span class = "w" > < / span > -m< span class = "w" > < / span > < span class = "s2" > " Describe your changes" < / span >
< / span > < span id = "__span-0-13" > < a id = "__codelineno-0-13" name = "__codelineno-0-13" href = "#__codelineno-0-13" > < / a > git< span class = "w" > < / span > push< span class = "w" > < / span > -u< span class = "w" > < / span > origin< span class = "w" > < / span > my-edit
< / span > < / code > < / pre > < / div >
< p > Then follow Step 4 above ("Open a Pull Request") to open your pull request on Forgejo.< / p >
< hr / >
< h2 id = "plant-your-own" > 🌱 Plant Your Own< a class = "headerlink" href = "#plant-your-own" title = "Permanent link" > ¶ < / a > < / h2 >
< p > Want to run your own version of this site? You can copy it and publish it under your own domain.< / p >
< h3 id = "copy-the-repo" > Copy the repo< a class = "headerlink" href = "#copy-the-repo" title = "Permanent link" > ¶ < / a > < / h3 >
< p > < strong > Option A — With git (recommended):< / strong > < / p >
< div class = "language-bash highlight" > < pre > < span > < / span > < code > < span id = "__span-1-1" > < a id = "__codelineno-1-1" name = "__codelineno-1-1" href = "#__codelineno-1-1" > < / a > git< span class = "w" > < / span > clone< span class = "w" > < / span > https://bali.krystl.org/aja/up.git< span class = "w" > < / span > my-own-site
< / span > < span id = "__span-1-2" > < a id = "__codelineno-1-2" name = "__codelineno-1-2" href = "#__codelineno-1-2" > < / a > < span class = "nb" > cd< / span > < span class = "w" > < / span > my-own-site
< / span > < / code > < / pre > < / div >
< p > < strong > Option B — Download as ZIP:< / strong > < / p >
< ol >
< li > Go to < a href = "https://bali.krystl.org/aja/up" > bali.krystl.org/aja/up< / a > < / li >
< li > Find the < strong > "Download"< / strong > or < strong > "⋯"< / strong > menu near the top of the file list< / li >
< li > Choose < strong > "Download ZIP"< / strong > < / li >
< li > Unzip it on your computer< / li >
< / ol >
< h3 id = "set-up-zensical" > Set up Zensical< a class = "headerlink" href = "#set-up-zensical" title = "Permanent link" > ¶ < / a > < / h3 >
< p > This site uses < a href = "https://zensical.org" > Zensical< / a > to build from Markdown. Install it and edit the config:< / p >
< div class = "language-bash highlight" > < pre > < span > < / span > < code > < span id = "__span-2-1" > < a id = "__codelineno-2-1" name = "__codelineno-2-1" href = "#__codelineno-2-1" > < / a > < span class = "c1" > # Install Zensical (Python 3.12+ required)< / span >
< / span > < span id = "__span-2-2" > < a id = "__codelineno-2-2" name = "__codelineno-2-2" href = "#__codelineno-2-2" > < / a > pip< span class = "w" > < / span > install< span class = "w" > < / span > zensical
< / span > < span id = "__span-2-3" > < a id = "__codelineno-2-3" name = "__codelineno-2-3" href = "#__codelineno-2-3" > < / a >
< / span > < span id = "__span-2-4" > < a id = "__codelineno-2-4" name = "__codelineno-2-4" href = "#__codelineno-2-4" > < / a > < span class = "c1" > # Or with uv (recommended):< / span >
< / span > < span id = "__span-2-5" > < a id = "__codelineno-2-5" name = "__codelineno-2-5" href = "#__codelineno-2-5" > < / a > uv< span class = "w" > < / span > add< span class = "w" > < / span > --dev< span class = "w" > < / span > zensical
< / span > < / code > < / pre > < / div >
< h3 id = "make-it-yours" > Make it yours< a class = "headerlink" href = "#make-it-yours" title = "Permanent link" > ¶ < / a > < / h3 >
< p > Open < code > zensical.toml< / code > and change:< / p >
< div class = "language-toml highlight" > < pre > < span > < / span > < code > < span id = "__span-3-1" > < a id = "__codelineno-3-1" name = "__codelineno-3-1" href = "#__codelineno-3-1" > < / a > < span class = "n" > site_name< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "s2" > " Your Site Name" < / span >
< / span > < span id = "__span-3-2" > < a id = "__codelineno-3-2" name = "__codelineno-3-2" href = "#__codelineno-3-2" > < / a > < span class = "n" > site_description< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "s2" > " What your site is about" < / span >
< / span > < span id = "__span-3-3" > < a id = "__codelineno-3-3" name = "__codelineno-3-3" href = "#__codelineno-3-3" > < / a > < span class = "n" > site_url< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "s2" > " https://your-domain.com" < / span >
< / span > < span id = "__span-3-4" > < a id = "__codelineno-3-4" name = "__codelineno-3-4" href = "#__codelineno-3-4" > < / a > < span class = "n" > site_author< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "s2" > " You" < / span >
< / span > < span id = "__span-3-5" > < a id = "__codelineno-3-5" name = "__codelineno-3-5" href = "#__codelineno-3-5" > < / a > < span class = "n" > repo_url< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "s2" > " https://your-forgejo-instance/you/your-repo" < / span >
< / span > < / code > < / pre > < / div >
< p > Replace < code > docs/assets/images/tree-ad-logo.svg< / code > with your own logo, then build:< / p >
< div class = "language-bash highlight" > < pre > < span > < / span > < code > < span id = "__span-4-1" > < a id = "__codelineno-4-1" name = "__codelineno-4-1" href = "#__codelineno-4-1" > < / a > zensical< span class = "w" > < / span > build< span class = "w" > < / span > --config-file< span class = "w" > < / span > zensical.toml
< / span > < / code > < / pre > < / div >
< p > Your site appears in the < code > site/< / code > folder — upload it to any static host (Netlify, Cloudflare Pages, a VPS, or keep it on Forgejo Pages).< / p >
< h3 id = "use-your-own-domain" > Use your own domain< a class = "headerlink" href = "#use-your-own-domain" title = "Permanent link" > ¶ < / a > < / h3 >
< ol >
< li > Build the site and upload the < code > site/< / code > folder to your hosting provider< / li >
< li > Point your domain's DNS to your host (your provider will have instructions)< / li >
< li > Update < code > site_url< / code > in < code > zensical.toml< / code > to match< / li >
< / ol >
< p > That's it — you now have your own Zensical-powered knowledge garden.< / p >
< hr / >
< p > Questions? Found a bug? < strong > < a href = "https://bali.krystl.org/aja/up/issues" > Open an issue< / a > < / strong > on the repo.< / p >
< / article >
< / div >
< script > var tabs = _ _md _get ( "__tabs" ) ; if ( Array . isArray ( tabs ) ) e : for ( var set of document . querySelectorAll ( ".tabbed-set" ) ) { var labels = set . querySelector ( ".tabbed-labels" ) ; for ( var tab of tabs ) for ( var label of labels . getElementsByTagName ( "label" ) ) if ( label . innerText . trim ( ) === tab ) { var input = document . getElementById ( label . htmlFor ) ; input . checked = ! 0 ; continue e } } < / script >
< script > var target = document . getElementById ( location . hash . slice ( 1 ) ) ; target && target . name && ( target . checked = target . name . startsWith ( "__tabbed_" ) ) < / script >
< / div >
< button type = "button" class = "md-top md-icon" data-md-component = "top" hidden >
< svg xmlns = "http://www.w3.org/2000/svg" fill = "none" stroke = "currentColor" stroke-linecap = "round" stroke-linejoin = "round" stroke-width = "2" class = "lucide lucide-circle-arrow-up" viewBox = "0 0 24 24" > < circle cx = "12" cy = "12" r = "10" / > < path d = "m16 12-4-4-4 4M12 16V8" / > < / svg >
Back to top
< / button >
< / main >
< footer class = "md-footer" >
< nav class = "md-footer__inner md-grid" aria-label = "Footer" >
2026-06-03 11:50:10 +00:00
< a href = "./.." class = "md-footer__link md-footer__link--prev" aria-label = "Previous: Tree of Ascension" >
2026-06-03 10:17:44 +00:00
< div class = "md-footer__button md-icon" >
< svg xmlns = "http://www.w3.org/2000/svg" fill = "none" stroke = "currentColor" stroke-linecap = "round" stroke-linejoin = "round" stroke-width = "2" class = "lucide lucide-arrow-left" viewBox = "0 0 24 24" > < path d = "m12 19-7-7 7-7M19 12H5" / > < / svg >
< / div >
< div class = "md-footer__title" >
< span class = "md-footer__direction" >
Previous
< / span >
< div class = "md-ellipsis" >
2026-06-03 11:50:10 +00:00
Tree of Ascension
2026-06-03 10:17:44 +00:00
< / div >
< / div >
< / a >
< a href = "./markdown/" class = "md-footer__link md-footer__link--next" aria-label = "Next: Markdown in 5min" >
< div class = "md-footer__title" >
< span class = "md-footer__direction" >
Next
< / span >
< div class = "md-ellipsis" >
Markdown in 5min
< / div >
< / div >
< div class = "md-footer__button md-icon" >
< svg xmlns = "http://www.w3.org/2000/svg" fill = "none" stroke = "currentColor" stroke-linecap = "round" stroke-linejoin = "round" stroke-width = "2" class = "lucide lucide-arrow-right" viewBox = "0 0 24 24" > < path d = "M5 12h14M12 5l7 7-7 7" / > < / svg >
< / div >
< / a >
< / nav >
< div class = "md-footer-meta md-typeset" >
< div class = "md-footer-meta__inner md-grid" >
< div class = "md-copyright" >
< div class = "md-copyright__highlight" >
Copyright © 2026 The authors
< / div >
< div class = "md-copyright__badges" >
< span class = "md-copyright__zensical" >
Built with
< a href = "https://zensical.org/" target = "_blank" rel = "noopener" >
Zensical
< / a >
< / span >
< a href = "https://grebedoc.dev" class = "md-copyright__grebedoc" title = "served by Grebedoc" >
< img src = "https://grebedoc.dev/88x31.gif" alt = "served by Grebedoc" style = "image-rendering: pixelated; height: 31px; width: 88px;" >
< / a >
< / div >
< / div >
< / div >
< / div >
< / footer >
< / div >
< div class = "md-dialog" data-md-component = "dialog" >
< div class = "md-dialog__inner md-typeset" > < / div >
< / div >
< script id = "__config" type = "application/json" > { "annotate" : null , "base" : ".." , "features" : [ "announce.dismiss" , "content.action.edit" , "content.action.view" , "content.code.annotate" , "content.code.copy" , "content.code.select" , "content.footnote.tooltips" , "content.tabs.link" , "content.tooltips" , "navigation.footer" , "navigation.indexes" , "navigation.instant" , "navigation.instant.prefetch" , "navigation.path" , "navigation.sections" , "navigation.top" , "navigation.tracking" , "search.highlight" ] , "search" : "../assets/javascripts/workers/search.e2d2d235.min.js" , "tags" : null , "translations" : { "clipboard.copied" : "Copied to clipboard" , "clipboard.copy" : "Copy to clipboard" , "search.result.more.one" : "1 more on this page" , "search.result.more.other" : "# more on this page" , "search.result.none" : "No matching documents" , "search.result.one" : "1 matching document" , "search.result.other" : "# matching documents" , "search.result.placeholder" : "Type to start searching" , "search.result.term.missing" : "Missing" , "select.version" : "Select version" } , "version" : null } < / script >
< script src = "../assets/javascripts/bundle.6e5f0216.min.js" > < / script >
< script src = "../javascripts/extra.js" > < / script >
< / body >
< / html >