UX

This page collects general UX requirements.

Generally available buttons and menu items are disabled instead of not shown

req~ux.disabled-vs-hidden~1

When there is functionality generally available but cannot be executed at the present time, it is shown as disabled.

Example: Button to open a link. If there is no link, the button should be shown but not enabled.

Needs: impl

Confirmation dialogs use the action name as the confirm button label

req~ui.dialogs.confirmation.naming~1

In confirmation dialogs, the confirm button must be labeled with the specific action name (e.g., “Download full text documents”) rather than a generic label such as “OK” or “Yes”. This makes the intended action unambiguous and reduces the risk of accidental confirmation.

Needs: impl

Auto close of merge entries dialog

req~ux.auto-close.merge-entries~1

The merge entries dialog collects and merges data from multiple sources. In case there is only one source, it should not be shown. Since some data fetchers take time, we need to open the dialog and wait until all sources are available. As soon as only one source is available, the dialog should be closed to speed up the user’s workflow.

Needs: impl

Critical startup failures show an error dialog

req~ux.startup.critical-error-dialog~1

If a critical error occurs before the main window is fully constructed, it must not fail silently. The user needs a visible error dialog, in addition to the log entry, since digging through log files is not accessible to most users.

Needs: impl

Merge entries dialog allows selecting empty field values

req~ux.merge-entries.select-empty-field~1

When the merge entries dialog shows a field that is missing in one of the source entries, the user must be able to explicitly select that empty value so the merged entry is cleared for that field.

Needs: impl

GitHub personal access token verification

req~ux.git-share.personal-access-token-verification~1

The GitHub sharing dialog must allow users to verify that their personal access token has push access to the configured GitHub repository before sharing a library.

Needs: impl

Git pull with unrelated histories

req~ux.git-pull.unrelated-histories~1

Git pull must support a local library and its configured remote when their commit histories have no common ancestor.

Needs: impl

Git push to an empty remote

req~ux.git-push.empty-remote~1

Git push must publish the current branch and configure its upstream when the configured remote has no branches.

Needs: impl

Git push rejection reporting

req~ux.git-push.rejected-update-reporting~1

Git push must report a rejected remote update to the user.

Needs: impl

Activating large libraries keeps entry previews responsive

req~ux.active-library.preview-responsiveness~1

When a user activates a large library, automatic group construction and group-count evaluation must not delay rendering the selected entry preview.

Needs: impl