Memos — a uduapp (upstream: usememos/memos)
Find a file
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
.github chore: bump pnpm to 11.0.1 and align list test assertions 2026-04-30 20:05:39 +08:00
cmd/memos chore(settings): show build commit in version info 2026-04-27 08:51:11 +08:00
docs feat(activity-calendar): aggregate by ViewContext.timeBasis 2026-05-02 00:26:53 +08:00
internal feat(notification): add smtp email settings 2026-05-01 18:48:21 +08:00
proto feat(activity-calendar): aggregate by ViewContext.timeBasis 2026-05-02 00:26:53 +08:00
scripts chore: update backend and frontend dependencies (#5900) 2026-04-28 08:25:26 +08:00
server feat(activity-calendar): aggregate by ViewContext.timeBasis 2026-05-02 00:26:53 +08:00
store feat(stats): admin instance resource statistics 2026-05-01 23:15:56 +08:00
web feat(activity-calendar): aggregate by ViewContext.timeBasis 2026-05-02 00:26:53 +08:00
.dockerignore perf: optimize CI/CD workflows and Docker builds 2026-01-14 22:12:28 +08:00
.gitignore feat(auth): add SSO user identity linkage (#5883) 2026-04-23 08:51:45 +08:00
.golangci.yaml fix(ci): remove invalid revive rule 'use-waitgroup-go' from golangci-lint config 2026-01-06 21:12:40 +08:00
.release-please-manifest.json chore(main): release 0.28.0 (#5866) 2026-04-27 08:56:00 +08:00
AGENTS.md chore: upgrade pnpm to 11 (#5911) 2026-04-28 22:16:22 +08:00
CHANGELOG.md chore(main): release 0.28.0 (#5866) 2026-04-27 08:56:00 +08:00
CLAUDE.md chore: align branding with brand guidelines (#5693) 2026-03-07 11:32:36 +08:00
CODEOWNERS chore: tweak CODEOWNERS 2026-03-05 19:14:16 +08:00
go.mod chore: update backend and frontend dependencies (#5900) 2026-04-28 08:25:26 +08:00
go.sum chore: update backend and frontend dependencies (#5900) 2026-04-28 08:25:26 +08:00
LICENSE chore: update LICENSE (#4394) 2025-02-11 15:45:20 +08:00
README.md chore: tweak featured sponsors 2026-03-29 02:17:29 +08:00
release-please-config.json chore: add release-please automation (#5842) 2026-04-15 23:04:10 +08:00
SECURITY.md chore: update security.md 2026-04-01 08:39:49 +08:00

Memos

Memos

Open-source, self-hosted note-taking tool built for quick capture. Markdown-native, lightweight, and fully yours.

Home Live Demo Docs Discord Docker Pulls

Memos Demo Screenshot

Warp — The AI-powered terminal built for speed and collaboration

Warp - The AI-powered terminal built for speed and collaboration

TestMu AI - The world’s first full-stack Agentic AI Quality Engineering platform

TestMu AI

SSD Nodes - Affordable VPS hosting for self-hosters

SSD Nodes

Features

  • Instant Capture — Timeline-first UI. Open, write, done — no folders to navigate.
  • Total Data Ownership — Self-hosted on your infrastructure. Notes stored in Markdown, always portable. Zero telemetry.
  • Radical Simplicity — Single Go binary, ~20MB Docker image. One command to deploy with SQLite, MySQL, or PostgreSQL.
  • Open & Extensible — MIT-licensed with full REST and gRPC APIs for integration.

Quick Start

docker run -d \
  --name memos \
  -p 5230:5230 \
  -v ~/.memos:/var/opt/memos \
  neosmemo/memos:stable

Open http://localhost:5230 and start writing!

Native Binary

curl -fsSL https://raw.githubusercontent.com/usememos/memos/main/scripts/install.sh | sh

Try the Live Demo

Don't want to install yet? Try our live demo first!

Other Installation Methods

  • Docker Compose - Recommended for production deployments
  • Pre-built Binaries - Available for Linux, macOS, and Windows
  • Kubernetes - Helm charts and manifests available
  • Build from Source - For development and customization

See our installation guide for detailed instructions.

Contributing

Contributions are welcome — bug reports, feature suggestions, pull requests, documentation, and translations.

Sponsors

Love Memos? Sponsor us on GitHub to help keep the project growing!

Star History

Star History Chart

License

Memos is open-source software licensed under the MIT License. See our Privacy Policy for details on data handling.


Website • Documentation • Demo • Discord • X/Twitter

Vercel OSS Program