Coder Social home page Coder Social logo

tumpaproject / tumpa Goto Github PK

View Code? Open in Web Editor NEW
78.0 78.0 4.0 1.03 MB

The usability minded OpenPGP application making PGP usage with smartcards like Yubikey super simple

Home Page: https://tumpa.rocks

License: GNU General Public License v3.0

Python 19.48% Shell 1.26% Just 0.57% QML 78.68%
encryption gui openpgp security smartcard

tumpa's People

Contributors

krihal avatar kushaldas avatar saptaks avatar shaan7 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

tumpa's Issues

Should we preselect all 3 subkeys?

In some user-testing one of the questions that came up is "Why is authentication not selected by default?". For many who might not be aware of the usecases for each of the subkeys, making a decision by themselves which subkeys to select might be complicated and they might stick with the default. So we need to decide if we want to just pre-select all 3 subkeys.

  • Select all 3 subkeys in the UI?
  • Documentation regarding subkeys and their different types

Logging system for interactions

We should have a proper logging system that can be used if the code is run in verbose mode for debugging purposes. The logs will be helpful to debug which interactions are working, and where the code is running into an error.

Show all subkeys

In the place to show the details of a key, we should be able to show all the subkeys for that given key.

New UI / UX designs

Following are the design links for the new design mocks:

Available Keys: https://design.penpot.app/#/view/4f8eaf40-82b3-11eb-8f95-3363e266841f/7d5ac670-82b3-11eb-8ee5-6ba2e007e956?token=1IBT0bkuAce7UWeP7uRqHQ&index=0

Key Generation Form: https://design.penpot.app/#/view/4f8eaf40-82b3-11eb-8f95-3363e266841f/4cc42d80-82c7-11eb-8d47-5f1288a6bbce?token=xKbVsCDZEy1Fd391iqBcOw&index=0

Smart Card Options: https://design.penpot.app/#/view/4f8eaf40-82b3-11eb-8f95-3363e266841f/f286e2d0-8448-11eb-b38d-9b790b8d310b?index=0

There are many more elements/features needed to be added to the current design. We are currently working on implementing the above designs in the ui-revamp branch

You can find discussions and issues related to the new UI implementation in #30

If anyone is interested in helping us improve the designs, you will need to create an account in penpot.app and then I can give you access to the designs. If you have used figma before, penpot is very similar to figma and is also open source.

Make the ScrollView scroll with keyboard navigation

Right now, keyboard navigation works using "Tab" key. However, while navigating using "Tab" key, even though the focus moves correctly, the scroll view doesn't scroll. We need to find a way so that the scroll view scrolls to show the current focused item.

Better help texts in forms

We need to have better help texts in form inputs explaining what they are and how to use them. The other alternative could be to provide a "Learn more" link beside the label that points to the documentation explaining each of the form inputs and what they mean and how they are used.

Hover state for button and other interactive element

Right now, a user doesn't get much indication whether an item is a button or other interactive element, apart from the design suggesting so. We need to provide hover state designs for the buttons, so that it's easier for users to identify the interactive items.

[Redesign] Component: Forms

There are many different form elements throughout the tool. Let's make all the form elements along with the label, so that it's easily manageable and abstracted. We can then just pass the labelName to the form element, and not need to decide for each of them while adding them to the screen.

  • Text Input
  • Password Input
  • Textarea Input
  • Date Input
  • Checkboxes
  • Dropdown Input

Most of the designs for the form elements can be found here: https://www.figma.com/file/TxuhKDUzjxjfe7ug3qP4eD/Tumpa?node-id=439%3A201&t=lh0AiZhZLatVedmA-4

image

PS: Test that all the input fields are reachable by keyboard focus. Also all inputs label names are announced by screenreaders.

Make a backup UX

Add an user experience to automatically back keys, etc to external drive, or even remote servers if internet.

[Redesign] Component: Key Item

image

In the key list that is shown in the first screen, there is a list of key items as shown in the screenshot with few different components. Use button components for the buttons/links at the bottom of the key items.

https://www.figma.com/file/TxuhKDUzjxjfe7ug3qP4eD/Tumpa?node-id=546%3A507&t=qGNZ5gq65tdNdXen-4

The key can also have an expired state:
image
On clicking "Send Key to card" for an expired key, it should raise an error warning modal (https://www.figma.com/file/TxuhKDUzjxjfe7ug3qP4eD/Tumpa?node-id=606%3A480&t=vPLLcrcDMJxR3YF9-4)

Deliverables:

  • Normal Key with a list of buttons
    - [ ] Clicking "Delete" button raises a warning modal (will be implemented after backend integration)
  • Expired key if expiration date past the current date
    - [ ] Clicking "Send key to card" for as expired key raises an error modal. (will be implemented after backend integration)

Documentation about system requirements

apt install pcscd

or

$ sudo dnf install pcscd

and then

$ sudo systemctl restart pcscd

We need the pcscd service to be running for card upload/view.

Harlo found the trouble in Debian 11.

Feature request: Windows OS support

Hi everyone,

what about Windows OS support? Currently, it looks like only Linux and MacOS are supported since there are only package releases for those OS and the docs do not mention anything else, specifically.

Are there plans to add that, or is it technically not possible and therefore can't happen?

Strength indicator for password fields

From some user-testing, one of the nice-to-have feature requests that came up was having a strength indicator for the password fields. I think it's definitely good to have to avoid users from using very small passwords, passwords with their name/email, or passwords from a list of commonly used and exposed passwords.

Show warning when uploading key to card that card will be reset

Right now the user might not know that the smartcard will have to be reset so that the keys can be sent to the smartcard. As a result, if they change informations in the smartcard before, all of them will be reset. So showing this message either in the modal, or in the forms itself somewhere, might be a good idea.

Hide the subkey options in advanced section

Since many of our target users might not be aware of what subkeys are, it would be better to hide that configuration by default in advanced. We will have the subkeys selected (encryption and signing by default). Anyone who wants to modify, can click on advanced settings to change that.

Choice to select subkeys to export

Suggestion: It would be good to have an options to give users the choice to select which subkeys they want to write on the smartcard

Note: In a way, we can give a similar option while generation as well if someone wants to skip creating certain subkey (authentication key for example)

Admin pin dialog shows error

Since admin pin change dialog uses the same Dialog class as upload to smart card, the validity check of upload to smart card applies which causes some unwanted errors.

Component: Date input form

As discussed in #51 (comment), in our next iteration we will want a date input with a better UX. The idea would be some for of a date picker that opens as a dropdown. For this issue, we have 2 requirements:

  • Design for the dropdown
  • Implementation of the design using QML

[Redesign] View: Key Details

image

There are few different parts to the Key Info page:

Discussion related to new UI

Screenshot from 2021-02-23 09-09-31

The blue box here ended fast.

smartcard ui

Screenshot from 2021-02-23 09-09-46

We need to find a way how to mark (maybe by a deep color) to show which button/action is currently active.
Also, we should select the first button as the default UI action.

[Redesign] Component: Buttons

There are different groups of buttons and link components that we will need for the redesign. The idea is to have the components separately created so we can abstract the component level designs while creating each of the windows and screens.

Both primary buttons have a "danger" state which is the red color variant of the button. Also, let's make all the buttons with the ability to have (or not have) an icon.

All buttons should also have a hover state and be keyboard focusable (or focusable by tab)

[Redesign] View: Home View

There are two main states that the Home view can be in:

The list of available keys can also have expired keys (https://www.figma.com/file/TxuhKDUzjxjfe7ug3qP4eD/Tumpa?node-id=619%3A681&t=vPLLcrcDMJxR3YF9-4). The individual key components can be found from the issue: #53

[Redesign] Component: Modal

image

We are going to use modal only for alert/error messages or for confirmation message (i.e. while deleting something). Let's make the component have following properties:

  • Title (required)
  • Message (required)
  • State (default: danger): This will determine the color of the primary button as well as the icon shown
  • Primary CTA (optional)
  • Secondary CTA (required)

Currently we have only one state which is danger, but in case we need some success state, etc. will be good to have it flexible. For the CTA, use the button components

https://www.figma.com/file/TxuhKDUzjxjfe7ug3qP4eD/Tumpa?node-id=440%3A8282&t=qGNZ5gq65tdNdXen-4

[Redesign] Component: Sidebar

The sidebar is an important component that is shown in every screen. We will probably have it as a SplitView, but the contents inside the SplitView can be made into a separate component. If that doesn't seem ideal, we can consider this issue done, once the sidebar part of the SplitView is fully implemented.

image

Deliverables:

  • Implement the above design
  • The items on the sidebar should be clickable and focusable by keyboard
  • They should have a hover state
  • On clicking them, the other half of the splitview should update (not necessarily the full design)
  • Keep the smart card section always expanded (no need of making it collapsible for now)
  • The "card detected" status label should update accordingly depending on whether an yubikey is connected.

User testing suggestions

This is an on-going epic adding all the UI improvements suggested or coming up while we user test more and more.

  • Show somewhere the information that the key is a Cv25519 key and might not work with only certain smartcards.
  • The enable/disable flow of the upload to smart button need to be improved
  • Hide subkey options in Advanced settings (#17)
  • [ ]

Show the type of key

Right now, there is no way to identify if a key is a RSA key or CV25519 key. It is important to know this since people using yubikey 4 won't be able to use CV25519 key, so displaying the type of the key avoids errors.

Verify key passphrase

Right now if the user types wrong passphrase for the key while uploading the key to the card, it fails saying "Failed to upload to the card.". We should first verify if the passphrase is correct (or show proper error), and then try to upload to the card.

We can sign a small message to verify the passphrase.

This came up while initial testing by Harlo.

[Redesign] View: Smart Card details

Update to PySide6

There might be reasons I'm not aware of to stay at PySide2, but with PySide6 Tumpa would run natively on newer MacBooks for example, which would save users the hassle using Rosetta for x86 emulation. After all there are quite a few people at SUNET and other organizations which are using MacBooks.

Here is a PR for updating to PySide6: #47

[Design]: A separate error icon

Right now, we are using the same icons for both error and warning modals. However, the error modal is shown when some error happened in the code or some particular action can't be taken because smartcard not detected. While, the warning modals are for deletion, revokation, etc. Hence we need a separate icon for error modals.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.