About Me

Enpass on desktops should be split into two separate programs:
EnpassCore.exe: This executable file constitutes the core Enpass service that browser plugins communicate with. It should have no window-based-UI whatsoever. This is also what users (and/or the installer) would add to the boot sequence. On boot, adding an icon to the tray (on Windows) or the menu bar (on OSX) would be the only clue it is running.
EnpassUI.exe: This executable file constitutes the windowed UI. If EnpassCore isn't running, launching the EnpassUI would automatically launch EnpassCore as well. From any browser plugin, EnpassUI should never be more than a single click away.
Benefits:
EnpassCore has no windowed UI, so we could launch it as part of the boot sequence without having to deal with the annoying Enpass window being opened on every boot.
A UI window should be in in one of the following states: opened, minimized, maximized, or closed. Since EnpassCore is always represented in the tray and EnpassUI is independent of that, there would be absolutely no need for the additional and unusual "minimized but in the tray" state Enpass currently employs. By separating what should be purely a background process from the front-end UI, we can eliminate the need for the quirky "minimize to tray" option and also say goodbye to the bothersome "Click here to restore Enpass" message that is shown every time Enpass is minimized to the tray on Windows 10. In a nutshell, how and when we require the UI for data lookup or data entry should have no affect on whether or not the Enpass service is running in the background.
Because EnpassCore has no windowed UI, it could be very "lean and mean", thereby not noticeably impacting boot performance (assuming it's implemented as a native C/C++ application).
For those people who are used to (or like) the way Enpass works now, there is no difference. Users can still add EnpassUI to the boot sequence and have the Enpass Window opened on boot if that is their preference.
Technical thoughts:
Architecturally, browser plugins and the EnpassUI would just be different clients of the same EnpassCore application.
In the interest of a shared code base and developer productivity, EnpassCore would ideally be implemented as a C/C++ program that can be compiled on any of the platforms Enpass supports.
I chose the filenames EnpassCore.exe and EnpassUI.exe only as a way to more clearly communicate their purpose. Nothing more. The filenames are not part of this suggestion. It would probably be best if EnpassUI is named enpass.exe, so that launching enpass.exe would open the windowed UI as it always has. In this way, people who don't know about, care, or want this change wouldn't be impacted by it at all.