Commit Graph

713 Commits (e53b7d96e70965529ba3b04ea720ea6966f77b60)

Author SHA1 Message Date
boojack e53b7d96e7
fix: delete user cleanup (#5981) 15 hours ago
boojack d1208a68e9 chore: update sponsors 17 hours ago
boojack 858f7419b4 chore(seed): tweak seed data 2 weeks ago
boojack ab2b08a21e chore(seed): refresh demo memos and sponsor showcase 2 weeks ago
boojack 02096836c3 test: stabilize backend tests in CI
- Avoid requiring built frontend assets in cache header tests.
- Skip Testcontainers-backed store tests when Docker is unavailable.
3 weeks ago
Steven ea0625da45 feat(stats): admin instance resource statistics 4 weeks ago
Steven 35bf761b8c fix(security): enforce attachment ownership on memo updates 4 weeks ago
boojack 616487fa37
chore: update backend and frontend dependencies (#5900)
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
4 weeks ago
boojack 0fb83a745d
fix(auth): harden authorization and username validation (#5890) 1 month ago
boojack ee1799851e
feat: redesign account and SSO management (#5886) 1 month ago
boojack d688914b28
feat(auth): add SSO user identity linkage (#5883) 1 month ago
boojack 50638040f6
fix: reduce list memo query overhead (#5880) 1 month ago
boojack f8a304bae3 fix(release): inject build version into artifacts 1 month ago
boojack c45663761d fix(api): reduce memory pressure in backend paths 1 month ago
boojack 101704c8ea
feat(ai): add BYOK audio transcription (#5832) 1 month ago
memoclaw 83ed32f119
feat(ai): add instance AI providers and transcription (#5829)
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
1 month ago
memoclaw 24fc8ab8ca
feat(mentions): add memo mention parsing, notifications, and rendering (#5811)
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
2 months ago
boojack 10a955fd62 refactor: move plugin packages under internal 2 months ago
boojack 4b4e719470
feat(attachments): add Live Photo and Motion Photo support (#5810) 2 months ago
memoclaw 1921b57662
fix(tags): allow blur-only tag metadata (#5800)
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
2 months ago
boojack 0e89407ee9 fix(filter): enforce CEL syntax semantics
Reject non-standard truthy numeric expressions in filters and document the parser as a supported subset of standard CEL syntax.

- remove legacy filter rewrites
- support standard equality in tag exists predicates
- add regression coverage for accepted and rejected expressions
2 months ago
boojack 7c708ee27e
chore: add migration upgrade coverage (#5796) 2 months ago
memoclaw 4add9b04ad fix: prevent local attachment uploads from overwriting files 2 months ago
memoclaw acddef1f3d
fix(api): switch user resource names to usernames (#5779)
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
2 months ago
memoclaw 4818bf3559
refactor(store): remove synthetic system bot user lookup (#5778)
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
2 months ago
google-labs-jules[bot] e0cc247823
chore: optimize multi-user RSS feed generation by fixing N+1 query (#5749)
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2 months ago
memoclaw 3f3133d6e2
feat(memo): add share links for private memos (#5742)
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
2 months ago
memoclaw e164517773 test: remove raw SQL migration backfill test setup 2 months ago
memoclaw f759b416af
refactor(inbox): store memo comment payloads without activity records (#5741)
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
2 months ago
memoclaw a249d06e2e
feat(instance): add notification transport setting (#5737)
Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
2 months ago
boojack 65d14fbb63
feat(instance): add canonical tag metadata setting (#5736) 2 months ago
boojack 330291d4d9
feat(user): add per-user tag metadata settings (#5735) 2 months ago
memoclaw 12e2205cb6
chore(backend): update Go toolchain and dependencies (#5730) 2 months ago
memoclaw 8f43e8075b
fix: correct typos in comments, error messages, and identifiers (#5704)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
3 months ago
memoclaw 851e090ff9
chore: align branding with brand guidelines (#5693)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
3 months ago
memoclaw 1e82714a52
perf: batch load memo relations when listing memos (#5692)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
3 months ago
memoclaw 92d937b1aa
feat: replace auto-increment ID with UID for identity provider resource names (#5687)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
3 months ago
memoclaw f0c4489468
chore: move storage setting migration to v0.27.0 (#5686)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
3 months ago
Biplav Barua def123232a
feat: implement ListActivities pagination (#5468) 3 months ago
Steven 737acbba2f fix(markdown): support height/width attributes on img elements 3 months ago
Steven dfab67f035 chore(seed): polish demo data with realistic multi-user content 3 months ago
Johnny 9628d3de21 fix: detect legacy installations with empty schema version 3 months ago
Johnny 78efa6802e feat(store): change default storage type to local filesystem
Add migration scripts for existing instances without a storage setting
to explicitly preserve DATABASE as their storage type, ensuring backward
compatibility. Change the default for new installations to LOCAL to
improve out-of-the-box performance.
3 months ago
Johnny 252b3eff90 test(store): add tests for CreateMemo with custom timestamps 3 months ago
Mudkip 09d73e8b6e
fix(mysql): handle CreateMemo custom timestamps with FROM_UNIXTIME (#5673) 3 months ago
Mudkip ff3e4c5cfe
fix: avoid truncating memo batch attachments (#5654) 3 months ago
Steven 704503e556 fix(store): allow memo/attachment deletion when local file is missing
Fixes two bugs reported in #5603:

1. store/attachment.go: ignore os.ErrNotExist when removing a local
   attachment file so that a missing file on disk (broken state from
   failed uploads) no longer blocks deletion of the DB record, allowing
   memos referencing corrupt attachments to be deleted normally.

2. memo_attachment_service.go: add nil guard on GetAttachment result
   before dereferencing it in SetMemoAttachments, preventing a nil
   pointer panic when an attachment UID no longer exists in the DB.
3 months ago
Steven 2b19d8a969 fix(tests): update PAT tests to accept both custom and SQL errors
The PostgreSQL implementation returns 'PAT not found' when no rows match,
while SQLite/MySQL return 'sql: no rows in result set' from QueryRowContext.

Both behaviors are correct - the key fix is that PostgreSQL no longer
throws JSONB errors on missing/malformed data.

Changes:
- Update test assertions to accept either error type
- Fix comment punctuation for godot linter
- Maintain backward compatibility across all database drivers
4 months ago
Steven d9e8387d63 fix(postgres): handle missing PAT data gracefully and add comprehensive tests
Fixes #5612, #5611

Root cause: PostgreSQL's jsonb_array_elements() throws errors when the
'tokens' key is missing or malformed, while SQLite/MySQL return NULL
gracefully. This caused:
- 502 errors when creating admin after v0.25.3 → v0.26.0 upgrade
- Settings not persisting and users unable to stay logged in

Changes to store/db/postgres/user_setting.go:
- Remove strict JSONB operations from GetUserByPATHash query
- Fetch all PERSONAL_ACCESS_TOKENS rows and filter in Go
- Skip malformed/invalid JSON rows with continue (error recovery)
- Match SQLite/MySQL's forgiving error handling

New integration tests (store/test/user_setting_test.go):
- TestUserSettingGetUserByPATHashNoTokensKey
- TestUserSettingGetUserByPATHashEmptyTokensArray
- TestUserSettingGetUserByPATHashWithOtherUsers

New PostgreSQL-specific tests (store/db/postgres/user_setting_test.go):
- TestGetUserByPATHashWithMissingData (comprehensive edge cases)
- TestGetUserByPATHashPerformance (100+ users)
- TestUpsertUserSetting (basic upsert)

Test coverage:
 Missing PERSONAL_ACCESS_TOKENS key
 Empty/malformed JSON data
 Multiple users with mixed valid/invalid data
 Performance with 100+ users
 Error recovery without crashes

Benefits:
- No database migration required (TEXT column works fine)
- Backward compatible with v0.25.3 upgrades
- Handles missing/corrupt data gracefully
- Consistent behavior across all database drivers
4 months ago
Steven 8770b186e4 fix: add Unicode case-insensitive search for SQLite (#5559)
Add custom memos_unicode_lower() SQLite function to enable proper
case-insensitive text search for non-English languages (Cyrillic,
Greek, CJK, etc.).

Previously, SQLite's LOWER() only worked for ASCII characters due to
modernc.org/sqlite lacking ICU extension. This caused searches for
non-English text to be case-sensitive (e.g., searching 'блины' wouldn't
find 'Блины').

Changes:
- Add store/db/sqlite/functions.go with Unicode case folding function
- Register custom function using golang.org/x/text/cases.Fold()
- Update filter renderer to use custom function for SQLite dialect
- Add test for Unicode case-insensitive search
- Make golang.org/x/text a direct dependency

Fixes #5559
4 months ago