All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Fixed issue with bulletin board Ruby client OpenSSL 3.0 compatibility
- The minimum required Ruby version is now 3.1.1
- The bulletin board client now supports OpenSSL 3.0 through update of the
jwt
dependency to 2.5.0
- The minimum required Ruby version is now 3.0.2
- The bulletin board client now includes a
report_missing_trustee
method to report the absence of a trustee during the Tally phase.
GetElectionLogEntries
now returnschainedHash
- The
MessageParser
gets exported individually
- The bulletin board client also gets the election's verifiable data along with its results
- Tally and Key Ceremony components API have been changed a bit. The
setupElection
method should be called before binding the UI elements to the component.
- The voter
encrypt
method now returns theplainVote
and theelectionUniqueId
so it will be included when the user audits the ballot.
- The bulletin board client now accepts the
polling_stations
param with a list of valid polling stations identifiers for running hybrid elections. - The bulletin board client now includes a
in_person_vote
to inform the server about physical votes.
- Use the correct main file in the bulletin board javascript client.
- The bulletin board client now accepts the
ballot_styles
param when creating an election.
- The bulletin board client now includes a
reset_test_database
method that can be called in the test environment to clear the bulletin board database.
- The
publish_results
method now returns a pending message.
- The
onSetup
event is no longer supported when adding the key ceremony, tally and voter components.
- The
create_election
method doesn't need theweight
field for questions and answers anymore. It will use the given order to create thesequence_order
value.
- The
VoteComponent
event names have been changed to more suitable ones.
- The
Voter
returns the ballot hash after encrpyting the plain vote and before auditing or casting it
- The
create_election
command now expects objects representing the parts public keys.
- Changed the name of some settings* to improve the readability of the code:
- BB settings:
bulletin_board_server
* andbulletin_board_public_key
*. - Authority settings:
authority_api_key
*,authority_name
andauthority_private_key
*. - Elections settings:
scheme_name
,number_of_trustees
andquorum
.
- BB settings:
KeyCeremonyComponent
andTallyComponent
now accepts atrusteeWrapperAdapter
object.- The
processMessage
method from theTrusteeWrapperAdapter
now accepts amessageType
instead of amessageIdentifier
.
- The
TrusteeWrapper
for the "dummy" voting scheme has been removed from the project.
- The
TrusteeWrapperAdapter
abstract class can be used to implement any voting scheme wrapper adapter.
- The
TallyComponent
now uses thekey_ceremony
messages as well.
- A command to get decoded election results.
- The (Bulletin Board) server public key is now included in the gem configuration.
- The option to
audit
a vote.
- The
get_election_log_entries_by_type
command got renamed toget_election_results
. - The
create_election
command now receives all the information needed in a simple hash and builds the message to add to the election log. It only needs seven main keys:trustees
,default_locale
,title
,start_date
,end_date
,questions
andanswers
. - The
scheme
setting was replaced by thescheme_name
andquorum
settings.
- The
VoteComponent
has been added. It will be used as a glue code between the vote and the UI. - The ruby client now includes the
get_election_log_entries_by_types
method to get the election log entries filtered by type.
- The
open_ballot_box
andclose_ballot_box
are now calledstart_vote
andend_vote
and return a pending message. - All the client operations yield the
message_id
before sending the request to the Bulletin Board.
start_key_ceremony
method to theDecidim::BulletinBoard::Client
.- The
IdentificationKeys
class has been added to the JS library. - The
TallyComponent
has been added. It will be used as a glue code between the tally and the UI.
encrypt
inVoterWrapperDummy
has a TimeOut of 500ms.
getPendingMessage
can get queried bymessageId
and byid
.get_status
renamed toget_election_status
in theDecidim::BulletinBoard::Client
.
getPendingMessageStatus
method to theDecidim::BulletinBoard::Client
.waitForPendingMessageToBeProcessed
method to the Voter class.- The
KeyCeremonyComponent
has been added. It will be used as a glue code between the key ceremony process and the UI.
- The
Trustee
class now uses theElection
class to interact with the log entries. - The
Trustee
class handles everything now when performing both the key ceremony and the tally process. - The
Trustee
class now includes asetupKeyCeremony
generator function that must be called before starting the key ceremony process. checkRestoreNeeded
method has been renamed toneedsToBeRestored
for both theTrustee
and theTrusteeWrapper
.
start_tally
method to theDecidim::BulletinBoard::Client
.publish_results
method to theDecidim::BulletinBoard::Client
.Election
class in the JS package to handle the election state. An instance of this class will be used by the key ceremony and the trustee to check anything related to log entries.- The
Trustee
class now has ateardown
method that is called automatically to clean a few things. It can be called early to avoid memory leaks if needed. - The
EventManager
class now handles theevents
stream and exports some useful constants.
- The
KeyCeremony
class has been removed. - The
Trustee
backup method has been removed because it doesn't belong to the public API anymore.
- Production file now is called
decidim-bulletin_board.js
and development file is calleddecidim-bulletin_board.dev.js
.
- The GraphQL client doesn't use subscriptions anymore.
- Updated the app schema definition with the partial log entries list retrieval
- Gem is an engine, the js assets can be imported in Decidim.
- Fix the schema definition folder when used inside an app
- Include the schema definition within the gem to avoid extra trips to the server
- Include the missing
close_ballot_box
method from the 0.4.0 release. - Fixes for the client methods
- Renamed
setup_election
tocreate_election
and movedelection_id
from theelection_data
to a separate argument.
- Include the missing
open_ballot_box
methods from the 0.4.0 release. - Added missing namespace on the seed task
content_hash
field for theLogEntry
records with the hash of thecontent
field, if included in the message.Command
base class for all the classes representing GraphQL queries or mutations sent to the Bulletin Board.open_ballot_box
andclose_ballot_box
methods to theDecidim::BulletinBoard::Client
.
- New format for the messages:
iat
,message_id
and Bulletin Board fields in the root message, andcontent
for the Voting Scheme messages. - Improved consistency between methods included by
Decidim::BulletinBoard::Client
.
- Uses the correct private key in the
sign_data
method.
0.3.0 - 2020-12-10
Decidim::BulletinBoard::Authority
namespace that includes commands and forms to get the status of an election.
Decidim::BulletinBoard::Client
now includes aget_status
method to get the election status using theAuthority
namespace.
Decidim::BulletinBoard::Voter::CastVote
command uses theencrypted_vote
as aString
and not as aHash
.
0.2.0 - 2020-12-08
Decidim::BulletinBoard::Voter
namespace that includes commands and forms to perform the cast vote action.
Decidim::BulletinBoard::Client
now includes acast_vote
method to cast a vote using theVoter
namespace.
0.1.0 - 2020-12-07
Decidim::BulletinBoard::Client
class totally configurable usingActiveSupport::Configurable
- The client now includes a
setup_election
method that creates the election in the bulletin board.