Repository navigation
Releases
Releases · silvio-l/Votepit
Votepit Community 0.1.8
Added
- Community self-update:
php bin/update.php(--check,--version,--yes) installs a published
release after verifying its checksum and its minisign signature against the two release keys built
into the code. It asks for your own backup first, puts maintenance mode on during the code swap and the
migrations, and restores the previous code if a migration fails. See installation. - Release signing keys (minisign): primary
RWQsaiCVDRZOadLcM2iNQN1YATwk9hMbe/HyE1VqjokzaGAfjyJrgtU9,
emergencyRWQDrVX41M+OHZMrm7eEZXckCAxXKanUzwWGRebv3myprPFEdud2MVz6. Verify a download yourself with
minisign -Vm votepit-community-<version>.zip -P <key>. - Daily update check (
update_check, default on, self-host only): a newer stable release shows an operator
banner and sends the account owner one e-mail per version (opt-out per user). - Daily anonymous version report (
version_report, default on, self-host only): installed version, PHP
version and database engine/version under a random installation ID, sent to Votepit's Matomo. Both switches
can be turned off inconfig/config.php; see What your installation sends.
Security
symfony/mimeupdated to 7.4.22 (CVE-2026-45070, e-mail header injection via non-token characters in
MIME parameter names).
v0.1.6
Install on a fresh Ubuntu/Debian server:
curl -fsSL https://raw.githubusercontent.com/silvio-l/votepit/main/install.sh | bashShared hosting without SSH: download votepit-community-0.1.6.zip, check it against the .sha256 file and follow Installation.
Added
- One-line installer
install.shfor a fresh Ubuntu/Debian VPS: checks PHP, extensions and the
database version, downloads the latest release archive (or builds from the repository when no release
exists), writesconfig/config.phpwith generated secrets and runs the migrations. Idempotent; prompts
come from the terminal, andVOTEPIT_*variables allow non-interactive use. - Release archive builder
bin/build-release.sh: producesvotepit-community-<version>.zip(production
vendor/, built web app inpublic/, no dev or test files) and a.sha256file for upload or a release. - Root
.htaccessfor hosts whose document root is the repository root: every request is routed into
public/, nothing outside it is served. Pinned by a guard test that also runs against a real local httpd.
Changed
- Board image uploads (logo, wordmarks, cover, browser-tab icon, share image): the whole upload
area is now one click and drop target, and a picked or dropped image is saved at once. There is
no separate upload button anymore; the area shows the current image, a progress state while
saving, and a remove action. - Machine translation is a plan feature (
translation) on top of the installation key and
the per-board opt-in. The Community Edition allows it on every installation, so nothing
changes for self-hosters; a tiered extension decides per account. - README: the feature list now names participant e-mail notifications, guest ideas, machine
translation, Slack/Discord and Linear/GitHub, which were already part of 0.1.1. - Product-improvement telemetry is opt-in and off by default. A fresh installation sends nothing
to any third party. The target is set inconfig/config.php(telemetry_matomo_urland
telemetry_matomo_site_id, both empty by default), and an account admin must explicitly accept
before anything is sent. Installations that ran on the former default were treated as undecided
and are not opted in anymore. The third-party tracker origin is allowed in the Content Security
Policy only when a Matomo target is configured. - The "Powered by" badge, the auth-page return link and the public API/MCP docs links point to the
public project in the Community Edition. The Cloud edition keeps its marketing-site links. - Configuration docs and the example config no longer describe the hosted Cloud service. Setup
wording is neutral, and the operator scripts and migration help name no hosted-service tooling.
Fixed
composer installrequirements are complete:ext-dom,ext-zip,ext-iconvandpdo_mysql(needed
by dompdf and the database driver) are documented next to the existing ones.- Migration failures print which migrations were applied, which were not attempted, and how to recover
(restore the backup, or fix the cause and re-run).bin/migrate.phpexits cleanly with status 1 instead
of an uncaught exception. The new "Fresh install failed" troubleshooting section explains it. - Documentation: database and user creation (
utf8mb4, minimal grants, shared-hosting panels), the
web-app build step with its target folder (public/), the--yesflag with its warning, the
translation rate limits (translation:idea90,translation:comment30 per 10 min, as in the template),
the migration number gaps (migrations/README.md), and a dead link indb/README.md. - The development guide no longer refers to Cloud-only tests, CI workflows or tools that are not part of
this package. The spacing guard runs in the Community export as well (it scanscloud/apponly when that
folder exists). - Fresh installs on MariaDB no longer stop at migration 0028: migrations drop CHECK
constraints withDROP CONSTRAINT, which MySQL 8.0.19+ and MariaDB both accept. - The roadmap no longer offers a Gantt view on installations without the Roadmap Gantt
extension. Without it nobody can set start and target dates, so the view stayed empty. - Extension suggestions in the submit form (tags) and the merge dialog (duplicate confirmation)
are shown only when an extension reports them through the bootstrap features
ai_tag_suggestionsandai_duplicate_confirmation; a plain install shows no such hints. - A cron job that recovers is no longer reported to the error tracker as an exception; the recovery
notice still goes out by mail.
v0.1.5
Added
- Board branding: an optional accent colour for highlights (vote counts, badges, pinned ideas and
the cover pattern), optional dark-mode values for the primary and accent colours, and a logo plate
behind the round logo (automatic, brand, white or none) with a hideable edge. The accent, per-mode
and logo plate options are Lite and higher; the Community Edition has them unrestricted.
Migration0116adds the new board columns.
Changed
- Board colours have fixed roles: the primary colour drives the action colour (the main button,
links and focus), the accent drives highlights, and the secondary colour is a surface only.
Titles use the neutral text colour in both themes, so a dark secondary colour no longer turns
the titles lavender in dark mode. Boards without an accent keep today's highlight colours. - The masthead button and other accent buttons take the board's primary colour instead of the
fixed coral, on boards that set a primary colour. Boards without one keep the coral. - The generated cover (waves and the other patterns) is painted on the board's secondary colour
and follows the dark theme. - Plan-gated features now accept only the account's resolved plan, so a stored plan value can no longer be checked directly by mistake. No change in behaviour.
v0.1.4
Fixed
- The hourly participant digest failed on every run when an extension was configured, so no digest mails went out.
logs/cron/<job>.lognow records each run's exit code and the job's output; until now the files stayed empty.
This is the first public release since the earlier v1.0.0 tag, which has been withdrawn: the Community Edition is versioned 0.x while it matures. All changes since 0.1.0 (operator worklist, single cron entry, participant mails, board deadlines, merge duplicates, GDPR self-service and more) are listed in CHANGELOG.md.