hchengting
bcbcb03894
chore: update zh-Hant translation ( #5930 )
2026-05-04 20:18:00 +08:00
boojack
5ccba98adc
refactor: split STT and Audio-LLM into separate interfaces ( #5928 )
2026-05-03 00:21:58 +08:00
boojack
238f27dea1
feat(transcription): explicit STT settings with provider, model, prompt ( #5926 )
2026-05-02 19:35:18 +08:00
boojack
ef55013418
feat(memo): create memos on the selected calendar date ( #5925 )
2026-05-02 11:53:50 +08:00
Steven
d349fe4409
chore(theme): rebalance dark palette for readability
2026-05-02 09:11:46 +08:00
Steven
8daef1dc89
feat(activity-calendar): aggregate by ViewContext.timeBasis
...
Fixes the inconsistency where switching the memo list to update_time
left the activity heatmap aggregating by created_time. The heatmap
now follows the same time basis as the list it sits next to.
Backend
- UserStats gains memo_updated_timestamps (additive proto field, tag 8).
- GetUserStats and ListAllUserStats populate it alongside the existing
memo_created_timestamps. No DB migration; memo.updated_ts already
exists on every row.
Frontend
- useFilteredMemoStats reads timeBasis from ViewContext and selects
the matching timestamp source.
- StatisticsView and MonthNavigator forward timeBasis through to
MonthCalendar / YearCalendar so tooltip text matches the basis
("X memos in DATE" vs "X memos updated on DATE").
- Falls back to memoCreatedTimestamps when an old server returns an
empty memoUpdatedTimestamps array (detected by length divergence,
since protobuf-es deserializes missing repeated fields as []).
Tests
- Backend: TestGetUserStats_MemoUpdatedTimestamps verifies the field
is populated and reflects post-creation updates.
- Frontend: filtered-memo-stats covers create/update source switching
and the old-server fallback path; activity-calendar-tooltip covers
basis-aware label selection.
Spec and implementation plan committed under docs/superpowers/.
2026-05-02 00:26:53 +08:00
Steven
ea0625da45
feat(stats): admin instance resource statistics
2026-05-01 23:15:56 +08:00
Steven
cd4f28ae10
feat(notification): add smtp email settings
...
- Add admin notification email settings UI and test-email RPC
- Dispatch privacy-first comment and mention emails through server notification layer
- Keep SMTP secrets write-only and require passwords when SMTP identity changes
2026-05-01 18:48:21 +08:00
Steven
a0b6417689
chore: bump pnpm to 11.0.1 and align list test assertions
2026-04-30 20:05:39 +08:00
boojack
e008b1a23c
fix(markdown): align list items with checkboxes
2026-04-30 08:49:49 +08:00
boojack
0bc56694b0
feat: render link metadata cards
2026-04-29 23:23:52 +08:00
boojack
9c5c604944
feat: add link metadata endpoints
2026-04-29 22:38:08 +08:00
memoclaw
267f90a3ff
chore: refactor Settings UI structure ( #5912 )
...
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
2026-04-29 09:30:58 +08:00
boojack
14480bfc46
chore(settings): improve storage tags and memo panels
2026-04-28 23:28:01 +08:00
boojack
ee65e90a39
chore: upgrade pnpm to 11 ( #5911 )
2026-04-28 22:16:22 +08:00
Chyna
328396a97f
fix(web): sync avatar changes immediately after profile update ( #5903 )
...
Signed-off-by: Chyna <68607983+chyna-gvng@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2026-04-28 21:57:58 +08:00
Mostafa Attia
9353848603
chore: increased muted text contrast in dark theme ( #5902 )
2026-04-28 20:03:24 +08:00
boojack
616487fa37
chore: update backend and frontend dependencies ( #5900 )
...
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
2026-04-28 08:25:26 +08:00
boojack
18e729fe00
chore(memo): simplify markdown task list rendering
2026-04-27 23:22:29 +08:00
boojack
9e310bf93c
chore(memo): clarify displayed update time
2026-04-27 21:50:41 +08:00
boojack
94ce1e5347
chore(settings): show build commit in version info
2026-04-27 08:51:11 +08:00
boojack
e2c60845ea
fix(markdown): split mixed task and bullet lists
2026-04-26 23:25:29 +08:00
boojack
c268551a16
feat(memos): choose created or updated time for memos ( #5894 )
2026-04-26 11:50:26 +08:00
boojack
3949a252db
style(web): refine scrollbar styling
2026-04-26 00:24:45 +08:00
boojack
34c90dd5e1
chore: remove duplicate tags from share image preview
2026-04-25 22:22:49 +08:00
boojack
ee1799851e
feat: redesign account and SSO management ( #5886 )
2026-04-24 09:08:58 +08:00
boojack
30c0611a82
fix: fix legacy username auth flows ( #5885 )
2026-04-23 22:35:38 +08:00
boojack
d688914b28
feat(auth): add SSO user identity linkage ( #5883 )
2026-04-23 08:51:45 +08:00
boojack
50638040f6
fix: reduce list memo query overhead ( #5880 )
2026-04-22 09:31:48 +08:00
boojack
b5863d76be
fix(web): preserve task checkbox state ( #5867 )
2026-04-20 23:27:00 +08:00
wndnjs0
d98f665919
fix: disable modal prop on DropdownMenu to prevent scroll disappearing ( #5861 )
2026-04-20 21:38:28 +08:00
boojack
88cb58ab64
refactor(web/routing): guard-based auth flow, migrate tests to Vitest ( #5848 )
2026-04-18 01:06:54 +08:00
Mattia Borda
5be530dbac
chore: update Italian translation for 'cancel' key ( #5841 )
...
Signed-off-by: Mattia Borda <mattiagiovanni.borda@icloud.com>
2026-04-15 21:01:57 +08:00
boojack
411d8335e7
chore: set native color scheme for dark themes ( #5840 )
2026-04-15 20:55:41 +08:00
boojack
a3a5b52d60
chore: tweak location picker
2026-04-15 20:07:36 +08:00
boojack
ab5332901f
fix: hide transcribe button without AI provider
2026-04-14 21:47:59 +08:00
boojack
35504cc8bd
feat(web): add demo mode banner ( #5836 )
2026-04-14 09:08:17 +08:00
boojack
101704c8ea
feat(ai): add BYOK audio transcription ( #5832 )
2026-04-13 22:09:24 +08:00
boojack
0ad0fec8d4
feat(ai): add Anthropic provider option
2026-04-12 21:42:17 +08:00
memoclaw
d87539a1e1
feat: add Gemini transcription provider ( #5830 )
...
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
2026-04-12 21:12:03 +08:00
memoclaw
83ed32f119
feat(ai): add instance AI providers and transcription ( #5829 )
...
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
2026-04-12 19:23:34 +08:00
boojack
efeb28c872
fix: remove duplicate Japanese locale keys
2026-04-12 10:34:20 +08:00
Takuro Onoue
0f7c7eb75e
i18n: refine and normalize Japanese locale strings ( #5826 )
...
Signed-off-by: Takuro Onoue <kusanaginoturugi@gmail.com>
2026-04-11 22:15:26 +08:00
boojack
2523d966f4
chore(web): improve navigation accessibility
2026-04-10 22:27:29 +08:00
boojack
8cdcd7b284
refactor(attachments): extract visual gallery layout and tile style tokens
2026-04-10 08:55:20 +08:00
boojack
9ca71229a6
fix: preserve draft content when tab is suspended or editor remounts
...
Gate auto-save on initialization to prevent empty content from overwriting
cached drafts on remount. Flush drafts synchronously on visibilitychange/
pagehide so Chromium tab suspension cannot drop pending debounced saves.
Restore cached draft over saved memo content when they differ (inline editing).
2026-04-10 08:48:50 +08:00
boojack
938c405b0f
refactor: move embedded content styles from global CSS to Tailwind
2026-04-08 23:34:49 +08:00
boojack
124708f164
chore: refactor attachment media layout and insert menu organization
2026-04-08 23:28:49 +08:00
boojack
7e21b728b3
fix: harden memo content iframe and HTML sanitization
2026-04-08 21:10:35 +08:00
boojack
2d682ae176
refactor(attachments): compact audio item layout and playback logic
...
Made-with: Cursor
2026-04-07 21:47:06 +08:00
boojack
5b78023fd5
Polish share-as-image UI and sidebar sharing actions
...
Made-with: Cursor
2026-04-07 21:07:40 +08:00
boojack
e51985a29f
feat(memo-editor): add compact live waveform recorder panel ( #5817 )
2026-04-07 20:40:34 +08:00
boojack
61c963841b
chore(web): polish dark theme and calendar UI
...
- simplify ActivityCalendar state handling and shared max-count utilities
- remove calendar ring styling and darken the default dark theme primary colors
- tighten the audio recorder panel layout and action sizing
2026-04-06 22:44:11 +08:00
memoclaw
24fc8ab8ca
feat(mentions): add memo mention parsing, notifications, and rendering ( #5811 )
...
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
2026-04-06 22:16:53 +08:00
boojack
38fc22b754
feat(memo): add image sharing in detail view
...
Keep the unpublished image-sharing flow scoped to memo detail pages.
- add a dedicated share-image preview and export pipeline
- measure the rendered memo card so preview and exported image stay aligned
- move the entry point into the detail sidebar and drawer only
2026-04-06 18:30:01 +08:00
boojack
2cbc70762b
refactor(attachments): simplify the attachment library
...
- split attachment page states and primitives into focused components
- unify card and list item presentation across media, audio, documents, and unused uploads
- move attachment paging and cleanup flows onto shared query and view-model hooks
2026-04-06 17:39:58 +08:00
boojack
7ac9989d43
fix(map): align dark mode map styling
2026-04-06 17:38:56 +08:00
boojack
15d8ec10d5
chore: update locale translations for new i18n entries
2026-04-06 16:11:21 +08:00
boojack
067d7ff0ce
chore: refactor memo editor audio recording flow
2026-04-06 15:46:38 +08:00
boojack
aafcc21ae6
fix: improve image preview dialog and live photo trigger
2026-04-06 13:41:27 +08:00
boojack
6b0487dcd8
fix: unify live photo previews around LIVE badge playback
2026-04-06 11:56:58 +08:00
boojack
4b4e719470
feat(attachments): add Live Photo and Motion Photo support ( #5810 )
2026-04-06 10:47:01 +08:00
boojack
894b3eb045
fix(map): refine Leaflet controls and memo map styling
2026-04-06 08:45:54 +08:00
memoclaw
f403f8c03c
refactor: simplify memo metadata components
2026-04-02 22:30:21 +08:00
memoclaw
0e4d2d25ca
refactor: simplify audio attachment playback component
2026-04-02 21:56:01 +08:00
Serhat
9676e72533
i18n: complete Turkish (tr) translations to 100% coverage ( #5802 )
...
Signed-off-by: Serhat <49079271+onwp@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2026-04-01 19:25:18 +08:00
memoclaw
c0d5854f67
feat(editor): add voice note recording to the memo composer ( #5801 )
...
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
2026-04-01 09:36:33 +08:00
memoclaw
a0d83e1a9e
fix(web): refine attachment media layout
2026-04-01 08:40:36 +08:00
memoclaw
63a17d897d
refactor: split audio attachment view into reusable components
2026-03-31 23:03:38 +08:00
memoclaw
1921b57662
fix(tags): allow blur-only tag metadata ( #5800 )
...
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
2026-03-31 21:38:55 +08:00
memoclaw
e520b637fd
fix: prevent stale comment drafts from being restored
2026-03-30 22:37:07 +08:00
memoclaw
c53677fcba
fix(api): improve SSE hub design and fix double-broadcast on comments
...
- Fix duplicate SSE event on comment creation: CreateMemoComment now
suppresses the redundant memo.created broadcast from the inner
CreateMemo call, emitting only memo.comment.created
- Extract reaction event-building IIFEs into buildMemoReactionSSEEvent
helper, removing duplicated inline DB-fetch logic
- Promote resolveSSEAudienceCreatorID from method to free function
(resolveSSECreatorID) since it never used the receiver
- Add userID to SSE connect/disconnect log lines for traceability
- Change canReceive default from permissive (return true) to
deny-with-warning for unknown visibility types
- Add comprehensive tests covering all new helpers, visibility edge
cases, slow-client drop behavior, and the double-broadcast fix
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-29 07:33:40 +08:00
memoclaw
acddef1f3d
fix(api): switch user resource names to usernames ( #5779 )
...
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
2026-03-25 09:11:17 +08:00
memoclaw
4f6730a12e
chore: show compact attachment count instead of thumbnails in comment previews
...
When truncate mode is active (comment list), display an inline file icon
with attachment count instead of rendering full image thumbnails.
2026-03-24 19:30:39 +08:00
memoclaw
6a03917f6e
chore: upgrade TypeScript to 6.0.2
2026-03-24 08:45:56 +08:00
memoclaw
bb7f4978e5
refactor(web): consolidate SharedMemo into MemoDetail ( #5773 )
...
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
2026-03-24 08:40:49 +08:00
memoclaw
6b30579903
feat: add outline navigation to memo detail sidebar ( #5771 )
...
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-24 00:20:40 +08:00
memoclaw
2aaca27bd5
refactor(web): improve MemoDetail and sidebar maintainability ( #5769 )
...
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
2026-03-23 22:51:24 +08:00
memoclaw
e176b28c80
feat(memo-preview): support comment metadata in previews ( #5768 )
...
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
2026-03-23 21:51:30 +08:00
memoclaw
22519b57a0
fix(web): prevent MemoContent prop leaks
2026-03-23 20:34:14 +08:00
memoclaw
45b21530d9
feat: add blur_content attribute to tag metadata settings ( #5767 )
...
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-23 19:42:27 +08:00
memoclaw
9e04049632
feat: treat tag setting keys as anchored regex patterns ( #5759 )
...
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-22 08:07:45 +08:00
memoclaw
9ded59a1aa
refactor(web): improve Settings page maintainability and consistency ( #5757 )
...
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-21 15:05:48 +08:00
memoclaw
d5de325ff4
refactor(web): simplify main layout sidebar structure ( #5756 )
...
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
2026-03-21 12:54:18 +08:00
memoclaw
4177898054
refactor(web): consolidate memo metadata components into MemoMetadata ( #5755 )
...
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-21 09:04:15 +08:00
memoclaw
ac077ac3d3
refactor(web): improve MemoView and MemoEditor maintainability ( #5754 )
...
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-21 07:20:18 +08:00
memoclaw
7b4f3a9fa5
refactor(memo): simplify MemoDetail error handling, drop memo.failed-to-load i18n key
...
The failed-to-load key was only used for non-ConnectError exceptions, which
are unreachable in practice since the Connect RPC client always wraps errors
as ConnectError. Use (error as Error).message as a plain fallback instead.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-20 20:19:44 +08:00
memoclaw
5f6f624635
i18n: add missing auth.protected-memo-notice and memo.failed-to-load fallbacks to all locales
...
30 locale files were missing the two keys added in the auth redirect PR.
Added English fallback strings so all locales render properly until
community translations are contributed.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-20 19:41:12 +08:00
xun zhao
7601708ae4
Redirect unauthenticated protected memo access to sign in ( #5738 )
2026-03-20 19:40:19 +08:00
fiatcode
551ee1d81f
fix(auth): recover session via refresh cookie when localStorage is empty ( #5748 )
2026-03-20 19:21:11 +08:00
memoclaw
be00abe852
fix: sync html lang attribute with active locale ( #5753 )
...
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-20 19:17:30 +08:00
google-labs-jules[bot]
23a7e99a21
chore: optimize unreact network requests ( #5747 )
...
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: boojack <stevenlgtm@gmail.com>
2026-03-20 18:08:28 +08:00
memoclaw
a7cabb7ce6
refactor(web): remove masonry memo layout ( #5746 )
...
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
2026-03-20 09:01:43 +08:00
memoclaw
05810e7882
fix(memo-editor): scope Cmd+Enter save to the active editor ( #5745 )
...
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
2026-03-20 08:43:01 +08:00
memoclaw
e0334cf0a8
refactor: restructure i18n locale keys for better maintainability ( #5744 )
...
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-20 05:56:56 +08:00
memoclaw
6f1f3d81c5
chore: remove disallow_public_visibility setting ( #5743 )
...
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-20 00:00:51 +08:00
memoclaw
3f3133d6e2
feat(memo): add share links for private memos ( #5742 )
...
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
2026-03-19 23:47:22 +08:00
memoclaw
a249d06e2e
feat(instance): add notification transport setting ( #5737 )
...
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
2026-03-19 09:18:28 +08:00
boojack
65d14fbb63
feat(instance): add canonical tag metadata setting ( #5736 )
2026-03-19 08:54:43 +08:00
boojack
330291d4d9
feat(user): add per-user tag metadata settings ( #5735 )
2026-03-18 23:15:14 +08:00