From 68327cb6d0119ce28ea1d66828a66f272199bc85 Mon Sep 17 00:00:00 2001 From: Rodrigo Gomes da Silva Date: Mon, 5 Jan 2026 10:54:32 -0300 Subject: [PATCH 1/2] feat: improve bookmark button positioning and UI responsiveness - Remove ml-auto/mr-auto from message bubbles for proper bookmark alignment - Add self-center to bookmark buttons for consistent squared appearance - Extract bookmark button into reusable snippet to reduce code duplication - Make language selector and dark mode toggle always visible on all screens - Position theme controls on right side of header for all screen sizes - Clean up and refactor code for better maintainability --- src/lib/components/MessageBubble.svelte | 82 ++++++++++--------------- src/routes/+page.svelte | 30 ++++----- 2 files changed, 48 insertions(+), 64 deletions(-) diff --git a/src/lib/components/MessageBubble.svelte b/src/lib/components/MessageBubble.svelte index 581096e..51aad99 100644 --- a/src/lib/components/MessageBubble.svelte +++ b/src/lib/components/MessageBubble.svelte @@ -88,9 +88,7 @@ $effect(() => { }); const bubbleClass = $derived( - isOwn - ? 'bg-[var(--color-message-out)] ml-auto' - : 'bg-[var(--color-message-in)] mr-auto', + isOwn ? 'bg-[var(--color-message-out)]' : 'bg-[var(--color-message-in)]', ); // Use wider bubble for audio messages to fit the audio player @@ -209,8 +207,16 @@ function highlightText(text: string, query: string): string { // Combine and sort all markers const markers: Array< - | { type: 'url'; pos: number; data: { start: number; end: number; url: string } } - | { type: 'search'; pos: number; data: { start: number; end: number; text: string } } + | { + type: 'url'; + pos: number; + data: { start: number; end: number; url: string }; + } + | { + type: 'search'; + pos: number; + data: { start: number; end: number; text: string }; + } > = []; urls.forEach((url) => { @@ -277,7 +283,7 @@ function linkifyText(text: string): string { let lastIndex = 0; let result = ''; let match; - + while ((match = urlRegex.exec(text)) !== null) { // Add text before the URL, escaped result += escapeHtml(text.slice(lastIndex, match.index)); @@ -286,7 +292,7 @@ function linkifyText(text: string): string { result += `${escapeHtml(url)}`; lastIndex = match.index + url.length; } - + // Add the rest of the text, escaped result += escapeHtml(text.slice(lastIndex)); return result; @@ -326,6 +332,22 @@ async function transcribeVoiceMessage() { } +{#snippet bookmarkButton(isBookmarked: boolean, className: string)} + +{/snippet} + {#if message.isSystemMessage} {@const isBookmarked = bookmarkedMessageIds.has(message.id)} @@ -340,19 +362,7 @@ async function transcribeVoiceMessage() {
- + {@render bookmarkButton(isBookmarked, '')}
@@ -363,21 +373,7 @@ async function transcribeVoiceMessage() {
{#if isOwn} -
- -
+ {@render bookmarkButton(isBookmarked, 'mr-1 self-center')} {/if}
{#if !isOwn} -
- -
+ {@render bookmarkButton(isBookmarked, 'ml-1 self-center')} {/if}
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index d2f9867..f7f18f3 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -738,21 +738,23 @@ const currentUser = $derived.by(() => { > - - - {#if isDarkMode} - - {:else} - - {/if} - + + + + + {#if isDarkMode} + + {:else} + + {/if} + {:else} From 86a6d02907b5698450c228035e16536e0a856f59 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Mon, 5 Jan 2026 13:55:17 +0000 Subject: [PATCH 2/2] chore(release): 1.29.0 [skip ci] # [1.29.0](https://github.com/rodrigogs/whats-reader/compare/v1.28.0...v1.29.0) (2026-01-05) ### Features * improve bookmark button positioning and UI responsiveness ([68327cb](https://github.com/rodrigogs/whats-reader/commit/68327cb6d0119ce28ea1d66828a66f272199bc85)) --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7baf3c7..fd931d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [1.29.0](https://github.com/rodrigogs/whats-reader/compare/v1.28.0...v1.29.0) (2026-01-05) + + +### Features + +* improve bookmark button positioning and UI responsiveness ([68327cb](https://github.com/rodrigogs/whats-reader/commit/68327cb6d0119ce28ea1d66828a66f272199bc85)) + # [1.28.0](https://github.com/rodrigogs/whats-reader/compare/v1.27.0...v1.28.0) (2026-01-05) diff --git a/package-lock.json b/package-lock.json index 20f75e1..caa4ec5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "whats-reader", - "version": "1.28.0", + "version": "1.29.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "whats-reader", - "version": "1.28.0", + "version": "1.29.0", "license": "AGPL-3.0", "dependencies": { "@floating-ui/dom": "^1.7.4", diff --git a/package.json b/package.json index 6a36218..3a38da4 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "whats-reader", "productName": "WhatsApp Backup Reader", - "version": "1.28.0", + "version": "1.29.0", "description": "A desktop app to read and visualize WhatsApp chat exports", "license": "AGPL-3.0", "author": {