<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/assets/styles-onHPvasT.css" data-precedence="default"/><title>rust-sa</title><meta name="description" content="rust-sa — local git diff reviewer. Browse hunks, leave comments, and copy AI-ready prompts directly from your working tree."/><link rel="modulepreload" href="/assets/index-BHkV-IoM.js"/><link rel="modulepreload" href="/assets/routes-Bl7-qyn2.js"/><link rel="modulepreload" href="/assets/useQuery-CSGDX41-.js"/><link rel="modulepreload" href="/assets/server-preference-hkvyVnhc.js"/><link rel="modulepreload" href="/assets/kbd-HQBXphC-.js"/><link rel="modulepreload" href="/assets/clsx-DZgdmGjj.js"/><link rel="modulepreload" href="/assets/trash-2-DzNnStcw.js"/><link rel="modulepreload" href="/assets/file-diff-BrMmi8AU.js"/><link rel="modulepreload" href="/assets/git-graph-DgyKjbmE.js"/><link rel="modulepreload" href="/assets/fuzzy-hOo5yjag.js"/><link rel="modulepreload" href="/assets/brand-mark-DdZQdpIt.js"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/></head><body class="flex flex-col h-screen overflow-hidden"><div class="flex-1 min-h-0"><!--$--><!--$--><!--/$--><script>(function(t){let s;try{s=JSON.parse(sessionStorage.getItem(t.storageKey)||"{}")}catch(e){console.error(e);return}const c=t.key||window.history.state?.__TSR_key,r=c?s[c]:void 0;if(t.shouldScrollRestoration&&r&&typeof r=="object"&&Object.keys(r).length>0){for(const e in r){const o=r[e];if(!o||typeof o!="object")continue;const l=o.scrollX,i=o.scrollY;if(!(!Number.isFinite(l)||!Number.isFinite(i))){if(e==="window")window.scrollTo({top:i,left:l,behavior:t.behavior});else if(e){let n;try{n=document.querySelector(e)}catch{continue}n&&(n.scrollLeft=l,n.scrollTop=i)}}}return}const a=window.location.hash.split("#",2)[1];if(a){const e=window.history.state?.__hashScrollIntoViewOptions??!0;if(e){const o=document.getElementById(a);o&&o.scrollIntoView(e)}return}window.scrollTo({top:0,left:0,behavior:t.behavior})})({"storageKey":"tsr-scroll-restoration-v1_3","shouldScrollRestoration":true});document.currentScript.remove()</script><!--/$--></div><script class="$tsr" id="$tsr-stream-barrier">(self.$R=self.$R||{})["tsr"]=[];self.$_TSR={h(){this.hydrated=!0,this.c()},e(){this.streamEnded=!0,this.c()},c(){this.hydrated&&this.streamEnded&&(delete self.$_TSR,delete self.$R.tsr)},p(e){this.initialized?e():this.buffer.push(e)},buffer:[]};$_TSR.router=($R=>$R[0]={manifest:$R[1]={routes:$R[2]={__root__:$R[3]={preloads:$R[4]=["/assets/index-BHkV-IoM.js"],assets:$R[5]=[$R[6]={tag:"script",attrs:$R[7]={type:"module",async:!0},children:"import(\"/assets/index-BHkV-IoM.js\")"}]}}},matches:$R[8]=[$R[9]={i:"__root__ ",u:1779091321408,s:"success",ssr:!0}],lastMatchId:"__root__ "})($R["tsr"]);$_TSR.e();document.currentScript.remove()</script><script type="module" async="">import("/assets/index-BHkV-IoM.js")</script></body></html>