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.
- Minor bugfixes
- Fixes for the pyodide upgrade
- Libraries updates
- Pyodide has been upgraded to v0.17.0
- 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
jwtdependency to 2.5.0
- The minimum required Ruby version is now 3.0.2
- The bulletin board client now includes a
report_missing_trusteemethod to report the absence of a trustee during the Tally phase.
GetElectionLogEntriesnow returnschainedHash- The
MessageParsergets 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
setupElectionmethod should be called before binding the UI elements to the component.
- The voter
encryptmethod now returns theplainVoteand theelectionUniqueIdso it will be included when the user audits the ballot.
- The bulletin board client now accepts the
polling_stationsparam with a list of valid polling stations identifiers for running hybrid elections. - The bulletin board client now includes a
in_person_voteto 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_stylesparam when creating an election.
- The bulletin board client now includes a
reset_test_databasemethod that can be called in the test environment to clear the bulletin board database.
- The
publish_resultsmethod now returns a pending message.
- The
onSetupevent is no longer supported when adding the key ceremony, tally and voter components.
- The
create_electionmethod doesn't need theweightfield for questions and answers anymore. It will use the given order to create thesequence_ordervalue.
- The
VoteComponentevent names have been changed to more suitable ones.
- The
Voterreturns the ballot hash after encrpyting the plain vote and before auditing or casting it
- The
create_electioncommand 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_nameandauthority_private_key*. - Elections settings:
scheme_name,number_of_trusteesandquorum.
- BB settings:
KeyCeremonyComponentandTallyComponentnow accepts atrusteeWrapperAdapterobject.- The
processMessagemethod from theTrusteeWrapperAdapternow accepts amessageTypeinstead of amessageIdentifier.
- The
TrusteeWrapperfor the "dummy" voting scheme has been removed from the project.
- The
TrusteeWrapperAdapterabstract class can be used to implement any voting scheme wrapper adapter.
- The
TallyComponentnow uses thekey_ceremonymessages 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
audita vote.
- The
get_election_log_entries_by_typecommand got renamed toget_election_results. - The
create_electioncommand 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,questionsandanswers. - The
schemesetting was replaced by thescheme_nameandquorumsettings.
- The
VoteComponenthas 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_typesmethod to get the election log entries filtered by type.
- The
open_ballot_boxandclose_ballot_boxare now calledstart_voteandend_voteand return a pending message. - All the client operations yield the
message_idbefore sending the request to the Bulletin Board.
start_key_ceremonymethod to theDecidim::BulletinBoard::Client.- The
IdentificationKeysclass has been added to the JS library. - The
TallyComponenthas been added. It will be used as a glue code between the tally and the UI.
encryptinVoterWrapperDummyhas a TimeOut of 500ms.
getPendingMessagecan get queried bymessageIdand byid.get_statusrenamed toget_election_statusin theDecidim::BulletinBoard::Client.
getPendingMessageStatusmethod to theDecidim::BulletinBoard::Client.waitForPendingMessageToBeProcessedmethod to the Voter class.- The
KeyCeremonyComponenthas been added. It will be used as a glue code between the key ceremony process and the UI.
- The
Trusteeclass now uses theElectionclass to interact with the log entries. - The
Trusteeclass handles everything now when performing both the key ceremony and the tally process. - The
Trusteeclass now includes asetupKeyCeremonygenerator function that must be called before starting the key ceremony process. checkRestoreNeededmethod has been renamed toneedsToBeRestoredfor both theTrusteeand theTrusteeWrapper.
start_tallymethod to theDecidim::BulletinBoard::Client.publish_resultsmethod to theDecidim::BulletinBoard::Client.Electionclass 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
Trusteeclass now has ateardownmethod that is called automatically to clean a few things. It can be called early to avoid memory leaks if needed. - The
EventManagerclass now handles theeventsstream and exports some useful constants.
- The
KeyCeremonyclass has been removed. - The
Trusteebackup method has been removed because it doesn't belong to the public API anymore.
- Production file now is called
decidim-bulletin_board.jsand 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_boxmethod from the 0.4.0 release. - Fixes for the client methods
- Renamed
setup_electiontocreate_electionand movedelection_idfrom theelection_datato a separate argument.
- Include the missing
open_ballot_boxmethods from the 0.4.0 release. - Added missing namespace on the seed task
content_hashfield for theLogEntryrecords with the hash of thecontentfield, if included in the message.Commandbase class for all the classes representing GraphQL queries or mutations sent to the Bulletin Board.open_ballot_boxandclose_ballot_boxmethods to theDecidim::BulletinBoard::Client.
- New format for the messages:
iat,message_idand Bulletin Board fields in the root message, andcontentfor the Voting Scheme messages. - Improved consistency between methods included by
Decidim::BulletinBoard::Client.
- Uses the correct private key in the
sign_datamethod.
0.3.0 - 2020-12-10
Decidim::BulletinBoard::Authoritynamespace that includes commands and forms to get the status of an election.
Decidim::BulletinBoard::Clientnow includes aget_statusmethod to get the election status using theAuthoritynamespace.
Decidim::BulletinBoard::Voter::CastVotecommand uses theencrypted_voteas aStringand not as aHash.
0.2.0 - 2020-12-08
Decidim::BulletinBoard::Voternamespace that includes commands and forms to perform the cast vote action.
Decidim::BulletinBoard::Clientnow includes acast_votemethod to cast a vote using theVoternamespace.
0.1.0 - 2020-12-07
Decidim::BulletinBoard::Clientclass totally configurable usingActiveSupport::Configurable- The client now includes a
setup_electionmethod that creates the election in the bulletin board.