Skip to content

Improve search, mail actions and workspace usability - #20

Merged
mrinc merged 8 commits into
masterfrom
fix/preview-action-behavior
Sep 13, 2026
Merged

mrinc merged 8 commits into
masterfrom
fix/preview-action-behavior

Conversation

@bcbetterninja

@bcbetterninja bcbetterninja commented Sep 13, 2026 •

Copy link
Copy Markdown
Collaborator

Full cached message bodies now load independently of background sync and folder navigation. A dedicated encrypted WAL reader serves message-body and thread lookups, and thread membership uses the existing index instead of scanning unrelated mail. The regression holds both writer/folder gates and an actual uncommitted transaction while verifying full reading-pane rendering, committed data and cancellation.

Mail previews can now close immediately after an action is locally accepted, and global search uses editable text with validated filter badges and a grouped advanced-filter form.

  • Settings → Mail & notifications → Separate mail windows offers independent Close / Stay open choices for reply, reply all, forward, archive, delete, move, junk, read, flag and pin. Existing profiles default to Stay open. Moves/state changes close after durable queueing, before background sync; reply/forward closes after the composer opens. Cancelled/rejected actions keep the preview available.
  • The thread action indicator sits at the bottom of the entire header. Settings Close is now left of the title.
  • Global search has no separate Search/Filters buttons. Focus or Enter runs a nonempty query; empty focus exposes Advanced filter. Unfocused structured tokens become green/red badges; focus restores the exact text. Invalid values such as type:Mails and unresolved account/mail-folder references are marked red.
  • Search results dismiss on outside click, have no close button, show a full-width loading line above the results, and place Advanced filter beside Search results.
  • The form automatically generates the query with multi-select types, accounts/shared mailboxes, folder inclusions/exclusions, states and categories. It includes date/time pickers, attachments Yes/No/Not set, and type-dependent mail fields. Mail-only fields are omitted when Mail is not selected.
  • Folder pickers are scoped to selected accounts. notin: excludes descendants; owner-qualified paths avoid matching another mailbox/account. Types, accounts, included folders and categories use OR semantics; states and date conditions use AND semantics, rejecting read+unread.

Drive path selection is available when Drive is the only selected type. The picker loads folders on expansion; path searches filter the synced file index before the result limit, and the results panel states that cached scope. No new Drive provider is introduced.

Additional workspace fixes:

  • Multi-type shared-mailbox searches use the linked parent account for non-mail workspaces. Selected account IDs are filtered together in SQL before one global result limit, removing account-selection-order bias.
  • People loads automatically before mailbox navigation is ready. Its single toolbar contains New contact and Table/Cards; cards and labeled table columns are distinct layouts.
  • Tasks use matching account/folder styles, open on double-click or Enter, and bind due dates using the picker’s expected date type. Contacts and tasks have no toolbar Refresh button.
  • Notes expansion preserves tree nodes and responds to native expansion. Library-limit errors use concise summaries and expandable details; cached notes are retained. Microsoft error 10008 remains a server restriction.
  • Primary reply defaults to Reply all, configurable in Mail & notifications; explicit reply choices remain available. Signature editing/template previews use separate windows to avoid native surfaces overlapping Settings navigation. The next-event header is opaque and mail actions move into More earlier on smaller screens.

Validation: Release build without warnings; 496 tests passing. Regressions cover durable action acceptance before provider completion, preferences, composer acceptance/rejection, multi-account/type searches, SQL category/state filtering, folder exclusions, Drive path filtering before limits, invalid badges and empty-focus access. Native UI checks cover preview Close / Stay open, loader geometry, badge/text focus, outside-click dismissal, grouped form submission, Drive folder expansion and the left Settings close button. Screenshots contain fictional offline data.

Smart filter badges
Search results
Advanced filter
Date and state conditions
Preview behavior settings

More light/dark views and folder-picker screenshots: UI documentation.

Native workspace checks also passed for automatic initial contacts, real task double-click, task date editing, Notes expansion and absence of native browser surfaces from the scrolling Settings view. Windows native-browser rendering has not been exercised locally.

Mobbin references: Qatalog cards, Pipedrive table, Asana task details.

Contact cards
Contacts table
Task editor
Narrow mail header

Task refresh: F5 remains available, workspace sync reconciles To Do from the updated cache, and reopening with unchanged accounts reloads cached changes. Selection and unsaved editor fields are preserved; regression coverage includes remote additions, changes and removals.

People search merges and sorts matches globally before its result limit, so account-selection order does not suppress better-sorting contacts from later accounts. Regression coverage includes provider and cached results.

Event editing now includes a description field. Create event in mail menus and thread More opens an unsaved event with the full email subject and body, preferring that mailbox’s account calendar. Existing HTML is preserved when unchanged; edited descriptions save as plain text. Older callers omitting a body do not clear existing content. Existing open event editors are protected.

Validation: Release build has zero warnings/errors; all 498 tests pass. Native offline preview passed email-to-event creation and existing workspace checks.

Create event from email — fictional data

@coderabbitai

coderabbitai Bot commented Sep 13, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: d0a13fbe-a29e-4c36-9bed-12cd1fbc3be5


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@bcbetterninja bcbetterninja changed the title Control separate mail window behavior and fix thread action feedback Improve search filters, smart badges and mail preview actions Sep 13, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 75d7023b8d

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/BetterMail.App/MainWindowViewModel.Search.cs Outdated
Comment thread src/BetterMail.App/MainWindowViewModel.Search.cs Outdated
@bcbetterninja bcbetterninja changed the title Improve search filters, smart badges and mail preview actions Improve search, mail actions and workspace usability Sep 13, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 13ee7433c3

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/BetterMail.App/TasksWorkspaceView.axaml

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f97eb00c23

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/BetterMail.App/MainWindowViewModel.cs
@mrinc
mrinc merged commit 5d8ad3c into master Sep 13, 2026
9 checks passed
@mrinc
mrinc deleted the fix/preview-action-behavior branch September 13, 2026 15:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants