CINXE.COM
RelaGit
<!DOCTYPE html> <html lang="en"> <head> <link rel="canonical" href="https://rela.dev/"> <link rel="preload" as="image" href="/assets/client/dark.webp"> <link rel="preload" as="image" href="/assets/landing/blur@0-75.webp" imagesrcset="/assets/landing/blur@0-75.webp 600w, /assets/landing/blur.webp 1000w, /assets/landing/blur@2.webp 1600w" imagesizes="140vw"> <title>RelaGit</title><link rel="preload" href="https://rsms.me/inter/inter.css" as="style"><meta name="description" content="The elegant solution to graphical version control. Built by developers, for developers."><meta charset="utf-8"><meta name="keywords" content="git, github, gitlab, git workflow, git management, git productivity, git tools, git desktop, git desktop app, git desktop application, git desktop client, git desktop software, git desktop tool, git desktop tools, git desktop utility, relagit"><link rel="icon" href="https://rela.dev/assets/favicon.svg"><link rel="apple-touch-icon" href="https://rela.dev/assets/favicon.svg"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="theme-color" content="#000"><meta name="msapplication-navbutton-color" content="#1c84ec"><meta name="apple-mobile-web-app-status-bar-style" content="#1c84ec"><meta property="og:image" content="https://rela.dev/assets/opengraph.png"><meta property="og:url" content="https://rela.dev"><meta property="og:title" content="RelaGit"><meta property="og:type" content="website"><meta name="twitter:url" content="https://rela.dev"><meta name="twitter:site" content="@withrela"><meta name="twitter:creator" content="@withrela"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="RelaGit"><meta name="twitter:description" content="The elegant solution to graphical version control. Built by developers, for developers."><meta name="twitter:image" content="https://rela.dev/assets/opengraph.png"><meta name="msvalidate.01" content="AC7B7B049E0D76DD2F6D46CD7CCDC63F"><link rel="stylesheet" href="/_astro/_post_.DNoV5P2e.css"> <style>.tag{padding:4px 6px;background:color-mix(in srgb,var(--color-blue-500) 20%,transparent);color:var(--color-blue-500-alt);border-radius:4px;font-size:10px;margin-left:4px;display:flex;align-items:center;justify-content:center;gap:4px}.tag svg{width:11px!important;height:11px!important}@media screen and (max-width: 600px){.tag{font-size:0;line-height:0;gap:0}.tag p{width:0!important}}_::-webkit-full-page-media,_:future,:root .header{background:linear-gradient(#000000ed,#0000)}.header{display:flex;justify-content:space-between;align-items:center;flex-shrink:0;z-index:9;backdrop-filter:blur(30px) saturate(2);-webkit-backdrop-filter:blur(30px) saturate(2);position:fixed;background:none;border:none;inset:0;padding:24px 120px;transform:none;width:100%;height:fit-content}@media screen and (max-width: 600px){.header{position:fixed!important}}.header.embed{position:relative!important;padding:24px 4rem}@media screen and (width < 780px){.header.embed{padding:24px 2rem}}.header.nobg{background:none;backdrop-filter:none;-webkit-backdrop-filter:none}@media screen and (max-width: 850px){.header a:nth-child(6),.header a:nth-child(7){display:none}}@media screen and (max-width: 750px){.header a:nth-child(5),.header a:nth-child(6),.header a:nth-child(7){display:none}}@media screen and (max-width: 400px){.header a:nth-child(4),.header a:nth-child(5),.header a:nth-child(6),.header a:nth-child(7){display:none}}@media screen and (max-width: 1068px){.header{padding:24px 4rem}}@media screen and (max-width: 768px){.header{padding:24px 4rem}}@media screen and (max-width: 480px){.header{padding:24px 40px}}@media screen and (max-width: 420px){.header{padding:24px 20px}}.header__group{display:flex;justify-content:center;gap:32px}@media screen and (max-width: 600px){.header__group{gap:16px}}.header__group__link{display:flex;align-items:center;justify-content:center;gap:8px;color:var(--color-secondary);text-align:center;font-size:14px;font-weight:400;text-decoration:none;transition:color .2s ease-in-out}@media screen and (max-width: 600px){.header__group__link.git{font-size:0}}.header__group__link.disabled{pointer-events:none;opacity:.5}.header__group__link:hover{color:var(--white)} </style> <link rel="stylesheet" href="/_astro/index.Cfg5oJVR.css"> <style>.icon{display:contents}.icon svg{fill:currentColor} .button{display:flex;padding:16px 24px;justify-content:center;align-items:center;gap:16px;width:100%;border-radius:4px;background:var(--white);position:relative;color:var(--black);font-size:16px;font-weight:500;line-height:130%;text-decoration:none;overflow:hidden;cursor:pointer}.button:after{position:absolute;content:"";z-index:2;width:100%;height:100%;left:0;top:0;background:#0000002a;transition:transform .2s ease-out;transform:translate(-100%)}.button:hover:after{transform:translate(0)}.button.disabled{pointer-events:none;opacity:.6} </style> <link rel="stylesheet" href="/_astro/index.CrXxYMr5.css"> <link rel="stylesheet" href="/_astro/index.BPYKUAJL.css"><script type="module" src="/_astro/hoisted.BNZLKwqd.js"></script> <script>window.va = window.va || function () { (window.vaq = window.vaq || []).push(arguments); }; var script = document.createElement('script'); script.defer = true; script.src = '/_vercel/insights/script.js'; var head = document.querySelector('head'); head.appendChild(script); </script></head> <body> <main class="index"> <header class="header "> <div class="header__group"> <a aria-label="Home" href="/" class="header__group__link" id="rightclick-branding"> <svg width="24" height="24" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg"> <g clip-path="url(#clip0_132_52)"> <path fill-rule="evenodd" clip-rule="evenodd" d="M148.5 129H186.5V257.289C205.036 245.805 229.165 240 257.5 240C284.741 240 300.379 233.414 309.447 224.184C318.575 214.893 324.5 199.416 324.5 174V129H362.5V174C362.5 204.584 355.425 231.607 336.553 250.816C317.621 270.086 290.259 278 257.5 278C230.273 278 212.42 284.484 201.793 292.897C191.628 300.944 186.5 311.935 186.5 325.5V382.131H148.5V129Z" fill="currentColor"></path> <mask id="mask0_132_52" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="194" y="256" width="168" height="126"> <path d="M342 256.207C320.474 277.5 290.485 285.707 256.5 285.707C230.519 285.707 214.742 291.902 206.069 298.768C198.063 305.107 194 313.58 194 324.707V381.838H362V256L342 256.207Z" fill="black"></path> </mask> <g mask="url(#mask0_132_52)"> <path fill-rule="evenodd" clip-rule="evenodd" d="M262.631 322.386C253.529 314.494 243.477 300.204 243 283.5L281 283C281.023 283.796 281.346 288.318 287.525 293.676C292.487 297.978 298.614 301.949 306.304 306.931C308.512 308.362 310.848 309.876 313.323 311.506C332.619 324.21 362 344.692 362 382H324C324 367.308 313.381 357.04 292.427 343.244C290.689 342.1 288.846 340.909 286.939 339.677C278.937 334.508 269.814 328.615 262.631 322.386Z" fill="currentColor" fill-opacity="0.6"></path> </g> </g> <defs> <clipPath id="clip0_132_52"> <rect width="214" height="253.131" fill="white" transform="translate(149 129)"></rect> </clipPath> </defs> </svg> </a> <a href="/download" class="header__group__link"> Download <div class="tag"> <span class="icon "><svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-beaker" aria-hidden="true" style="undefined"><path d="M5 5.782V2.5h-.25a.75.75 0 0 1 0-1.5h6.5a.75.75 0 0 1 0 1.5H11v3.282l3.666 5.76C15.619 13.04 14.543 15 12.767 15H3.233c-1.776 0-2.852-1.96-1.899-3.458Zm-2.4 6.565a.75.75 0 0 0 .633 1.153h9.534a.75.75 0 0 0 .633-1.153L12.225 10.5h-8.45ZM9.5 2.5h-3V6c0 .143-.04.283-.117.403L4.73 9h6.54L9.617 6.403A.746.746 0 0 1 9.5 6Z"></path></svg></span> <p>Beta</p> </div> </a> <!-- <a href="/enterprise" class="header__group__link"> Enterprise </a> --> <a href="/docs" class="header__group__link"> Docs </a> <a href="/blog" class="header__group__link"> Blog </a> <a aria-label="Browse Workflows" href="https://www.npmjs.com/search?q=relagit" class="header__group__link"> Workflows <span class="icon "><svg version="1.1" width="12" height="12" viewBox="0 0 16 16" class="octicon octicon-link-external" aria-hidden="true" style="undefined"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></span> </a> <a aria-label="Browse Styles" href="/styles" class="header__group__link"> Styles </a> </div> <div class="header__group"> <a href="/redirect/github" class="header__group__link git" target="_blank"> <span class="icon "><svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-mark-github" aria-hidden="true" style="undefined"><path d="M8 0c4.42 0 8 3.58 8 8a8.013 8.013 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27-.68 0-1.36.09-2 .27-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8Z"></path></svg></span> GitHub </a> </div> </header> <h1 class="hero-text"> <span class="hero-text-highlight">Streamline your Git workflow.</span> <br> <span>Modern version control client for developers.</span> <div class="hero-text-badges"> <a class="hero-text-badges-badge highlight hide-small" href="/download"> <div class="hero-text-badges-badge-text">Download</div> <div class="hero-text-badges-badge-icon"> <span class="icon "><svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-download" aria-hidden="true" style="undefined"><path d="M2.75 14A1.75 1.75 0 0 1 1 12.25v-2.5a.75.75 0 0 1 1.5 0v2.5c0 .138.112.25.25.25h10.5a.25.25 0 0 0 .25-.25v-2.5a.75.75 0 0 1 1.5 0v2.5A1.75 1.75 0 0 1 13.25 14Z"></path><path d="M7.25 7.689V2a.75.75 0 0 1 1.5 0v5.689l1.97-1.969a.749.749 0 1 1 1.06 1.06l-3.25 3.25a.749.749 0 0 1-1.06 0L4.22 6.78a.749.749 0 1 1 1.06-1.06l1.97 1.969Z"></path></svg></span> </div> </a> <a class="hero-text-badges-badge" href="/redirect/github" target="_blank"> <div class="hero-text-badges-badge-text">Open Source</div> <div class="hero-text-badges-badge-icon"> <span class="icon "><svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-mark-github" aria-hidden="true" style="undefined"><path d="M8 0c4.42 0 8 3.58 8 8a8.013 8.013 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27-.68 0-1.36.09-2 .27-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8Z"></path></svg></span> </div> </a> </div> </h1> <div class="window-container" aria-label="Image of RelaGit in the diff view, multple added lines and files."> <div class="window"></div> <img aria-hidden="true" src="/assets/landing/blur@0-75.webp" width="140vw" height="40vw" alt="Blurry background gradient blobs" class="object" srcset="/assets/landing/blur@0-75.webp 600w, /assets/landing/blur.webp 1000w, /assets/landing/blur@2.webp 1600w" sizes="140vw"> </div> <div class="separator with-content"> <a href="https://www.producthunt.com/posts/relagit" target="_blank" aria-label="ProductHunt medal for top 4 product of the day."> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 122 37" height="4rem" class="medal"> <defs> <linearGradient id="gradient"> <stop offset="0%" stop-color="#FFD700"></stop> <stop offset="100%" stop-color="#FFA500"></stop> </linearGradient> </defs><path d="M104.953 36.286c-4.22 1.634-5.936.086-5.936-.891 1.495-.126 5.067-.331 5.936.891Zm5.356-1.336a5.486 5.486 0 0 1-7.083-.497c1.44-.4 5.372-.874 7.083.497Zm-7.139-3.176c.16 2.033-1.922 3.176-4.17 3.341.41-2.045 2.509-2.958 4.17-3.341Zm4.032-1.874c.238.869-.089 3.228-3.323 4.164.139-1.593.986-3.667 3.323-4.164Zm6.413 2.365a5.005 5.005 0 0 1-6.385.571c1.296-.668 4.408-1.57 6.385-.571Zm-3.417-4.706c.443.856.537 3.295-2.326 4.763-.166-1.57.465-4.255 2.326-4.763Zm7.083.948a4.389 4.389 0 0 1-2.657 2.217 4.243 4.243 0 0 1-3.39-.44c1.805-1.697 4.685-2.348 6.047-1.777Zm-4.28-4.547c1.284 2.24-.073 4.798-1.485 5.849-.628-2.082-.052-4.351 1.484-5.849Zm6.662-.097c.155 3.479-3.478 3.29-5.184 3.313.537-.731 3.522-3.381 5.184-3.313Zm-4.48-3.25c.675.743 1.688 3.599-.555 5.929-.703-1.685-.858-4.272.554-5.929Zm6.385-1.542c.116 2.81-2.249 4.232-4.53 4.21.686-1.354 2.52-3.964 4.53-4.21Zm-4.785-1.936c1.512.89 1.34 3.764.448 5.26-1.002-1.393-1.75-3.124-.448-5.26Zm4.884-2.633c.748 2.559-1.45 4.29-2.769 4.438.338-1.222.781-3.387 2.77-4.438Zm-4.607-.851c1.667.835 2.457 2.832 1.833 4.632-1.163-.937-2.564-2.919-1.833-4.632Zm4.685-3.096c1.03 3.113-1.335 4.13-2.215 4.38.105-1.324.947-3.963 2.215-4.38Zm-4.619-.817c.676.195 2.603 1.777 2.254 4.61-1.268-.714-2.808-2.074-2.254-4.61Zm3.921-3.9c1.152 3.826-.77 5.397-1.401 5.71-.1-1.21-.222-4.037 1.401-5.71Zm-4.264.096c1.207.337 2.73 2.553 2.658 4.684-1.196-.548-2.985-2.827-2.658-4.684Zm.36-5.934c2.802 2.896 3.195 5.18 2.376 7.996-1.269-1.142-2.282-4.569-2.376-7.996ZM17.047 36.286c4.22 1.634 5.936.086 5.936-.891-1.495-.126-5.067-.331-5.936.891ZM11.69 34.95a5.486 5.486 0 0 0 7.083-.497c-1.44-.4-5.372-.874-7.083.497Zm7.139-3.176c-.16 2.033 1.922 3.176 4.17 3.341-.41-2.045-2.509-2.958-4.17-3.341ZM14.798 29.9c-.238.869.089 3.228 3.323 4.164-.139-1.593-.986-3.667-3.323-4.164Zm-6.413 2.365a5.005 5.005 0 0 0 6.385.571c-1.296-.668-4.408-1.57-6.385-.571Zm3.417-4.706c-.443.856-.537 3.295 2.326 4.763.166-1.57-.465-4.255-2.326-4.763Zm-7.083.948a4.389 4.389 0 0 0 2.657 2.217 4.243 4.243 0 0 0 3.39-.44c-1.805-1.697-4.685-2.348-6.047-1.777Zm4.28-4.547c-1.284 2.24.073 4.798 1.485 5.849.628-2.082.052-4.351-1.484-5.849Zm-6.662-.097c-.155 3.479 3.478 3.29 5.184 3.313-.537-.731-3.522-3.381-5.184-3.313Zm4.48-3.25c-.675.743-1.688 3.599.555 5.929.703-1.685.858-4.272-.554-5.929ZM.433 19.071c-.116 2.81 2.249 4.232 4.53 4.21-.686-1.354-2.52-3.964-4.53-4.21Zm4.785-1.936c-1.512.89-1.34 3.764-.448 5.26 1.002-1.393 1.75-3.124.448-5.26ZM.333 14.502c-.748 2.559 1.45 4.29 2.769 4.438-.338-1.222-.781-3.387-2.77-4.438Zm4.607-.851c-1.667.835-2.457 2.832-1.833 4.632 1.163-.937 2.564-2.919 1.833-4.632ZM.255 10.555c-1.03 3.113 1.335 4.13 2.215 4.38-.105-1.324-.947-3.963-2.215-4.38Zm4.619-.817c-.676.195-2.603 1.777-2.254 4.61 1.268-.714 2.808-2.074 2.254-4.61Zm-3.921-3.9c-1.152 3.826.77 5.397 1.401 5.71.1-1.21.222-4.037-1.401-5.71Zm4.264.096c-1.207.337-2.73 2.553-2.658 4.684 1.196-.548 2.985-2.827 2.658-4.684ZM4.857 0C2.055 2.896 1.662 5.18 2.481 7.996 3.75 6.854 4.763 3.427 4.857 0Zm50.599 35c.162 0 .288-.108.288-.27v-2.016h1.062a.284.284 0 0 0 .288-.288v-1.71c0-.162-.126-.27-.288-.27h-1.062V22.67c0-.162-.108-.27-.27-.27h-2.268c-.144 0-.252.054-.324.18l-5.112 7.686a.71.71 0 0 0-.09.36v1.818c0 .162.108.27.27.27h5.04v2.016c0 .162.126.27.288.27h2.178Zm-2.466-8.532v3.978h-2.646l2.646-3.978Zm9.468 8.748c.612 0 1.584-.108 1.584-.558v-1.494c0-.18-.144-.27-.324-.252-.234.018-.396.018-.558.018-.45 0-.756-.252-.756-.738v-3.888h1.35c.162 0 .27-.108.27-.27V26.45c0-.162-.108-.27-.27-.27h-1.35v-2.07c0-.162-.126-.27-.288-.27h-2.214c-.162 0-.288.108-.288.27v2.07h-1.098c-.162 0-.27.108-.27.27v1.584c0 .162.108.27.27.27h1.098v4.194c0 2.052 1.386 2.718 2.844 2.718Zm8.37-9.252c-1.26 0-2.07.63-2.574 1.53V22.4c0-.162-.126-.27-.288-.27H65.77c-.162 0-.27.108-.27.27v12.33c0 .162.108.27.27.27h2.196c.162 0 .288-.108.288-.27v-4.464c0-1.17.576-1.782 1.53-1.782.972 0 1.476.612 1.476 1.782v4.464c0 .162.126.27.288.27h2.178c.162 0 .288-.108.288-.27v-5.112c0-2.304-1.35-3.654-3.186-3.654ZM20.72 15c.09 0 .15-.06.15-.15v-2.26h.72c1.69 0 2.49-.93 2.49-2.29 0-1.36-.8-2.3-2.49-2.3h-2.15c-.09 0-.15.06-.15.15v6.7c0 .09.06.15.15.15h1.28Zm.15-5.6h.68c.53 0 1.02.17 1.02.9 0 .72-.49.89-1.02.89h-.68V9.4Zm5.5 5.6c.09 0 .16-.06.16-.15v-2.36c0-.73.38-1.13 1.01-1.13.15 0 .26.02.36.05.14.03.21 0 .21-.13v-.97c0-.09-.02-.15-.09-.2-.08-.06-.21-.13-.45-.13-.57 0-.88.4-1.04.93l-.05-.65c0-.12-.06-.16-.15-.16h-1.18c-.09 0-.15.06-.15.15v4.6c0 .09.06.15.15.15h1.22Zm4.77.12c1.48 0 2.58-1.12 2.58-2.57 0-1.45-1.1-2.57-2.58-2.57s-2.57 1.12-2.57 2.57c0 1.45 1.09 2.57 2.57 2.57Zm0-1.4c-.62 0-1.1-.45-1.1-1.17s.48-1.17 1.1-1.17c.62 0 1.1.45 1.1 1.17s-.48 1.17-1.1 1.17Zm5.49 1.4c.7 0 1.2-.28 1.53-.75l.02.48c0 .09.07.15.16.15h1.1c.09 0 .17-.06.17-.15V8c0-.09-.07-.15-.16-.15h-1.23c-.09 0-.15.06-.15.15v2.59c-.33-.39-.8-.61-1.44-.61-1.36 0-2.3 1.12-2.3 2.57 0 1.46.94 2.57 2.3 2.57Zm.33-1.39c-.65 0-1.14-.46-1.14-1.18 0-.71.49-1.18 1.14-1.18.67 0 1.13.47 1.13 1.17 0 .72-.46 1.19-1.13 1.19Zm5.52 1.39c.71 0 1.16-.35 1.44-.85l.04.57c0 .12.07.16.16.16h1.17c.09 0 .16-.06.16-.15v-4.6c0-.09-.07-.15-.16-.15h-1.21c-.09 0-.16.06-.16.15v2.48c0 .65-.33.99-.85.99-.54 0-.82-.34-.82-.99v-2.48c0-.09-.07-.15-.16-.15h-1.22c-.09 0-.15.06-.15.15v2.84c0 1.28.74 2.03 1.76 2.03Zm6.44 0c.79 0 1.45-.35 1.87-.9.06-.07.05-.15-.01-.21l-.69-.66c-.08-.08-.19-.08-.26-.01-.27.25-.53.38-.86.38-.74 0-1.18-.56-1.18-1.2 0-.63.44-1.14 1.16-1.14.34 0 .6.12.86.38.08.07.19.07.27-.01l.69-.66c.06-.06.07-.15.01-.21-.42-.55-1.08-.9-1.9-.9-1.48 0-2.56 1.1-2.56 2.54 0 1.47 1.1 2.6 2.6 2.6Zm4.77 0c.34 0 .88-.06.88-.31v-.83c0-.1-.08-.15-.18-.14-.13.01-.22.01-.31.01-.25 0-.42-.14-.42-.41v-2.16h.75c.09 0 .15-.06.15-.15v-.88c0-.09-.06-.15-.15-.15h-.75V8.95c0-.09-.07-.15-.16-.15h-1.23c-.09 0-.16.06-.16.15v1.15h-.61c-.09 0-.15.06-.15.15v.88c0 .09.06.15.15.15h.61v2.33c0 1.14.77 1.51 1.58 1.51Zm5.95 0c1.48 0 2.58-1.12 2.58-2.57 0-1.45-1.1-2.57-2.58-2.57s-2.57 1.12-2.57 2.57c0 1.45 1.09 2.57 2.57 2.57Zm0-1.4c-.62 0-1.1-.45-1.1-1.17s.48-1.17 1.1-1.17c.62 0 1.1.45 1.1 1.17s-.48 1.17-1.1 1.17ZM64.79 15c.09 0 .16-.06.16-.15v-3.57h.98c.09 0 .15-.06.15-.15v-.88c0-.09-.06-.15-.15-.15h-.98v-.49c0-.33.11-.57.58-.57.11 0 .25.03.42.06.07.01.13 0 .13-.07V8.02c0-.06-.03-.13-.09-.16-.3-.15-.52-.17-.82-.17-1.09 0-1.76.52-1.76 1.72v.69h-.58c-.09 0-.15.06-.15.15v.88c0 .09.06.15.15.15h.58v3.57c0 .09.06.15.15.15h1.23Zm6.08.12c.34 0 .88-.06.88-.31v-.83c0-.1-.08-.15-.18-.14-.13.01-.22.01-.31.01-.25 0-.42-.14-.42-.41v-2.16h.75c.09 0 .15-.06.15-.15v-.88c0-.09-.06-.15-.15-.15h-.75V8.95c0-.09-.07-.15-.16-.15h-1.23c-.09 0-.16.06-.16.15v1.15h-.61c-.09 0-.15.06-.15.15v.88c0 .09.06.15.15.15h.61v2.33c0 1.14.77 1.51 1.58 1.51Zm4.65-5.14c-.7 0-1.15.35-1.43.85V8c0-.09-.07-.15-.16-.15h-1.22c-.09 0-.15.06-.15.15v6.85c0 .09.06.15.15.15h1.22c.09 0 .16-.06.16-.15v-2.48c0-.65.32-.99.85-.99.54 0 .82.34.82.99v2.48c0 .09.07.15.16.15h1.21c.09 0 .16-.06.16-.15v-2.84c0-1.28-.75-2.03-1.77-2.03Zm5.34 5.14c.69 0 1.32-.2 1.74-.62.09-.08.09-.16.05-.22l-.41-.58c-.06-.07-.1-.09-.18-.05-.41.23-.75.27-1.08.27-.7 0-1.16-.26-1.33-.79h2.82c.45 0 .58-.3.58-.8 0-1.26-.87-2.35-2.37-2.35-1.51 0-2.52 1.11-2.52 2.55 0 1.49 1.09 2.59 2.7 2.59Zm-1.23-3.05c.12-.58.55-.83 1.06-.83s.9.24 1 .83h-2.06Zm8.27 3.05c.7 0 1.2-.28 1.53-.75l.02.48c0 .09.07.15.16.15h1.1c.09 0 .17-.06.17-.15V8c0-.09-.07-.15-.16-.15h-1.23c-.09 0-.15.06-.15.15v2.59c-.33-.39-.8-.61-1.44-.61-1.36 0-2.3 1.12-2.3 2.57 0 1.46.94 2.57 2.3 2.57Zm.33-1.39c-.65 0-1.14-.46-1.14-1.18 0-.71.49-1.18 1.14-1.18.67 0 1.13.47 1.13 1.17 0 .72-.46 1.19-1.13 1.19Zm5.81 1.39c.7 0 1.2-.28 1.53-.75l.02.48c0 .09.07.15.16.15h1.1c.09 0 .17-.06.17-.15v-4.6c0-.09-.07-.15-.16-.15h-1.11c-.09 0-.16.06-.16.15l-.02.47c-.32-.46-.81-.74-1.53-.74-1.36 0-2.3 1.12-2.3 2.57 0 1.46.94 2.57 2.3 2.57Zm.33-1.39c-.65 0-1.14-.46-1.14-1.18 0-.71.49-1.18 1.14-1.18.67 0 1.13.47 1.13 1.17 0 .72-.46 1.19-1.13 1.19Zm5.96 3.17c.08 0 .15-.04.18-.12l2.6-6.51c.04-.11-.02-.17-.13-.17h-1.24c-.08 0-.16.04-.19.12l-1.08 3-1.08-3c-.03-.08-.11-.12-.19-.12h-1.24c-.11 0-.17.06-.13.17l1.9 4.74-.72 1.71c-.05.12.01.18.13.18h1.19Z" fill="url(#gradient)"></path></svg> </a> <div class="separator vertical"></div> <div class="social-proof"> Trusted by over 15,000 developers from world-class companies. </div> </div> <div class="comment"> <div class="comment-content"> <img src="https://ph-avatars.imgix.net/818113/06e1445d-d495-4aa1-b6a4-b0deb0ce2898.jpeg?auto=compress&codec=mozjpeg&cs=strip&auto=format&w=64&h=64&fit=crop&dpr=2" alt="Commentor" class="comment-content-image"> <div class="comment-content-text"> <div class="comment-content-text-main"> <span class="quotes">““</span>I've never been a fan of GUIs for source control, but I must say that this looks beautiful. I don't think I'd ever use it, as most of my work is on systems that don't even have a GUI, but it does. Look. Beautiful. </div> <a class="comment-content-link" href="https://www.producthunt.com/posts/relagit?comment=3214405" target="_blank"> View on ProductHunt <span class="icon "><svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-link-external" aria-hidden="true" style="undefined"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></span> </a> </div> </div> </div> <div class="cta"> <svg class="circle" viewBox="0 0 1512 1512" fill="none" xmlns="http://www.w3.org/2000/svg"> <g clip-path="url(#clip0_1483_3246)"> <path d="M756 3326C1674.45 3326 2419 2581.45 2419 1663C2419 744.55 1674.45 0 756 0C-162.45 0 -907 744.55 -907 1663C-907 2581.45 -162.45 3326 756 3326Z" fill="url(#paint0_linear_1483_3246)" stroke="url(#paint1_linear_1483_3246)" stroke-width="4"></path> </g> <defs> <linearGradient id="paint0_linear_1483_3246" x1="756" y1="-2" x2="756" y2="3328" gradientUnits="userSpaceOnUse"> <stop offset="0.00311407" stop-color="#A689D9" stop-opacity="0.1"></stop> <stop offset="0.27" stop-color="white" stop-opacity="0"></stop> </linearGradient> <linearGradient id="paint1_linear_1483_3246" x1="6.58981e-05" y1="-1.99999" x2="1512" y2="-1.99999" gradientUnits="userSpaceOnUse"> <stop stop-color="#A689D9" stop-opacity="0"></stop> <stop offset="0.474558" stop-color="#D3C3EE" stop-opacity="0.3"></stop> <stop offset="1" stop-color="#A689D9" stop-opacity="0"></stop> </linearGradient> <clipPath id="clip0_1483_3246"> <rect width="1512" height="1512" fill="white"></rect> </clipPath> </defs> </svg> <div class="info"> <h2 class="info-header"> Everything you expect from a git client, and more. </h2> </div> </div> <div class="feature-grid"> <div class="feature-grid-item"> <img loading="lazy" class="feature-grid-item-graphic github" src="/assets/landing/vercel-next.webp" alt="The GitHub vercel/next.js repository being cloned inside RelaGit"> <div class="feature-grid-item-text"> <div class="feature-grid-item-text-label"> Your favourite developer platforms </div> <div class="feature-grid-item-text-paragraph"> GitHub, GitLab, and Codeberg. Directly integrated into the experience. </div> </div> <svg class="blur" viewBox="0 0 668 515" fill="none" xmlns="http://www.w3.org/2000/svg"> <g filter="url(#filter0_f_1448_2976)"> <path d="M-47.9805 174.611C-85.3177 201.597 -8.30971 277.36 19.6932 304.889C46.7238 311.48 248.267 367.236 289.805 325.826C341.727 274.064 270.553 179.846 225.631 174.611C180.71 169.377 181.293 103.656 185.377 44.3338C189.461 -14.989 -1.30904 140.879 -47.9805 174.611Z" fill="url(#paint0_radial_1448_2976)"></path> <path d="M657.827 62.258C652.27 16.5259 548.71 47.2749 511.07 58.4666C492.226 78.9356 345.933 228.357 362.082 284.743C382.268 355.225 499.159 338.51 525.47 301.726C551.782 264.943 609.019 297.245 658.963 329.516C708.908 361.787 664.773 119.423 657.827 62.258Z" fill="url(#paint1_radial_1448_2976)"></path> </g> <defs> <filter id="filter0_f_1448_2976" x="-174" y="-52" width="885" height="667" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> <feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood> <feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"></feBlend> <feGaussianBlur stdDeviation="50" result="effect1_foregroundBlur_1448_2976"></feGaussianBlur> </filter> <radialGradient id="paint0_radial_1448_2976" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(-10.0597 208.344) rotate(18.2297) scale(277.014 281.73)"> <stop stop-color="#ED5F00"></stop> <stop offset="0.352239" stop-color="#C24112"></stop> <stop offset="0.635" stop-color="#841F19"></stop> <stop offset="0.78" stop-color="#561829"></stop> <stop offset="1" stop-color="#0C162A"></stop> </radialGradient> <radialGradient id="paint1_radial_1448_2976" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(609.96 79.1291) rotate(137.16) scale(277.014 281.73)"> <stop stop-color="#ED5F00"></stop> <stop offset="0.352239" stop-color="#C24112"></stop> <stop offset="0.635" stop-color="#841F19"></stop> <stop offset="0.78" stop-color="#561829"></stop> <stop offset="1" stop-color="#0C162A"></stop> </radialGradient> </defs> </svg> </div> <div class="feature-grid-item"> <img loading="lazy" src="/assets/landing/open.webp" class="feature-grid-item-graphic open" aria-label="Chat messages between two contributors to RelaGit discussing naming of a label."> <div class="feature-grid-item-text"> <div class="feature-grid-item-text-label"> Community fueled </div> <div class="feature-grid-item-text-paragraph"> Built with input and opinion from developers and users. </div> </div> </div> <div class="feature-grid-item full"> <div class="feature-grid-item-text"> <div class="feature-grid-item-text-label"> Goes anywhere you go <div class="feature-grid-item-text-label-badge"> New </div> </div> <div class="feature-grid-item-text-paragraph"> Open out a native popout to view focused information about what you're working on. </div> </div> <img loading="lazy" class="feature-grid-item-graphic popout" src="/assets/landing/popout.webp" alt="A native popout window is open above a code editor. The popout shows modified files and commit history."> <svg class="blur" viewBox="0 0 1352 339" fill="none" xmlns="http://www.w3.org/2000/svg"> <g filter="url(#filter0_f_1448_2980)"> <path d="M1456.83 -16.7421C1451.27 -62.4743 1347.71 -31.7252 1310.07 -20.5336C1291.23 -0.0645449 1144.93 149.357 1161.08 205.743C1181.27 276.225 1298.16 259.51 1324.47 222.726C1350.78 185.943 1408.02 218.245 1457.96 250.516C1507.91 282.787 1463.77 40.4231 1456.83 -16.7421Z" fill="url(#paint0_radial_1448_2980)"></path> <path d="M532 292C555.775 252.54 231.243 126.375 194.691 112.023C167.24 116.552 -82.5131 133.124 -104.5 187.5C-131.984 255.47 12.9018 325.374 56.2812 312.585C99.6606 299.796 124.879 360.488 144.371 416.666C163.862 472.844 502.281 341.325 532 292Z" fill="url(#paint1_radial_1448_2980)"></path> </g> <defs> <filter id="filter0_f_1448_2980" x="-140" y="-131" width="1650" height="667" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> <feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood> <feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"></feBlend> <feGaussianBlur stdDeviation="50" result="effect1_foregroundBlur_1448_2980"></feGaussianBlur> </filter> <radialGradient id="paint0_radial_1448_2980" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(1408.96 0.128953) rotate(137.16) scale(277.014 281.73)"> <stop stop-color="#ED5F00"></stop> <stop offset="0.352239" stop-color="#C24112"></stop> <stop offset="0.635" stop-color="#841F19"></stop> <stop offset="0.78" stop-color="#561829"></stop> <stop offset="1" stop-color="#0C162A"></stop> </radialGradient> <radialGradient id="paint1_radial_1448_2980" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(259.9 189.185) rotate(175.157) scale(277.014 281.73)"> <stop stop-color="#1C84EC"></stop> <stop offset="0.352239" stop-color="#115EAA"></stop> <stop offset="0.635" stop-color="#751984"></stop> <stop offset="0.78" stop-color="#56183E"></stop> <stop offset="1" stop-color="#0C162A"></stop> </radialGradient> </defs> </svg> </div> <div class="feature-grid-item"> <div class="feature-grid-item-graphic speed" aria-label="Three boxes have connections between them, git, RelaGit, and you, the user. Moving blue lines indicate the speed of the connections."> <div class="box"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 92 92"> <defs><clipPath id="a"><path d="M0 .113h91.887V92H0Zm0 0"></path></clipPath></defs> <g clip-path="url(#a)"><path style="stroke:none;fill-rule:nonzero;fill:currentColor;fill-opacity:1" d="M90.156 41.965 50.036 1.848a5.918 5.918 0 0 0-8.372 0l-8.328 8.332 10.566 10.566a7.03 7.03 0 0 1 7.23 1.684 7.034 7.034 0 0 1 1.669 7.277l10.187 10.184a7.028 7.028 0 0 1 7.278 1.672 7.04 7.04 0 0 1 0 9.957 7.05 7.05 0 0 1-9.965 0 7.044 7.044 0 0 1-1.528-7.66l-9.5-9.497V59.36a7.04 7.04 0 0 1 1.86 11.29 7.04 7.04 0 0 1-9.957 0 7.04 7.04 0 0 1 0-9.958 7.06 7.06 0 0 1 2.304-1.539V33.926a7.049 7.049 0 0 1-3.82-9.234L29.242 14.272 1.73 41.777a5.925 5.925 0 0 0 0 8.371L41.852 90.27a5.925 5.925 0 0 0 8.37 0l39.934-39.934a5.925 5.925 0 0 0 0-8.371"></path> </g> </svg> </div> <div class="line"></div> <div class="box"> <svg class="logo" width="26" height="32" viewBox="0 0 26 32" fill="none" xmlns="http://www.w3.org/2000/svg"> <g opacity="0.6" clip-path="url(#clip0_814_589)"> <path fill-rule="evenodd" clip-rule="evenodd" d="M0.441406 0.5H4.88066V16.2111C7.04608 14.8046 9.86489 14.0937 13.1751 14.0937C16.3574 14.0937 18.1843 13.2872 19.2436 12.1569C20.31 11.019 21.0022 9.12354 21.0022 6.01097V0.5H25.4414V6.01097C25.4414 9.7565 24.6149 13.0659 22.4103 15.4183C20.1985 17.7783 17.002 18.7474 13.1751 18.7474C9.99436 18.7474 7.90869 19.5415 6.66727 20.5718C5.47975 21.5573 4.88066 22.9034 4.88066 24.5646V31.5H0.441406V0.5Z" fill="currentColor"></path> <mask id="mask0_814_589" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="5" y="16" width="21" height="16"> <path d="M23.0466 16.104C20.5318 18.7116 17.0284 19.7167 13.0582 19.7167C10.023 19.7167 8.17998 20.4754 7.1668 21.3162C6.23143 22.0926 5.75684 23.1302 5.75684 24.4929V31.5001H25.383V16.0786L23.0466 16.104Z" fill="black"></path> </mask> <g mask="url(#mask0_814_589)"> <path fill-rule="evenodd" clip-rule="evenodd" d="M13.7748 24.1834C12.7115 23.2169 11.5372 21.4667 11.4814 19.4211L15.9207 19.3599C15.9234 19.4574 15.9611 20.0111 16.683 20.6673C17.2626 21.1942 17.9784 21.6804 18.8767 22.2906C19.1347 22.4659 19.4076 22.6513 19.6968 22.8508C21.951 24.4067 25.3833 26.9311 25.3833 31.5001H20.9441C20.9441 29.7008 19.7035 28.4273 17.2556 26.7378C17.0526 26.5976 16.8373 26.4518 16.6145 26.3009C15.6798 25.6679 14.6139 24.9461 13.7748 24.1834Z" fill="currentColor" fill-opacity="0.6"></path> </g> </g> <defs> <clipPath id="clip0_814_589"> <rect width="25" height="31" fill="white" transform="translate(0.5 0.5)"></rect> </clipPath> </defs> </svg> </div> <div class="line"></div> <div class="box highlight"> <span class="icon "><svg style="undefined" width=24 height=24 viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M12 2.5a5.5 5.5 0 0 1 3.096 10.047 9.005 9.005 0 0 1 5.9 8.181.75.75 0 1 1-1.499.044 7.5 7.5 0 0 0-14.993 0 .75.75 0 0 1-1.5-.045 9.005 9.005 0 0 1 5.9-8.18A5.5 5.5 0 0 1 12 2.5ZM8 8a4 4 0 1 0 8 0 4 4 0 0 0-8 0Z"></path> </svg></span> </div> </div> <div class="feature-grid-item-text"> <div class="feature-grid-item-text-label"> Designed to move at your speed </div> <div class="feature-grid-item-text-paragraph"> Next generation tooling enables lightning fast UI updates and performance. </div> </div> </div> <div class="feature-grid-item"> <img loading="lazy" class="feature-grid-item-graphic design" src="/assets/landing/elegant.webp" alt="The Create or Add repository modal in RelaGit, with the curve of the window being emphasised"> <div class="feature-grid-item-text"> <div class="feature-grid-item-text-label"> Pixel perfect interfaces </div> <div class="feature-grid-item-text-paragraph"> Blending form and function with beautiful design. </div> </div> <svg class="blur" viewBox="0 0 668 563" fill="none" xmlns="http://www.w3.org/2000/svg"> <g filter="url(#filter0_f_1448_2983)"> <path d="M637.332 290.608C668.587 256.763 578.102 197.748 545.203 176.309C517.402 175.201 308.81 160.456 276.294 209.27C235.649 270.288 324.07 348.548 369.138 344.784C414.206 341.02 426.647 405.555 434.391 464.512C442.134 523.469 598.264 332.913 637.332 290.608Z" fill="url(#paint0_radial_1448_2983)"></path> <path d="M-32.2548 540.49C-17.7526 584.216 77.6686 533.571 112.347 515.148C126.766 491.353 240.575 315.923 213.582 263.851C179.84 198.761 68.5727 238.29 50.0656 279.555C31.5585 320.821 -30.9413 300.491 -86.2868 278.748C-141.632 257.006 -50.3825 485.832 -32.2548 540.49Z" fill="url(#paint1_radial_1448_2983)"></path> </g> <defs> <filter id="filter0_f_1448_2983" x="-176" y="-148.194" width="963.906" height="793.387" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> <feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood> <feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"></feBlend> <feGaussianBlur stdDeviation="50" result="effect1_foregroundBlur_1448_2983"></feGaussianBlur> </filter> <radialGradient id="paint0_radial_1448_2983" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(593.483 265.052) rotate(-173.191) scale(277.014 281.73)"> <stop stop-color="#1C84EC"></stop> <stop offset="0.352239" stop-color="#115EAA"></stop> <stop offset="0.635" stop-color="#751984"></stop> <stop offset="0.78" stop-color="#56183E"></stop> <stop offset="1" stop-color="#0C162A"></stop> </radialGradient> <radialGradient id="paint1_radial_1448_2983" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(11.3238 514.475) rotate(-54.2607) scale(277.014 281.73)"> <stop stop-color="#1C84EC"></stop> <stop offset="0.352239" stop-color="#115EAA"></stop> <stop offset="0.635" stop-color="#751984"></stop> <stop offset="0.78" stop-color="#56183E"></stop> <stop offset="1" stop-color="#0C162A"></stop> </radialGradient> </defs> </svg> </div> </div> <div class="feature"> <div class="feature-text"> <h2 class="feature-text-header">Creativity is the limit.</h2> <p class="feature-text-paragraph"> Create dynamic workflows to automate actions and perform awesome tasks when things happen in your repositories. </p> <a href="/docs/workflows/creating-workflows" target="_blank" class="feature-text-button" aria-label="Learn more about creating workflows"> Learn More <span class="icon "><svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-arrow-up-right" aria-hidden="true" style="undefined"><path d="M4.53 4.75A.75.75 0 0 1 5.28 4h6.01a.75.75 0 0 1 .75.75v6.01a.75.75 0 0 1-1.5 0v-4.2l-5.26 5.261a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L9.48 5.5h-4.2a.75.75 0 0 1-.75-.75Z"></path></svg></span> </a> </div> <div class="codeblock" aria-label="Codeblock showing .relagit/workflows/action.ts" tabindex="0"> <div class="codeblock-header"> <div class="codeblock-filename"> <svg aria-hidden="true" viewBox="0 0 15 16" fill="none" xmlns="http://www.w3.org/2000/svg"> <g clip-path="url(#clip0_811_1349)"> <rect width="18" height="18" transform="translate(0 0.5)" fill="black"></rect> <path d="M13.5352 0.5H1.46484C0.655833 0.5 0 1.15583 0 1.96484V14.0352C0 14.8442 0.655833 15.5 1.46484 15.5H13.5352C14.3442 15.5 15 14.8442 15 14.0352V1.96484C15 1.15583 14.3442 0.5 13.5352 0.5Z" fill="currentColor"></path> <path d="M13.5352 0.5H1.46484C0.655833 0.5 0 1.15583 0 1.96484V14.0352C0 14.8442 0.655833 15.5 1.46484 15.5H13.5352C14.3442 15.5 15 14.8442 15 14.0352V1.96484C15 1.15583 14.3442 0.5 13.5352 0.5Z" fill="currentColor"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M9.28532 11.4363V12.9029C9.52374 13.0251 9.80572 13.1167 10.1313 13.1779C10.4568 13.239 10.7999 13.2695 11.1606 13.2695C11.5121 13.2695 11.8461 13.2359 12.1625 13.1687C12.4788 13.1015 12.7562 12.9907 12.9947 12.8364C13.2331 12.6821 13.4218 12.4804 13.5609 12.2314C13.7 11.9824 13.7695 11.6746 13.7695 11.3079C13.7695 11.0421 13.7298 10.8091 13.6503 10.609C13.5708 10.4089 13.4562 10.2309 13.3064 10.0751C13.1567 9.91923 12.9771 9.77942 12.7677 9.65567C12.5583 9.53192 12.3222 9.41506 12.0593 9.30508C11.8667 9.22562 11.694 9.14849 11.5412 9.07363C11.3883 8.99875 11.2584 8.92237 11.1514 8.84447C11.0445 8.76654 10.9619 8.68404 10.9039 8.59697C10.8458 8.50987 10.8167 8.41135 10.8167 8.30134C10.8167 8.20053 10.8427 8.10962 10.8947 8.02864C10.9467 7.94767 11.02 7.87817 11.1148 7.82011C11.2095 7.76207 11.3257 7.71698 11.4632 7.6849C11.6008 7.65282 11.7536 7.6368 11.9217 7.6368C12.044 7.6368 12.1731 7.64597 12.3092 7.66428C12.4452 7.68262 12.582 7.71089 12.7196 7.74906C12.8571 7.78727 12.9908 7.8354 13.1208 7.89344C13.2507 7.9515 13.3706 8.01871 13.4807 8.09512V6.72473C13.2575 6.63918 13.0138 6.57578 12.7494 6.53453C12.485 6.49328 12.1816 6.47266 11.8392 6.47266C11.4907 6.47266 11.1606 6.5101 10.8488 6.58495C10.5371 6.6598 10.2627 6.77667 10.0258 6.93555C9.78891 7.09445 9.6017 7.29686 9.46415 7.54284C9.3266 7.78879 9.25781 8.08287 9.25781 8.42509C9.25781 8.86202 9.38391 9.2348 9.63609 9.54341C9.88825 9.85199 10.2711 10.1132 10.7846 10.3271C10.9864 10.4096 11.1744 10.4906 11.3486 10.57C11.5228 10.6495 11.6734 10.732 11.8002 10.8175C11.9271 10.9031 12.0272 10.9963 12.1006 11.0971C12.1739 11.1979 12.2106 11.3125 12.2106 11.4408C12.2106 11.5356 12.1877 11.6234 12.1418 11.7044C12.096 11.7854 12.0264 11.8556 11.9332 11.9152C11.84 11.9748 11.7238 12.0214 11.5847 12.055C11.4456 12.0886 11.2829 12.1054 11.0964 12.1054C10.7785 12.1054 10.4637 12.0496 10.1519 11.9381C9.84012 11.8266 9.55125 11.6593 9.28532 11.4363ZM6.81973 7.82271H8.70117V6.61914H3.45703V7.82271H5.32928V13.1816H6.81973V7.82271Z" fill="black"></path> </g> <defs> <clipPath id="clip0_811_1349"> <rect width="18" height="18" fill="white" transform="translate(0 0.5)"></rect> </clipPath> </defs> </svg> .relagit/workflows/action.ts </div> <div class="codeblock-language">ts</div> </div> <div class="codeblock-content" aria-label="import { Workflow } from "relagit:actions"; export default new Workflow({ name: "My New Workflow", description: "Does amazing things!", hooks: { commit: (_, repository, commit) => { console.log("New commit in", repository.name); }, }, });" tabindex="0"> <div class="codeblock-content-inner"><pre class="shiki github-dark" style="background-color:#24292e;color:#e1e4e8" tabindex="0"><code><span class="line"><span style="color:#F97583">import</span><span style="color:#E1E4E8"> { Workflow } </span><span style="color:#F97583">from</span><span style="color:#9ECBFF"> "relagit:actions"</span><span style="color:#E1E4E8">;</span></span> <span class="line"></span> <span class="line"><span style="color:#F97583">export</span><span style="color:#F97583"> default</span><span style="color:#F97583"> new</span><span style="color:#B392F0"> Workflow</span><span style="color:#E1E4E8">({</span></span> <span class="line"><span style="color:#E1E4E8"> name: </span><span style="color:#9ECBFF">"My New Workflow"</span><span style="color:#E1E4E8">,</span></span> <span class="line"><span style="color:#E1E4E8"> description: </span><span style="color:#9ECBFF">"Does amazing things!"</span><span style="color:#E1E4E8">,</span></span> <span class="line"><span style="color:#E1E4E8"> hooks: {</span></span> <span class="line"><span style="color:#B392F0"> commit</span><span style="color:#E1E4E8">: (</span><span style="color:#FFAB70">_</span><span style="color:#E1E4E8">, </span><span style="color:#FFAB70">repository</span><span style="color:#E1E4E8">, </span><span style="color:#FFAB70">commit</span><span style="color:#E1E4E8">) </span><span style="color:#F97583">=></span><span style="color:#E1E4E8"> {</span></span> <span class="line"><span style="color:#E1E4E8"> console.</span><span style="color:#B392F0">log</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">"New commit in"</span><span style="color:#E1E4E8">, repository.name);</span></span> <span class="line"><span style="color:#E1E4E8"> },</span></span> <span class="line"><span style="color:#E1E4E8"> },</span></span> <span class="line"><span style="color:#E1E4E8">});</span></span></code></pre></div> </div> </div> </div> <div class="separator"></div> <div class="feature"> <div class="feature-window"> <div class="fakeapp"><div class="window-controls"><div class="window-control close"></div><div class="window-control minimize"></div><div class="window-control maximize"></div></div><div class="preview-controls"><div class="preview-control"><label for="vibrancy">Vibrancy</label><input type="checkbox" id="vibrancy"></div><div class="preview-control"><label for="theme-t">Theme</label><select id="theme-t" value="dark"><option value="system">System</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div><div id="root"><div id="app-container" class="platform-darwin theme-dark "><div class="window-control-bar"></div><div aria-live="off" class="layer layer-bare" data-key="modal"></div><div aria-live="assertive" class="layer layer-bare visible" data-key="notification"></div><div class="sidebar sidebar-active" aria-role="sidebar" aria-hidden="true"><div class="contextmenu-wrapper"><div aria-role="button" tabindex="0" class="sidebar__header" aria-label="Open Repository Drawer" aria-expanded="false"><div class="sidebar__header__info"><div class="sidebar__header__repository">relagit</div><div class="sidebar__header__details"><span class="sidebar__header__details__branch">main</span></div></div><div class="sidebar__header__chevron" style="transform:rotate(-90deg);"><span class="icon"><svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-chevron-down" aria-hidden="true"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></div><div class="sidebar__items" style="height:calc(100% - 336px);"><div class="contextmenu-wrapper"><div aria-role="button" class="sidebar__item active" tabindex="0" aria-label="Open packages/app/src/ui/Notification/index.tsx" aria-selected="true" data-id="258804b7d7f8e" data-active="true" data-status="modified"><div class="sidebar__item__fileicon"><img src="/assets/vscode-material-icons/generated/icons/react_ts.svg" alt="react_ts"></div><div class="sidebar__item__filename"><span class="sidebar__item__filename__path" title="packages/app/src/ui/Notification">packages/app/src/ui/Notification</span><span class="sidebar__item__filename__name"><span class="sidebar__item__filename__name__separator">/</span>index.tsx</span></div><button aria-role="button" aria-label="Unstage Changes" class="sidebar__item__status modified staged">M</button></div></div></div><div class="sidebar__footer showing"><div class="textarea__wrapper"><textarea aria-label="Summary" class="textarea" placeholder="Summary"></textarea><div class="textarea__footer"></div></div><div class="textarea__wrapper" style="height:100%;"><textarea aria-label="Description" class="textarea expanded" placeholder="Description" style="height:100%;"></textarea><div class="textarea__footer"><button class="sidebar__footer__textarea__button" aria-label="Generate Commit Details" tabindex="0" aria-labeledby=""><span class="icon"><svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-sparkle-fill" aria-hidden="true"><path d="M7.53 1.282a.5.5 0 0 1 .94 0l.478 1.306a7.492 7.492 0 0 0 4.464 4.464l1.305.478a.5.5 0 0 1 0 .94l-1.305.478a7.492 7.492 0 0 0-4.464 4.464l-.478 1.305a.5.5 0 0 1-.94 0l-.478-1.305a7.492 7.492 0 0 0-4.464-4.464L1.282 8.47a.5.5 0 0 1 0-.94l1.306-.478a7.492 7.492 0 0 0 4.464-4.464Z"></path></svg></span></button></div></div><button tabindex="0" aria-labeledby="" aria-role="button" aria-label="Commit to main" aria-disabled="true" class="button brand">Commit to main</button></div></div><div class="workspace sidebar-active"><div class="workspace__header"><button aria-role="button" aria-label="Sync" class="workspace__header__panelbutton" id="workspace-fetch-changes-and-remote" tabindex="0" aria-labeledby=""><span class="icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.38 8A9.502 9.502 0 0 1 12 2.5a9.502 9.502 0 0 1 9.215 7.182.75.75 0 1 0 1.456-.364C21.473 4.539 17.15 1 12 1a10.995 10.995 0 0 0-9.5 5.452V4.75a.75.75 0 0 0-1.5 0V8.5a1 1 0 0 0 1 1h3.75a.75.75 0 0 0 0-1.5H3.38Zm-.595 6.318a.75.75 0 0 0-1.455.364C2.527 19.461 6.85 23 12 23c4.052 0 7.592-2.191 9.5-5.451v1.701a.75.75 0 0 0 1.5 0V15.5a1 1 0 0 0-1-1h-3.75a.75.75 0 0 0 0 1.5h2.37A9.502 9.502 0 0 1 12 21.5c-4.446 0-8.181-3.055-9.215-7.182Z"></path></svg></span><div class="workspace__header__panelbutton__info"><div class="workspace__header__panelbutton__info__label">Sync</div><div class="workspace__header__panelbutton__info__detail">3 minutes ago</div></div></button><div class="contextmenu-wrapper"><button aria-role="button" aria-label="No Changes" disabled class="workspace__header__panelbutton disabled" id="workspace-pull" tabindex="0" aria-labeledby=""><span class="icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3 2.75A2.75 2.75 0 0 1 5.75 0h14.5a.75.75 0 0 1 .75.75v20.5a.75.75 0 0 1-.75.75h-6a.75.75 0 0 1 0-1.5h5.25v-4H6A1.5 1.5 0 0 0 4.5 18v.75c0 .716.43 1.334 1.05 1.605a.75.75 0 0 1-.6 1.374A3.251 3.251 0 0 1 3 18.75ZM19.5 1.5H5.75c-.69 0-1.25.56-1.25 1.25v12.651A2.989 2.989 0 0 1 6 15h13.5Z"></path><path d="M7 18.25a.25.25 0 0 1 .25-.25h5a.25.25 0 0 1 .25.25v5.01a.25.25 0 0 1-.397.201l-2.206-1.604a.25.25 0 0 0-.294 0L7.397 23.46a.25.25 0 0 1-.397-.2v-5.01Z"></path></svg></span><div class="workspace__header__panelbutton__info"><div class="workspace__header__panelbutton__info__label">No Changes</div><div class="workspace__header__panelbutton__info__detail">Nothing to see here</div></div></button></div><div class="workspace__header__spacer"></div><button aria-role="button" aria-label="Switch branch" aria-selected="false" class="workspace__header__panelbutton" id="workspace-branch" tabindex="0" aria-labeledby=""><span class="icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M15 4.75a3.25 3.25 0 1 1 6.5 0 3.25 3.25 0 0 1-6.5 0ZM2.5 19.25a3.25 3.25 0 1 1 6.5 0 3.25 3.25 0 0 1-6.5 0Zm0-14.5a3.25 3.25 0 1 1 6.5 0 3.25 3.25 0 0 1-6.5 0ZM5.75 6.5a1.75 1.75 0 1 0-.001-3.501A1.75 1.75 0 0 0 5.75 6.5Zm0 14.5a1.75 1.75 0 1 0-.001-3.501A1.75 1.75 0 0 0 5.75 21Zm12.5-14.5a1.75 1.75 0 1 0-.001-3.501A1.75 1.75 0 0 0 18.25 6.5Z"></path><path d="M5.75 16.75A.75.75 0 0 1 5 16V8a.75.75 0 0 1 1.5 0v8a.75.75 0 0 1-.75.75Z"></path><path d="M17.5 8.75v-1H19v1a3.75 3.75 0 0 1-3.75 3.75h-7a1.75 1.75 0 0 0-1.75 1.75H5A3.25 3.25 0 0 1 8.25 11h7a2.25 2.25 0 0 0 2.25-2.25Z"></path></svg></span></button><button aria-role="button" aria-label="Toggle blame view" aria-selected="true" class="workspace__header__panelbutton active" id="workspace-blame" tabindex="0" aria-labeledby=""><span class="icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.5 8a5.5 5.5 0 1 1 8.596 4.547 9.005 9.005 0 0 1 5.9 8.18.751.751 0 0 1-1.5.045 7.5 7.5 0 0 0-14.993 0 .75.75 0 0 1-1.499-.044 9.005 9.005 0 0 1 5.9-8.181A5.496 5.496 0 0 1 3.5 8ZM9 4a4 4 0 1 0 0 8 4 4 0 0 0 0-8Zm8.29 4c-.148 0-.292.01-.434.03a.75.75 0 1 1-.212-1.484 4.53 4.53 0 0 1 3.38 8.097 6.69 6.69 0 0 1 3.956 6.107.75.75 0 0 1-1.5 0 5.193 5.193 0 0 0-3.696-4.972l-.534-.16v-1.676l.41-.209A3.03 3.03 0 0 0 17.29 8Z"></path></svg></span></button><button aria-role="button" aria-label="Toggle history" aria-selected="false" class="workspace__header__panelbutton" id="workspace-history" tabindex="0" aria-labeledby=""><span class="icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11.998 2.5A9.503 9.503 0 0 0 3.378 8H5.75a.75.75 0 0 1 0 1.5H2a1 1 0 0 1-1-1V4.75a.75.75 0 0 1 1.5 0v1.697A10.997 10.997 0 0 1 11.998 1C18.074 1 23 5.925 23 12s-4.926 11-11.002 11C6.014 23 1.146 18.223 1 12.275a.75.75 0 0 1 1.5-.037 9.5 9.5 0 0 0 9.498 9.262c5.248 0 9.502-4.253 9.502-9.5s-4.254-9.5-9.502-9.5Z"></path><path d="M12.5 7.25a.75.75 0 0 0-1.5 0v5.5c0 .27.144.518.378.651l3.5 2a.75.75 0 0 0 .744-1.302L12.5 12.315V7.25Z"></path></svg></span></button></div><div class="workspace__container"><div class="workspace__container__main"><div class="workspace__container__main__file"><div class="workspace__container__main__file__path">packages/app/src/ui/Notification/</div><div class="workspace__container__main__file__name">index.tsx</div></div><pre class="codeview lang-"><div class="codeview__line message"><div class="codeview__line__number"><span class="icon"><svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-fold-up" aria-hidden="true"><path d="M7.823 1.677 4.927 4.573A.25.25 0 0 0 5.104 5H7.25v3.236a.75.75 0 1 0 1.5 0V5h2.146a.25.25 0 0 0 .177-.427L8.177 1.677a.25.25 0 0 0-.354 0ZM13.75 11a.75.75 0 0 0 0 1.5h.5a.75.75 0 0 0 0-1.5h-.5Zm-3.75.75a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75ZM7.75 11a.75.75 0 0 0 0 1.5h.5a.75.75 0 0 0 0-1.5h-.5ZM4 11.75a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75ZM1.75 11a.75.75 0 0 0 0 1.5h.5a.75.75 0 0 0 0-1.5h-.5Z"></path></svg></span></div><div class="codeview__line__content">@@ -49,7 +49,7 @@ export const Notification = (props: NotificationProps) => {</div></div><div class="codeview__line unchanged"><div class="codeview__line__number">49</div><div class="codeview__line__number">49</div><div class="codeview__line__indicator unchanged"></div><div class="codeview__line__content"><span class="pl-tab"></span><span class="pl-tab"></span><<span class="pl-ent">div</span><span class="pl-e"> class</span><span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">"</span>notification<span class="pl-pds">"</span></span><span class="pl-e"> aria-label</span><span class="pl-k">=</span><span class="pl-pse">{</span><span class="pl-smi">props</span>.<span class="pl-c1">description</span><span class="pl-pse">}</span><span class="pl-e"> ref</span><span class="pl-k">=</span><span class="pl-pse">{</span><span class="pl-smi">setRef</span><span class="pl-pse">}</span>></div></div><div class="codeview__line unchanged"><div class="codeview__line__number">50</div><div class="codeview__line__number">50</div><div class="codeview__line__indicator unchanged"></div><div class="codeview__line__content"><span class="pl-tab"></span><span class="pl-tab"></span><span class="pl-tab"></span><<span class="pl-ent">div</span><span class="pl-e"> class</span><span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">"</span>notification__content<span class="pl-pds">"</span></span>></div></div><div class="codeview__line unchanged"><div class="codeview__line__number">51</div><div class="codeview__line__number">51</div><div class="codeview__line__indicator unchanged"></div><div class="codeview__line__content"><span class="pl-tab"></span><span class="pl-tab"></span><span class="pl-tab"></span><span class="pl-tab"></span><<span class="pl-ent">div</span><span class="pl-e"> classList</span><span class="pl-k">=</span><span class="pl-pse">{</span>{ notification__icon: <span class="pl-c1">true</span>, [<span class="pl-smi">props</span>.<span class="pl-smi">level</span>]: <span class="pl-c1">true</span> }<span class="pl-pse">}</span>></div></div><div class="codeview__line deleted"><div class="codeview__line__number">52</div><div class="codeview__line__number"></div><div class="codeview__line__indicator deleted">-</div><div class="codeview__line__content"><span class="pl-tab"></span><span class="pl-tab"></span><span class="pl-tab"></span><span class="pl-tab"></span><span class="pl-tab"></span><<span class="pl-c1">Icon</span><span class="pl-e"> name</span><span class="pl-k">=</span><span class="pl-pse">{</span><span class="pl-smi">props</span>.<span class="pl-smi">icon</span><span class="pl-pse">}</span><span class="pl-e"> variant</span><span class="pl-k">=</span><span class="pl-pse">{</span><span class="pl-c1">24</span><span class="pl-pse">}</span> /></div></div><div class="codeview__line added"><div class="codeview__line__number"></div><div class="codeview__line__number">52</div><div class="codeview__line__indicator added">+</div><div class="codeview__line__content"><span class="pl-tab"></span><span class="pl-tab"></span><span class="pl-tab"></span><span class="pl-tab"></span><span class="pl-tab"></span><<span class="pl-c1">Icon</span><span class="pl-e"> name</span><span class="pl-k">=</span><span class="pl-pse">{</span><span class="pl-smi">props</span>.<span class="pl-smi">icon</span><span class="pl-pse">}</span><span class="pl-e"> size</span><span class="pl-k">=</span><span class="pl-pse">{</span><span class="pl-c1">24</span><span class="pl-pse">}</span> /></div></div><div class="codeview__line unchanged"><div class="codeview__line__number">53</div><div class="codeview__line__number">53</div><div class="codeview__line__indicator unchanged"></div><div class="codeview__line__content"><span class="pl-tab"></span><span class="pl-tab"></span><span class="pl-tab"></span><span class="pl-tab"></span><span class="pl-k"></</span><span class="pl-smi">div</span><span class="pl-k">></span></div></div><div class="codeview__line unchanged"><div class="codeview__line__number">54</div><div class="codeview__line__number">54</div><div class="codeview__line__indicator unchanged"></div><div class="codeview__line__content"><span class="pl-tab"></span><span class="pl-tab"></span><span class="pl-tab"></span><span class="pl-tab"></span><<span class="pl-ent">div</span><span class="pl-e"> class</span><span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">"</span>notification__text<span class="pl-pds">"</span></span>></div></div><div class="codeview__line unchanged"><div class="codeview__line__number">55</div><div class="codeview__line__number">55</div><div class="codeview__line__indicator unchanged"></div><div class="codeview__line__content"><span class="pl-tab"></span><span class="pl-tab"></span><span class="pl-tab"></span><span class="pl-tab"></span><span class="pl-tab"></span><<span class="pl-ent">div</span><span class="pl-e"> class</span><span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">"</span>notification__text__header<span class="pl-pds">"</span></span>><span class="pl-pse">{</span><span class="pl-smi">props</span>.<span class="pl-c1">title</span><span class="pl-pse">}</span></<span class="pl-ent">div</span>></div></div><div class="codeview__line message"><div class="codeview__line__number"><span class="icon"><svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-fold-down" aria-hidden="true"><path d="m8.177 14.323 2.896-2.896a.25.25 0 0 0-.177-.427H8.75V7.764a.75.75 0 1 0-1.5 0V11H5.104a.25.25 0 0 0-.177.427l2.896 2.896a.25.25 0 0 0 .354 0ZM2.25 5a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM6 4.25a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5a.75.75 0 0 1 .75.75ZM8.25 5a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM12 4.25a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5a.75.75 0 0 1 .75.75Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5Z"></path></svg></span></div><div class="codeview__line__content"></div></div></pre></div></div></div></div></div></div> </div> <div class="feature-text"> <h2 class="feature-text-header">Recognisably Yours.</h2> <p class="feature-text-paragraph"> Re-imagine the look of the client, either through careful creation of a theme, or use of a community-made one. </p> <div class="styles-selector"> <style>astro-island,astro-slot,astro-static-slot{display:contents}</style><script>(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).load=e;window.dispatchEvent(new Event("astro:load"));})();;(()=>{var A=Object.defineProperty;var g=(i,o,a)=>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a;var d=(i,o,a)=>g(i,typeof o!="symbol"?o+"":o,a);{let i={0:t=>m(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t)},o=t=>{let[l,e]=t;return l in i?i[l](e):void 0},a=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,"Component");d(this,"hydrator");d(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let c=this.querySelectorAll("astro-slot"),n={},h=this.querySelectorAll("template[data-astro-template]");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("name")||"default"]=r.innerHTML)}let p;try{p=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(r){let s=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});d(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute("opts")),c=this.getAttribute("client");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute("renderer-url"),[h,{default:p}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),u=this.getAttribute("component-export")||"default";if(!u.includes("."))this.Component=h[u];else{this.Component=h;for(let f of u.split("."))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",y)}})();</script><script>window._$HY||(e=>{let t=e=>e&&e.hasAttribute&&(e.hasAttribute("data-hk")?e:t(e.host&&e.host.nodeType?e.host:e.parentNode));["click", "input"].forEach((o=>document.addEventListener(o,(o=>{let a=o.composedPath&&o.composedPath()[0]||o.target,s=t(a);s&&!e.completed.has(s)&&e.events.push([s,o])}))))})(_$HY={events:[],completed:new WeakSet,r:{},fe(){}});</script><!--xs--><astro-island uid="ZSVNDI" data-solid-render-id="s0" component-url="/_astro/_ThemeButton.BB9oUY5P.js" component-export="default" renderer-url="/_astro/client.R-oPa1b1.js" props="{"theme":[0,{"name":[0,"Default"],"files":[1,[]]}]}" ssr="" client="load" opts="{"name":"ThemeButton","value":true}" await-children=""><button data-hk="s00-0-0-0" class="styles-selector-item center" id="theme-Default"><div class="styles-selector-item-title">Default</div><!--$--><!--/--><!--$--><!--/--></button><!--astro:end--></astro-island><astro-island uid="Z1vI3mF" data-solid-render-id="s1" component-url="/_astro/_ThemeButton.BB9oUY5P.js" component-export="default" renderer-url="/_astro/client.R-oPa1b1.js" props="{"theme":[0,{"name":[0,"Nord"],"github":[0,"TheCommieAxolotl/relagit-themes"],"description":[0,"An arctic, north-bluish color palette."],"files":[1,[[0,"@import \"./nord.css\"; :root { --color-blue-500: var(--nord10); } #app-container { --dark-material-primary: var(--nord0); --dark-material-secondary: #3c4251; --dark-material-tertiary: var(--nord0); --dark-material-quaternary: var(--nord1); --dark-material-quinary: var(--nord2); --dark-material-senary: var(--nord3); --dark-base-light-grey: #3c4251; --dark-base-lighter-grey: #3c4251; } .window-control-bar { opacity: 1; } #app-container.unfocused { --bg-active: #3c4251 !important; --bg-hover: #3c4251 !important; } #app-container.focused { --bg-active: #3c4251 !important; --bg-hover: #3c4251 !important; } .segmented-control__item.active { background-color: var(--bg-secondary); } .codeview { --bg-diff-add: transparent; --bg-diff-add-solid: #a3be8c4a; --bg-diff-delete: transparent; --bg-diff-delete-solid: #bf616a4a; --bg-diff-modify: transparent; --bg-diff-modify-solid: #ebcb8b4a; --color-prettylights-syntax-comment: #636e86; --color-prettylights-syntax-constant: #ae8fab; --color-prettylights-syntax-entity: #94bece; --color-prettylights-syntax-storage-modifier-import: #d5dae4; --color-prettylights-syntax-entity-tag: #96b9b8; --color-prettylights-syntax-keyword: #87a0be; --color-prettylights-syntax-string: #a8bd91; --color-prettylights-syntax-variable: #73daca; --color-prettylights-syntax-brackethighlighter-unmatched: #f07178; --color-prettylights-syntax-invalid-illegal-text: #f0f6fc; --color-prettylights-syntax-invalid-illegal-bg: #8e1519; --color-prettylights-syntax-carriage-return-text: #f0f6fc; --color-prettylights-syntax-carriage-return-bg: #b62324; --color-prettylights-syntax-string-regexp: #7ee787; --color-prettylights-syntax-markup-list: #f2cc60; --color-prettylights-syntax-markup-heading: #96b9b8; --color-prettylights-syntax-markup-italic: #c4a7e7; --color-prettylights-syntax-markup-bold: #c4a7e7; --color-prettylights-syntax-markup-deleted-text: #ffdcd7; --color-prettylights-syntax-markup-deleted-bg: #8e1519; --color-prettylights-syntax-markup-inserted-text: #aff5b4; --color-prettylights-syntax-markup-inserted-bg: #033a16; --color-prettylights-syntax-markup-changed-text: #ffdfb6; --color-prettylights-syntax-markup-changed-bg: #5a1e02; --color-prettylights-syntax-markup-ignored-text: #c9d1d9; --color-prettylights-syntax-markup-ignored-bg: #1158c7; --color-prettylights-syntax-meta-diff-range: #ea9a97; --color-prettylights-syntax-brackethighlighter-angle: #a9b1d6; --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58; --color-prettylights-syntax-constant-other-reference-link: #a5d6ff; } .lang-css, .lang-sass, .lang-scss, .lang-less, .lang-stylus { --color-prettylights-syntax-keyword: #c68a74; --color-prettylights-syntax-entity: #98bbba; --color-prettylights-syntax-variable: #94bece; } .workspace__container { background-color: var(--dark-material-tertiary); } .sidebar { background-color: var(--dark-material-secondary); } .codeview__line__content { color: var(--nord6); } .theme-dark.vibrancy .sidebar { background-color: var(--bg-primary) !important; } .tooltip { background: var(--bg-quinary) !important; color: var(--color-primary) !important; } .tooltip__arrow { border-top-color: var(--bg-quinary) !important; } "],[0,":root { --nord0: #2e3440; --nord1: #3b4252; --nord2: #434c5e; --nord3: #4c566a; --nord4: #d8dee9; --nord5: #e5e9f0; --nord6: #eceff4; --nord7: #8fbcbb; --nord8: #88c0d0; --nord9: #81a1c1; --nord10: #5e81ac; --nord11: #bf616a; --nord12: #d08770; --nord13: #ebcb8b; --nord14: #a3be8c; --nord15: #b48ead; } "]]]}]}" ssr="" client="load" opts="{"name":"ThemeButton","value":true}" await-children=""><button data-hk="s10-0-0-0" class="styles-selector-item " id="theme-Nord"><div class="styles-selector-item-title">Nord</div><!--$--><div data-hk="s10-0-0-1-0" class="styles-selector-item-description">An arctic, north-bluish color palette.</div><!--/--><!--$--><a data-hk="s10-0-0-2-0" href="https://github.com/TheCommieAxolotl/relagit-themes" target="_blank" class="styles-selector-item-github"><span data-hk="s10-0-0-2-1-0" class="icon "><svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-mark-github" aria-hidden="true" style="undefined"><path d="M8 0c4.42 0 8 3.58 8 8a8.013 8.013 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27-.68 0-1.36.09-2 .27-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8Z"></path></svg></span></a><!--/--></button><!--astro:end--></astro-island><astro-island uid="RbORF" data-solid-render-id="s2" component-url="/_astro/_ThemeButton.BB9oUY5P.js" component-export="default" renderer-url="/_astro/client.R-oPa1b1.js" props="{"theme":[0,{"name":[0,"Tokyo Night"],"github":[0,"TheCommieAxolotl/relagit-themes"],"description":[0,"A clean, dark theme that celebrates the lights of Downtown Tokyo at night."],"files":[1,[[0,"#app-container { --dark-material-primary: rgb(22, 22, 30); --dark-material-secondary: rgb(22, 22, 30); --dark-material-tertiary: #1a1b25; --dark-material-quaternary: #17171f; --dark-material-quinary: #17171f; --dark-material-senary: #17171f; --dark-base-light-grey: rgb(16, 16, 20); --dark-base-lighter-grey: rgba(16, 16, 20, 0.4);}#app-container { --bg-active: #202330 !important; --bg-hover: #13131a !important;}.segmented-control__item.active { background-color: var(--bg-secondary);}.codeview { --color-prettylights-syntax-comment: #61688a; --color-prettylights-syntax-constant: #c0caf5; --color-prettylights-syntax-entity: #7aa2f7; --color-prettylights-syntax-storage-modifier-import: #0db9d7; --color-prettylights-syntax-entity-tag: #78dce8; --color-prettylights-syntax-keyword: #7dcfff; --color-prettylights-syntax-string: #9ece6a; --color-prettylights-syntax-variable: #73daca; --color-prettylights-syntax-brackethighlighter-unmatched: #f07178; --color-prettylights-syntax-invalid-illegal-text: #f0f6fc; --color-prettylights-syntax-invalid-illegal-bg: #8e1519; --color-prettylights-syntax-carriage-return-text: #f0f6fc; --color-prettylights-syntax-carriage-return-bg: #b62324; --color-prettylights-syntax-string-regexp: #7ee787; --color-prettylights-syntax-markup-list: #f2cc60; --color-prettylights-syntax-markup-heading: #78dce8; --color-prettylights-syntax-markup-italic: #c4a7e7; --color-prettylights-syntax-markup-bold: #c4a7e7; --color-prettylights-syntax-markup-deleted-text: #ffdcd7; --color-prettylights-syntax-markup-deleted-bg: #8e1519; --color-prettylights-syntax-markup-inserted-text: #aff5b4; --color-prettylights-syntax-markup-inserted-bg: #033a16; --color-prettylights-syntax-markup-changed-text: #ffdfb6; --color-prettylights-syntax-markup-changed-bg: #5a1e02; --color-prettylights-syntax-markup-ignored-text: #c9d1d9; --color-prettylights-syntax-markup-ignored-bg: #1158c7; --color-prettylights-syntax-meta-diff-range: #ea9a97; --color-prettylights-syntax-brackethighlighter-angle: #a9b1d6; --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58; --color-prettylights-syntax-constant-other-reference-link: #a5d6ff;}.lang-css,.lang-sass,.lang-scss,.lang-less,.lang-stylus { --color-prettylights-syntax-keyword: #bb9af7; --color-prettylights-syntax-entity: #bb9af7; --color-prettylights-syntax-variable: #c0caf5;}.workspace__container { background-color: var(--dark-material-tertiary);}.sidebar { background-color: var(--dark-material-secondary);}.codeview__line__content { color: #9abdf5;}"]]]}]}" ssr="" client="load" opts="{"name":"ThemeButton","value":true}" await-children=""><button data-hk="s20-0-0-0" class="styles-selector-item " id="theme-Tokyo-Night"><div class="styles-selector-item-title">Tokyo Night</div><!--$--><div data-hk="s20-0-0-1-0" class="styles-selector-item-description">A clean, dark theme that celebrates the lights of Downtown Tokyo at night.</div><!--/--><!--$--><a data-hk="s20-0-0-2-0" href="https://github.com/TheCommieAxolotl/relagit-themes" target="_blank" class="styles-selector-item-github"><span data-hk="s20-0-0-2-1-0" class="icon "><svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-mark-github" aria-hidden="true" style="undefined"><path d="M8 0c4.42 0 8 3.58 8 8a8.013 8.013 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27-.68 0-1.36.09-2 .27-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8Z"></path></svg></span></a><!--/--></button><!--astro:end--></astro-island> </div> <a href="/styles" target="_blank" class="feature-text-button"> Browse Styles <span class="icon "><svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-arrow-up-right" aria-hidden="true" style="undefined"><path d="M4.53 4.75A.75.75 0 0 1 5.28 4h6.01a.75.75 0 0 1 .75.75v6.01a.75.75 0 0 1-1.5 0v-4.2l-5.26 5.261a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L9.48 5.5h-4.2a.75.75 0 0 1-.75-.75Z"></path></svg></span> </a> </div> </div> <div class="cta final"> <svg class="circle" viewBox="0 -902 1512 1512" fill="none" xmlns="http://www.w3.org/2000/svg"> <circle cx="756" cy="-1055" r="1663" fill="url(#paint0_linear_1472_794)" stroke="url(#paint1_linear_1472_794)" stroke-width="4"></circle> <defs> <linearGradient id="paint0_linear_1472_794" x1="756" y1="-2720" x2="756" y2="610" gradientUnits="userSpaceOnUse"> <stop offset="0.725" stop-color="white" stop-opacity="0"></stop> <stop offset="1" stop-color="#A689D9" stop-opacity="0.1"></stop> </linearGradient> <linearGradient id="paint1_linear_1472_794" x1="7.06363e-05" y1="-2720" x2="1512" y2="-2720" gradientUnits="userSpaceOnUse"> <stop stop-color="#A689D9" stop-opacity="0"></stop> <stop offset="0.474558" stop-color="#D3C3EE" stop-opacity="0.3"></stop> <stop offset="1" stop-color="#A689D9" stop-opacity="0"></stop> </linearGradient> </defs> </svg> <div class="info"> <div class="app-icon" aria-label="RelaGit application icon" aria-hidden="true"> <svg class="body" xmlns="http://www.w3.org/2000/svg" width="124" height="124" viewBox="0 0 124 124" fill="none"> <g filter="url(#filter0_d_1472_3234)"> <path fill-rule="evenodd" clip-rule="evenodd" d="M113.5 37.3284C113.5 36.1056 113.5 34.8828 113.493 33.6599C113.487 32.6298 113.475 31.5999 113.447 30.5703C113.386 28.3262 113.254 26.0628 112.855 23.8437C112.45 21.5926 111.789 19.4974 110.748 17.4521C109.724 15.4417 108.386 13.6021 106.79 12.0072C105.194 10.4124 103.354 9.07561 101.343 8.05224C99.2957 7.01037 97.1984 6.34962 94.9447 5.945C92.7254 5.5465 90.4614 5.41437 88.2173 5.35375C87.1869 5.32587 86.1566 5.31412 85.1259 5.30775C83.9025 5.30025 82.679 5.30087 81.4555 5.30087L67.2496 5.25H56.6247L42.6701 5.30087C41.4443 5.30087 40.2184 5.30025 38.9925 5.30775C37.9598 5.31412 36.9276 5.32587 35.8952 5.35375C33.6458 5.41437 31.3767 5.54662 29.1521 5.94562C26.8955 6.35012 24.795 7.01062 22.7448 8.05174C20.7294 9.07524 18.8853 10.4121 17.2863 12.0072C15.6876 13.602 14.3475 15.4412 13.3216 17.4512C12.2771 19.4976 11.6149 21.5939 11.2091 23.8463C10.8096 26.0645 10.6772 28.3272 10.6164 30.5703C10.5886 31.6 10.5766 32.6299 10.5704 33.6599C10.5629 34.8829 10.5 36.402 10.5 37.6249L10.5004 51.3861L10.5 62.1248L10.5635 76.1784C10.5635 77.4029 10.563 78.6274 10.5704 79.8519C10.5766 80.8833 10.5886 81.9146 10.6165 82.9457C10.6772 85.1927 10.8099 87.4593 11.2097 89.6814C11.6154 91.9356 12.2775 94.0337 13.3211 96.0817C14.3471 98.0949 15.6875 99.9369 17.2863 101.534C18.8852 103.131 20.7288 104.47 22.7438 105.495C24.7953 106.538 26.8968 107.199 29.1547 107.604C31.3783 108.004 33.6467 108.136 35.8952 108.197C36.9276 108.224 37.9599 108.236 38.9927 108.243C40.2185 108.25 41.4443 108.25 42.6701 108.25L56.7508 108.25H67.4021L81.4555 108.249C82.679 108.249 83.9025 108.25 85.1259 108.243C86.1566 108.236 87.1869 108.224 88.2173 108.197C90.4623 108.136 92.727 108.003 94.9474 107.604C97.1996 107.199 99.296 106.538 101.342 105.495C103.354 104.47 105.194 103.131 106.79 101.534C108.386 99.9372 109.723 98.0954 110.747 96.0825C111.79 94.0335 112.45 91.9344 112.855 89.6788C113.254 87.4576 113.386 85.1918 113.447 82.9457C113.475 81.9145 113.487 80.8832 113.493 79.8519C113.501 78.6274 113.5 77.4029 113.5 76.1784C113.5 76.1784 113.499 62.3729 113.499 62.1248V51.3748C113.499 51.1916 113.5 37.3284 113.5 37.3284" fill="url(#paint0_linear_1472_3234)" shape-rendering="crispEdges"></path> </g> <mask id="mask0_1472_3234" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="10" y="5" width="104" height="104"> <path fill-rule="evenodd" clip-rule="evenodd" d="M113.5 37.3284C113.5 36.1056 113.5 34.8828 113.493 33.6599C113.487 32.6298 113.475 31.5999 113.447 30.5703C113.386 28.3262 113.254 26.0628 112.855 23.8437C112.45 21.5926 111.789 19.4974 110.748 17.4521C109.724 15.4417 108.386 13.6021 106.79 12.0072C105.194 10.4124 103.354 9.07561 101.343 8.05224C99.2957 7.01037 97.1984 6.34962 94.9447 5.945C92.7254 5.5465 90.4614 5.41437 88.2173 5.35375C87.1869 5.32587 86.1566 5.31412 85.1259 5.30775C83.9025 5.30025 82.679 5.30087 81.4555 5.30087L67.2496 5.25H56.6247L42.6701 5.30087C41.4443 5.30087 40.2184 5.30025 38.9925 5.30775C37.9598 5.31412 36.9276 5.32587 35.8952 5.35375C33.6458 5.41437 31.3767 5.54662 29.1521 5.94562C26.8955 6.35012 24.795 7.01062 22.7448 8.05174C20.7294 9.07524 18.8853 10.4121 17.2863 12.0072C15.6876 13.602 14.3475 15.4412 13.3216 17.4512C12.2771 19.4976 11.6149 21.5939 11.2091 23.8463C10.8096 26.0645 10.6772 28.3272 10.6164 30.5703C10.5886 31.6 10.5766 32.6299 10.5704 33.6599C10.5629 34.8829 10.5 36.402 10.5 37.6249L10.5004 51.3861L10.5 62.1248L10.5635 76.1784C10.5635 77.4029 10.563 78.6274 10.5704 79.8519C10.5766 80.8833 10.5886 81.9146 10.6165 82.9457C10.6772 85.1927 10.8099 87.4593 11.2097 89.6814C11.6154 91.9356 12.2775 94.0337 13.3211 96.0817C14.3471 98.0949 15.6875 99.9369 17.2863 101.534C18.8852 103.131 20.7288 104.47 22.7438 105.495C24.7953 106.538 26.8968 107.199 29.1547 107.604C31.3783 108.004 33.6467 108.136 35.8952 108.197C36.9276 108.224 37.9599 108.236 38.9927 108.243C40.2185 108.25 41.4443 108.25 42.6701 108.25L56.7508 108.25H67.4021L81.4555 108.249C82.679 108.249 83.9025 108.25 85.1259 108.243C86.1566 108.236 87.1869 108.224 88.2173 108.197C90.4623 108.136 92.727 108.003 94.9474 107.604C97.1996 107.199 99.296 106.538 101.342 105.495C103.354 104.47 105.194 103.131 106.79 101.534C108.386 99.9372 109.723 98.0954 110.747 96.0825C111.79 94.0335 112.45 91.9344 112.855 89.6788C113.254 87.4576 113.386 85.1918 113.447 82.9457C113.475 81.9145 113.487 80.8832 113.493 79.8519C113.501 78.6274 113.5 77.4029 113.5 76.1784C113.5 76.1784 113.499 62.3729 113.499 62.1248V51.3748C113.499 51.1916 113.5 37.3284 113.5 37.3284" fill="white"></path> </mask> <g mask="url(#mask0_1472_3234)"></g> <defs> <filter id="filter0_d_1472_3234" x="0.5" y="0.25" width="123" height="123" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> <feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood> <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"></feColorMatrix> <feOffset dy="5"></feOffset> <feGaussianBlur stdDeviation="5"></feGaussianBlur> <feComposite in2="hardAlpha" operator="out"></feComposite> <feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0"></feColorMatrix> <feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_1472_3234"></feBlend> <feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_1472_3234" result="shape"></feBlend> </filter> <linearGradient id="paint0_linear_1472_3234" x1="-24.6426" y1="5.25" x2="-24.6426" y2="178.535" gradientUnits="userSpaceOnUse"> <stop stop-color="white" stop-opacity="0.1"></stop> <stop offset="0.489516" stop-color="#EFEFEF" stop-opacity="0.1"></stop> <stop offset="1" stop-color="#C0C0C0" stop-opacity="0.1"></stop> </linearGradient> </defs> </svg> <svg class="logo" width="26" height="32" viewBox="0 0 26 32" fill="none" xmlns="http://www.w3.org/2000/svg"> <g opacity="0.6" clip-path="url(#clip0_814_589)"> <path fill-rule="evenodd" clip-rule="evenodd" d="M0.441406 0.5H4.88066V16.2111C7.04608 14.8046 9.86489 14.0937 13.1751 14.0937C16.3574 14.0937 18.1843 13.2872 19.2436 12.1569C20.31 11.019 21.0022 9.12354 21.0022 6.01097V0.5H25.4414V6.01097C25.4414 9.7565 24.6149 13.0659 22.4103 15.4183C20.1985 17.7783 17.002 18.7474 13.1751 18.7474C9.99436 18.7474 7.90869 19.5415 6.66727 20.5718C5.47975 21.5573 4.88066 22.9034 4.88066 24.5646V31.5H0.441406V0.5Z" fill="currentColor"></path> <mask id="mask0_814_589" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="5" y="16" width="21" height="16"> <path d="M23.0466 16.104C20.5318 18.7116 17.0284 19.7167 13.0582 19.7167C10.023 19.7167 8.17998 20.4754 7.1668 21.3162C6.23143 22.0926 5.75684 23.1302 5.75684 24.4929V31.5001H25.383V16.0786L23.0466 16.104Z" fill="black"></path> </mask> <g mask="url(#mask0_814_589)"> <path fill-rule="evenodd" clip-rule="evenodd" d="M13.7748 24.1834C12.7115 23.2169 11.5372 21.4667 11.4814 19.4211L15.9207 19.3599C15.9234 19.4574 15.9611 20.0111 16.683 20.6673C17.2626 21.1942 17.9784 21.6804 18.8767 22.2906C19.1347 22.4659 19.4076 22.6513 19.6968 22.8508C21.951 24.4067 25.3833 26.9311 25.3833 31.5001H20.9441C20.9441 29.7008 19.7035 28.4273 17.2556 26.7378C17.0526 26.5976 16.8373 26.4518 16.6145 26.3009C15.6798 25.6679 14.6139 24.9461 13.7748 24.1834Z" fill="currentColor" fill-opacity="0.6"></path> </g> </g> <defs> <clipPath id="clip0_814_589"> <rect width="25" height="31" fill="white" transform="translate(0.5 0.5)"></rect> </clipPath> </defs> </svg> </div> <h2 class="info-header">Ready to level up?</h2> </div> <div class="action"> <script>(()=>{var l=(s,i,o)=>{let r=async()=>{await(await s())()},t=typeof i.value=="object"?i.value:void 0,c={rootMargin:t==null?void 0:t.rootMargin},n=new IntersectionObserver(e=>{for(let a of e)if(a.isIntersecting){n.disconnect(),r();break}},c);for(let e of o.children)n.observe(e)};(self.Astro||(self.Astro={})).visible=l;window.dispatchEvent(new Event("astro:visible"));})();</script><astro-island uid="2dbAod" data-solid-render-id="s4" component-url="/_astro/Button.DQ_VTrA5.js" component-export="default" renderer-url="/_astro/client.R-oPa1b1.js" props="{"href":[0,"/download"],"class":[0,"cta-button fancy"]}" ssr="" client="visible" opts="{"name":"Button","value":true}" await-children=""><a data-hk="s40-0-0-0" href="/download" class="cta-button fancy button"><astro-slot> Download <span class="icon "><svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-download" aria-hidden="true" style="undefined"><path d="M2.75 14A1.75 1.75 0 0 1 1 12.25v-2.5a.75.75 0 0 1 1.5 0v2.5c0 .138.112.25.25.25h10.5a.25.25 0 0 0 .25-.25v-2.5a.75.75 0 0 1 1.5 0v2.5A1.75 1.75 0 0 1 13.25 14Z"></path><path d="M7.25 7.689V2a.75.75 0 0 1 1.5 0v5.689l1.97-1.969a.749.749 0 1 1 1.06 1.06l-3.25 3.25a.749.749 0 0 1-1.06 0L4.22 6.78a.749.749 0 1 1 1.06-1.06l1.97 1.969Z"></path></svg></span> </astro-slot></a><!--astro:end--></astro-island> <div class="requirements">Requires macOS 10.14 or later</div> </div> </div> <astro-island uid="Z1QOSFN" data-solid-render-id="s3" component-url="/_astro/Footer.BEWbWb9q.js" component-export="default" renderer-url="/_astro/client.R-oPa1b1.js" props="{"embed":[0,true]}" ssr="" client="visible" opts="{"name":"Footer","value":true}" await-children=""><footer data-hk="s30-0-0-0" class="footer embed"><div class="footer-group"><div class="footer-brand"><svg width="35" height="40" viewBox="0 0 35 40" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_627_616)"><path fill-rule="evenodd" clip-rule="evenodd" d="M0.420532 0H6.45792V20.2723C9.40288 18.4576 13.2365 17.5403 17.7383 17.5403C22.0663 17.5403 24.5508 16.4996 25.9915 15.0411C27.4418 13.5728 28.3831 11.1272 28.3831 7.11093V0H34.4205V7.11093C34.4205 11.9439 33.2964 16.2141 30.2982 19.2494C27.2902 22.2945 22.943 23.5451 17.7383 23.5451C13.4126 23.5451 10.576 24.5697 8.8877 25.8991C7.27268 27.1708 6.45792 28.9076 6.45792 31.0511V40H0.420532V0Z" fill="currentColor"></path><mask id="mask0_627_616" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="7" y="20" width="28" height="20"><path d="M31.1636 20.1343C27.7435 23.499 22.9789 24.7959 17.5794 24.7959C13.4516 24.7959 10.945 25.7748 9.56709 26.8598C8.29498 27.8615 7.64954 29.2004 7.64954 30.9587V40.0002H34.3411V20.1016L31.1636 20.1343Z" fill="black"></path></mask><g mask="url(#mask0_627_616)"><path fill-rule="evenodd" clip-rule="evenodd" d="M18.5535 30.5588C17.1074 29.3117 15.5104 27.0535 15.4346 24.414L21.472 24.335C21.4756 24.4608 21.5269 25.1753 22.5087 26.022C23.297 26.7019 24.2705 27.3292 25.4922 28.1166C25.8429 28.3427 26.2142 28.582 26.6074 28.8395C29.6731 30.847 34.3411 34.1043 34.3411 39.9998H28.3037C28.3037 37.6781 26.6166 36.0349 23.2874 33.8548C23.0113 33.674 22.7185 33.4858 22.4155 33.2912C21.1443 32.4744 19.6947 31.543 18.5535 30.5588Z" fill="currentColor" style="opacity:0.6;"></path></g></g><defs><clipPath id="clip0_627_616"><rect width="34" height="40" fill="white" transform="translate(0.5)"></rect></clipPath></defs></svg><div class="footer-col-item"><span><a href="/">RelaGit</a> is a product of <a target="_blank" href="https://github.com/relagit">Rela</a>.</span></div><div class="footer-col-logos"><a href="/redirect/github" aria-label="GitHub"><span data-hk="s30-0-0-1-0" class="icon "><svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-mark-github" aria-hidden="true" style="undefined"><path d="M8 0c4.42 0 8 3.58 8 8a8.013 8.013 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27-.68 0-1.36.09-2 .27-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8Z"></path></svg></span></a><a href="/redirect/producthunt" aria-label="Product Hunt"><svg data-hk="s30-0-0-2-0" fill="currentColor" width="16" height="16" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"><path d="M20 0A1 1 0 0020 40 1 1 0 0020 0M17 30 13 30 13 10 22.666 10A1 1 0 0122.666 24L17 24 17 30M22.666 20H17v-6h5.666a3 3 0 110 6"></path></svg></a><a href="/redirect/twitter" aria-label="X (Twitter)"><svg data-hk="s30-0-0-3-0" fill="currentColor" width="16" height="16" viewBox="0 0 300 271" xmlns="http://www.w3.org/2000/svg"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a></div></div><div class="footer-cols"><div class="footer-col"><div class="footer-col-header">Product</div><a href="/download" class="footer-col-item">Download</a><a href="/docs" class="footer-col-item">Documentation</a><a href="/redirect/github" target="_blank" class="footer-col-item">GitHub</a></div><div class="footer-col"><div class="footer-col-header">Organisation</div><a href="https://github.com/relagit" target="_blank" class="footer-col-item">Open Source</a><a href="/docs/press/branding" target="_blank" class="footer-col-item">Press Kit</a></div><div class="footer-col"><div class="footer-col-header">Resources</div><a href="https://www.npmjs.com/search?q=relagit" target="_blank" class="footer-col-item">Workflows</a><a href="/styles" target="_blank" class="footer-col-item">Styles</a></div></div></div><div class="footer-item"><div class="footer-item-text"><h2 class="footer-item-text-header">Brought to you by.</h2><p class="footer-item-text-paragraph">These wonderful individuals have sponsored or are sponsoring the organisation or its members.</p></div><div class="footer-item-sponsors"><!--$--><a data-hk="s30-0-0-4-0" class="sponsor" href="https://github.com/42chompii" target="_blank"><img loading="lazy" class="pfp" src="https://avatars.githubusercontent.com/u/109488630?v=4" alt="42chompii"></a><a data-hk="s30-0-0-4-1" class="sponsor" href="https://github.com/domi-btnr" target="_blank"><img loading="lazy" class="pfp" src="https://avatars.githubusercontent.com/u/50876016?v=4" alt="domi-btnr"></a><a data-hk="s30-0-0-4-2" class="sponsor" href="https://github.com/voidfill" target="_blank"><img loading="lazy" class="pfp" src="https://avatars.githubusercontent.com/u/71205200?v=4" alt="voidfill"></a><a data-hk="s30-0-0-4-3" class="sponsor" href="https://github.com/Overimagine1" target="_blank"><img loading="lazy" class="pfp" src="https://avatars.githubusercontent.com/u/79660414?v=4" alt="Overimagine1"></a><a data-hk="s30-0-0-4-4" class="sponsor" href="https://github.com/evmoreno" target="_blank"><img loading="lazy" class="pfp" src="https://avatars.githubusercontent.com/u/19178120?v=4" alt="evmoreno"></a><a data-hk="s30-0-0-4-5" class="sponsor" href="https://github.com/canadahonk" target="_blank"><img loading="lazy" class="pfp" src="https://avatars.githubusercontent.com/u/19228318?v=4" alt="canadahonk"></a><!--/--><a href="/redirect/sponsor" class="sponsor add" aria-label="Become a sponsor"><div class="pfp"><span data-hk="s30-0-0-5-0" class="icon "><svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-plus" aria-hidden="true" style="undefined"><path d="M7.75 2a.75.75 0 0 1 .75.75V7h4.25a.75.75 0 0 1 0 1.5H8.5v4.25a.75.75 0 0 1-1.5 0V8.5H2.75a.75.75 0 0 1 0-1.5H7V2.75A.75.75 0 0 1 7.75 2Z"></path></svg></span></div></a></div></div><div class="footer-sep"></div><section class="footer-item" id="waitlist" tabindex="0"><div class="footer-item-text"><h2 class="footer-item-text-header">Don't miss a release.</h2><p class="footer-item-text-paragraph">Be notified about updates and beta programs.</p></div><div class="footer-item-input"><input type="email" placeholder="tim.berners-lee@rela.dev" value=""><button tabindex="0" aria-label="Join Waitlist" disabled class="feature-text-input-button "><span data-hk="s30-0-0-6-0-0-0" class="icon "><svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-paper-airplane" aria-hidden="true" style="undefined"><path d="M.989 8 .064 2.68a1.342 1.342 0 0 1 1.85-1.462l13.402 5.744a1.13 1.13 0 0 1 0 2.076L1.913 14.782a1.343 1.343 0 0 1-1.85-1.463L.99 8Zm.603-5.288L2.38 7.25h4.87a.75.75 0 0 1 0 1.5H2.38l-.788 4.538L13.929 8Z"></path></svg></span></button></div></section><div class="footer-sep"></div><div class="footer-item last"><a class="footer-item-status" href="https://status.rela.dev" target="_blank"><div class="status-dot operational"></div><div class="status-text"><!--$-->All systems normal.<!--/--><!--$--><span data-hk="s30-0-0-7-0" class="icon "><svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-arrow-up-right" aria-hidden="true" style="undefined"><path d="M4.53 4.75A.75.75 0 0 1 5.28 4h6.01a.75.75 0 0 1 .75.75v6.01a.75.75 0 0 1-1.5 0v-4.2l-5.26 5.261a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L9.48 5.5h-4.2a.75.75 0 0 1-.75-.75Z"></path></svg></span><!--/--></div></a><div class="footer-item-cpy"><span>©</span><span>2023</span><div class="sep"></div><span>2024</span><span>All rights reserved.</span></div></div></footer><!--astro:end--></astro-island> </main> </body></html>