0.27.0 (2026-04-18)
Features
- add --allow-private-webhooks flag to bypass SSRF protection (#5694) (cd5816c)
- add blur_content attribute to tag metadata settings (#5767) (45b2153)
- add Gemini transcription provider (#5830) (d87539a)
- add GitHub release installer and release workflow (1ed542c)
- add live refresh via Server-Sent Events (SSE) with visual indicator (#5638) (ea0892a)
- add MCP server with PAT authentication (47d9414)
- add outline navigation to memo detail sidebar (#5771) (6b30579)
- ai: add BYOK audio transcription (#5832) (101704c)
- ai: add instance AI providers and transcription (#5829) (83ed32f)
- attachments: add Live Photo and Motion Photo support (#5810) (4b4e719)
- cli: add version subcommand (#5731) (0ba4c0f)
- editor: add voice note recording to the memo composer (#5801) (c0d5854)
- extract title from first H1 heading into memo property (#5726) (1e688b2)
- i18n: update sse connect label in Chinese (#5732) (89c6902)
- instance: add canonical tag metadata setting (#5736) (65d14fb)
- instance: add notification transport setting (#5737) (a249d06)
- mcp: enhance MCP server with full capabilities and new tools (#5720) (b8e9ee2)
- mcp: harden tool exposure and side effects (#5850) (583c3d2)
- mcp: refactor MCP server to standard protocol structure (803d488)
- memo-editor: add compact live waveform recorder panel (#5817) (e51985a)
- memo-preview: support comment metadata in previews (#5768) (e176b28)
- memo: add image sharing in detail view (38fc22b)
- memo: add share links for private memos (#5742) (3f3133d)
- mentions: add memo mention parsing, notifications, and rendering (#5811) (24fc8ab)
- replace auto-increment ID with UID for identity provider resource names (#5687) (92d937b)
- show inline comment preview in list view (3a5d3c8)
- store: change default storage type to local filesystem (78efa68)
- treat tag setting keys as anchored regex patterns (#5759) (9e04049)
- ui: allow navigating between images with arrows in preview dialog (#5669) (104d2ec)
- user: add per-user tag metadata settings (#5735) (330291d)
- web: add demo mode banner (#5836) (35504cc)
- webhook: dispatch webhook on memo comment creation (7c1defb)
Bug Fixes
- access token refresh on web app (#5681) (3010f10)
- add unix socket file permission setting (755 -> 660) (#5849) (0fc1dab)
- api: appease image size lint (ff6389a)
- api: improve SSE hub design and fix double-broadcast on comments (c53677f)
- api: make credentials write-only and restrict sensitive settings to admins (9d3a74b)
- api: reduce memory pressure in backend paths (c456637)
- api: remove public activity service (#5734) (04f239a)
- api: restrict user email exposure to self and admins (#5784) (a24d420)
- api: switch user resource names to usernames (#5779) (acddef1)
- api: tolerate missing related users in memo conversions (#5809) (25feef3)
- auth: recover session via refresh cookie when localStorage is empty (#5748) (551ee1d)
- backend tests action (065e817)
- clear content search filter when selecting shortcut (#5499) (2c3f9e3)
- correct typos in comments, error messages, and identifiers (#5704) (8f43e80)
- detect legacy installations with empty schema version (9628d3d)
- editor: show newly linked memos when editing a memo with attachments (026ea92)
- ensure comment divs span full width in MemoDetail (ce44164)
- fileserver: render SVG attachment previews (40fd700)
- filter: enforce CEL syntax semantics (0e89407)
- frontend: restore sitemap and robots routes (fee7fcd)
- handle chunk load errors after redeployment with auto-reload (#5703) (bdd3554)
- harden memo content iframe and HTML sanitization (7e21b72)
- hide transcribe button without AI provider (ab53329)
- improve image preview dialog and live photo trigger (aafcc21)
- improve installer compatibility and docs (f90d9a4)
- improve KaTeX and Mermaid error handling and overflow (6b37fcc)
- include plain URLs and tags in memo snippet generation (#5688) (3d4f793)
- lint: correct goimports struct literal alignment after removing write-only credential fields (#5794) (9610ed8)
- map: align dark mode map styling (7ac9989)
- map: refine Leaflet controls and memo map styling (894b3eb)
- markdown: support height/width attributes on img elements (737acbb)
- memo-editor: scope Cmd+Enter save to the active editor (#5745) (05810e7)
- mysql: handle CreateMemo custom timestamps with FROM_UNIXTIME (#5673) (09d73e8)
- normalize attachment MIME types before validation (c3e7e2c)
- preserve draft content when tab is suspended or editor remounts (9ca7122)
- prevent local attachment uploads from overwriting files (4add9b0)
- prevent stale comment drafts from being restored (e520b63)
- remove duplicate Japanese locale keys (efeb28c)
- render audio attachments as inline players (#5699) (2ccb98a)
- restrict archived memo access to creator only (#5707) (f4154d0)
- routing: redirect unauthenticated users to /explore when public visibility is allowed (98859eb)
- server: close SSE clients during shutdown (a5ddd5a)
- sync html lang attribute with active locale (#5753) (be00abe)
- tag parsing truncates emojis with variation selectors (#5496) (3ea6ea3)
- tags: allow blur-only tag metadata (#5800) (1921b57)
- toggle focus mode do not reset editor height (#5504) (0729779)
- ui: show comment editor above the comment list (#5662) (6b0736b)
- ui: unify metadata component styles across MemoView and MemoEditor (664b8c5)
- unify live photo previews around LIVE badge playback (6b0487d)
- webhooks: trigger memo updates for attachment and relation changes (#5795) (acbc914)
- web: prevent MemoContent prop leaks (22519b5)
- web: refine attachment media layout (a0d83e1)
- web: refresh memo detail cache after editor save (333c9df)
- web: use BroadcastChannel to sync token refreshes across tabs (bbdc998)