diff options
| -rw-r--r-- | about/resources.html | 212 | ||||
| -rw-r--r-- | about/showcase.html | 723 | ||||
| -rw-r--r-- | about/showcase/debroid/image-1.png | 182 | ||||
| -rw-r--r-- | gemfeed/2026-02-02-tmux-popup-editor-for-cursor-agent-prompts.html | 4 | ||||
| -rw-r--r-- | gemfeed/atom.xml | 6 | ||||
| -rw-r--r-- | index.html | 2 | ||||
| -rw-r--r-- | uptime-stats.html | 2 |
7 files changed, 582 insertions, 549 deletions
diff --git a/about/resources.html b/about/resources.html index e42230d7..c53ae2cd 100644 --- a/about/resources.html +++ b/about/resources.html @@ -50,112 +50,112 @@ <span>In random order:</span><br /> <br /> <ul> -<li>21st Century C: C Tips from the New School; Ben Klemens; O'Reilly</li> -<li>Perl New Features; Joshua McAdams, brian d foy; Perl School</li> +<li>Seeking SRE: Conversations About Running Production Systems at Scale; David N. Blank-Edelman; eBook</li> +<li>DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible</li> +<li>Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O'Reilly</li> +<li>Higher Order Perl; Mark Dominus; Morgan Kaufmann</li> <li>Effective awk programming; Arnold Robbins; O'Reilly</li> -<li>Terraform Cookbook; Mikael Krief; Packt Publishing</li> +<li>Chaos Engineering - System Resiliency in Practice; Casey Rosenthal and Nora Jones; eBook</li> <li>Site Reliability Engineering; How Google runs production systems; O'Reilly</li> +<li>21st Century C: C Tips from the New School; Ben Klemens; O'Reilly</li> <li>Data Science at the Command Line; Jeroen Janssens; O'Reilly</li> -<li>Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press</li> -<li>Chaos Engineering - System Resiliency in Practice; Casey Rosenthal and Nora Jones; eBook</li> -<li>Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications</li> -<li>Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers </li> -<li>The Kubernetes Book; Nigel Poulton; Unabridged Audiobook</li> -<li>C++ Programming Language; Bjarne Stroustrup;</li> -<li>The Docker Book; James Turnbull; Kindle</li> -<li>Raku Fundamentals; Moritz Lenz; Apress</li> -<li>Concurrency in Go; Katherine Cox-Buday; O'Reilly</li> -<li>Raku Recipes; J.J. Merelo; Apress</li> -<li>The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible</li> -<li>Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner</li> -<li>Seeking SRE: Conversations About Running Production Systems at Scale; David N. Blank-Edelman; eBook</li> -<li>Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall & Jon Orwant; O'Reilly</li> +<li>Modern Perl; Chromatic ; Onyx Neon Press</li> +<li>DNS and BIND; Cricket Liu; O'Reilly</li> +<li>Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf</li> +<li>Terraform Cookbook; Mikael Krief; Packt Publishing</li> +<li>Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt </li> <li>100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications</li> -<li>Higher Order Perl; Mark Dominus; Morgan Kaufmann</li> -<li>The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional</li> +<li>The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton</li> <li>Ultimate Go Notebook; Bill Kennedy</li> -<li>Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson</li> -<li>Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt </li> -<li>Leanring eBPF; Liz Rice; O'Reilly</li> -<li>Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O'Reilly</li> -<li>Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers</li> +<li>Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner</li> +<li>Raku Fundamentals; Moritz Lenz; Apress</li> <li>Funktionale Programmierung; Peter Pepper; Springer</li> -<li>The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton</li> -<li>Polished Ruby Programming; Jeremy Evans; Packt Publishing</li> +<li>Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press</li> +<li>Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers </li> +<li>The Practise of System and Network Administration; Thomas A. Limoncelli, Christina J. Hogan, Strata R. Chalup; Addison-Wesley Professional Pro Git; Scott Chacon, Ben Straub; Apress</li> +<li>Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall & Jon Orwant; O'Reilly</li> <li>Effective Java; Joshua Bloch; Addison-Wesley Professional</li> -<li>DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible</li> -<li>Pro Puppet; James Turnbull, Jeffrey McCune; Apress</li> -<li>Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O'Reilly</li> -<li>Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O'Reilly</li> -<li>Modern Perl; Chromatic ; Onyx Neon Press</li> -<li>Java ist auch eine Insel; Christian Ullenboom; </li> +<li>The Kubernetes Book; Nigel Poulton; Unabridged Audiobook</li> <li>Systemprogrammierung in Go; Frank Müller; dpunkt</li> -<li>The Practise of System and Network Administration; Thomas A. Limoncelli, Christina J. Hogan, Strata R. Chalup; Addison-Wesley Professional Pro Git; Scott Chacon, Ben Straub; Apress</li> -<li>Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf</li> -<li>DNS and BIND; Cricket Liu; O'Reilly</li> -<li>Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press</li> -<li>Clusterbau mit Linux-HA; Michael Schwartzkopff; O'Reilly</li> +<li>Java ist auch eine Insel; Christian Ullenboom; </li> <li>97 things every SRE should know; Emil Stolarsky, Jaime Woo; O'Reilly</li> -<li>Developing Games in Java; David Brackeen and others...; New Riders</li> +<li>Polished Ruby Programming; Jeremy Evans; Packt Publishing</li> <li>The Pragmatic Programmer; David Thomas; Addison-Wesley</li> +<li>Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers</li> +<li>Clusterbau mit Linux-HA; Michael Schwartzkopff; O'Reilly</li> +<li>Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O'Reilly</li> +<li>The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible</li> +<li>Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press</li> +<li>Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications</li> +<li>Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson</li> +<li>C++ Programming Language; Bjarne Stroustrup;</li> +<li>Leanring eBPF; Liz Rice; O'Reilly</li> +<li>Raku Recipes; J.J. Merelo; Apress</li> +<li>Developing Games in Java; David Brackeen and others...; New Riders</li> +<li>Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O'Reilly</li> +<li>Concurrency in Go; Katherine Cox-Buday; O'Reilly</li> +<li>Pro Puppet; James Turnbull, Jeffrey McCune; Apress</li> +<li>The Docker Book; James Turnbull; Kindle</li> +<li>The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional</li> +<li>Perl New Features; Joshua McAdams, brian d foy; Perl School</li> </ul><br /> <h2 style='display: inline' id='technical-references'>Technical references</h2><br /> <br /> <span>I didn't read them from the beginning to the end, but I am using them to look up things. The books are in random order:</span><br /> <br /> <ul> +<li>BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley</li> +<li>Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O'Reilly</li> <li>The Linux Programming Interface; Michael Kerrisk; No Starch Press </li> -<li>Relayd and Httpd Mastery; Michael W Lucas</li> <li>Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley</li> -<li>Go: Design Patterns for Real-World Projects; Mat Ryer; Packt</li> <li>Groovy Kurz & Gut; Joerg Staudemeier; O'Reilly</li> -<li>Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O'Reilly</li> <li>Implementing Service Level Objectives; Alex Hidalgo; O'Reilly</li> -<li>BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley</li> +<li>Go: Design Patterns for Real-World Projects; Mat Ryer; Packt</li> +<li>Relayd and Httpd Mastery; Michael W Lucas</li> </ul><br /> <h2 style='display: inline' id='self-development-and-soft-skills-books'>Self-development and soft-skills books</h2><br /> <br /> <span>In random order:</span><br /> <br /> <ul> -<li>Never Split the Difference; Chris Voss, Tahl Raz; Random House Business</li> -<li>Stop starting, start finishing; Arne Roock; Lean-Kanban University </li> -<li>The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME)</li> -<li>101 Essays that change the way you think; Brianna Wiest; Audiobook</li> +<li>Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook</li> <li>Meditation for Mortals, Oliver Burkeman, Audiobook</li> -<li>Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion</li> -<li>Atomic Habits; James Clear; Random House Business</li> +<li>Eat That Frog!; Brian Tracy; Hodder Paperbacks</li> <li>The Power of Now; Eckhard Tolle; Yellow Kite</li> -<li>The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd</li> -<li>The Good Enough Job; Simone Stolzoff; Ebury Edge</li> -<li>Solve for Happy; Mo Gawdat (RE-READ 1ST TIME)</li> -<li>Ultralearning; Scott Young; Thorsons</li> +<li>Atomic Habits; James Clear; Random House Business</li> +<li>The Software Engineer's Guidebook: Navigating senior, tech lead, and staff engineer positions at tech companies and startups; Gergely Orosz; Audiobook </li> +<li>The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME)</li> +<li>The Complete Software Developer's Career Guide; John Sonmez; Unabridged Audiobook</li> <li>Coders at Work - Reflections on the craft of programming, Peter Seibel and Mitchell Dorian et al., Audiobook</li> -<li>The Bullet Journal Method; Ryder Carroll; Fourth Estate</li> -<li>97 Things Every Engineering Manager Should Know; Camille Fournier; Audiobook</li> -<li>Slow Productivity; Cal Newport; Penguin Random House</li> -<li>Eat That Frog; Brian Tracy</li> -<li>Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press</li> -<li>Search Inside Yourself - The Unexpected path to Achieving Success, Happiness (and World Peace); Chade-Meng Tan, Daniel Goleman, Jon Kabat-Zinn; HarperOne</li> -<li>Eat That Frog!; Brian Tracy; Hodder Paperbacks</li> -<li>The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon & Schuster UK</li> -<li>The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select</li> -<li>Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing</li> -<li>Influence without Authority; A. Cohen, D. Bradford; Wiley</li> +<li>The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books</li> +<li>Digital Minimalism; Cal Newport; Portofolio Penguin</li> <li>Ultralearning; Anna Laurent; Self-published via Amazon</li> <li>The Courage to Be Disliked; Ichiro Kishimi and Fumitake Koga; Audiobook</li> -<li>Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook</li> -<li>The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books</li> -<li>Time Management for System Administrators; Thomas A. Limoncelli; O'Reilly</li> -<li>So Good They Can't Ignore You; Cal Newport; Business Plus</li> +<li>Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing</li> +<li>Never Split the Difference; Chris Voss, Tahl Raz; Random House Business</li> +<li>The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd</li> +<li>97 Things Every Engineering Manager Should Know; Camille Fournier; Audiobook</li> <li>Soft Skills; John Sommez; Manning Publications</li> +<li>Influence without Authority; A. Cohen, D. Bradford; Wiley</li> +<li>Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion</li> +<li>Time Management for System Administrators; Thomas A. Limoncelli; O'Reilly</li> +<li>Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press</li> +<li>The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select</li> +<li>Search Inside Yourself - The Unexpected path to Achieving Success, Happiness (and World Peace); Chade-Meng Tan, Daniel Goleman, Jon Kabat-Zinn; HarperOne</li> <li>Getting Things Done; David Allen</li> -<li>Digital Minimalism; Cal Newport; Portofolio Penguin</li> -<li>The Software Engineer's Guidebook: Navigating senior, tech lead, and staff engineer positions at tech companies and startups; Gergely Orosz; Audiobook </li> -<li>The Complete Software Developer's Career Guide; John Sonmez; Unabridged Audiobook</li> -<li>Psycho-Cybernetics; Maxwell Maltz; Perigee Books</li> +<li>101 Essays that change the way you think; Brianna Wiest; Audiobook</li> +<li>Ultralearning; Scott Young; Thorsons</li> +<li>Stop starting, start finishing; Arne Roock; Lean-Kanban University </li> +<li>The Good Enough Job; Simone Stolzoff; Ebury Edge</li> <li>Deep Work; Cal Newport; Piatkus</li> +<li>Psycho-Cybernetics; Maxwell Maltz; Perigee Books</li> +<li>The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon & Schuster UK</li> +<li>Eat That Frog; Brian Tracy</li> +<li>Slow Productivity; Cal Newport; Penguin Random House</li> <li>The Joy of Missing Out; Christina Crook; New Society Publishers</li> +<li>Solve for Happy; Mo Gawdat (RE-READ 1ST TIME)</li> +<li>So Good They Can't Ignore You; Cal Newport; Business Plus</li> +<li>The Bullet Journal Method; Ryder Carroll; Fourth Estate</li> </ul><br /> <a class='textlink' href='../notes/index.html'>Here are notes of mine for some of the books</a><br /> <br /> @@ -164,30 +164,30 @@ <span>Some of these were in-person with exams; others were online learning lectures only. In random order:</span><br /> <br /> <ul> -<li>Functional programming lecture; Remote University of Hagen</li> -<li>MySQL Deep Dive Workshop; 2-day on-site training</li> -<li>Protocol buffers; O'Reilly Online</li> -<li>The Ultimate Kubernetes Bootcamp; School of Devops; O'Reilly Online</li> -<li>Scripting Vim; Damian Conway; O'Reilly Online</li> +<li>Cloud Operations on AWS - Learn how to configure, deploy, maintain, and troubleshoot your AWS environments; 3-day online live training with labs; Amazon</li> <li>The Well-Grounded Rubyist Video Edition; David. A. Black; O'Reilly Online</li> -<li>Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training</li> -<li>Red Hat Certified System Administrator; Course + certification (Although I had the option, I decided not to take the next course as it is more effective to self learn what I need)</li> -<li>Apache Tomcat Best Practises; 3-day on-site training</li> +<li>Algorithms Video Lectures; Robert Sedgewick; O'Reilly Online</li> <li>Developing IaC with Terraform (with Live Lessons); O'Reilly Online</li> +<li>Red Hat Certified System Administrator; Course + certification (Although I had the option, I decided not to take the next course as it is more effective to self learn what I need)</li> +<li>The Ultimate Kubernetes Bootcamp; School of Devops; O'Reilly Online</li> +<li>Functional programming lecture; Remote University of Hagen</li> <li>AWS Immersion Day; Amazon; 1-day interactive online training </li> -<li>Ultimate Go Programming; Bill Kennedy; O'Reilly Online</li> -<li>Algorithms Video Lectures; Robert Sedgewick; O'Reilly Online</li> -<li>Structure and Interpretation of Computer Programs; Harold Abelson and more...; </li> +<li>Apache Tomcat Best Practises; 3-day on-site training</li> +<li>Protocol buffers; O'Reilly Online</li> <li>F5 Loadbalancers Training; 2-day on-site training; F5, Inc. </li> -<li>Cloud Operations on AWS - Learn how to configure, deploy, maintain, and troubleshoot your AWS environments; 3-day online live training with labs; Amazon</li> +<li>Structure and Interpretation of Computer Programs; Harold Abelson and more...; </li> +<li>MySQL Deep Dive Workshop; 2-day on-site training</li> +<li>Scripting Vim; Damian Conway; O'Reilly Online</li> +<li>Ultimate Go Programming; Bill Kennedy; O'Reilly Online</li> +<li>Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training</li> </ul><br /> <h2 style='display: inline' id='technical-guides'>Technical guides</h2><br /> <br /> <span>These are not whole books, but guides (smaller or larger) which I found very useful. in random order:</span><br /> <br /> <ul> -<li>How CPUs work at https://cpu.land</li> <li>Raku Guide at https://raku.guide </li> +<li>How CPUs work at https://cpu.land</li> <li>Advanced Bash-Scripting Guide </li> </ul><br /> <h2 style='display: inline' id='podcasts'>Podcasts</h2><br /> @@ -197,50 +197,50 @@ <span>In random order:</span><br /> <br /> <ul> +<li>The Pragmatic Engineer Podcast</li> +<li>BSD Now [BSD]</li> +<li>Modern Mentor</li> <li>Hidden Brain</li> -<li>Pratical AI</li> +<li>The ProdCast (Google SRE Podcast)</li> +<li>Backend Banter</li> <li>Maintainable</li> -<li>Cup o' Go [Golang]</li> -<li>BSD Now [BSD]</li> <li>Wednesday Wisdom</li> -<li>The Pragmatic Engineer Podcast</li> <li>Fallthrough [Golang]</li> -<li>The Changelog Podcast(s)</li> <li>Dev Interrupted</li> <li>Fork Around And Find Out</li> -<li>Backend Banter</li> -<li>Modern Mentor</li> <li>Deep Questions with Cal Newport</li> -<li>The ProdCast (Google SRE Podcast)</li> +<li>Cup o' Go [Golang]</li> +<li>The Changelog Podcast(s)</li> +<li>Pratical AI</li> </ul><br /> <h3 style='display: inline' id='podcasts-i-liked'>Podcasts I liked</h3><br /> <br /> <span>I liked them but am not listening to them anymore. The podcasts have either "finished" (no more episodes) or I stopped listening to them due to time constraints or a shift in my interests.</span><br /> <br /> <ul> -<li>Java Pub House</li> -<li>Modern Mentor</li> -<li>Go Time (predecessor of fallthrough)</li> <li>FLOSS weekly</li> -<li>CRE: Chaosradio Express [german]</li> +<li>Go Time (predecessor of fallthrough)</li> <li>Ship It (predecessor of Fork Around And Find Out)</li> +<li>Modern Mentor</li> +<li>Java Pub House</li> +<li>CRE: Chaosradio Express [german]</li> </ul><br /> <h2 style='display: inline' id='newsletters-i-like'>Newsletters I like</h2><br /> <br /> <span>This is a mix of tech and non-tech newsletters I am subscribed to. In random order:</span><br /> <br /> <ul> +<li>Golang Weekly</li> +<li>Register Spill</li> <li>Monospace Mentor</li> -<li>VK Newsletter</li> <li>Andreas Brandhorst Newsletter (Sci-Fi author)</li> -<li>Ruby Weekly</li> -<li>Register Spill</li> -<li>Changelog News</li> -<li>byteSizeGo</li> -<li>The Valuable Dev</li> <li>Applied Go Weekly Newsletter</li> -<li>Golang Weekly</li> +<li>The Valuable Dev</li> <li>The Pragmatic Engineer</li> +<li>VK Newsletter</li> +<li>Changelog News</li> +<li>Ruby Weekly</li> +<li>byteSizeGo</li> <li>The Imperfectionist</li> </ul><br /> <h2 style='display: inline' id='magazines-i-liked'>Magazines I like(d)</h2><br /> @@ -248,10 +248,10 @@ <span>This is a mix of tech I like(d). I may not be a current subscriber, but now and then, I buy an issue. In random order:</span><br /> <br /> <ul> -<li>Linux Magazine</li> -<li>Linux User</li> -<li>freeX (not published anymore)</li> <li>LWN (online only)</li> +<li>freeX (not published anymore)</li> +<li>Linux User</li> +<li>Linux Magazine</li> </ul><br /> <h1 style='display: inline' id='formal-education'>Formal education</h1><br /> <br /> diff --git a/about/showcase.html b/about/showcase.html index c9b8c16a..f020cb52 100644 --- a/about/showcase.html +++ b/about/showcase.html @@ -13,7 +13,7 @@ </p> <h1 style='display: inline' id='project-showcase'>Project Showcase</h1><br /> <br /> -<span>Generated on: 2026-01-24</span><br /> +<span>Generated on: 2026-02-07</span><br /> <br /> <span>This page showcases my side projects, providing an overview of what each project does, its technical implementation, and key metrics. Each project summary includes information about the programming languages used, development activity, and licensing. The projects are ranked by score, which combines project size and recent activity.</span><br /> <br /> @@ -23,89 +23,115 @@ <li><a href='#project-showcase'>Project Showcase</a></li> <li>⇢ <a href='#overall-statistics'>Overall Statistics</a></li> <li>⇢ <a href='#projects'>Projects</a></li> -<li>⇢ ⇢ <a href='#1-conf'>1. conf</a></li> -<li>⇢ ⇢ <a href='#2-log4jbench'>2. log4jbench</a></li> -<li>⇢ ⇢ <a href='#3-epimetheus'>3. epimetheus</a></li> -<li>⇢ ⇢ <a href='#4-perc'>4. perc</a></li> -<li>⇢ ⇢ <a href='#5-hexai'>5. hexai</a></li> -<li>⇢ ⇢ <a href='#6-yoga'>6. yoga</a></li> -<li>⇢ ⇢ <a href='#7-totalrecall'>7. totalrecall</a></li> -<li>⇢ ⇢ <a href='#8-gitsyncer'>8. gitsyncer</a></li> -<li>⇢ ⇢ <a href='#9-foostats'>9. foostats</a></li> +<li>⇢ ⇢ <a href='#1-epimetheus'>1. epimetheus</a></li> +<li>⇢ ⇢ <a href='#2-conf'>2. conf</a></li> +<li>⇢ ⇢ <a href='#3-foozone'>3. foo.zone</a></li> +<li>⇢ ⇢ <a href='#4-scifi'>4. scifi</a></li> +<li>⇢ ⇢ <a href='#5-log4jbench'>5. log4jbench</a></li> +<li>⇢ ⇢ <a href='#6-hexai'>6. hexai</a></li> +<li>⇢ ⇢ <a href='#7-perc'>7. perc</a></li> +<li>⇢ ⇢ <a href='#8-yoga'>8. yoga</a></li> +<li>⇢ ⇢ <a href='#9-totalrecall'>9. totalrecall</a></li> <li>⇢ ⇢ <a href='#10-gogios'>10. gogios</a></li> -<li>⇢ ⇢ <a href='#11-timr'>11. timr</a></li> -<li>⇢ ⇢ <a href='#12-tasksamurai'>12. tasksamurai</a></li> -<li>⇢ ⇢ <a href='#13-ior'>13. ior</a></li> -<li>⇢ ⇢ <a href='#14-dtail'>14. dtail</a></li> -<li>⇢ ⇢ <a href='#15-gos'>15. gos</a></li> -<li>⇢ ⇢ <a href='#16-ds-sim'>16. ds-sim</a></li> -<li>⇢ ⇢ <a href='#17-gemtexter'>17. gemtexter</a></li> -<li>⇢ ⇢ <a href='#18-wireguardmeshgenerator'>18. wireguardmeshgenerator</a></li> -<li>⇢ ⇢ <a href='#19-rcm'>19. rcm</a></li> -<li>⇢ ⇢ <a href='#20-terraform'>20. terraform</a></li> -<li>⇢ ⇢ <a href='#21-sillybench'>21. sillybench</a></li> -<li>⇢ ⇢ <a href='#22-quicklogger'>22. quicklogger</a></li> -<li>⇢ ⇢ <a href='#23-gorum'>23. gorum</a></li> -<li>⇢ ⇢ <a href='#24-guprecords'>24. guprecords</a></li> -<li>⇢ ⇢ <a href='#25-docker-radicale-server'>25. docker-radicale-server</a></li> -<li>⇢ ⇢ <a href='#26-geheim'>26. geheim</a></li> -<li>⇢ ⇢ <a href='#27-algorithms'>27. algorithms</a></li> -<li>⇢ ⇢ <a href='#28-randomjournalpage'>28. randomjournalpage</a></li> -<li>⇢ ⇢ <a href='#29-ioriot'>29. ioriot</a></li> -<li>⇢ ⇢ <a href='#30-sway-autorotate'>30. sway-autorotate</a></li> -<li>⇢ ⇢ <a href='#31-mon'>31. mon</a></li> -<li>⇢ ⇢ <a href='#32-staticfarm-apache-handlers'>32. staticfarm-apache-handlers</a></li> -<li>⇢ ⇢ <a href='#33-pingdomfetch'>33. pingdomfetch</a></li> -<li>⇢ ⇢ <a href='#34-xerl'>34. xerl</a></li> -<li>⇢ ⇢ <a href='#35-fapi'>35. fapi</a></li> -<li>⇢ ⇢ <a href='#36-photoalbum'>36. photoalbum</a></li> -<li>⇢ ⇢ <a href='#37-ychat'>37. ychat</a></li> -<li>⇢ ⇢ <a href='#38-perl-c-fibonacci'>38. perl-c-fibonacci</a></li> -<li>⇢ ⇢ <a href='#39-netcalendar'>39. netcalendar</a></li> -<li>⇢ ⇢ <a href='#40-loadbars'>40. loadbars</a></li> -<li>⇢ ⇢ <a href='#41-gotop'>41. gotop</a></li> -<li>⇢ ⇢ <a href='#42-fype'>42. fype</a></li> -<li>⇢ ⇢ <a href='#43-rubyfy'>43. rubyfy</a></li> -<li>⇢ ⇢ <a href='#44-pwgrep'>44. pwgrep</a></li> -<li>⇢ ⇢ <a href='#45-perldaemon'>45. perldaemon</a></li> -<li>⇢ ⇢ <a href='#46-jsmstrade'>46. jsmstrade</a></li> -<li>⇢ ⇢ <a href='#47-japi'>47. japi</a></li> -<li>⇢ ⇢ <a href='#48-perl-poetry'>48. perl-poetry</a></li> -<li>⇢ ⇢ <a href='#49-muttdelay'>49. muttdelay</a></li> -<li>⇢ ⇢ <a href='#50-netdiff'>50. netdiff</a></li> -<li>⇢ ⇢ <a href='#51-debroid'>51. debroid</a></li> -<li>⇢ ⇢ <a href='#52-hsbot'>52. hsbot</a></li> -<li>⇢ ⇢ <a href='#53-cpuinfo'>53. cpuinfo</a></li> -<li>⇢ ⇢ <a href='#54-template'>54. template</a></li> -<li>⇢ ⇢ <a href='#55-ipv6test'>55. ipv6test</a></li> -<li>⇢ ⇢ <a href='#56-awksite'>56. awksite</a></li> -<li>⇢ ⇢ <a href='#57-dyndns'>57. dyndns</a></li> -<li>⇢ ⇢ <a href='#58-vs-sim'>58. vs-sim</a></li> -<li>⇢ ⇢ <a href='#59-foozone'>59. foo.zone</a></li> +<li>⇢ ⇢ <a href='#11-gitsyncer'>11. gitsyncer</a></li> +<li>⇢ ⇢ <a href='#12-foostats'>12. foostats</a></li> +<li>⇢ ⇢ <a href='#13-tasksamurai'>13. tasksamurai</a></li> +<li>⇢ ⇢ <a href='#14-timr'>14. timr</a></li> +<li>⇢ ⇢ <a href='#15-ior'>15. ior</a></li> +<li>⇢ ⇢ <a href='#16-dtail'>16. dtail</a></li> +<li>⇢ ⇢ <a href='#17-gos'>17. gos</a></li> +<li>⇢ ⇢ <a href='#18-ds-sim'>18. ds-sim</a></li> +<li>⇢ ⇢ <a href='#19-gemtexter'>19. gemtexter</a></li> +<li>⇢ ⇢ <a href='#20-wireguardmeshgenerator'>20. wireguardmeshgenerator</a></li> +<li>⇢ ⇢ <a href='#21-rcm'>21. rcm</a></li> +<li>⇢ ⇢ <a href='#22-terraform'>22. terraform</a></li> +<li>⇢ ⇢ <a href='#23-quicklogger'>23. quicklogger</a></li> +<li>⇢ ⇢ <a href='#24-sillybench'>24. sillybench</a></li> +<li>⇢ ⇢ <a href='#25-gorum'>25. gorum</a></li> +<li>⇢ ⇢ <a href='#26-guprecords'>26. guprecords</a></li> +<li>⇢ ⇢ <a href='#27-docker-radicale-server'>27. docker-radicale-server</a></li> +<li>⇢ ⇢ <a href='#28-geheim'>28. geheim</a></li> +<li>⇢ ⇢ <a href='#29-algorithms'>29. algorithms</a></li> +<li>⇢ ⇢ <a href='#30-randomjournalpage'>30. randomjournalpage</a></li> +<li>⇢ ⇢ <a href='#31-photoalbum'>31. photoalbum</a></li> +<li>⇢ ⇢ <a href='#32-ioriot'>32. ioriot</a></li> +<li>⇢ ⇢ <a href='#33-ipv6test'>33. ipv6test</a></li> +<li>⇢ ⇢ <a href='#34-sway-autorotate'>34. sway-autorotate</a></li> +<li>⇢ ⇢ <a href='#35-mon'>35. mon</a></li> +<li>⇢ ⇢ <a href='#36-staticfarm-apache-handlers'>36. staticfarm-apache-handlers</a></li> +<li>⇢ ⇢ <a href='#37-pingdomfetch'>37. pingdomfetch</a></li> +<li>⇢ ⇢ <a href='#38-xerl'>38. xerl</a></li> +<li>⇢ ⇢ <a href='#39-ychat'>39. ychat</a></li> +<li>⇢ ⇢ <a href='#40-fapi'>40. fapi</a></li> +<li>⇢ ⇢ <a href='#41-perl-c-fibonacci'>41. perl-c-fibonacci</a></li> +<li>⇢ ⇢ <a href='#42-netcalendar'>42. netcalendar</a></li> +<li>⇢ ⇢ <a href='#43-loadbars'>43. loadbars</a></li> +<li>⇢ ⇢ <a href='#44-gotop'>44. gotop</a></li> +<li>⇢ ⇢ <a href='#45-fype'>45. fype</a></li> +<li>⇢ ⇢ <a href='#46-rubyfy'>46. rubyfy</a></li> +<li>⇢ ⇢ <a href='#47-pwgrep'>47. pwgrep</a></li> +<li>⇢ ⇢ <a href='#48-perldaemon'>48. perldaemon</a></li> +<li>⇢ ⇢ <a href='#49-jsmstrade'>49. jsmstrade</a></li> +<li>⇢ ⇢ <a href='#50-japi'>50. japi</a></li> +<li>⇢ ⇢ <a href='#51-perl-poetry'>51. perl-poetry</a></li> +<li>⇢ ⇢ <a href='#52-muttdelay'>52. muttdelay</a></li> +<li>⇢ ⇢ <a href='#53-netdiff'>53. netdiff</a></li> +<li>⇢ ⇢ <a href='#54-debroid'>54. debroid</a></li> +<li>⇢ ⇢ <a href='#55-hsbot'>55. hsbot</a></li> +<li>⇢ ⇢ <a href='#56-cpuinfo'>56. cpuinfo</a></li> +<li>⇢ ⇢ <a href='#57-template'>57. template</a></li> +<li>⇢ ⇢ <a href='#58-awksite'>58. awksite</a></li> +<li>⇢ ⇢ <a href='#59-dyndns'>59. dyndns</a></li> +<li>⇢ ⇢ <a href='#60-vs-sim'>60. vs-sim</a></li> </ul><br /> <h2 style='display: inline' id='overall-statistics'>Overall Statistics</h2><br /> <br /> <ul> -<li>📦 Total Projects: 59</li> -<li>📊 Total Commits: 12,767</li> -<li>📈 Total Lines of Code: 293,318</li> -<li>📄 Total Lines of Documentation: 31,738</li> -<li>💻 Languages: Go (31.3%), Java (14.0%), C++ (7.7%), C (6.6%), HTML (6.2%), Shell (6.2%), CSS (5.9%), Perl (5.9%), C/C++ (4.9%), YAML (2.8%), Python (2.4%), Config (1.5%), JSON (1.1%), Ruby (1.0%), HCL (0.9%), Make (0.6%), Raku (0.3%), XML (0.3%), Haskell (0.2%), TOML (0.1%)</li> -<li>📚 Documentation: Markdown (62.6%), Text (35.6%), LaTeX (1.8%)</li> -<li>🚀 Release Status: 38 released, 21 experimental (64.4% with releases, 35.6% experimental)</li> +<li>📦 Total Projects: 60</li> +<li>📊 Total Commits: 13,066</li> +<li>📈 Total Lines of Code: 320,071</li> +<li>📄 Total Lines of Documentation: 31,896</li> +<li>💻 Languages: Go (29.6%), Java (12.8%), C++ (7.9%), C (6.0%), XML (6.0%), Shell (5.8%), CSS (5.6%), Perl (5.4%), C/C++ (5.1%), YAML (4.7%), HTML (3.3%), Python (2.2%), Config (1.3%), JSON (1.1%), Ruby (0.9%), HCL (0.9%), Make (0.6%), Raku (0.3%), Haskell (0.2%), JavaScript (0.2%)</li> +<li>📚 Documentation: Markdown (62.5%), Text (35.7%), LaTeX (1.8%)</li> +<li>🚀 Release Status: 38 released, 22 experimental (63.3% with releases, 36.7% experimental)</li> </ul><br /> <h2 style='display: inline' id='projects'>Projects</h2><br /> <br /> -<h3 style='display: inline' id='1-conf'>1. conf</h3><br /> +<h3 style='display: inline' id='1-epimetheus'>1. epimetheus</h3><br /> <br /> <ul> -<li>💻 Languages: YAML (55.0%), Shell (18.0%), Perl (13.5%), Python (3.1%), Config (2.4%), CSS (2.3%), TOML (2.1%), Ruby (1.8%), Docker (0.9%), Lua (0.5%), JSON (0.2%), HTML (0.2%)</li> -<li>📚 Documentation: Markdown (96.1%), Text (3.9%)</li> -<li>📊 Commits: 2167</li> -<li>📈 Lines of Code: 14113</li> -<li>📄 Lines of Documentation: 4886</li> -<li>📅 Development Period: 2021-12-28 to 2026-01-23</li> -<li>🏆 Score: 622.2 (combines code size and activity)</li> +<li>💻 Languages: Go (83.4%), Shell (16.6%)</li> +<li>📚 Documentation: Markdown (100.0%)</li> +<li>📊 Commits: 1</li> +<li>📈 Lines of Code: 4844</li> +<li>📄 Lines of Documentation: 1064</li> +<li>📅 Development Period: 2026-02-07 to 2026-02-07</li> +<li>🏆 Score: 3019.2 (combines code size and activity)</li> +<li>⚖️ License: No license found</li> +<li>🧪 Status: Experimental (no releases yet)</li> +</ul><br /> +<br /> +<a href='showcase/epimetheus/image-1.png'><img alt='epimetheus screenshot' title='epimetheus screenshot' src='showcase/epimetheus/image-1.png' /></a><br /> +<br /> +<span>**Epimetheus** is a Go tool for pushing metrics to Prometheus that uniquely supports both realtime and historic data ingestion. Named after Prometheus's brother (meaning "afterthought"), it solves the common problem of getting metrics into Prometheus *after* they were collected—whether from hours, days, or weeks ago. It offers four operating modes: realtime (via Pushgateway), historic (single past datapoint via Remote Write API), backfill (range of historic data), and auto (intelligent routing based on timestamp age).</span><br /> +<br /> +<span>The architecture routes current data (<5 min old) through Pushgateway where Prometheus scrapes it, while historic data goes directly to Prometheus via the Remote Write API to preserve original timestamps. It supports CSV and JSON input formats, generates realistic test metrics (counters, gauges, histograms), and includes a Grafana dashboard. The tool is built with a clean internal structure separating config, metrics generation, parsing, and ingestion concerns—making it useful for backfilling gaps, data migration, testing monitoring setups, and ad-hoc troubleshooting scenarios.</span><br /> +<br /> +<a class='textlink' href='https://codeberg.org/snonux/epimetheus'>View on Codeberg</a><br /> +<a class='textlink' href='https://github.com/snonux/epimetheus'>View on GitHub</a><br /> +<br /> +<span>---</span><br /> +<br /> +<h3 style='display: inline' id='2-conf'>2. conf</h3><br /> +<br /> +<ul> +<li>💻 Languages: YAML (68.9%), Shell (13.1%), Perl (9.0%), Python (2.0%), Config (1.6%), CSS (1.5%), TOML (1.4%), Ruby (1.2%), Docker (0.6%), Lua (0.3%), JSON (0.2%), HTML (0.1%)</li> +<li>📚 Documentation: Markdown (97.1%), Text (2.9%)</li> +<li>📊 Commits: 2305</li> +<li>📈 Lines of Code: 21210</li> +<li>📄 Lines of Documentation: 6495</li> +<li>📅 Development Period: 2021-12-28 to 2026-02-06</li> +<li>🏆 Score: 698.1 (combines code size and activity)</li> <li>⚖️ License: No license found</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> @@ -119,7 +145,51 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='2-log4jbench'>2. log4jbench</h3><br /> +<h3 style='display: inline' id='3-foozone'>3. foo.zone</h3><br /> +<br /> +<ul> +<li>💻 Languages: XML (98.7%), Shell (1.0%), Go (0.3%)</li> +<li>📚 Documentation: Text (86.2%), Markdown (13.8%)</li> +<li>📊 Commits: 3505</li> +<li>📈 Lines of Code: 18702</li> +<li>📄 Lines of Documentation: 174</li> +<li>📅 Development Period: 2021-04-29 to 2026-02-07</li> +<li>🏆 Score: 689.4 (combines code size and activity)</li> +<li>⚖️ License: No license found</li> +<li>🧪 Status: Experimental (no releases yet)</li> +</ul><br /> +<br /> +<span>foo.zone: source code repository.</span><br /> +<br /> +<a class='textlink' href='https://codeberg.org/snonux/foo.zone'>View on Codeberg</a><br /> +<a class='textlink' href='https://github.com/snonux/foo.zone'>View on GitHub</a><br /> +<br /> +<span>---</span><br /> +<br /> +<h3 style='display: inline' id='4-scifi'>4. scifi</h3><br /> +<br /> +<ul> +<li>💻 Languages: JSON (35.9%), CSS (30.6%), JavaScript (29.6%), HTML (3.8%)</li> +<li>📚 Documentation: Markdown (100.0%)</li> +<li>📊 Commits: 23</li> +<li>📈 Lines of Code: 1664</li> +<li>📄 Lines of Documentation: 853</li> +<li>📅 Development Period: 2026-01-25 to 2026-01-27</li> +<li>🏆 Score: 232.2 (combines code size and activity)</li> +<li>⚖️ License: No license found</li> +<li>🧪 Status: Experimental (no releases yet)</li> +</ul><br /> +<br /> +<span>This is a static HTML showcase for a personal sci-fi book collection (54 books). It displays books in a responsive grid with cover images, lets users filter by author, format, or free-text search, and shows plot summaries in a modal on click. The entire site works offline with no external dependencies — all covers, metadata, and summaries are bundled locally.</span><br /> +<br /> +<span>The architecture keeps content separate from presentation: book metadata lives in <span class='inlinecode'>data/books.json</span>, summaries are individual markdown files in <span class='inlinecode'>summaries/</span>, and covers are stored as local JPGs. A build step (<span class='inlinecode'>node build.js</span>) embeds the markdown summaries into the JSON file, producing a self-contained site that can be served as plain static files. The frontend (<span class='inlinecode'>js/app.js</span>) handles filtering and modal display client-side, while <span class='inlinecode'>css/styles.css</span> provides the grid layout and styling.</span><br /> +<br /> +<a class='textlink' href='https://codeberg.org/snonux/scifi'>View on Codeberg</a><br /> +<a class='textlink' href='https://github.com/snonux/scifi'>View on GitHub</a><br /> +<br /> +<span>---</span><br /> +<br /> +<h3 style='display: inline' id='5-log4jbench'>5. log4jbench</h3><br /> <br /> <ul> <li>💻 Languages: Java (78.9%), XML (21.1%)</li> @@ -128,7 +198,7 @@ <li>📈 Lines of Code: 774</li> <li>📄 Lines of Documentation: 119</li> <li>📅 Development Period: 2026-01-09 to 2026-01-09</li> -<li>🏆 Score: 184.8 (combines code size and activity)</li> +<li>🏆 Score: 96.5 (combines code size and activity)</li> <li>⚖️ License: MIT</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> @@ -142,32 +212,32 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='3-epimetheus'>3. epimetheus</h3><br /> +<h3 style='display: inline' id='6-hexai'>6. hexai</h3><br /> <br /> <ul> -<li>💻 Languages: Go (63.6%), Shell (24.3%), JSON (12.2%)</li> -<li>📚 Documentation: Markdown (98.5%), Text (1.5%)</li> -<li>📊 Commits: 16</li> -<li>📈 Lines of Code: 3869</li> -<li>📄 Lines of Documentation: 3700</li> -<li>📅 Development Period: 2025-12-30 to 2026-01-06</li> -<li>🏆 Score: 144.0 (combines code size and activity)</li> +<li>💻 Languages: Go (100.0%)</li> +<li>📚 Documentation: Markdown (100.0%)</li> +<li>📊 Commits: 259</li> +<li>📈 Lines of Code: 18422</li> +<li>📄 Lines of Documentation: 616</li> +<li>📅 Development Period: 2025-08-01 to 2026-02-06</li> +<li>🏆 Score: 57.5 (combines code size and activity)</li> <li>⚖️ License: No license found</li> -<li>🧪 Status: Experimental (no releases yet)</li> +<li>🏷️ Latest Release: v0.17.0 (2026-02-06)</li> </ul><br /> <br /> -<a href='showcase/epimetheus/image-1.png'><img alt='epimetheus screenshot' title='epimetheus screenshot' src='showcase/epimetheus/image-1.png' /></a><br /> +<a href='showcase/hexai/image-1.png'><img alt='hexai screenshot' title='hexai screenshot' src='showcase/hexai/image-1.png' /></a><br /> <br /> -<span>**Epimetheus** is a Go tool for pushing metrics to Prometheus that uniquely supports both realtime and historic data ingestion. Named after Prometheus's brother (meaning "afterthought"), it solves the common problem of getting metrics into Prometheus *after* they were collected—whether from hours, days, or weeks ago. It offers four operating modes: realtime (via Pushgateway), historic (single past datapoint via Remote Write API), backfill (range of historic data), and auto (intelligent routing based on timestamp age).</span><br /> +<span>Hexai is a Go-based AI integration tool designed primarily for the Helix editor that provides LSP (Language Server Protocol) powered AI features. It offers code auto-completion, AI-driven code actions, in-editor chat with LLMs, and a standalone CLI tool for direct LLM interaction. A standout feature is its ability to query multiple AI providers (OpenAI, OpenRouter, GitHub Copilot, Ollama) in parallel, allowing developers to compare responses side-by-side. It has enhanced capabilities for Go code understanding, such as generating unit tests from functions, while supporting other programming languages as well.</span><br /> <br /> -<span>The architecture routes current data (<5 min old) through Pushgateway where Prometheus scrapes it, while historic data goes directly to Prometheus via the Remote Write API to preserve original timestamps. It supports CSV and JSON input formats, generates realistic test metrics (counters, gauges, histograms), and includes a Grafana dashboard. The tool is built with a clean internal structure separating config, metrics generation, parsing, and ingestion concerns—making it useful for backfilling gaps, data migration, testing monitoring setups, and ad-hoc troubleshooting scenarios.</span><br /> +<span>The project is implemented as an LSP server written in Go, with a TUI component built using Bubble Tea for the tmux-based code action runner (<span class='inlinecode'>hexai-tmux-action</span>). This architecture allows it to integrate seamlessly into LSP-compatible editors, with special focus on Helix + tmux workflows. The custom prompt feature lets developers use their preferred editor to craft prompts, making it flexible for various development workflows.</span><br /> <br /> -<a class='textlink' href='https://codeberg.org/snonux/epimetheus'>View on Codeberg</a><br /> -<a class='textlink' href='https://github.com/snonux/epimetheus'>View on GitHub</a><br /> +<a class='textlink' href='https://codeberg.org/snonux/hexai'>View on Codeberg</a><br /> +<a class='textlink' href='https://github.com/snonux/hexai'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='4-perc'>4. perc</h3><br /> +<h3 style='display: inline' id='7-perc'>7. perc</h3><br /> <br /> <ul> <li>💻 Languages: Go (100.0%)</li> @@ -176,7 +246,7 @@ <li>📈 Lines of Code: 452</li> <li>📄 Lines of Documentation: 80</li> <li>📅 Development Period: 2025-11-25 to 2025-11-25</li> -<li>🏆 Score: 43.8 (combines code size and activity)</li> +<li>🏆 Score: 35.4 (combines code size and activity)</li> <li>⚖️ License: No license found</li> <li>🏷️ Latest Release: v0.1.0 (2025-11-25)</li> </ul><br /> @@ -190,43 +260,18 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='5-hexai'>5. hexai</h3><br /> +<h3 style='display: inline' id='8-yoga'>8. yoga</h3><br /> <br /> <ul> -<li>💻 Languages: Go (65.3%), HTML (34.7%)</li> +<li>💻 Languages: Go (66.1%), HTML (33.9%)</li> <li>📚 Documentation: Markdown (100.0%)</li> -<li>📊 Commits: 240</li> -<li>📈 Lines of Code: 28331</li> -<li>📄 Lines of Documentation: 562</li> -<li>📅 Development Period: 2025-08-01 to 2025-11-03</li> -<li>🏆 Score: 36.5 (combines code size and activity)</li> +<li>📊 Commits: 24</li> +<li>📈 Lines of Code: 5921</li> +<li>📄 Lines of Documentation: 83</li> +<li>📅 Development Period: 2025-10-01 to 2026-01-28</li> +<li>🏆 Score: 34.9 (combines code size and activity)</li> <li>⚖️ License: No license found</li> -<li>🏷️ Latest Release: v0.15.3 (2025-11-03)</li> -</ul><br /> -<br /> -<a href='showcase/hexai/image-1.png'><img alt='hexai screenshot' title='hexai screenshot' src='showcase/hexai/image-1.png' /></a><br /> -<br /> -<span>Hexai is a Go-based AI integration tool designed primarily for the Helix editor that provides LSP (Language Server Protocol) powered AI features. It offers code auto-completion, AI-driven code actions, in-editor chat with LLMs, and a standalone CLI tool for direct LLM interaction. A standout feature is its ability to query multiple AI providers (OpenAI, OpenRouter, GitHub Copilot, Ollama) in parallel, allowing developers to compare responses side-by-side. It has enhanced capabilities for Go code understanding, such as generating unit tests from functions, while supporting other programming languages as well.</span><br /> -<br /> -<span>The project is implemented as an LSP server written in Go, with a TUI component built using Bubble Tea for the tmux-based code action runner (<span class='inlinecode'>hexai-tmux-action</span>). This architecture allows it to integrate seamlessly into LSP-compatible editors, with special focus on Helix + tmux workflows. The custom prompt feature lets developers use their preferred editor to craft prompts, making it flexible for various development workflows.</span><br /> -<br /> -<a class='textlink' href='https://codeberg.org/snonux/hexai'>View on Codeberg</a><br /> -<a class='textlink' href='https://github.com/snonux/hexai'>View on GitHub</a><br /> -<br /> -<span>---</span><br /> -<br /> -<h3 style='display: inline' id='6-yoga'>6. yoga</h3><br /> -<br /> -<ul> -<li>💻 Languages: Go (100.0%)</li> -<li>📚 Documentation: Markdown (100.0%)</li> -<li>📊 Commits: 12</li> -<li>📈 Lines of Code: 3408</li> -<li>📄 Lines of Documentation: 82</li> -<li>📅 Development Period: 2025-10-01 to 2025-10-24</li> -<li>🏆 Score: 32.1 (combines code size and activity)</li> -<li>⚖️ License: No license found</li> -<li>🏷️ Latest Release: v0.3.0 (2025-10-24)</li> +<li>🏷️ Latest Release: v0.4.0 (2026-01-28)</li> </ul><br /> <br /> <a href='showcase/yoga/image-1.png'><img alt='yoga screenshot' title='yoga screenshot' src='showcase/yoga/image-1.png' /></a><br /> @@ -240,7 +285,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='7-totalrecall'>7. totalrecall</h3><br /> +<h3 style='display: inline' id='9-totalrecall'>9. totalrecall</h3><br /> <br /> <ul> <li>💻 Languages: Go (99.0%), Shell (0.5%), YAML (0.4%)</li> @@ -249,7 +294,7 @@ <li>📈 Lines of Code: 13129</li> <li>📄 Lines of Documentation: 377</li> <li>📅 Development Period: 2025-07-14 to 2026-01-21</li> -<li>🏆 Score: 31.8 (combines code size and activity)</li> +<li>🏆 Score: 28.6 (combines code size and activity)</li> <li>⚖️ License: MIT</li> <li>🏷️ Latest Release: v0.8.0 (2026-01-21)</li> </ul><br /> @@ -267,7 +312,32 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='8-gitsyncer'>8. gitsyncer</h3><br /> +<h3 style='display: inline' id='10-gogios'>10. gogios</h3><br /> +<br /> +<ul> +<li>💻 Languages: Go (98.7%), JSON (0.8%), YAML (0.5%)</li> +<li>📚 Documentation: Markdown (94.9%), Text (5.1%)</li> +<li>📊 Commits: 104</li> +<li>📈 Lines of Code: 3303</li> +<li>📄 Lines of Documentation: 394</li> +<li>📅 Development Period: 2023-04-17 to 2026-01-27</li> +<li>🏆 Score: 24.0 (combines code size and activity)</li> +<li>⚖️ License: Custom License</li> +<li>🏷️ Latest Release: v1.3.0 (2026-01-06)</li> +</ul><br /> +<br /> +<a href='showcase/gogios/image-1.png'><img alt='gogios screenshot' title='gogios screenshot' src='showcase/gogios/image-1.png' /></a><br /> +<br /> +<span>Gogios is a minimalistic monitoring tool written in Go for small-scale infrastructure (e.g., personal servers and VMs). It executes standard Nagios/Icinga monitoring plugins via CRON jobs, tracks state changes in a JSON file, and sends email notifications through a local MTA only when check statuses change. Unlike full-featured monitoring solutions (Nagios, Icinga, Prometheus), Gogios deliberately avoids complexity—no databases, web UIs, clustering, or contact groups—making it ideal for simple, self-hosted environments with limited monitoring needs.</span><br /> +<br /> +<span>The architecture is straightforward: JSON configuration defines checks (plugin paths, arguments, timeouts, dependencies, retries), a state directory persists check results between runs, and concurrent execution with configurable limits keeps things efficient. Key features include check dependencies (skip HTTP checks if ping fails), retry logic, stale alert detection, re-notification schedules, and support for remote checks via NRPE. A basic high-availability setup is achievable by running Gogios on two servers with staggered CRON intervals, though this results in duplicate notifications when both servers are operational—a deliberate trade-off for simplicity.</span><br /> +<br /> +<a class='textlink' href='https://codeberg.org/snonux/gogios'>View on Codeberg</a><br /> +<a class='textlink' href='https://github.com/snonux/gogios'>View on GitHub</a><br /> +<br /> +<span>---</span><br /> +<br /> +<h3 style='display: inline' id='11-gitsyncer'>11. gitsyncer</h3><br /> <br /> <ul> <li>💻 Languages: Go (92.2%), Shell (7.4%), JSON (0.4%)</li> @@ -276,7 +346,7 @@ <li>📈 Lines of Code: 10075</li> <li>📄 Lines of Documentation: 2432</li> <li>📅 Development Period: 2025-06-23 to 2025-12-31</li> -<li>🏆 Score: 23.4 (combines code size and activity)</li> +<li>🏆 Score: 21.6 (combines code size and activity)</li> <li>⚖️ License: BSD-2-Clause</li> <li>🏷️ Latest Release: v0.11.0 (2025-12-31)</li> </ul><br /> @@ -290,7 +360,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='9-foostats'>9. foostats</h3><br /> +<h3 style='display: inline' id='12-foostats'>12. foostats</h3><br /> <br /> <ul> <li>💻 Languages: Perl (100.0%)</li> @@ -299,7 +369,7 @@ <li>📈 Lines of Code: 1902</li> <li>📄 Lines of Documentation: 423</li> <li>📅 Development Period: 2023-01-02 to 2025-11-01</li> -<li>🏆 Score: 21.0 (combines code size and activity)</li> +<li>🏆 Score: 19.2 (combines code size and activity)</li> <li>⚖️ License: Custom License</li> <li>🏷️ Latest Release: v0.2.0 (2025-10-21)</li> </ul><br /> @@ -313,32 +383,34 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='10-gogios'>10. gogios</h3><br /> +<h3 style='display: inline' id='13-tasksamurai'>13. tasksamurai</h3><br /> <br /> <ul> -<li>💻 Languages: Go (98.5%), JSON (0.9%), YAML (0.6%)</li> -<li>📚 Documentation: Markdown (94.9%), Text (5.1%)</li> -<li>📊 Commits: 101</li> -<li>📈 Lines of Code: 2921</li> -<li>📄 Lines of Documentation: 394</li> -<li>📅 Development Period: 2023-04-17 to 2026-01-22</li> +<li>💻 Languages: Go (99.8%), YAML (0.2%)</li> +<li>📚 Documentation: Markdown (100.0%)</li> +<li>📊 Commits: 222</li> +<li>📈 Lines of Code: 6544</li> +<li>📄 Lines of Documentation: 254</li> +<li>📅 Development Period: 2025-06-19 to 2026-02-04</li> <li>🏆 Score: 19.1 (combines code size and activity)</li> -<li>⚖️ License: Custom License</li> -<li>🏷️ Latest Release: v1.3.0 (2026-01-06)</li> +<li>⚖️ License: BSD-2-Clause</li> +<li>🏷️ Latest Release: v0.11.0 (2026-02-04)</li> </ul><br /> <br /> -<a href='showcase/gogios/image-1.png'><img alt='gogios screenshot' title='gogios screenshot' src='showcase/gogios/image-1.png' /></a><br /> +<a href='showcase/tasksamurai/image-1.png'><img alt='tasksamurai screenshot' title='tasksamurai screenshot' src='showcase/tasksamurai/image-1.png' /></a><br /> <br /> -<span>Gogios is a minimalistic monitoring tool written in Go for small-scale infrastructure (e.g., personal servers and VMs). It executes standard Nagios/Icinga monitoring plugins via CRON jobs, tracks state changes in a JSON file, and sends email notifications through a local MTA only when check statuses change. Unlike full-featured monitoring solutions (Nagios, Icinga, Prometheus), Gogios deliberately avoids complexity—no databases, web UIs, clustering, or contact groups—making it ideal for simple, self-hosted environments with limited monitoring needs.</span><br /> +<span>**Task Samurai** is a fast, keyboard-driven terminal UI for Taskwarrior built in Go using the Bubble Tea framework. It displays your Taskwarrior tasks in an interactive table where you can manage them entirely through hotkeys—adding, starting, completing, and annotating tasks without touching the mouse. It supports all Taskwarrior filters as command-line arguments, allowing you to start with focused views like <span class='inlinecode'>tasksamurai +tag status:pending</span> or <span class='inlinecode'>tasksamurai project:work due:today</span>.</span><br /> <br /> -<span>The architecture is straightforward: JSON configuration defines checks (plugin paths, arguments, timeouts, dependencies, retries), a state directory persists check results between runs, and concurrent execution with configurable limits keeps things efficient. Key features include check dependencies (skip HTTP checks if ping fails), retry logic, stale alert detection, re-notification schedules, and support for remote checks via NRPE. A basic high-availability setup is achievable by running Gogios on two servers with staggered CRON intervals, though this results in duplicate notifications when both servers are operational—a deliberate trade-off for simplicity.</span><br /> +<a href='showcase/tasksamurai/image-2.png'><img alt='tasksamurai screenshot' title='tasksamurai screenshot' src='showcase/tasksamurai/image-2.png' /></a><br /> <br /> -<a class='textlink' href='https://codeberg.org/snonux/gogios'>View on Codeberg</a><br /> -<a class='textlink' href='https://github.com/snonux/gogios'>View on GitHub</a><br /> +<span>Under the hood, Task Samurai acts as a front-end wrapper that invokes the native <span class='inlinecode'>task</span> command to read and modify tasks, ensuring compatibility with your existing Taskwarrior setup. The UI automatically refreshes after each action to keep the table current. It was created as an experiment in agentic coding and as a faster alternative to Python-based tools like vit, leveraging Go's performance and the Bubble Tea framework's efficient terminal rendering. The project even includes a "disco mode" flag that cycles through themes for a more playful experience.</span><br /> +<br /> +<a class='textlink' href='https://codeberg.org/snonux/tasksamurai'>View on Codeberg</a><br /> +<a class='textlink' href='https://github.com/snonux/tasksamurai'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='11-timr'>11. timr</h3><br /> +<h3 style='display: inline' id='14-timr'>14. timr</h3><br /> <br /> <ul> <li>💻 Languages: Go (96.0%), Shell (4.0%)</li> @@ -347,7 +419,7 @@ <li>📈 Lines of Code: 1538</li> <li>📄 Lines of Documentation: 99</li> <li>📅 Development Period: 2025-06-25 to 2026-01-02</li> -<li>🏆 Score: 18.7 (combines code size and activity)</li> +<li>🏆 Score: 17.3 (combines code size and activity)</li> <li>⚖️ License: MIT</li> <li>🏷️ Latest Release: v0.3.0 (2026-01-02)</li> </ul><br /> @@ -361,34 +433,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='12-tasksamurai'>12. tasksamurai</h3><br /> -<br /> -<ul> -<li>💻 Languages: Go (99.8%), YAML (0.2%)</li> -<li>📚 Documentation: Markdown (100.0%)</li> -<li>📊 Commits: 218</li> -<li>📈 Lines of Code: 6168</li> -<li>📄 Lines of Documentation: 164</li> -<li>📅 Development Period: 2025-06-19 to 2025-11-02</li> -<li>🏆 Score: 18.3 (combines code size and activity)</li> -<li>⚖️ License: BSD-2-Clause</li> -<li>🏷️ Latest Release: v0.9.3 (2025-10-05)</li> -</ul><br /> -<br /> -<a href='showcase/tasksamurai/image-1.png'><img alt='tasksamurai screenshot' title='tasksamurai screenshot' src='showcase/tasksamurai/image-1.png' /></a><br /> -<br /> -<span>**Task Samurai** is a fast, keyboard-driven terminal UI for Taskwarrior built in Go using the Bubble Tea framework. It displays your Taskwarrior tasks in an interactive table where you can manage them entirely through hotkeys—adding, starting, completing, and annotating tasks without touching the mouse. It supports all Taskwarrior filters as command-line arguments, allowing you to start with focused views like <span class='inlinecode'>tasksamurai +tag status:pending</span> or <span class='inlinecode'>tasksamurai project:work due:today</span>.</span><br /> -<br /> -<a href='showcase/tasksamurai/image-2.png'><img alt='tasksamurai screenshot' title='tasksamurai screenshot' src='showcase/tasksamurai/image-2.png' /></a><br /> -<br /> -<span>Under the hood, Task Samurai acts as a front-end wrapper that invokes the native <span class='inlinecode'>task</span> command to read and modify tasks, ensuring compatibility with your existing Taskwarrior setup. The UI automatically refreshes after each action to keep the table current. It was created as an experiment in agentic coding and as a faster alternative to Python-based tools like vit, leveraging Go's performance and the Bubble Tea framework's efficient terminal rendering. The project even includes a "disco mode" flag that cycles through themes for a more playful experience.</span><br /> -<br /> -<a class='textlink' href='https://codeberg.org/snonux/tasksamurai'>View on Codeberg</a><br /> -<a class='textlink' href='https://github.com/snonux/tasksamurai'>View on GitHub</a><br /> -<br /> -<span>---</span><br /> -<br /> -<h3 style='display: inline' id='13-ior'>13. ior</h3><br /> +<h3 style='display: inline' id='15-ior'>15. ior</h3><br /> <br /> <ul> <li>💻 Languages: Go (50.4%), C (43.1%), Raku (4.5%), Make (1.1%), C/C++ (1.0%)</li> @@ -397,7 +442,7 @@ <li>📈 Lines of Code: 13072</li> <li>📄 Lines of Documentation: 680</li> <li>📅 Development Period: 2024-01-18 to 2025-10-09</li> -<li>🏆 Score: 18.3 (combines code size and activity)</li> +<li>🏆 Score: 17.2 (combines code size and activity)</li> <li>⚖️ License: No license found</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> @@ -415,16 +460,16 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='14-dtail'>14. dtail</h3><br /> +<h3 style='display: inline' id='16-dtail'>16. dtail</h3><br /> <br /> <ul> <li>💻 Languages: Go (93.9%), JSON (2.8%), C (2.0%), Make (0.5%), C/C++ (0.3%), Config (0.2%), Shell (0.2%), Docker (0.1%)</li> <li>📚 Documentation: Text (79.4%), Markdown (20.6%)</li> -<li>📊 Commits: 1050</li> +<li>📊 Commits: 1054</li> <li>📈 Lines of Code: 20091</li> <li>📄 Lines of Documentation: 5674</li> <li>📅 Development Period: 2020-01-09 to 2025-06-20</li> -<li>🏆 Score: 17.0 (combines code size and activity)</li> +<li>🏆 Score: 16.1 (combines code size and activity)</li> <li>⚖️ License: Apache-2.0</li> <li>🏷️ Latest Release: v4.3.3 (2024-08-23)</li> </ul><br /> @@ -442,18 +487,18 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='15-gos'>15. gos</h3><br /> +<h3 style='display: inline' id='17-gos'>17. gos</h3><br /> <br /> <ul> <li>💻 Languages: Go (99.8%), JSON (0.2%)</li> <li>📚 Documentation: Markdown (100.0%)</li> -<li>📊 Commits: 398</li> +<li>📊 Commits: 399</li> <li>📈 Lines of Code: 4102</li> <li>📄 Lines of Documentation: 357</li> <li>📅 Development Period: 2024-05-04 to 2025-12-27</li> -<li>🏆 Score: 16.4 (combines code size and activity)</li> +<li>🏆 Score: 15.4 (combines code size and activity)</li> <li>⚖️ License: Custom License</li> -<li>🏷️ Latest Release: v1.2.2 (2025-12-27)</li> +<li>🏷️ Latest Release: v1.2.3 (2026-01-31)</li> </ul><br /> <br /> <a href='showcase/gos/image-1.png'><img alt='gos screenshot' title='gos screenshot' src='showcase/gos/image-1.png' /></a><br /> @@ -469,7 +514,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='16-ds-sim'>16. ds-sim</h3><br /> +<h3 style='display: inline' id='18-ds-sim'>18. ds-sim</h3><br /> <br /> <ul> <li>💻 Languages: Java (98.9%), Shell (0.6%), CSS (0.5%)</li> @@ -478,7 +523,7 @@ <li>📈 Lines of Code: 25762</li> <li>📄 Lines of Documentation: 3101</li> <li>📅 Development Period: 2008-05-15 to 2025-06-27</li> -<li>🏆 Score: 15.5 (combines code size and activity)</li> +<li>🏆 Score: 14.7 (combines code size and activity)</li> <li>⚖️ License: Custom License</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> @@ -494,7 +539,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='17-gemtexter'>17. gemtexter</h3><br /> +<h3 style='display: inline' id='19-gemtexter'>19. gemtexter</h3><br /> <br /> <ul> <li>💻 Languages: CSS (55.3%), Python (16.1%), HTML (15.3%), JSON (6.6%), Shell (5.3%), Config (1.5%)</li> @@ -503,7 +548,7 @@ <li>📈 Lines of Code: 30319</li> <li>📄 Lines of Documentation: 1280</li> <li>📅 Development Period: 2021-05-21 to 2025-06-22</li> -<li>🏆 Score: 11.1 (combines code size and activity)</li> +<li>🏆 Score: 10.8 (combines code size and activity)</li> <li>⚖️ License: GPL-3.0</li> <li>🏷️ Latest Release: 3.0.0 (2024-10-01)</li> </ul><br /> @@ -517,7 +562,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='18-wireguardmeshgenerator'>18. wireguardmeshgenerator</h3><br /> +<h3 style='display: inline' id='20-wireguardmeshgenerator'>20. wireguardmeshgenerator</h3><br /> <br /> <ul> <li>💻 Languages: Ruby (65.4%), YAML (34.6%)</li> @@ -526,7 +571,7 @@ <li>📈 Lines of Code: 563</li> <li>📄 Lines of Documentation: 24</li> <li>📅 Development Period: 2025-04-18 to 2026-01-20</li> -<li>🏆 Score: 11.0 (combines code size and activity)</li> +<li>🏆 Score: 10.4 (combines code size and activity)</li> <li>⚖️ License: Custom License</li> <li>🏷️ Latest Release: v1.0.0 (2025-05-11)</li> </ul><br /> @@ -540,7 +585,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='19-rcm'>19. rcm</h3><br /> +<h3 style='display: inline' id='21-rcm'>21. rcm</h3><br /> <br /> <ul> <li>💻 Languages: Ruby (99.8%), TOML (0.2%)</li> @@ -549,7 +594,7 @@ <li>📈 Lines of Code: 1377</li> <li>📄 Lines of Documentation: 113</li> <li>📅 Development Period: 2024-12-05 to 2025-11-26</li> -<li>🏆 Score: 9.5 (combines code size and activity)</li> +<li>🏆 Score: 9.1 (combines code size and activity)</li> <li>⚖️ License: Custom License</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> @@ -563,7 +608,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='20-terraform'>20. terraform</h3><br /> +<h3 style='display: inline' id='22-terraform'>22. terraform</h3><br /> <br /> <ul> <li>💻 Languages: HCL (96.6%), Make (1.9%), YAML (1.5%)</li> @@ -572,7 +617,7 @@ <li>📈 Lines of Code: 2851</li> <li>📄 Lines of Documentation: 52</li> <li>📅 Development Period: 2023-08-27 to 2025-08-08</li> -<li>🏆 Score: 5.1 (combines code size and activity)</li> +<li>🏆 Score: 5.0 (combines code size and activity)</li> <li>⚖️ License: MIT</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> @@ -586,30 +631,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='21-sillybench'>21. sillybench</h3><br /> -<br /> -<ul> -<li>💻 Languages: Go (90.9%), Shell (9.1%)</li> -<li>📚 Documentation: Markdown (100.0%)</li> -<li>📊 Commits: 5</li> -<li>📈 Lines of Code: 33</li> -<li>📄 Lines of Documentation: 3</li> -<li>📅 Development Period: 2025-04-03 to 2025-04-03</li> -<li>🏆 Score: 5.1 (combines code size and activity)</li> -<li>⚖️ License: No license found</li> -<li>🧪 Status: Experimental (no releases yet)</li> -</ul><br /> -<br /> -<span>**Silly Benchmark** is a minimal Go-based performance benchmarking tool designed to compare CPU performance between FreeBSD and Linux Bhyve VM environments. It provides two simple CPU-intensive benchmark tests: one that performs repeated integer multiplication operations (<span class='inlinecode'>BenchmarkCPUSilly1</span>) and another that executes floating-point arithmetic sequences including addition, multiplication, and division (<span class='inlinecode'>BenchmarkCPUSilly2</span>).</span><br /> -<br /> -<span>The implementation is intentionally straightforward, using Go's built-in testing framework to run computational workloads that stress different aspects of CPU performance. The benchmarks avoid being optimized away by the compiler while remaining simple enough to produce consistent, comparable results across different operating systems and virtualization platforms. This makes it useful for quick performance comparisons when evaluating the overhead of virtualization or differences in OS scheduling and computation.</span><br /> -<br /> -<a class='textlink' href='https://codeberg.org/snonux/sillybench'>View on Codeberg</a><br /> -<a class='textlink' href='https://github.com/snonux/sillybench'>View on GitHub</a><br /> -<br /> -<span>---</span><br /> -<br /> -<h3 style='display: inline' id='22-quicklogger'>22. quicklogger</h3><br /> +<h3 style='display: inline' id='23-quicklogger'>23. quicklogger</h3><br /> <br /> <ul> <li>💻 Languages: Go (96.1%), XML (1.9%), Shell (1.2%), TOML (0.7%)</li> @@ -618,7 +640,7 @@ <li>📈 Lines of Code: 1133</li> <li>📄 Lines of Documentation: 78</li> <li>📅 Development Period: 2024-01-20 to 2025-09-13</li> -<li>🏆 Score: 5.1 (combines code size and activity)</li> +<li>🏆 Score: 4.9 (combines code size and activity)</li> <li>⚖️ License: MIT</li> <li>🏷️ Latest Release: v0.0.4 (2025-09-13)</li> </ul><br /> @@ -636,7 +658,30 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='23-gorum'>23. gorum</h3><br /> +<h3 style='display: inline' id='24-sillybench'>24. sillybench</h3><br /> +<br /> +<ul> +<li>💻 Languages: Go (90.9%), Shell (9.1%)</li> +<li>📚 Documentation: Markdown (100.0%)</li> +<li>📊 Commits: 5</li> +<li>📈 Lines of Code: 33</li> +<li>📄 Lines of Documentation: 3</li> +<li>📅 Development Period: 2025-04-03 to 2025-04-03</li> +<li>🏆 Score: 4.9 (combines code size and activity)</li> +<li>⚖️ License: No license found</li> +<li>🧪 Status: Experimental (no releases yet)</li> +</ul><br /> +<br /> +<span>**Silly Benchmark** is a minimal Go-based performance benchmarking tool designed to compare CPU performance between FreeBSD and Linux Bhyve VM environments. It provides two simple CPU-intensive benchmark tests: one that performs repeated integer multiplication operations (<span class='inlinecode'>BenchmarkCPUSilly1</span>) and another that executes floating-point arithmetic sequences including addition, multiplication, and division (<span class='inlinecode'>BenchmarkCPUSilly2</span>).</span><br /> +<br /> +<span>The implementation is intentionally straightforward, using Go's built-in testing framework to run computational workloads that stress different aspects of CPU performance. The benchmarks avoid being optimized away by the compiler while remaining simple enough to produce consistent, comparable results across different operating systems and virtualization platforms. This makes it useful for quick performance comparisons when evaluating the overhead of virtualization or differences in OS scheduling and computation.</span><br /> +<br /> +<a class='textlink' href='https://codeberg.org/snonux/sillybench'>View on Codeberg</a><br /> +<a class='textlink' href='https://github.com/snonux/sillybench'>View on GitHub</a><br /> +<br /> +<span>---</span><br /> +<br /> +<h3 style='display: inline' id='25-gorum'>25. gorum</h3><br /> <br /> <ul> <li>💻 Languages: Go (91.3%), JSON (6.4%), YAML (2.3%)</li> @@ -660,16 +705,16 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='24-guprecords'>24. guprecords</h3><br /> +<h3 style='display: inline' id='26-guprecords'>26. guprecords</h3><br /> <br /> <ul> <li>💻 Languages: Raku (100.0%)</li> <li>📚 Documentation: Markdown (100.0%)</li> -<li>📊 Commits: 95</li> -<li>📈 Lines of Code: 312</li> -<li>📄 Lines of Documentation: 416</li> -<li>📅 Development Period: 2013-03-22 to 2025-05-18</li> -<li>🏆 Score: 2.6 (combines code size and activity)</li> +<li>📊 Commits: 96</li> +<li>📈 Lines of Code: 383</li> +<li>📄 Lines of Documentation: 423</li> +<li>📅 Development Period: 2013-03-22 to 2026-02-07</li> +<li>🏆 Score: 2.7 (combines code size and activity)</li> <li>⚖️ License: No license found</li> <li>🏷️ Latest Release: v1.0.0 (2023-04-29)</li> </ul><br /> @@ -683,7 +728,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='25-docker-radicale-server'>25. docker-radicale-server</h3><br /> +<h3 style='display: inline' id='27-docker-radicale-server'>27. docker-radicale-server</h3><br /> <br /> <ul> <li>💻 Languages: Make (57.5%), Docker (42.5%)</li> @@ -706,7 +751,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='26-geheim'>26. geheim</h3><br /> +<h3 style='display: inline' id='28-geheim'>28. geheim</h3><br /> <br /> <ul> <li>💻 Languages: Ruby (86.7%), Shell (13.3%)</li> @@ -715,7 +760,7 @@ <li>📈 Lines of Code: 822</li> <li>📄 Lines of Documentation: 106</li> <li>📅 Development Period: 2018-05-26 to 2025-11-01</li> -<li>🏆 Score: 2.5 (combines code size and activity)</li> +<li>🏆 Score: 2.4 (combines code size and activity)</li> <li>⚖️ License: No license found</li> <li>🏷️ Latest Release: v0.3.1 (2025-11-01)</li> </ul><br /> @@ -729,7 +774,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='27-algorithms'>27. algorithms</h3><br /> +<h3 style='display: inline' id='29-algorithms'>29. algorithms</h3><br /> <br /> <ul> <li>💻 Languages: Go (99.2%), Make (0.8%)</li> @@ -753,7 +798,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='28-randomjournalpage'>28. randomjournalpage</h3><br /> +<h3 style='display: inline' id='30-randomjournalpage'>30. randomjournalpage</h3><br /> <br /> <ul> <li>💻 Languages: Shell (94.1%), Make (5.9%)</li> @@ -762,7 +807,7 @@ <li>📈 Lines of Code: 51</li> <li>📄 Lines of Documentation: 26</li> <li>📅 Development Period: 2022-06-02 to 2024-04-20</li> -<li>🏆 Score: 1.8 (combines code size and activity)</li> +<li>🏆 Score: 1.7 (combines code size and activity)</li> <li>⚖️ License: No license found</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> @@ -777,7 +822,31 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='29-ioriot'>29. ioriot</h3><br /> +<h3 style='display: inline' id='31-photoalbum'>31. photoalbum</h3><br /> +<br /> +<ul> +<li>💻 Languages: Shell (80.1%), Make (12.3%), Config (7.6%)</li> +<li>📚 Documentation: Markdown (100.0%)</li> +<li>📊 Commits: 153</li> +<li>📈 Lines of Code: 342</li> +<li>📄 Lines of Documentation: 39</li> +<li>📅 Development Period: 2011-11-19 to 2022-04-02</li> +<li>🏆 Score: 1.7 (combines code size and activity)</li> +<li>⚖️ License: No license found</li> +<li>🏷️ Latest Release: 0.5.0 (2022-02-21)</li> +</ul><br /> +<span>⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.</span><br /> +<br /> +<span>**photoalbum** is a minimal Bash-based static site generator specifically designed for creating web photo albums on Unix-like systems. It transforms a directory of photos into a pure HTML+CSS website without any JavaScript, making it lightweight, fast, and accessible. The tool uses ImageMagick's <span class='inlinecode'>convert</span> utility for image processing and employs Bash-HTML template files that users can customize to match their preferences.</span><br /> +<br /> +<span>The architecture is straightforward and Unix-philosophy driven: users configure a source directory containing photos via an <span class='inlinecode'>photoalbumrc</span> configuration file, run the generation command, and receive a fully static <span class='inlinecode'>./dist</span> directory ready for deployment to any web server. This approach is useful for users who want a simple, dependency-light solution for sharing photo collections online without the overhead of dynamic web applications, databases, or JavaScript frameworks—just clean, static HTML that works everywhere.</span><br /> +<br /> +<a class='textlink' href='https://codeberg.org/snonux/photoalbum'>View on Codeberg</a><br /> +<a class='textlink' href='https://github.com/snonux/photoalbum'>View on GitHub</a><br /> +<br /> +<span>---</span><br /> +<br /> +<h3 style='display: inline' id='32-ioriot'>32. ioriot</h3><br /> <br /> <ul> <li>💻 Languages: C (55.5%), C/C++ (24.0%), Config (19.6%), Make (1.0%)</li> @@ -803,7 +872,30 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='30-sway-autorotate'>30. sway-autorotate</h3><br /> +<h3 style='display: inline' id='33-ipv6test'>33. ipv6test</h3><br /> +<br /> +<ul> +<li>💻 Languages: Perl (65.8%), Docker (34.2%)</li> +<li>📚 Documentation: Markdown (100.0%)</li> +<li>📊 Commits: 19</li> +<li>📈 Lines of Code: 149</li> +<li>📄 Lines of Documentation: 15</li> +<li>📅 Development Period: 2011-07-09 to 2026-02-03</li> +<li>🏆 Score: 1.3 (combines code size and activity)</li> +<li>⚖️ License: Custom License</li> +<li>🧪 Status: Experimental (no releases yet)</li> +</ul><br /> +<br /> +<span>This is a Perl-based IPv6 connectivity testing website that helps users determine whether they're connecting via IPv4 or IPv6. The tool is useful for diagnosing IPv6 deployment issues—it can identify problems like missing DNS records (A/AAAA), lack of network paths, or systems incorrectly preferring IPv4 over IPv6.</span><br /> +<br /> +<span>The implementation uses a simple CGI script ([index.pl](file:///home/paul/git/gitsyncer-workdir/ipv6test/index.pl)) that checks the <span class='inlinecode'>REMOTE_ADDR</span> environment variable to detect the client's connection protocol (by regex-matching IPv4 dotted notation). It requires three hostnames: a dual-stack host (ipv6.buetow.org), an IPv4-only host (test4.ipv6.buetow.org), and an IPv6-only host (test6.ipv6.buetow.org). The script performs DNS lookups using <span class='inlinecode'>host</span> and <span class='inlinecode'>dig</span> commands to display detailed diagnostic information about both client and server addresses.</span><br /> +<br /> +<a class='textlink' href='https://codeberg.org/snonux/ipv6test'>View on Codeberg</a><br /> +<a class='textlink' href='https://github.com/snonux/ipv6test'>View on GitHub</a><br /> +<br /> +<span>---</span><br /> +<br /> +<h3 style='display: inline' id='34-sway-autorotate'>34. sway-autorotate</h3><br /> <br /> <ul> <li>💻 Languages: Shell (100.0%)</li> @@ -826,7 +918,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='31-mon'>31. mon</h3><br /> +<h3 style='display: inline' id='35-mon'>35. mon</h3><br /> <br /> <ul> <li>💻 Languages: Perl (96.5%), Shell (1.8%), Make (1.2%), Config (0.4%)</li> @@ -850,7 +942,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='32-staticfarm-apache-handlers'>32. staticfarm-apache-handlers</h3><br /> +<h3 style='display: inline' id='36-staticfarm-apache-handlers'>36. staticfarm-apache-handlers</h3><br /> <br /> <ul> <li>💻 Languages: Perl (96.4%), Make (3.6%)</li> @@ -874,7 +966,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='33-pingdomfetch'>33. pingdomfetch</h3><br /> +<h3 style='display: inline' id='37-pingdomfetch'>37. pingdomfetch</h3><br /> <br /> <ul> <li>💻 Languages: Perl (97.3%), Make (2.7%)</li> @@ -898,7 +990,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='34-xerl'>34. xerl</h3><br /> +<h3 style='display: inline' id='38-xerl'>38. xerl</h3><br /> <br /> <ul> <li>💻 Languages: Perl (98.3%), Config (1.2%), Make (0.5%)</li> @@ -920,78 +1012,54 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='35-fapi'>35. fapi</h3><br /> +<h3 style='display: inline' id='39-ychat'>39. ychat</h3><br /> <br /> <ul> -<li>💻 Languages: Python (96.6%), Make (3.1%), Config (0.3%)</li> -<li>📚 Documentation: Text (98.3%), Markdown (1.7%)</li> -<li>📊 Commits: 221</li> -<li>📈 Lines of Code: 1681</li> -<li>📄 Lines of Documentation: 539</li> -<li>📅 Development Period: 2014-03-10 to 2026-01-10</li> -<li>🏆 Score: 0.8 (combines code size and activity)</li> -<li>⚖️ License: No license found</li> -<li>🏷️ Latest Release: 1.0.2 (2014-11-17)</li> -</ul><br /> -<br /> -<span>fapi is a command-line tool for managing F5 BigIP load balancers through the iControl API. It provides a simple, human-friendly interface for common load balancer operations including managing nodes, pools, virtual servers, monitors, and network components like VLANs and self IPs. The tool supports various deployment patterns including nPath services, NAT/SNAT configurations, and SSL offloading, while offering intelligent features like automatic FQDN-to-IP resolution and flexible naming conventions.</span><br /> -<br /> -<span>The tool is implemented in Python and depends on the bigsuds library (F5's iControl wrapper) to communicate with the F5 API. It's designed as a lightweight alternative to the web GUI or raw API calls, with a straightforward command syntax (e.g., <span class='inlinecode'>fapi pool foopool create</span>, <span class='inlinecode'>fapi vserver example.com:80 set pool foopool</span>) that makes common tasks quick and scriptable. The project is open source and hosted on Codeberg, originally developed as a personal project for Debian-based systems.</span><br /> -<br /> -<a class='textlink' href='https://codeberg.org/snonux/fapi'>View on Codeberg</a><br /> -<a class='textlink' href='https://github.com/snonux/fapi'>View on GitHub</a><br /> -<br /> -<span>---</span><br /> -<br /> -<h3 style='display: inline' id='36-photoalbum'>36. photoalbum</h3><br /> -<br /> -<ul> -<li>💻 Languages: Shell (78.1%), Make (13.5%), Config (8.4%)</li> +<li>💻 Languages: C++ (49.9%), C/C++ (22.2%), Shell (20.6%), Perl (2.5%), HTML (1.9%), Config (1.8%), Make (0.9%), CSS (0.2%)</li> <li>📚 Documentation: Text (100.0%)</li> -<li>📊 Commits: 153</li> -<li>📈 Lines of Code: 311</li> -<li>📄 Lines of Documentation: 45</li> -<li>📅 Development Period: 2011-11-19 to 2022-02-20</li> +<li>📊 Commits: 67</li> +<li>📈 Lines of Code: 50738</li> +<li>📄 Lines of Documentation: 121</li> +<li>📅 Development Period: 2008-05-15 to 2014-06-30</li> <li>🏆 Score: 0.8 (combines code size and activity)</li> -<li>⚖️ License: No license found</li> -<li>🏷️ Latest Release: 0.5.0 (2022-02-21)</li> +<li>⚖️ License: GPL-2.0</li> +<li>🏷️ Latest Release: yhttpd-0.7.2 (2013-04-06)</li> </ul><br /> <span>⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.</span><br /> <br /> -<span>**photoalbum** is a minimal Bash-based static site generator specifically designed for creating web photo albums on Unix-like systems. It transforms a directory of photos into a pure HTML+CSS website without any JavaScript, making it lightweight, fast, and accessible. The tool uses ImageMagick's <span class='inlinecode'>convert</span> utility for image processing and employs Bash-HTML template files that users can customize to match their preferences.</span><br /> +<span>yChat is a high-performance, web-based chat server written in C++ that allows users to connect through standard web browsers without requiring special client software. It functions as a standalone HTTP server on a customizable port (default 2000), eliminating the need for Apache or other web servers, and uses only HTML, CSS, and JavaScript on the client side. The project was developed under the GNU GPL and designed for portability across POSIX-compliant systems including Linux, FreeBSD, and other UNIX variants.</span><br /> <br /> -<span>The architecture is straightforward and Unix-philosophy driven: users configure a source directory containing photos via an <span class='inlinecode'>photoalbumrc</span> configuration file, run the generation command, and receive a fully static <span class='inlinecode'>./dist</span> directory ready for deployment to any web server. This approach is useful for users who want a simple, dependency-light solution for sharing photo collections online without the overhead of dynamic web applications, databases, or JavaScript frameworks—just clean, static HTML that works everywhere.</span><br /> +<span>The architecture emphasizes speed and scalability through several key design choices: multi-threaded POSIX implementation with thread pooling to efficiently handle concurrent users, hash maps for O(1) data lookups, and a smart garbage collection system that caches inactive user and room objects for quick reuse. It features MySQL database support for registered users, a modular plugin system through dynamically loadable modules, HTML template-based customization, XML configuration, and an ncurses-based administration interface with CLI support. The codebase can also be converted to yhttpd, a standalone web server subset. Performance benchmarks show it handling over 1000 requests/second while using minimal CPU resources, with the system supporting comprehensive logging, multi-language support, and Apache-compatible log formats.</span><br /> <br /> -<a class='textlink' href='https://codeberg.org/snonux/photoalbum'>View on Codeberg</a><br /> -<a class='textlink' href='https://github.com/snonux/photoalbum'>View on GitHub</a><br /> +<a class='textlink' href='https://codeberg.org/snonux/ychat'>View on Codeberg</a><br /> +<a class='textlink' href='https://github.com/snonux/ychat'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='37-ychat'>37. ychat</h3><br /> +<h3 style='display: inline' id='40-fapi'>40. fapi</h3><br /> <br /> <ul> -<li>💻 Languages: C++ (48.9%), Shell (22.7%), C/C++ (20.7%), Perl (2.5%), HTML (2.1%), Config (1.9%), Make (0.9%), CSS (0.2%)</li> -<li>📚 Documentation: Text (100.0%)</li> -<li>📊 Commits: 67</li> -<li>📈 Lines of Code: 45956</li> -<li>📄 Lines of Documentation: 101</li> -<li>📅 Development Period: 2008-05-15 to 2014-06-30</li> +<li>💻 Languages: Python (96.6%), Make (3.1%), Config (0.3%)</li> +<li>📚 Documentation: Text (98.3%), Markdown (1.7%)</li> +<li>📊 Commits: 221</li> +<li>📈 Lines of Code: 1681</li> +<li>📄 Lines of Documentation: 539</li> +<li>📅 Development Period: 2014-03-10 to 2026-01-10</li> <li>🏆 Score: 0.8 (combines code size and activity)</li> -<li>⚖️ License: GPL-2.0</li> -<li>🏷️ Latest Release: yhttpd-0.7.2 (2013-04-06)</li> +<li>⚖️ License: No license found</li> +<li>🏷️ Latest Release: 1.0.2 (2014-11-17)</li> </ul><br /> -<span>⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.</span><br /> <br /> -<span>yChat is a high-performance, web-based chat server written in C++ that allows users to connect through standard web browsers without requiring special client software. It functions as a standalone HTTP server on a customizable port (default 2000), eliminating the need for Apache or other web servers, and uses only HTML, CSS, and JavaScript on the client side. The project was developed under the GNU GPL and designed for portability across POSIX-compliant systems including Linux, FreeBSD, and other UNIX variants.</span><br /> +<span>fapi is a command-line tool for managing F5 BigIP load balancers through the iControl API. It provides a simple, human-friendly interface for common load balancer operations including managing nodes, pools, virtual servers, monitors, and network components like VLANs and self IPs. The tool supports various deployment patterns including nPath services, NAT/SNAT configurations, and SSL offloading, while offering intelligent features like automatic FQDN-to-IP resolution and flexible naming conventions.</span><br /> <br /> -<span>The architecture emphasizes speed and scalability through several key design choices: multi-threaded POSIX implementation with thread pooling to efficiently handle concurrent users, hash maps for O(1) data lookups, and a smart garbage collection system that caches inactive user and room objects for quick reuse. It features MySQL database support for registered users, a modular plugin system through dynamically loadable modules, HTML template-based customization, XML configuration, and an ncurses-based administration interface with CLI support. The codebase can also be converted to yhttpd, a standalone web server subset. Performance benchmarks show it handling over 1000 requests/second while using minimal CPU resources, with the system supporting comprehensive logging, multi-language support, and Apache-compatible log formats.</span><br /> +<span>The tool is implemented in Python and depends on the bigsuds library (F5's iControl wrapper) to communicate with the F5 API. It's designed as a lightweight alternative to the web GUI or raw API calls, with a straightforward command syntax (e.g., <span class='inlinecode'>fapi pool foopool create</span>, <span class='inlinecode'>fapi vserver example.com:80 set pool foopool</span>) that makes common tasks quick and scriptable. The project is open source and hosted on Codeberg, originally developed as a personal project for Debian-based systems.</span><br /> <br /> -<a class='textlink' href='https://codeberg.org/snonux/ychat'>View on Codeberg</a><br /> -<a class='textlink' href='https://github.com/snonux/ychat'>View on GitHub</a><br /> +<a class='textlink' href='https://codeberg.org/snonux/fapi'>View on Codeberg</a><br /> +<a class='textlink' href='https://github.com/snonux/fapi'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='38-perl-c-fibonacci'>38. perl-c-fibonacci</h3><br /> +<h3 style='display: inline' id='41-perl-c-fibonacci'>41. perl-c-fibonacci</h3><br /> <br /> <ul> <li>💻 Languages: C (80.4%), Make (19.6%)</li> @@ -1013,7 +1081,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='39-netcalendar'>39. netcalendar</h3><br /> +<h3 style='display: inline' id='42-netcalendar'>42. netcalendar</h3><br /> <br /> <ul> <li>💻 Languages: Java (83.0%), HTML (12.9%), XML (3.0%), CSS (0.8%), Make (0.2%)</li> @@ -1041,7 +1109,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='40-loadbars'>40. loadbars</h3><br /> +<h3 style='display: inline' id='43-loadbars'>43. loadbars</h3><br /> <br /> <ul> <li>💻 Languages: Perl (97.4%), Make (2.6%)</li> @@ -1063,7 +1131,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='41-gotop'>41. gotop</h3><br /> +<h3 style='display: inline' id='44-gotop'>44. gotop</h3><br /> <br /> <ul> <li>💻 Languages: Go (98.0%), Make (2.0%)</li> @@ -1087,7 +1155,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='42-fype'>42. fype</h3><br /> +<h3 style='display: inline' id='45-fype'>45. fype</h3><br /> <br /> <ul> <li>💻 Languages: C (71.1%), C/C++ (20.7%), HTML (6.6%), Make (1.5%)</li> @@ -1111,7 +1179,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='43-rubyfy'>43. rubyfy</h3><br /> +<h3 style='display: inline' id='46-rubyfy'>46. rubyfy</h3><br /> <br /> <ul> <li>💻 Languages: Ruby (98.5%), JSON (1.5%)</li> @@ -1135,7 +1203,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='44-pwgrep'>44. pwgrep</h3><br /> +<h3 style='display: inline' id='47-pwgrep'>47. pwgrep</h3><br /> <br /> <ul> <li>💻 Languages: Shell (85.0%), Make (15.0%)</li> @@ -1159,7 +1227,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='45-perldaemon'>45. perldaemon</h3><br /> +<h3 style='display: inline' id='48-perldaemon'>48. perldaemon</h3><br /> <br /> <ul> <li>💻 Languages: Perl (72.3%), Shell (23.8%), Config (3.9%)</li> @@ -1181,7 +1249,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='46-jsmstrade'>46. jsmstrade</h3><br /> +<h3 style='display: inline' id='49-jsmstrade'>49. jsmstrade</h3><br /> <br /> <ul> <li>💻 Languages: Java (76.0%), Shell (15.4%), XML (8.6%)</li> @@ -1207,7 +1275,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='47-japi'>47. japi</h3><br /> +<h3 style='display: inline' id='50-japi'>50. japi</h3><br /> <br /> <ul> <li>💻 Languages: Perl (78.3%), Make (21.7%)</li> @@ -1231,7 +1299,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='48-perl-poetry'>48. perl-poetry</h3><br /> +<h3 style='display: inline' id='51-perl-poetry'>51. perl-poetry</h3><br /> <br /> <ul> <li>💻 Languages: Perl (100.0%)</li> @@ -1255,7 +1323,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='49-muttdelay'>49. muttdelay</h3><br /> +<h3 style='display: inline' id='52-muttdelay'>52. muttdelay</h3><br /> <br /> <ul> <li>💻 Languages: Make (47.1%), Shell (46.3%), Vim Script (5.9%), Config (0.7%)</li> @@ -1279,7 +1347,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='50-netdiff'>50. netdiff</h3><br /> +<h3 style='display: inline' id='53-netdiff'>53. netdiff</h3><br /> <br /> <ul> <li>💻 Languages: Shell (52.2%), Make (46.3%), Config (1.5%)</li> @@ -1303,7 +1371,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='51-debroid'>51. debroid</h3><br /> +<h3 style='display: inline' id='54-debroid'>54. debroid</h3><br /> <br /> <ul> <li>💻 Languages: Shell (92.0%), Make (8.0%)</li> @@ -1329,7 +1397,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='52-hsbot'>52. hsbot</h3><br /> +<h3 style='display: inline' id='55-hsbot'>55. hsbot</h3><br /> <br /> <ul> <li>💻 Languages: Haskell (98.5%), Make (1.5%)</li> @@ -1351,7 +1419,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='53-cpuinfo'>53. cpuinfo</h3><br /> +<h3 style='display: inline' id='56-cpuinfo'>56. cpuinfo</h3><br /> <br /> <ul> <li>💻 Languages: Shell (53.2%), Make (46.8%)</li> @@ -1375,7 +1443,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='54-template'>54. template</h3><br /> +<h3 style='display: inline' id='57-template'>57. template</h3><br /> <br /> <ul> <li>💻 Languages: Make (89.2%), Shell (10.8%)</li> @@ -1399,29 +1467,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='55-ipv6test'>55. ipv6test</h3><br /> -<br /> -<ul> -<li>💻 Languages: Perl (100.0%)</li> -<li>📊 Commits: 7</li> -<li>📈 Lines of Code: 80</li> -<li>📅 Development Period: 2011-07-09 to 2015-01-13</li> -<li>🏆 Score: 0.4 (combines code size and activity)</li> -<li>⚖️ License: Custom License</li> -<li>🧪 Status: Experimental (no releases yet)</li> -</ul><br /> -<span>⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.</span><br /> -<br /> -<span>This is a Perl-based IPv6 connectivity testing website that helps users determine whether they're connecting via IPv4 or IPv6. The tool is useful for diagnosing IPv6 deployment issues—it can identify problems like missing DNS records (A/AAAA), lack of network paths, or systems incorrectly preferring IPv4 over IPv6.</span><br /> -<br /> -<span>The implementation uses a simple CGI script ([index.pl](file:///home/paul/git/gitsyncer-workdir/ipv6test/index.pl)) that checks the <span class='inlinecode'>REMOTE_ADDR</span> environment variable to detect the client's connection protocol (by regex-matching IPv4 dotted notation). It requires three hostnames: a dual-stack host (ipv6.buetow.org), an IPv4-only host (test4.ipv6.buetow.org), and an IPv6-only host (test6.ipv6.buetow.org). The script performs DNS lookups using <span class='inlinecode'>host</span> and <span class='inlinecode'>dig</span> commands to display detailed diagnostic information about both client and server addresses.</span><br /> -<br /> -<a class='textlink' href='https://codeberg.org/snonux/ipv6test'>View on Codeberg</a><br /> -<a class='textlink' href='https://github.com/snonux/ipv6test'>View on GitHub</a><br /> -<br /> -<span>---</span><br /> -<br /> -<h3 style='display: inline' id='56-awksite'>56. awksite</h3><br /> +<h3 style='display: inline' id='58-awksite'>58. awksite</h3><br /> <br /> <ul> <li>💻 Languages: AWK (72.1%), HTML (16.4%), Config (11.5%)</li> @@ -1445,7 +1491,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='57-dyndns'>57. dyndns</h3><br /> +<h3 style='display: inline' id='59-dyndns'>59. dyndns</h3><br /> <br /> <ul> <li>💻 Languages: Shell (100.0%)</li> @@ -1469,7 +1515,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='58-vs-sim'>58. vs-sim</h3><br /> +<h3 style='display: inline' id='60-vs-sim'>60. vs-sim</h3><br /> <br /> <ul> <li>📚 Documentation: Markdown (100.0%)</li> @@ -1489,27 +1535,6 @@ <br /> <a class='textlink' href='https://codeberg.org/snonux/vs-sim'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/vs-sim'>View on GitHub</a><br /> -<br /> -<span>---</span><br /> -<br /> -<h3 style='display: inline' id='59-foozone'>59. foo.zone</h3><br /> -<br /> -<ul> -<li>📚 Documentation: Markdown (100.0%)</li> -<li>📊 Commits: 3408</li> -<li>📈 Lines of Code: 0</li> -<li>📄 Lines of Documentation: 23</li> -<li>📅 Development Period: 2021-05-21 to 2022-04-02</li> -<li>🏆 Score: 0.0 (combines code size and activity)</li> -<li>⚖️ License: No license found</li> -<li>🧪 Status: Experimental (no releases yet)</li> -</ul><br /> -<span>⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.</span><br /> -<br /> -<span>foo.zone: source code repository.</span><br /> -<br /> -<a class='textlink' href='https://codeberg.org/snonux/foo.zone'>View on Codeberg</a><br /> -<a class='textlink' href='https://github.com/snonux/foo.zone'>View on GitHub</a><br /> <p class="footer"> Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> | served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> | diff --git a/about/showcase/debroid/image-1.png b/about/showcase/debroid/image-1.png index 98cbc5b6..1a16cd4f 100644 --- a/about/showcase/debroid/image-1.png +++ b/about/showcase/debroid/image-1.png @@ -27,12 +27,12 @@ <link rel="preconnect" href="https://github.githubassets.com" crossorigin> <link rel="preconnect" href="https://avatars.githubusercontent.com"> - <link crossorigin="anonymous" rel="preload" as="script" href="https://github.githubassets.com/assets/global-banner-disable-54e442fb573b.js" /> + <link crossorigin="anonymous" rel="preload" as="script" href="https://github.githubassets.com/assets/global-banner-disable-e20dfdd68b9b271b.js" /> <link rel="preload" href="https://github.githubassets.com/assets/mona-sans-14595085164a.woff2" as="font" type="font/woff2" crossorigin> - <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light-dac525bbd821.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light_high_contrast-56ccf4057897.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark-784387e86ac0.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark_high_contrast-79bd5fd84a86.css" /><link data-color-theme="light" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light-dac525bbd821.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-56ccf4057897.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-0e24752a7d2b.css" /><link data-color-theme="light_colorblind_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind_high_contrast-412af2517363.css" /><link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia-6186e83663dc.css" /><link data-color-theme="light_tritanopia_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia_high_contrast-9d33c7aea2e7.css" /><link data-color-theme="dark" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark-784387e86ac0.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-79bd5fd84a86.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-75db11311555.css" /><link data-color-theme="dark_colorblind_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind_high_contrast-f2c1045899a2.css" /><link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia-f46d293c6ff3.css" /><link data-color-theme="dark_tritanopia_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia_high_contrast-e4b5684db29d.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-72c58078e707.css" /><link data-color-theme="dark_dimmed_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed_high_contrast-956cb5dfcb85.css" /> + <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light-7a548c73f231168f.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light_high_contrast-6d5205ba83e64657.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark-a037c5198a3956d3.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark_high_contrast-c4cd957551b6a79f.css" /><link data-color-theme="light" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light-7a548c73f231168f.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-6d5205ba83e64657.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-92d1f03520a71f42.css" /><link data-color-theme="light_colorblind_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind_high_contrast-df96da265a7bd744.css" /><link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia-6db3b080ed072628.css" /><link data-color-theme="light_tritanopia_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia_high_contrast-90fe1d4276b4e140.css" /><link data-color-theme="dark" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark-a037c5198a3956d3.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-c4cd957551b6a79f.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-07a599f014ccb7af.css" /><link data-color-theme="dark_colorblind_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind_high_contrast-c82f4bc8e6fa1496.css" /><link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia-c7f850982eb2d6ef.css" /><link data-color-theme="dark_tritanopia_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia_high_contrast-bb5b3e819015bc33.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-5371e55576aee699.css" /><link data-color-theme="dark_dimmed_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed_high_contrast-4db2d2a5d2d86648.css" /> <style type="text/css"> :root { @@ -44,48 +44,49 @@ } </style> - <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-c37d781e2da5.css" /> - <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-dc3bfaf4b78e.css" /> - <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-14019852d837.css" /> - <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-6d0965b43add.css" /> + <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-2c5f58bae956fa96.css" /> + <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-b97936554294d7a3.css" /> + <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-5d300701a37a830a.css" /> + <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-294399c8d5b652c5.css" /> - <script type="application/json" id="client-env">{"locale":"en","featureFlags":["a11y_status_checks_ruleset","action_yml_language_service","actions_custom_images_public_preview_visibility","actions_custom_images_storage_billing_ui_visibility","actions_enable_snapshot_keyword","actions_image_version_event","actions_workflow_language_service","alternate_user_config_repo","api_insights_show_missing_data_banner","arianotify_comprehensive_migration","codespaces_prebuild_region_target_update","coding_agent_model_selection","contentful_lp_footnotes","copilot_3p_agent_hovercards","copilot_agent_cli_public_preview","copilot_agent_sessions_alive_updates","copilot_agent_task_list_v2","copilot_agent_tasks_btn_code_nav","copilot_agent_tasks_btn_code_view","copilot_agent_tasks_btn_code_view_lines","copilot_agent_tasks_btn_repo","copilot_api_agentic_issue_marshal_yaml","copilot_chat_agents_empty_state","copilot_chat_attach_multiple_images","copilot_chat_clear_model_selection_for_default_change","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_reduce_quota_checks","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_coding_agent_task_response","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_raycast_logo","copilot_file_block_ref_matching","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_generate_thread_name_async","copilot_immersive_job_result_preview","copilot_immersive_structured_model_picker","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_org_policy_page_focus_mode","copilot_redirect_header_button_to_agents","copilot_security_alert_assignee_options","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spaces_public_access_to_user_owned_spaces","copilot_spark_empty_state","copilot_spark_handle_nil_friendly_name","copilot_stable_conversation_view","copilot_swe_agent_progress_commands","copilot_swe_agent_use_subagents","copilot_unconfigured_is_inherited","custom_properties_split_properties_editing_page","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","dom_node_counts","enterprise_ai_controls","failbot_report_error_react_apps_on_page","flex_cta_groups_mvp","global_nav_react","global_nav_react_feature_preview","global_nav_react_teams_settings_page","hyperspace_2025_logged_out_batch_1","initial_per_page_pagination_updates","issue_fields_global_search","issue_fields_report_usage","issue_fields_timeline_events","issues_cache_operation_timeout","issues_cca_assign_actor_with_agent","issues_expanded_file_types","issues_lazy_load_comment_box_suggestions","issues_preheating_dependency_issues","issues_preheating_issue_row","issues_preheating_memex","issues_preheating_parent_issue","issues_preheating_secondary","issues_preheating_sub_issues","issues_preheating_timeline_issues","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_react_client_side_caching_analytics","issues_react_client_side_caching_cb","issues_react_extended_preheat_analytics","issues_react_hot_cache","issues_react_prohibit_title_fallback","issues_react_safari_scroll_preservation","issues_react_turbo_cache_navigation","issues_react_use_turbo_for_cross_repo_navigation","issues_report_sidebar_interactions","lifecycle_label_name_updates","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_display_button_config_menu","memex_grouped_by_edit_route","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","mission_control_retry_on_401","mission_control_use_body_html","open_agent_session_in_vscode_insiders","open_agent_session_in_vscode_stable","primer_react_css_has_selector_perf","projects_assignee_max_limit","prs_conversations_react_split","pull_request_files_changed_opt_out_notice","pull_request_files_virtualization_containment","react_compiler_sso","react_quality_profiling","repos_insights_remove_new_url","ruleset_deletion_confirmation","sample_network_conn_type","site_calculator_actions_2025","site_features_copilot_universe","site_homepage_collaborate_video","spark_prompt_secret_scanning","spark_server_connection_status","swe_agent_member_requests","viewscreen_sandbox","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"}</script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/high-contrast-cookie-ff2c933fbe48.js"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/wp-runtime-d1388b999201.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/6488-de87864e6818.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/78298-e2b301acbc0e.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/82075-fd36cf520df4.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/environment-112a4ebf88e5.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/97068-2c8e697c6e8c.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/43784-4652ae97a661.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/4712-6fc930a63a4b.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/81028-4fa90b716172.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/74911-498f12492577.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/91853-448038d8f9ef.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/78143-31968346cf4c.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/78954-eeadcb8a29db.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/github-elements-0fb6acf0f24b.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/element-registry-44c4d3e56996.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/react-core-b53e33f6993e.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/react-lib-b492ee0e2c35.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/90780-1a0f3d593ff0.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/28546-ee41c9313871.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/17688-a9e16fb5ed13.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/15938-1bc2c363d5ed.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/70191-36bdeb9f5eb6.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/7332-5ea4ccf72018.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/66721-c03c0d8e4fbe.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/89708-97b7bb596019.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/51519-08058b4d6d41.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/2608-450177e3aea5.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/96384-94f4e11ad43a.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/19718-302da6273821.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/behaviors-054e9e1af0ce.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/37911-8ca53539e04e.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/notifications-global-09b60cb040de.js" defer="defer"></script> + <script type="application/json" id="client-env">{"locale":"en","featureFlags":["a11y_status_checks_ruleset","action_yml_language_service","actions_custom_images_public_preview_visibility","actions_custom_images_storage_billing_ui_visibility","actions_enable_snapshot_keyword","actions_image_version_event","actions_workflow_language_service","alternate_user_config_repo","api_insights_show_missing_data_banner","arianotify_comprehensive_migration","batch_suggested_changes","codespaces_prebuild_region_target_update","coding_agent_model_selection","copilot_3p_agent_hovercards","copilot_agent_sessions_alive_updates","copilot_agent_task_list_v2","copilot_agent_task_submit_with_modifier","copilot_agent_tasks_btn_code_nav","copilot_agent_tasks_btn_code_view","copilot_agent_tasks_btn_code_view_lines","copilot_agent_tasks_btn_repo","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_chat_attach_multiple_images","copilot_chat_clear_model_selection_for_default_change","copilot_chat_enable_tool_call_logs","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_reduce_quota_checks","copilot_chat_repository_picker","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_coding_agent_task_response","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_raycast_logo","copilot_features_sql_server_logo","copilot_features_zed_logo","copilot_file_block_ref_matching","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_job_result_preview","copilot_immersive_structured_model_picker","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_org_policy_page_focus_mode","copilot_redirect_header_button_to_agents","copilot_security_alert_assignee_options","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spaces_pagination","copilot_spaces_server_side_menu_actions","copilot_spark_empty_state","copilot_spark_handle_nil_friendly_name","copilot_stable_conversation_view","copilot_swe_agent_use_subagents","copilot_unconfigured_is_inherited","custom_instructions_file_references","custom_properties_consolidate_default_value_input","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","disable_turbo_visit","dom_node_counts","enterprise_ai_controls","failbot_report_error_react_apps_on_page","file_finder_skip_debounce","flex_cta_groups_mvp","global_nav_react","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","initial_per_page_pagination_updates","issue_comment_pinning","issue_fields_compact_view","issue_fields_global_search","issue_fields_report_usage","issue_fields_timeline_events","issues_cca_assign_actor_with_agent","issues_expanded_file_types","issues_index_semantic_search","issues_lazy_load_comment_box_suggestions","issues_react_auto_retry_on_error","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_react_low_quality_comment_warning","issues_react_prohibit_title_fallback","issues_react_safari_scroll_preservation","issues_react_use_turbo_for_cross_repo_navigation","issues_report_sidebar_interactions","landing_pages_ninetailed","lifecycle_label_name_updates","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_display_button_config_menu","memex_grouped_by_edit_route","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","mission_control_retry_on_401","mission_control_use_body_html","open_agent_session_in_vscode_insiders","open_agent_session_in_vscode_stable","primer_react_css_has_selector_perf","projects_assignee_max_limit","prs_conversations_react","react_quality_profiling","repo_picker_client_caching","ruleset_deletion_confirmation","sample_network_conn_type","session_logs_ungroup_reasoning_text","site_calculator_actions_2025","site_features_copilot_universe","site_homepage_collaborate_video","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","suppress_non_representative_vitals","swe_agent_member_requests","viewscreen_sandbox","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"}</script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/high-contrast-cookie-b49c93c4a66923b1.js"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/wp-runtime-a365739c073e005e.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/19762-81d8d5b6d1548747.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/49863-4976e709f3e70037.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/22060-65b6ab518146f610.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/environment-a51d75132b05ab62.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/2966-17a81e258d07c2f2.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/96232-b9d545f230321d7c.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/41013-a3ad6242e7f8e42a.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/51210-6b5503327f030bf0.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/41121-687180e90512ebb8.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/2302-893769a03771e2b9.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/46740-4a90f6808789c7e0.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/20425-e0dc13f26c8ee149.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/github-elements-47afb2cc6f88f2ab.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/element-registry-00d059a39bc367bc.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/react-core-9e65dba44886edf0.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/react-lib-2f71bc80da1778d4.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/7053-ac767626dd950bdd.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/79039-9993689954cc2834.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/61110-4d1f28b4f7de000b.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/2887-e2ef3aca87cf3cff.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/26533-62506039554211c5.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/62249-3d8ecc3d46f0dc4a.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/16674-c6884f27fffb8eee.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/55821-8df7f70f24788ba2.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/84184-d5f38c738dddc6e7.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/91160-58ac38733522873c.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/68160-4d147b4adc4e3757.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/34391-4b927fa8f60ebdd2.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/64453-778588b08614a898.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/behaviors-49e32172e06825b6.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/20475-125b055bc62d02e3.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/notifications-global-9526169739e19e0a.js" defer="defer"></script> <title>Page not found · GitHub · GitHub</title> @@ -95,13 +96,13 @@ <meta name="route-pattern" content="/:user_id/:repository/blob/*name(/*path)" data-turbo-transient> <meta name="route-controller" content="blob" data-turbo-transient> <meta name="route-action" content="show" data-turbo-transient> - <meta name="fetch-nonce" content="v2:682a9268-d482-c6f9-a2d4-f51a1458f5ec"> + <meta name="fetch-nonce" content="v2:9fb1ed0e-0b35-3ba9-9bed-e09f6b40fb86"> <meta name="current-catalog-service-hash" content="f3abb0cc802f3d7b95fc8762b94bdcb13bf39634c40c357301c4aa1d67a256fb"> - <meta name="request-id" content="C17E:F0E37:30DC596:25DC21D:6974BD94" data-pjax-transient="true"/><meta name="html-safe-nonce" content="2479b0b49461fef2f3ccfadb2fda78ee9d9aa533752de96d0c1c0ca3d48d1df9" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDMTdFOkYwRTM3OjMwREM1OTY6MjVEQzIxRDo2OTc0QkQ5NCIsInZpc2l0b3JfaWQiOiI3NDE1MjkxMjA2MTYzNTQ1NDkyIiwicmVnaW9uX2VkZ2UiOiJmcmEiLCJyZWdpb25fcmVuZGVyIjoiZnJhIn0=" data-pjax-transient="true"/><meta name="visitor-hmac" content="7dfd758df9970d28a0931799ccea909e11f19c319fa3d523a1c7c44356d4902b" data-pjax-transient="true"/> + <meta name="request-id" content="AE90:1FD3FE:5672CFD:43F89D7:6987975E" data-pjax-transient="true"/><meta name="html-safe-nonce" content="54074bf7198eda2a78b3c31f01ca4f930b51243e23899a9dc581fe7cdc736652" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBRTkwOjFGRDNGRTo1NjcyQ0ZEOjQzRjg5RDc6Njk4Nzk3NUUiLCJ2aXNpdG9yX2lkIjoiODkyNjgzNjcyODIxMTY0NDYiLCJyZWdpb25fZWRnZSI6ImZyYSIsInJlZ2lvbl9yZW5kZXIiOiJmcmEifQ==" data-pjax-transient="true"/><meta name="visitor-hmac" content="f57c91049d4ed650d3d0dfc24f7ca840f517ad9e5ccd4b4499108a14245ebd75" data-pjax-transient="true"/> @@ -177,15 +178,15 @@ <meta name="expected-hostname" content="github.com"> - <meta http-equiv="x-pjax-version" content="559ee17a41dae78c6af2867e7d68ac436884ec056145d7dbe9d241c3eb1b3c15" data-turbo-track="reload"> + <meta http-equiv="x-pjax-version" content="8ceba48c6a92197c529f47d4f9d45b0b8bc17cf70fdee20196e8a93f9146e912" data-turbo-track="reload"> <meta http-equiv="x-pjax-csp-version" content="21a43568025709b66240454fc92d4f09335a96863f8ab1c46b4a07f6a5b67102" data-turbo-track="reload"> - <meta http-equiv="x-pjax-css-version" content="11db81fa29d9c0cc06e1edce1a65a9d290233af282800834cf371831e6dfea11" data-turbo-track="reload"> - <meta http-equiv="x-pjax-js-version" content="4a4bf5f4e28041a9d2e5c107d7d20b78b4294ba261cab243b28167c16a623a1f" data-turbo-track="reload"> + <meta http-equiv="x-pjax-css-version" content="7bded8bde79b87d1ddc3c19f5a21b028d09775106bcb77cfabea9853ea14a4eb" data-turbo-track="reload"> + <meta http-equiv="x-pjax-js-version" content="38ec31e8cc99e2ff9dfdb8f1c79b44d05e5fce45b7e96adc4250ef0059f0eb28" data-turbo-track="reload"> <meta name="turbo-cache-control" content="no-preview" data-turbo-transient=""> - <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/site-f5cc67eb9a08.css" /> - <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/error-4eb12c8f65b5.css" /> + <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/site-64056219e1c2ee7f.css" /> + <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/error-139bacf9a95d2ff1.css" /> <meta name="is_logged_out_page" content="true"> <meta name="octolytics-page-type" content="marketing"> @@ -205,7 +206,7 @@ <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors"> - <meta name="release" content="488b30e96dfd057fbbe44c6665ccbc030b729dde"> + <meta name="release" content="734a13114c861aff04af5f466b448edfc21edcde"> <meta name="ui-target" content="full"> <link rel="mask-icon" href="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" color="#000000"> @@ -225,8 +226,6 @@ <div id="__primerPortalRoot__" role="region" style="z-index: 1000; position: absolute; width: 100%;" data-turbo-permanent></div> - - <div class="position-relative header-wrapper js-header-wrapper "> <a href="#start-of-content" data-skip-target-assigned="false" class="px-2 py-4 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus js-skip-to-content">Skip to content</a> @@ -234,8 +233,8 @@ <span style="width: 0%;" data-view-component="true" class="Progress-item progress-pjax-loader-bar left-0 top-0 color-bg-accent-emphasis"></span> </span> - <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.272733bb6899c5359cf5.module.css" /> -<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/keyboard-shortcuts-dialog.29aaeaafa90f007c6f61.module.css" /> + <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.2b2a53c0ee686cca.module.css" /> +<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/keyboard-shortcuts-dialog.de31c369308d4093.module.css" /> <react-partial partial-name="keyboard-shortcuts-dialog" @@ -257,9 +256,9 @@ -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/43862-5c4df3ba1119.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/85110-5c8beb884518.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/sessions-dc7eea68d186.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/46752-4721914446890d73.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/93308-1738dd45a3935262.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/sessions-6d94ca358dd59581.js" defer="defer"></script> <style> /* Override primer focus outline color for marketing header dropdown links for better contrast */ @@ -307,14 +306,14 @@ </a> <div class="AppHeader-appearanceSettings"> <react-partial-anchor> - <button data-target="react-partial-anchor.anchor" id="icon-button-b4fdf5a2-72da-440f-83f4-3e97de0faca4" aria-labelledby="tooltip-6c82bc0a-49fa-460b-8d5d-cac9bff0aa16" type="button" disabled="disabled" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium AppHeader-button HeaderMenu-link border cursor-wait"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-sliders Button-visual"> + <button data-target="react-partial-anchor.anchor" id="icon-button-7cc546ba-74f1-4b21-a248-c93a2b91cce3" aria-labelledby="tooltip-763b6ca8-89ae-40a2-b2a2-0eb740aad7ae" type="button" disabled="disabled" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium AppHeader-button HeaderMenu-link border cursor-wait"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-sliders Button-visual"> <path d="M15 2.75a.75.75 0 0 1-.75.75h-4a.75.75 0 0 1 0-1.5h4a.75.75 0 0 1 .75.75Zm-8.5.75v1.25a.75.75 0 0 0 1.5 0v-4a.75.75 0 0 0-1.5 0V2H1.75a.75.75 0 0 0 0 1.5H6.5Zm1.25 5.25a.75.75 0 0 0 0-1.5h-6a.75.75 0 0 0 0 1.5h6ZM15 8a.75.75 0 0 1-.75.75H11.5V10a.75.75 0 1 1-1.5 0V6a.75.75 0 0 1 1.5 0v1.25h2.75A.75.75 0 0 1 15 8Zm-9 5.25v-2a.75.75 0 0 0-1.5 0v1.25H1.75a.75.75 0 0 0 0 1.5H4.5v1.25a.75.75 0 0 0 1.5 0v-2Zm9 0a.75.75 0 0 1-.75.75h-6a.75.75 0 0 1 0-1.5h6a.75.75 0 0 1 .75.75Z"></path> </svg> -</button><tool-tip id="tooltip-6c82bc0a-49fa-460b-8d5d-cac9bff0aa16" for="icon-button-b4fdf5a2-72da-440f-83f4-3e97de0faca4" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Appearance settings</tool-tip> +</button><tool-tip id="tooltip-763b6ca8-89ae-40a2-b2a2-0eb740aad7ae" for="icon-button-7cc546ba-74f1-4b21-a248-c93a2b91cce3" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Appearance settings</tool-tip> <template data-target="react-partial-anchor.template"> - <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.272733bb6899c5359cf5.module.css" /> -<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/appearance-settings.753d458774a2f782559b.module.css" /> + <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.2b2a53c0ee686cca.module.css" /> +<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/appearance-settings.571a5d0113aba4f4.module.css" /> <react-partial partial-name="appearance-settings" @@ -338,8 +337,8 @@ <div class="HeaderMenu js-header-menu height-fit position-lg-relative d-lg-flex flex-column flex-auto top-0"> <div class="HeaderMenu-wrapper d-flex flex-column flex-self-start flex-lg-row flex-auto rounded rounded-lg-0"> - <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.272733bb6899c5359cf5.module.css" /> -<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/marketing-navigation.2a752a3c708bb38a3035.module.css" /> + <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.2b2a53c0ee686cca.module.css" /> +<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/marketing-navigation.63140de28ff52306.module.css" /> <react-partial partial-name="marketing-navigation" @@ -349,7 +348,7 @@ > <script type="application/json" data-target="react-partial.embeddedData">{"props":{"should_use_dotcom_links":true}}</script> - <div data-target="react-partial.reactRoot"><nav class="MarketingNavigation-module__nav--jA9Zq" aria-label="Global"><ul class="MarketingNavigation-module__list--r_vr2"><li><div class="NavDropdown-module__container--bmXM2 js-details-container js-header-menu-item"><button type="button" class="NavDropdown-module__button--Hq9UR js-details-target" aria-expanded="false">Platform<svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-right NavDropdown-module__buttonIcon--SR0Ke" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></button><div class="NavDropdown-module__dropdown--Ig57Y"><ul class="NavDropdown-module__list--RwSSK"><li><div class="NavGroup-module__group--T925n"><span class="NavGroup-module__title--TdKyz">AI CODE CREATION</span><ul class="NavGroup-module__list--M8eGv"><li><a href="https://github.com/features/copilot" data-analytics-event="{"action":"github_copilot","tag":"link","context":"platform","location":"navbar","label":"github_copilot_link_platform_navbar"}" class="NavLink-module__link--n48VB"><div class="NavLink-module__text--SdWkb"><svg aria-hidden="true" focusable="false" class="octicon octicon-copilot NavLink-module__icon--h0sw7" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"></path><path d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z"></path></svg><span class="NavLink-module__title--xw3ok">GitHub Copilot</span><span class="NavLink-module__subtitle--qC15H">Write better code with AI</span></div></a></li><li><a href="https://github.com/features/spark" data-analytics-event="{"action":"github_spark","tag":"link","context":"platform","location":"navbar","label":"github_spark_link_platform_navbar"}" class="NavLink-module__link--n48VB"><div class="NavLink-module__text--SdWkb"><svg aria-hidden="true" focusable="false" class="octicon octicon-sparkle-fill NavLink-module__icon--h0sw7" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M11.296 1.924c.24-.656 1.168-.656 1.408 0l.717 1.958a11.25 11.25 0 0 0 6.697 6.697l1.958.717c.657.24.657 1.168 0 1.408l-1.958.717a11.25 11.25 0 0 0-6.697 6.697l-.717 1.958c-.24.657-1.168.657-1.408 0l-.717-1.958a11.25 11.25 0 0 0-6.697-6.697l-1.958-.717c-.656-.24-.656-1.168 0-1.408l1.958-.717a11.25 11.25 0 0 0 6.697-6.697l.717-1.958Z"></path></svg><span class="NavLink-module__title--xw3ok">GitHub Spark</span><span class="NavLink-module__subtitle--qC15H">Build and deploy intelligent apps</span></div></a></li><li><a href="https://github.com/features/models" data-analytics-event="{"action":"github_models","tag":"link","context":"platform","location":"navbar","label":"github_models_link_platform_navbar"}" class="NavLink-module__link--n48VB"><div class="NavLink-module__text--SdWkb"><svg aria-hidden="true" focusable="false" class="octicon octicon-ai-model NavLink-module__icon--h0sw7" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M19.375 8.5a3.25 3.25 0 1 1-3.163 4h-3a3.252 3.252 0 0 1-4.443 2.509L7.214 17.76a3.25 3.25 0 1 1-1.342-.674l1.672-2.957A3.238 3.238 0 0 1 6.75 12c0-.907.371-1.727.97-2.316L6.117 6.846A3.253 3.253 0 0 1 1.875 3.75a3.25 3.25 0 1 1 5.526 2.32l1.603 2.836A3.25 3.25 0 0 1 13.093 11h3.119a3.252 3.252 0 0 1 3.163-2.5ZM10 10.25a1.75 1.75 0 1 0-.001 3.499A1.75 1.75 0 0 0 10 10.25ZM5.125 2a1.75 1.75 0 1 0 0 3.5 1.75 1.75 0 0 0 0-3.5Zm12.5 9.75a1.75 1.75 0 1 0 3.5 0 1.75 1.75 0 0 0-3.5 0Zm-14.25 8.5a1.75 1.75 0 1 0 3.501-.001 1.75 1.75 0 0 0-3.501.001Z"></path></svg><span class="NavLink-module__title--xw3ok">GitHub Models</span><span class="NavLink-module__subtitle--qC15H">Manage and compare prompts</span></div></a></li><li><a href="https://github.com/mcp" data-analytics-event="{"action":"mcp_registry","tag":"link","context":"platform","location":"navbar","label":"mcp_registry_link_platform_navbar"}" class="NavLink-module__link--n48VB"><div class="NavLink-module__text--SdWkb"><svg aria-hidden="true" focusable="false" class="octicon octicon-mcp NavLink-module__icon--h0sw7" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M9.795 1.694a4.287 4.287 0 0 1 6.061 0 4.28 4.28 0 0 1 1.181 3.819 4.282 4.282 0 0 1 3.819 1.181 4.287 4.287 0 0 1 0 6.061l-6.793 6.793a.249.249 0 0 0 0 .353l2.617 2.618a.75.75 0 1 1-1.061 1.061l-2.617-2.618a1.75 1.75 0 0 1 0-2.475l6.793-6.793a2.785 2.785 0 1 0-3.939-3.939l-5.9 5.9a.734.734 0 0 1-.249.165.749.749 0 0 1-.812-1.225l5.9-5.901a2.785 2.785 0 1 0-3.939-3.939L2.931 10.68A.75.75 0 1 1 1.87 9.619l7.925-7.925Z"></path><path d="M12.42 4.069a.752.752 0 0 1 1.061 0 .752.752 0 0 1 0 1.061L7.33 11.28a2.788 2.788 0 0 0 0 3.94 2.788 2.788 0 0 0 3.94 0l6.15-6.151a.752.752 0 0 1 1.061 0 .752.752 0 0 1 0 1.061l-6.151 6.15a4.285 4.285 0 1 1-6.06-6.06l6.15-6.151Z"></path></svg><span class="NavLink-module__title--xw3ok">MCP Registry<sup class="NavLink-module__label--MrIhm">New</sup></span><span class="NavLink-module__subtitle--qC15H">Integrate external tools</span></div></a></li></ul></div></li><li><div class="NavGroup-module__group--T925n"><span class="NavGroup-module__title--TdKyz">DEVELOPER WORKFLOWS</span><ul class="NavGroup-module__list--M8eGv"><li><a href="https://github.com/features/actions" data-analytics-event="{"action":"actions","tag":"link","context":"platform","location":"navbar","label":"actions_link_platform_navbar"}" class="NavLink-module__link--n48VB"><div class="NavLink-module__text--SdWkb"><svg aria-hidden="true" focusable="false" class="octicon octicon-workflow NavLink-module__icon--h0sw7" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1 3a2 2 0 0 1 2-2h6.5a2 2 0 0 1 2 2v6.5a2 2 0 0 1-2 2H7v4.063C7 16.355 7.644 17 8.438 17H12.5v-2.5a2 2 0 0 1 2-2H21a2 2 0 0 1 2 2V21a2 2 0 0 1-2 2h-6.5a2 2 0 0 1-2-2v-2.5H8.437A2.939 2.939 0 0 1 5.5 15.562V11.5H3a2 2 0 0 1-2-2Zm2-.5a.5.5 0 0 0-.5.5v6.5a.5.5 0 0 0 .5.5h6.5a.5.5 0 0 0 .5-.5V3a.5.5 0 0 0-.5-.5ZM14.5 14a.5.5 0 0 0-.5.5V21a.5.5 0 0 0 .5.5H21a.5.5 0 0 0 .5-.5v-6.5a.5.5 0 0 0-.5-.5Z"></path></svg><span class="NavLink-module__title--xw3ok">Actions</span><span class="NavLink-module__subtitle--qC15H">Automate any workflow</span></div></a></li><li><a href="https://github.com/features/codespaces" data-analytics-event="{"action":"codespaces","tag":"link","context":"platform","location":"navbar","label":"codespaces_link_platform_navbar"}" class="NavLink-module__link--n48VB"><div class="NavLink-module__text--SdWkb"><svg aria-hidden="true" focusable="false" class="octicon octicon-codespaces NavLink-module__icon--h0sw7" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.5 3.75C3.5 2.784 4.284 2 5.25 2h13.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 18.75 13H5.25a1.75 1.75 0 0 1-1.75-1.75Zm-2 12c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v4a1.75 1.75 0 0 1-1.75 1.75H3.25a1.75 1.75 0 0 1-1.75-1.75ZM5.25 3.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h13.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Zm-2 12a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h17.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25Z"></path><path d="M10 17.75a.75.75 0 0 1 .75-.75h6.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path></svg><span class="NavLink-module__title--xw3ok">Codespaces</span><span class="NavLink-module__subtitle--qC15H">Instant dev environments</span></div></a></li><li><a href="https://github.com/features/issues" data-analytics-event="{"action":"issues","tag":"link","context":"platform","location":"navbar","label":"issues_link_platform_navbar"}" class="NavLink-module__link--n48VB"><div class="NavLink-module__text--SdWkb"><svg aria-hidden="true" focusable="false" class="octicon octicon-issue-opened NavLink-module__icon--h0sw7" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1ZM2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5 9.5 9.5 0 0 0 2.5 12Zm9.5 2a2 2 0 1 1-.001-3.999A2 2 0 0 1 12 14Z"></path></svg><span class="NavLink-module__title--xw3ok">Issues</span><span class="NavLink-module__subtitle--qC15H">Plan and track work</span></div></a></li><li><a href="https://github.com/features/code-review" data-analytics-event="{"action":"code_review","tag":"link","context":"platform","location":"navbar","label":"code_review_link_platform_navbar"}" class="NavLink-module__link--n48VB"><div class="NavLink-module__text--SdWkb"><svg aria-hidden="true" focusable="false" class="octicon octicon-code NavLink-module__icon--h0sw7" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M15.22 4.97a.75.75 0 0 1 1.06 0l6.5 6.5a.75.75 0 0 1 0 1.06l-6.5 6.5a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L21.19 12l-5.97-5.97a.75.75 0 0 1 0-1.06Zm-6.44 0a.75.75 0 0 1 0 1.06L2.81 12l5.97 5.97a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-6.5-6.5a.75.75 0 0 1 0-1.06l6.5-6.5a.75.75 0 0 1 1.06 0Z"></path></svg><span class="NavLink-module__title--xw3ok">Code Review</span><span class="NavLink-module__subtitle--qC15H">Manage code changes</span></div></a></li></ul></div></li><li><div class="NavGroup-module__group--T925n"><span class="NavGroup-module__title--TdKyz">APPLICATION SECURITY</span><ul class="NavGroup-module__list--M8eGv"><li><a href="https://github.com/security/advanced-security" data-analytics-event="{"action":"github_advanced_security","tag":"link","context":"platform","location":"navbar","label":"github_advanced_security_link_platform_navbar"}" class="NavLink-module__link--n48VB"><div class="NavLink-module__text--SdWkb"><svg aria-hidden="true" focusable="false" class="octicon octicon-shield-check NavLink-module__icon--h0sw7" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z"></path><path d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z"></path></svg><span class="NavLink-module__title--xw3ok">GitHub Advanced Security</span><span class="NavLink-module__subtitle--qC15H">Find and fix vulnerabilities</span></div></a></li><li><a href="https://github.com/security/advanced-security/code-security" data-analytics-event="{"action":"code_security","tag":"link","context":"platform","location":"navbar","label":"code_security_link_platform_navbar"}" class="NavLink-module__link--n48VB"><div class="NavLink-module__text--SdWkb"><svg aria-hidden="true" focusable="false" class="octicon octicon-code-square NavLink-module__icon--h0sw7" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.3 8.24a.75.75 0 0 1-.04 1.06L7.352 12l2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z"></path><path d="M2 3.75C2 2.784 2.784 2 3.75 2h16.5c.966 0 1.75.784 1.75 1.75v16.5A1.75 1.75 0 0 1 20.25 22H3.75A1.75 1.75 0 0 1 2 20.25Zm1.75-.25a.25.25 0 0 0-.25.25v16.5c0 .138.112.25.25.25h16.5a.25.25 0 0 0 .25-.25V3.75a.25.25 0 0 0-.25-.25Z"></path></svg><span class="NavLink-module__title--xw3ok">Code security</span><span class="NavLink-module__subtitle--qC15H">Secure your code as you build</span></div></a></li><li><a href="https://github.com/security/advanced-security/secret-protection" data-analytics-event="{"action":"secret_protection","tag":"link","context":"platform","location":"navbar","label":"secret_protection_link_platform_navbar"}" class="NavLink-module__link--n48VB"><div class="NavLink-module__text--SdWkb"><svg aria-hidden="true" focusable="false" class="octicon octicon-lock NavLink-module__icon--h0sw7" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6 9V7.25C6 3.845 8.503 1 12 1s6 2.845 6 6.25V9h.5a2.5 2.5 0 0 1 2.5 2.5v8a2.5 2.5 0 0 1-2.5 2.5h-13A2.5 2.5 0 0 1 3 19.5v-8A2.5 2.5 0 0 1 5.5 9Zm-1.5 2.5v8a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1v-8a1 1 0 0 0-1-1h-13a1 1 0 0 0-1 1Zm3-4.25V9h9V7.25c0-2.67-1.922-4.75-4.5-4.75-2.578 0-4.5 2.08-4.5 4.75Z"></path></svg><span class="NavLink-module__title--xw3ok">Secret protection</span><span class="NavLink-module__subtitle--qC15H">Stop leaks before they start</span></div></a></li></ul></div></li><li><div class="NavGroup-module__group--T925n NavGroup-module__hasSeparator--AJeNz"><span class="NavGroup-module__title--TdKyz">EXPLORE</span><ul class="NavGroup-module__list--M8eGv"><li><a href="https://github.com/why-github" data-analytics-event="{"action":"why_github","tag":"link","context":"platform","location":"navbar","label":"why_github_link_platform_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">Why GitHub</span></a></li><li><a href="https://docs.github.com" data-analytics-event="{"action":"documentation","tag":"link","context":"platform","location":"navbar","label":"documentation_link_platform_navbar"}" class="NavLink-module__link--n48VB" target="_blank" rel="noreferrer"><span class="NavLink-module__title--xw3ok">Documentation</span><svg aria-hidden="true" focusable="false" class="octicon octicon-link-external NavLink-module__externalIcon--JurQ9" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></li><li><a href="https://github.blog" data-analytics-event="{"action":"blog","tag":"link","context":"platform","location":"navbar","label":"blog_link_platform_navbar"}" class="NavLink-module__link--n48VB" target="_blank" rel="noreferrer"><span class="NavLink-module__title--xw3ok">Blog</span><svg aria-hidden="true" focusable="false" class="octicon octicon-link-external NavLink-module__externalIcon--JurQ9" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></li><li><a href="https://github.blog/changelog" data-analytics-event="{"action":"changelog","tag":"link","context":"platform","location":"navbar","label":"changelog_link_platform_navbar"}" class="NavLink-module__link--n48VB" target="_blank" rel="noreferrer"><span class="NavLink-module__title--xw3ok">Changelog</span><svg aria-hidden="true" focusable="false" class="octicon octicon-link-external NavLink-module__externalIcon--JurQ9" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></li><li><a href="https://github.com/marketplace" data-analytics-event="{"action":"marketplace","tag":"link","context":"platform","location":"navbar","label":"marketplace_link_platform_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">Marketplace</span></a></li></ul></div></li></ul><div class="NavDropdown-module__trailingLinkContainer--MNB5T"><a href="https://github.com/features" data-analytics-event="{"action":"view_all_features","tag":"link","context":"platform","location":"navbar","label":"view_all_features_link_platform_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">View all features</span><svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-right NavLink-module__arrowIcon--g6Lip" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a></div></div></div></li><li><div class="NavDropdown-module__container--bmXM2 js-details-container js-header-menu-item"><button type="button" class="NavDropdown-module__button--Hq9UR js-details-target" aria-expanded="false">Solutions<svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-right NavDropdown-module__buttonIcon--SR0Ke" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></button><div class="NavDropdown-module__dropdown--Ig57Y"><ul class="NavDropdown-module__list--RwSSK"><li><div class="NavGroup-module__group--T925n"><span class="NavGroup-module__title--TdKyz">BY COMPANY SIZE</span><ul class="NavGroup-module__list--M8eGv"><li><a href="https://github.com/enterprise" data-analytics-event="{"action":"enterprises","tag":"link","context":"solutions","location":"navbar","label":"enterprises_link_solutions_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">Enterprises</span></a></li><li><a href="https://github.com/team" data-analytics-event="{"action":"small_and_medium_teams","tag":"link","context":"solutions","location":"navbar","label":"small_and_medium_teams_link_solutions_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">Small and medium teams</span></a></li><li><a href="https://github.com/enterprise/startups" data-analytics-event="{"action":"startups","tag":"link","context":"solutions","location":"navbar","label":"startups_link_solutions_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">Startups</span></a></li><li><a href="https://github.com/solutions/industry/nonprofits" data-analytics-event="{"action":"nonprofits","tag":"link","context":"solutions","location":"navbar","label":"nonprofits_link_solutions_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">Nonprofits</span></a></li></ul></div></li><li><div class="NavGroup-module__group--T925n"><span class="NavGroup-module__title--TdKyz">BY USE CASE</span><ul class="NavGroup-module__list--M8eGv"><li><a href="https://github.com/solutions/use-case/app-modernization" data-analytics-event="{"action":"app_modernization","tag":"link","context":"solutions","location":"navbar","label":"app_modernization_link_solutions_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">App Modernization</span></a></li><li><a href="https://github.com/solutions/use-case/devsecops" data-analytics-event="{"action":"devsecops","tag":"link","context":"solutions","location":"navbar","label":"devsecops_link_solutions_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">DevSecOps</span></a></li><li><a href="https://github.com/solutions/use-case/devops" data-analytics-event="{"action":"devops","tag":"link","context":"solutions","location":"navbar","label":"devops_link_solutions_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">DevOps</span></a></li><li><a href="https://github.com/solutions/use-case/ci-cd" data-analytics-event="{"action":"ci/cd","tag":"link","context":"solutions","location":"navbar","label":"ci/cd_link_solutions_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">CI/CD</span></a></li><li><a href="https://github.com/solutions/use-case" data-analytics-event="{"action":"view_all_use_cases","tag":"link","context":"solutions","location":"navbar","label":"view_all_use_cases_link_solutions_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">View all use cases</span><svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-right NavLink-module__arrowIcon--g6Lip" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group--T925n"><span class="NavGroup-module__title--TdKyz">BY INDUSTRY</span><ul class="NavGroup-module__list--M8eGv"><li><a href="https://github.com/solutions/industry/healthcare" data-analytics-event="{"action":"healthcare","tag":"link","context":"solutions","location":"navbar","label":"healthcare_link_solutions_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">Healthcare</span></a></li><li><a href="https://github.com/solutions/industry/financial-services" data-analytics-event="{"action":"financial_services","tag":"link","context":"solutions","location":"navbar","label":"financial_services_link_solutions_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">Financial services</span></a></li><li><a href="https://github.com/solutions/industry/manufacturing" data-analytics-event="{"action":"manufacturing","tag":"link","context":"solutions","location":"navbar","label":"manufacturing_link_solutions_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">Manufacturing</span></a></li><li><a href="https://github.com/solutions/industry/government" data-analytics-event="{"action":"government","tag":"link","context":"solutions","location":"navbar","label":"government_link_solutions_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">Government</span></a></li><li><a href="https://github.com/solutions/industry" data-analytics-event="{"action":"view_all_industries","tag":"link","context":"solutions","location":"navbar","label":"view_all_industries_link_solutions_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">View all industries</span><svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-right NavLink-module__arrowIcon--g6Lip" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a></li></ul></div></li></ul><div class="NavDropdown-module__trailingLinkContainer--MNB5T"><a href="https://github.com/solutions" data-analytics-event="{"action":"view_all_solutions","tag":"link","context":"solutions","location":"navbar","label":"view_all_solutions_link_solutions_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">View all solutions</span><svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-right NavLink-module__arrowIcon--g6Lip" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a></div></div></div></li><li><div class="NavDropdown-module__container--bmXM2 js-details-container js-header-menu-item"><button type="button" class="NavDropdown-module__button--Hq9UR js-details-target" aria-expanded="false">Resources<svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-right NavDropdown-module__buttonIcon--SR0Ke" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></button><div class="NavDropdown-module__dropdown--Ig57Y"><ul class="NavDropdown-module__list--RwSSK"><li><div class="NavGroup-module__group--T925n"><span class="NavGroup-module__title--TdKyz">EXPLORE BY TOPIC</span><ul class="NavGroup-module__list--M8eGv"><li><a href="https://github.com/resources/articles?topic=ai" data-analytics-event="{"action":"ai","tag":"link","context":"resources","location":"navbar","label":"ai_link_resources_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">AI</span></a></li><li><a href="https://github.com/resources/articles?topic=software-development" data-analytics-event="{"action":"software_development","tag":"link","context":"resources","location":"navbar","label":"software_development_link_resources_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">Software Development</span></a></li><li><a href="https://github.com/resources/articles?topic=devops" data-analytics-event="{"action":"devops","tag":"link","context":"resources","location":"navbar","label":"devops_link_resources_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">DevOps</span></a></li><li><a href="https://github.com/resources/articles?topic=security" data-analytics-event="{"action":"security","tag":"link","context":"resources","location":"navbar","label":"security_link_resources_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">Security</span></a></li><li><a href="https://github.com/resources/articles" data-analytics-event="{"action":"view_all_topics","tag":"link","context":"resources","location":"navbar","label":"view_all_topics_link_resources_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">View all topics</span><svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-right NavLink-module__arrowIcon--g6Lip" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group--T925n"><span class="NavGroup-module__title--TdKyz">EXPLORE BY TYPE</span><ul class="NavGroup-module__list--M8eGv"><li><a href="https://github.com/customer-stories" data-analytics-event="{"action":"customer_stories","tag":"link","context":"resources","location":"navbar","label":"customer_stories_link_resources_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">Customer stories</span></a></li><li><a href="https://github.com/resources/events" data-analytics-event="{"action":"events__webinars","tag":"link","context":"resources","location":"navbar","label":"events__webinars_link_resources_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">Events & webinars</span></a></li><li><a href="https://github.com/resources/whitepapers" data-analytics-event="{"action":"ebooks__reports","tag":"link","context":"resources","location":"navbar","label":"ebooks__reports_link_resources_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">Ebooks & reports</span></a></li><li><a href="https://github.com/solutions/executive-insights" data-analytics-event="{"action":"business_insights","tag":"link","context":"resources","location":"navbar","label":"business_insights_link_resources_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">Business insights</span></a></li><li><a href="https://skills.github.com" data-analytics-event="{"action":"github_skills","tag":"link","context":"resources","location":"navbar","label":"github_skills_link_resources_navbar"}" class="NavLink-module__link--n48VB" target="_blank" rel="noreferrer"><span class="NavLink-module__title--xw3ok">GitHub Skills</span><svg aria-hidden="true" focusable="false" class="octicon octicon-link-external NavLink-module__externalIcon--JurQ9" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></li></ul></div></li><li><div class="NavGroup-module__group--T925n"><span class="NavGroup-module__title--TdKyz">SUPPORT & SERVICES</span><ul class="NavGroup-module__list--M8eGv"><li><a href="https://docs.github.com" data-analytics-event="{"action":"documentation","tag":"link","context":"resources","location":"navbar","label":"documentation_link_resources_navbar"}" class="NavLink-module__link--n48VB" target="_blank" rel="noreferrer"><span class="NavLink-module__title--xw3ok">Documentation</span><svg aria-hidden="true" focusable="false" class="octicon octicon-link-external NavLink-module__externalIcon--JurQ9" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></li><li><a href="https://support.github.com" data-analytics-event="{"action":"customer_support","tag":"link","context":"resources","location":"navbar","label":"customer_support_link_resources_navbar"}" class="NavLink-module__link--n48VB" target="_blank" rel="noreferrer"><span class="NavLink-module__title--xw3ok">Customer support</span><svg aria-hidden="true" focusable="false" class="octicon octicon-link-external NavLink-module__externalIcon--JurQ9" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></li><li><a href="https://github.com/orgs/community/discussions" data-analytics-event="{"action":"community_forum","tag":"link","context":"resources","location":"navbar","label":"community_forum_link_resources_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">Community forum</span></a></li><li><a href="https://github.com/trust-center" data-analytics-event="{"action":"trust_center","tag":"link","context":"resources","location":"navbar","label":"trust_center_link_resources_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">Trust center</span></a></li><li><a href="https://github.com/partners" data-analytics-event="{"action":"partners","tag":"link","context":"resources","location":"navbar","label":"partners_link_resources_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">Partners</span></a></li></ul></div></li></ul></div></div></li><li><div class="NavDropdown-module__container--bmXM2 js-details-container js-header-menu-item"><button type="button" class="NavDropdown-module__button--Hq9UR js-details-target" aria-expanded="false">Open Source<svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-right NavDropdown-module__buttonIcon--SR0Ke" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></button><div class="NavDropdown-module__dropdown--Ig57Y"><ul class="NavDropdown-module__list--RwSSK"><li><div class="NavGroup-module__group--T925n"><span class="NavGroup-module__title--TdKyz">COMMUNITY</span><ul class="NavGroup-module__list--M8eGv"><li><a href="https://github.com/sponsors" data-analytics-event="{"action":"github_sponsors","tag":"link","context":"open_source","location":"navbar","label":"github_sponsors_link_open_source_navbar"}" class="NavLink-module__link--n48VB"><div class="NavLink-module__text--SdWkb"><svg aria-hidden="true" focusable="false" class="octicon octicon-sponsor-tiers NavLink-module__icon--h0sw7" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M16.004 1.25C18.311 1.25 20 3.128 20 5.75c0 2.292-1.23 4.464-3.295 6.485-.481.47-.98.909-1.482 1.31l.265 1.32 1.375 7.5a.75.75 0 0 1-.982.844l-3.512-1.207a.75.75 0 0 0-.488 0L8.37 23.209a.75.75 0 0 1-.982-.844l1.378-7.512.261-1.309c-.5-.4-1-.838-1.481-1.31C5.479 10.215 4.25 8.043 4.25 5.75c0-2.622 1.689-4.5 3.996-4.5 1.55 0 2.947.752 3.832 1.967l.047.067.047-.067a4.726 4.726 0 0 1 3.612-1.962l.22-.005ZM13.89 14.531c-.418.285-.828.542-1.218.77l-.18.103a.75.75 0 0 1-.734 0l-.071-.04-.46-.272c-.282-.173-.573-.36-.868-.562l-.121.605-1.145 6.239 2.3-.79a2.248 2.248 0 0 1 1.284-.054l.18.053 2.299.79-1.141-6.226-.125-.616ZM16.004 2.75c-1.464 0-2.731.983-3.159 2.459-.209.721-1.231.721-1.44 0-.428-1.476-1.695-2.459-3.16-2.459-1.44 0-2.495 1.173-2.495 3 0 1.811 1.039 3.647 2.844 5.412a19.624 19.624 0 0 0 3.734 2.84l-.019-.011-.184-.111.147-.088a19.81 19.81 0 0 0 3.015-2.278l.37-.352C17.46 9.397 18.5 7.561 18.5 5.75c0-1.827-1.055-3-2.496-3Z"></path></svg><span class="NavLink-module__title--xw3ok">GitHub Sponsors</span><span class="NavLink-module__subtitle--qC15H">Fund open source developers</span></div></a></li></ul></div></li><li><div class="NavGroup-module__group--T925n"><span class="NavGroup-module__title--TdKyz">PROGRAMS</span><ul class="NavGroup-module__list--M8eGv"><li><a href="https://securitylab.github.com" data-analytics-event="{"action":"security_lab","tag":"link","context":"open_source","location":"navbar","label":"security_lab_link_open_source_navbar"}" class="NavLink-module__link--n48VB" target="_blank" rel="noreferrer"><span class="NavLink-module__title--xw3ok">Security Lab</span><svg aria-hidden="true" focusable="false" class="octicon octicon-link-external NavLink-module__externalIcon--JurQ9" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></li><li><a href="https://maintainers.github.com" data-analytics-event="{"action":"maintainer_community","tag":"link","context":"open_source","location":"navbar","label":"maintainer_community_link_open_source_navbar"}" class="NavLink-module__link--n48VB" target="_blank" rel="noreferrer"><span class="NavLink-module__title--xw3ok">Maintainer Community</span><svg aria-hidden="true" focusable="false" class="octicon octicon-link-external NavLink-module__externalIcon--JurQ9" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></li><li><a href="https://github.com/accelerator" data-analytics-event="{"action":"accelerator","tag":"link","context":"open_source","location":"navbar","label":"accelerator_link_open_source_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">Accelerator</span></a></li><li><a href="https://archiveprogram.github.com" data-analytics-event="{"action":"archive_program","tag":"link","context":"open_source","location":"navbar","label":"archive_program_link_open_source_navbar"}" class="NavLink-module__link--n48VB" target="_blank" rel="noreferrer"><span class="NavLink-module__title--xw3ok">Archive Program</span><svg aria-hidden="true" focusable="false" class="octicon octicon-link-external NavLink-module__externalIcon--JurQ9" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></li></ul></div></li><li><div class="NavGroup-module__group--T925n"><span class="NavGroup-module__title--TdKyz">REPOSITORIES</span><ul class="NavGroup-module__list--M8eGv"><li><a href="https://github.com/topics" data-analytics-event="{"action":"topics","tag":"link","context":"open_source","location":"navbar","label":"topics_link_open_source_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">Topics</span></a></li><li><a href="https://github.com/trending" data-analytics-event="{"action":"trending","tag":"link","context":"open_source","location":"navbar","label":"trending_link_open_source_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">Trending</span></a></li><li><a href="https://github.com/collections" data-analytics-event="{"action":"collections","tag":"link","context":"open_source","location":"navbar","label":"collections_link_open_source_navbar"}" class="NavLink-module__link--n48VB"><span class="NavLink-module__title--xw3ok">Collections</span></a></li></ul></div></li></ul></div></div></li><li><div class="NavDropdown-module__container--bmXM2 js-details-container js-header-menu-item"><button type="button" class="NavDropdown-module__button--Hq9UR js-details-target" aria-expanded="false">Enterprise<svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-right NavDropdown-module__buttonIcon--SR0Ke" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></button><div class="NavDropdown-module__dropdown--Ig57Y"><ul class="NavDropdown-module__list--RwSSK"><li><div class="NavGroup-module__group--T925n"><span class="NavGroup-module__title--TdKyz">ENTERPRISE SOLUTIONS</span><ul class="NavGroup-module__list--M8eGv"><li><a href="https://github.com/enterprise" data-analytics-event="{"action":"enterprise_platform","tag":"link","context":"enterprise","location":"navbar","label":"enterprise_platform_link_enterprise_navbar"}" class="NavLink-module__link--n48VB"><div class="NavLink-module__text--SdWkb"><svg aria-hidden="true" focusable="false" class="octicon octicon-stack NavLink-module__icon--h0sw7" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M11.063 1.456a1.749 1.749 0 0 1 1.874 0l8.383 5.316a1.751 1.751 0 0 1 0 2.956l-8.383 5.316a1.749 1.749 0 0 1-1.874 0L2.68 9.728a1.751 1.751 0 0 1 0-2.956Zm1.071 1.267a.25.25 0 0 0-.268 0L3.483 8.039a.25.25 0 0 0 0 .422l8.383 5.316a.25.25 0 0 0 .268 0l8.383-5.316a.25.25 0 0 0 0-.422Z"></path><path d="M1.867 12.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z"></path><path d="M1.867 16.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z"></path></svg><span class="NavLink-module__title--xw3ok">Enterprise platform</span><span class="NavLink-module__subtitle--qC15H">AI-powered developer platform</span></div></a></li></ul></div></li><li><div class="NavGroup-module__group--T925n"><span class="NavGroup-module__title--TdKyz">AVAILABLE ADD-ONS</span><ul class="NavGroup-module__list--M8eGv"><li><a href="https://github.com/security/advanced-security" data-analytics-event="{"action":"github_advanced_security","tag":"link","context":"enterprise","location":"navbar","label":"github_advanced_security_link_enterprise_navbar"}" class="NavLink-module__link--n48VB"><div class="NavLink-module__text--SdWkb"><svg aria-hidden="true" focusable="false" class="octicon octicon-shield-check NavLink-module__icon--h0sw7" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z"></path><path d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z"></path></svg><span class="NavLink-module__title--xw3ok">GitHub Advanced Security</span><span class="NavLink-module__subtitle--qC15H">Enterprise-grade security features</span></div></a></li><li><a href="https://github.com/features/copilot/copilot-business" data-analytics-event="{"action":"copilot_for_business","tag":"link","context":"enterprise","location":"navbar","label":"copilot_for_business_link_enterprise_navbar"}" class="NavLink-module__link--n48VB"><div class="NavLink-module__text--SdWkb"><svg aria-hidden="true" focusable="false" class="octicon octicon-copilot NavLink-module__icon--h0sw7" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"></path><path d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z"></path></svg><span class="NavLink-module__title--xw3ok">Copilot for Business</span><span class="NavLink-module__subtitle--qC15H">Enterprise-grade AI features</span></div></a></li><li><a href="https://github.com/premium-support" data-analytics-event="{"action":"premium_support","tag":"link","context":"enterprise","location":"navbar","label":"premium_support_link_enterprise_navbar"}" class="NavLink-module__link--n48VB"><div class="NavLink-module__text--SdWkb"><svg aria-hidden="true" focusable="false" class="octicon octicon-comment-discussion NavLink-module__icon--h0sw7" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z"></path><path d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z"></path></svg><span class="NavLink-module__title--xw3ok">Premium Support</span><span class="NavLink-module__subtitle--qC15H">Enterprise-grade 24/7 support</span></div></a></li></ul></div></li></ul></div></div></li><li><a href="https://github.com/pricing" data-analytics-event="{"action":"pricing","tag":"link","context":"pricing","location":"navbar","label":"pricing_link_pricing_navbar"}" class="NavLink-module__link--n48VB MarketingNavigation-module__navLink--U9Uuk"><span class="NavLink-module__title--xw3ok">Pricing</span></a></li></ul></nav><script type="application/json" id="__PRIMER_DATA__R_0___">{"resolvedServerColorMode":"day"}</script></div> + <div data-target="react-partial.reactRoot"><nav class="MarketingNavigation-module__nav__NPauXyD" aria-label="Global"><ul class="MarketingNavigation-module__list__nrluPkJ"><li><div class="NavDropdown-module__container__KUyZW75 js-details-container js-header-menu-item"><button type="button" class="NavDropdown-module__button__vgiCKGy js-details-target" aria-expanded="false">Platform<svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-right NavDropdown-module__buttonIcon__yJlVW2F" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></button><div class="NavDropdown-module__dropdown__JEKUkh2"><ul class="NavDropdown-module__list__eE8C8Eg"><li><div class="NavGroup-module__group__lq97WQQ"><span class="NavGroup-module__title__ost9jAm">AI CODE CREATION</span><ul class="NavGroup-module__list__Ourc1lc"><li><a href="https://github.com/features/copilot" data-analytics-event="{"action":"github_copilot","tag":"link","context":"platform","location":"navbar","label":"github_copilot_link_platform_navbar"}" class="NavLink-module__link__oSrJNoD"><div class="NavLink-module__text__AMkNnLf"><svg aria-hidden="true" focusable="false" class="octicon octicon-copilot NavLink-module__icon__Km2csVk" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"></path><path d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z"></path></svg><span class="NavLink-module__title__adAPJNV">GitHub Copilot</span><span class="NavLink-module__subtitle__rTluIts">Write better code with AI</span></div></a></li><li><a href="https://github.com/features/spark" data-analytics-event="{"action":"github_spark","tag":"link","context":"platform","location":"navbar","label":"github_spark_link_platform_navbar"}" class="NavLink-module__link__oSrJNoD"><div class="NavLink-module__text__AMkNnLf"><svg aria-hidden="true" focusable="false" class="octicon octicon-sparkle-fill NavLink-module__icon__Km2csVk" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M11.296 1.924c.24-.656 1.168-.656 1.408 0l.717 1.958a11.25 11.25 0 0 0 6.697 6.697l1.958.717c.657.24.657 1.168 0 1.408l-1.958.717a11.25 11.25 0 0 0-6.697 6.697l-.717 1.958c-.24.657-1.168.657-1.408 0l-.717-1.958a11.25 11.25 0 0 0-6.697-6.697l-1.958-.717c-.656-.24-.656-1.168 0-1.408l1.958-.717a11.25 11.25 0 0 0 6.697-6.697l.717-1.958Z"></path></svg><span class="NavLink-module__title__adAPJNV">GitHub Spark</span><span class="NavLink-module__subtitle__rTluIts">Build and deploy intelligent apps</span></div></a></li><li><a href="https://github.com/features/models" data-analytics-event="{"action":"github_models","tag":"link","context":"platform","location":"navbar","label":"github_models_link_platform_navbar"}" class="NavLink-module__link__oSrJNoD"><div class="NavLink-module__text__AMkNnLf"><svg aria-hidden="true" focusable="false" class="octicon octicon-ai-model NavLink-module__icon__Km2csVk" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M19.375 8.5a3.25 3.25 0 1 1-3.163 4h-3a3.252 3.252 0 0 1-4.443 2.509L7.214 17.76a3.25 3.25 0 1 1-1.342-.674l1.672-2.957A3.238 3.238 0 0 1 6.75 12c0-.907.371-1.727.97-2.316L6.117 6.846A3.253 3.253 0 0 1 1.875 3.75a3.25 3.25 0 1 1 5.526 2.32l1.603 2.836A3.25 3.25 0 0 1 13.093 11h3.119a3.252 3.252 0 0 1 3.163-2.5ZM10 10.25a1.75 1.75 0 1 0-.001 3.499A1.75 1.75 0 0 0 10 10.25ZM5.125 2a1.75 1.75 0 1 0 0 3.5 1.75 1.75 0 0 0 0-3.5Zm12.5 9.75a1.75 1.75 0 1 0 3.5 0 1.75 1.75 0 0 0-3.5 0Zm-14.25 8.5a1.75 1.75 0 1 0 3.501-.001 1.75 1.75 0 0 0-3.501.001Z"></path></svg><span class="NavLink-module__title__adAPJNV">GitHub Models</span><span class="NavLink-module__subtitle__rTluIts">Manage and compare prompts</span></div></a></li><li><a href="https://github.com/mcp" data-analytics-event="{"action":"mcp_registry","tag":"link","context":"platform","location":"navbar","label":"mcp_registry_link_platform_navbar"}" class="NavLink-module__link__oSrJNoD"><div class="NavLink-module__text__AMkNnLf"><svg aria-hidden="true" focusable="false" class="octicon octicon-mcp NavLink-module__icon__Km2csVk" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M9.795 1.694a4.287 4.287 0 0 1 6.061 0 4.28 4.28 0 0 1 1.181 3.819 4.282 4.282 0 0 1 3.819 1.181 4.287 4.287 0 0 1 0 6.061l-6.793 6.793a.249.249 0 0 0 0 .353l2.617 2.618a.75.75 0 1 1-1.061 1.061l-2.617-2.618a1.75 1.75 0 0 1 0-2.475l6.793-6.793a2.785 2.785 0 1 0-3.939-3.939l-5.9 5.9a.734.734 0 0 1-.249.165.749.749 0 0 1-.812-1.225l5.9-5.901a2.785 2.785 0 1 0-3.939-3.939L2.931 10.68A.75.75 0 1 1 1.87 9.619l7.925-7.925Z"></path><path d="M12.42 4.069a.752.752 0 0 1 1.061 0 .752.752 0 0 1 0 1.061L7.33 11.28a2.788 2.788 0 0 0 0 3.94 2.788 2.788 0 0 0 3.94 0l6.15-6.151a.752.752 0 0 1 1.061 0 .752.752 0 0 1 0 1.061l-6.151 6.15a4.285 4.285 0 1 1-6.06-6.06l6.15-6.151Z"></path></svg><span class="NavLink-module__title__adAPJNV">MCP Registry<sup class="NavLink-module__label__Tuq3Itf">New</sup></span><span class="NavLink-module__subtitle__rTluIts">Integrate external tools</span></div></a></li></ul></div></li><li><div class="NavGroup-module__group__lq97WQQ"><span class="NavGroup-module__title__ost9jAm">DEVELOPER WORKFLOWS</span><ul class="NavGroup-module__list__Ourc1lc"><li><a href="https://github.com/features/actions" data-analytics-event="{"action":"actions","tag":"link","context":"platform","location":"navbar","label":"actions_link_platform_navbar"}" class="NavLink-module__link__oSrJNoD"><div class="NavLink-module__text__AMkNnLf"><svg aria-hidden="true" focusable="false" class="octicon octicon-workflow NavLink-module__icon__Km2csVk" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1 3a2 2 0 0 1 2-2h6.5a2 2 0 0 1 2 2v6.5a2 2 0 0 1-2 2H7v4.063C7 16.355 7.644 17 8.438 17H12.5v-2.5a2 2 0 0 1 2-2H21a2 2 0 0 1 2 2V21a2 2 0 0 1-2 2h-6.5a2 2 0 0 1-2-2v-2.5H8.437A2.939 2.939 0 0 1 5.5 15.562V11.5H3a2 2 0 0 1-2-2Zm2-.5a.5.5 0 0 0-.5.5v6.5a.5.5 0 0 0 .5.5h6.5a.5.5 0 0 0 .5-.5V3a.5.5 0 0 0-.5-.5ZM14.5 14a.5.5 0 0 0-.5.5V21a.5.5 0 0 0 .5.5H21a.5.5 0 0 0 .5-.5v-6.5a.5.5 0 0 0-.5-.5Z"></path></svg><span class="NavLink-module__title__adAPJNV">Actions</span><span class="NavLink-module__subtitle__rTluIts">Automate any workflow</span></div></a></li><li><a href="https://github.com/features/codespaces" data-analytics-event="{"action":"codespaces","tag":"link","context":"platform","location":"navbar","label":"codespaces_link_platform_navbar"}" class="NavLink-module__link__oSrJNoD"><div class="NavLink-module__text__AMkNnLf"><svg aria-hidden="true" focusable="false" class="octicon octicon-codespaces NavLink-module__icon__Km2csVk" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.5 3.75C3.5 2.784 4.284 2 5.25 2h13.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 18.75 13H5.25a1.75 1.75 0 0 1-1.75-1.75Zm-2 12c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v4a1.75 1.75 0 0 1-1.75 1.75H3.25a1.75 1.75 0 0 1-1.75-1.75ZM5.25 3.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h13.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Zm-2 12a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h17.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25Z"></path><path d="M10 17.75a.75.75 0 0 1 .75-.75h6.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path></svg><span class="NavLink-module__title__adAPJNV">Codespaces</span><span class="NavLink-module__subtitle__rTluIts">Instant dev environments</span></div></a></li><li><a href="https://github.com/features/issues" data-analytics-event="{"action":"issues","tag":"link","context":"platform","location":"navbar","label":"issues_link_platform_navbar"}" class="NavLink-module__link__oSrJNoD"><div class="NavLink-module__text__AMkNnLf"><svg aria-hidden="true" focusable="false" class="octicon octicon-issue-opened NavLink-module__icon__Km2csVk" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1ZM2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5 9.5 9.5 0 0 0 2.5 12Zm9.5 2a2 2 0 1 1-.001-3.999A2 2 0 0 1 12 14Z"></path></svg><span class="NavLink-module__title__adAPJNV">Issues</span><span class="NavLink-module__subtitle__rTluIts">Plan and track work</span></div></a></li><li><a href="https://github.com/features/code-review" data-analytics-event="{"action":"code_review","tag":"link","context":"platform","location":"navbar","label":"code_review_link_platform_navbar"}" class="NavLink-module__link__oSrJNoD"><div class="NavLink-module__text__AMkNnLf"><svg aria-hidden="true" focusable="false" class="octicon octicon-code NavLink-module__icon__Km2csVk" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M15.22 4.97a.75.75 0 0 1 1.06 0l6.5 6.5a.75.75 0 0 1 0 1.06l-6.5 6.5a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L21.19 12l-5.97-5.97a.75.75 0 0 1 0-1.06Zm-6.44 0a.75.75 0 0 1 0 1.06L2.81 12l5.97 5.97a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-6.5-6.5a.75.75 0 0 1 0-1.06l6.5-6.5a.75.75 0 0 1 1.06 0Z"></path></svg><span class="NavLink-module__title__adAPJNV">Code Review</span><span class="NavLink-module__subtitle__rTluIts">Manage code changes</span></div></a></li></ul></div></li><li><div class="NavGroup-module__group__lq97WQQ"><span class="NavGroup-module__title__ost9jAm">APPLICATION SECURITY</span><ul class="NavGroup-module__list__Ourc1lc"><li><a href="https://github.com/security/advanced-security" data-analytics-event="{"action":"github_advanced_security","tag":"link","context":"platform","location":"navbar","label":"github_advanced_security_link_platform_navbar"}" class="NavLink-module__link__oSrJNoD"><div class="NavLink-module__text__AMkNnLf"><svg aria-hidden="true" focusable="false" class="octicon octicon-shield-check NavLink-module__icon__Km2csVk" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z"></path><path d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z"></path></svg><span class="NavLink-module__title__adAPJNV">GitHub Advanced Security</span><span class="NavLink-module__subtitle__rTluIts">Find and fix vulnerabilities</span></div></a></li><li><a href="https://github.com/security/advanced-security/code-security" data-analytics-event="{"action":"code_security","tag":"link","context":"platform","location":"navbar","label":"code_security_link_platform_navbar"}" class="NavLink-module__link__oSrJNoD"><div class="NavLink-module__text__AMkNnLf"><svg aria-hidden="true" focusable="false" class="octicon octicon-code-square NavLink-module__icon__Km2csVk" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.3 8.24a.75.75 0 0 1-.04 1.06L7.352 12l2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z"></path><path d="M2 3.75C2 2.784 2.784 2 3.75 2h16.5c.966 0 1.75.784 1.75 1.75v16.5A1.75 1.75 0 0 1 20.25 22H3.75A1.75 1.75 0 0 1 2 20.25Zm1.75-.25a.25.25 0 0 0-.25.25v16.5c0 .138.112.25.25.25h16.5a.25.25 0 0 0 .25-.25V3.75a.25.25 0 0 0-.25-.25Z"></path></svg><span class="NavLink-module__title__adAPJNV">Code security</span><span class="NavLink-module__subtitle__rTluIts">Secure your code as you build</span></div></a></li><li><a href="https://github.com/security/advanced-security/secret-protection" data-analytics-event="{"action":"secret_protection","tag":"link","context":"platform","location":"navbar","label":"secret_protection_link_platform_navbar"}" class="NavLink-module__link__oSrJNoD"><div class="NavLink-module__text__AMkNnLf"><svg aria-hidden="true" focusable="false" class="octicon octicon-lock NavLink-module__icon__Km2csVk" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6 9V7.25C6 3.845 8.503 1 12 1s6 2.845 6 6.25V9h.5a2.5 2.5 0 0 1 2.5 2.5v8a2.5 2.5 0 0 1-2.5 2.5h-13A2.5 2.5 0 0 1 3 19.5v-8A2.5 2.5 0 0 1 5.5 9Zm-1.5 2.5v8a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1v-8a1 1 0 0 0-1-1h-13a1 1 0 0 0-1 1Zm3-4.25V9h9V7.25c0-2.67-1.922-4.75-4.5-4.75-2.578 0-4.5 2.08-4.5 4.75Z"></path></svg><span class="NavLink-module__title__adAPJNV">Secret protection</span><span class="NavLink-module__subtitle__rTluIts">Stop leaks before they start</span></div></a></li></ul></div></li><li><div class="NavGroup-module__group__lq97WQQ NavGroup-module__hasSeparator__Q3EjDs7"><span class="NavGroup-module__title__ost9jAm">EXPLORE</span><ul class="NavGroup-module__list__Ourc1lc"><li><a href="https://github.com/why-github" data-analytics-event="{"action":"why_github","tag":"link","context":"platform","location":"navbar","label":"why_github_link_platform_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">Why GitHub</span></a></li><li><a href="https://docs.github.com" data-analytics-event="{"action":"documentation","tag":"link","context":"platform","location":"navbar","label":"documentation_link_platform_navbar"}" class="NavLink-module__link__oSrJNoD" target="_blank" rel="noreferrer"><span class="NavLink-module__title__adAPJNV">Documentation</span><svg aria-hidden="true" focusable="false" class="octicon octicon-link-external NavLink-module__externalIcon__fo1FVEg" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></li><li><a href="https://github.blog" data-analytics-event="{"action":"blog","tag":"link","context":"platform","location":"navbar","label":"blog_link_platform_navbar"}" class="NavLink-module__link__oSrJNoD" target="_blank" rel="noreferrer"><span class="NavLink-module__title__adAPJNV">Blog</span><svg aria-hidden="true" focusable="false" class="octicon octicon-link-external NavLink-module__externalIcon__fo1FVEg" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></li><li><a href="https://github.blog/changelog" data-analytics-event="{"action":"changelog","tag":"link","context":"platform","location":"navbar","label":"changelog_link_platform_navbar"}" class="NavLink-module__link__oSrJNoD" target="_blank" rel="noreferrer"><span class="NavLink-module__title__adAPJNV">Changelog</span><svg aria-hidden="true" focusable="false" class="octicon octicon-link-external NavLink-module__externalIcon__fo1FVEg" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></li><li><a href="https://github.com/marketplace" data-analytics-event="{"action":"marketplace","tag":"link","context":"platform","location":"navbar","label":"marketplace_link_platform_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">Marketplace</span></a></li></ul></div></li></ul><div class="NavDropdown-module__trailingLinkContainer__THmvvzU"><a href="https://github.com/features" data-analytics-event="{"action":"view_all_features","tag":"link","context":"platform","location":"navbar","label":"view_all_features_link_platform_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">View all features</span><svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-right NavLink-module__arrowIcon__YN8DIiR" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a></div></div></div></li><li><div class="NavDropdown-module__container__KUyZW75 js-details-container js-header-menu-item"><button type="button" class="NavDropdown-module__button__vgiCKGy js-details-target" aria-expanded="false">Solutions<svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-right NavDropdown-module__buttonIcon__yJlVW2F" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></button><div class="NavDropdown-module__dropdown__JEKUkh2"><ul class="NavDropdown-module__list__eE8C8Eg"><li><div class="NavGroup-module__group__lq97WQQ"><span class="NavGroup-module__title__ost9jAm">BY COMPANY SIZE</span><ul class="NavGroup-module__list__Ourc1lc"><li><a href="https://github.com/enterprise" data-analytics-event="{"action":"enterprises","tag":"link","context":"solutions","location":"navbar","label":"enterprises_link_solutions_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">Enterprises</span></a></li><li><a href="https://github.com/team" data-analytics-event="{"action":"small_and_medium_teams","tag":"link","context":"solutions","location":"navbar","label":"small_and_medium_teams_link_solutions_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">Small and medium teams</span></a></li><li><a href="https://github.com/enterprise/startups" data-analytics-event="{"action":"startups","tag":"link","context":"solutions","location":"navbar","label":"startups_link_solutions_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">Startups</span></a></li><li><a href="https://github.com/solutions/industry/nonprofits" data-analytics-event="{"action":"nonprofits","tag":"link","context":"solutions","location":"navbar","label":"nonprofits_link_solutions_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">Nonprofits</span></a></li></ul></div></li><li><div class="NavGroup-module__group__lq97WQQ"><span class="NavGroup-module__title__ost9jAm">BY USE CASE</span><ul class="NavGroup-module__list__Ourc1lc"><li><a href="https://github.com/solutions/use-case/app-modernization" data-analytics-event="{"action":"app_modernization","tag":"link","context":"solutions","location":"navbar","label":"app_modernization_link_solutions_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">App Modernization</span></a></li><li><a href="https://github.com/solutions/use-case/devsecops" data-analytics-event="{"action":"devsecops","tag":"link","context":"solutions","location":"navbar","label":"devsecops_link_solutions_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">DevSecOps</span></a></li><li><a href="https://github.com/solutions/use-case/devops" data-analytics-event="{"action":"devops","tag":"link","context":"solutions","location":"navbar","label":"devops_link_solutions_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">DevOps</span></a></li><li><a href="https://github.com/solutions/use-case/ci-cd" data-analytics-event="{"action":"ci/cd","tag":"link","context":"solutions","location":"navbar","label":"ci/cd_link_solutions_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">CI/CD</span></a></li><li><a href="https://github.com/solutions/use-case" data-analytics-event="{"action":"view_all_use_cases","tag":"link","context":"solutions","location":"navbar","label":"view_all_use_cases_link_solutions_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">View all use cases</span><svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-right NavLink-module__arrowIcon__YN8DIiR" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__lq97WQQ"><span class="NavGroup-module__title__ost9jAm">BY INDUSTRY</span><ul class="NavGroup-module__list__Ourc1lc"><li><a href="https://github.com/solutions/industry/healthcare" data-analytics-event="{"action":"healthcare","tag":"link","context":"solutions","location":"navbar","label":"healthcare_link_solutions_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">Healthcare</span></a></li><li><a href="https://github.com/solutions/industry/financial-services" data-analytics-event="{"action":"financial_services","tag":"link","context":"solutions","location":"navbar","label":"financial_services_link_solutions_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">Financial services</span></a></li><li><a href="https://github.com/solutions/industry/manufacturing" data-analytics-event="{"action":"manufacturing","tag":"link","context":"solutions","location":"navbar","label":"manufacturing_link_solutions_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">Manufacturing</span></a></li><li><a href="https://github.com/solutions/industry/government" data-analytics-event="{"action":"government","tag":"link","context":"solutions","location":"navbar","label":"government_link_solutions_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">Government</span></a></li><li><a href="https://github.com/solutions/industry" data-analytics-event="{"action":"view_all_industries","tag":"link","context":"solutions","location":"navbar","label":"view_all_industries_link_solutions_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">View all industries</span><svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-right NavLink-module__arrowIcon__YN8DIiR" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a></li></ul></div></li></ul><div class="NavDropdown-module__trailingLinkContainer__THmvvzU"><a href="https://github.com/solutions" data-analytics-event="{"action":"view_all_solutions","tag":"link","context":"solutions","location":"navbar","label":"view_all_solutions_link_solutions_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">View all solutions</span><svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-right NavLink-module__arrowIcon__YN8DIiR" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a></div></div></div></li><li><div class="NavDropdown-module__container__KUyZW75 js-details-container js-header-menu-item"><button type="button" class="NavDropdown-module__button__vgiCKGy js-details-target" aria-expanded="false">Resources<svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-right NavDropdown-module__buttonIcon__yJlVW2F" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></button><div class="NavDropdown-module__dropdown__JEKUkh2"><ul class="NavDropdown-module__list__eE8C8Eg"><li><div class="NavGroup-module__group__lq97WQQ"><span class="NavGroup-module__title__ost9jAm">EXPLORE BY TOPIC</span><ul class="NavGroup-module__list__Ourc1lc"><li><a href="https://github.com/resources/articles?topic=ai" data-analytics-event="{"action":"ai","tag":"link","context":"resources","location":"navbar","label":"ai_link_resources_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">AI</span></a></li><li><a href="https://github.com/resources/articles?topic=software-development" data-analytics-event="{"action":"software_development","tag":"link","context":"resources","location":"navbar","label":"software_development_link_resources_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">Software Development</span></a></li><li><a href="https://github.com/resources/articles?topic=devops" data-analytics-event="{"action":"devops","tag":"link","context":"resources","location":"navbar","label":"devops_link_resources_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">DevOps</span></a></li><li><a href="https://github.com/resources/articles?topic=security" data-analytics-event="{"action":"security","tag":"link","context":"resources","location":"navbar","label":"security_link_resources_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">Security</span></a></li><li><a href="https://github.com/resources/articles" data-analytics-event="{"action":"view_all_topics","tag":"link","context":"resources","location":"navbar","label":"view_all_topics_link_resources_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">View all topics</span><svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-right NavLink-module__arrowIcon__YN8DIiR" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__lq97WQQ"><span class="NavGroup-module__title__ost9jAm">EXPLORE BY TYPE</span><ul class="NavGroup-module__list__Ourc1lc"><li><a href="https://github.com/customer-stories" data-analytics-event="{"action":"customer_stories","tag":"link","context":"resources","location":"navbar","label":"customer_stories_link_resources_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">Customer stories</span></a></li><li><a href="https://github.com/resources/events" data-analytics-event="{"action":"events__webinars","tag":"link","context":"resources","location":"navbar","label":"events__webinars_link_resources_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">Events & webinars</span></a></li><li><a href="https://github.com/resources/whitepapers" data-analytics-event="{"action":"ebooks__reports","tag":"link","context":"resources","location":"navbar","label":"ebooks__reports_link_resources_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">Ebooks & reports</span></a></li><li><a href="https://github.com/solutions/executive-insights" data-analytics-event="{"action":"business_insights","tag":"link","context":"resources","location":"navbar","label":"business_insights_link_resources_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">Business insights</span></a></li><li><a href="https://skills.github.com" data-analytics-event="{"action":"github_skills","tag":"link","context":"resources","location":"navbar","label":"github_skills_link_resources_navbar"}" class="NavLink-module__link__oSrJNoD" target="_blank" rel="noreferrer"><span class="NavLink-module__title__adAPJNV">GitHub Skills</span><svg aria-hidden="true" focusable="false" class="octicon octicon-link-external NavLink-module__externalIcon__fo1FVEg" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></li></ul></div></li><li><div class="NavGroup-module__group__lq97WQQ"><span class="NavGroup-module__title__ost9jAm">SUPPORT & SERVICES</span><ul class="NavGroup-module__list__Ourc1lc"><li><a href="https://docs.github.com" data-analytics-event="{"action":"documentation","tag":"link","context":"resources","location":"navbar","label":"documentation_link_resources_navbar"}" class="NavLink-module__link__oSrJNoD" target="_blank" rel="noreferrer"><span class="NavLink-module__title__adAPJNV">Documentation</span><svg aria-hidden="true" focusable="false" class="octicon octicon-link-external NavLink-module__externalIcon__fo1FVEg" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></li><li><a href="https://support.github.com" data-analytics-event="{"action":"customer_support","tag":"link","context":"resources","location":"navbar","label":"customer_support_link_resources_navbar"}" class="NavLink-module__link__oSrJNoD" target="_blank" rel="noreferrer"><span class="NavLink-module__title__adAPJNV">Customer support</span><svg aria-hidden="true" focusable="false" class="octicon octicon-link-external NavLink-module__externalIcon__fo1FVEg" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></li><li><a href="https://github.com/orgs/community/discussions" data-analytics-event="{"action":"community_forum","tag":"link","context":"resources","location":"navbar","label":"community_forum_link_resources_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">Community forum</span></a></li><li><a href="https://github.com/trust-center" data-analytics-event="{"action":"trust_center","tag":"link","context":"resources","location":"navbar","label":"trust_center_link_resources_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">Trust center</span></a></li><li><a href="https://github.com/partners" data-analytics-event="{"action":"partners","tag":"link","context":"resources","location":"navbar","label":"partners_link_resources_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">Partners</span></a></li></ul></div></li></ul></div></div></li><li><div class="NavDropdown-module__container__KUyZW75 js-details-container js-header-menu-item"><button type="button" class="NavDropdown-module__button__vgiCKGy js-details-target" aria-expanded="false">Open Source<svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-right NavDropdown-module__buttonIcon__yJlVW2F" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></button><div class="NavDropdown-module__dropdown__JEKUkh2"><ul class="NavDropdown-module__list__eE8C8Eg"><li><div class="NavGroup-module__group__lq97WQQ"><span class="NavGroup-module__title__ost9jAm">COMMUNITY</span><ul class="NavGroup-module__list__Ourc1lc"><li><a href="https://github.com/sponsors" data-analytics-event="{"action":"github_sponsors","tag":"link","context":"open_source","location":"navbar","label":"github_sponsors_link_open_source_navbar"}" class="NavLink-module__link__oSrJNoD"><div class="NavLink-module__text__AMkNnLf"><svg aria-hidden="true" focusable="false" class="octicon octicon-sponsor-tiers NavLink-module__icon__Km2csVk" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M16.004 1.25C18.311 1.25 20 3.128 20 5.75c0 2.292-1.23 4.464-3.295 6.485-.481.47-.98.909-1.482 1.31l.265 1.32 1.375 7.5a.75.75 0 0 1-.982.844l-3.512-1.207a.75.75 0 0 0-.488 0L8.37 23.209a.75.75 0 0 1-.982-.844l1.378-7.512.261-1.309c-.5-.4-1-.838-1.481-1.31C5.479 10.215 4.25 8.043 4.25 5.75c0-2.622 1.689-4.5 3.996-4.5 1.55 0 2.947.752 3.832 1.967l.047.067.047-.067a4.726 4.726 0 0 1 3.612-1.962l.22-.005ZM13.89 14.531c-.418.285-.828.542-1.218.77l-.18.103a.75.75 0 0 1-.734 0l-.071-.04-.46-.272c-.282-.173-.573-.36-.868-.562l-.121.605-1.145 6.239 2.3-.79a2.248 2.248 0 0 1 1.284-.054l.18.053 2.299.79-1.141-6.226-.125-.616ZM16.004 2.75c-1.464 0-2.731.983-3.159 2.459-.209.721-1.231.721-1.44 0-.428-1.476-1.695-2.459-3.16-2.459-1.44 0-2.495 1.173-2.495 3 0 1.811 1.039 3.647 2.844 5.412a19.624 19.624 0 0 0 3.734 2.84l-.019-.011-.184-.111.147-.088a19.81 19.81 0 0 0 3.015-2.278l.37-.352C17.46 9.397 18.5 7.561 18.5 5.75c0-1.827-1.055-3-2.496-3Z"></path></svg><span class="NavLink-module__title__adAPJNV">GitHub Sponsors</span><span class="NavLink-module__subtitle__rTluIts">Fund open source developers</span></div></a></li></ul></div></li><li><div class="NavGroup-module__group__lq97WQQ"><span class="NavGroup-module__title__ost9jAm">PROGRAMS</span><ul class="NavGroup-module__list__Ourc1lc"><li><a href="https://securitylab.github.com" data-analytics-event="{"action":"security_lab","tag":"link","context":"open_source","location":"navbar","label":"security_lab_link_open_source_navbar"}" class="NavLink-module__link__oSrJNoD" target="_blank" rel="noreferrer"><span class="NavLink-module__title__adAPJNV">Security Lab</span><svg aria-hidden="true" focusable="false" class="octicon octicon-link-external NavLink-module__externalIcon__fo1FVEg" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></li><li><a href="https://maintainers.github.com" data-analytics-event="{"action":"maintainer_community","tag":"link","context":"open_source","location":"navbar","label":"maintainer_community_link_open_source_navbar"}" class="NavLink-module__link__oSrJNoD" target="_blank" rel="noreferrer"><span class="NavLink-module__title__adAPJNV">Maintainer Community</span><svg aria-hidden="true" focusable="false" class="octicon octicon-link-external NavLink-module__externalIcon__fo1FVEg" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></li><li><a href="https://github.com/accelerator" data-analytics-event="{"action":"accelerator","tag":"link","context":"open_source","location":"navbar","label":"accelerator_link_open_source_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">Accelerator</span></a></li><li><a href="https://archiveprogram.github.com" data-analytics-event="{"action":"archive_program","tag":"link","context":"open_source","location":"navbar","label":"archive_program_link_open_source_navbar"}" class="NavLink-module__link__oSrJNoD" target="_blank" rel="noreferrer"><span class="NavLink-module__title__adAPJNV">Archive Program</span><svg aria-hidden="true" focusable="false" class="octicon octicon-link-external NavLink-module__externalIcon__fo1FVEg" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></li></ul></div></li><li><div class="NavGroup-module__group__lq97WQQ"><span class="NavGroup-module__title__ost9jAm">REPOSITORIES</span><ul class="NavGroup-module__list__Ourc1lc"><li><a href="https://github.com/topics" data-analytics-event="{"action":"topics","tag":"link","context":"open_source","location":"navbar","label":"topics_link_open_source_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">Topics</span></a></li><li><a href="https://github.com/trending" data-analytics-event="{"action":"trending","tag":"link","context":"open_source","location":"navbar","label":"trending_link_open_source_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">Trending</span></a></li><li><a href="https://github.com/collections" data-analytics-event="{"action":"collections","tag":"link","context":"open_source","location":"navbar","label":"collections_link_open_source_navbar"}" class="NavLink-module__link__oSrJNoD"><span class="NavLink-module__title__adAPJNV">Collections</span></a></li></ul></div></li></ul></div></div></li><li><div class="NavDropdown-module__container__KUyZW75 js-details-container js-header-menu-item"><button type="button" class="NavDropdown-module__button__vgiCKGy js-details-target" aria-expanded="false">Enterprise<svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-right NavDropdown-module__buttonIcon__yJlVW2F" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></button><div class="NavDropdown-module__dropdown__JEKUkh2"><ul class="NavDropdown-module__list__eE8C8Eg"><li><div class="NavGroup-module__group__lq97WQQ"><span class="NavGroup-module__title__ost9jAm">ENTERPRISE SOLUTIONS</span><ul class="NavGroup-module__list__Ourc1lc"><li><a href="https://github.com/enterprise" data-analytics-event="{"action":"enterprise_platform","tag":"link","context":"enterprise","location":"navbar","label":"enterprise_platform_link_enterprise_navbar"}" class="NavLink-module__link__oSrJNoD"><div class="NavLink-module__text__AMkNnLf"><svg aria-hidden="true" focusable="false" class="octicon octicon-stack NavLink-module__icon__Km2csVk" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M11.063 1.456a1.749 1.749 0 0 1 1.874 0l8.383 5.316a1.751 1.751 0 0 1 0 2.956l-8.383 5.316a1.749 1.749 0 0 1-1.874 0L2.68 9.728a1.751 1.751 0 0 1 0-2.956Zm1.071 1.267a.25.25 0 0 0-.268 0L3.483 8.039a.25.25 0 0 0 0 .422l8.383 5.316a.25.25 0 0 0 .268 0l8.383-5.316a.25.25 0 0 0 0-.422Z"></path><path d="M1.867 12.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z"></path><path d="M1.867 16.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z"></path></svg><span class="NavLink-module__title__adAPJNV">Enterprise platform</span><span class="NavLink-module__subtitle__rTluIts">AI-powered developer platform</span></div></a></li></ul></div></li><li><div class="NavGroup-module__group__lq97WQQ"><span class="NavGroup-module__title__ost9jAm">AVAILABLE ADD-ONS</span><ul class="NavGroup-module__list__Ourc1lc"><li><a href="https://github.com/security/advanced-security" data-analytics-event="{"action":"github_advanced_security","tag":"link","context":"enterprise","location":"navbar","label":"github_advanced_security_link_enterprise_navbar"}" class="NavLink-module__link__oSrJNoD"><div class="NavLink-module__text__AMkNnLf"><svg aria-hidden="true" focusable="false" class="octicon octicon-shield-check NavLink-module__icon__Km2csVk" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z"></path><path d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z"></path></svg><span class="NavLink-module__title__adAPJNV">GitHub Advanced Security</span><span class="NavLink-module__subtitle__rTluIts">Enterprise-grade security features</span></div></a></li><li><a href="https://github.com/features/copilot/copilot-business" data-analytics-event="{"action":"copilot_for_business","tag":"link","context":"enterprise","location":"navbar","label":"copilot_for_business_link_enterprise_navbar"}" class="NavLink-module__link__oSrJNoD"><div class="NavLink-module__text__AMkNnLf"><svg aria-hidden="true" focusable="false" class="octicon octicon-copilot NavLink-module__icon__Km2csVk" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"></path><path d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z"></path></svg><span class="NavLink-module__title__adAPJNV">Copilot for Business</span><span class="NavLink-module__subtitle__rTluIts">Enterprise-grade AI features</span></div></a></li><li><a href="https://github.com/premium-support" data-analytics-event="{"action":"premium_support","tag":"link","context":"enterprise","location":"navbar","label":"premium_support_link_enterprise_navbar"}" class="NavLink-module__link__oSrJNoD"><div class="NavLink-module__text__AMkNnLf"><svg aria-hidden="true" focusable="false" class="octicon octicon-comment-discussion NavLink-module__icon__Km2csVk" viewBox="0 0 24 24" width="24" height="24" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z"></path><path d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z"></path></svg><span class="NavLink-module__title__adAPJNV">Premium Support</span><span class="NavLink-module__subtitle__rTluIts">Enterprise-grade 24/7 support</span></div></a></li></ul></div></li></ul></div></div></li><li><a href="https://github.com/pricing" data-analytics-event="{"action":"pricing","tag":"link","context":"pricing","location":"navbar","label":"pricing_link_pricing_navbar"}" class="NavLink-module__link__oSrJNoD MarketingNavigation-module__navLink__YMEM0th"><span class="NavLink-module__title__adAPJNV">Pricing</span></a></li></ul></nav><script type="application/json" id="__PRIMER_DATA__R_0___">{"resolvedServerColorMode":"day"}</script></div> </react-partial> @@ -358,7 +357,7 @@ -<qbsearch-input class="search-input" data-scope="owner:buetow" data-custom-scopes-path="/search/custom_scopes" data-delete-custom-scopes-csrf="5_ES8haZCPX3gM9VSogG9D8p_lCZuL1u1QzTbDTL7vM-9ztoI5kJ5eyWcYSm2ct7W3G1UQGqk4Ym9-daAlwGeQ" data-max-custom-scopes="10" data-header-redesign-enabled="false" data-initial-value="" data-blackbird-suggestions-path="/search/suggestions" data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations" data-current-repository="" data-current-org="" data-current-owner="" data-logged-in="false" data-copilot-chat-enabled="false" data-nl-search-enabled="false" data-retain-scroll-position="true"> +<qbsearch-input class="search-input" data-scope="owner:buetow" data-custom-scopes-path="/search/custom_scopes" data-delete-custom-scopes-csrf="l5xWjgAhHQybMJZ8WO-wsGa2b9c_VYXg_jFsg0MRyHge2RDGvAxTc8eje4TvYPHApoi6DkaI_5AFhdkc-6DBfw" data-max-custom-scopes="10" data-header-redesign-enabled="false" data-initial-value="" data-blackbird-suggestions-path="/search/suggestions" data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations" data-current-repository="" data-current-org="" data-current-owner="" data-logged-in="false" data-copilot-chat-enabled="false" data-nl-search-enabled="false" data-retain-scroll-position="true"> <div class="search-input-container search-with-dialog position-relative d-flex flex-row flex-items-center mr-4 rounded" data-action="click:qbsearch-input#searchInputContainerClicked" @@ -422,7 +421,7 @@ ></div> <div class="QueryBuilder-InputWrapper"> <div aria-hidden="true" class="QueryBuilder-Sizer" data-target="query-builder.sizer"></div> - <input id="query-builder-test" name="query-builder-test" value="" autocomplete="off" type="text" role="combobox" spellcheck="false" aria-expanded="false" aria-describedby="validation-a913ac83-98a9-4fb8-94fe-cbdfe3b43f06" data-target="query-builder.input" data-action=" + <input id="query-builder-test" name="query-builder-test" value="" autocomplete="off" type="text" role="combobox" spellcheck="false" aria-expanded="false" aria-describedby="validation-9417c3f6-ef4e-4129-bc30-1def16d92464" data-target="query-builder.input" data-action=" input:query-builder#inputChange blur:query-builder#inputBlur keydown:query-builder#inputKeydown @@ -646,21 +645,22 @@ </template> <div class="position-relative"> - <ul - role="listbox" - class="ActionListWrap QueryBuilder-ListWrap" - aria-label="Suggestions" - data-action=" - combobox-commit:query-builder#comboboxCommit - mousedown:query-builder#resultsMousedown - " - data-target="query-builder.resultsList" - data-persist-list=false - id="query-builder-test-results" - tabindex="-1" - ></ul> + <ul + role="listbox" + class="ActionListWrap QueryBuilder-ListWrap" + aria-label="Suggestions" + data-action=" + combobox-commit:query-builder#comboboxCommit + mousedown:query-builder#resultsMousedown + " + data-target="query-builder.resultsList" + data-persist-list=false + id="query-builder-test-results" + tabindex="-1" + ></ul> + </div> - <div class="FormControl-inlineValidation" id="validation-a913ac83-98a9-4fb8-94fe-cbdfe3b43f06" hidden="hidden"> + <div class="FormControl-inlineValidation" id="validation-9417c3f6-ef4e-4129-bc30-1def16d92464" hidden="hidden"> <span class="FormControl-inlineValidation--visual"> <svg aria-hidden="true" height="12" viewBox="0 0 12 12" version="1.1" width="12" data-view-component="true" class="octicon octicon-alert-fill"> <path d="M4.855.708c.5-.896 1.79-.896 2.29 0l4.675 8.351a1.312 1.312 0 0 1-1.146 1.954H1.33A1.313 1.313 0 0 1 .183 9.058ZM7 7V3H5v4Zm-1 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z"></path> @@ -701,7 +701,7 @@ </div> <scrollable-region data-labelled-by="feedback-dialog-title"> - <div data-view-component="true" class="Overlay-body"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="code-search-feedback-form" data-turbo="false" action="/search/feedback" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="zw7oaXfXkx1vPa/BIBDdQo44Z0CEHCf+AjU+W3nllPwh/ZmoR+mNDFDeM1I+cPKUHehfkQ31kAaJWwga6TiroQ==" /> + <div data-view-component="true" class="Overlay-body"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="code-search-feedback-form" data-turbo="false" action="/search/feedback" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="5oLtEI4H0ItPB/Try6PV4u9wC/ih6McXvOS3vMn/Lw0FrxlKGcX3saVE/69Rs+AUEjXO5sw4yw3c1o+sMqyrWQ==" /> <p>We read every piece of feedback, and take your input very seriously.</p> <textarea name="feedback" class="form-control width-full mb-2" style="height: 120px" id="feedback"></textarea> <input name="include_email" id="include_email" aria-label="Include my email address so I can be contacted" class="form-control mr-2" type="checkbox"> @@ -739,7 +739,7 @@ <div data-view-component="true" class="Overlay-body"> <div data-target="custom-scopes.customScopesModalDialogFlash"></div> <div hidden class="create-custom-scope-form" data-target="custom-scopes.createCustomScopeForm"> - <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="custom-scopes-dialog-form" data-turbo="false" action="/search/custom_scopes" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="TKgFi2+z5+wpmD3DssGidHno8WpjPXv9XyVtVLrplEjTi2HuFsryqjI3FlTEAGYj2CVS+fFruzaa6su7dQyRlA==" /> + <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="custom-scopes-dialog-form" data-turbo="false" action="/search/custom_scopes" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="T59FQW1eSTF7GFUUvjr5350l5HxyyA9VkyTgGx3pVfyDTw5knuuYfQJs93pdtT4lfmoL0qVeLpStIKtJ4j8oAQ==" /> <div data-target="custom-scopes.customScopesModalDialogFlash"></div> <input type="hidden" id="custom_scope_id" name="custom_scope_id" data-target="custom-scopes.customScopesIdField"> @@ -757,7 +757,7 @@ placeholder="github-ruby" required maxlength="50"> - <input type="hidden" data-csrf="true" value="AH/Aaa2zAIKpKtkx1Ebp0tS/KsnHUrAR85AkOtB89ImLwP+x7rDv2nqvP/AACpwFZQbAIH4PtIZp/KoGJQP4yw==" /> + <input type="hidden" data-csrf="true" value="h8ocZKbyGhHg97oGQFcX3x8xSyeCbJEpJ6hfGmilQWt019Sk50o9Nj6IKPieR/HvVx/y6WUjrjpZfVmJHLNncQ==" /> </auto-check> </div> @@ -812,7 +812,7 @@ <h4 data-view-component="true" class="color-fg-default mb-2"> Sign in to GitHub </h4> -<!-- '"` --><!-- </textarea></xmp> --></option></form><form data-turbo="false" action="/session" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="2LU7T2z2cCwKm3H0hffqaNG6tDjLXvq0DTlFeAxKw80b3TreUq1KIvS4kJhvSpu/U43x1iBsX3THfFg6Avm03A==" /> <input type="hidden" name="add_account" id="add_account" autocomplete="off" class="form-control" /> +<!-- '"` --><!-- </textarea></xmp> --></option></form><form data-turbo="false" action="/session" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="rOlM0J2+9VUxOelBih9xaJY22oqL139DwsSNeya3dT2V6LB9A8GzExa68LGN5toZmREXK+DqPqjmkm/PVtIDvA==" /> <input type="hidden" name="add_account" id="add_account" autocomplete="off" class="form-control" /> <label for="login_field"> Username or email address @@ -834,9 +834,9 @@ <input type="hidden" name="allow_signup" id="allow_signup" autocomplete="off" class="form-control" /> <input type="hidden" name="client_id" id="client_id" autocomplete="off" class="form-control" /> <input type="hidden" name="integration" id="integration" autocomplete="off" class="form-control" /> -<input class="form-control" type="text" name="required_field_8a4b" hidden="hidden" /> -<input class="form-control" type="hidden" name="timestamp" value="1769258388833" /> -<input class="form-control" type="hidden" name="timestamp_secret" value="87ddb805434adc94333a6cbdd0e771598bc4734535a7a090e225671404db87c0" /> +<input class="form-control" type="text" name="required_field_d317" hidden="hidden" /> +<input class="form-control" type="hidden" name="timestamp" value="1770493790472" /> +<input class="form-control" type="hidden" name="timestamp_secret" value="e15b1640379ab4727f51f9537b142791e60c16ea3991c247ace65a3df81ce081" /> <input type="submit" name="commit" value="Sign in" class="btn btn-primary btn-block js-sign-in-button" data-disable-with="Signing in…" data-signin-label="Sign in" data-sso-label="Sign in with your identity provider" development="false" disable-emu-sso="false" /> @@ -863,14 +863,14 @@ <div class="AppHeader-appearanceSettings"> <react-partial-anchor> - <button data-target="react-partial-anchor.anchor" id="icon-button-fc923268-3a9e-45a4-98af-9962f965fc9c" aria-labelledby="tooltip-957c7f76-00f0-45f0-9161-c7ef2aaf41a2" type="button" disabled="disabled" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium AppHeader-button HeaderMenu-link border cursor-wait"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-sliders Button-visual"> + <button data-target="react-partial-anchor.anchor" id="icon-button-5afa9014-607a-432d-b226-699832721ecc" aria-labelledby="tooltip-4ec0a7c5-46f1-4490-8bff-f3473b874dee" type="button" disabled="disabled" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium AppHeader-button HeaderMenu-link border cursor-wait"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-sliders Button-visual"> <path d="M15 2.75a.75.75 0 0 1-.75.75h-4a.75.75 0 0 1 0-1.5h4a.75.75 0 0 1 .75.75Zm-8.5.75v1.25a.75.75 0 0 0 1.5 0v-4a.75.75 0 0 0-1.5 0V2H1.75a.75.75 0 0 0 0 1.5H6.5Zm1.25 5.25a.75.75 0 0 0 0-1.5h-6a.75.75 0 0 0 0 1.5h6ZM15 8a.75.75 0 0 1-.75.75H11.5V10a.75.75 0 1 1-1.5 0V6a.75.75 0 0 1 1.5 0v1.25h2.75A.75.75 0 0 1 15 8Zm-9 5.25v-2a.75.75 0 0 0-1.5 0v1.25H1.75a.75.75 0 0 0 0 1.5H4.5v1.25a.75.75 0 0 0 1.5 0v-2Zm9 0a.75.75 0 0 1-.75.75h-6a.75.75 0 0 1 0-1.5h6a.75.75 0 0 1 .75.75Z"></path> </svg> -</button><tool-tip id="tooltip-957c7f76-00f0-45f0-9161-c7ef2aaf41a2" for="icon-button-fc923268-3a9e-45a4-98af-9962f965fc9c" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Appearance settings</tool-tip> +</button><tool-tip id="tooltip-4ec0a7c5-46f1-4490-8bff-f3473b874dee" for="icon-button-5afa9014-607a-432d-b226-699832721ecc" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Appearance settings</tool-tip> <template data-target="react-partial-anchor.template"> - <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.272733bb6899c5359cf5.module.css" /> -<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/appearance-settings.753d458774a2f782559b.module.css" /> + <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.2b2a53c0ee686cca.module.css" /> +<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/appearance-settings.571a5d0113aba4f4.module.css" /> <react-partial partial-name="appearance-settings" @@ -904,10 +904,10 @@ <span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <span class="js-stale-session-flash-switched" hidden>You switched accounts on another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> - <button id="icon-button-5d1e2b70-3e47-4c01-a223-df5e6a2516b6" aria-labelledby="tooltip-d2f6d2d9-d0bc-48ce-996f-ed2f452811a4" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium flash-close js-flash-close"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x Button-visual"> + <button id="icon-button-66e66b36-58b6-4fb2-9ff8-1e051937a343" aria-labelledby="tooltip-1d57b415-9bfb-47ab-9722-aa75d1478518" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium flash-close js-flash-close"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x Button-visual"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> -</button><tool-tip id="tooltip-d2f6d2d9-d0bc-48ce-996f-ed2f452811a4" for="icon-button-5d1e2b70-3e47-4c01-a223-df5e6a2516b6" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Dismiss alert</tool-tip> +</button><tool-tip id="tooltip-1d57b415-9bfb-47ab-9722-aa75d1478518" for="icon-button-66e66b36-58b6-4fb2-9ff8-1e051937a343" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Dismiss alert</tool-tip> diff --git a/gemfeed/2026-02-02-tmux-popup-editor-for-cursor-agent-prompts.html b/gemfeed/2026-02-02-tmux-popup-editor-for-cursor-agent-prompts.html index 28d77671..534418a0 100644 --- a/gemfeed/2026-02-02-tmux-popup-editor-for-cursor-agent-prompts.html +++ b/gemfeed/2026-02-02-tmux-popup-editor-for-cursor-agent-prompts.html @@ -96,6 +96,10 @@ bind-key e run-shell -b "tmux display-message -p '#{pane_id}' <br /> <span class='quote'>Updated 2026-02-02: Script now works on both Linux and macOS; the listing below reflects the latest version.</span><br /> <br /> +<span class='quote'>Update 2026-02-08: This functionality has been integrated into the hexai project (https://codeberg.org/snonux/hexai) with proper multi-agent support for Cursor Agent, Claude Code CLI, and Ampcode. The hexai version includes unit tests, configuration files, and better agent detection. While still experimental, it's more robust than this shell script. See the hexai-tmux-edit command for details.</span><br /> +<br /> +<a class='textlink' href='https://codeberg.org/snonux/hexai'>https://codeberg.org/snonux/hexai</a><br /> +<br /> <!-- Generator: GNU source-highlight 3.1.9 by Lorenzo Bettini http://www.lorenzobettini.it diff --git a/gemfeed/atom.xml b/gemfeed/atom.xml index ae6f88b2..bcf6523c 100644 --- a/gemfeed/atom.xml +++ b/gemfeed/atom.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> - <updated>2026-02-05T21:36:44+02:00</updated> + <updated>2026-02-08T17:43:20+02:00</updated> <title>foo.zone feed</title> <subtitle>To be in the .zone!</subtitle> <link href="https://foo.zone/gemfeed/atom.xml" rel="self" /> @@ -103,6 +103,10 @@ bind-key e run-shell -b "tmux display-message -p '#{pane_id}' <br /> <span class='quote'>Updated 2026-02-02: Script now works on both Linux and macOS; the listing below reflects the latest version.</span><br /> <br /> +<span class='quote'>Update 2026-02-08: This functionality has been integrated into the hexai project (https://codeberg.org/snonux/hexai) with proper multi-agent support for Cursor Agent, Claude Code CLI, and Ampcode. The hexai version includes unit tests, configuration files, and better agent detection. While still experimental, it's more robust than this shell script. See the hexai-tmux-edit command for details.</span><br /> +<br /> +<a class='textlink' href='https://codeberg.org/snonux/hexai'>https://codeberg.org/snonux/hexai</a><br /> +<br /> <!-- Generator: GNU source-highlight 3.1.9 by Lorenzo Bettini http://www.lorenzobettini.it @@ -13,7 +13,7 @@ </p> <h1 style='display: inline' id='hello'>Hello!</h1><br /> <br /> -<span class='quote'>This site was generated at 2026-02-07T09:56:38+02:00 by <span class='inlinecode'>Gemtexter</span></span><br /> +<span class='quote'>This site was generated at 2026-02-08T17:43:20+02:00 by <span class='inlinecode'>Gemtexter</span></span><br /> <br /> <span>Welcome to the foo.zone!</span><br /> <br /> diff --git a/uptime-stats.html b/uptime-stats.html index 1b8abef8..3f4ea44c 100644 --- a/uptime-stats.html +++ b/uptime-stats.html @@ -13,7 +13,7 @@ </p> <h1 style='display: inline' id='my-machine-uptime-stats'>My machine uptime stats</h1><br /> <br /> -<span class='quote'>This site was last updated at 2026-02-07T09:56:38+02:00</span><br /> +<span class='quote'>This site was last updated at 2026-02-08T17:43:20+02:00</span><br /> <br /> <span>The following stats were collected via <span class='inlinecode'>uptimed</span> on all of my personal computers over many years and the output was generated by <span class='inlinecode'>guprecords</span>, the global uptime records stats analyser of mine.</span><br /> <br /> |
