+21
-2
appview/pages/templates/labels/fragments/label.html
+21
-2
appview/pages/templates/labels/fragments/label.html
···<span class="flex items-center gap-2 font-normal normal-case rounded py-1 px-2 border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800 text-sm">-{{ $d.Name }}{{ if not $d.ValueType.IsNull }}/{{ template "labelVal" (dict "def" $d "val" $v) }}{{ end }}···
-127
appview/pages/templates/repo/fragments/addLabelModal.html
-127
appview/pages/templates/repo/fragments/addLabelModal.html
···-No labels defined yet. You can define custom labels in <a class="underline" href="/{{ .RepoInfo.FullName }}/settings">settings</a>.-class="btn w-1/2 flex items-center gap-2 text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300"-<input type="checkbox" id="op-{{$id}}" name="op-{{$id}}" value="add" {{if $isChecked}}checked{{end}} class="peer">-<label for="op-{{$id}}" class="flex items-center gap-2 text-base">{{ template "labels/fragments/labelDef" $def }}</label>-<div class="w-full hidden peer-checked:block">{{ template "valueTypeInput" (dict "valueType" $def.ValueType "value" $val "key" $key) }}</div>-<select name="operand-val" class="w-full p-1 rounded border border-gray-300 bg-white dark:bg-gray-800 dark:text-white dark:border-gray-600">-<select name="operand-val" class="w-full p-1 rounded border border-gray-300 bg-white dark:bg-gray-800 dark:text-white dark:border-gray-600">
+208
appview/pages/templates/repo/fragments/editLabelPanel.html
+208
appview/pages/templates/repo/fragments/editLabelPanel.html
···+{{ $labelStyle := "flex items-center gap-2 rounded py-1 px-2 border border-gray-200 dark:border-gray-700 text-sm bg-white dark:bg-gray-800 text-black dark:text-white" }}+<input type="checkbox" id="{{ $fieldName }}" name="{{ $fieldName }}" value="null" {{if $isChecked}}checked{{end}}>+<input type="checkbox" name="{{ $fieldName }}" value="{{$variant}}" {{if $state.ContainsLabelAndVal $k $variant}}checked{{end}}>+<input type="radio" name="{{ $fieldName }}" value="{{$variant}}" {{if $state.ContainsLabelAndVal $k $variant}}checked{{end}}>+<button type="button" onClick="this.insertAdjacentHTML('beforebegin', document.getElementById('tpl-{{ .Id }}').innerHTML)" class="w-full btn flex items-center gap-2">+<button type="button" onClick="this.parentElement.remove()" class="btn flex items-center gap-2 text-red-400 dark:text-red-500">+class="btn w-1/2 flex items-center gap-2 text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300 group">
+16
appview/pages/templates/repo/fragments/labelSectionHeader.html
+16
appview/pages/templates/repo/fragments/labelSectionHeader.html
···
+3
appview/pages/templates/repo/fragments/labelSectionHeaderText.html
+3
appview/pages/templates/repo/fragments/labelSectionHeaderText.html
+138
-86
appview/pages/templates/repo/settings/fragments/addLabelDefModal.html
+138
-86
appview/pages/templates/repo/settings/fragments/addLabelDefModal.html
···-<p class="text-gray-500 dark:text-gray-400">Labels can have a name and a value. Set the value type to "none" to create a simple label.</p>-<input class="w-full" type="text" id="label-name" name="name" required placeholder="improvement"/>+{{ $base := "py-2 text-sm font-normal normal-case block hover:no-underline text-center cursor-pointer bg-gray-100 dark:bg-gray-800 shadow-inner border border-gray-200 dark:border-gray-700" }}+<label for="basic-tab" class="{{$base}} peer-checked/basic:bg-white peer-checked/basic:dark:bg-gray-700 peer-checked/basic:shadow-sm rounded-l">+<label for="kv-tab" class="{{$base}} peer-checked/kv:bg-white peer-checked/kv:dark:bg-gray-700 peer-checked/kv:shadow-sm rounded-r">-<select id="value-type" name="valueType" class="w-full p-3 rounded border border-gray-300 bg-white dark:bg-gray-800 dark:text-white dark:border-gray-600">-<span class="group-open:hidden inline text-gray-500 dark:text-gray-400">{{ i "square-plus" "w-4 h-4" }}</span>-<span class="hidden group-open:inline text-gray-500 dark:text-gray-400">{{ i "square-minus" "w-4 h-4" }}</span>-<input type="text" id="enumValues" name="enumValues" placeholder="value1, value2, value3" class="w-full"/>-<p class="text-sm text-gray-400 dark:text-gray-500 mt-1">Enter comma-separated list of permitted values.</p>-<select id="valueFormat" name="valueFormat" class="w-full p-3 rounded border border-gray-300 bg-white dark:bg-gray-800 dark:text-white dark:border-gray-600">-<select id="scope" name="scope" class="w-full p-3 rounded border border-gray-300 bg-white dark:bg-gray-800 dark:text-white dark:border-gray-600">+<input class="w-full" type="text" id="label-name" name="name" required placeholder="improvement"/>···+<select id="value-type" name="valueType" class="w-full p-3 rounded border border-gray-300 bg-white dark:bg-gray-800 dark:text-white dark:border-gray-600">-class="btn w-1/2 flex items-center gap-2 text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300"+<input type="text" id="enumValues" name="enumValues" placeholder="value1, value2, value3" class="w-full"/>+<select id="valueFormat" name="valueFormat" class="w-full p-3 rounded border border-gray-300 bg-white dark:bg-gray-800 dark:text-white dark:border-gray-600">+class="btn w-1/2 flex items-center gap-2 text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300"
+4
-7
appview/pages/templates/repo/issues/issues.html
+4
-7
appview/pages/templates/repo/issues/issues.html
···<a href="/{{ $.RepoInfo.FullName }}/issues/{{ .IssueId }}" class="text-gray-500 dark:text-gray-400">{{ len .Comments }} comment{{$s}}</a>
+25
-27
appview/pages/templates/repo/settings/fragments/labelListing.html
+25
-27
appview/pages/templates/repo/settings/fragments/labelListing.html
···-class="btn text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300 gap-2 group"
+9
consts/consts.go
+9
consts/consts.go
+5
-25
appview/db/artifact.go
+5
-25
appview/db/artifact.go
·········
+30
appview/models/artifact.go
+30
appview/models/artifact.go
···
+21
appview/models/collaborator.go
+21
appview/models/collaborator.go
···
+16
appview/models/email.go
+16
appview/models/email.go
+26
-57
appview/db/follow.go
+26
-57
appview/db/follow.go
···query := `select user_did, subject_did, followed_at, rkey from follows where user_did = ? and subject_did = ?`······+func GetFollowerFollowingCounts(e Execer, dids []string) (map[string]models.FollowStats, error) {··················-func getFollowStatuses(e Execer, userDid string, subjectDids []string) (map[string]FollowStatus, error) {+func getFollowStatuses(e Execer, userDid string, subjectDids []string) (map[string]models.FollowStatus, error) {···-func GetFollowStatuses(e Execer, userDid string, subjectDids []string) (map[string]FollowStatus, error) {+func GetFollowStatuses(e Execer, userDid string, subjectDids []string) (map[string]models.FollowStatus, error) {
+38
appview/models/follow.go
+38
appview/models/follow.go
···
+4
-3
appview/state/follow.go
+4
-3
appview/state/follow.go
············
+2
-1
appview/knots/knots.go
+2
-1
appview/knots/knots.go
······
+4
-4
appview/state/git_http.go
+4
-4
appview/state/git_http.go
·········
+194
appview/models/issue.go
+194
appview/models/issue.go
···+return syntax.ATURI(fmt.Sprintf("at://%s/%s/%s", i.Did, tangled.RepoIssueCommentNSID, i.Rkey))+func IssueCommentFromRecord(did, rkey string, record tangled.RepoIssueComment) (*IssueComment, error) {
+3
-2
appview/validator/issue.go
+3
-2
appview/validator/issue.go
······
+14
appview/models/language.go
+14
appview/models/language.go
-173
appview/db/oauth.go
-173
appview/db/oauth.go
···
+177
appview/models/profile.go
+177
appview/models/profile.go
···
+17
-139
appview/db/pipeline.go
+17
-139
appview/db/pipeline.go
····································
+130
appview/models/pipeline.go
+130
appview/models/pipeline.go
···
+3
-2
appview/repo/repo_util.go
+3
-2
appview/repo/repo_util.go
······
+2
-1
appview/state/spindlestream.go
+2
-1
appview/state/spindlestream.go
······
+2
-1
appview/commitverify/verify.go
+2
-1
appview/commitverify/verify.go
······func GetVerifiedCommits(e db.Execer, emailToDid map[string]string, ndCommits []types.NiceDiff) (VerifiedCommits, error) {
+7
-26
appview/db/pubkeys.go
+7
-26
appview/db/pubkeys.go
·········if err := rows.Scan(&publicKey.Key, &publicKey.Name, &publicKey.Did, &publicKey.Rkey, &createdAt); err != nil {···rows, err := e.Query(`select did, key, name, rkey, created from public_keys where did = ?`, did)···if err := rows.Scan(&publicKey.Did, &publicKey.Key, &publicKey.Name, &publicKey.Rkey, &createdAt); err != nil {
+25
appview/models/pubkey.go
+25
appview/models/pubkey.go
···
+7
-16
appview/db/punchcard.go
+7
-16
appview/db/punchcard.go
·········
+14
appview/models/punchcard.go
+14
appview/models/punchcard.go
+4
-43
appview/db/registration.go
+4
-43
appview/db/registration.go
······
+44
appview/models/registration.go
+44
appview/models/registration.go
···
+14
-63
appview/db/reaction.go
+14
-63
appview/db/reaction.go
···-func AddReaction(e Execer, reactedByDid string, threadAt syntax.ATURI, kind ReactionKind, rkey string) error {+func AddReaction(e Execer, reactedByDid string, threadAt syntax.ATURI, kind models.ReactionKind, rkey string) error {query := `insert or ignore into reactions (reacted_by_did, thread_at, kind, rkey) values (?, ?, ?, ?)`-func GetReaction(e Execer, reactedByDid string, threadAt syntax.ATURI, kind ReactionKind) (*Reaction, error) {+func GetReaction(e Execer, reactedByDid string, threadAt syntax.ATURI, kind models.ReactionKind) (*models.Reaction, error) {···-func DeleteReaction(e Execer, reactedByDid string, threadAt syntax.ATURI, kind ReactionKind) error {+func DeleteReaction(e Execer, reactedByDid string, threadAt syntax.ATURI, kind models.ReactionKind) error {_, err := e.Exec(`delete from reactions where reacted_by_did = ? and thread_at = ? and kind = ?`, reactedByDid, threadAt, kind)···+func GetReactionCount(e Execer, threadAt syntax.ATURI, kind models.ReactionKind) (int, error) {`select count(reacted_by_did) from reactions where thread_at = ? and kind = ?`, threadAt, kind).Scan(&count)···+func GetReactionCountMap(e Execer, threadAt syntax.ATURI) (map[models.ReactionKind]int, error) {-func GetReactionStatus(e Execer, userDid string, threadAt syntax.ATURI, kind ReactionKind) bool {+func GetReactionStatus(e Execer, userDid string, threadAt syntax.ATURI, kind models.ReactionKind) bool {···-func GetReactionStatusMap(e Execer, userDid string, threadAt syntax.ATURI) map[ReactionKind]bool {+func GetReactionStatusMap(e Execer, userDid string, threadAt syntax.ATURI) map[models.ReactionKind]bool {
+57
appview/models/reaction.go
+57
appview/models/reaction.go
···
+2
-1
appview/state/reaction.go
+2
-1
appview/state/reaction.go
······
+4
-9
appview/db/signup.go
+4
-9
appview/db/signup.go
···
+10
appview/models/signup.go
+10
appview/models/signup.go
+9
-27
appview/db/spindle.go
+9
-27
appview/db/spindle.go
··················
+25
appview/models/spindle.go
+25
appview/models/spindle.go
···
+17
appview/models/star.go
+17
appview/models/star.go
···
+5
-110
appview/db/strings.go
+5
-110
appview/db/strings.go
············
+95
appview/models/string.go
+95
appview/models/string.go
···
+2
-3
appview/posthog/notifier.go
+2
-3
appview/posthog/notifier.go
·········
+3
-2
appview/strings/strings.go
+3
-2
appview/strings/strings.go
·········
+27
appview/validator/string.go
+27
appview/validator/string.go
···
+11
-32
appview/db/timeline.go
+11
-32
appview/db/timeline.go
···+func MakeTimeline(e Execer, limit int, loggedInUserDid string) ([]models.TimelineEvent, error) {···+func getTimelineRepos(e Execer, limit int, loggedInUserDid string) ([]models.TimelineEvent, error) {·········+func getTimelineStars(e Execer, limit int, loggedInUserDid string) ([]models.TimelineEvent, error) {······-func getTimelineFollows(e Execer, limit int, loggedInUserDid string) ([]TimelineEvent, error) {+func getTimelineFollows(e Execer, limit int, loggedInUserDid string) ([]models.TimelineEvent, error) {······
+23
appview/models/timeline.go
+23
appview/models/timeline.go
···
+1
-1
appview/db/label.go
+1
-1
appview/db/label.go
+30
appview/pages/funcmap_test.go
+30
appview/pages/funcmap_test.go
···
+1
-1
appview/reporesolver/resolver.go
+1
-1
appview/reporesolver/resolver.go
···
+6
.tangled/workflows/test.yml
+6
.tangled/workflows/test.yml
+1
-1
knotserver/ingester.go
+1
-1
knotserver/ingester.go
···
+11
appview/db/star.go
+11
appview/db/star.go
······
+2
-3
appview/repo/router.go
+2
-3
appview/repo/router.go
······
+10
-33
appview/pages/templates/timeline/fragments/timeline.html
+10
-33
appview/pages/templates/timeline/fragments/timeline.html
······<span class="text-gray-700 dark:text-gray-400 text-xs">{{ template "repo/fragments/time" $follow.FollowedAt }}</span>-<div class="py-4 px-6 drop-shadow-sm rounded bg-white dark:bg-gray-800 flex flex-col md:flex-row md:items-center gap-4">-<span class="font-bold dark:text-white overflow-hidden text-ellipsis whitespace-nowrap max-w-full">{{ $subjectHandle | truncateAt30 }}</span>-<div class="text-sm flex items-center gap-2 my-2 overflow-hidden text-ellipsis whitespace-nowrap max-w-full">-<span id="followers"><a href="/{{ $subjectHandle }}?tab=followers">{{ .Followers }} followers</a></span>-<span id="following"><a href="/{{ $subjectHandle }}?tab=following">{{ .Following }} following</a></span>-{{ template "user/fragments/follow" (dict "UserDid" $follow.SubjectDid "FollowStatus" $event.FollowStatus) }}
+8
-1
appview/pages/templates/user/followers.html
+8
-1
appview/pages/templates/user/followers.html
···
+8
-1
appview/pages/templates/user/following.html
+8
-1
appview/pages/templates/user/following.html
···
+6
-2
appview/pages/templates/user/fragments/follow.html
+6
-2
appview/pages/templates/user/fragments/follow.html
······-{{ if eq .FollowStatus.String "IsNotFollowing" }}{{ i "user-round-plus" "w-4 h-4" }} follow{{ else }}{{ i "user-round-minus" "w-4 h-4" }} unfollow{{ end }}
+10
-10
appview/pages/templates/user/fragments/repoCard.html
+10
-10
appview/pages/templates/user/fragments/repoCard.html
···<div class="py-4 px-6 gap-1 flex flex-col drop-shadow-sm rounded bg-white dark:bg-gray-800 min-h-32">+<a href="/{{ $repoOwner }}/{{ .Name }}" class="truncate min-w-0">{{ $repoOwner }}/{{ .Name }}</a>
+1
appview/state/profile.go
+1
appview/state/profile.go
+58
-3
appview/posthog/notifier.go
appview/notify/posthog/notifier.go
+58
-3
appview/posthog/notifier.go
appview/notify/posthog/notifier.go
·········+func (n *posthogNotifier) NewIssueComment(ctx context.Context, comment *models.IssueComment) {
+12
appview/notify/merged_notifier.go
+12
appview/notify/merged_notifier.go
···
+4
appview/notify/notifier.go
+4
appview/notify/notifier.go
······
+4
-11
appview/pages/templates/errors/500.html
+4
-11
appview/pages/templates/errors/500.html
···<div class="w-16 h-16 mx-auto mb-4 rounded-full bg-red-100 dark:bg-red-900/30 flex items-center justify-center">···-<div class="bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded p-3 text-sm text-yellow-800 dark:text-yellow-200">
+173
appview/pages/templates/user/settings/notifications.html
+173
appview/pages/templates/user/settings/notifications.html
···+<div class="bg-white dark:bg-gray-800 p-6 rounded relative w-full mx-auto drop-shadow-sm dark:text-white">+Choose which notifications you want to receive when activity happens on your repositories and profile.+<div class="flex flex-col rounded border border-gray-200 dark:border-gray-700 divide-y divide-gray-200 dark:divide-gray-700 w-full">+<input type="checkbox" name="issue_commented" {{if .Preferences.IssueCommented}}checked{{end}}>+<input type="checkbox" name="email_notifications" {{if .Preferences.EmailNotifications}}checked{{end}}>
+13
-4
appview/pages/templates/layouts/fragments/topbar.html
+13
-4
appview/pages/templates/layouts/fragments/topbar.html
···<nav class="space-x-4 px-6 py-2 rounded-b bg-white dark:bg-gray-800 dark:text-white drop-shadow-sm">+<a href="/" hx-boost="true" class="text-2xl no-underline hover:no-underline flex items-center gap-2">+<span class="font-normal not-italic text-xs rounded bg-gray-100 dark:bg-gray-700 px-1 hidden md:inline">···<div class="absolute flex flex-col right-0 mt-4 p-4 rounded w-48 bg-white dark:bg-gray-800 dark:text-white border border-gray-200 dark:border-gray-700">···
+2
-2
appview/pages/templates/strings/put.html
+2
-2
appview/pages/templates/strings/put.html
···
-33
knotserver/git/git.go
-33
knotserver/git/git.go
······
-4
knotserver/http_util.go
-4
knotserver/http_util.go
+1
-1
appview/ingester.go
+1
-1
appview/ingester.go
···return fmt.Errorf("failed to find label def for key: %s, expected: %q", o.OperandKey, slices.Collect(maps.Keys(actx.Defs)))
+4
-1
appview/validator/validator.go
+4
-1
appview/validator/validator.go
···
+5
-4
appview/models/label.go
+5
-4
appview/models/label.go
···
+1
-3
knotserver/git/tag.go
+1
-3
knotserver/git/tag.go
·········
+1
-1
knotserver/xrpc/repo_blob.go
+1
-1
knotserver/xrpc/repo_blob.go
···
+10
api/tangled/repotree.go
+10
api/tangled/repotree.go
···
+15
-17
appview/pages/markup/format.go
+15
-17
appview/pages/markup/format.go
······
+2
-2
appview/pages/templates/repo/fragments/readme.html
+2
-2
appview/pages/templates/repo/fragments/readme.html
···<div class="mt-4 rounded bg-white dark:bg-gray-800 drop-shadow-sm w-full mx-auto overflow-hidden">-<div class="px-4 py-2 bg-gray-50 dark:bg-gray-700 border-b border-gray-200 dark:border-gray-600 flex items-center gap-2">
+24
knotserver/xrpc/repo_tree.go
+24
knotserver/xrpc/repo_tree.go
·········
+19
lexicons/repo/tree.json
+19
lexicons/repo/tree.json
······
+7
-5
types/repo.go
+7
-5
types/repo.go
···
+224
appview/pages/templates/brand/brand.html
+224
appview/pages/templates/brand/brand.html
···+<main class="col-span-full md:col-span-10 bg-white dark:bg-gray-800 drop-shadow-sm rounded p-6 md:px-10">+Tangled's logo and mascot is <strong>Dolly</strong>, the first ever <em>cloned</em> mammal. Please+All assets are served as SVGs, and can be downloaded by right-clicking and clicking "Save image as".+<div class="border border-gray-200 dark:border-gray-700 p-8 sm:p-16 bg-gray-50 dark:bg-gray-100 rounded">+This is the preferred version of the logotype, featuring dark text and elements, ideal for light+<div class="border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-100 p-8 sm:p-12 rounded">+<div class="border border-gray-200 dark:border-gray-700 p-8 sm:p-16 bg-gray-50 dark:bg-gray-100 rounded">
+13
-6
appview/pages/templates/legal/privacy.html
+13
-6
appview/pages/templates/legal/privacy.html
···+<main class="col-span-full md:col-span-10 bg-white dark:bg-gray-800 drop-shadow-sm rounded p-6 md:px-10">
+13
-6
appview/pages/templates/legal/terms.html
+13
-6
appview/pages/templates/legal/terms.html
···+<main class="col-span-full md:col-span-10 bg-white dark:bg-gray-800 drop-shadow-sm rounded p-6 md:px-10">
+4
-2
appview/config/config.go
+4
-2
appview/config/config.go
···
+7
appview/pages/templates/repo/fork.html
+7
appview/pages/templates/repo/fork.html
···<form hx-post="/{{ .RepoInfo.FullName }}/fork" class="space-y-12" hx-swap="none" hx-indicator="#spinner">+class="w-full p-2 border rounded bg-gray-100 dark:bg-gray-700 dark:text-white dark:border-gray-600" />
+11
-7
appview/repo/repo.go
+11
-7
appview/repo/repo.go
···
+140
appview/db/db.go
+140
appview/db/db.go
···+at_uri text generated always as ('at://' || owner_did || '/' || 'sh.tangled.repo.pull' || '/' || rkey) stored,+state integer not null default 0 check (state in (0, 1, 2, 3)), -- closed, open, merged, deleted
+44
-1
appview/models/pull.go
+44
-1
appview/models/pull.go
·········
+26
appview/pages/templates/repo/fragments/participants.html
+26
appview/pages/templates/repo/fragments/participants.html
···+class="rounded-full h-8 w-8 mr-1 border-2 border-gray-100 dark:border-gray-900 z-{{sub 5 $i}}0"
+30
-12
appview/pages/templates/repo/pulls/pull.html
+30
-12
appview/pages/templates/repo/pulls/pull.html
···+<section class="bg-white dark:bg-gray-800 p-6 rounded relative w-full mx-auto dark:text-white">···-<div class="rounded drop-shadow-sm bg-white dark:bg-gray-800 p-2 text-gray-500 dark:text-gray-400">+<div class="flex-1 rounded drop-shadow-sm bg-white dark:bg-gray-800 p-2 text-gray-500 dark:text-gray-400">······-<div id="comment-{{$c.ID}}" class="bg-white dark:bg-gray-800 rounded drop-shadow-sm py-2 px-4 relative w-full md:max-w-3/5 md:w-fit">+<div id="comment-{{$c.ID}}" class="bg-white dark:bg-gray-800 rounded drop-shadow-sm py-2 px-4 relative w-full">
+7
appview/pages/templates/repo/pulls/pulls.html
+7
appview/pages/templates/repo/pulls/pulls.html
···
+8
-48
appview/notify/db/db.go
+8
-48
appview/notify/db/db.go
························
+18
-13
appview/db/notifications.go
+18
-13
appview/db/notifications.go
······
+29
-36
appview/notifications/notifications.go
+29
-36
appview/notifications/notifications.go
·········-notifications, err := db.GetNotificationsWithEntities(n.db, page, db.FilterEq("recipient_did", userDid))···
+48
-15
appview/pages/templates/notifications/list.html
+48
-15
appview/pages/templates/notifications/list.html
···-<div class="bg-white dark:bg-gray-800 p-6 rounded relative w-full mx-auto drop-shadow-sm dark:text-white">-<p class="text-gray-600 dark:text-gray-400">When you receive notifications, they'll appear here.</p>+<div class="bg-white dark:bg-gray-800 p-6 rounded relative w-full mx-auto drop-shadow-sm dark:text-white">+<p class="text-gray-600 dark:text-gray-400">When you receive notifications, they'll appear here.</p>+class="btn flex items-center gap-2 no-underline hover:no-underline dark:text-white dark:hover:bg-gray-700"+class="btn flex items-center gap-2 no-underline hover:no-underline dark:text-white dark:hover:bg-gray-700"
+1
-1
appview/pagination/page.go
+1
-1
appview/pagination/page.go
+27
-208
appview/pages/templates/notifications/fragments/item.html
+27
-208
appview/pages/templates/notifications/fragments/item.html
···-w-full mx-auto rounded drop-shadow-sm dark:text-white bg-white dark:bg-gray-800 px-2 md:px-6 py-4 transition-colors-{{if not .Read}}bg-blue-50 dark:bg-blue-900/20 border border-blue-500 dark:border-sky-800{{end}}+w-full mx-auto rounded drop-shadow-sm dark:text-white bg-white dark:bg-gray-800 px-2 md:px-6 py-4 transition-colors+{{if not .Read}}bg-blue-50 dark:bg-blue-800/20 border border-blue-500 dark:border-sky-800{{end}}+<span class="text-sm text-gray-500 dark:text-gray-400">{{ template "notificationSummary" . }}</span>-<span class="text-sm text-gray-500 dark:text-gray-400">{{ template "notificationSummary" . }}</span>···-<span class="font-medium text-gray-900 dark:text-white">{{resolve .Repo.Did}}/{{.Repo.Name}}</span>-<span class="font-medium text-gray-900 dark:text-white">{{resolve .Repo.Did}}/{{.Repo.Name}}</span>-<span class="{{if not .Read}}text-blue-600 dark:text-blue-400{{else}}text-gray-500 dark:text-gray-400{{end}}">
+1
-1
nix/pkgs/knot-unwrapped.nix
+1
-1
nix/pkgs/knot-unwrapped.nix
+2
-2
appview/db/pulls.go
+2
-2
appview/db/pulls.go
······
+1
-1
appview/pages/templates/repo/fragments/cloneDropdown.html
+1
-1
appview/pages/templates/repo/fragments/cloneDropdown.html
+1
-1
docs/spindle/pipeline.md
+1
-1
docs/spindle/pipeline.md
···- `branch`: This is a **required** field that defines which branches the workflow should run for. If used with the `push` event, commits to the branch(es) listed here will trigger the workflow. If used with the `pull_request` event, updates to pull requests targeting the branch(es) listed here will trigger the workflow. This field has no effect with the `manual` event.-For example, if you'd like define a workflow that runs when commits are pushed to the `main` and `develop` branches, or when pull requests that target the `main` branch are updated, or manually, you can do so with:+For example, if you'd like to define a workflow that runs when commits are pushed to the `main` and `develop` branches, or when pull requests that target the `main` branch are updated, or manually, you can do so with:
+1
-1
knotserver/config/config.go
+1
-1
knotserver/config/config.go
···
+3
appview/pages/templates/layouts/base.html
+3
appview/pages/templates/layouts/base.html
···<link rel="preload" href="/static/fonts/InterVariable.woff2" as="font" type="font/woff2" crossorigin />
+1
appview/pages/templates/user/completeSignup.html
+1
appview/pages/templates/user/completeSignup.html
+1
appview/pages/templates/user/signup.html
+1
appview/pages/templates/user/signup.html
···
+12
-1
appview/repo/index.go
+12
-1
appview/repo/index.go
···