+1
-1
config.yaml
+1
-1
config.yaml
+9
-9
flake.lock
+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
+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
+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
+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
+1
-1
tailwind.config.js
+4
templates/partials/head.html
+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
+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">·</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 }}