522a250e7d9580ef290d319086f39217b4eae0d4
- Author
- TheEdgeOfRage <git@theedgeofrage.com>
- Committer
- TheEdgeOfRage <git@theedgeofrage.com>
- Date
Message
Diff
This diff is truncated to protect this page.
1diff --git a/assets/manifest.json b/assets/manifest.json
2index 632b15acccf4cd6b80950415765afaedb4ec8271..bddd5c42acf799b365de43c0b501e4b48286bace 100644
3--- a/assets/manifest.json
4+++ b/assets/manifest.json
5@@ -9,7 +9,7 @@
6 "orientation": "portrait-primary",
7 "icons": [
8 {
9- "src": "/assets/ytrssil-512.png",
10+ "src": "/assets/ytrssil.png",
11 "sizes": "512x512",
12 "type": "image/png",
13 "purpose": "any maskable"
14diff --git a/assets/simple.png b/assets/simple.png
15new file mode 100644
16index 0000000000000000000000000000000000000000..62ff4aa3750855c40a2e3c8b50e045e3e8c3f678
17Binary files /dev/null and b/assets/simple.png differ
18diff --git a/assets/simple.svg b/assets/simple.svg
19new file mode 100644
20index 0000000000000000000000000000000000000000..b15af109e6bb7391d4df4fe55a45b96b2aed1929
21--- /dev/null
22+++ b/assets/simple.svg
23@@ -0,0 +1,103 @@
24+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
25+<svg
26+ id="Layer_1"
27+ data-name="Layer 1"
28+ viewBox="0 0 512 511.99999"
29+ version="1.1"
30+ sodipodi:docname="simple.svg"
31+ inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
32+ width="512"
33+ height="512"
34+ inkscape:export-filename="simple.png"
35+ inkscape:export-xdpi="96"
36+ inkscape:export-ydpi="96"
37+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
38+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
39+ xmlns="http://www.w3.org/2000/svg"
40+ xmlns:svg="http://www.w3.org/2000/svg">
41+ <sodipodi:namedview
42+ id="namedview7"
43+ pagecolor="#ffffff"
44+ bordercolor="#000000"
45+ borderopacity="0.25"
46+ inkscape:showpageshadow="2"
47+ inkscape:pageopacity="0.0"
48+ inkscape:pagecheckerboard="0"
49+ inkscape:deskcolor="#d1d1d1"
50+ inkscape:zoom="1.6062423"
51+ inkscape:cx="318.44511"
52+ inkscape:cy="235.95444"
53+ inkscape:window-width="2560"
54+ inkscape:window-height="1388"
55+ inkscape:window-x="0"
56+ inkscape:window-y="0"
57+ inkscape:window-maximized="1"
58+ inkscape:current-layer="Layer_1" />
59+ <defs
60+ id="defs1">
61+ <style
62+ id="style1">
63+ .cls-1 {
64+ fill: none;
65+ stroke: red;
66+ stroke-linecap: round;
67+ stroke-miterlimit: 10;
68+ stroke-width: 26px;
69+ }
70+
71+ .cls-2 {
72+ fill: red;
73+ }
74+ </style>
75+ </defs>
76+ <g
77+ id="g2"
78+ inkscape:export-filename="ytrssil.png"
79+ inkscape:export-xdpi="155.82001"
80+ inkscape:export-ydpi="155.82001"
81+ transform="matrix(1.6720654,0,0,1.6720654,-353.9193,-185.64857)">
82+ <path
83+ class="cls-1"
84+ d="m 276.78,344.19 c -24.65,-23.33 -40.02,-56.36 -40.02,-92.97 0,-70.7 57.31,-128.01 128.01,-128.01 70.7,0 128.01,57.31 128.01,128.01 0,36.63 -15.38,69.66 -40.04,92.99"
85+ id="path1"
86+ style="stroke:#e62e05;stroke-width:20;stroke-dasharray:none;stroke-opacity:1" />
87+ <path
88+ class="cls-1"
89+ d="m 295.91,308.67 c -13,-15.56 -20.82,-35.6 -20.82,-57.46 0,-49.53 40.15,-89.68 89.68,-89.68 49.53,0 89.68,40.15 89.68,89.68 0,21.9 -7.85,41.97 -20.89,57.55"
90+ id="path2"
91+ style="stroke:#e62e05;stroke-width:20;stroke-dasharray:none;stroke-opacity:1" />
92+ </g>
93+ <path
94+ class="cls-2"
95+ d="M 195.37091,302.67813 V 159.01427 c 0,-7.07284 7.64134,-11.50381 13.77781,-7.97576 l 125.22098,71.83193 c 6.16993,3.54479 6.16993,12.42345 0,15.96823 L 209.14872,310.6706 c -6.13647,3.52806 -13.77781,-0.90292 -13.77781,-7.97575 z"
96+ id="path3"
97+ style="fill:#e62e05;fill-opacity:1;stroke-width:1.67207" />
98+ <path
99+ style="fill:none;fill-rule:nonzero;stroke:#e62e05;stroke-width:33.4413;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
100+ d="M 83.285086,455.15168 C 139.0537,453.86775 176.63966,406.13031 200.82758,345.74308"
101+ id="path8"
102+ sodipodi:nodetypes="cc" />
103+ <path
104+ style="fill:none;fill-rule:nonzero;stroke:#e62e05;stroke-width:33.4413;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
105+ d="m 162.19098,486.8027 c 58.57951,-0.8375 87.62198,-91.61576 93.04681,-127.49385 m 1.10411,-0.36803 c 4.15511,43.80715 44.87697,129.09956 93.44641,127.49383"
106+ id="path12"
107+ sodipodi:nodetypes="cccc" />
108+ <path
109+ style="fill:none;fill-rule:nonzero;stroke:#e62e05;stroke-width:33.4413;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
110+ d="m 310.96139,345.10717 c 17.63523,42.73521 55.53344,108.00736 116.85871,109.9552"
111+ id="path13"
112+ sodipodi:nodetypes="cc" />
113+ <path
114+ style="fill:none;fill-rule:nonzero;stroke:#e62e05;stroke-width:33.4413;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
115+ d="m 183.77321,387.88219 c 10.15082,61.55048 36.48534,98.62688 68.93522,103.75123"
116+ id="path14"
117+ sodipodi:nodetypes="cc" />
118+ <path
119+ style="fill:none;fill-rule:nonzero;stroke:#e62e05;stroke-width:33.4413;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
120+ d="m 331.30553,388.09366 c -8.10055,42.23137 -11.71102,49.88033 -28.10647,71.56734"
121+ id="path15"
122+ sodipodi:nodetypes="cc"
123diff --git a/assets/ytrssil.png b/assets/ytrssil.png
124index add60e40638219520fc6474b555839e107fc4425..a1920fda7b4dbc6e1c9723db3e72df5cd090faef 100644
125Binary files a/assets/ytrssil.png and b/assets/ytrssil.png differ
126diff --git a/assets/ytrssil.svg b/assets/ytrssil.svg
127index 5dbd9a3724ee09a9a9413af43088331cfb98a74e..ddcd7476a169f2966807939ac8cb3b642882db45 100644
128--- a/assets/ytrssil.svg
129+++ b/assets/ytrssil.svg
130@@ -2,10 +2,15 @@
131 <svg
132 id="Layer_1"
133 data-name="Layer 1"
134- viewBox="0 0 725.46 559.32"
135+ viewBox="0 0 511.99998 511.99999"
136 version="1.1"
137- sodipodi:docname="ytrssil-05.svg"
138+ sodipodi:docname="ytrssil.svg"
139 inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
140+ width="512"
141+ height="512"
142+ inkscape:export-filename="ytrssil.png"
143+ inkscape:export-xdpi="96"
144+ inkscape:export-ydpi="96"
145 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
146 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
147 xmlns="http://www.w3.org/2000/svg"
148@@ -21,10 +26,10 @@
149 inkscape:deskcolor="#d1d1d1"
150 showgrid="false"
151 inkscape:zoom="2.0632196"
152- inkscape:cx="268.75472"
153- inkscape:cy="312.13352"
154+ inkscape:cx="268.27004"
155+ inkscape:cy="253.972"
156 inkscape:window-width="2560"
157- inkscape:window-height="1362"
158+ inkscape:window-height="1388"
159 inkscape:window-x="0"
160 inkscape:window-y="0"
161 inkscape:window-maximized="1"
162@@ -54,25 +59,27 @@
163 </style>
164 </defs>
165 <g
166- id="g3">
167+ id="g3"
168+ transform="matrix(1.2061529,0,0,1.2061529,-182.18331,-74.863584)">
169 <path
170 class="cls-2"
171- d="M479.74,379.9l9.62-8.95c25.09-29.13,40.26-67.04,40.26-108.5,0-91.86-74.47-166.33-166.33-166.33s-166.33,74.47-166.33,166.33c0,41.46,15.17,79.37,40.26,108.5l10.87,10.32"
172+ d="m 479.74,379.9 9.62,-8.95 c 25.09,-29.13 40.26,-67.04 40.26,-108.5 0,-91.86 -74.47,-166.33 -166.33,-166.33 -91.86,0 -166.33,74.47 -166.33,166.33 0,41.46 15.17,79.37 40.26,108.5 l 10.87,10.32"
173 id="path1"
174- style="stroke:#e62900;stroke-opacity:1;stroke-width:20;stroke-dasharray:none" />
175+ style="stroke:#e62900;stroke-width:20;stroke-dasharray:none;stroke-opacity:1" />
176 <path
177 class="cls-2"
178- d="M275.3,355.43c-24.65-23.33-40.02-56.36-40.02-92.97,0-70.7,57.31-128.01,128.01-128.01s128.01,57.31,128.01,128.01c0,36.63-15.38,69.66-40.04,92.99"
179+ d="m 275.3,355.43 c -24.65,-23.33 -40.02,-56.36 -40.02,-92.97 0,-70.7 57.31,-128.01 128.01,-128.01 70.7,0 128.01,57.31 128.01,128.01 0,36.63 -15.38,69.66 -40.04,92.99"
180 id="path2"
181- style="stroke:#e62900;stroke-opacity:1;stroke-width:20;stroke-dasharray:none" />
182+ style="stroke:#e62900;stroke-width:20;stroke-dasharray:none;stroke-opacity:1" />
183 <path
184 class="cls-2"
185- d="M294.42,319.92c-13-15.56-20.82-35.6-20.82-57.46,0-49.53,40.15-89.68,89.68-89.68s89.68,40.15,89.68,89.68c0,21.9-7.85,41.97-20.89,57.55"
186+ d="m 294.42,319.92 c -13,-15.56 -20.82,-35.6 -20.82,-57.46 0,-49.53 40.15,-89.68 89.68,-89.68 49.53,0 89.68,40.15 89.68,89.68 0,21.9 -7.85,41.97 -20.89,57.55"
187 id="path3"
188- style="stroke:#e62900;stroke-opacity:1;stroke-width:20;stroke-dasharray:none" />
189+ style="stroke:#e62900;stroke-width:20;stroke-dasharray:none;stroke-opacity:1" />
190 </g>
191 <g
192- id="g5">
193+ id="g5"
194+ transform="matrix(1.2061529,0,0,1.2061529,-182.18331,-74.863584)">
195 <path
196 style="fill:none;stroke:#e62900;stroke-width:20;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
197 d="m 234.34248,418.27831 c 44.34816,0.24234 76.57935,-42.40944 91.11973,-80.69912"
198@@ -106,9 +113,9 @@
199 </g>
200 <path
201 class="cls-3"
202- d="M327.03,303.29v-85.92c0-4.23,4.57-6.88,8.24-4.77l74.89,42.96c3.69,2.12,3.69,7.43,0,9.55l-74.89,42.96c-3.67,2.11-8.24-.54-8.24-4.77Z"
203+ d="M 212.26489,290.95055 V 187.31789 c 0,-5.10203 5.51212,-8.29834 9.93871,-5.75336 l 90.32879,51.81634 c 4.4507,2.55705 4.4507,8.96172 0,11.51876 l -90.32879,51.81633 c -4.42659,2.54498 -9.93871,-0.65132 -9.93871,-5.75334 z"
204 id="path6"
205- style="fill:#e62900;fill-opacity:1"
206+ style="fill:#e62900;fill-opacity:1;stroke-width:1.20615"
207 inkscape:export-filename="complex.png"
208 inkscape:export-xdpi="130.59"
209 inkscape:export-ydpi="130.59" />
210diff --git a/pages/main.templ b/pages/main.templ
211index c12172750c4aa4a53e14f35b8bff83262255c80b..43d062efd53549bbd5e341ebeb4efcb9bef4fe43 100644
212--- a/pages/main.templ
213+++ b/pages/main.templ
214@@ -9,7 +9,7 @@ templ BaseLayout(title string, route string) {
215 <meta name="viewport" content="width=device-width, initial-scale=1"/>
216 <meta name="description" content="YouTube RSS subscription feed app"/>
217 <meta name="theme-color" content="#212529"/>
218- <link rel="icon" type="image/png" href="/assets/ytrssil.png"/>
219+ <link rel="icon" type="image/png" href="/assets/simple.png"/>
220 <link rel="apple-touch-icon" href="/assets/ytrssil.png"/>
221 <link rel="manifest" href="/assets/manifest.json"/>
222 <link rel="stylesheet" href="/assets/vendor/bootstrap.min.css"/>
223diff --git a/pages/main_templ.go b/pages/main_templ.go
224index 3d769e7a62d5f65394cb57cc408d426f6ce92970..99b6c16c4807a66bc14f5d4c56210cd3a5c1c2c8 100644
225--- a/pages/main_templ.go
226+++ b/pages/main_templ.go
227@@ -42,7 +42,7 @@ func BaseLayout(title string, route string) templ.Component {
228 if templ_7745c5c3_Err != nil {
229 return templ_7745c5c3_Err
230 }
231diff --git a/pages/navbar.templ b/pages/navbar.templ
232index 292e03774ee177c460df1b3ae0bfec281f6e6bf4..044aa5610b30c06523579b1c352aecf6ecf3d50e 100644
233--- a/pages/navbar.templ
234+++ b/pages/navbar.templ
235@@ -28,64 +28,80 @@ templ navbar(route string) {
236 <nav class="navbar navbar-expand-lg bg-body-tertiary">
237 <div class="container-fluid">
238 <a class="navbar-brand" href="/">
239- <img src="/assets/ytrssil.png" alt="ytrssil" width="32" height="32"/>
240+ <img src="/assets/ytrssil.svg" alt="ytrssil" width="32" height="32"/>
241 </a>
242- <button
243- type="button"
244- class="btn btn-primary me-auto me-lg-2"
245- onClick="window.location.reload();"
246- ><i class="bi bi-arrow-clockwise"></i></button>
247- <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent">
248- <span class="navbar-toggler-icon"></span>
249- </button>
250 if route != "auth" {
251- <div class="collapse navbar-collapse" id="navbarSupportedContent">
252- <ul class="navbar-nav me-auto mb-2 mb-lg-0">
253- <li class="nav-item me-md-2 mt-2 mt-md-0">
254- <button
255- type="button"
256- class="btn btn-outline-secondary"
257- style="--bs-btn-color: var(--bs-body-color);"
258- data-bs-toggle="modal"
259- data-bs-target="#subscription-modal"
260- >
261- Subscribe <i class="bi bi-bookmark-plus"></i>
262- </button>
263+ <ul id="nav-buttons" class="navbar-nav me-auto mb-0 flex-row">
264+ <li class="nav-item me-1 me-lg-2">
265+ <button
266+ type="button"
267+ class="btn btn-primary"
268+ onClick="window.location.reload();"
269+ ><i class="bi bi-arrow-clockwise"></i></button>
270+ </li>
271+ <li class="nav-item me-1 me-lg-2">
272+ <button
273+ type="button"
274+ class="btn btn-outline-secondary"
275+ style="--bs-btn-color: var(--bs-body-color);"
276+ data-bs-toggle="modal"
277+ data-bs-target="#subscription-modal"
278+ >
279+ <span class="d-none d-lg-inline">Subscribe </span><i class="bi bi-bookmark-plus"></i>
280+ </button>
281+ </li>
282+ <li class="nav-item me-1 me-lg-2">
283+ <button
284+ type="button"
285+ class="btn btn-outline-secondary"
286+ style="--bs-btn-color: var(--bs-body-color);"
287+ hx-post="/fetch"
288+ hx-swap="none"
289+ hx-on::after-settle="window.location.reload()"
290+ >
291+ <span class="d-none d-lg-inline">Fetch </span><i class="bi bi-cloud-download"></i>
292+ </button>
293+ </li>
294+ <li class="nav-item me-1 me-lg-2">
295+ <button
296+ type="button"
297+ class="btn btn-outline-secondary"
298+ style="--bs-btn-color: var(--bs-body-color);"
299+ data-bs-toggle="modal"
300+ data-bs-target="#add-video-modal"
301+ >
302+ <span class="d-none d-lg-inline">Add Video </span><i class="bi bi-camera-video"></i>
303+ </button>
304+ </li>
305+ for _, button := range navButtons(route) {
306+ <li class="nav-item me-1 me-lg-2">
307+ <a href={ button.link } class="btn btn-outline-secondary" style="--bs-btn-color: var(--bs-body-color);">
308+ <span class="d-none d-lg-inline">{ button.text }</span> <i class={ fmt.Sprintf("bi bi-%s", button.icon) }></i>
309+ </a>
310 </li>
311- <li class="nav-item me-md-2 mt-2 mt-md-0">
312- <button
313- type="button"
314- class="btn btn-outline-secondary"
315- style="--bs-btn-color: var(--bs-body-color);"
316- hx-post="/fetch"
317- hx-swap="none"
318- hx-on::after-settle="window.location.reload()"
319- >
320- Fetch <i class="bi bi-cloud-download"></i>
321- </button>
322- </li>
323- <li class="nav-item me-md-2 mt-2 mt-md-0">
324- <button
325- type="button"
326- class="btn btn-outline-secondary"
327- style="--bs-btn-color: var(--bs-body-color);"
328- data-bs-toggle="modal"
329- data-bs-target="#add-video-modal"
330- >
331- Add Video <i class="bi bi-camera-video"></i>
332- </button>
333- </li>
334- for _, button := range navButtons(route) {
335diff --git a/pages/navbar_templ.go b/pages/navbar_templ.go
336index d4d647bbb6e9f426062f5206556f4d2ce1981ba7..81db3114eb13f5508000cd607d0e0de6fd0037a9 100644
337--- a/pages/navbar_templ.go
338+++ b/pages/navbar_templ.go
339@@ -53,43 +53,43 @@ func navbar(route string) templ.Component {
340 templ_7745c5c3_Var1 = templ.NopComponent
341 }
342 ctx = templ.ClearChildren(ctx)