You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Go to file
Benedikt Terhechte 8ee485f7a7 Use an additional trait and some cfgs to refactor the thread away
As wasm doesn't support threads and we're using a background
processing thread. We had to refactor this away. The solution
is mediocre (for now) but involves a separate `DatabaseQuery`
trait which is trait object compatible and is used to make
synchronous calls.
3 years ago
.cargo Added cargo config for easy testing of different archs 3 years ago
.github/workflows Try to get ubuntu to build 3 years ago
.vscode Added vscode task for running 3 years ago
icons Added script and app icon 3 years ago
postsack Used `DatabaseLike` trait instead of actual `Database` in gui 3 years ago
ps-core Use an additional trait and some cfgs to refactor the thread away 3 years ago
ps-database Added small cfgs for wasm32 to make it compile 3 years ago
ps-gui Added small cfgs for wasm32 to make it compile 3 years ago
ps-importer Ported tests over, fixed tests 3 years ago
resources Added the sketch file for the app icon 3 years ago
.gitignore Initial Workspace restructuring compiles 3 years ago
Cargo.lock Used `DatabaseLike` trait instead of actual `Database` in gui 3 years ago
Cargo.toml Initial Workspace restructuring compiles 3 years ago
README.md Initial Workspace restructuring compiles 3 years ago

README.md

Postsack

What can go into core (web compatible!)?

  • database only as trait
  • importer only as trait

Provides a high level visual overview of swaths of email

Performance

It currently parses 632383 emails in ~160 seconds, so roughly 4.000 emails per second. This excludes (for now) attachments. Update: It currently parses 632115 emails in ~56 seconds, so roughly 11.000 emails per second. This excludes (for now) attachments. (on M1)

Open Issues

  • check the feature.lru to see if it compiles without LRU
  • build static linux binary via docker: Via Github Actions?
  • try to build a static windows binary: Via Github Actions?
  • try to build a macos binary: Via Github Actions?
  • Demo Video
  • Documentation
  • wasm build?

Windows Issues

  • No Outlook support
  • The apple importer fails
  • Very much untested (it does run though)

Future Options

  • Add additional UI based on Druid, Iced or Native Cocoa
  • maybe add blocking versions of the calls, too (in model)
  • abstract over Fields and backend to have a generic way to display groupable information
  • apply the window changes (no status etc) on startup, not just when loading main
  • split up into multiple crates
  • action when clicking an email?
  • support light theme
  • allow diving into splits/segments until there're no gropu bys anymore, but the last split can be opened full (to see the mails)
  • remove unneeded dependencies and features
  • add support for generating mail deletion rules based on the visible mails
  • support more mail formats:
    • outlook
    • notmuch
    • maildir

Development

Generate a macOS bundle (requires Cargo Bundle)

./build_mac.sh

Linux Dependencies

In order to build (and or run) on Linux, the following dependencies are needed:

Fedora

# Development
sudo dnf install @development-tools glib cairo-devel pango-devel gdk-pixbux2-devel atk-devel gtk3 gtk3-devel libsqlite3x-devel

Ubuntu

# Development
sudo apt-get install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libspeechd-dev libxkbcommon-dev libssl-dev libsqlite3-dev