Skip to content

Releases

Votepit Community 0.1.8

Choose a tag to compare

@github-actions github-actions released this 29 Oct 14:28

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,
    emergency RWQDrVX41M+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 in config/config.php; see What your installation sends.

Security

  • symfony/mime updated to 7.4.22 (CVE-2026-45070, e-mail header injection via non-token characters in
    MIME parameter names).

v0.1.6

Choose a tag to compare

@silvio-l silvio-l released this 27 Oct 19:35

Install on a fresh Ubuntu/Debian server:

curl -fsSL https://raw.githubusercontent.com/silvio-l/votepit/main/install.sh | bash

Shared hosting without SSH: download votepit-community-0.1.6.zip, check it against the .sha256 file and follow Installation.

Added

  • One-line installer install.sh for 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), writes config/config.php with generated secrets and runs the migrations. Idempotent; prompts
    come from the terminal, and VOTEPIT_* variables allow non-interactive use.
  • Release archive builder bin/build-release.sh: produces votepit-community-<version>.zip (production
    vendor/, built web app in public/, no dev or test files) and a .sha256 file for upload or a release.
  • Root .htaccess for 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 in config/config.php (telemetry_matomo_url and
    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 install requirements are complete: ext-dom, ext-zip, ext-iconv and pdo_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.php exits 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 --yes flag with its warning, the
    translation rate limits (translation:idea 90, translation:comment 30 per 10 min, as in the template),
    the migration number gaps (migrations/README.md), and a dead link in db/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 scans cloud/app only when that
    folder exists).
  • Fresh installs on MariaDB no longer stop at migration 0028: migrations drop CHECK
    constraints with DROP 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_suggestions and ai_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

Choose a tag to compare

@silvio-l silvio-l released this 27 Oct 11:36

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.
    Migration 0116 adds 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

Choose a tag to compare

@silvio-l silvio-l released this 27 Oct 09:24

Fixed

  • The hourly participant digest failed on every run when an extension was configured, so no digest mails went out.
  • logs/cron/<job>.log now 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.