Commit Graph

144 Commits

Author SHA1 Message Date
Bendt
ab55d0836e Add IPC listener to calendar and tasks apps for sync daemon refresh notifications 2025-12-19 15:57:46 -05:00
Bendt
f5ad43323c Improve mail and calendar UI: tighter checkbox layout and current time styling 2025-12-19 15:56:01 -05:00
Bendt
8933dadcd0 Improve mail sync performance with connection pooling and larger batches 2025-12-19 15:53:34 -05:00
Bendt
aaabd83fc7 Fix sync TUI freeze by completing auth before starting dashboard 2025-12-19 15:50:23 -05:00
Bendt
560bc1d3bd Add date picker for search date/before/after keywords
- Add DatePickerModal using MonthCalendar widget from calendar app
- Detect when user types 'date ', 'before ', or 'after ' and show picker
- Insert selected date (YYYY-MM-DD format) into search input
- Support keyboard navigation (left/right for months, Enter to select)
- Today button for quick selection of current date
2025-12-19 15:45:15 -05:00
Bendt
d4b09e5338 Improve search autocomplete UX
- Tab key accepts autocomplete suggestion (like right arrow)
- Prevent search from firing while autocomplete suggestion is visible
2025-12-19 15:42:31 -05:00
Bendt
9a2f8ee211 Add search autocomplete and fix search state restoration
- Add SuggestFromList with Himalaya keywords for search input autocomplete
- Cache and restore metadata_by_id when cancelling search (fixes navigation)
- Set search_mode=True when opening panel for consistent Escape behavior
- Fix SearchPanel CSS vertical alignment with explicit heights
2025-12-19 15:33:42 -05:00
Bendt
5deebbbf98 Fix search stability and improve Escape key behavior
- Add bounds check in _mark_message_as_read to prevent IndexError
- Clear metadata_by_id when search returns no results
- Escape now focuses search input when in search mode instead of exiting
- Add focus_input() method to SearchPanel
2025-12-19 15:10:50 -05:00
Bendt
807736f808 Support raw Himalaya query syntax in search
Detect when user types a query starting with Himalaya keywords (from, to,
subject, body, date, before, after, flag, not, order by) and pass it
through as-is instead of wrapping it in the compound search pattern.

This allows both:
- Simple searches: 'edson' → searches from/to/subject/body
- Raw queries: 'from edson' → uses Himalaya syntax directly
2025-12-19 15:00:04 -05:00
Bendt
a5f7e78d8d Fix IndexError when pressing Escape to exit search mode
Add bounds check in refresh_list_view_items() to handle cases where
ListView and message_store.envelopes are temporarily out of sync
during transitions (e.g., when exiting search mode).
2025-12-19 14:54:40 -05:00
Bendt
f56f1931bf Fix IndexError when selecting search results
The search header was being added to ListView but not to message_store.envelopes,
causing an index mismatch when marking messages as read. Now the search header
is included in the envelopes list and metadata_by_id is properly updated so
indices align between ListView and the message store.
2025-12-19 14:52:00 -05:00
Bendt
848e2a43a6 Fix Himalaya search by quoting query and placing it at end of command
The search query was being inserted unquoted in the middle of the command,
but Himalaya CLI expects the query to be quoted and positioned at the end.
2025-12-19 14:43:01 -05:00
Bendt
bbc53b4ce7 Add Himalaya search integration tests and fix 0 results display
- Add test mailbox with 5 sample emails for integration testing
- Add himalaya_test_config.toml for local Maildir backend testing
- Create 12 integration tests covering search by from/to/subject/body
- Fix search results display to clear list and show message when 0 results
- Add clear_content() method to ContentContainer widget
2025-12-19 14:42:10 -05:00
Bendt
8be4b4785c Add live search panel with debounced Himalaya search and help modal 2025-12-19 14:31:21 -05:00
Bendt
0cd7cf6984 Implement mail search using Himalaya CLI with auto-select first result 2025-12-19 14:18:40 -05:00
Bendt
d3468f7395 Fix mail search crash when envelope fields are None 2025-12-19 14:09:10 -05:00
Bendt
b75c069035 Fix mini-calendar to respect week_start_day config setting 2025-12-19 13:00:42 -05:00
Bendt
3629757e70 Add context filter to Tasks TUI and fix calendar UI bugs
Tasks TUI:
- Add context support to TaskBackend interface (get_context, set_context,
  get_contexts methods)
- Implement context methods in DstaskClient
- Add Context section to FilterSidebar (above projects/tags)
- Context changes persist via backend CLI

Calendar TUI:
- Remove duplicate header from InvitesPanel (use border_title instead)
- Fix border_title color to use $primary
- Fix WeekGrid to always scroll to work day start (7am) on mount
2025-12-19 11:51:53 -05:00
Bendt
be2f67bb7b Fix TUI bugs: folder selection, filter stability, UI consistency
- Mail: Fix folder/account selector not triggering reload (use direct
  fetch instead of reactive reload_needed flag)
- Tasks: Store all_projects/all_tags on mount so filters don't change
  when filtering; add OR search for multiple tags
- Sync: Use rounded borders and border_title for sidebar/activity log
- Calendar: Remove padding from mini-calendar, add rounded border and
  border_title to invites panel
2025-12-19 11:24:15 -05:00
Bendt
25385c6482 Add search functionality to Mail TUI with / keybinding
- Add reusable SearchScreen modal and ClearableSearchInput widget
- Implement filter_by_query in MessageStore for client-side filtering
- Search matches subject, sender name/email, recipient name/email
- Press / to open search, Escape to clear search filter
- Shows search query in list subtitle when filter is active
2025-12-19 11:01:05 -05:00
Bendt
3c45e2a154 Add calendar invites panel to Calendar TUI sidebar
- Create InvitesPanel widget showing pending invites from Microsoft Graph
- Add fetch_pending_invites() and respond_to_invite() API functions
- Invites load asynchronously in background on app mount
- Display invite subject, date/time, and organizer
- Add 'i' keybinding to focus invites panel
- Style: tentative invites shown in warning color
2025-12-19 10:51:15 -05:00
Bendt
a82f001918 Add mini-calendar sidebar to Calendar TUI
- Add MonthCalendar widget as a collapsible sidebar (toggle with 's')
- Sidebar syncs with main week grid (week highlight, selected date)
- Click dates in sidebar to navigate week grid to that date
- Click month navigation arrows to change displayed month
- Add goto_date() method to WeekGrid for date navigation
2025-12-19 10:40:33 -05:00
Bendt
48d2455b9c Make TUI the default mode for luk sync command
- luk sync now launches interactive TUI dashboard by default
- Add --once flag for single sync (non-interactive)
- Add --daemon flag for background daemon mode
- Keep 'luk sync run' as legacy subcommand for backwards compatibility
- Move common options (org, vdir, notify, etc.) to group level
2025-12-19 10:33:48 -05:00
Bendt
d4226caf0a Complete Phase 1: parallel sync, IPC, theme colors, lazy CLI loading
- Sync: Parallelize message downloads with asyncio.gather (batch size 5)
- Sync: Increase HTTP semaphore from 2 to 5 concurrent requests
- Sync: Add IPC notifications to sync daemon after sync completes
- Mail: Replace all hardcoded RGB colors with theme variables
- Mail: Remove envelope icon/checkbox gap (padding cleanup)
- Mail: Add IPC listener for refresh notifications from sync
- Calendar: Style current time line with error color and solid line
- Tasks: Fix table not displaying (CSS grid to horizontal layout)
- CLI: Implement lazy command loading for faster startup (~12s to ~0.3s)
- Add PROJECT_PLAN.md with full improvement roadmap
- Add src/utils/ipc.py for Unix socket cross-app communication
2025-12-19 10:29:53 -05:00
Bendt
a41d59e529 WIP 2025-12-18 22:11:47 -05:00
Bendt
0ed7800575 add new tasks 2025-12-18 15:40:03 -05:00
Bendt
a63aadffcb wip 2025-12-18 14:54:51 -05:00
Bendt
36d48c18d1 add task ui 2025-12-18 14:34:29 -05:00
Bendt
fe65183fb7 move and rename module 2025-12-18 14:00:54 -05:00
Bendt
37be42884f fix link shortcut and mark as read 2025-12-18 13:53:55 -05:00
Bendt
4a21eef6f8 selection and archive 2025-12-18 13:44:17 -05:00
Bendt
8244bd94c9 bug fix display and load 2025-12-18 13:29:56 -05:00
Bendt
4dbb7c5fea task creation 2025-12-18 12:09:21 -05:00
Bendt
82fbc31683 better link display and opening 2025-12-18 11:57:29 -05:00
Bendt
e08f552386 link panel 2025-12-18 11:43:37 -05:00
Bendt
3640d143cf add himalay 2025-12-18 10:25:37 -05:00
Bendt
a934de6bba fix 2025-12-18 10:07:01 -05:00
Tim Bendt
523cf78737 sync fixed 2025-12-17 11:20:28 -05:00
Tim Bendt
d33d6a4dc4 fix exit hanging 2025-12-16 21:17:35 -05:00
Tim Bendt
d7c82a0da0 dashboard sync app 2025-12-16 17:13:26 -05:00
Tim Bendt
73079f743a gitlab feature start 2025-11-05 08:56:31 -05:00
Tim Bendt
c46d53b261 godspeed app sync 2025-08-20 08:30:54 -04:00
Tim Bendt
ca6e4cdf5d wip 2025-08-18 10:58:48 -04:00
Tim Bendt
c64fbbb072 aerc sendmail wip 2025-08-11 09:44:47 -05:00
Tim Bendt
5eddddc8ec add sync notifications 2025-08-06 15:35:40 -05:00
Tim Bendt
8881b6933b wip 2025-07-29 10:48:45 -04:00
Tim Bendt
d7ca5e451d fix sync timestamp creation in calendar downloads
Ensures .sync_timestamp file is created during regular calendar sync (server → local) so daemon can properly detect local calendar changes and track sync history.

🤖 Generated with [opencode](https://opencode.ai)

Co-Authored-By: opencode <noreply@opencode.ai>
2025-07-16 10:08:32 -04:00
Tim Bendt
fc7d07ae6b add calendar change detection to daemon mode
Enhances the sync daemon to monitor both email and calendar changes, automatically triggering syncs when local calendar events are added or deleted in VDIR format.

🤖 Generated with [opencode](https://opencode.ai)

Co-Authored-By: opencode <noreply@opencode.ai>
2025-07-16 09:46:31 -04:00
Tim Bendt
1f306fffd7 add vdir sync feature 2025-07-15 23:39:53 -04:00
Tim Bendt
df4c49c3ef trying a simple shell script and fixing archives 2025-07-15 22:13:46 -04:00