7a339e4c51e414ae09b6aee1cb93b43fcbb45752
- Author
- TheEdgeOfRage <git@theedgeofrage.com>
- Committer
- TheEdgeOfRage <git@theedgeofrage.com>
- Date
Message
Diff
This diff is truncated to protect this page.
1diff --git a/Makefile b/Makefile
2index 7897d3525f103f895b4ecf332b1a01b72e425e1c..9a987c3b22333708877dbfc5ee7f789382ec664f 100644
3--- a/Makefile
4+++ b/Makefile
5@@ -12,8 +12,6 @@ bin/migrate: bin
6 GOBIN=$(PWD)/bin go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@v4.19.1
7 bin/air: bin
8 GOBIN=$(PWD)/bin go install github.com/air-verse/air@v1.65.1
9-bin/templ: bin
10- GOBIN=$(PWD)/bin go install github.com/a-h/templ/cmd/templ@v0.3.1001
11 bin/govulncheck: bin
12 GOBIN=$(PWD)/bin go install golang.org/x/vuln/cmd/govulncheck@v1.2.0
13
14@@ -37,8 +35,8 @@ test:
15 air: bin/air
16 @./bin/air -c .air.toml
17
18-templ: bin/templ
19- bin/templ generate
20+templ:
21+ go tool templ generate
22
23 build: templ
24 go build -o dist/ytrssil ./cmd/main.go
25diff --git a/go.mod b/go.mod
26index 6a0c24f911bb4ecd70031416f668ba16193c8897..47754b99002db5cf7ac18b755d27e089dacb67e4 100644
27--- a/go.mod
28+++ b/go.mod
29@@ -17,12 +17,17 @@ require (
30
31 require (
32 github.com/CAFxX/httpcompression v0.0.9 // indirect
33+ github.com/a-h/parse v0.0.0-20250122154542-74294addb73e // indirect
34 github.com/andybalholm/brotli v1.2.0 // indirect
35 github.com/bytedance/gopkg v0.1.3 // indirect
36 github.com/bytedance/sonic v1.15.0 // indirect
37 github.com/bytedance/sonic/loader v0.5.0 // indirect
38+ github.com/cenkalti/backoff/v4 v4.3.0 // indirect
39+ github.com/cli/browser v1.3.0 // indirect
40 github.com/cloudwego/base64x v0.1.6 // indirect
41 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
42+ github.com/fatih/color v1.16.0 // indirect
43+ github.com/fsnotify/fsnotify v1.7.0 // indirect
44 github.com/gabriel-vasile/mimetype v1.4.12 // indirect
45 github.com/gin-contrib/sse v1.1.0 // indirect
46 github.com/go-playground/locales v0.14.1 // indirect
47@@ -38,9 +43,11 @@ require (
48 github.com/klauspost/cpuid/v2 v2.3.0 // indirect
49 github.com/leodido/go-urn v1.4.0 // indirect
50 github.com/lib/pq v1.10.9 // indirect
51+ github.com/mattn/go-colorable v0.1.13 // indirect
52 github.com/mattn/go-isatty v0.0.20 // indirect
53 github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
54 github.com/modern-go/reflect2 v1.0.2 // indirect
55+ github.com/natefinch/atomic v1.0.1 // indirect
56 github.com/pelletier/go-toml/v2 v2.2.4 // indirect
57 github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
58 github.com/quic-go/qpack v0.6.0 // indirect
59@@ -52,10 +59,14 @@ require (
60 go.mongodb.org/mongo-driver/v2 v2.5.0 // indirect
61 golang.org/x/arch v0.22.0 // indirect
62 golang.org/x/crypto v0.48.0 // indirect
63+ golang.org/x/mod v0.32.0 // indirect
64 golang.org/x/net v0.51.0 // indirect
65 golang.org/x/sync v0.19.0 // indirect
66 golang.org/x/sys v0.41.0 // indirect
67 golang.org/x/text v0.34.0 // indirect
68+ golang.org/x/tools v0.41.0 // indirect
69 google.golang.org/protobuf v1.36.10 // indirect
70 gopkg.in/yaml.v3 v3.0.1 // indirect
71 )
72+
73+tool github.com/a-h/templ/cmd/templ
74diff --git a/go.sum b/go.sum
75index c32e71ef49710f9b060145c3df291b5ff93e26cb..edf6d20fbb1c4f7367b84f4093f843eaa055aa32 100644
76--- a/go.sum
77+++ b/go.sum
78@@ -4,6 +4,8 @@ github.com/CAFxX/httpcompression v0.0.9 h1:0ue2X8dOLEpxTm8tt+OdHcgA+gbDge0OqFQWG
79 github.com/CAFxX/httpcompression v0.0.9/go.mod h1:XX8oPZA+4IDcfZ0A71Hz0mZsv/YJOgYygkFhizVPilM=
80 github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
81 github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
82+github.com/a-h/parse v0.0.0-20250122154542-74294addb73e h1:HjVbSQHy+dnlS6C3XajZ69NYAb5jbGNfHanvm1+iYlo=
83+github.com/a-h/parse v0.0.0-20250122154542-74294addb73e/go.mod h1:3mnrkvGpurZ4ZrTDbYU84xhwXW2TjTKShSwjRi2ihfQ=
84 github.com/a-h/templ v0.3.1020 h1:ypAT/L5ySWEnZ6Zft/5yfoWXYYkhFNvEFOeeqecg4tw=
85 github.com/a-h/templ v0.3.1020/go.mod h1:A2DlK61v+K+NRoGnhmYbNYVmtYHcFO5/AisMvBdDxTM=
86 github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
87@@ -15,6 +17,10 @@ github.com/bytedance/sonic v1.15.0 h1:/PXeWFaR5ElNcVE84U0dOHjiMHQOwNIx3K4ymzh/uS
88 github.com/bytedance/sonic v1.15.0/go.mod h1:tFkWrPz0/CUCLEF4ri4UkHekCIcdnkqXw9VduqpJh0k=
89 github.com/bytedance/sonic/loader v0.5.0 h1:gXH3KVnatgY7loH5/TkeVyXPfESoqSBSBEiDd5VjlgE=
90 github.com/bytedance/sonic/loader v0.5.0/go.mod h1:AR4NYCk5DdzZizZ5djGqQ92eEhCCcdf5x77udYiSJRo=
91+github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
92+github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
93+github.com/cli/browser v1.3.0 h1:LejqCrpWr+1pRqmEPDGnTZOjsMe7sehifLynZJuqJpo=
94+github.com/cli/browser v1.3.0/go.mod h1:HH8s+fOAxjhQoBUAsKuPCbqUuxZDhQ2/aD+SzsEfBTk=
95 github.com/cloudwego/base64x v0.1.6 h1:t11wG9AECkCDk5fMSoxmufanudBtJ+/HemLstXDLI2M=
96 github.com/cloudwego/base64x v0.1.6/go.mod h1:OFcloc187FXDaYHvrNIjxSe8ncn0OOM8gEHfghB2IPU=
97 github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI=
98@@ -37,8 +43,12 @@ github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4
99 github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
100 github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
101 github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
102+github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
103+github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
104 github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
105 github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
106+github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
107+github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
108 github.com/gabriel-vasile/mimetype v1.4.12 h1:e9hWvmLYvtp846tLHam2o++qitpguFiYCKbn0w9jyqw=
109 github.com/gabriel-vasile/mimetype v1.4.12/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s=
110 github.com/gin-contrib/sse v1.1.0 h1:n0w2GMuUpWDVp7qSpvze6fAu9iRxJY4Hmj6AmBOU05w=
111@@ -96,6 +106,9 @@ github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=
112 github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI=
113 github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
114 github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
115+github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
116+github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
117+github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
118 github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
119 github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
120 github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0=
121@@ -109,6 +122,8 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G
122 github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
123 github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
124 github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
125+github.com/natefinch/atomic v1.0.1 h1:ZPYKxkqQOx3KZ+RsbnP/YsgvxWQPGxjC0oBt2AhwV0A=
126+github.com/natefinch/atomic v1.0.1/go.mod h1:N/D/ELrljoqDyT3rZrsUmtsuzvHkeB/wWjHV22AZRbM=
127 github.com/oklog/ulid/v2 v2.1.1 h1:suPZ4ARWLOJLegGFiZZ1dFAkqzhMjL3J1TzI+5wHz8s=
128 github.com/oklog/ulid/v2 v2.1.1/go.mod h1:rcEKHmBBKfef9DhnvX7y1HZBYxjXb0cP5ExxNsTT1QQ=
129 github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
130@@ -176,15 +191,20 @@ golang.org/x/arch v0.22.0 h1:c/Zle32i5ttqRXjdLyyHZESLD/bB90DCU1g9l/0YBDI=
131 golang.org/x/arch v0.22.0/go.mod h1:dNHoOeKiyja7GTvF9NJS1l3Z2yntpQNzgrjh1cU103A=
132 golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts=
133 golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos=
134+golang.org/x/mod v0.32.0 h1:9F4d3PHLljb6x//jOyokMv3eX+YDeepZSEo3mFJy93c=
135+golang.org/x/mod v0.32.0/go.mod h1:SgipZ/3h2Ci89DlEtEXWUk/HteuRin+HHhN+WbNhguU=
136 golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo=
137 golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y=
138 golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=
139 golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
140+golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
141 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
142 golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k=
143 golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
144 golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk=
145 golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA=
146+golang.org/x/tools v0.41.0 h1:a9b8iMweWG+S0OBnlU36rzLp20z1Rp10w+IY2czHTQc=
147+golang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg=
148 google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE=
149 google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
150 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
151diff --git a/pages/add_video_modal_templ.go b/pages/add_video_modal_templ.go
152index 12cc8a0f10dce1bb4f9282d1b2d5332ea5b54b00..f4447d3cb9af9f3cb6dafc09eb7e66ba98c54960 100644
153--- a/pages/add_video_modal_templ.go
154+++ b/pages/add_video_modal_templ.go
155@@ -1,6 +1,6 @@
156 // Code generated by templ - DO NOT EDIT.
157
158-// templ: version: v0.3.1001
159+// templ: version: v0.3.1020
160
161 package pages
162
163diff --git a/pages/auth_templ.go b/pages/auth_templ.go
164index d6a0b95605bd02f32287882f33ab75b6cfb805bf..5276033f6f414da7b6c2676ae76dbaca46961bdf 100644
165--- a/pages/auth_templ.go
166+++ b/pages/auth_templ.go
167@@ -1,6 +1,6 @@
168 // Code generated by templ - DO NOT EDIT.
169
170-// templ: version: v0.3.1001
171+// templ: version: v0.3.1020
172 package pages
173
174 //lint:file-ignore SA4006 This context is only used if a nested component is present.
175diff --git a/pages/channels_templ.go b/pages/channels_templ.go
176index 669da7c83ff798f20f9b8121b3396c3b103e46af..4f3f6357eb735ccd4d2905b2470693b2b50116c0 100644
177--- a/pages/channels_templ.go
178+++ b/pages/channels_templ.go
179@@ -1,6 +1,6 @@
180 // Code generated by templ - DO NOT EDIT.
181
182-// templ: version: v0.3.1001
183+// templ: version: v0.3.1020
184 package pages
185
186 //lint:file-ignore SA4006 This context is only used if a nested component is present.
187@@ -40,11 +40,11 @@ func unsubscribeModal(channelID string) templ.Component {
188 return templ_7745c5c3_Err
189 }
190 var templ_7745c5c3_Var2 string
191- templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("unsubscribe-modal-%s", channelID))
192+ templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprintf("unsubscribe-modal-%s", channelID))
193 if templ_7745c5c3_Err != nil {
194 return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/channels.templ`, Line: 10, Col: 76}
195 }
196- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2))
197+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var2)
198 if templ_7745c5c3_Err != nil {
199 return templ_7745c5c3_Err
200 }
201@@ -53,11 +53,11 @@ func unsubscribeModal(channelID string) templ.Component {
202 return templ_7745c5c3_Err
203 }
204 var templ_7745c5c3_Var3 string
205- templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("@post('/channels/%s/unsubscribe')", channelID))
206+ templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprintf("@post('/channels/%s/unsubscribe')", channelID))
207 if templ_7745c5c3_Err != nil {
208 return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/channels.templ`, Line: 26, Col: 81}
209 }
210- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
211+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var3)
212 if templ_7745c5c3_Err != nil {
213 return templ_7745c5c3_Err
214 }
215@@ -100,11 +100,11 @@ func shortsToggle(channel models.Channel) templ.Component {
216 return templ_7745c5c3_Err
217 }
218 var templ_7745c5c3_Var6 string
219- templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(templ.CSSClasses(templ_7745c5c3_Var5).String())
220+ templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var5).String())
221 if templ_7745c5c3_Err != nil {
222 return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/channels.templ`, Line: 1, Col: 0}
223 }
224- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6))
225+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var6)
226 if templ_7745c5c3_Err != nil {
227 return templ_7745c5c3_Err
228 }
229@@ -113,11 +113,11 @@ func shortsToggle(channel models.Channel) templ.Component {
230 return templ_7745c5c3_Err
231 }
232 var templ_7745c5c3_Var7 string
233- templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("$enable = %t; @post('/channels/%s/toggle-shorts')", !channel.EnableShorts, channel.ID))
234+ templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprintf("$enable = %t; @post('/channels/%s/toggle-shorts')", !channel.EnableShorts, channel.ID))
235 if templ_7745c5c3_Err != nil {
236 return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/channels.templ`, Line: 40, Col: 117}
237 }
238- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7))
239+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var7)
240 if templ_7745c5c3_Err != nil {
241 return templ_7745c5c3_Err
242 }
243@@ -126,11 +126,11 @@ func shortsToggle(channel models.Channel) templ.Component {
244 return templ_7745c5c3_Err
245 }
246 var templ_7745c5c3_Var8 string
247- templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(toggleLabel(channel.EnableShorts))
248+ templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.ResolveAttributeValue(toggleLabel(channel.EnableShorts))
249 if templ_7745c5c3_Err != nil {
250 return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/channels.templ`, Line: 41, Col: 43}
251 }
252- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8))
253+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var8)
254 if templ_7745c5c3_Err != nil {
255 return templ_7745c5c3_Err
256 }
257@@ -182,11 +182,11 @@ func ChannelCard(channel models.Channel) templ.Component {
258 return templ_7745c5c3_Err
259 }
260 var templ_7745c5c3_Var10 string
261- templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("channel-card-%s", channel.ID))
262+ templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprintf("channel-card-%s", channel.ID))
263 if templ_7745c5c3_Err != nil {
264 return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/channels.templ`, Line: 69, Col: 53}
265 }
266- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10))
267+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var10)
268 if templ_7745c5c3_Err != nil {
269 return templ_7745c5c3_Err
270 }
271@@ -208,11 +208,11 @@ func ChannelCard(channel models.Channel) templ.Component {
272 return templ_7745c5c3_Err
273 }
274 var templ_7745c5c3_Var11 string
275- templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(channel.ImageURL)
276+ templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.ResolveAttributeValue(channel.ImageURL)
277 if templ_7745c5c3_Err != nil {
278 return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/channels.templ`, Line: 75, Col: 28}
279diff --git a/pages/error_templ.go b/pages/error_templ.go
280index 5987f7d6b7862c6002c891fc8802260832db5c3a..0eaa53232f894e51be1345da4bcc8e261fdc57db 100644
281--- a/pages/error_templ.go
282+++ b/pages/error_templ.go
283@@ -1,6 +1,6 @@
284 // Code generated by templ - DO NOT EDIT.
285
286-// templ: version: v0.3.1001
287+// templ: version: v0.3.1020
288 package pages
289
290 //lint:file-ignore SA4006 This context is only used if a nested component is present.
291diff --git a/pages/main_templ.go b/pages/main_templ.go
292index f131e7ec632a6cd7541749c428618301642e1e96..78a45e6f85f4ec9f0e9061bbd91c5279f3849a32 100644
293--- a/pages/main_templ.go
294+++ b/pages/main_templ.go
295@@ -1,6 +1,6 @@
296 // Code generated by templ - DO NOT EDIT.
297
298-// templ: version: v0.3.1001
299+// templ: version: v0.3.1020
300 package pages
301
302 //lint:file-ignore SA4006 This context is only used if a nested component is present.
303diff --git a/pages/navbar.templ b/pages/navbar.templ
304index 6b590a3ccf8651a8bce5e5616da5ffa178b89109..e86314cdd3758de00e063803c8620d581c92e116 100644
305--- a/pages/navbar.templ
306+++ b/pages/navbar.templ
307@@ -32,7 +32,7 @@ templ navbar(route string) {
308 </a>
309 if route != "auth" {
310 <ul id="nav-buttons" class="navbar-nav me-auto mb-0 flex-row">
311- <li class="nav-item me-1 me-lg-2">
312+ <li class="nav-item me-1 me-lg-2 d-lg-none">
313 <button
314 type="button"
315 class="btn btn-primary"
316diff --git a/pages/navbar_templ.go b/pages/navbar_templ.go
317index 60e329fa0659fcdf7e7de3e59036884bf3cca722..64950f5309795815f1cad00bacb1e610d9b5d494 100644
318--- a/pages/navbar_templ.go
319+++ b/pages/navbar_templ.go
320@@ -1,6 +1,6 @@
321 // Code generated by templ - DO NOT EDIT.
322
323-// templ: version: v0.3.1001
324+// templ: version: v0.3.1020
325 package pages
326
327 //lint:file-ignore SA4006 This context is only used if a nested component is present.
328@@ -58,7 +58,7 @@ func navbar(route string) templ.Component {
329 return templ_7745c5c3_Err
330 }
331 if route != "auth" {
332diff --git a/pages/new_videos_templ.go b/pages/new_videos_templ.go
333index 0f60c5e7292e0e8332b0dded741bd3be6623c5f3..ba34ace8b0108f676c0b6ea08f4e0f8395317e29 100644
334--- a/pages/new_videos_templ.go
335+++ b/pages/new_videos_templ.go
336@@ -1,6 +1,6 @@
337 // Code generated by templ - DO NOT EDIT.
338
339-// templ: version: v0.3.1001
340+// templ: version: v0.3.1020
341 package pages
342
343 //lint:file-ignore SA4006 This context is only used if a nested component is present.
344@@ -41,11 +41,11 @@ func ProgressBar(video models.Video) templ.Component {
345 return templ_7745c5c3_Err
346 }
347 var templ_7745c5c3_Var2 string
348- templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("progress-%s", video.ID))
349+ templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprintf("progress-%s", video.ID))
350 if templ_7745c5c3_Err != nil {
351 return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 11, Col: 48}
352 }
353- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2))
354+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var2)
355 if templ_7745c5c3_Err != nil {
356 return templ_7745c5c3_Err
357 }
358@@ -72,11 +72,11 @@ func ProgressBar(video models.Video) templ.Component {
359 return templ_7745c5c3_Err
360 }
361 var templ_7745c5c3_Var4 string
362- templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("progress-%s", video.ID))
363+ templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprintf("progress-%s", video.ID))
364 if templ_7745c5c3_Err != nil {
365 return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 15, Col: 48}
366 }
367- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
368+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var4)
369 if templ_7745c5c3_Err != nil {
370 return templ_7745c5c3_Err
371 }
372@@ -143,11 +143,11 @@ func thumbnail(video models.Video) templ.Component {
373 return templ_7745c5c3_Err
374 }
375 var templ_7745c5c3_Var7 string
376- templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("https://img.youtube.com/vi/%s/0.jpg", video.ID))
377+ templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprintf("https://img.youtube.com/vi/%s/0.jpg", video.ID))
378 if templ_7745c5c3_Err != nil {
379 return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 30, Col: 70}
380 }
381- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7))
382+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var7)
383 if templ_7745c5c3_Err != nil {
384 return templ_7745c5c3_Err
385 }
386@@ -156,11 +156,11 @@ func thumbnail(video models.Video) templ.Component {
387 return templ_7745c5c3_Err
388 }
389 var templ_7745c5c3_Var8 string
390- templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(video.Title)
391+ templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.ResolveAttributeValue(video.Title)
392 if templ_7745c5c3_Err != nil {
393 return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 32, Col: 21}
394 }
395- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8))
396+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var8)
397 if templ_7745c5c3_Err != nil {
398 return templ_7745c5c3_Err
399 }
400@@ -174,11 +174,11 @@ func thumbnail(video models.Video) templ.Component {
401 return templ_7745c5c3_Err
402 }
403 var templ_7745c5c3_Var9 string
404- templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("https://img.youtube.com/vi/%s/0.jpg", video.ID))
405+ templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprintf("https://img.youtube.com/vi/%s/0.jpg", video.ID))
406 if templ_7745c5c3_Err != nil {
407 return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 46, Col: 70}
408 }
409- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9))
410+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var9)
411 if templ_7745c5c3_Err != nil {
412 return templ_7745c5c3_Err
413 }
414@@ -187,11 +187,11 @@ func thumbnail(video models.Video) templ.Component {
415 return templ_7745c5c3_Err
416 }
417 var templ_7745c5c3_Var10 string
418- templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(video.Title)
419+ templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.ResolveAttributeValue(video.Title)
420 if templ_7745c5c3_Err != nil {
421 return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 48, Col: 21}
422 }
423- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10))
424+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var10)
425 if templ_7745c5c3_Err != nil {
426 return templ_7745c5c3_Err
427 }
428@@ -262,11 +262,11 @@ func VideoCard(video models.Video) templ.Component {
429 return templ_7745c5c3_Err
430 }
431 var templ_7745c5c3_Var13 string
432- templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("video-card-%s", video.ID))
433+ templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprintf("video-card-%s", video.ID))
434 if templ_7745c5c3_Err != nil {
435 return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 74, Col: 49}
436diff --git a/pages/resolution_modal_templ.go b/pages/resolution_modal_templ.go
437index de33504a0de42376c51695e125a13c55960cc16c..e40e1ecd5d203e828ab2d22c8b7b21348793b297 100644
438--- a/pages/resolution_modal_templ.go
439+++ b/pages/resolution_modal_templ.go
440@@ -1,6 +1,6 @@
441 // Code generated by templ - DO NOT EDIT.
442
443-// templ: version: v0.3.1001
444+// templ: version: v0.3.1020
445 package pages
446
447 //lint:file-ignore SA4006 This context is only used if a nested component is present.
448diff --git a/pages/subscription_templ.go b/pages/subscription_templ.go
449index 02178f6cd2e57f0f07a05697f79a609b7d1c11d0..b5bc76b94d91476e0661c938a9dcc83c7ab4cd5c 100644
450--- a/pages/subscription_templ.go
451+++ b/pages/subscription_templ.go
452@@ -1,6 +1,6 @@
453 // Code generated by templ - DO NOT EDIT.
454
455-// templ: version: v0.3.1001
456+// templ: version: v0.3.1020
457 package pages
458
459 //lint:file-ignore SA4006 This context is only used if a nested component is present.
460diff --git a/pages/watched_videos_templ.go b/pages/watched_videos_templ.go
461index a2b5e1af706cc4fa9272e7116e14aad26c8a7c49..fd224cf21fe66be0b42770df78e841476a8525d1 100644
462--- a/pages/watched_videos_templ.go
463+++ b/pages/watched_videos_templ.go
464@@ -1,6 +1,6 @@
465 // Code generated by templ - DO NOT EDIT.
466
467-// templ: version: v0.3.1001
468+// templ: version: v0.3.1020
469 package pages
470
471 //lint:file-ignore SA4006 This context is only used if a nested component is present.
472@@ -100,11 +100,11 @@ func watchedVideoCard(video models.Video) templ.Component {
473 return templ_7745c5c3_Err
474 }
475 var templ_7745c5c3_Var6 string
476- templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("@patch('/videos/%s/unwatch')", video.ID))
477+ templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprintf("@patch('/videos/%s/unwatch')", video.ID))
478 if templ_7745c5c3_Err != nil {
479 return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/watched_videos.templ`, Line: 26, Col: 74}
480 }
481- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6))
482+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var6)
483 if templ_7745c5c3_Err != nil {
484 return templ_7745c5c3_Err
485 }
486@@ -159,11 +159,11 @@ func WatchedVideosPage(videos []models.Video, currentPage int) templ.Component {
487 return templ_7745c5c3_Err
488 }
489 var templ_7745c5c3_Var9 string
490- templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("video-card-%s", video.ID))
491+ templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprintf("video-card-%s", video.ID))
492 if templ_7745c5c3_Err != nil {
493 return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/watched_videos.templ`, Line: 40, Col: 52}
494 }
495- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9))
496+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var9)
497 if templ_7745c5c3_Err != nil {
498 return templ_7745c5c3_Err
499 }
500@@ -172,11 +172,11 @@ func WatchedVideosPage(videos []models.Video, currentPage int) templ.Component {
501 return templ_7745c5c3_Err
502 }
503 var templ_7745c5c3_Var10 string
504- templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(video.Title)
505+ templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.ResolveAttributeValue(video.Title)
506 if templ_7745c5c3_Err != nil {
507 return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/watched_videos.templ`, Line: 40, Col: 111}
508 }
509- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10))
510+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var10)
511 if templ_7745c5c3_Err != nil {
512 return templ_7745c5c3_Err
513 }
514@@ -185,11 +185,11 @@ func WatchedVideosPage(videos []models.Video, currentPage int) templ.Component {
515 return templ_7745c5c3_Err
516 }
517 var templ_7745c5c3_Var11 string
518- templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(video.ChannelName)
519+ templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.ResolveAttributeValue(video.ChannelName)
520 if templ_7745c5c3_Err != nil {
521 return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/watched_videos.templ`, Line: 40, Col: 151}
522 }
523- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11))
524+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var11)
525 if templ_7745c5c3_Err != nil {
526 return templ_7745c5c3_Err
527 }