tangled
alpha
login
or
join now
citizen428.net
/
core
forked from
tangled.org/core
Monorepo for Tangled — https://tangled.org
0
fork
atom
overview
issues
pulls
pipelines
Compare changes
Choose any two refs to compare.
base:
txns
two-way-comms
tracing
three-easy-steps
test-pr-link
test-ci
tags-and-releases
summarize-rounds
stars
stacked-prs
spindle
settings-router
session-refresh
sandboxed-atmosphere
revert-telemetry
repotab-icons
repo-deletion
render-markup
remove-set-repo-at
release-artifacts
refactor-ks-client
reduce-dids
push-zxovstvplnok
push-zwoymssunvsp
push-zvuqkxuqzmlx
push-zvtqtworuppk
push-zvkrywwskknq
push-zunxqvqoqmoq
push-zrvypwzlqtvz
push-zrkqwwrtxvzn
push-zqrmrxxvrylu
push-zqqvxroypxvy
push-zomkuzmzokvl
push-znrkktvllqsp
push-znlsowpxwvvq
push-zlzkyrrnylxr
push-zklmrltkvxkq
push-yytstxoqlwmx
push-yynslowxntql
push-ywynwzosnrox
push-yuwoytzsmkvm
push-yulzrzunkznl
push-ytzxyplmvunn
push-ytvszwnnmymo
push-ytpxvpknlxun
push-ytkuzknmmrmn
push-yssxzpkyorwv
push-yqnqquktxqpx
push-ylvkxyvlmkyq
push-ykwytywspowp
push-xwxnuorpzwsu
push-xwotmtuuvokm
push-xvuvxolnykpl
push-xvrvnuvsmslv
push-xvnwyvuwwylt
push-xtzkpqpkmvvr
push-xtuxqqlytkws
push-xttmuzqzktwv
push-xsmwulupylxx
push-xopyykmxuqzw
push-xmplzvpqtnru
push-xlupzwtslltp
push-wzlvlnywrxrs
push-wzkqymznotmx
push-wyonpyyzurwl
push-wykupplnxytq
push-wxwpnnytwxsq
push-wxvwuxxzswmv
push-wvywrqlppxqo
push-wvwxxlyxrxlm
push-wukyptkosoux
push-wtmrprmomuus
push-wsxnywmtsnrp
push-wqzwpukkvnuw
push-wpkykovtqxnx
push-wnwpznvpzwqu
push-wnotmtoqlnvl
push-wmkmzrsvlkmk
push-wkwyolovuxvq
push-vyyrpsmynrwo
push-vyusnwqnmxwy
push-vynsusnqpmus
push-vwyomovpppwp
push-vwuuzxwwsvow
push-vvluoqoywsvp
push-vuzywsvmkwqn
push-vtunvupqotuo
push-vssvkowylwvx
push-vquoltwpkuny
push-vnxxyxursomy
push-vmxtqnzznxvk
push-vkywmxzkrnqx
push-uylxxnsupvlk
push-uwuymmkuwsrs
push-uwotwontksrz
push-uuyqkqmkmlsn
push-uruyyqupsmro
push-upnknovvnoqr
push-uotxnqrqnlyl
push-ummlkpsrvrvn
push-ukznmmplmlul
push-ukmxnzrlrpuo
push-tzyltlmtsznq
push-tyxzqwosmzuv
push-twskywooslyl
push-twnpklmstzor
push-twlxnytrpyuk
push-tvvnxqyykkwr
push-tvtwutsrtoxt
push-tultwuoxrmun
push-ttyzwxqtkpsl
push-tnwwtqxpoqpk
push-tlxunysxvxwk
push-tkxmuvxkylmy
push-tkusxvwknltw
push-synlttxvkzox
push-svtkmrzmrwky
push-stktrzvlltpw
push-sssuxsytslts
push-spvnpqlqqpkw
push-snyqozvrosmk
push-snktzuwttuvu
push-smsrusztuvwt
push-rvtqynpmozzy
push-rurrtsvmnvku
push-ruoqnsmttnxx
push-rtwrkkyllvkm
push-rtvxspsprvuv
push-rsrowlxunurk
push-rrsulrtnsmtw
push-rqzvvtnzkzvq
push-rqxyyurmpkps
push-rnztkppsvskw
push-rlorkkyzokzr
push-rlktrmqtttnn
push-qwnqkqnmovyn
push-qtrkvornpykm
push-qsmrouptzqkq
push-qruszvywputp
push-qrltzqmlrlln
push-qqwquvlysrxt
push-qqsspmnuxqwk
push-qqrowoolzppw
push-qoplqnlvlqqo
push-qnstkrpltlqu
push-qlzpkvltqlzm
push-qkpqsrknozxs
push-qkkmntrmxqly
push-pzwzzlwkkpnw
push-pzrysszkwwtk
push-pymywyqyumlo
push-pyllqzrprrny
push-pwqwlvnsqtqr
push-pvpnsqvvzuky
push-psqwruuwvwlo
push-prszwlupsoqz
push-ppstsspzpxrx
push-potvrpwlpwsl
push-pnknzwntuuwx
push-pmtpswykplzr
push-plpuqtyrprou
push-plmznxvyqrqw
push-pkyzqzmqunnl
push-pkqzkqmxotyz
push-pkklqwlqwoml
push-owwtwvxyzowl
push-ovsuzpqkpmlt
push-ovrqrxnpvroz
push-ossmlnsnvstq
push-ormxrmmzomqu
push-oovokvlkywly
push-okymwlupkook
push-nwslswprzvmx
push-nwrnkztxkovl
push-nupxprsykpzq
push-nsolyvvsyvzw
push-nqrqutkzxskl
push-nozqtwvsrvkx
push-nnuvlyptxsqy
push-nmwononozzxz
push-nlvzxwtrmryl
push-nlnnyywnokyn
push-mzupsvxpvqvx
push-mzsvpkottnnt
push-myqmppunmplu
push-mwkwusmyymno
push-mvmrzuxwmzvs
push-mutuoxwuokqw
push-mtsxyxnkznyy
push-mtqkyzxrqnnn
push-msvlvnlwuyxy
push-mrwusmywonor
push-mqkxnymrqmzz
push-mozrrovxmlou
push-mopllyvuuuls
push-monplorvolvl
push-momltwttmuyq
push-mntstlmzqrvs
push-mmxkmyvyuzlk
push-mmrtnyoskwoo
push-mmnuoyuqplyk
push-mlxxvvqpzvlw
push-mllunlokmuxp
push-lzkzortpuyyq
push-lyrpkknpnrus
push-lxxtrqtnnoxy
push-lvuknrupsyox
push-lrzzmtxokrxw
push-lnvnxmxlqkux
push-lnupvsypkuow
push-llqkvunvvzyv
push-ktsnmppqsnls
push-kstnoynmspqp
push-ksrsmmytwuul
push-kslplloylmlp
push-kpmvvnzwyosv
push-kltomzxpyoxq
pull-from-fork-pill
profile-timeline
profile-customizations
pr-actions
patch-requests
paginate-issues
packages-small
packages
oplog
opengraph
oauth
more-diff-stats
master
local-fragments
knot-xrpc
knot-cli
issues-edit
issue-224-part1
interdiff
improve-styling
improve-repo-name-checks
group-profile-timeline
format-patch
fork-repo
fork-pulls
fix-tw-dark
fix-resubmit
fix-refresh-issues
fix-knot-forks
fix-jetstream-bugs
fix-env-test
file-tree
fast-dev
enable-html
drop-at
diff-improvements
did-email-assoc
crash-repro-knot
consolidate-syntax-styles
compare-merge-base
commits-page
commit-verification
ci
camo
cache-busting
branch-prs-2
branch-prs
branch-fmt-patch
atprotate-pubkeys
all-repositories-page
add-migrations
v1.10.0-alpha
v1.9.1-alpha
v1.9.0-alpha
v1.8.1-alpha
v1.8.0-alpha
v1.7.0-alpha
v1.6.0-alpha
v1.5.0-alpha
v1.4.0-alpha
v1.3.0-alpha
v1.2.2-alpha
v1.2.1-alpha
v1.2.0-alpha
v1.1.2-alpha
v1.1.1-alpha
v1.1.0-alpha
v1.0.6-alpha
v1.0.5-alpha
v1.0.4-alpha
v1.0.3-alpha
v1.0.2-alpha
v1.0.1-alpha
v1.0.0-alpha
compare:
txns
two-way-comms
tracing
three-easy-steps
test-pr-link
test-ci
tags-and-releases
summarize-rounds
stars
stacked-prs
spindle
settings-router
session-refresh
sandboxed-atmosphere
revert-telemetry
repotab-icons
repo-deletion
render-markup
remove-set-repo-at
release-artifacts
refactor-ks-client
reduce-dids
push-zxovstvplnok
push-zwoymssunvsp
push-zvuqkxuqzmlx
push-zvtqtworuppk
push-zvkrywwskknq
push-zunxqvqoqmoq
push-zrvypwzlqtvz
push-zrkqwwrtxvzn
push-zqrmrxxvrylu
push-zqqvxroypxvy
push-zomkuzmzokvl
push-znrkktvllqsp
push-znlsowpxwvvq
push-zlzkyrrnylxr
push-zklmrltkvxkq
push-yytstxoqlwmx
push-yynslowxntql
push-ywynwzosnrox
push-yuwoytzsmkvm
push-yulzrzunkznl
push-ytzxyplmvunn
push-ytvszwnnmymo
push-ytpxvpknlxun
push-ytkuzknmmrmn
push-yssxzpkyorwv
push-yqnqquktxqpx
push-ylvkxyvlmkyq
push-ykwytywspowp
push-xwxnuorpzwsu
push-xwotmtuuvokm
push-xvuvxolnykpl
push-xvrvnuvsmslv
push-xvnwyvuwwylt
push-xtzkpqpkmvvr
push-xtuxqqlytkws
push-xttmuzqzktwv
push-xsmwulupylxx
push-xopyykmxuqzw
push-xmplzvpqtnru
push-xlupzwtslltp
push-wzlvlnywrxrs
push-wzkqymznotmx
push-wyonpyyzurwl
push-wykupplnxytq
push-wxwpnnytwxsq
push-wxvwuxxzswmv
push-wvywrqlppxqo
push-wvwxxlyxrxlm
push-wukyptkosoux
push-wtmrprmomuus
push-wsxnywmtsnrp
push-wqzwpukkvnuw
push-wpkykovtqxnx
push-wnwpznvpzwqu
push-wnotmtoqlnvl
push-wmkmzrsvlkmk
push-wkwyolovuxvq
push-vyyrpsmynrwo
push-vyusnwqnmxwy
push-vynsusnqpmus
push-vwyomovpppwp
push-vwuuzxwwsvow
push-vvluoqoywsvp
push-vuzywsvmkwqn
push-vtunvupqotuo
push-vssvkowylwvx
push-vquoltwpkuny
push-vnxxyxursomy
push-vmxtqnzznxvk
push-vkywmxzkrnqx
push-uylxxnsupvlk
push-uwuymmkuwsrs
push-uwotwontksrz
push-uuyqkqmkmlsn
push-uruyyqupsmro
push-upnknovvnoqr
push-uotxnqrqnlyl
push-ummlkpsrvrvn
push-ukznmmplmlul
push-ukmxnzrlrpuo
push-tzyltlmtsznq
push-tyxzqwosmzuv
push-twskywooslyl
push-twnpklmstzor
push-twlxnytrpyuk
push-tvvnxqyykkwr
push-tvtwutsrtoxt
push-tultwuoxrmun
push-ttyzwxqtkpsl
push-tnwwtqxpoqpk
push-tlxunysxvxwk
push-tkxmuvxkylmy
push-tkusxvwknltw
push-synlttxvkzox
push-svtkmrzmrwky
push-stktrzvlltpw
push-sssuxsytslts
push-spvnpqlqqpkw
push-snyqozvrosmk
push-snktzuwttuvu
push-smsrusztuvwt
push-rvtqynpmozzy
push-rurrtsvmnvku
push-ruoqnsmttnxx
push-rtwrkkyllvkm
push-rtvxspsprvuv
push-rsrowlxunurk
push-rrsulrtnsmtw
push-rqzvvtnzkzvq
push-rqxyyurmpkps
push-rnztkppsvskw
push-rlorkkyzokzr
push-rlktrmqtttnn
push-qwnqkqnmovyn
push-qtrkvornpykm
push-qsmrouptzqkq
push-qruszvywputp
push-qrltzqmlrlln
push-qqwquvlysrxt
push-qqsspmnuxqwk
push-qqrowoolzppw
push-qoplqnlvlqqo
push-qnstkrpltlqu
push-qlzpkvltqlzm
push-qkpqsrknozxs
push-qkkmntrmxqly
push-pzwzzlwkkpnw
push-pzrysszkwwtk
push-pymywyqyumlo
push-pyllqzrprrny
push-pwqwlvnsqtqr
push-pvpnsqvvzuky
push-psqwruuwvwlo
push-prszwlupsoqz
push-ppstsspzpxrx
push-potvrpwlpwsl
push-pnknzwntuuwx
push-pmtpswykplzr
push-plpuqtyrprou
push-plmznxvyqrqw
push-pkyzqzmqunnl
push-pkqzkqmxotyz
push-pkklqwlqwoml
push-owwtwvxyzowl
push-ovsuzpqkpmlt
push-ovrqrxnpvroz
push-ossmlnsnvstq
push-ormxrmmzomqu
push-oovokvlkywly
push-okymwlupkook
push-nwslswprzvmx
push-nwrnkztxkovl
push-nupxprsykpzq
push-nsolyvvsyvzw
push-nqrqutkzxskl
push-nozqtwvsrvkx
push-nnuvlyptxsqy
push-nmwononozzxz
push-nlvzxwtrmryl
push-nlnnyywnokyn
push-mzupsvxpvqvx
push-mzsvpkottnnt
push-myqmppunmplu
push-mwkwusmyymno
push-mvmrzuxwmzvs
push-mutuoxwuokqw
push-mtsxyxnkznyy
push-mtqkyzxrqnnn
push-msvlvnlwuyxy
push-mrwusmywonor
push-mqkxnymrqmzz
push-mozrrovxmlou
push-mopllyvuuuls
push-monplorvolvl
push-momltwttmuyq
push-mntstlmzqrvs
push-mmxkmyvyuzlk
push-mmrtnyoskwoo
push-mmnuoyuqplyk
push-mlxxvvqpzvlw
push-mllunlokmuxp
push-lzkzortpuyyq
push-lyrpkknpnrus
push-lxxtrqtnnoxy
push-lvuknrupsyox
push-lrzzmtxokrxw
push-lnvnxmxlqkux
push-lnupvsypkuow
push-llqkvunvvzyv
push-ktsnmppqsnls
push-kstnoynmspqp
push-ksrsmmytwuul
push-kslplloylmlp
push-kpmvvnzwyosv
push-kltomzxpyoxq
pull-from-fork-pill
profile-timeline
profile-customizations
pr-actions
patch-requests
paginate-issues
packages-small
packages
oplog
opengraph
oauth
more-diff-stats
master
local-fragments
knot-xrpc
knot-cli
issues-edit
issue-224-part1
interdiff
improve-styling
improve-repo-name-checks
group-profile-timeline
format-patch
fork-repo
fork-pulls
fix-tw-dark
fix-resubmit
fix-refresh-issues
fix-knot-forks
fix-jetstream-bugs
fix-env-test
file-tree
fast-dev
enable-html
drop-at
diff-improvements
did-email-assoc
crash-repro-knot
consolidate-syntax-styles
compare-merge-base
commits-page
commit-verification
ci
camo
cache-busting
branch-prs-2
branch-prs
branch-fmt-patch
atprotate-pubkeys
all-repositories-page
add-migrations
v1.10.0-alpha
v1.9.1-alpha
v1.9.0-alpha
v1.8.1-alpha
v1.8.0-alpha
v1.7.0-alpha
v1.6.0-alpha
v1.5.0-alpha
v1.4.0-alpha
v1.3.0-alpha
v1.2.2-alpha
v1.2.1-alpha
v1.2.0-alpha
v1.1.2-alpha
v1.1.1-alpha
v1.1.0-alpha
v1.0.6-alpha
v1.0.5-alpha
v1.0.4-alpha
v1.0.3-alpha
v1.0.2-alpha
v1.0.1-alpha
v1.0.0-alpha
go
+59
-54
7 changed files
expand all
collapse all
unified
split
appview
notify
merged_notifier.go
pages
templates
repo
issues
fragments
issueCommentHeader.html
issue.html
settings
access.html
spindles
fragments
addMemberModal.html
user
login.html
lexicons
actor
profile.json
+42
-50
appview/notify/merged_notifier.go
···
2
2
3
3
import (
4
4
"context"
5
5
+
"reflect"
6
6
+
"sync"
5
7
6
8
"tangled.org/core/appview/models"
7
9
)
···
16
18
17
19
var _ Notifier = &mergedNotifier{}
18
20
19
19
-
func (m *mergedNotifier) NewRepo(ctx context.Context, repo *models.Repo) {
20
20
-
for _, notifier := range m.notifiers {
21
21
-
notifier.NewRepo(ctx, repo)
21
21
+
// fanout calls the same method on all notifiers concurrently
22
22
+
func (m *mergedNotifier) fanout(method string, args ...any) {
23
23
+
var wg sync.WaitGroup
24
24
+
for _, n := range m.notifiers {
25
25
+
wg.Add(1)
26
26
+
go func(notifier Notifier) {
27
27
+
defer wg.Done()
28
28
+
v := reflect.ValueOf(notifier).MethodByName(method)
29
29
+
in := make([]reflect.Value, len(args))
30
30
+
for i, arg := range args {
31
31
+
in[i] = reflect.ValueOf(arg)
32
32
+
}
33
33
+
v.Call(in)
34
34
+
}(n)
22
35
}
36
36
+
wg.Wait()
37
37
+
}
38
38
+
39
39
+
func (m *mergedNotifier) NewRepo(ctx context.Context, repo *models.Repo) {
40
40
+
m.fanout("NewRepo", ctx, repo)
23
41
}
24
42
25
43
func (m *mergedNotifier) NewStar(ctx context.Context, star *models.Star) {
26
26
-
for _, notifier := range m.notifiers {
27
27
-
notifier.NewStar(ctx, star)
28
28
-
}
44
44
+
m.fanout("NewStar", ctx, star)
29
45
}
46
46
+
30
47
func (m *mergedNotifier) DeleteStar(ctx context.Context, star *models.Star) {
31
31
-
for _, notifier := range m.notifiers {
32
32
-
notifier.DeleteStar(ctx, star)
33
33
-
}
48
48
+
m.fanout("DeleteStar", ctx, star)
34
49
}
35
50
36
51
func (m *mergedNotifier) NewIssue(ctx context.Context, issue *models.Issue) {
37
37
-
for _, notifier := range m.notifiers {
38
38
-
notifier.NewIssue(ctx, issue)
39
39
-
}
52
52
+
m.fanout("NewIssue", ctx, issue)
40
53
}
54
54
+
41
55
func (m *mergedNotifier) NewIssueComment(ctx context.Context, comment *models.IssueComment) {
42
42
-
for _, notifier := range m.notifiers {
43
43
-
notifier.NewIssueComment(ctx, comment)
44
44
-
}
56
56
+
m.fanout("NewIssueComment", ctx, comment)
45
57
}
46
58
47
59
func (m *mergedNotifier) NewIssueClosed(ctx context.Context, issue *models.Issue) {
48
48
-
for _, notifier := range m.notifiers {
49
49
-
notifier.NewIssueClosed(ctx, issue)
50
50
-
}
60
60
+
m.fanout("NewIssueClosed", ctx, issue)
51
61
}
52
62
53
63
func (m *mergedNotifier) NewFollow(ctx context.Context, follow *models.Follow) {
54
54
-
for _, notifier := range m.notifiers {
55
55
-
notifier.NewFollow(ctx, follow)
56
56
-
}
64
64
+
m.fanout("NewFollow", ctx, follow)
57
65
}
66
66
+
58
67
func (m *mergedNotifier) DeleteFollow(ctx context.Context, follow *models.Follow) {
59
59
-
for _, notifier := range m.notifiers {
60
60
-
notifier.DeleteFollow(ctx, follow)
61
61
-
}
68
68
+
m.fanout("DeleteFollow", ctx, follow)
62
69
}
63
70
64
71
func (m *mergedNotifier) NewPull(ctx context.Context, pull *models.Pull) {
65
65
-
for _, notifier := range m.notifiers {
66
66
-
notifier.NewPull(ctx, pull)
67
67
-
}
72
72
+
m.fanout("NewPull", ctx, pull)
68
73
}
74
74
+
69
75
func (m *mergedNotifier) NewPullComment(ctx context.Context, comment *models.PullComment) {
70
70
-
for _, notifier := range m.notifiers {
71
71
-
notifier.NewPullComment(ctx, comment)
72
72
-
}
76
76
+
m.fanout("NewPullComment", ctx, comment)
73
77
}
74
78
75
79
func (m *mergedNotifier) NewPullMerged(ctx context.Context, pull *models.Pull) {
76
76
-
for _, notifier := range m.notifiers {
77
77
-
notifier.NewPullMerged(ctx, pull)
78
78
-
}
80
80
+
m.fanout("NewPullMerged", ctx, pull)
79
81
}
80
82
81
83
func (m *mergedNotifier) NewPullClosed(ctx context.Context, pull *models.Pull) {
82
82
-
for _, notifier := range m.notifiers {
83
83
-
notifier.NewPullClosed(ctx, pull)
84
84
-
}
84
84
+
m.fanout("NewPullClosed", ctx, pull)
85
85
}
86
86
87
87
func (m *mergedNotifier) UpdateProfile(ctx context.Context, profile *models.Profile) {
88
88
-
for _, notifier := range m.notifiers {
89
89
-
notifier.UpdateProfile(ctx, profile)
90
90
-
}
88
88
+
m.fanout("UpdateProfile", ctx, profile)
91
89
}
92
90
93
93
-
func (m *mergedNotifier) NewString(ctx context.Context, string *models.String) {
94
94
-
for _, notifier := range m.notifiers {
95
95
-
notifier.NewString(ctx, string)
96
96
-
}
91
91
+
func (m *mergedNotifier) NewString(ctx context.Context, s *models.String) {
92
92
+
m.fanout("NewString", ctx, s)
97
93
}
98
94
99
99
-
func (m *mergedNotifier) EditString(ctx context.Context, string *models.String) {
100
100
-
for _, notifier := range m.notifiers {
101
101
-
notifier.EditString(ctx, string)
102
102
-
}
95
95
+
func (m *mergedNotifier) EditString(ctx context.Context, s *models.String) {
96
96
+
m.fanout("EditString", ctx, s)
103
97
}
104
98
105
99
func (m *mergedNotifier) DeleteString(ctx context.Context, did, rkey string) {
106
106
-
for _, notifier := range m.notifiers {
107
107
-
notifier.DeleteString(ctx, did, rkey)
108
108
-
}
100
100
+
m.fanout("DeleteString", ctx, did, rkey)
109
101
}
+2
-2
appview/pages/templates/repo/issues/fragments/issueCommentHeader.html
···
34
34
35
35
{{ define "editIssueComment" }}
36
36
<a
37
37
-
class="text-gray-500 dark:text-gray-400 flex gap-1 items-center group"
37
37
+
class="text-gray-500 dark:text-gray-400 flex gap-1 items-center group cursor-pointer"
38
38
hx-get="/{{ .RepoInfo.FullName }}/issues/{{ .Issue.IssueId }}/comment/{{ .Comment.Id }}/edit"
39
39
hx-swap="outerHTML"
40
40
hx-target="#comment-body-{{.Comment.Id}}">
···
44
44
45
45
{{ define "deleteIssueComment" }}
46
46
<a
47
47
-
class="text-gray-500 dark:text-gray-400 flex gap-1 items-center group"
47
47
+
class="text-gray-500 dark:text-gray-400 flex gap-1 items-center group cursor-pointer"
48
48
hx-delete="/{{ .RepoInfo.FullName }}/issues/{{ .Issue.IssueId }}/comment/{{ .Comment.Id }}/"
49
49
hx-confirm="Are you sure you want to delete your comment?"
50
50
hx-swap="outerHTML"
+2
-2
appview/pages/templates/repo/issues/issue.html
···
84
84
85
85
{{ define "editIssue" }}
86
86
<a
87
87
-
class="text-gray-500 dark:text-gray-400 flex gap-1 items-center group"
87
87
+
class="text-gray-500 dark:text-gray-400 flex gap-1 items-center group cursor-pointer"
88
88
hx-get="/{{ .RepoInfo.FullName }}/issues/{{ .Issue.IssueId }}/edit"
89
89
hx-swap="innerHTML"
90
90
hx-target="#issue-{{.Issue.IssueId}}">
···
94
94
95
95
{{ define "deleteIssue" }}
96
96
<a
97
97
-
class="text-gray-500 dark:text-gray-400 flex gap-1 items-center group"
97
97
+
class="text-gray-500 dark:text-gray-400 flex gap-1 items-center group cursor-pointer"
98
98
hx-delete="/{{ .RepoInfo.FullName }}/issues/{{ .Issue.IssueId }}/"
99
99
hx-confirm="Are you sure you want to delete your issue?"
100
100
hx-swap="none">
+2
appview/pages/templates/repo/settings/access.html
···
83
83
</label>
84
84
<p class="text-sm text-gray-500 dark:text-gray-400">Collaborators can push to this repository.</p>
85
85
<input
86
86
+
autocapitalize="none"
87
87
+
autocorrect="off"
86
88
type="text"
87
89
id="add-collaborator"
88
90
name="collaborator"
+2
appview/pages/templates/spindles/fragments/addMemberModal.html
···
30
30
</label>
31
31
<p class="text-sm text-gray-500 dark:text-gray-400">Members can register repositories and run workflows on this spindle.</p>
32
32
<input
33
33
+
autocapitalize="none"
34
34
+
autocorrect="off"
33
35
type="text"
34
36
id="member-did-{{ .Id }}"
35
37
name="member"
+3
appview/pages/templates/user/login.html
···
29
29
<div class="flex flex-col">
30
30
<label for="handle">handle</label>
31
31
<input
32
32
+
autocapitalize="none"
33
33
+
autocorrect="off"
34
34
+
autocomplete="username"
32
35
type="text"
33
36
id="handle"
34
37
name="handle"
+6
lexicons/actor/profile.json
···
55
55
"maxGraphemes": 40,
56
56
"maxLength": 400
57
57
},
58
58
+
"pronouns": {
59
59
+
"type": "string",
60
60
+
"description": "Free-form preferred pronouns text.",
61
61
+
"maxGraphemes": 40,
62
62
+
"maxLength": 400
63
63
+
},
58
64
"pinnedRepositories": {
59
65
"type": "array",
60
66
"description": "Any ATURI, it is up to appviews to validate these fields.",