The new manifest yields much better flatpaks for our end-users:
- Fewer permissions are requested
- Fixed app icon
- Release build instead of a debug build
Minimal support for requesting window activation in response to
activation requests from D-Bus.
This provides minimal support for xdg D-Bus activation in Keysmith:
only the activation signal itself is handled; the DBus API for opening
URLs is not implemented.
Issues: #18
This change provides the most basic D-Bus support in Keysmith.
At start up, Keysmith will now register itself and abort if another
instance is already running. Full support for the xdg D-Bus activation
specification (such as URI opening) is not yet implemented.
By default this feature is disabled on Android, but enabled on 'all'
other platforms. Explicit control may be exercised by running CMake
with -DBUILD_DBUS_INTERFACE=<ON|OFF>.
Issues: #18
Turns out it is not needed to check whether an action is enabled before
triggerin it: the trigger is automatically suppressed if the action is
not yet enabled.
Add a 'proxy' to forward external API calls into the main application
control flow. Right now it only supports forwarding commandline
arguments, but this construct is already useful as a starting point for
future D-Bus API support.
This change prepares Keysmith for moving logic away from QML to C++
- Added view model classes for each defined Navigation::Page instance
- Added 'flows' to provide a C++ equivalent for control flow logic
which currently still resides in QML
The purpose the view model classes is to provide data (properties) and
actions (methods to invoke) to the QML page UI. These are relatively
thin wrappers to expose the C++ state (Store) and logic (flows) as an
easy to use API for the QML UI.
The 'Store' is a convenient wrapper for injecting a dependency on the
entire application state (root) so it can be re-used by independent
flows of C++ logic. It will be used both to provide data to the view
models for the QML UI, and as a way to record results of actions
dispatched from the UI.
With this change the following (additional) state is defined:
- OverviewState, which will be used to track state that determines how
the AccountsOverview QML UI should render and what features are
enabled/disabled in it. This state may be manipulated as a a
side-effect of various interactios with arbitrary pages.
- FlowState, which will be used to track state about which control/
logic flows have completed and whether or not something is currently
running. This is will be used to avoid distracting the user from an
active UX flow with random unrelated prompts.
An app::Navigation class is introduced with an API very similar to the
Kirigami.PageRouter in QML. This new class is responsible for pusing
populated view model classes from C++ into QML ownership and triggering
appropriate navigation events. On the QML side a signal handler
forwards these calls to the Kirigami.PageRouter to perform the actual
navigation in the UI.
This construct paves the way for moving state transition and related
logic out of QML and towards C++, since this logic is currently mostly
concerned with page navigation in Keysmith. Ultimately that transition
should make the QML (page) views more easily re-usable.
Replace existing manual manipulation of the application page stack with
a more declarative setup using Kirigami.PageRouter. This change does
not yet address the control flow: pages are not yet properly decoupled.
Previously the script would break if run from "/path to directory"
as opposed to "/path/to/directory". As it happens this was not an
issue on Binary Factory, but it is on build.kde.org because that one
does use directory names containing spaces.
Needed to support automatic migration of old Keysmith storage format.
This is unfortunate, but we have users and we cannot simply break
backwards compatibility with the old storage format (yet).
With this change the user now gets appropriate error feedback when trying to unlock their accounts using an incorrect password.
Additionally password entry is temporarily suspended in the UI while key derivation (etc.) is in progress.
This should help convey the idea that "something is happening", or rather avoid the impression that "nothing happens" or "this is broken" when in fact key derivation may simply be slow depending on the machine.
Previously entering an incorrect password would appear to successfully "unlock" accounts, contrary to expectations.
By introducing a challenge object as part of the master key parameters, an incorrect password can now be detected and signalled accordingly.
This fix introduces a backwards incompatible change to the accounts data as stored on disk, meaning old Keysmith accounts configuration will no longer load and must be recreated from scratch.