engineering blog at https://blog.tangled.sh

update templates and use experimental vite

anirudh.fi 9a1651f8 757d0288

verified
Changed files
+51 -25
pages
templates
partials
+1 -1
config.yaml
··· 1 1 preBuild: 2 2 - tailwindcss -i input.css -o static/tw.css 3 - title: tangled.sh engineering blog 3 + title: tangled engineering 4 4 # note the trailing slash! 5 5 url: "https://tangled.sh" 6 6 description: ""
+9 -9
flake.lock
··· 69 69 "nixpkgs": "nixpkgs_2" 70 70 }, 71 71 "locked": { 72 - "lastModified": 1737395755, 73 - "narHash": "sha256-p69EGNDGdCtdKcuu7y8VAC1q2thV5mpEQDs8/N7xliQ=", 74 - "owner": "icyphox", 75 - "repo": "go-vite", 76 - "rev": "589694da6b9c219b6627980ac86d1a6435d0176a", 77 - "type": "github" 72 + "lastModified": 1744745948, 73 + "narHash": "sha256-8Sda70LhLVDXChifA52xdaIyCS5Sr7UB2bN0Qe4v4eY=", 74 + "ref": "refs/heads/master", 75 + "rev": "92c9c9f24b0f0b78c4a81ab2d3490c756813fe71", 76 + "revCount": 89, 77 + "type": "git", 78 + "url": "https://tangled.sh/@icyphox.sh/vite" 78 79 }, 79 80 "original": { 80 - "owner": "icyphox", 81 - "repo": "go-vite", 82 - "type": "github" 81 + "type": "git", 82 + "url": "https://tangled.sh/@icyphox.sh/vite" 83 83 } 84 84 } 85 85 },
+4 -1
flake.nix
··· 3 3 4 4 inputs = { 5 5 nixpkgs.url = "github:nixos/nixpkgs"; 6 - vite.url = "github:icyphox/go-vite"; 6 + vite = { 7 + url = "git+https://tangled.sh/@icyphox.sh/vite"; 8 + flake = true; 9 + }; 7 10 inter-fonts-src = { 8 11 url = "https://github.com/rsms/inter/releases/download/v4.1/Inter-4.1.zip"; 9 12 flake = false;
+6 -5
pages/blog/intro.md
··· 5 5 title: introducing tangled 6 6 subtitle: a git collaboration platform, built on atproto 7 7 date: 2025-03-02 8 - author: Anirudh Oppiliappan 9 - authorEmail: anirudh@tangled.sh 10 - authorHandle: icyphox.sh 8 + authors: 9 + - name: Anirudh 10 + email: anirudh@tangled.sh 11 + handle: icyphox.sh 11 12 --- 12 13 13 14 ··· 48 49 Collaborating on code isn't easy, and the tools and workflows we use 49 50 should feel natural and stay out of the way. Tangled's architecture 50 51 enables common workflows to work as you'd expect, all while remaining 51 - decentralized. 52 + decentralized. 52 53 53 54 We believe that atproto has greatly simplfied one of the hardest parts 54 55 of social media: having your friends on it. Today, we're rolling out 55 56 invite-only access to Tangled -- join us on IRC at `#tangled` on 56 - [libera.chat](https://libera.chat) and we'll get you set up. 57 + [libera.chat](https://libera.chat) and we'll get you set up. 57 58 58 59 **Update**: Tangled is open to public, simply login at 59 60 [tangled.sh/login](https://tangled.sh/login)! Have fun!
+9 -5
pages/blog/pulls.md
··· 3 3 template: 4 4 slug: pulls 5 5 title: the lifecycle of a pull request 6 - subtitle: We shipped a bunch of PR features recently; here's how we built it 6 + subtitle: we shipped a bunch of PR features recently; here's how we built it 7 7 date: 2025-04-15 8 - author: Anirudh Oppiliappan 9 - authorEmail: anirudh@tangled.sh 10 - authorHandle: icyphox.sh 8 + authors: 9 + - name: Anirudh 10 + email: anirudh@tangled.sh 11 + handle: icyphox.sh 12 + - name: Akshay 13 + email: akshay@tangled.sh 14 + handle: oppili.bsky.social 11 15 draft: true 12 16 --- 13 17 ··· 62 66 63 67 ## fine, we'll make a patch ourselves 64 68 65 - [!!!also write about the sh.tangled.repo.patch lexicon] 69 + 66 70 67 71 68 72 <figure class="max-w-[550px] m-auto flex flex-col items-center justify-center">
+1 -1
tailwind.config.js
··· 33 33 typography: { 34 34 DEFAULT: { 35 35 css: { 36 - maxWidth: "70ch", 36 + maxWidth: "75ch", 37 37 pre: { 38 38 backgroundColor: colors.gray[100], 39 39 color: colors.black,
+4
templates/partials/head.html
··· 3 3 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> 4 4 <meta charset="UTF-8" /> 5 5 <meta name="HandheldFriendly" content="true" /> 6 + <meta property="og:title" content="{{ .Meta.title }}" /> 7 + <meta property="og:description" content="{{ .Meta.subtitle }}" /> 8 + <meta property="og:url" content="https://blog.tangled.sh/{{ .Meta.slug }}" /> 9 + <meta property="og:type" content="website" /> 6 10 <link rel="icon" type="image/png" sizes="16x16" href="/static/icon.png" /> 7 11 <link rel="icon" type="image/ico" sizes="16x16" href="/favicon.ico" /> 8 12 <link rel="alternate" type="application/rss+xml" href="/blog/feed.xml" />
+17 -3
templates/text.html
··· 1 1 <!doctype html> 2 2 <html lang=en> 3 3 <head> 4 - {{ template "partials/head.html" }} 4 + {{ template "partials/head.html" . }} 5 5 <meta name="description" content="{{ index .Meta "subtitle" }}"> 6 6 </head> 7 7 <title> ··· 22 22 23 23 <span class="mx-2 select-none">&middot;</span> 24 24 25 - by <a href="https://bsky.app/profile/{{.Meta.authorHandle}}">{{ .Meta.author }}</a> 25 + by 26 + {{ $authors := index .Meta "authors" }} 27 + {{ if eq (len $authors) 2 }} 28 + <a href="https://bsky.app/profile/{{ (index $authors 0).handle }}">{{ (index $authors 0).name }}</a> 29 + & 30 + <a href="https://bsky.app/profile/{{ (index $authors 1).handle }}"> 31 + {{ (index $authors 1).name }} 32 + </a> 33 + {{ else }} 34 + {{ range $author := $authors }} 35 + <a href="https://bsky.app/profile/{{ $author.handle }}"> 36 + {{ $author.name }} 37 + </a> 38 + {{ end }} 39 + {{ end }} 26 40 </p> 27 41 28 - {{ if eq .Meta.draft "true" }} 42 + {{ if .Meta.draft }} 29 43 <h1 class="title px-6 mb-0">{{ index .Meta "title" }} <span 30 44 class="text-red-500">[draft]</span></h1> 31 45 {{ else }}