Backend changes:
- Fix ListAllUserStats to calculate and return tag statistics
- Previously only returned name and timestamps, missing TagCount
- Now properly aggregates tags, pinned memos, and memo type stats
Frontend changes:
- Initialize user stats on app startup to populate tag data
- Show all tags when typing just '#' (fix empty Fuse.js search)
- Auto-refresh stats after creating/updating/deleting memos
- Fix Checkbox component ref warning with forwardRef
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Removed the `nodes` field from the `Memo` interface in `memo_service.ts`.
- Updated the `createBaseMemo` function and the `Memo` message functions to reflect the removal of `nodes`.
- Cleaned up the serialization and deserialization logic accordingly.
chore: remove code-inspector-plugin from Vite configuration
- Deleted the `codeInspectorPlugin` from the Vite configuration in `vite.config.mts`.
- Simplified the plugins array to include only `react` and `tailwindcss`.
* fix(editor): Prevent race condition and ensure correct list continuation on Enter
_
* fix: always insert newline after preventing default Enter key behavior
* fix: automatic indentation follows previous lines in lists (#4048)
* fix: automatic indentation follows previous lines in lists (#4048)
change the position of this logic and recommit it
* fix: use correct higlight color on selecting a tag in darkmode
* fix: take scrolling into account in tab suggestion
Issue: When editing a long memo and editing a tag somewhere where the user has
to scroll down to, the tag suggestions would be out of place (too far down)
because the scrolling wouldn't be taken into account.
Fix: Substract the suggestions div by the scroll amount.
* fix: don't show tag suggestion when on '#'
Fixes this issue like this:
1. Text #tag text
^ backspace here
2. Text#tag text
^ space
3. Text #tag text
^ tag suggestion opens
* feat: make filtering case insensitive
* fix: wrong letter case when accepting suggestion
* refactor: wrap textarea in TagSuggestions
* fix: less styles not matching common-editor-inputer
* refactor: use explanatory const names for tested value in conditional checks
* feat: style highlighted option
* feat: handle down/up arrow keys
* feat: handle enter or tab to trigger autocomplete
* fix: wrong import
* fix: tab key adding whitespace after auto-completion
* fix: starting a note with a tag
* fix: close on escape
* refactor: early version of removed wrapping and children prop
* refactor: remove unnecessary return false
* refactor: finished rewriting to not wrap editor
* feat: figure out how to read caret position
* feat: figure out how to read caret position
* feat: create and style Editor/TagSuggestions.txs
* feat: progress on detect when to show and hide
* feat: progress on when to show and hide and setting position
* feat: toggling and exact placement done
* fix: pnpm lock problems
* feat: filter suggestions by partially typed tag name
* style: prettier
* chore: add types package for textarea-caret
* feat: handle option click
* style: prettier
* style: reorder imports
Co-authored-by: boojack <stevenlgtm@gmail.com>
---------
Co-authored-by: boojack <stevenlgtm@gmail.com>