+4
-3
appview/pages/templates/goodfirstissues/index.html
+4
-3
appview/pages/templates/goodfirstissues/index.html
···
37
37
{{ else }}
38
38
{{ range .RepoGroups }}
39
39
<div class="mb-4 gap-1 flex flex-col drop-shadow-sm rounded bg-white dark:bg-gray-800">
40
-
<div class="flex px-6 pt-4 flex-row gap-1 items-center justify-between flex-wrap">
40
+
<div class="flex px-6 pt-4 flex-row gap-1 items-center justify-between">
41
41
<div class="font-medium dark:text-white flex items-center justify-between">
42
42
<div class="flex items-center min-w-0 flex-1 mr-2">
43
43
{{ if .Repo.Source }}
···
103
103
<div class="flex-shrink-0 flex items-center gap-2 text-gray-500 dark:text-gray-400">
104
104
<span>
105
105
<div class="inline-flex items-center gap-1">
106
-
{{ i "message-square" "w-3 h-3" }}
106
+
{{ i "message-square" "w-3 h-3 md:hidden" }}
107
107
{{ len .Comments }}
108
+
<span class="hidden md:inline">comment{{ if ne (len .Comments) 1 }}s{{ end }}</span>
108
109
</div>
109
110
</span>
110
111
<span class="before:content-['·'] before:select-none"></span>
111
112
<span class="text-sm">
112
-
{{ template "repo/fragments/shortTimeAgo" .Created }}
113
+
{{ template "repo/fragments/time" .Created }}
113
114
</span>
114
115
<div class="hidden md:inline-flex md:gap-1">
115
116
{{ $labelState := .Labels }}
+12
-13
appview/pages/templates/layouts/base.html
+12
-13
appview/pages/templates/layouts/base.html
···
24
24
<title>{{ block "title" . }}{{ end }} · tangled</title>
25
25
{{ block "extrameta" . }}{{ end }}
26
26
</head>
27
-
<body class="min-h-screen flex flex-col gap-4 bg-slate-100 dark:bg-gray-900 dark:text-white transition-colors duration-200">
27
+
<body class="min-h-screen grid grid-cols-1 grid-rows-[min-content_auto_min-content] gap-4 bg-slate-100 dark:bg-gray-900 dark:text-white transition-colors duration-200"
28
+
style="grid-template-columns: minmax(1rem, 1fr) minmax(auto, 1024px) minmax(1rem, 1fr);">
28
29
{{ block "topbarLayout" . }}
29
-
<header class="w-full bg-white dark:bg-gray-800 col-span-full md:col-span-1 md:col-start-2" style="z-index: 20;">
30
+
<header class="px-1 col-span-full md:col-span-1 md:col-start-2" style="z-index: 20;">
30
31
31
32
{{ if .LoggedInUser }}
32
33
<div id="upgrade-banner"
···
40
41
{{ end }}
41
42
42
43
{{ block "mainLayout" . }}
43
-
<div class="flex-grow">
44
-
<div class="max-w-screen-lg mx-auto flex flex-col gap-4">
45
-
{{ block "contentLayout" . }}
46
-
<main>
44
+
<div class="px-1 col-span-full md:col-span-1 md:col-start-2 flex flex-col gap-4">
45
+
{{ block "contentLayout" . }}
46
+
<main class="col-span-1 md:col-span-8">
47
47
{{ block "content" . }}{{ end }}
48
48
</main>
49
-
{{ end }}
50
-
51
-
{{ block "contentAfterLayout" . }}
52
-
<main>
49
+
{{ end }}
50
+
51
+
{{ block "contentAfterLayout" . }}
52
+
<main class="col-span-1 md:col-span-8">
53
53
{{ block "contentAfter" . }}{{ end }}
54
54
</main>
55
-
{{ end }}
56
-
</div>
55
+
{{ end }}
57
56
</div>
58
57
{{ end }}
59
58
60
59
{{ block "footerLayout" . }}
61
-
<footer class="bg-white dark:bg-gray-800 mt-12">
60
+
<footer class="px-1 col-span-full md:col-span-1 md:col-start-2 mt-12">
62
61
{{ template "layouts/fragments/footer" . }}
63
62
</footer>
64
63
{{ end }}
+1
-1
appview/pages/templates/layouts/fragments/topbar.html
+1
-1
appview/pages/templates/layouts/fragments/topbar.html
···
1
1
{{ define "layouts/fragments/topbar" }}
2
-
<nav class="mx-auto space-x-4 px-6 py-2 rounded-b dark:text-white drop-shadow-sm">
2
+
<nav class="space-x-4 px-6 py-2 rounded-b bg-white dark:bg-gray-800 dark:text-white drop-shadow-sm">
3
3
<div class="flex justify-between p-0 items-center">
4
4
<div id="left-items">
5
5
<a href="/" hx-boost="true" class="text-2xl no-underline hover:no-underline flex items-center gap-2">
+5
-2
appview/pages/templates/timeline/fragments/goodfirstissues.html
+5
-2
appview/pages/templates/timeline/fragments/goodfirstissues.html
···
6
6
<div class="text-purple-500 dark:text-purple-400">Oct 2025</div>
7
7
<p>
8
8
Make your first contribution to an open-source project this October.
9
-
<em>good-first-issue</em> helps new contributors find easy ways to
10
-
start contributing to open-source projects.
9
+
</p>
10
+
<p>
11
+
<em>good-first-issue</em> is a collection of issues on open-source projects
12
+
that are easy ways for new contributors to give back to the projects
13
+
they love.
11
14
</p>
12
15
<span class="flex items-center gap-2 text-purple-500 dark:text-purple-400">
13
16
Browse issues {{ i "arrow-right" "size-4" }}
+1
-13
appview/state/gfi.go
+1
-13
appview/state/gfi.go
···
47
47
repoUris = append(repoUris, rl.RepoAt.String())
48
48
}
49
49
50
-
allIssues, err := db.GetIssuesPaginated(
50
+
allIssues, err := db.GetIssues(
51
51
s.db,
52
-
pagination.Page{
53
-
Limit: 500,
54
-
},
55
52
db.FilterIn("repo_at", repoUris),
56
53
db.FilterEq("open", 1),
57
54
)
···
86
83
}
87
84
88
85
sort.Slice(sortedGroups, func(i, j int) bool {
89
-
iIsTangled := sortedGroups[i].Repo.Did == consts.TangledDid
90
-
jIsTangled := sortedGroups[j].Repo.Did == consts.TangledDid
91
-
92
-
// If one is tangled and the other isn't, non-tangled comes first
93
-
if iIsTangled != jIsTangled {
94
-
return jIsTangled // true if j is tangled (i should come first)
95
-
}
96
-
97
-
// Both tangled or both not tangled: sort by name
98
86
return sortedGroups[i].Repo.Name < sortedGroups[j].Repo.Name
99
87
})
100
88