Website for the Lede browser extension.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add footer brand mark; tweak header, FAQ, and styles

+77 -61
+26 -14
src/components/SiteFooter.astro
··· 1 1 --- 2 2 interface Props { 3 - tangled: string; 3 + tangled: string; 4 4 } 5 5 6 6 const { tangled } = Astro.props; 7 7 --- 8 8 9 9 <footer class="site-footer"> 10 - <div class="wrap footer-inner"> 11 - <div class="footer-brand-block"> 12 - <span class="font-display" style="font-weight: 700; color: var(--color-ink)">Lede</span> 13 - <p class="footer-whisper">Built for tab-hoppers who still read the good parts.</p> 14 - </div> 15 - <div class="footer-links"> 16 - <a href={tangled} target="_blank" rel="noopener noreferrer">Project page</a> 17 - <a href="#install">Install</a> 18 - <a href="#privacy">Privacy</a> 19 - <a href="#product">Product</a> 20 - <a href="#usage">Usage</a> 21 - <a href="#faq">FAQ</a> 10 + <div class="wrap footer-inner"> 11 + <div class="footer-brand-block"> 12 + <a class="brand-lockup" href="/"> 13 + <img 14 + class="brand-lockup__mark" 15 + src="/images/summarizer-logo.svg" 16 + width="32" 17 + height="32" 18 + alt="" 19 + decoding="async" 20 + /> 21 + <span>Lede</span> 22 + </a> 23 + 24 + <p class="footer-whisper"> 25 + Made for internet explorers who want to move quicker. 26 + </p> 27 + </div> 28 + <div class="footer-links"> 29 + <a href={tangled} target="_blank" rel="noopener noreferrer" 30 + >Source</a 31 + > 32 + <a href="#install">Install</a> 33 + <a href="#privacy">Privacy</a> 34 + </div> 22 35 </div> 23 - </div> 24 36 </footer>
+31 -33
src/components/SiteHeader.astro
··· 7 7 8 8 const links = [ 9 9 { href: "#privacy", label: "Privacy" }, 10 - { href: "#product", label: "Product" }, 11 - { href: "#usage", label: "Usage" }, 12 10 { href: "#faq", label: "FAQ" }, 13 - { href: tangled, label: "Project", external: true }, 11 + { href: tangled, label: "Source", external: true }, 14 12 ] as const; 15 13 --- 16 14 ··· 59 57 </header> 60 58 61 59 <script is:inline> 62 - (function () { 63 - var header = document.querySelector(".site-header"); 64 - if (!header) return; 65 - /* Hysteresis: avoids borderline flicker when scroll sits near the threshold */ 66 - var enter = 36; 67 - var exit = 12; 68 - var floated = false; 69 - var cls = "site-header--scrolled"; 70 - var rootCls = "site-nav-floated"; 71 - var root = document.documentElement; 72 - var raf = 0; 73 - function sync() { 74 - var y = window.scrollY || document.documentElement.scrollTop; 75 - var next = floated; 76 - if (!floated && y > enter) next = true; 77 - else if (floated && y < exit) next = false; 78 - if (next === floated) return; 79 - floated = next; 80 - header.classList.toggle(cls, floated); 81 - root.classList.toggle(rootCls, floated); 82 - } 83 - function onScroll() { 84 - if (raf) return; 85 - raf = requestAnimationFrame(function () { 86 - raf = 0; 60 + (function () { 61 + var header = document.querySelector(".site-header"); 62 + if (!header) return; 63 + /* Hysteresis: avoids borderline flicker when scroll sits near the threshold */ 64 + var enter = 36; 65 + var exit = 12; 66 + var floated = false; 67 + var cls = "site-header--scrolled"; 68 + var rootCls = "site-nav-floated"; 69 + var root = document.documentElement; 70 + var raf = 0; 71 + function sync() { 72 + var y = window.scrollY || document.documentElement.scrollTop; 73 + var next = floated; 74 + if (!floated && y > enter) next = true; 75 + else if (floated && y < exit) next = false; 76 + if (next === floated) return; 77 + floated = next; 78 + header.classList.toggle(cls, floated); 79 + root.classList.toggle(rootCls, floated); 80 + } 81 + function onScroll() { 82 + if (raf) return; 83 + raf = requestAnimationFrame(function () { 84 + raf = 0; 85 + sync(); 86 + }); 87 + } 87 88 sync(); 88 - }); 89 - } 90 - sync(); 91 - window.addEventListener("scroll", onScroll, { passive: true }); 92 - })(); 89 + window.addEventListener("scroll", onScroll, { passive: true }); 90 + })(); 93 91 </script>
+15 -13
src/components/sections/FAQCompact.astro
··· 22 22 <div class="faq-disclosure__collapse-sheet"> 23 23 <div class="faq-disclosure__body"> 24 24 <p> 25 - We&apos;re still in beta and iterating quickly. 26 - Installing from the project page keeps early testers 27 - close to the latest fixes while we work toward a 28 - store listing. 25 + Lede is still early days, which is why it's marked 26 + as beta and isn't in any extension stores yet. 27 + Hopefully, Lede will be in the store for everyone to 28 + enjoy soon. Stay tuned! 29 29 </p> 30 30 </div> 31 31 </div> ··· 37 37 <div class="faq-disclosure__collapse-sheet"> 38 38 <div class="faq-disclosure__body"> 39 39 <p> 40 - No. Lede only looks at the active tab when you open 41 - it and run a summary or a question. There isn&apos;t 42 - a background feed of your browsing. 40 + No. Lede doesn't collect data on the tabs you open. 41 + It grabs the text from the page you're on on 42 + extension open, and it only sends that data to the 43 + AI model (whether on device or in the cloud) when 44 + you press "Summarize" or ask a follow-up. 43 45 </p> 44 46 </div> 45 47 </div> 46 48 </div> 47 49 </details> 48 50 <details class="faq-disclosure faq-disclosure--animate"> 49 - <summary>What if something won&apos;t connect?</summary> 51 + <summary>Something broke. Help!</summary> 50 52 <div class="faq-disclosure__collapse"> 51 53 <div class="faq-disclosure__collapse-sheet"> 52 54 <div class="faq-disclosure__body"> 53 55 <p> 54 - If something won&apos;t connect or the README 55 - mentions a setting you don&apos;t recognize, the 56 + Uh oh! That's beta software for ya. Please 56 57 <a 57 58 href={tangled} 58 59 target="_blank" 59 - rel="noopener noreferrer">project page</a 60 - > has the latest step-by-step notes—we keep them with 61 - the extension itself. 60 + rel="noopener noreferrer">report the issue</a 61 + > on Tangled so we can take a look and fix it. If you 62 + just need help using the extension, you can reach out 63 + to me directly @ellioth.co on Bluesky. 62 64 </p> 63 65 </div> 64 66 </div>
+5 -1
src/styles/global.css
··· 913 913 display: flex; 914 914 flex-direction: column; 915 915 align-items: flex-start; 916 - gap: var(--space-3xs); 916 + gap: var(--space-xs); 917 917 min-width: min(100%, 16rem); 918 + } 919 + 920 + .footer-brand-block .brand-lockup { 921 + color: var(--color-ink); 918 922 } 919 923 920 924 .footer-whisper {