marky

Lightweight bookmarking + plaintext archive
Log | Files | Refs | README | LICENSE

commit ec9b947472ab9436481f43599a924b110e2ba5f5
parent 63f80483bda23dccd216fc52115244e2915f4b46
Author: David Eisinger <[email protected]>
Date:   Thu,  9 Oct 2025 14:25:55 -0400

Page titles

Diffstat:
Minternal/api.go | 13+++++++++++++
Minternal/web/app.js | 17+----------------
Minternal/web/login.html | 3+--
Minternal/web/settings.html | 2+-
Minternal/web/user.html | 3+--
5 files changed, 17 insertions(+), 21 deletions(-)

diff --git a/internal/api.go b/internal/api.go @@ -388,6 +388,19 @@ func NewHandlerWithConfig(db *DB, cfg HandlerConfig) (http.Handler, error) { } if u, err := db.GetUserByUsername(r.Context(), uname); err == nil && u != nil { if html, err := RenderPage("user.html", cfg); err == nil { + // Set <title> to "{username} | Marky" by replacing inner text only + if ti := bytes.Index(html, []byte("<title>")); ti >= 0 { + if tj := bytes.Index(html[ti:], []byte("</title>")); tj > 0 { + start := ti + len("<title>") + end := ti + tj + nt := []byte(u.Username + " | Marky") + nb := make([]byte, 0, len(html)-(end-start)+len(nt)) + nb = append(nb, html[:start]...) + nb = append(nb, nt...) + nb = append(nb, html[end:]...) + html = nb + } + } // Embed initial bookmarks to avoid client fetch if isOwnerAuthorized(r, u, db) { items, err := db.ListBookmarks(r.Context(), u.ID, 50, 0) diff --git a/internal/web/app.js b/internal/web/app.js @@ -21,11 +21,6 @@ createApp({ mounted() { this.initView(); }, - watch: { - view() { this.updateTitle(); }, - viewUser() { this.updateTitle(); }, - me() { this.updateTitle(); }, - }, methods: { async initView() { // Determine logged-in user @@ -42,7 +37,6 @@ createApp({ return; } this.view = 'login'; - this.updateTitle(); return; } // Settings page @@ -50,7 +44,6 @@ createApp({ if (!this.me || !this.me.username) { location.replace('/'); return; } // Token embedded by server this.api.value = (window.MARKY_TOKEN || ''); - this.updateTitle(); return; } // User page: support new "/u:{username}" and legacy "/{username}" @@ -79,16 +72,8 @@ createApp({ } catch {} if (!hydrated) this.loadPublic(); } - this.updateTitle(); - }, - updateTitle() { - const base = 'marky'; - if (this.view === 'public' || this.view === 'self') { - const u = this.view === 'self' && this.me && this.me.username ? this.me.username : this.viewUser; - if (u) { document.title = `${u} | ${base}`; return; } - } - document.title = base; }, + renderMarkdown(text) { try { if (!text) return ''; diff --git a/internal/web/login.html b/internal/web/login.html @@ -3,7 +3,7 @@ <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> - <title>marky</title> + <title>Marky</title> <link rel="stylesheet" href="/styles.css" /> <script src="/vendor/vue.global.prod.js"></script> <script>if(!window.Vue){var s=document.createElement('script');s.src='https://unpkg.com/vue@3/dist/vue.global.prod.js';document.head.appendChild(s)}</script> @@ -41,4 +41,3 @@ <script src="/app.js"></script> </body> </html> - diff --git a/internal/web/settings.html b/internal/web/settings.html @@ -3,7 +3,7 @@ <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> - <title>settings | marky</title> + <title>Settings | Marky</title> <link rel="stylesheet" href="/styles.css" /> <script src="/vendor/vue.global.prod.js"></script> </head> diff --git a/internal/web/user.html b/internal/web/user.html @@ -3,7 +3,7 @@ <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> - <title>marky</title> + <title>Marky</title> <link rel="stylesheet" href="/styles.css" /> <script src="/vendor/vue.global.prod.js"></script> <script>if(!window.Vue){var s=document.createElement('script');s.src='https://unpkg.com/vue@3/dist/vue.global.prod.js';document.head.appendChild(s)}</script> @@ -101,4 +101,3 @@ <script src="/app.js"></script> </body> </html> -