wip: improve spec and faq

This commit is contained in:
2026-01-10 22:05:40 +00:00
parent 208219ca2c
commit 7c5c7691c3
11 changed files with 109 additions and 124 deletions

View File

@@ -9,7 +9,7 @@
document.documentElement.classList.add("dark"); document.documentElement.classList.add("dark");
} }
})(); })();
</script><link rel="stylesheet" href="/_astro/index.BpjWaW-v.css"></head> <body class="min-h-screen flex flex-col items-center justify-center p-8"> <div class="text-center"> <h1 class="text-[8rem] sm:text-[12rem] font-display font-bold leading-none </script><link rel="stylesheet" href="/_astro/index.DOL-7fR6.css"></head> <body class="min-h-screen flex flex-col items-center justify-center p-8"> <div class="text-center"> <h1 class="text-[8rem] sm:text-[12rem] font-display font-bold leading-none
text-gray-300 dark:text-gray-700"> text-gray-300 dark:text-gray-700">
404 404
</h1> <p class="text-xl mb-2 text-gray-600 dark:text-gray-400"> </h1> <p class="text-xl mb-2 text-gray-600 dark:text-gray-400">

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -8,8 +8,8 @@
document.documentElement.classList.add("dark"); document.documentElement.classList.add("dark");
} }
})(); })();
</script><link rel="stylesheet" href="/_astro/index.BpjWaW-v.css"> </script><link rel="stylesheet" href="/_astro/index.DOL-7fR6.css">
<style>.spec-content[data-astro-cid-x2lc2h5w] p:last-child{margin-bottom:0}.spec-content[data-astro-cid-x2lc2h5w] a{color:var(--color-accent)}.spec-content[data-astro-cid-x2lc2h5w] a:hover{color:var(--color-accent-light)}.sidebar-link[data-astro-cid-lfaoh65k].active{border-left-color:#0284c7;color:#0284c7;background-color:#0ea5e926}.dark .sidebar-link[data-astro-cid-lfaoh65k].active{color:#38bdf8;background-color:#0ea5e933}#spec-sidebar[data-astro-cid-lfaoh65k]::-webkit-scrollbar{width:4px}#spec-sidebar[data-astro-cid-lfaoh65k]::-webkit-scrollbar-track{background:transparent}#spec-sidebar[data-astro-cid-lfaoh65k]::-webkit-scrollbar-thumb{background-color:#e5e5e5;border-radius:2px}.dark #spec-sidebar[data-astro-cid-lfaoh65k]::-webkit-scrollbar-thumb{background-color:#262626}.spec-content[data-astro-cid-6lwcykzv]{max-width:var(--content-max-width)}.spec-content[data-astro-cid-6lwcykzv] h2{font-family:var(--font-display);font-size:1.75rem;font-weight:700;margin-top:3rem;margin-bottom:1.5rem;padding-bottom:.75rem;scroll-margin-top:calc(var(--header-height) + 2rem);border-bottom:1px solid #e5e5e5;color:#0a0a0a}.dark .spec-content[data-astro-cid-6lwcykzv] h2{border-bottom-color:#262626;color:#fafafa}.spec-content[data-astro-cid-6lwcykzv] h2:first-child{margin-top:0}.spec-content[data-astro-cid-6lwcykzv] h3{font-family:var(--font-display);font-size:1.25rem;font-weight:600;margin-top:2rem;margin-bottom:1rem;color:#525252}.dark .spec-content[data-astro-cid-6lwcykzv] h3{color:#a3a3a3}.spec-content[data-astro-cid-6lwcykzv] p{margin-bottom:1.25rem;color:#525252}.dark .spec-content[data-astro-cid-6lwcykzv] p{color:#a3a3a3}.spec-content[data-astro-cid-6lwcykzv] strong{font-weight:600;color:#0a0a0a}.dark .spec-content[data-astro-cid-6lwcykzv] strong{color:#fafafa}.spec-content[data-astro-cid-6lwcykzv] ul{margin-bottom:1.25rem;padding-left:1.5rem}.spec-content[data-astro-cid-6lwcykzv] ol{margin-bottom:1.25rem;padding-left:2.5rem;counter-reset:item;list-style:none}.spec-content[data-astro-cid-6lwcykzv] ol>li{counter-increment:item;position:relative}.spec-content[data-astro-cid-6lwcykzv] ol>li:before{content:counters(item,".") ".";position:absolute;left:-2.5rem;width:2rem;text-align:right;font-weight:500;color:#737373}.spec-content[data-astro-cid-6lwcykzv] ol>li[id]{scroll-margin-top:calc(var(--header-height) + 2rem)}.spec-content[data-astro-cid-6lwcykzv] li{margin-bottom:.5rem;color:#525252}.dark .spec-content[data-astro-cid-6lwcykzv] li{color:#a3a3a3}.spec-content[data-astro-cid-6lwcykzv] a{color:var(--color-accent);text-decoration:none;transition:color .15s ease}.spec-content[data-astro-cid-6lwcykzv] a:hover{color:var(--color-accent-light)}.spec-content[data-astro-cid-6lwcykzv] blockquote{border-left:3px solid var(--color-accent);padding-left:1.5rem;margin:1.5rem 0;font-style:italic;color:#737373}.spec-content[data-astro-cid-6lwcykzv] img{max-width:100%;height:auto;border-radius:8px;margin:2rem 0}.spec-content[data-astro-cid-hqz3ghsx] p:last-child{margin-bottom:0}.spec-content[data-astro-cid-hqz3ghsx] ul,.spec-content[data-astro-cid-hqz3ghsx] ol{margin-top:1rem}.spec-content[data-astro-cid-hqz3ghsx] li{color:#525252}.dark .spec-content[data-astro-cid-hqz3ghsx] li{color:#a3a3a3} <style>.spec-content[data-astro-cid-x2lc2h5w] p:last-child{margin-bottom:0}.spec-content[data-astro-cid-x2lc2h5w] a{color:var(--color-accent)}.spec-content[data-astro-cid-x2lc2h5w] a:hover{color:var(--color-accent-light)}.sidebar-link[data-astro-cid-lfaoh65k].active{color:#0284c7;background-color:#0ea5e926}.dark .sidebar-link[data-astro-cid-lfaoh65k].active{color:#38bdf8;background-color:#0ea5e933}#spec-sidebar[data-astro-cid-lfaoh65k]::-webkit-scrollbar{width:4px}#spec-sidebar[data-astro-cid-lfaoh65k]::-webkit-scrollbar-track{background:transparent}#spec-sidebar[data-astro-cid-lfaoh65k]::-webkit-scrollbar-thumb{background-color:#e5e5e5;border-radius:2px}.dark #spec-sidebar[data-astro-cid-lfaoh65k]::-webkit-scrollbar-thumb{background-color:#262626}.spec-content[data-astro-cid-6lwcykzv]{max-width:var(--content-max-width)}.spec-content[data-astro-cid-6lwcykzv] h2{font-family:var(--font-display);font-size:1.75rem;font-weight:700;margin-top:3rem;margin-bottom:1.5rem;padding-bottom:.75rem;scroll-margin-top:calc(var(--header-height) + 2rem);border-bottom:1px solid #e5e5e5;color:#0a0a0a}.dark .spec-content[data-astro-cid-6lwcykzv] h2{border-bottom-color:#262626;color:#fafafa}.spec-content[data-astro-cid-6lwcykzv] h2:first-child{margin-top:0}.spec-content[data-astro-cid-6lwcykzv] h3{font-family:var(--font-display);font-size:1.25rem;font-weight:600;margin-top:2rem;margin-bottom:1rem;color:#525252}.dark .spec-content[data-astro-cid-6lwcykzv] h3{color:#a3a3a3}.spec-content[data-astro-cid-6lwcykzv] p{margin-bottom:1.25rem;color:#525252}.dark .spec-content[data-astro-cid-6lwcykzv] p{color:#a3a3a3}.spec-content[data-astro-cid-6lwcykzv] strong{font-weight:600;color:#0a0a0a}.dark .spec-content[data-astro-cid-6lwcykzv] strong{color:#fafafa}.spec-content[data-astro-cid-6lwcykzv] ul{margin-bottom:1.25rem;padding-left:1.5rem}.spec-content[data-astro-cid-6lwcykzv] ol{margin-bottom:1.25rem;padding-left:2.5rem;counter-reset:item;list-style:none}.spec-content[data-astro-cid-6lwcykzv] ol>li{counter-increment:item;position:relative}.spec-content[data-astro-cid-6lwcykzv] ol>li:before{content:counters(item,".") ".";position:absolute;left:-2.5rem;width:2rem;text-align:right;font-weight:500;color:#737373}.spec-content[data-astro-cid-6lwcykzv] ol>li[id]{scroll-margin-top:calc(var(--header-height) + 2rem)}.spec-content[data-astro-cid-6lwcykzv] li{margin-bottom:.5rem;color:#525252}.dark .spec-content[data-astro-cid-6lwcykzv] li{color:#a3a3a3}.spec-content[data-astro-cid-6lwcykzv] a{color:var(--color-accent);text-decoration:none;transition:color .15s ease}.spec-content[data-astro-cid-6lwcykzv] a:hover{color:var(--color-accent-light)}.spec-content[data-astro-cid-6lwcykzv] blockquote{border-left:3px solid var(--color-accent);padding-left:1.5rem;margin:1.5rem 0;font-style:italic;color:#737373}.spec-content[data-astro-cid-6lwcykzv] img{max-width:100%;height:auto;border-radius:8px;margin:2rem 0}.spec-content[data-astro-cid-hqz3ghsx] p:last-child{margin-bottom:0}.spec-content[data-astro-cid-hqz3ghsx] ul,.spec-content[data-astro-cid-hqz3ghsx] ol{margin-top:1rem}.spec-content[data-astro-cid-hqz3ghsx] li{color:#525252}.dark .spec-content[data-astro-cid-hqz3ghsx] li{color:#a3a3a3}
</style></head> <body class="min-h-screen"> <header id="site-header" class="fixed top-0 inset-x-0 z-50 border-b border-transparent </style></head> <body class="min-h-screen"> <header id="site-header" class="fixed top-0 inset-x-0 z-50 border-b border-transparent
translate-y-[-100%] transition-transform duration-300 translate-y-[-100%] transition-transform duration-300
backdrop-blur-xl bg-gray-50/85 dark:bg-gray-950/85"> <div class="max-w-6xl mx-auto px-4 sm:px-6 h-16 flex items-center justify-between"> <!-- Logo / Title + Version --> <div class="flex items-center gap-3"> <a href="#hero" class="flex items-center gap-3 no-underline backdrop-blur-xl bg-gray-50/85 dark:bg-gray-950/85"> <div class="max-w-6xl mx-auto px-4 sm:px-6 h-16 flex items-center justify-between"> <!-- Logo / Title + Version --> <div class="flex items-center gap-3"> <a href="#hero" class="flex items-center gap-3 no-underline
@@ -160,8 +160,8 @@ The complete Git Common-Flow specification
lg:max-h-[calc(100vh-8rem)] lg:overflow-y-auto lg:max-h-[calc(100vh-8rem)] lg:overflow-y-auto
lg:pr-8 lg:mr-8 lg:border-r border-gray-200 dark:border-gray-800" data-astro-cid-lfaoh65k> <nav class="space-y-1 py-2" data-astro-cid-lfaoh65k> <div class="text-xs font-semibold uppercase tracking-wider mb-4 lg:pr-8 lg:mr-8 lg:border-r border-gray-200 dark:border-gray-800" data-astro-cid-lfaoh65k> <nav class="space-y-1 py-2" data-astro-cid-lfaoh65k> <div class="text-xs font-semibold uppercase tracking-wider mb-4
text-gray-500 dark:text-gray-500" data-astro-cid-lfaoh65k> text-gray-500 dark:text-gray-500" data-astro-cid-lfaoh65k>
On This Page Table of Contents
</div> <a href="#terminology" class="sidebar-link block py-2 px-4 text-sm rounded-md -ml-0.5 border-l-2 border-transparent transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900" data-sidebar-link data-section-id="terminology" data-astro-cid-lfaoh65k> Terminology </a><a href="#specification" class="sidebar-link block py-2 px-4 text-sm rounded-md -ml-0.5 border-l-2 border-transparent transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900" data-sidebar-link data-section-id="specification" data-astro-cid-lfaoh65k> Specification </a><a href="#spec-the-master-branch" class="sidebar-link block py-2 px-4 text-sm rounded-md -ml-0.5 border-l-2 border-transparent transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-sidebar-link data-section-id="spec-the-master-branch" data-astro-cid-lfaoh65k> The Master Branch </a><a href="#spec-changes" class="sidebar-link block py-2 px-4 text-sm rounded-md -ml-0.5 border-l-2 border-transparent transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-sidebar-link data-section-id="spec-changes" data-astro-cid-lfaoh65k> Changes </a><a href="#spec-git-best-practices" class="sidebar-link block py-2 px-4 text-sm rounded-md -ml-0.5 border-l-2 border-transparent transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-sidebar-link data-section-id="spec-git-best-practices" data-astro-cid-lfaoh65k> Git Best Practices </a><a href="#spec-versioning" class="sidebar-link block py-2 px-4 text-sm rounded-md -ml-0.5 border-l-2 border-transparent transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-sidebar-link data-section-id="spec-versioning" data-astro-cid-lfaoh65k> Versioning </a><a href="#spec-releases" class="sidebar-link block py-2 px-4 text-sm rounded-md -ml-0.5 border-l-2 border-transparent transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-sidebar-link data-section-id="spec-releases" data-astro-cid-lfaoh65k> Releases </a><a href="#spec-bug-fixes-rollback" class="sidebar-link block py-2 px-4 text-sm rounded-md -ml-0.5 border-l-2 border-transparent transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-sidebar-link data-section-id="spec-bug-fixes-rollback" data-astro-cid-lfaoh65k> Bug Fixes &amp; Rollback </a><a href="#spec-maintenance-releases" class="sidebar-link block py-2 px-4 text-sm rounded-md -ml-0.5 border-l-2 border-transparent transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-sidebar-link data-section-id="spec-maintenance-releases" data-astro-cid-lfaoh65k> Maintenance Releases </a> </nav> </aside> <!-- Mobile floating button --> <button id="spec-toc-toggle" class="lg:hidden fixed bottom-6 right-6 z-40 </div> <a href="#terminology" class="sidebar-link block py-2 px-4 text-sm rounded-md transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900" data-sidebar-link data-section-id="terminology" data-astro-cid-lfaoh65k> Terminology </a><a href="#specification" class="sidebar-link block py-2 px-4 text-sm rounded-md transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900" data-sidebar-link data-section-id="specification" data-astro-cid-lfaoh65k> Specification </a><a href="#spec-the-master-branch" class="sidebar-link block py-2 px-4 text-sm rounded-md transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-sidebar-link data-section-id="spec-the-master-branch" data-astro-cid-lfaoh65k> The Master Branch </a><a href="#spec-changes" class="sidebar-link block py-2 px-4 text-sm rounded-md transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-sidebar-link data-section-id="spec-changes" data-astro-cid-lfaoh65k> Changes </a><a href="#spec-git-best-practices" class="sidebar-link block py-2 px-4 text-sm rounded-md transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-sidebar-link data-section-id="spec-git-best-practices" data-astro-cid-lfaoh65k> Git Best Practices </a><a href="#spec-versioning" class="sidebar-link block py-2 px-4 text-sm rounded-md transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-sidebar-link data-section-id="spec-versioning" data-astro-cid-lfaoh65k> Versioning </a><a href="#spec-releases" class="sidebar-link block py-2 px-4 text-sm rounded-md transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-sidebar-link data-section-id="spec-releases" data-astro-cid-lfaoh65k> Releases </a><a href="#spec-bug-fixes-rollback" class="sidebar-link block py-2 px-4 text-sm rounded-md transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-sidebar-link data-section-id="spec-bug-fixes-rollback" data-astro-cid-lfaoh65k> Bug Fixes &amp; Rollback </a><a href="#spec-maintenance-releases" class="sidebar-link block py-2 px-4 text-sm rounded-md transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-sidebar-link data-section-id="spec-maintenance-releases" data-astro-cid-lfaoh65k> Maintenance Releases </a> </nav> </aside> <!-- Mobile floating button --> <button id="spec-toc-toggle" class="lg:hidden fixed bottom-6 right-6 z-40
w-12 h-12 rounded-full shadow-lg w-12 h-12 rounded-full shadow-lg
bg-sky-600 text-white bg-sky-600 text-white
flex items-center justify-center flex items-center justify-center
@@ -171,7 +171,7 @@ On This Page
rounded-t-2xl shadow-xl p-6" data-astro-cid-lfaoh65k> <div class="flex items-center justify-between mb-4" data-astro-cid-lfaoh65k> <span class="text-sm font-semibold uppercase tracking-wider rounded-t-2xl shadow-xl p-6" data-astro-cid-lfaoh65k> <div class="flex items-center justify-between mb-4" data-astro-cid-lfaoh65k> <span class="text-sm font-semibold uppercase tracking-wider
text-gray-500 dark:text-gray-500" data-astro-cid-lfaoh65k> text-gray-500 dark:text-gray-500" data-astro-cid-lfaoh65k>
Jump to Section Jump to Section
</span> <button class="p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-900" data-toc-close aria-label="Close" data-astro-cid-lfaoh65k> <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-astro-cid-lfaoh65k> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" data-astro-cid-lfaoh65k></path> </svg> </button> </div> <nav class="space-y-1" data-astro-cid-lfaoh65k> <a href="#terminology" class="sidebar-link block py-2 px-4 text-sm rounded-md -ml-0.5 border-l-2 border-transparent transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900" data-toc-link data-astro-cid-lfaoh65k> Terminology </a><a href="#specification" class="sidebar-link block py-2 px-4 text-sm rounded-md -ml-0.5 border-l-2 border-transparent transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900" data-toc-link data-astro-cid-lfaoh65k> Specification </a><a href="#spec-the-master-branch" class="sidebar-link block py-2 px-4 text-sm rounded-md -ml-0.5 border-l-2 border-transparent transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-toc-link data-astro-cid-lfaoh65k> The Master Branch </a><a href="#spec-changes" class="sidebar-link block py-2 px-4 text-sm rounded-md -ml-0.5 border-l-2 border-transparent transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-toc-link data-astro-cid-lfaoh65k> Changes </a><a href="#spec-git-best-practices" class="sidebar-link block py-2 px-4 text-sm rounded-md -ml-0.5 border-l-2 border-transparent transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-toc-link data-astro-cid-lfaoh65k> Git Best Practices </a><a href="#spec-versioning" class="sidebar-link block py-2 px-4 text-sm rounded-md -ml-0.5 border-l-2 border-transparent transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-toc-link data-astro-cid-lfaoh65k> Versioning </a><a href="#spec-releases" class="sidebar-link block py-2 px-4 text-sm rounded-md -ml-0.5 border-l-2 border-transparent transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-toc-link data-astro-cid-lfaoh65k> Releases </a><a href="#spec-bug-fixes-rollback" class="sidebar-link block py-2 px-4 text-sm rounded-md -ml-0.5 border-l-2 border-transparent transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-toc-link data-astro-cid-lfaoh65k> Bug Fixes &amp; Rollback </a><a href="#spec-maintenance-releases" class="sidebar-link block py-2 px-4 text-sm rounded-md -ml-0.5 border-l-2 border-transparent transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-toc-link data-astro-cid-lfaoh65k> Maintenance Releases </a> </nav> </div> </div> <script type="module">function l(){const r=document.querySelectorAll("[data-sidebar-link]"),d=new Map;r.forEach(e=>{const t=e.getAttribute("data-section-id");if(t){const o=document.getElementById(t);o&&d.set(t,o)}});const g=new IntersectionObserver(e=>{e.forEach(t=>{if(t.isIntersecting){const o=t.target.getAttribute("id");r.forEach(a=>{const E=a.getAttribute("data-section-id");a.classList.toggle("active",E===o)})}})},{rootMargin:"-20% 0% -60% 0%",threshold:0});d.forEach(e=>g.observe(e));const n=document.getElementById("spec-toc-toggle"),c=document.getElementById("spec-toc-drawer"),u=c?.querySelector("[data-toc-backdrop]"),b=c?.querySelector("[data-toc-close]"),v=c?.querySelectorAll("[data-toc-link]");function f(){c?.classList.remove("hidden"),document.body.style.overflow="hidden"}function s(){c?.classList.add("hidden"),document.body.style.overflow=""}n?.addEventListener("click",f),u?.addEventListener("click",s),b?.addEventListener("click",s),v?.forEach(e=>{e.addEventListener("click",s)});const i=document.getElementById("spec");i&&n&&new IntersectionObserver(([t])=>{n.classList.toggle("hidden",!t.isIntersecting)},{threshold:0}).observe(i)}l();document.addEventListener("astro:after-swap",l);</script> </div> <!-- Main content --> <div class="flex-1 min-w-0" data-astro-cid-6lwcykzv> <article class="prose-spec spec-content" data-astro-cid-6lwcykzv> <!-- Terminology --> <section id="terminology" data-astro-cid-6lwcykzv> <h2 data-astro-cid-6lwcykzv>Terminology</h2> <ul> </span> <button class="p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-900" data-toc-close aria-label="Close" data-astro-cid-lfaoh65k> <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-astro-cid-lfaoh65k> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" data-astro-cid-lfaoh65k></path> </svg> </button> </div> <nav class="space-y-1" data-astro-cid-lfaoh65k> <a href="#terminology" class="sidebar-link block py-2 px-4 text-sm rounded-md transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900" data-toc-link data-astro-cid-lfaoh65k> Terminology </a><a href="#specification" class="sidebar-link block py-2 px-4 text-sm rounded-md transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900" data-toc-link data-astro-cid-lfaoh65k> Specification </a><a href="#spec-the-master-branch" class="sidebar-link block py-2 px-4 text-sm rounded-md transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-toc-link data-astro-cid-lfaoh65k> The Master Branch </a><a href="#spec-changes" class="sidebar-link block py-2 px-4 text-sm rounded-md transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-toc-link data-astro-cid-lfaoh65k> Changes </a><a href="#spec-git-best-practices" class="sidebar-link block py-2 px-4 text-sm rounded-md transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-toc-link data-astro-cid-lfaoh65k> Git Best Practices </a><a href="#spec-versioning" class="sidebar-link block py-2 px-4 text-sm rounded-md transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-toc-link data-astro-cid-lfaoh65k> Versioning </a><a href="#spec-releases" class="sidebar-link block py-2 px-4 text-sm rounded-md transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-toc-link data-astro-cid-lfaoh65k> Releases </a><a href="#spec-bug-fixes-rollback" class="sidebar-link block py-2 px-4 text-sm rounded-md transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-toc-link data-astro-cid-lfaoh65k> Bug Fixes &amp; Rollback </a><a href="#spec-maintenance-releases" class="sidebar-link block py-2 px-4 text-sm rounded-md transition-colors text-gray-500 hover:text-gray-950 hover:bg-gray-100 dark:hover:text-gray-50 dark:hover:bg-gray-900 pl-6 text-[0.8125rem]" data-toc-link data-astro-cid-lfaoh65k> Maintenance Releases </a> </nav> </div> </div> <script type="module">function u(){const a=document.querySelectorAll("[data-sidebar-link]"),o=[];a.forEach(n=>{const e=n.getAttribute("data-section-id");if(e){const t=document.getElementById(e);t&&o.push({id:e,element:t})}});function l(){let e=o[0]?.id;for(const{id:t,element:r}of o)r.getBoundingClientRect().top<=100&&(e=t);a.forEach(t=>{const r=t.getAttribute("data-section-id");t.classList.toggle("active",r===e)})}let s=!1;window.addEventListener("scroll",()=>{s||(requestAnimationFrame(()=>{l(),s=!1}),s=!0)}),l();const d=document.getElementById("spec-toc-toggle"),c=document.getElementById("spec-toc-drawer"),g=c?.querySelector("[data-toc-backdrop]"),m=c?.querySelector("[data-toc-close]"),v=c?.querySelectorAll("[data-toc-link]");function p(){c?.classList.remove("hidden"),document.body.style.overflow="hidden"}function i(){c?.classList.add("hidden"),document.body.style.overflow=""}d?.addEventListener("click",p),g?.addEventListener("click",i),m?.addEventListener("click",i),v?.forEach(n=>{n.addEventListener("click",i)});const f=document.getElementById("spec");f&&d&&new IntersectionObserver(([e])=>{d.classList.toggle("hidden",!e.isIntersecting)},{threshold:0}).observe(f)}u();document.addEventListener("astro:after-swap",u);</script> </div> <!-- Main content --> <div class="flex-1 min-w-0" data-astro-cid-6lwcykzv> <article class="prose-spec spec-content" data-astro-cid-6lwcykzv> <!-- Terminology --> <section id="terminology" data-astro-cid-6lwcykzv> <h2 data-astro-cid-6lwcykzv>Terminology</h2> <ul>
<li><strong>Master Branch</strong> - Must always have passing tests, is considered bleeding <li><strong>Master Branch</strong> - Must always have passing tests, is considered bleeding
edge, and must be named <code>master</code>.</li> edge, and must be named <code>master</code>.</li>
<li><strong>Change Branches</strong> - Any branch that introduces changes like a new feature, a <li><strong>Change Branches</strong> - Any branch that introduces changes like a new feature, a
@@ -335,7 +335,7 @@ branch in the first place.</li>
</li> </li>
</ol> </section> </article> </div> </div> </div> </section> <section id="faq" class="py-20 sm:py-28 bg-gray-100 dark:bg-gray-900" data-astro-cid-hqz3ghsx> <div class="section-container" data-astro-cid-hqz3ghsx> <div class="max-w-3xl mx-auto" data-astro-cid-hqz3ghsx> <!-- Section header --> <div class="mb-12 text-center" data-astro-cid-hqz3ghsx> <h2 class="text-3xl sm:text-4xl mb-4" data-astro-cid-hqz3ghsx>FAQ</h2> <p class="text-lg text-gray-600 dark:text-gray-400" data-astro-cid-hqz3ghsx> </ol> </section> </article> </div> </div> </div> </section> <section id="faq" class="py-20 sm:py-28 bg-gray-100 dark:bg-gray-900" data-astro-cid-hqz3ghsx> <div class="section-container" data-astro-cid-hqz3ghsx> <div class="max-w-3xl mx-auto" data-astro-cid-hqz3ghsx> <!-- Section header --> <div class="mb-12 text-center" data-astro-cid-hqz3ghsx> <h2 class="text-3xl sm:text-4xl mb-4" data-astro-cid-hqz3ghsx>FAQ</h2> <p class="text-lg text-gray-600 dark:text-gray-400" data-astro-cid-hqz3ghsx>
Common questions about Git Common-Flow Common questions about Git Common-Flow
</p> </div> <!-- FAQ Items --> <div class="space-y-0" data-astro-cid-hqz3ghsx> </div> </div> </div> </section> <script type="module">function s(){const r=document.querySelectorAll("[data-faq-item]");r.forEach(t=>{const e=t.querySelector("[data-faq-trigger]"),o=t.querySelector("[data-faq-content]"),i=t.querySelector("[data-faq-icon]");!e||!o||!i||e.addEventListener("click",()=>{const c=e.getAttribute("aria-expanded")==="true";r.forEach(a=>{if(a!==t){const d=a.querySelector("[data-faq-trigger]"),l=a.querySelector("[data-faq-content]"),f=a.querySelector("[data-faq-icon]");d?.setAttribute("aria-expanded","false"),l?.classList.add("hidden"),f?.classList.remove("rotate-180")}}),e.setAttribute("aria-expanded",c?"false":"true"),o.classList.toggle("hidden",c),i.classList.toggle("rotate-180",!c)})});const n=r[0]?.querySelector("[data-faq-trigger]");n&&n.click()}s();document.addEventListener("astro:after-swap",s);</script> </main> <footer class="py-8 text-center text-sm </p> </div> <!-- FAQ Items --> <div class="space-y-0" data-astro-cid-hqz3ghsx> </div> </div> </div> </section> <script type="module">function n(){document.querySelectorAll("[data-faq-item]").forEach(r=>{const t=r.querySelector("[data-faq-trigger]"),a=r.querySelector("[data-faq-content]"),s=r.querySelector("[data-faq-icon]");!t||!a||!s||t.addEventListener("click",()=>{const e=t.getAttribute("aria-expanded")==="true";t.setAttribute("aria-expanded",e?"false":"true"),a.classList.toggle("grid-rows-[1fr]",!e),a.classList.toggle("grid-rows-[0fr]",e),s.classList.toggle("rotate-180",!e)})})}n();document.addEventListener("astro:after-swap",n);</script> </main> <footer class="py-8 text-center text-sm
text-gray-500 dark:text-gray-500 text-gray-500 dark:text-gray-500
border-t border-gray-200 dark:border-gray-800"> <div class="section-container"> <p> border-t border-gray-200 dark:border-gray-800"> <div class="section-container"> <p>
Git Common-Flow is authored by Git Common-Flow is authored by

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -53,11 +53,16 @@ const { items } = Astro.props;
</svg> </svg>
</button> </button>
<div <div
class="hidden pb-6 text-gray-600 dark:text-gray-400 class="grid grid-rows-[0fr] transition-[grid-template-rows] duration-300 ease-out"
prose-spec spec-content"
data-faq-content data-faq-content
set:html={item.answer} >
/> <div class="overflow-hidden">
<div
class="pb-6 text-gray-600 dark:text-gray-400 prose-spec spec-content"
set:html={item.answer}
/>
</div>
</div>
</div> </div>
)) ))
} }
@@ -80,33 +85,13 @@ const { items } = Astro.props;
trigger.addEventListener("click", () => { trigger.addEventListener("click", () => {
const isExpanded = trigger.getAttribute("aria-expanded") === "true"; const isExpanded = trigger.getAttribute("aria-expanded") === "true";
// Close all other items
items.forEach((otherItem) => {
if (otherItem !== item) {
const otherTrigger = otherItem.querySelector("[data-faq-trigger]");
const otherContent = otherItem.querySelector("[data-faq-content]");
const otherIcon = otherItem.querySelector("[data-faq-icon]");
otherTrigger?.setAttribute("aria-expanded", "false");
otherContent?.classList.add("hidden");
otherIcon?.classList.remove("rotate-180");
}
});
// Toggle current item // Toggle current item
trigger.setAttribute("aria-expanded", isExpanded ? "false" : "true"); trigger.setAttribute("aria-expanded", isExpanded ? "false" : "true");
content.classList.toggle("hidden", isExpanded); content.classList.toggle("grid-rows-[1fr]", !isExpanded);
content.classList.toggle("grid-rows-[0fr]", isExpanded);
icon.classList.toggle("rotate-180", !isExpanded); icon.classList.toggle("rotate-180", !isExpanded);
}); });
}); });
// Open first item by default
const firstTrigger = items[0]?.querySelector(
"[data-faq-trigger]"
) as HTMLButtonElement;
if (firstTrigger) {
firstTrigger.click();
}
} }
// Initialize on load // Initialize on load

View File

@@ -19,15 +19,15 @@ const { items } = Astro.props;
class="text-xs font-semibold uppercase tracking-wider mb-4 class="text-xs font-semibold uppercase tracking-wider mb-4
text-gray-500 dark:text-gray-500" text-gray-500 dark:text-gray-500"
> >
On This Page Table of Contents
</div> </div>
{ {
items.map((item) => ( items.map((item) => (
<a <a
href={`#${item.id}`} href={`#${item.id}`}
class:list={[ class:list={[
"sidebar-link block py-2 px-4 text-sm rounded-md -ml-0.5", "sidebar-link block py-2 px-4 text-sm rounded-md",
"border-l-2 border-transparent transition-colors", "transition-colors",
"text-gray-500 hover:text-gray-950 hover:bg-gray-100", "text-gray-500 hover:text-gray-950 hover:bg-gray-100",
"dark:hover:text-gray-50 dark:hover:bg-gray-900", "dark:hover:text-gray-50 dark:hover:bg-gray-900",
item.level === 3 && "pl-6 text-[0.8125rem]", item.level === 3 && "pl-6 text-[0.8125rem]",
@@ -110,8 +110,8 @@ const { items } = Astro.props;
<a <a
href={`#${item.id}`} href={`#${item.id}`}
class:list={[ class:list={[
"sidebar-link block py-2 px-4 text-sm rounded-md -ml-0.5", "sidebar-link block py-2 px-4 text-sm rounded-md",
"border-l-2 border-transparent transition-colors", "transition-colors",
"text-gray-500 hover:text-gray-950 hover:bg-gray-100", "text-gray-500 hover:text-gray-950 hover:bg-gray-100",
"dark:hover:text-gray-50 dark:hover:bg-gray-900", "dark:hover:text-gray-50 dark:hover:bg-gray-900",
item.level === 3 && "pl-6 text-[0.8125rem]", item.level === 3 && "pl-6 text-[0.8125rem]",
@@ -130,38 +130,51 @@ const { items } = Astro.props;
function initSpecSidebar() { function initSpecSidebar() {
// Active section tracking // Active section tracking
const sidebarLinks = document.querySelectorAll("[data-sidebar-link]"); const sidebarLinks = document.querySelectorAll("[data-sidebar-link]");
const sections = new Map<string, Element>(); const sections: { id: string; element: Element }[] = [];
sidebarLinks.forEach((link) => { sidebarLinks.forEach((link) => {
const id = link.getAttribute("data-section-id"); const id = link.getAttribute("data-section-id");
if (id) { if (id) {
const section = document.getElementById(id); const section = document.getElementById(id);
if (section) { if (section) {
sections.set(id, section); sections.push({ id, element: section });
} }
} }
}); });
// Intersection Observer for active state // Highlight the section whose top is closest to viewport top
const observer = new IntersectionObserver( function updateActiveSection() {
(entries) => { const headerOffset = 100; // Account for sticky header
entries.forEach((entry) => { let activeId = sections[0]?.id;
if (entry.isIntersecting) {
const id = entry.target.getAttribute("id");
sidebarLinks.forEach((link) => {
const linkId = link.getAttribute("data-section-id");
link.classList.toggle("active", linkId === id);
});
}
});
},
{
rootMargin: "-20% 0% -60% 0%",
threshold: 0,
}
);
sections.forEach((section) => observer.observe(section)); for (const { id, element } of sections) {
const rect = element.getBoundingClientRect();
// Find the last section whose top has scrolled past the header
if (rect.top <= headerOffset) {
activeId = id;
}
}
sidebarLinks.forEach((link) => {
const linkId = link.getAttribute("data-section-id");
link.classList.toggle("active", linkId === activeId);
});
}
// Update on scroll with throttling
let ticking = false;
window.addEventListener("scroll", () => {
if (!ticking) {
requestAnimationFrame(() => {
updateActiveSection();
ticking = false;
});
ticking = true;
}
});
// Initial update
updateActiveSection();
// Mobile TOC drawer // Mobile TOC drawer
const toggleBtn = document.getElementById("spec-toc-toggle"); const toggleBtn = document.getElementById("spec-toc-toggle");
@@ -210,7 +223,6 @@ const { items } = Astro.props;
<style> <style>
/* Active state for sidebar links (toggled by JavaScript) */ /* Active state for sidebar links (toggled by JavaScript) */
.sidebar-link.active { .sidebar-link.active {
border-left-color: #0284c7;
color: #0284c7; color: #0284c7;
background-color: rgba(14, 165, 233, 0.15); background-color: rgba(14, 165, 233, 0.15);
} }