33 Commits

Author SHA1 Message Date
Alexander 41d18d88aa Add right-click context menu with status, archive, and delete actions
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-28 19:47:46 +02:00
Alexander 6a9799f636 Update flake 2026-08-28 18:45:12 +02:00
Alexander edd5deaf5a Honor reload abort in backup restore 2026-08-28 16:09:51 +02:00
Alexander f2b6ac3a49 Flush pending saves before reloading projects
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-28 15:55:51 +02:00
Alexander 9ad6531151 Preserve per-project archive history when restoring items
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-28 15:51:15 +02:00
Alexander f0f031cd4a Add multi-project docs and rebuild webapp bundle 2026-08-28 15:33:45 +02:00
Alexander d7e212150e Add admin projects manager and per-project import target
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-28 15:22:16 +02:00
Alexander 37206b14be Add collapsible project sections with rename and delete actions 2026-08-24 17:29:52 +02:00
Alexander 89fa19fce9 Add project type toggle and prompt dialog to item dialogs 2026-08-24 17:29:51 +02:00
Alexander fa70bab201 Strip merge-only id suffix when writing project files 2026-08-24 13:32:40 +02:00
Alexander 55ae8eeff7 Add multi-project state, merged loading, and per-project saving 2026-08-24 13:25:15 +02:00
Alexander 44a247e725 Add project-scoped methods to Api backend 2026-08-24 13:02:20 +02:00
Alexander 7573e89b5e Add project register, unregister, and rename endpoints 2026-08-24 12:46:42 +02:00
Alexander 41d419e5f8 Add per-project API namespace with legacy default aliases 2026-08-24 12:33:06 +02:00
Alexander fcb207b228 Add project registry core with default auto-registration 2026-08-24 12:20:37 +02:00
Alexander 17e67f9ed6 Fix NixOS module: create dataDir for real users, use str type
- Add preStart to create dataDir when using real user
- Only set WorkingDirectory for default system user
- Change dataDir type from path to str
2026-08-23 12:23:32 +02:00
Alexander 70d81af82f Support running service as real user to access home directories
- NixOS module conditionally applies restrictions based on user
- When user != 'backlog', disables ProtectHome and ProtectSystem
- Allows service to access ~/... paths when running as real user
- Update placeholder to show absolute path example
2026-08-23 12:23:32 +02:00
Alexander 0a408dd992 Fix Nix package webapp path by adding --web-dir to wrapper 2026-08-23 12:23:07 +02:00
Alexander 7b65fbe22c Add Nix packaging with NixOS module
- nix/package.nix: derivation for personal-backlog server + webapp
- nix/module.nix: NixOS module for services.personal-backlog
- Expose packages and nixosModules in flake.nix

Usage in NixOS configuration:
  services.personal-backlog = {
    enable = true;
    port = 8080;
    dataDir = "/var/lib/personal-backlog";
    openFirewall = false;
  };
2026-08-23 12:23:07 +02:00
Alexander 9a44bcbcfd Add flake 2026-08-23 12:23:07 +02:00
Ilia Sharin 2bcedda2c2 Add cold archive feature for done/cancelled items
- Separate archive.md file for archived items (append-only)
- Archive manager in Admin page with filters and search
- Global search shows archive results with count in header
- Restore items to original location via restore-path metadata
- Read-only view dialog for archived items (double-click to open)
- Python API endpoints: GET/POST /api/archive, POST /api/archive/restore
- Support in all storage backends (API, Direct, Browser)
2026-08-20 13:54:06 -04:00
Ilia Sharin 95a628249d Fix body field mismatch when switching between items in edit dialog
The RichTextEditor was not updating its content when switching from one
item to another because initializedRef was only reset when value became
null. Now uses prevValueRef to properly detect value changes.
2026-08-20 13:01:55 -04:00
Ilia Sharin f9ae92f605 Fix rich text editor cursor jumping and add auto-list conversion
- Fix cursor jumping to start when typing in editor by tracking editing state
- Only sync innerHTML from value on initial load, not during active editing
- Add auto-conversion: typing "- " or "* " at line start creates bullet list
- Add auto-conversion: typing "1. " at line start creates numbered list
2026-08-20 11:53:53 -04:00
Ilia Sharin 290905e3d9 Add optional rich text body field to items
- Add body field to data model (stored as markdown in file)
- Parser recognizes `> ` prefixed lines as body content
- Serializer outputs body as indented blockquote lines
- Add lightweight WYSIWYG editor (contenteditable, no external deps)
- Toolbar: bold, italic, link, H1/H2/H3, lists, code block, table, image
- Clipboard export: HTML (for Docs/Word), Markdown, plain text
- Editor shows collapsed when empty, expands on click
- Include body in text search filter
- Dark mode support for editor styles
- Update README with feature and file format example
2026-08-20 10:10:37 -04:00
Ilia Sharin 062d9ca736 Update README: fix Firefox/Safari storage description, add dark mode and icon sets, clarify storage modes 2026-05-07 17:23:06 -04:00
Ilia Sharin 37563ffe6e Add dark mode with system/light/dark theme selector in Appearance 2026-05-07 17:13:31 -04:00
Alexander Derevianko c2e9eaaa7b Add browser storage fallback for Firefox/Safari (#1)
IndexedDB-based storage backend with Storage Persistence API for browsers
without File System Access API support. Requests persistent storage on
first save to protect data from automatic eviction. Includes backup
rotation (last 10 saves) and appropriate UI banner.
2026-05-07 10:19:20 -04:00
Ilia Sharin 7e9231f0e6 Add icon set selector to admin page with persistent localStorage storage
- Appearance card in admin grid shows all 4 icon styles (color, flat, emoji, ascii)
  with live previews of all 6 statuses and a description for each
- Selected style persists across reloads via localStorage (LS_KEY alongside expandedMap)
- Stats overview card moved before Appearance card in admin grid
- Screenshot images added to README with titles before each image
2026-05-06 10:56:03 -04:00
Ilia Sharin 405b9816ad Added app screenshots 2026-05-05 19:02:59 -04:00
Ilia Sharin ead7997d11 Remove gitignored design/ from README structure 2026-05-05 18:43:37 -04:00
Ilia Sharin 0c44403dcb Merge branch 'main' of https://github.com/alfishe/backlog 2026-05-05 18:42:46 -04:00
Ilia Sharin a2a3b7b72b Initial version 2026-05-05 18:42:06 -04:00
Ilia Sharin d65a9e9667 Initial commit 2026-05-05 18:32:37 -04:00