Download Latest Version v3.10.0 source code.zip (56.2 MB) Google Add to Preferred Sources
Home / v3.10.0
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-10-02 10.6 kB
v3.10.0 source code.tar.gz 2026-10-02 53.6 MB
v3.10.0 source code.zip 2026-10-02 56.2 MB
Totals: 3 Items   109.8 MB 0

Loomio 3.10.0 adds weighted voting, corrects STV election counting, and makes the user manual and guides available in thirteen languages alongside English. It also improves voter and thread member management, email notification settings, and Markdown exports.

  • New: Set default vote weights for group members and adjust weights for individual polls
  • Fix: Correct STV surplus transfers, rounding, quotas, and ties that can change election winners
  • New: Read the user manual and guides in thirteen translated languages
  • New: Search and manage voters and thread members from their invitation windows
  • New: Receive HTML group exports by email when background generation finishes
  • Fix: Reply to votes after voting and hide poll conversations in the thread interface until results are visible
  • Fix: Open email notification settings without signing in while keeping email tokens out of profile APIs
  • Fix: Use existing sign-in links on SSO-only sites and prompt people with missing profile names to complete them

Weighted voting

Weighted voting lets groups count votes according to ownership shares or another agreed allocation. Group administrators can set members' default vote weights from Members → Edit vote weights. Poll coordinators can enable Use weighted voting in a poll's advanced settings, save it in a poll template, and adjust individual or all voter weights from Manage voters until the poll closes.

Weights can be zero or greater, with up to three decimal places. A weight of zero lets someone vote and count towards participation without adding to the result. Membership weights are copied when a person is added to a weighted poll; changing a member's default later does not change existing polls. Coordinators can restore current membership weights or give everyone the same weight. Turning weighted voting off resets the poll's weights to one; turning it back on copies current membership weights.

Proposal, Choose, Score, Allocate, and Rank polls support weighted voting. Anonymous polls, Time polls, and STV elections do not. Results show ordinary and weighted totals side by side, and charts can switch between measures. Quorum and participation continue to count people rather than vote weights. Anyone who can see the votes can see each voter's weight.

See Weighted voting for the workflow and a worked example.

STV election counting

Scottish STV now elects all candidates who reach quota in a round before transferring their surpluses, transfers larger surpluses first, and rounds transfer values down to five decimal places. Previously a surplus could transfer to another candidate already entitled to a seat and be lost, which could change the elected candidates. Meek STV now uses the exact quota without rounding.

Elimination ties are resolved using earlier rounds. If earlier rounds cannot resolve a tie and different resolutions would elect different candidates, Loomio reports the possible winners as tied. Voters must rank at least one candidate, blank ballots are excluded from the quota, and the server validates seat counts, counting methods, and quotas. Poll templates now retain STV settings.

The Scottish counter is checked round by round against official stage reports for eight Scottish council wards. The Meek counter is checked against a published reference election, with additional random-election comparisons against OpenTally. The beta warning has been removed. Closed elections retain their saved results; upgrading does not recount them.

See STV Elections for counting rules, ties, and ballot exports.

Votes and anonymous participation

The Votes page now has a searchable, paginated table showing votes and, where enabled, vote weights. Vote reasons remain in the thread rather than appearing in this table. Manage voters combines voter search and invitations, supports bulk weight changes, and confirms voter removal. Voter removal remains unavailable for anonymous polls.

After an anonymous poll closes, anyone who can see its results can open its voter list, including visitors to public polls. The list shows eligible voters; each person's participation status appears only after enough ballots have been submitted: the poll's quorum, or half the electorate when no quorum is set, with a minimum of three ballots. It does not show anonymous choices or voting times. Only group administrators see email addresses, and membership and invitation details are limited to group members and poll voters.

LOOMIO_VERIFY_PARTICIPANTS_ADMIN_ONLY has been removed. It no longer has any effect and can be removed from configuration.

Poll conversations and exports

In polls that hide results until voting, people can reply to votes as soon as they have voted. The thread interface hides the whole conversation under the poll from people who have not voted, including direct comments and nested replies. For polls that hide results until closing, the thread interface keeps these conversations hidden until closing, and vote-reason replies and mentions remain disabled until then. Anonymous votes continue to have no individual replies.

Print, Markdown, and other exports no longer require the person exporting to vote first. People with access to the thread can export results and replies from polls that hide results until voting. Results and conversations hidden until closing remain excluded from these thread exports until the poll closes. Search entries for conversations hidden until closing are removed during upgrade and restored through normal reindexing after closing.

The thread's Markdown menu replaces the previous Copy Markdown dialog. It offers copying or downloading, and the output follows the thread's reply tree with nested blockquotes, poll sections, and reactions. Existing and new threads now use three reply levels where they previously used two.

Group administrators can request an HTML group export and receive its download link by email after background generation. The link is available for one week.

Translated help and interface text

The user manual and guides are now available in Belarusian, Brazilian Portuguese, Dutch, Finnish, French, German, Hebrew, Hungarian, Italian, Japanese, Russian, Spanish, and Ukrainian. These translations are machine-produced and can be corrected through the translated Markdown on GitHub. Policy pages and the changelog remain in English.

Application help links open the manual in the active language. Translated screenshots are used when available, with English screenshots as the fallback. Application translations have also been revised against a shared terminology glossary, and French now uses the neutral vous register. Inline translation controls work with regional locale codes.

The default help URL is now the instance's /docs/en path. An explicit HELP_URL remains supported. Docker builds the static help site from its checkout; if documentation validation fails, the image build warns and continues without the help site. Maintainers generate and review translated screenshots locally, then explicitly publish selected images to R2 with bin/docs-screenshots --publish; GitHub no longer generates or publishes them.

Sign-in and notification settings

Existing usable sign-in links, including administrator-issued links, now work on SSO-only sites. Requesting new local sign-in links, password or emailed-code sign-in, passkeys, and native registration remain disabled there. A sign-in link is consumed before either session creation or account completion, preventing reuse. Signed-in people whose profiles have no name are prompted to complete it.

Notification email links open the relevant thread or group settings without requiring sign-in. Catch-up emails open a separate schedule form. Email action tokens no longer authenticate profile or application APIs; the full notification settings page requires a normal session. Invalid email action tokens show an error page, and token-bearing settings pages prevent caching and referrer disclosure.

Reaction notifications name the reacted item once and clear when an already-read comment is revisited. Thread member management now combines search, invitation, and notification in one paginated window. Other fixes prevent empty attachments when pasting files, save detected time zones independently of unrelated profile validation, recognize group members when opening discussion templates directly, and exclude discarded threads from cached lists and group panels.

Upgrade and compatibility

This release contains seven new database migrations. They add vote weights and constraints, store fractional poll totals, increase the default reply depth, preserve anonymous invitation dates before removing obsolete stance receipts, remove the redundant poll voting-system field, store STV template settings, and remove stale search documents for conversations hidden until closing. The vote-weight migrations include older timestamps and still run as pending migrations during a normal upgrade. Changes to historical anonymous-vote and topic-item migrations also improve upgrades from older installations.

Make and verify a database backup before upgrading. Receipt removal is irreversible; rolling back to an older application version requires restoring a compatible backup. Follow Upgrading Loomio for the normal migration and restart process, including the required stepping-stone versions for older installations. No additional manual backfill command is required.

API clients and integrations should account for these changes:

  • GET /api/v1/polls/:id/receipts is replaced by GET /api/v1/polls/:id/votes. The response contains voters and pagination/visibility meta, supports limit and offset, and does not include vote reasons.
  • Poll payloads use anonymous instead of the removed voting_system field and include weighted_voting. Poll CSV exports add vote_weight and unweighted_score columns.
  • Email action tokens cannot be used to access profile APIs. Use an authenticated session for profile and full notification-setting requests.
  • Demo groups are enabled when CANONICAL_HOST is configured. Set LOOMIO_DISABLE_DEMO_GROUPS to disable them; FEATURES_DEMO_GROUPS no longer controls availability.

Full changelog: https://github.com/loomio/loomio/compare/v3.9.0...v3.10.0

Source: README.md, updated 2026-10-02