<<TableOfContents(2)>>

Please check as well [[FreedomBox/Contribute|contribution]], [[FreedomBox/ProgressCalls|progress calls]], and [[FreedomBox/TODO|TODOs]] related pages.

For more technical details, see the [[https://salsa.debian.org/freedombox-team/freedombox/blob/main/debian/changelog|FreedomBox changelog]].

## BEGIN_INCLUDE

The following are the release notes for each !FreedomBox version.

== FreedomBox 26.10 (2026-07-28) ==

 * apps: Change header title from Disabled to Available for install
 * css: Fix sizing for icons in custom shortcuts
 * debian/tests: make ready check more robust
 * debian/tests: Drop redundant status check
 * first_boot: Move first wizard secret generation to this app
 * locale: Update translations for Chinese (Simplified Han script), French, German, Latvian, Swedish
 * log: Set simpler syslog identifier instead of full binary path
 * luanti: Add more detail to description
 * ssh: Don't fail on page load when SSH host key can't be read
 * tor, torproxy: Avoid error if defaults file missing during uninstall

== FreedomBox 26.9.1 (2026-06-15) ==

 * locale: Update translations for Albanian, Chinese (Simplified Han script), Czech, French, Italian, Turkish
 * matrixsynapse: Allow installing new dependencies
 * wireguard: Get config for both download and qr actions
 * wireguard: Move segno import inside method

== FreedomBox 26.9 (2026-06-01) ==

=== Highlights ===

 * wireguard: Auto-generate client keypairs
 * wireguard: Provide download and QR code for client config

=== Other Changes ===

 * bepasty: Don't remove old system user and group
 * debian: Install and use sysusers.d/tmpfiles.d config files
 * debian: Stop deleting system user on remove/purge
 * infinoted: Use systemd-sysusers for creating a system user account
 * locale: Update translations for Dutch, German
 * syncthing: Use systemd-sysusers for creating a system user account
 * wireguard: Enable !FreedomBox to connect to a server using IPv6

== FreedomBox 26.8 (2026-05-11) ==

 * locale: Update translations for German, Italian
 * api: Drop access-info API

== FreedomBox 26.7.1 (2026-04-28) ==

 * radicale, bepasty: Fix issue with failed diagnostic test
 * radicale: Enable lc_username for case-insensitive auth
 * radicale: Fix issue with parsing new configuration file
 * radicale: tests: functional: Better checking for well-known URLs

== FreedomBox 26.7 (2026-04-20) ==

 * debian: tests: Add test to access interface status
 * locale: Update translations for Albanian, Chinese (Simplified Han script), Czech, French, German, Italian, Swedish, Turkish

== FreedomBox 26.6 (2026-04-06) ==

=== Highlights ===

 * users: Add support for logging in with passkeys

=== Other Changes ===

 * d/control: Add fido2 library as dependency
 * locale: Update translations for French, German, Hindi, Italian
 * service: Capture stdout/stderr when running as systemd unit
 * users: Add link to guide on passkeys
 * users: Add support for registering, editing, and deleting passkeys
 * views: Add a decorator to handle exceptions in JSON views

== FreedomBox 26.5.1 (2026-03-26) ==

 * debian/control: Fix building with nocheck profile
 * debian/copyright: Drop a removed file, correct path for another
 * locale: Update translations for Albanian, Turkish
 * web_server: Fix locating SVG icons on production setup

== FreedomBox 26.5 (2026-03-23) ==

=== Highlights ===

 * action_utils: Don't restart web interface when installing an app
 * apache: Use a Uwsgi native socket systemd unit for each app
 * ui: Use inline SVG icons for all apps
 * wireguard: Fix freedombox VPN IP for services

=== Other Changes ===

 * action_utils: Stop associated service when stopping a socket unit
 * apache: Increase OpenID Connect RP session timeout activity
 * apache: Minor improvement to getting the request host
 * app: Fix build issue with Django 5.x
 * clients: Fix formatting of package row in table
 * clients: Fix show empty clients in Desktop section
 * clients: Use SVG icons when showing external links
 * container: Add option to skip install
 * container: Fix image extension to .raw for systemd v260
 * doc: Reduce verbosity when building documentation
 * html: Drop trailing slash from void elements
 * html: Drop type attribute value of text/javascript
 * janus: Drop unused reference to font-awesome
 * letsencrypt: Don't perform operations on apps that are not installed
 * locale: Update translations for German, Russian, Swedish
 * pagekite: Fix issue with adding custom services
 * tests: functional: Drop undefined 'sso' pytest mark
 * ui: Add rest of the icons used from fork-awesome set
 * ui: Better placement for dropdown indicator in dropdown button
 * ui: Drop fonts-fork-awesome as dependency
 * ui: Rename 'plinth_extras' template tags module to 'extras'
 * ui: Simplify SVG app icons for using them inline in HTML
 * ui: Use inline SVG icons for buttons, messages, spinners, etc.
 * wireguard: Add button for direct APK download
 * wireguard: Add entries for Homebrew and RPM packages
 * wireguard: Remove client entry for F-Droid which is not available
 * wireguard: Update windows client link

== FreedomBox 26.4.2 (2026-03-08) ==

=== Highlights ===

 * apache2: Disable pubtkt authentication module

=== Other Changes ===

 * container: Hold freedombox packages during test setup
 * d/control: Trim deps for nocheck build profile
 * locale: Update translations for Albanian, Chinese (Simplified Han script), Czech, Russian, Turkish
 * Vagrantfile: Enable public network for bridged networking

== FreedomBox 26.4 (2026-03-02) ==

=== Highlights ===

 * backups: Enable key-based SSH authentication for remote backups
 * oidc: New app to implement OpenID Connect Provider
 * apache: Implement protecting apps using OpenID Connect
 * wireguard: Improve server section user experience flow

=== Other Changes ===

 * *: Remove some absolute file paths in SVGs
 * *: Update URL base from /plinth to /freedombox
 * README/HACKING: Update weblate project path to /freedombox
 * Vagrantfile: Drop unnecessary sudo configuration for actions
 * action_utils: Drop support for link-local IPv6 addresses
 * action_utils: Fix issue with type checking a generator
 * action_utils: Implement utility to change umask temporarily
 * actions, privileged_daemon: Drop some unused global statements
 * apache: Fix diagnosing URLs protected by OpenID Connect
 * apache: Preserve host header when proxying to service
 * backups: Arrange form for adding remote location
 * backups: Avoid some repeated text in form help text
 * backups: Copy SSH client public key to remote
 * backups: Create .ssh folder before creating SSH key
 * backups: Create a better comment in the generated SSH key file
 * backups: Display SSH public key when adding remote
 * backups: Fix issue with Javascript in add remote location form
 * backups: Fix showing proper error for incorrect passphrase
 * backups: Fix type checking errors
 * backups: Generate SSH client key if needed
 * backups: Migrate to SSH key auth when mounting
 * backups: Minor refactoring
 * backups: Show/hide form elements instead of disabling for simplicity
 * backups: Simplify handling of migration to SSH keys
 * backups: Test adding/removing remote location
 * backups: Tweak appearance of add remote location form
 * backups: Use SSH key instead of password
 * backups: Use selected SSH credential for remote
 * backups: tests: Simplify functional test using more classes
 * bin: Add tool to change !FreedomBox password in Django database
 * calibre: Use OpenID Connect instead of pubtkt based SSO
 * cfg: Drop unused actions_dir option
 * cfg: Drop unused config_dir option
 * container: Align terminology in printed banner
 * db: Create a utility to get credentials from dbconfig
 * debian: Ensure that gbp creates a clean tarball prior to build
 * deluge: Use OpenID Connect instead of pubtkt based SSO
 * doc/dev: Set new theme for developer documentation
 * doc/dev: Use OpenID Connect instead of pubtkt based SSO
 * doc/dev: always have an up-to-date copyright year
 * ejabberd: Fix setting up certificates for multiple domains
 * email: Use OpenID Connect instead of pubtkt based SSO
 * featherwiki: Use OpenID Connect instead of pubtkt based SSO
 * gitweb: Fix issue with running post init due to missing method
 * gitweb: Use OpenID Connect instead of pubtkt based SSO
 * js: When page load fails during install, show it to user
 * letsencrypt: When copying certificate reset the umask reliably
 * locale/bg: Fix several translations with HTML links (Bulgarian)
 * locale/de: Fix several translations with HTML links (German)
 * locale: Update translations for Albanian, Catalan, Chinese (Simplified Han script), Czech, French, German, Greek, Italian, Swedish, Tamil, Turkish
 * matrixsynapse: Update apache config to proxy Synapse client API
 * miniflux: Get credentials from dbconfig-common directly
 * miniflux: Revert workaround for a packaging bug with DB connection
 * mumble: murmurd renamed to mumble-server
 * oidc: Style the page for authorizing an OIDC app
 * pyproject: Use new format to specify licenses
 * quassel: Explicitly set permissions on the domain configuration file
 * rssbridge: Use OpenID Connect instead of pubtkt based SSO
 * searx: Use OpenID Connect instead of pubtkt based SSO
 * sharing: Use OpenID Connect instead of pubtkt based SSO
 * sso: Merge into users module, drop pubtkt related code
 * syncthing: Use OpenID Connect instead of pubtkt based SSO
 * syncthing: tests: Fix tests by allowing rapid restarts
 * templates: Allow building pages without navigation bar and footer
 * tests: functional: Fix expecting !FreedomBox to be home page
 * tests: functional: Fix reloading error page during install/uninstall
 * tests: functional: Increase systemd rate limits for starting units
 * tiddlywiki: Use OpenID Connect instead of pubtkt based SSO
 * transmission: Use OpenID Connect instead of pubtkt based SSO
 * ui: Add animation for notification dismissal
 * ui: Dismiss notifications without page reload
 * ui: Refactor notification delete buttons to avoid repeating code
 * web_framework: Allow !FreedomBox apps to override templates
 * web_server: Log requests to WSGI app
 * wireguard: Accept/use netmask with IP address for server connection
 * wireguard: Fix format when showing multiple endpoints of the server
 * wireguard: Fix showing default route setting in server edit form
 * wireguard: Fix split tunneling
 * wireguard: Show status of default route in server information page
 * wireguard: filter .local addresses from showClient view
 * wireguard: show server vpn ip in show client page
 * wordpress: Use OpenID Connect instead of pubtkt based SSO when private

== FreedomBox 26.3 (2026-02-02) ==

=== Highlights ===

 * ui: Use HTMX to eliminate full page reloads
 * wireguard: Add 'Start Server' button to help with client setup

=== Other Changes ===

 * debian: Follows policy 4.7.3
 * debian: Ignore lintian warning: service file missing Install section
 * debian: Remove default Rules-Requires-Root
 * debian: Remove preinst script
 * debian: Update copyright years
 * docs: Update container script usage
 * lintian: Remove mismatched overrides
 * locale: Update translations for Chinese (Simplified Han script), German, Italian, Turkish
 * Makefile: Fix removing extra license file
 * ui: Add HTMX as a dependency
 * ui: Use HTMX to update notifications on partial page updates
 * wireguard: Remove NM connections when app is uninstalled
 * wireguard: Show next available client IP in Add Client form
 * wireguard: Update functional tests to handle Start Server button
 * wireguard: Show server endpoint on main app page

== FreedomBox 26.2 (2026-01-20) ==

 * gitweb: Fix deleting last repo disables app
 * locale: Update translations for Estonian, Italian
 * notifications: Close dropdown when clicking outside

== FreedomBox 26.1 (2026-01-05) ==

 * container: Add aliases for start/stop commands
 * locale: Update translations for Albanian, Bulgarian, Chinese (Simplified Han script), Czech, Estonian, French, German, Italian, Russian, Turkish, Ukrainian

== FreedomBox 25.17.1 (2025-12-15) ==

=== Highlights ===

 * backups: Set proper permissions for backups-data directory
 * minetest: Rename Minetest to Luanti

=== Other Changes ===

 * locale: Update translations for Albanian, Bulgarian, Czech, Estonian, Hindi, Italian, Russian, Turkish, Ukrainian
 * minetest: Remove legacy code, use new name, conf, etc.
 * transmission: Deal with changes in latest forky package
 * transmission: Remove obsolete apache redirects
 * vagrant: Enable EFI firmware

== FreedomBox 25.17 (2025-12-08) ==

=== Highlights ===

 * ui: Implement a toggle menu for setting dark mode

=== Other Changes ===

 * homeassistant: Fix spelling in tests
 * locale: Fix python-brace-format error in Estonian
 * locale: Update translations for Catalan, Estonian, French, Russian
 * privileged: Don't log exception that are expected
 * ui: Dark theme color for tags text in an app card
 * ui: Drop colors defined in Bootstrap 5.3
 * ui: Fix dark theme color for disabled form elements
 * ui: Fix dark theme color for form help text
 * ui: Fix dark theme color for select-all button
 * ui: Fix dark theme colors for app enable/disable toggle button
 * ui: Fix dark theme colors for default button style
 * ui: Fix dark theme colors for running status indicator
 * ui: Minor CSS refactor to use variables
 * ui: Use default button style for tag buttons
 * upgrades: Use bootstrap spinner button instead of custom styling

== FreedomBox 25.16 (2025-11-24) ==

=== Highlights ===

 * dynamicdns: Use only IPv4 for GnuDIP protocol
 * janus: Allow app to be installed from Debian unstable
 * jsxc: Fix missing dependencies

=== Other Changes ===

 * locale: Update translations for Albanian, Chinese (Simplified Han script), Czech, German, Italian, Russian, Turkish, Ukrainian
 * janus: Relax content security policy for the video room
 * janus: Update the video room code from latest upstream
 * jsxc: Update content security policy to prevent style errors
 * middleware: Implement middleware for common headers such as CSP
 * package: Prevent freedombox's deps from removal during app uninstall

== FreedomBox 25.15 (2025-11-10) ==

=== Highlights ===

 * help: Fix serving images from help pages
 * matrixsynapse: Explain federation and link to testing tool

=== Other Changes ===

 * locale: Update translations for French, German, Italian
 * main: Allow setting development mode from environment
 * matrixsynapse: Clarify how to change domain name in status section
 * matrixsynapse: Explicitly set the trusted key server to matrix.org
 * README: Use the Weblate's language chart widget
 * Run service using systemd even for development
 * ttrss: Remove app not available in Trixie
 * views: Implement an API to retrieve the readiness status in JSON

== FreedomBox 25.14 (2025-10-27) ==

 * Enable private tmp and join namespaces for the two daemons
 * locale: Update translations for French, Japanese

== FreedomBox 25.13.1 (2025-10-20) ==

 * locale: Update translations for Albanian, German

== FreedomBox 25.13 (2025-10-06) ==

=== Highlights ===

 * backups: Fix robust handling of known errors
 * debian: Stop privileged service during upgrade or removal
 * miniflux: Fix DB connection issues during install/uninstall

=== Other Changes ===

 * *: Collect output for all privileged sub-processes
 * *: Use action_utils.run instead of subprocess.call
 * *: Use action_utils.run instead of subprocess.check_call
 * *: Use action_utils.run instead of subprocess.check_output
 * *: Use action_utils.run instead of subprocess.run
 * action_utils: Handle capture_output argument in run wrapper
 * actions: Fix lifetime of thread local storage
 * actions: Log full exception from privileged daemon on error
 * actions: Log method arguments in privileged daemon
 * actions: Raise an exception if privileged server response is empty
 * actions: Work with older privileged daemon
 * actions_utils: Fix issue with collecting stdout/stderr
 * backups: Don't show enable/disable button as app can't be disabled
 * backups: Ignore a typing error with mypy
 * ci: Switch backports test to trixie-backports
 * config: Set home page to !FreedomBox for invalid values
 * d/rules: Drop a workaround for dh_installsytemd needed for /usr/lib
 * daemon: When ensuring running state handle not-installed state
 * diagnostics: In development mode, run diagnostics more rarely
 * doc: Add manual page for freedombox-cmd
 * gitweb: Use Git credential helper when cloning URLs with credentials
 * glib: Add schedule parameter for setting interval in develop mode
 * locale: Fix a string formatting issue in Italian translation
 * locale: Update translations for Albanian, Bulgarian, Chinese (Simplified Han script), Czech, German, Italian, Russian, Turkish, Ukrainian
 * Makefile: Move privileged daemon to /usr/lib/freedombox
 * privileged_daemon: Fix showing errors for freedombox-cmd command
 * privileged_daemon: Implement handling termination signal
 * setup: Log full exception traceback when setup fails
 * storage: Fix disk usage checking with disconnected SSH mounts
 * zoph: Additional dbconfig configuration keys

== FreedomBox 25.12 (2025-09-22) ==

=== Highlights ===

 * views: Add a menu entry and view for showing logs of an app
 * zoph: Fix cases when CLI user is set to "autodetect"

=== Other Changes ===

 * api: Fix showing icons for custom shortcuts
 * app: Add ability to retrieve logs from all systemd units of an app
 * bepasty: tests: Fix functional test failure to missing / in URL
 * bepasty: tests: Override backup/restore test properly
 * ci: Don't include defunct extract-source job
 * ci: Update container for functional tests from bookworm to trixie
 * ci: functional: Provision the privileged daemon properly
 * diagnostics, help: Link to diagnostics page logs in 500 error page
 * index: Generalize showing custom shortcut icons
 * locale: Update translations for Chinese (Simplified Han script), Czech, Dutch, German, Italian, Russian, Turkish, Ukrainian
 * torproxy: When disabling apt over tor fails, report error properly
 * upgrades: Multiple fixes for parsing Apt's Deb822 style sources
 * upgrades: Overwrite apt sources lens with bug fixes
 * views: Fix 'internal server error' when showing 404 page

== FreedomBox 25.11 (2025-09-08) ==

=== Highlights ===

 * email: Fix Thunderbird auto configuration failure
 * matrixsynapse, upgrades: Install select packages from unstable

=== Other Changes ===

 * action_utils: Implement a utility to run a command as different user
 * actions, backup: Implement raw output for privileged daemon
 * actions, backups: Fix tests depending on sudo based actions
 * actions: Drop feature to run privileged action as another user
 * actions: Drop sudo based privileged actions
 * actions: Framework for capturing stdout/stderr in privileged daemon
 * actions: Simplify raw output code in privileged methods
 * backups: Trim translatable string
 * container: Add support for Trixie as stable distribution
 * container: Pass --nvram option to virsh undefine
 * d/control: Remove libpam-abl as a recommendation
 * diagnostics: Fix notification severity when skipping tests
 * dynamicdns: Handle showing errors from GnuDIP
 * gitweb: Don't use privileged action feature to run as different user
 * gitweb: Use pathlib API more
 * HACKING.md: Mention using virtual machines instead of containers
 * homeassistant: Fix typo in description
 * l10n: Fix a broken string in Russian translation
 * l10n: Fix broken Italian translation
 * l10n: Fix formatted strings for errors/exceptions
 * locale: Update translations for Bulgarian, Chinese (Simplified Han script), Czech, Dutch, French, German, Italian, Russian, Turkish, Ukrainian
 * Makefile, settings: Use full paths in pot files
 * package: Don't consider uninstalled packages as available
 * package: Refresh apt cache if sources list is newer
 * power: logind config to ignore laptop lid close
 * privileged: Don't isolate /var/tmp/ for privileged daemon
 * privileged_daemon: Introduce a command line client for the API
 * privileged_daemon: Log only to journal and not console
 * samba: Update client list
 * storage: Don't use privileged action feature to run as different user
 * syncthing: Update Android clients to Syncthing-Fork
 * tests: functional: Fix incorrect skipping of install tests
 * ui: Fix missing semicolon in JS file
 * upgrades: Don't allow needs-restart to restart privileged daemon
 * upgrades: Overhaul detection of distribution
 * web_server: Restart in development mode only for source code changes

== FreedomBox 25.10 (2025-08-18) ==

=== Highlights ===

 * email: Add full text search capability
 * homeassistant: Add the most popular app for home automation

=== Other Changes ===

 * *: Update copyright year
 * action_utils: Add support for device mappings in podman containers
 * action_utils: Allow checking result for service operations
 * actions: Add method to handle privileged JSON request to a server
 * actions: Allow logging privileged calls to a server differently
 * actions: Call to a privileged server if it is available
 * actions: Raise a proper exception if privileged module is not found
 * actions:privileged: Fix flake8 errors
 * apache, letsencrypt: Create a site specific config for all domains
 * apache: Add component to host an app on a site's root
 * apache: Allow customization to the root of a site
 * apache: Generalize TLS config to use certificates only if available
 * apache: Make all directory listings more mobile friendly
 * app: Don't load apps again
 * apps: Fix regression in enabling install button
 * config: Allow better Apache default home page
 * container: Add component for managing containers using podman
 * d/control: Drop dependency on python3-setuptools-git
 * debian, pyproject.toml: Remove ancient python3-tomli workaround
 * debian: Print warning if version mismatch
 * diagnostics: Add collapsible sections for results
 * doc: Update man page with option --version
 * dovecot: Allow login using email address with dovecot version 2.4
 * dovecot: Fix location of Inbox in dovecot 2.4
 * dynamicdns: Add info about subdomains with Foundation's service
 * dynamicdns: Fix a type check error
 * dynamicdns: Switch update client to HTTP protocol
 * email: Increment app version number to trigger dovecot restart
 * featherwiki: Disable caching to avoid 412 errors
 * featherwiki: Don't allow index.html as a file name
 * forms: Allow showing a None option during domain selection
 * letsencrypt: Drop old app migration code
 * locale: Update translations for Catalan, Dutch, Estonian, Tamil
 * Makefile: Developer setup for privileged daemon
 * matrixsynapse: Drop help text for domain selection dropdown
 * module_loader: Don't load modules again
 * names: Add information about adding static domains/subdomains
 * notifications: Add datetime to each notification
 * notifications: Fix setting last_update_time
 * notifications: Minor styling fix for operation notifications
 * package: Refresh apt cache if old and some packages are not found
 * package: Uninstall packages even if they are not in apt cache
 * plinth: Add --version flag to print version and exit
 * privileged: Add /bin file for privileged daemon
 * privileged: Add systemd units for socket activating the daemon
 * privileged: Introduce a UNIX socket daemon for privileged calls
 * pyproject: Add missing pytest marker for "tags"
 * setup: Perform a check for app availability after the page loads
 * sogo: Allow adding IMAP accounts and changing full name
 * templates: Show Launch web client button for all !FreedomBox URLs
 * tests: Ensure that privileged daemon is not used during tests
 * tiddlywiki: Avoid "412: Precondition failed" error
 * tiddlywiki: Don't allow index.html as a file name
 * ui: Fix user menu popup overflowing beyond the page
 * ui: Use system's UI fonts on all platforms instead of Lato
 * uninstall: Use reverse order when uninstalling components
 * views: Remove unused code related to refresh packages button

== FreedomBox 25.9.4 (2025-08-02) ==

 * distupgrade: Handle comments in sources.list file
 * distupgrade: Update Trixie's release date as announced

== FreedomBox 25.9.3 (2025-07-21) ==

 * config: Allow overriding target path in dropin config component
 * email: Add support for Dovecot 2.4
 * email: Start servers during re-setup if they are not running
 * locale: Update translations for Albanian, Bulgarian, Catalan, Estonian, Tamil
 * sogo: Fix typo in configuration for sieve server

== FreedomBox 25.9.2 (2025-06-23) ==

  * debian: Set the branch for trixie
  * debian: Update debconf Portuguese translation
  * locale: Add new translation for Estonian
  * locale: Update translations for Dutch, German, Hungarian
  * performance: Handle install for trixie

== FreedomBox 25.9.1 (2025-06-02) ==

 * locale: Update translations for Catalan, Telugu, Ukrainian

== FreedomBox 25.9 (2025-05-05) ==

  * locale: Add translation for Catalan
  * locale: Update translations for French, Hindi, Telugu
  * minetest: Create the configuration directory if necessary for Trixie
  * minetest: Work with new luanti binary in Trixie

== FreedomBox 25.8 (2025-04-21) ==

=== Highlights ===

 * users: Fix unable to delete user
 * zoph: Don't fail while uninstalling

=== Other Changes ===

 * bind: Keep configuration during distribution upgrades
 * container: Fix waiting until plinth setup is finished when running tests
 * distupgrade: Use new configuration file instead of halting upgrade
 * locale: Update translations for Albanian, Arabic, Chinese (Simplified Han script), Czech, German, Hindi, Portuguese, Telugu, Turkish, Ukrainian
 * sogo: Adjust apache configuration to work on Trixie
 * upgrades: Allow packages to be upgraded from stable-updates
 * upgrades: Cleanup use of return value from _apt_run
 * zoph: Don't use mod-php instead continue to use php-fpm

== FreedomBox 25.7 (2025-04-07) ==

=== Highlights ===

 * calibre: Remove existing data directory before a restore operation
 * kiwix: Remove existing data directory before a restore operation
 * mediawiki: Run database upgrade after package upgrade
 * power: Disable sleep and hibernate on the system
 * upgrades: Revamp distribution upgrade UI

=== Other Changes ===

 * app: During startup, run post-init operation in background
 * backups: Add ability to cleanup files before restoring a backup
 * debian: Build depend on python3-systemd
 * locale: Update translations for Bengali, French, Hindi, Russian, Telugu
 * main: Run package operations immediately after startup
 * mediawiki: Update configuration to work with version 1.4 (Trixie)
 * mypy: Ignore missing type stubs for systemd.*
 * package: Allow app to say it wants to rerun setup after updates
 * packages: Don't run force upgrade hooks when freedombox performs ops
 * radicale: Explicitly set the auth type to accommodate radicale 3.5
 * radicale: Rerun setup when package updated
 * service: Increase startup/shutdown timeout to 5 minutes
 * service: Notify systemd when service starts up
 * setup: Implement mechanism to rerun setup when apt is updated
 * setup: Perform package operations immediately on trigger
 * tests: Fix a warning with pytest setup
 * tests: django: Fix a warning related to timezone settings
 * upgrades: Add introduction to the distribution upgrade page
 * upgrades: Don't ignore apt error during distribution upgrade
 * upgrades: Increase distribution upgrade timeout to 3 days
 * upgrades: Prevent installation of the Samba Active Directory service
 * upgrades: Remove unused import
 * upgrades: Run distribution upgrade around 06:00 everyday
 * upgrades: Show notification before, during, and after a dist upgrade
 * upgrades: Trigger special package operations in a simpler way
 * upgrades: Use special desc. for snapshots take before dist upgrade

== FreedomBox 25.6 (2025-03-25) ==

=== Highlight ===

 * names: Store domains in kvstore instead of /etc/hosts

=== Other Changes ===

 * container: Allow taking snapshots of VMs
 * container: Don't remove qcow2 image when terminating VM
 * doc: Fetch latest manual
 * locale: Update translations for German
 * operation: Drop type annotations on enum members
 * setup: Fix a minor flake8 complaint
 * SOGo: add dpkg-dev to the package list
 * storage: tests: Fix a test failure for psutils >= 7.0
 * syncthing: Extend setup process to recover from manual config errors
 * tests: functional: Add enable-all-apps script
 * upgrades: Run dpkg/apt fixes before dist upgrade

== FreedomBox 25.5 (2025-03-10) ==

=== Highlights ===

 * ui: tags: Add tag search/filter for system page

=== Other Changes ===

 * action_utils: Ensure that package are unheld if dist upgrade fails
 * locale: Update translations for Ukrainian
 * setup: Fix issue with pending app update and force upgrade
 * sogo: Fix a typo in tags
 * ui: Minor change with renaming a variable
 * ui: system: When canceling search stay on current page
 * ui: tags: Minor refactoring in menu filtering and sorting
 * ui: tags: Redirect to apps or system page appropriately
 * ui: tags: Show tags on all cards pages if present
 * upgrades: Drop special handling for searx
 * upgrades: Log apt output to journal during dist upgrade
 * upgrades: Log messages using python logging framework
 * upgrades: Minor refactor to pre-dist upgrade checks
 * upgrades: Perform easier checks first during dist upgrade
 * upgrades: Perform sources file update more reliably
 * upgrades: Refactor code for disabling Quassel during dist-upgrade
 * upgrades: Refactor code to disable snapshots
 * upgrades: Refactor code to hold packages
 * upgrades: Refactor code to retrieve the new codename
 * upgrades: Relax list of packages to hold during dist upgrade
 * upgrades: Simplify dist upgrades checks using exceptions
 * upgrades: Simplify some global names
 * upgrades: Split dist upgrade into a separate module
 * upgrades: Split the main dist upgrade code
 * upgrades: Use bind mounts to edit sources file only upon completion
 * upgrades: Use systemd service status instead of flag file
 * upgrades: Use systemd-run to create transient service
 * upgrades: tests: Add unit tests for dist upgrade methods

== FreedomBox 25.4.1 (2025-03-02) ==

 * debian: Move e2fsprogs to Recommends
 * locale: Update translations for Albanian, Bulgarian, Chinese (Simplified Han script), Czech, German, Turkish

== FreedomBox 25.4 (2025-02-24) ==

=== Highlights ===

 * dynamicdns: Implement adding multiple domains
 * names: Allow adding multiple static domain names

=== Other Changes ===

 * container: Fix spelling of 'destroy'
 * dynamicdns: Add/remove domains when app is enabled/disabled
 * dynamicdns: Handle addition of duplicate domains
 * dynamicdns: List domains that have not had status update yet
 * dynamicdns: Show specific operations on domains in Names apps
 * locale: Update translation for Telugu
 * matrixsynapse: tests: Fix adding domain
 * names: Add more URLs to the domain type component
 * names: Handle addition of duplicate static domains
 * names: Retrieve the most important domain in a more generic way
 * names: Simplify showing current and available domains
 * names: Simplify/clarify domain names types for static/dynamic
 * names: Sort domains by priority of their domain types
 * names: Specify priority order among domain types
 * names: Use hostnamectl instead of socket API get the current hostname
 * names: domain type: Minor refactor
 * pyproject: Ignore missing types for numpy (needed by pytest)
 * upgrades: Drop unattended-upgrade call from dist-upgrade
 * upgrades: Inhibit shutdown during dist-upgrade

== FreedomBox 25.3.1 (2025-02-15) ==

 * email: fix fresh installation issue

== FreedomBox 25.3 (2025-02-10) ==

 * debian: Switch from dnsutils to bind9-dnsutils
 * locale: Update translations for Albanian, Bulgarian, Chinese (Simplified Han script), Chinese (Traditional Han script), Czech, Dutch, German, Turkish

== FreedomBox 25.2 (2025-01-27) ==

=== Highlights ===

 * gnome: Add app to provide a graphical desktop environment
 * sogo: Add a new app for SOGo groupware

=== Other Changes ===

 * action_utils: Implement methods to get/set the systemd boot target
 * apache: Enable expires module by default
 * d/control: Fix incorrect comment format
 * d/copyright: Fix copyright entry for GNOME app icons
 * db: Add more utilities for managing PostgreSQL databases
 * email: Make rspamd learn spam/ham when the user marks mails as junk or not junk.
 * email: Recommend Thunderbird Mobile instead of K-9 Mail
 * firewall, networks, storage: Drop polkit pkla files
 * gnome: Add changes missing from branch merge
 * locale: Updated translations for Albanian, Bulgarian, Chinese (Simplified Han script), Chinese (Traditional Han script), Czech, Dutch, German, Turkish
 * miniflux: Add management of postgresql daemon in a shared manner
 * nextcloud: Drop some dead code
 * nextcloud: tests: functional: Fix test for modified structure of UI
 * nextcloud: tests: functional: Set override domain testing on VM
 * ttrss: Add management of postgresql daemon in a shared manner
 * ttrss: Fix issue with installing after uninstalling
 * ui: Drop the temporary fix for missing popper.js 2.0
 * ui: Fix missing arrow on dropdown form fields
 * ui: Fix tag separator not showing on some machines
 * wordpress: Order daemon enable/disable correctly

== FreedomBox 25.1 (2025-01-13) ==

=== Highlights ===

 * email: Show DNS entries for all domains instead of just primary
 * privacy: Add option in UI to set lookup URL for public IPs

=== Other Changes ===

 * app: Add tags to menu and frontpage components
 * app: Allow apps to instantiate without Django initialization
 * app: Stop showing short description on installation page
 * apps: Only show app tags all the tags in apps page search box
 * backups: Add warning that services may become unavailable
 * backups: Handle error when there is not enough space on disk
 * backups: Make all generated archive names consistent
 * backups: Properly cleanup after downloading an archive
 * deluge: tests: functional: Fix deluge client logged in detection
 * doc: dev: Remove short description and add tags to all components
 * dynamicdns: Use the public IP lookup URL from privacy app
 * email: Create DKIM keys for all known domains
 * email: Fix regression error when installing/operation app
 * email: Show reverse DNS entries to be configured
 * locale: Translated using Weblate (German, Russian)
 * miniflux: Ignore an type check error with pexpect library
 * privacy: Introduce utility to lookup external IP address
 * privacy: Show notification for privacy settings again
 * ui: Don't place JS file at the bottom of the page
 * ui: Drop remnants of already removed background images
 * ui: Fix missing variables in Bootstrap 5.2/Debian stable
 * ui: Update section header style to increase size, remove underline
 * ui: js: Load all JS files in deferred mode to speed up page load
 * views: Use tags from menu or shortcut instead of the app
 * web_framework: Disable caching templates files in development mode

== FreedomBox 24.26.1 (2025-01-05) ==

=== Highlights ===

 * email: Fix DKIM signing by setting correct ownership on private keys
 * nextcloud: remove experimental warning

=== Other Changes ===

 * locale: Update translations for Albanian, Bulgarian, Chinese (Simplified Han script), Czech, French, German, Turkish
 * mumble: Add diagnostic for setup config changes
 * mumble: Support config file moved into /etc/mumble
 * sharing: Drop jQuery code as the library dependency has been removed
 * users: Drop jQuery code as the library dependency has been removed

== FreedomBox 24.26 (2024-12-30) ==

=== Highlights ===

 * apps: Replace short description with tags in apps list
 * ui: Show breadcrumbs on deeper pages
 * ui: Handle and show most page load errors as alerts

=== Other Changes ===

 * actions: Allow privileged methods to be decorated again
 * backups: Fix issue clicking on schedule buttons with Bootstrap 5
 * backups: Fix issue with verifying SSH hosts with RSA key
 * backups: Fix issue with verifying remote server identity
 * backups: Format better when showing archive time delete page
 * backups: Handle common errors during borg operations
 * backups: Parse borg errors from all operations and not just some
 * backups: Remove unused import contextlib
 * backups: Require POST method for mount/unmount operations
 * backups: Use ISO timestamp for auto-naming archives
 * backups: tests: functional: Wait for pages to load after click
 * container: Add support for VMs using libvirt
 * container: Generalize language in output messages for VMs
 * container: Minor refactoring to reduce repeated code
 * container: Refactor nspawn specific operations into a separate class
 * container: Update FSID inside the image file to keep it bootable
 * context_processors: Use breadcrumbs to highlight current section
 * debian: Remove dependency libjs-jquery
 * diagnostics: Use generic handler to handle exceptions in diagnostics
 * frontpage: Replace short description with tags
 * locale: Update translations for Albanian, Bulgarian, Chinese (Simplified Han script), Czech, German, Tamil, Telugu, Turkish
 * Makefile: Add i2p to list of apps to remove
 * mediawiki: tests: functional: Use click function from functional library
 * menu: Ensure that all menu items have names for use by breadcrumbs
 * menu: Implement a helper method to lookup menu items using URL name
 * middleware: Handle method not allowed errors and redirect
 * middleware: Handle page not found errors specially
 * minetest: Provide default gameid argument
 * miniflux: tests: functional: Use helper functions from functional library
 * networks: Fix error during creation of PPPoE connections
 * samba: tests: functional: Wait for page update after enable/disable share
 * sharing: tests: functional: Use click function from functional library
 * system: Add tags to all remaining apps
 * tags: Add button to clear all tags
 * tags: Add tags to system apps
 * tags: Remove short description from system apps
 * tags: Replace short description with tags in app pages
 * tests: functional: Add utility to click element wait for page update
 * tests: functional: Fix typos in diagnostics checks
 * tests: functional: Make first wizard run more robust
 * tor, torproxy: Fix daemon services are running after reboot when app is disabled
 * torproxy: Don't disable apt-transport-tor in setup
 * ui: Don't show breadcrumbs in login and first wizard pages
 * ui: Fix regression with margin above app title
 * ui: Replace use of jQuery with plain !JavaScript
 * users: Restart nslcd service after configuration changes during setup
 * users: tests: functional: Use click function from functional library
 * views: Implement retrieving breadcrumbs of a page
 * views: Show exception details with the utility to show errors
 * zoph: Include tags from the manifest

== FreedomBox 24.25 (2024-12-16) ==

=== Highlights ===

 * deluge: Fix app installation on Debian testing
 * notifications: Don't error when dismissing missing notifications
 * ui: Switch to using bootstrap 5

=== Other Changes ===

 * action_utils: Add utility to ensure that service is stopped
 * apache: Relax content security policy to allow data: URL
 * ci: Add flake8 to gitlabci container
 * d/control: Drop unnecessary recommendations
 * d/control: Drop version specification on dependencies for Bookworm
 * debian: Added po-debconf Catalan translation
 * deluge: Cleanup and simplify setup code
 * diagnostics: Fix trimming an i18n string
 * diagnostics: tests: functional: Pick errors more specifically
 * firewalld: Reduce severity for alert about service on internal zone
 * help: Add a class to the help index page
 * help: Update the privacy notice on status log page
 * i2p: Drop app as it has not been available in Debian for a while
 * letsencrypt: Declare explicit dependency on openssl
 * locale: Update translations for Albanian, Bulgarian, Chinese (Simplified Han script), Czech, French, German, Russian, Turkish
 * matrixsynapse: Fix trimming an i18n string
 * networks: Fix issue with loading create PPPoE form
 * networks: Fix minor typo in template related to signal strength
 * networks: Use new accordion component from Bootstrap 5
 * openvpn: Declare explicit dependency on openssl
 * power: Refactor display of package manager busy alerts
 * radicale: Update link to supported clients
 * sso: Switch using cryptography module instead of OpenSSL.crypto
 * tags: Fix issue with JS init on a page without tags
 * tags: tests: Fix deprecated webdriver attribute
 * tests: functional: Disable smooth scrolling from Bootstrap 5
 * tests: functional: Don't try disable app after tests if app was not installed
 * tests: functional: Fix app installation test skipped on slow machines
 * ui: Accept default styling of Bootstrap 5 for warning button
 * ui: Align app icons in the center for home, apps, and help pages
 * ui: Allow underlining for most links due to Bootstrap 5
 * ui: Allow users to provide a CSS file to customize styling
 * ui: Cleanup use of colors with CSS variables
 * ui: Don't use nav-link inside card
 * ui: Drop use of badge-* utility classes for newer replacements
 * ui: Fix flash of notifications popdown during page load
 * ui: Fix issue with notifications icon showing twice in mobile view
 * ui: Fix overflow of exception text in message
 * ui: Fix placement of tags menu under tags input with Bootstrap 5
 * ui: Fix styling in dismiss button in form errors for Bootstrap 5
 * ui: Fix toggle button styling for Bootstrap 5
 * ui: Reduce the gap at the top of the pages
 * ui: Rename data- attributes to data-bs- for Bootstrap 5
 * ui: Restore spacing between form elements in Bootstrap 5
 * ui: Restyle tags, remove underlining of text
 * ui: Show disabled form elements as grey for Bootstrap 5
 * ui: Style the 'Log out' item properly
 * ui: Update custom button styles for Bootstrap 5
 * ui: Update styling for navbar menu items
 * ui: Use Bootstrap 5 styling for all alerts
 * ui: Use collapse instead of dropdown for notification in Bootstrap 5
 * ui: Workaround dropdowns not working with Bootstrap 5
 * ui: app, system: Revert to earlier width for card lists
 * ui: app: Fix an incorrect HTML tag nesting
 * ui: backups: Drop unused styling in verify host key page
 * ui: backups: Use Bootstrap color variables instead of static values
 * ui: diagnostics: Fix gap between headings
 * ui: diagnostics: Fix layout of repair buttons
 * ui: firewall: Fix styling with Bootstrap 5
 * ui: forms: Fix margins for form labels for Bootstrap 5
 * ui: help: Fix alignment issue with footer links in about page
 * ui: samba: Fix layout regressions with Bootstrap 5
 * ui: snapshots: Fix horizontal form layout on mobiles for Bootstrap 5
 * ui: snapshots: Fix horizontal form styling margins for Bootstrap 5
 * ui: users: Fix close button for confirmation dialog for Bootstrap 5

== FreedomBox 24.24 (2024-11-18) ==

=== Highlights ===

 * nextcloud: Switch to using !FreedomBox container registry
 * networks: Overhaul Wi-Fi network scan page

=== Other Changes ===

 * container: Quote arguments that contain spaces when restoring pytest args
 * i18n: Fix translation of !FreedomBox name in various places
 * locale: Update translations for Albanian, Bulgarian, Chinese (Simplified Han script), Czech, German, Turkish
 * networks: Fix display of mangled SSIDs when scanning Wi-Fi networks
 * networks: Fix display of strength and channel for Wi-Fi connections
 * networks: Fix editing wireless connections with SSID field
 * networks: Improve styling of badges in the information tables
 * networks: wifi: In new connection page set form defaults properly
 * nextcloud: Drop diagnostic for checking availability of docker.com
 * rssbridge: Mention miniflux in app description similar to tt-rss
 * tests: functional: Don't enable/disable app during tests
 * tests: functional: Fix visit() returning prematurely before page load
 * tests: functional: Wait for uninstall page load before uninstalling
 * ui: Drop box shadow around the card in card lists
 * ui: Drop logo backgrounds for index, apps, and system pages

== FreedomBox 24.23 (2024-11-04) ==

 * backups: Better explanation for the format of upload file
 * backups: Sort list of apps in backup, restore, and schedules
 * base: Add link to about for unauthenticated users
 * debian: Drop python3-flake8 build dependency
 * ejabberd: Set mod_mam default to always
 * functional tests: Add pytest testinfra plugin
 * help: Add all footer links to about page
 * help: Make about page available to unauthenticated users
 * index: Remove links and about text and link to about page
 * index: css: Move the 'powered by' logo further down
 * locale: Update translations for Albanian, Bulgarian, Chinese (Simplified Han script), Czech, French, German, Norwegian Bokmål, Spanish, Turkish
 * middleware: tests: Drop some obsolete mock code
 * system: Increase the size of items in listing page
 * ui: Don't bold titles in card lists
 * ui: Increase the width of app and system listings
 * ui: Move app names below app icons
 * ui: Remove the border around content container
 * ui: Remove the noise background
 * users: Delete or move home folder when user is deleted or renamed
 * users: tests: functional: Check LDAP information is correct after renaming user

== FreedomBox 24.22 (2024-10-21) ==

=== Highlights ===

 * Add tags for apps

=== Other Changes ===

 * .gitlab-ci.yml: Update for new infrastructure
 * Remove unused imports to fix flake8 errors
 * apache2: Allow popups to have different sandbox policy
 * backups: Use new utility for handling file uploads
 * calibre: tests: functional: Fix occasional failure in add book test
 * ci: Add a custom driver for gitlab runner for podman
 * ci: Add docker container for functional-tests:stable
 * ci: Add gitlab runner configuration
 * ci: Dockerfile: Drop obsolete dependency on pytest-bdd
 * ci: Enable showing test failures immediately as they fail
 * ci: Generalize script to update container, switch to podman
 * ci: Rename Dockerfiles to Containerfiles
 * ci: Update functional test timeout to 10h
 * context_processors: Stop adding unused 'submenu' to context
 * context_processors: Use active menu urls to decide what to highlight
 * css: Fix height of navbar in mobile layout during first boot
 * css: Navbar styling fixes in mobile layout
 * first_boot: Add notification for next steps after first setup
 * first_boot: Allow the next steps page to be revisited
 * firstboot: Hide navigation toggler in mobile layouts
 * firstboot: Improve the setup complete page with more setups
 * firstboot: Make logo image responsive during first setup
 * firstboot: Show spinner instead of message during first setup
 * help, system: Stop using submenu.sorted_items
 * help: tests: Fix tests failing due to tags related changes
 * locale: Update translations for Albanian, Bulgarian, Chinese (Simplified Han script), Czech, Spanish, Turkish, Ukrainian
 * middleware: Show translated error messages when operation completes
 * networks: Remove first boot steps for connectivity/topology
 * nextcloud: Fix install failure due to !PrivateTmp=yes
 * operation: Use safe formatter for translating messages
 * setup: Translate errors when installing/updating/repairing apps
 * ssh: Start server after nslcd service
 * syncthing: Fix app setup in Debian testing
 * tags: Adjust tags and style
 * tags: Localization fixes
 * tags: css: Minor styling cleanups
 * tags: js: Minor fixes and refactoring
 * tests: functional: Add package for printing test failures instantly
 * tests: functional: Create utility to set user preferred locale
 * upgrades: Remove step upgrade during first setup
 * upgrades: Show notification to remind user to run updates manually
 * utils: Improve safe formatter by handling more cases
 * wordpress: tests: functional: Fix tests on Trixie

== FreedomBox 24.21 (2024-10-07) ==

=== Highlights ===

 * django: Improve handling of file uploads
 * nextcloud: Fix existing installs to upgrade properly

=== Other Changes ===

 * action_utils: Fix missing parent folder when creating apt hold flag
 * action_utils: Introduce utility to move uploaded files
 * actions: Handle exceptions with Path-like objects
 * featherwiki: Use new utility for handling uploads
 * functional tests: Upgrade dependencies selenium and splinter
 * kiwix: Don't leave invalid .zim in library after a failed attempt
 * kiwix: Use new utility for handling uploads
 * locale: Albanian: Fix build issue by correcting typo
 * locale: Update translations for Albanian, Czech
 * names: Don't control resolved daemon when package is not installed
 * names: Don't hard depend on systemd-resolved
 * names: Don't show resolver status if package is not installed
 * names: Introduce method to check if resolved is installed
 * names: Perform resolve diagnostics only if resolved is installed
 * names: Schedule a task to install systemd-resolved when possible
 * names: Try to install systemd-resolved during app setup
 * networks: Disable DNS-over-TLS option if resolved is not installed
 * networks: Don't show DNS-over-TLS when resolved is not installed
 * nextcloud: During upgrade wait properly for upgrade to complete
 * privacy: Disable DNS fallback option if resolved is not installed
 * samba: Remove option to backup app
 * storage: Skip tests that involve loopback device in a container
 * tiddlywiki: Avoid writing duplicate temporary files
 * transmission: tests: Fix functional test failures in Debian testing

== FreedomBox 24.20.1 (2024-09-25) ==

=== Highlights ===

 * samba: Fix nmb systemd service is in erroneous state
 * users: Inactivate users in LDAP user database

=== Other Changes ===

 * Revert "debian: tests: Wait for systemd-resolved to be started"
 * ci: Run autopkgtest but allow failure
 * d/tests: Add breaks-testbed restriction
 * locale: Update translations for Bulgarian, Chinese (Simplified Han script), Spanish, Turkish
 * security: Remove PAM configuration for 'access' module
 * users: Increment app version for changes w.r.t. inactive users
 * users: Set proper class on default password policy object

== FreedomBox 24.20 (2024-09-23) ==

=== Highlights ===

 * nextcloud: Fix issue with upgrading to next version

=== Other Changes ===

 * action_utils: Add a method to reset services in 'failed' state
 * action_utils: Update outdated docstrings
 * apache: Don't restart daemon when changing certificates
 * config, names: Move domain name configuration to names app
 * config, names: Move setting hostname from config to names
 * debian: tests: Wait for systemd-resolved to be started
 * letsencrypt: Allow reloading daemons after cert changes
 * locale: Update translations for Albanian, Bulgarian, Chinese (Simplified Han script), Czech, Dutch, Spanish, Turkish
 * miniflux: Workaround a packaging bug with DB connection
 * service: Add privileged utility for 'try-reload-or-restart' action
 * tests: functional: Don't timeout when web server restarts
 * upgrades: Treat n/a release as testing
 * users: Don't cache NSS user identity information
 * users: Invalidate nscd cache after nslcd service startup

== FreedomBox 24.19 (2024-09-09) ==

=== Highlights ===

 * mediawiki: Increase PHP maximum execution time to 100 seconds
 * names: Use systemd-resolved for DNS resolution

=== Other Changes ===

 * bind: Don't start a stopped daemon during changes/upgrades
 * bind: Fix port number clash with 'shared' network connections
 * bind: Set default forwarder as systemd-resolved
 * container: Re-run failed provisioning even if container is running
 * letsencrypt: Handle both standard and custom repairs
 * locale: Update translations for Albanian, Bulgarian, Chinese (Simplified), Dutch, German, Spanish, Telugu, Turkish, Ukrainian
 * makefile: Workaround problems with systemd-resolved package
 * names, network: Re-feed DNS known to network-manager to resolved
 * names: Add option for setting global DNS-over-TLS preference
 * names: Add option for setting global DNSSEC preference
 * names: Implement a diagnostic check for checking name resolution
 * names: Restart instead of reload for systemd-resolved changes
 * names: Show systemd-resolved status in the names page
 * networks: Add more options for IPv6 configuration method
 * networks: Add support for DNS-over-TLS for individual connections
 * networks: Declare a need for DHCP/DNS ports to be open in firewall
 * networks: Fix focusing on network interface field on error
 * networks: Groups fields in create/edit connection form
 * networks: Set 'auto' as default IPv6 method in new connection form
 * networks: Show current global value of DNS-over-TLS and link to it
 * privacy: Implement a way to disable fallback DNS servers
 * privacy: Show notification again so that users see the new setting
 * storage: Handle grub-pc package not available
 * upgrades: Add repair step for held packages

== FreedomBox 24.18 (2024-08-26) ==

 * *.md, pyproject.toml: Update default branch from 'master' to 'main'
 * d/control: Don't recommend libnss-gw-name
 * d/control: Remove haveged as it no longer relevant on latest kernels
 * debian: Set gbp default branch to main
 * doc/dev: Fix Django related errors with auto-documentation
 * doc/dev: Limit table of contents depth to 2 for clarity
 * doc/dev: Update copyright year
 * featherwiki, tiddlywiki: Remove redundant </p> in template
 * locale: Update translations for Albanian, Bulgarian, Chinese (Simplified), Czech, Dutch, Norwegian Bokmål, Spanish, Telugu, Turkish, Ukrainian
 * plinth: Fix translating app operations
 * ttrss: Remove unavailable Android client - org.fox.tttrss
 * upgrades: Add diagnostic for held packages

== FreedomBox 24.17 (2024-08-12) ==

=== Highlights ===

 * featherwiki: Add new app for Personal Notebooks
 * tiddlywiki: Add new app for Non-linear Notebooks

=== Other Changes ===

 * COPYING.md: Update copyright years
 * actions: Add error when likely parameters are not marked as secret
 * actions: Define and allow a new alias for str; secret_str
 * actions: Log arguments without secret strings in privileged calls
 * apache: Enable dav and dav_fs modules
 * backups: Mark secret strings in privileged actions
 * base.html: Drop dependency on modernizr.js library
 * bepasty: Mark secret strings in privileged actions
 * django: settings: Don't set USE_L10N on newer versions
 * featherwiki: Fix a type check failure
 * featherwiki: Proxy download through freedombox.org
 * firewall: Setup inter-zone forwarding
 * gitweb: Don't backup/restore a drop-in configuration file
 * ikiwiki: Mark secret strings in privileged actions
 * locale: Update translations for Albanian, Bulgarian, Chinese (Simplified), Czech, Spanish, Turkish
 * makefile: Don't fail while building and installing multiple versions
 * mediawiki: Mark secret strings in privileged actions
 * miniflux: Mark secret strings in privileged actions
 * mumble: Mark secret strings in privileged actions
 * nextcloud: Mark secret strings in privileged actions
 * nextcloud: Prevent process restart when nextcloud is uninstalled
 * nextcloud: Redirect to URL nextcloud/ if ending slash is not given
 * nextcloud: tests: functional: Add base and interface tests
 * pagekite: Mark secret strings in privileged actions
 * rssbridge: tests: Add missing {{{__init__.py}}}
 * shadowsocks: Mark secret strings in privileged actions
 * shadowsocksserver: Mark secret strings in privileged actions
 * ssh: Mark secret strings in privileged actions
 * storage: Add diagnostic for grub config issue
 * templates: Fix warning about using default.html for form template
 * tests: functional: Allow submitting form buttons along with inputs
 * tests: functional: Name the background fixture
 * users: Mark secret strings in privileged actions

== FreedomBox 24.16 (2024-07-29) ==

=== Highlights ===

 * miniflux: Add new app
   * Note that miniflux is currently only available in Debian testing and unstable.

=== Other Changes ===

 * locale: Update translations for Bulgarian, Chinese (Traditional), German, Swedish
 * miniflux, ttrss: Factor out duplicated postgres utility methods
 * miniflux: Add list of client apps from upstream clients list
 * miniflux: Drop postgres-contrib package as it seem redundant
 * miniflux: Fix error handling for reset password
 * miniflux: Fix issues with running the CLI in a pseudo-terminal
 * miniflux: Fix regression in creating admin user
 * miniflux: Remove a spurious error message after resetting password
 * miniflux: Trim error messages when creating user
 * miniflux: tests: functional: Fix failing tests when run out of order
 * readme: Mention the AGPLv3+ license
 * tests: functional: Handle click failure when waiting for page update
 * tests: functional: Handle obscured elements when submitting forms

== FreedomBox 24.15 (2024-07-16) ==

 * locale: Update translations for Albanian, Chinese (Simplified), French, German, Polish, Spanish, Turkish, Ukrainian
 * make: Ignore .mypy_cache folders while copying files

== FreedomBox 24.14 (2024-07-01) ==

 * container: Allow podman containers to run inside the container
 * diagnostics: Add option for automatic repair
 * locale: Update translations for French

== FreedomBox 24.13 (2024-06-17) ==

 * locale: Update translations for Czech, Dutch, Swedish, Ukrainian

== FreedomBox 24.12 (2024-06-03) ==

 * locale: Update translations for Albanian, Chinese (Traditional), German, Russian

== FreedomBox 24.11 (2024-05-20) ==

 * locale: Update translations for Chinese (Simplified), Chinese (Traditional),  Spanish, Swedish, Turkish

== FreedomBox 24.10 (2024-05-06) ==

=== Highlights ===

 * nextcloud: Enable app with experimental warning
 * minidlna: Add media directory selection form

=== Other Changes ===

 * app, component: Add repair method
 * diagnostics: Add optional component_id to !DiagnosticCheck
 * diagnostics: Change "Re-run setup" to "Try to repair"
 * letsencrypt: Re-obtain certificates during repair
 * letsencrypt: Remove unused imports
 * locale: Update translations for Chinese (Simplified), Chinese (Traditional), Czech, Spanish, Turkish
 * minidlna: Do not proxy minidlna web interface over Apache
 * minidlna: Explicitly include ssdp service to firewall configuration
 * minidlna: Restart app when upgrading to reconfigure firewall
 * nextcloud: Add fallback for when quadlet is not available
 * nextcloud: Allow re-running setup
 * nextcloud: Allow re-running setup when app is disabled
 * nextcloud: Create network using systemd generator
 * nextcloud: Drop network namespacing in container, use host network
 * nextcloud: Enable pretty URLs without /index.php in them
 * nextcloud: Implement enable/disable container
 * nextcloud: Populated and maintain a list of trusted domains
 * nextcloud: Pull the image separately before starting systemd unit
 * nextcloud: Restart container when dependent services are restarted
 * nextcloud: Ship instead of create cron timer related units
 * nextcloud: Use php-fpm container instead of apache container
 * nextcloud: Use systemd generator for creating container service
 * nextcloud: Wait on init sync lock
 * nextcloud: Warn that community provides the container not team
 * notification: Handle more formatting errors
 * setup: Add method to run app repair
 * storage: Add an option to include help text to directory selection form

== FreedomBox 24.9 (2024-04-22) ==

 * action_utils, nextcloud: Make podman util more generic
 * config: Handle dropin config files with limited permissions
 * locale: Update translations for Albanian, Chinese (Simplified), Chinese (Traditional), Russian, Spanish, Turkish
 * nextcloud: (Note that this app is currently disabled, and not available to install.)
   * Add network interface to firewall zone after creating it
   * Add warning that the app is experimental
   * Allow backup/restore when app is disabled
   * Connect to mysql using socket instead of TCP
   * Connect to redis using Unix socket
   * Connect to slapd for LDAP using Unix socket
   * Don't fail uninstall if DB or user do not exist
   * Don't set password on redis server
   * Don't show incorrect phone region when it is not set
   * Drop a repeated creation of systemd service file
   * Ensure that database is running when running setup
   * Expand on the warning about container usage
   * Fail on errors when configuring the app
   * Fix configuring trusted proxies setting
   * Improve check used to test if installation wizard is done
   * Improve database permission granting
   * Improve setting up LDAP configuration
   * Minor changes to cron timer units
   * Minor refactoring
   * Minor update to description regarding users' usage
   * Refactor container creation code
   * Refactor setting admin password
   * Remove fail2ban jail, brute force protection present
   * Rename the systemd service names
   * Retrieve database password in a more robust way
   * Use a separate DB for redis
   * Use secrets module generate passwords
   * When backup fails, unset the maintenance mode
 * tests: functional: Disable functional tests

== FreedomBox 24.8 (2024-04-08) ==

=== Highlights ===

 * gitweb: Fix an issue when cloning existing repository
 * ttrss: Improve backup and restore of the database
 * ttrss: Include dbconfig configuration file in backup
 * zoph: Include dbconfig configuration file in backup

=== Other Changes ===

 * action_utils: Add generic utils for managing podman containers
 * actions: Don't repeat action traceback in stderr
 * diagnostics: Don't store list of app objects with results
 * locale: Update translations for Albanian, Chinese (Simplified), Dutch, French, German, Norwegian Bokmål, Spanish, Turkish
 * network: Skip bridge interfaces in connections list
 * nextcloud: Add new app based on podman container
   * Note: The Nextcloud app is currently disabled (not available to install). It will be made available after there has been more testing and review.
   * Add backup/restore
   * Add option to configure the default phone region
   * Configure redis caching, create static PHP file
 * ttrss: Ensure that database is removed after uninstall
 * ttrss: tests: functional: Uninstall during backup/restore test
 * upgrades: Re-enable unattended-upgrade during dist-upgrade
 * zoph: Re-add a safety check when reading the setup state of the app

== FreedomBox 24.7 (2024-03-25) ==

=== Highlights ===

 * package: Don't remove packages of other apps on uninstall
 * samba: Fix Samba not accessible from IPv6 localhost ::1 address
 * system: Organize items into sections
 * users: Add email address field when creating/updating user accounts

=== Other Changes ===

 * actions: Minor refactor to action error logging
 * actions: Move most of the privileged action code to main directory
 * actions: Provide HTML error message with action error
 * backups: Adjust to changes in privileged errors
 * letsencrypt: Remove unnecessary processing of the error messages
 * letsencrypt: Show better error messages
 * letsencrypt: Simplify error warning when certificate revoke fails
 * matrixsynapse: Prevent setup page from being shown during uninstall
 * middleware: Show HTML exception message as extra detail in messages
 * package: Drop special error message handling for package errors
 * samba: Disable nmbd NetBIOS service
 * snapshot: Show better error messages
 * storage: Adjust to changes in privileged errors
 * storage: Show better error message
 * tests: Automatically create pytest marks for apps
 * tests: Merge actions related test files
 * tests: Move test configuration to plinth directory
 * tests: Remove unused fixture for testing actions
 * upgrades: Show better error messages
 * users: Add email address field during first boot
 * views: Fix alignment of close button in error messages
 * views: Implement a utility to easily show error message

== FreedomBox 24.6 (2024-03-11) ==

=== Highlights ===

 * gitweb: Fix modifying git repositories when gitweb app is disabled
 * users: Fix creating users with initial set of groups
 * wordpress:
   * Don't fail setup if mysql installed but not running
   * Drop database user when app is uninstalled
   * Fix backup, restore and uninstall when db is not running
 * zoph:
   * Don't fail setup if mysql installed but not running
   * Don't fail with backup/restore if app is disabled
   * Don't redirect to setup page when app is disabled
   * Ensure that database server is running when setting up app
   * Hide configuration form when app is disabled
   * Restore database password to old value after restore operation
   * Uninstall fully so that reinstall works

=== Other Changes ===

 * *: Add type hints for app init methods
 * *: Add type hints for diagnose method
 * action_utils: Implement method for starting a service temporarily
 * actions: Fix log message when action return can't be decoded
 * actions: When action errors out, log a better message
 * app: Add ability to hide configuration form when app is disabled
 * app: views: Expose method to get enabled/disabled state and cache it
 * daemon: Added method to ensure a daemon is running in component
 * diagnostics: Add tests for get_results
 * diagnostics: Handle !TypeError when copying results
 * locale: Update translations for Dutch
 * log: Don't log with in color inside actions scripts
 * samba: Ignore non-existent users who are in freedombox-share group
 * tests: functional: Refactor install/setup fixture for apps
 * tests: functional: Uninstall app after backup and before restore
 * users: Minor refactor when creating django groups
 * users: tests: Do not remove LDAP user when testing views
 * wordpress: Fix minor issue in restoring database
 * wordpress: tests: Uninstall app after backup and before restore

== FreedomBox 24.5 (2024-02-26) ==

 * backups: tests: Don't use pytest marks on fixtures
 * container: Fix issue with missing make command on stable image
 * daemon: Add new component for daemons shared across apps
 * firewalld: Implement force upgrading to any 2.x versions
 * gitweb, users: Minor fixes for newer pycodestyle
 * locale: Update translations for German
 * pyproject.toml: Exclude the build directory from mypy checks
 * setup: Ensure that apt is updated before checking force upgrade
 * setup: Ensure that force upgrade won't run when app is not installed
 * setup: Minor refactoring of force upgrader class instantiation
 * setup: Try force upgrade before running app setup
 * tests: Patch apps_init for enable/disable daemon test
 * tor: tests: Convert to pytest style tests from class based tests
 * tor: tests: Fix issue with pytest 8.x versions
 * wordpress: Add shared daemon component for mariadb/mysql
 * zoph: Add shared daemon component for mariadb/mysql

== FreedomBox 24.4 (2024-02-12) ==

=== Highlights ===

 * locale: Update translations for Albanian, Chinese (Simplified), German, Spanish, Swedish, Telugu, Turkish, Ukrainian

=== Other Changes ===

 * *: Introduce make file based build, eliminate setup.py
 * Makefile: Move most of the provision process into build system
 * Makefile: Move various tests into build system
 * actions: Drop legacy placeholders for unused actions
 * d/copyright: Update copyright year
 * debian: Remove lintian override for init script
 * doc: Install man1 page using Makefile
 * doc: dev: Update all references to setup.py
 * help: tests: Run tests using doc in current dir instead of /usr
 * pyproject.toml: Move project meta data from setup.py

== FreedomBox 24.3 (2024-01-29) ==

=== Highlights ===

 * diagnostics: Add option to toggle daily run
 * zoph: Fix failing PHP configuration requirements

=== Other Changes ===

 * diagnostics: Add parameters to !DiagnosticCheck
 * diagnostics: Add method to translate checks
 * diagnostics: Translate descriptions only in view
 * diagnostics: Store results of full run in database
 * diagnostics: Simplify getting translated description in results
 * diagnostics: Safely access results when showing notification
 * diagnostics: Fix a potential iteration of None value in error cases
 * glib: Change API for repeating an in-thread scheduled task

== FreedomBox 24.2 (2024-01-15) ==

 * locale: Update translations for Chinese (Simplified), French, Spanish, Swedish, Turkish, Ukrainian

== FreedomBox 24.1 (2024-01-01) ==

=== Highlights ===

 * locale: Add translation for Belarusian
 * storage: Show notification when rootfs is read-only

=== Other Changes ===

 * locale: Update translation for Dutch
 * tests: operation: Fix mock has_calls assertion

== FreedomBox 23.21 (2023-11-20) ==

 * locale: Update translations for Chinese (Simplified), Czech, Spanish, Swedish, Turkish, Ukrainian

== FreedomBox 23.20 (2023-11-06) ==

=== Highlights ===

 * backups: Don't leave services stopped if backup fails
 * coturn: Fix incorrectly passing transport argument to STUN URIs

=== Other Changes ===

 * apache: tests: Update to use !DiagnosticCheck class
 * app: Update diagnose() docstring
 * datetime: Fix diagnostic test for checking NTP server sync
 * diagnostics: Add shortcut to re-run setup for app
 * ejabberd: Update old STUN URIs to remove 'transport' parameter
 * email: Increase the size of the message to 100MiB
 * locale: Update translations for Albanian, German, Spanish, Turkish, Ukrainian
 * matrixsynapse: Update old STUN URIs to remove 'transport' parameter
 * operation: Fix issue with re-running setup when it fails first time
 * tests: functional: Run tests on two app servers

== FreedomBox 23.19 (2023-10-23) ==

=== Highlights ===

 * backup: Fix bug in adding existing unencrypted backup location
 * diagnostics: Run daily check and notify on failures
 * email: Fix issue with install caused by missing drop-in config file
 * kiwix: Add app for Kiwix offline Wikipedia reader
 * upgrades: Allow matrix-synapse to be installed from bookworm

=== Other Changes ===

 * db: Serialize most of the database queries using locks
 * diagnostics: Add !DiagnosticCheck dataclass
 * diagnostics: Refactor background diagnostics task
 * diagnostics: Refactor check IDs, tests and background checks
 * glib: Add a jitter to the interval by default when scheduling tasks
 * glib: Refactor schedule debugging in a central place
 * kiwix: Do not require login to access the app
 * kiwix: Drop unnecessary file in /etc/plinth/modules-enabled
 * kiwix: Fix various issues after review
 * locale: Update translations for Arabic, Czech, Dutch, German, Hindi, Spanish, Swedish, Telugu, Turkish, Ukrainian
 * matrix-synapse: Update warning on how to change domain name
 * operation: Add unique ID for each operation

== FreedomBox 23.18 (2023-09-25) ==

 * *: Fix all typing hint related errors
 * development: Make passing mypy checks mandatory
 * development: Perform backports tests on bookworm instead of bullseye
 * ikiwiki: Disable discussion pages by default for new wiki/blog
 * locale: Update translations for Bulgarian
 * middleware: Add new middleware to handle common errors like DB busy
 * upgrades: Fix detecting apt over tor during upgrade
 * wordpress: Use absolute path in service file

== FreedomBox 23.17 (2023-09-11) ==

 * locale: Update translations for Czech, Dutch, Spanish, Swedish, Turkish, Ukrainian

== FreedomBox 23.16 (2023-08-28) ==

=== Highlights ===

 * openvpn: Renew server/client certificates
 * openvpn: Correctly set expiry of server/client certs to 10 years

=== Other Changes ===

 * backups: Remove use of length_is template function
 * django: Remove use of X-XSS-Protection header
 * locale: Update translations for Czech, Norwegian Bokmål, Swedish
 * networks, samba: Fix tests setting firewall zone
 * openvpn: Ensure that re-running setup works as expected
 * openvpn: Fix app not installing on Debian testing
 * openvpn: Minor refactoring in setting up easy-rsa
 * openvpn: Use config file instead of env vars for easy-rsa
 * sso: Switch to django-axes >= 5.0
 * sso: Use POST method for logout
 * users, networks: Use the autofocus HTML attribute sparingly

== FreedomBox 23.15 (2023-08-14) ==

  * debian: Add Swedish translation for debconf
  * locale: Update translations for Dutch, German, Spanish, Turkish, Ukrainian

== FreedomBox 23.14 (2023-07-31) ==

=== Highlights ===

  * app: Implement advanced option to rerun app setup
  * torproxy: Add separate app for Tor Proxy
  * upgrades: Use codename in apt preferences

=== Other Changes ===

  * HACKING: Add instructions for container on Raspberry Pi
  * bepasty: Don't enable app when setup is rerun
  * bind: Don't enable app when setup is rerun
  * ci: Add mypy static type check
  * container: Add support for retrieving GPG keys using wget
  * container: Update for bookworm images
  * deluge: Don't enable app when setup is rerun
  * ejabberd: Don't enable app when setup is rerun
  * firewall: Add diagnostic check for backend
  * firewall: Add diagnostic check for passthroughs
  * firewall: Add diagnostic for default zone
  * gitweb: Don't enable app when setup is rerun
  * ikiwiki: Don't enable app when setup is rerun
  * infinoted: Don't enable app when setup is rerun
  * janus: Don't enable app when setup is rerun
  * jsxc: Don't enable app when setup is rerun
  * kvstore: Optionally, don't throw exception when deleting key
  * locale: Update translations for Dutch
  * mediawiki: Don't enable app when setup is rerun
  * minetest: Don't enable app when setup is rerun
  * openvpn: Don't enable app when setup is rerun
  * performance: Don't enable app when setup is rerun
  * privoxy: Don't enable app when setup is rerun
  * quassel: Don't enable app when setup is rerun
  * radicale: Don't enable app when setup is rerun
  * rssbridge: Don't enable app when setup is rerun
  * shaarli: Don't enable app when setup is rerun
  * sharing: Don't enable app when setup is rerun
  * tor, torproxy: Export settings from old to new app
  * tor, torproxy: Update description for info on services provided
  * tor: tests: Make functional test check for running service
  * ttrss: Don't enable app when setup is rerun
  * upgrades: Use codename for unattended-upgrades origin pattern
  * users: Add diagnostic checks for nsswitch config
  * users: Add diagnostics check for nslcd config
  * wireguard: Don't enable app when setup is rerun
  * zoph: Don't enable app when setup is rerun

== FreedomBox 23.13 (2023-07-17) ==

 * container: Add support for ARM64 containers
 * HACKING: Instructions for macOS on Apple Silicon
 * locale: Update translations for German, Spanish, Turkish, Ukrainian

== FreedomBox 23.12 (2023-06-19) ==

=== Highlights ===

 * packages: Purge packages on uninstall
 * gitweb: Fix issue with service startup when gitweb is not enabled
 * mediawiki: Increment version to run update.php automatically

=== Other Changes ===

 * deluge: Utilize purging of packages and don't remove explicitly
 * locale: Update translations for Czech, Dutch, Spanish, Turkish, Ukrainian
 * mediawiki: Utilize purging of packages and don't remove explicitly
 * roundcube: Clarify description for local mail only option
 * samba: Remove additional configuration files on uninstall
 * searx: Fix typo in method name
 * shaarli: Utilize purging of packages and don't remove explicitly
 * uninstall: Remove experimental warning

== FreedomBox 23.11 (2023-06-05) ==

=== Highlights ===

  * *: Fix icons not present in the generated .deb
  * shadowsocksserver: Add separate app for Shadowsocks server

=== Other Changes ===

  * apache: Fix failure during app update
  * apache: Use drop-in config component for /etc files
  * bepasty: Use drop-in config component for /etc files
  * calibre: Use drop-in config component for /etc files
  * cockpit: Use drop-in config component for /etc files
  * config: Add new component for managing drop-in /etc/ config files
  * debian/install: Add new place in /usr to keep drop-in config files
  * deluge: Use drop-in config comonents for /etc files
  * ejabberd: Use drop-in config component for /etc files
  * email: Use drop-in config component for /etc files
  * gitweb: Use drop-in config component for /etc files
  * i2p: Use drop-in config component for /etc files
  * ikiwiki: Use drop-in config component for /etc files
  * janus: Use drop-in config component for /etc files
  * letsencrypt: Use drop-in config component for /etc files
  * matrixsynapse: Use drop-in config component for /etc files
  * mediawiki: Use drop-in config component for /etc files
  * minidlna: Use drop-in config component for /etc files
  * networks: Use drop-in config component for /etc files
  * pagekite: Drop the config file for forcing use of Debian certs
  * privacy: Use drop-in config component for /etc files
  * radicale: Use drop-in config component for /etc files
  * roundcube: Use drop-in config component for /etc files
  * rssbridge: Use drop-in config component for /etc files
  * searx: Use drop-in config component for /etc files
  * security: Use drop-in config component for /etc files
  * sharing: Use drop-in config component for /etc files
  * ssh: Use drop-in config component for /etc files
  * sso: Use drop-in config component for /etc files
  * syncthing: Use drop-in config component for /etc files
  * transmission: Use drop-in config component for /etc files
  * ttrss: Use drop-in config component for /etc files
  * upgrades: Use drop-in config component for /etc files
  * users: Use drop-in config component for /etc files
  * wordpress: Use drop-in config component for /etc files

== FreedomBox 23.10 (2023-05-22) ==

 * *: Move modules-enabled files to /usr/share
 * locale: Update translations for Dutch, Portuguese, Spanish, Turkish, Ukrainian
 * doc/dev: Set language code explicitly in Sphinx configuration
 * gitweb: Disable gpg signing in tests

== FreedomBox 23.9 (2023-05-08) ==

=== Highlights ===

 * transmission: Allow remote UIs to connect
 * ttrss: Allow apps to use /tt-rss URL instead of separate one

=== Other Changes ===

 * apache: Reload apache using component if config changes
 * debian: Follows policy v4.6.2
 * debian: Update copyright years
 * doc/dev: Update copyright year
 * help: Add information on obtaining source code
 * locale: Update translations for Japanese
 * mediawiki: Make a utility method public
 * mediawiki: Make retrieving list of supported languages robust
 * mediawiki: Simplify retrieving the default language
 * minidlna: Resize icon and export to PNG also
 * service: Remove reference to managed_services in a message
 * storage: Handle mount error properly
 * theme: Move icons to app folders
 * tor: Check if Hidden service is version 3
 * tor: Only diagnose relay ports if feature enabled
 * tor: Rename Hidden service to Onion service
 * transmission: Add Tremotesf to list of client apps
 * ttrss: Don't show app in enabled list of apps if install fails
 * ttrss: Update list of clients
 * ttrss: Use the apache component to restart apache on config change
 * uninstall: Fix issue with uninstall of apps that have no backup
 * zoph: Don't fail at showing app view during uninstall

== FreedomBox 23.6.2 (2023-05-01) ==

 * upgrades: Check apt result during dist-upgrade
 * locale: Update translations for Bulgarian, Ukrainian

== FreedomBox 23.8 (2023-04-24) ==

=== Highlights ===

 * coturn: Prevent package removal when roundcube is uninstalled
 * datetime: Re-implement backup/restore for timezone
 * gitweb: Disable snapshot feature

=== Other Changes ===

 * HACKING: Force pip to install packages to system environment
 * bepasty: When uninstalling, remove all data and configuration
 * calibre: Remove libraries during uninstallation
 * ci: Force pip install for functional tests
 * coturn: When uninstalling, remove all data and configuration
 * datetime: Use unique component ID for related daemon
 * deluge: When uninstalling, remove all data and configuration
 * gitweb: When uninstalling, remove all data and configuration, remove repositories
 * gitweb: Make globally configured features overridable per-repository
 * gitweb: Simplify handling shortcut for front page
 * ikiwiki: When uninstalling, remove all data and configuration
 * infinoted: When uninstalling, remove all data and configuration
 * locale: Update translations for Bulgarian, French, Ukrainian
 * matrixsynapse: When uninstalling, remove all data and configuration
 * mediawiki: When uninstalling, remove all data and configuration
 * mediawiki: Fix broken view on Bullseye due to language selection
 * openvpn: When uninstalling, remove all data and configuration
 * roundcube: When uninstalling, remove all data and configuration
 * rssbridge: When uninstalling, remove all data and configuration
 * samba: When uninstalling, remove all data and configuration
 * searx: When uninstalling, remove all data and configuration
 * searx: Simplify handling shortcut for front page
 * shaarli: When uninstalling, remove all data and configuration
 * shadowsocks: When uninstalling, remove all data and configuration
 * sharing: When uninstalling, remove all data and configuration
 * syncthing: When uninstalling, remove all data and configuration
 * syncthing: Remove unused pathlib import so job code-quality can pass
 * tests: Don't error during collection if selenium is not installed
 * tests: functional: Make install script work for Bullseye
 * tests: functional: Remove handling for custom enable/disable buttons
 * tests: functional: Update detecting page changes
 * tor: When uninstalling, remove all data and configuration
 * ttrss: When uninstalling, remove all data and configuration
 * upgrades: Check apt result during dist-upgrade
 * wordpress: When uninstalling, remove all data and configuration

== FreedomBox 23.6.1 (2023-04-10) ==

 * coturn: Prevent package removal when roundcube is uninstalled
 * datetime: Re-implement backup/restore for timezone
 * gitweb: Disable snapshot feature
 * gitweb: Make globally configured features overridable per-repository
 * locale: Update translations for Bulgarian, French

== FreedomBox 23.7 (2023-03-27) ==

=== Highlights ===

 * matrixsynapse: Add token based registration verification
 * mediawiki: Allow setting site language code

=== Other Changes ===

 * container: Fix resizing disk image containing multiple partitions
 * container: Force pip to install packages to system environment
 * container: Increase wait time to accommodate slower architectures
 * locale: Update translations for Bulgarian
 * tests: functional: Fix setting first ethernet connection as internal

== FreedomBox 23.6 (2023-03-13) ==

 * /etc/issue: Update message to reflect that all users can login
 * ci: Force pip to install packages to system environment
 * datetime: Use timedatectl to read current timezone
 * samba: Make sure shares are not accessible from the internet
 * ttrss: Fix failing backup

== FreedomBox 23.5 (2023-02-27) ==

 * mediawiki: Fix app view error
 * locale: Update translations for Albanian, Bulgarian, Czech, Dutch, German, Spanish, Swedish, Turkish, Ukrainian
 * samba: tests: Fix enable share view test

== FreedomBox 23.4 (2023-02-13) ==

=== Highlights ===

 * ejabberd: Fix making call connections when using TURN
 * matrixsynapse: Disable verification to fix public registrations
 * snapshot: Fix issue with snapshot rollbacks

=== Other Changes ===

 * app: Add backup and restore menu items to toolbar menu
 * backups: Allow selecting a single app from URL when creating backup
 * config: Drop !RuntimeMaxUse=5% for journal logging
 * dynamicdns: Skip uninstall test
 * ejabberd: Add Monal and Siskin for iOS and remove !ChatSecure
 * email: Redirect to the app page if roundcube isn't installed
 * ikiwiki: Re-run setup for each site after restore
 * locale: Update translations for Bulgarian, Spanish
 * matrixsynapse: Minor refactor in getting/setting public registrations
 * matrixsynapse: Add python3-psycopg2 to packages
 * matrixsynapse: Use yaml.safe_load
 * searx: Add libjs-bootstrap to packages
 * snapshot: Fix mounting /.snapshots subvolume and use automounting
 * templates: Show better title for 404 page
 * uninstall: Fix spelling in warning message
 * vagrant: Drop unnecessary script that deletes sqlite file
 * vagrant: Hide the vagrant-script directory
 * vagrant: Mount source in /freedombox instead of /vagrant
 * vagrant: Switch to /freedombox before running service with alias

== FreedomBox 23.3 (2023-01-30) ==

 * config: Fix showing the value of the default home page
 * email: Revert workaround for error on finishing uninstall
 * firewalld: Allow upgrade to version 2*
 * gitweb: tests: Skip tests using git when git is not installed
 * locale: Update translations for Bulgarian
 * tests: functional: Fix submitting forms with notifications present
 * tor: Also use Aptsources822 augeas lens
 * tor: Remove workaround for old Augeas bug
 * upgrades: Add augeas lens for Deb822 apt sources
 * views: Use dedicated view when showing an app with operations

== FreedomBox 23.2 (2023-01-16) ==

 * locale: Update translations for Albanian, Bulgarian
 * ssh: Add sudo to allowed groups
 * upgrades: Stop quassel during dist upgrade

== FreedomBox 23.1 (2023-01-03) ==

=== Highlights ===

 * package: Don't uninstall packages that are in use by other apps
 * tor: Add onion location to apache

=== Other Changes ===

 * email: Workaround an issue with error on finishing uninstall
 * gitweb: Run git commands as a web user
 * janus: Allow upgrade to 1.1
 * locale: Update translations for Galician, Spanish
 * operation: tests: Fix warning when test helpers start with 'Test'
 * zoph: Add explicit dependency on default-mysql-server

== FreedomBox 22.27 (2022-12-19) ==

=== Highlights ===

 * minidlna: Fix incorrect marking for firewall local protection
 * zoph, wordpress: Add conflicts on libpam-tmpdir

=== Other Changes ===

 * container: Drop free tag from image URLs
 * d/control: Don't recommend libpam-tmpdir
 * locale: Update translations for Bulgarian, Chinese (Simplified), Czech, Dutch, German, Turkish, Ukrainian
 * package, email: Move conflicting package removal to framework
 * snapshot: Fix showing unsupported message on non-btrfs filesystems
 * tests: functional: Set timeout to 3 hours
 * upgrades: dist-upgrade: Don't change apt security line
 * users: tests: Fix privileged tests
 * wordpress: Redirect Webfinger queries

== FreedomBox 22.26 (2022-12-05) ==

=== Highlights ===

 * ejabberd: Enable mod_http_upload
 * security: Remove restricted access setting and configuration
 * ssh: Restrict logins to groups root, admin and freedombox-ssh

=== Other Changes ===

 * calibre: Add protection to local service using firewall
 * deluge: Add protection to local service using firewall
 * email: Add protection to local service using firewall
 * firewall: Create a mechanism for protecting local services
 * firewall: Introduce component for local service protection
 * i2p: Add protection to local service using firewall
 * i2p: Remove donation URL that is no longer available
 * minidlna: Add protection to local service using firewall
 * searx: Ensure that socket is only reachable by Apache and root
 * ssh: Add checkbox to remove login group restrictions
 * syncthing: Add protection to local service using firewall
 * transmission: Add protection to local service using firewall

== FreedomBox 22.25 (2022-11-21) ==

 * email: Add fail2ban jail for dovecot
 * email: Fix creation of aliases for security@ and usenet@

== FreedomBox 22.24 (2022-11-07) ==

=== Highlights ===

 * locale: Update translations for Bulgarian, French, German, Norwegian Bokmål

=== Other Changes ===

 * debian/lintian-overrides: Fix mismatch patterns and new messages
 * minetest: Handle upgrade from 5.3.0 to 5.6.1
 * storage: Drop skip_recommends
 * upgrades: Add documentation link to upgrades service file
 * upgrades: Update list of holds during dist upgrade

== FreedomBox 22.23 (2022-10-24) ==

=== Highlights ===

  * letsencrypt: Fix regression with comparing certificate
  * rssbridge: Add option to allow public access

=== Other Changes ===

  * locale: Update translations for Bulgarian, Hungarian, Swedish
  * storage: Handle file systems on non-physical devices
  * upgrades: Allow !FreedomBox vendor when adding backports
  * upgrades: Skip unattended-upgrade in dist-upgrade

== FreedomBox 22.22.1 (2022-10-16) ==

 * debian: tests: Fix PYTHONPATH
 * locale: Update translations for Bulgarian, Chinese (Simplified), Czech, Dutch, Turkish, Ukrainian
 * privacy: Remove unused import, fix pipeline

== FreedomBox 22.22 (2022-10-10) ==

=== Highlights ===

  * privacy: Add new system app for popularity-contest
  * matrix: Add fail2ban jail

=== Other Changes ===

  * *: Use privileged decorator for actions
  * action_utils: Drop support for non-systemd environments
  * action_utils: Drop unused progress requests from apt-get
  * actions: Allow actions to be called by other users
  * actions: Allow nested and top-level actions
  * actions: Drop unused superuser_run and related methods
  * actions: Implement getting raw output from the process
  * actions: Use separate IPC for communicating results
  * apache: Fix logs still going into /var/log files
  * bind: Drop enabling DNSSEC (deprecated) as it is always enabled
  * config: Drop ability to set hostname on systems without systemd
  * config: Drop legacy migration of Apache homepage settings
  * fail2ban: Make fail2ban log to journald
  * firewall: Drop showing running status
  * locale: Update translations for Albanian, Czech, Norwegian Bokmål, Russian, Swedish, Ukrainian
  * minidlna: Use the exposed URL for diagnostic test
  * openvpn: Drop RSA to ECC migration code and two-step setup
  * privacy: Set vendor as !FreedomBox for dpkg and popularity-contest
  * searx: Show status of public access irrespective of enabled state
  * templates: Update HTML meta tags for better description and app-name
  * tests: Add fixture to help in testing privileged actions
  * wordpress: Update fail2ban filter

== FreedomBox 22.21.1 (2022-10-01) ==

 * locale: Update translations for Bulgarian, Ukrainian
 * notification: Don't fail when formatting message strings

== FreedomBox 22.21 (2022-09-26) ==

 * janus: Enable systemd sandboxing
 * locale: Update translations for Albanian, Bulgarian, Czech, Danish, Dutch, French, German, Greek, Hungarian, Indonesian, Italian, Latvian, Lithuanian, Norwegian Bokmål, Persian, Polish, Portuguese, Russian, Serbian, Slovenian, Spanish, Swedish, Turkish, Ukrainian
 * mediawiki: Add powered by freedombox logo
 * wordpress: Add fail2ban filter and jail
 * wordpress: Disable readme.html, xmlrpc.php, wp-cron.php

== FreedomBox 22.20 (2022-09-12) ==

=== Highlights ===

 * matrixsynapse: Allow matrix-synapse >= 1.65 to install successfully

=== Other Changes ===

 * backups: Use generic form template for create and schedule views
 * backups: tests: functional: Find forms more accurately
 * bepasty: Use generic form template for add password view
 * bepasty: tests: functional: Minor refactor for form submission
 * calibre: tests: functional: Find forms more specifically
 * d/maintscript: remove tahoe and mldonkey apache conf files
 * debian: Add Italian debconf translation
 * ejabberd: tests: functional: Ensure jsxc is installed
 * firewall: Allow upgrade from any version to 1.2.*
 * first_boot: tests: functional: Find form more specifically
 * gitweb: Fix issue with page not refreshing during uninstall
 * gitweb: Use generic form template for create/edit repository
 * gitweb: tests: functional: Find forms more accurately
 * ikiwiki: tests: functional: Find forms more accurately
 * locale: Update translations for Chinese (Simplified), Czech, French, Italian, Turkish
 * samba: Ignore mounted files when listing mounts
 * samba: Update client apps information
 * shaarli: tests: functional: Specify setup form submission button
 * sharing: tests: functional: Find forms more accurately
 * snapshot: tests: functional: Minor refactoring for form submission
 * sso: tests: functional: Find forms more accurately
 * templates: form: Specify a form class for use with functional tests
 * tests: functional: Assert app is not installed after uninstallation
 * tests: functional: Force specifying form to submit more accurately
 * tests: functional: Wait for installation to complete fully
 * users: tests: functional: Find forms more accurately
 * version: Compare Debian package version numbers
 * wordpress: tests: functional: Find forms more specifically
 * zoph: tests: functional: Simplify finding the form to submit

== FreedomBox 22.19 (2022-08-29) ==

=== Highlights ===

 * jsxc: Allow disabling the app
 * app: Add a menu item to trigger uninstallation

=== Other Changes ===

 * app: Add API to uninstall an app
 * avahi: Don't disable after tests
 * backups: Use !AppView for the main app page
 * container: Display help message when no args are passed
 * container: Show default values in command help
 * d/control: Break ufw as we use firewalld
 * debian: Update Spanish translation template
 * diagnostics: Use !AppView for app page
 * ejabberd: Set hostname for test that relies on it
 * forms: Implement form for uninstallation
 * janus: Convert action to privileged
 * janus: Handle upgrades to 1.0.*
 * letsencrypt: Use !AppView for app page
 * locale: Update translations for Bulgarian, Chinese (Simplified), Czech, French, German, Spanish, Turkish, Ukrainian
 * names: Use !AppView for app page
 * networks: Use !AppView for app page
 * operation: Factor out template code into a separate file
 * operation: Show operations on app page in addition to setup page
 * package: Implement low-level methods for uninstalling
 * package: Implement uninstall in Package component
 * power: Use !AppView for app page
 * security: Use !AppView for app page
 * setup: Drop check for already running operation
 * setup: Implement operation to uninstall an app
 * snapshot: Use !AppView for app page
 * tests: Make functional.is_available check faster
 * tests: functional: Add install/uninstall test for all apps
 * tor: Use !AppView and Operation for app page
 * ttrss: Add donation url
 * upgrades: Add button to test dist-upgrade in development mode
 * upgrades: Hold janus during dist-upgrade
 * views: Implement a view to uninstall an app

== FreedomBox 22.18 (2022-08-15) ==

=== Highlights ===

 * networks: Remove DNSSEC diagnostics
 * setup: Allow starting installation when package manager is busy
 * setup: Fix issue with immediate refresh after installation

=== Other Changes ===

 * *: Add setup method on all apps that don't have it
 * *: Drop module level app property
 * *: Make force upgrading part of app rather than a module
 * *: Make setup method part of App class for all apps
 * app: Drop optimization that skips setup process
 * backups: tests: Mark need for Django database during API tests
 * container: Add !IdentitiesOnly option to SSH
 * container: Ignore flake8 error 'line too long' in bash script text
 * coturn: Fix link to ejabberd in description
 * doc: dev: Document previously undocumented components
 * ejabberd: Fix showing the status messages
 * locale: Update translations for Bulgarian, Czech, Dutch, French, German, Turkish, Ukrainian
 * matrixsynapse: Fix showing the status messages
 * notification: Pass full context when rendering body template
 * operation: Add module to manage threaded operations
 * package: Run installation operation using app_id instead of module
 * setup: Drop setup_helper and use the new Operation API
 * sharing: Add installing and enable/disable like other apps
 * sharing: tests: functional: Fix a flaky test by waiting
 * ssh: tests: functional: Keep service enabled after tests
 * storage: Fix enumerating partitions without mount points

== FreedomBox 22.17 (2022-08-01) ==

=== Highlights ===

 * help: Add "How can I help?" section to Contribute page

=== Other Changes ===

 * locale: Update translations for Chinese (Simplified), Dutch, French, German, Turkish
 * wordpress: Don't install php-ssh2

== FreedomBox 22.16 (2022-07-18) ==

=== Highlights ===

 * cockpit: Reconfigure to allow any origin
 * rssbridge: New app to generate RSS feeds for websites

=== Other Changes ===

 * apache: Also configure to serve on /freedombox
 * apache: Merge old configuration files into a better location
 * apache: Redirect all logs to systemd journal
 * cockpit: Depend on apache and setup after it
 * cockpit: Use decorator for privileged actions
 * config: Add option to set logging mode: none/volatile/persistent
 * config: Set volatile logging by default
 * debian: Follows policy version 4.6.1
 * debian: Update copyright year
 * gitweb: Switch default branch name to main for new repositories
 * janus: Change short description to "Video Room"
 * locale: Update translations for Bulgarian, Chinese (Simplified), French, Russian, Ukrainian
 * privoxy: Restrict to private IPs, prevent access over the internet
 * privoxy: Use privileged decorator for actions
 * roundcube: Add fail2ban jail
 * roundcube: Configure to log to journald
 * roundcube: Use privileged to simplify actions
 * rssbridge: Add functional tests
 * rssbridge: Fix flake8 errors
 * rssbridge: Whitelist all bridges by default

== FreedomBox 22.15 (2022-07-04) ==

=== Highlights ===

 * backups: Add options to keep sshfs shares responsive
 * backups: Unmount repositories before and after backup
 * users: create home directories for newly created users

=== Other Changes ===

 * *: pylint: Avoid calling super() with arguments
 * *: pylint: Don't inherit from 'object'
 * *: pylint: Drop unnecessary 'pass' statements
 * *: pylint: Explicitly specify encoding when open a file
 * *: pylint: Suppress unused argument warnings
 * ci: Use compatible versions of Selenium and Splinter
 * locale: Update translations for Bulgarian, Russian, Ukrainian
 * mediawiki: Add regex validator to the domain field
 * mediawiki: Remove Buster specific code not needed in Bullseye
 * mediawiki: Remove wgLogo as it is not needed in Bullseye
 * pyproject.toml: Ignore some refactoring messages with pylint
 * static: js: css: Make multiple select fields work with Django 4.0
 * tests: functional: Simplify GitLabCI configuration
 * upgrades: Hold packages one at a time
 * upgrades: Re-add workaround for grub
 * views: Add a comment about change in Django 4.0

== FreedomBox 22.14.1 (2022-06-27) ==

=== Highlights ===

 * matrixsynapse: Allow new dependency to be installed from backports

=== Other Changes ===

 * locale: Update translations for Bulgarian, Chinese (Simplified), Czech, Dutch, German, Turkish
 * actions: Note that privileged actions can't output to stdout
 * mumble: Backup/restore the configuration file
 * mumble: Don't set the root channel name unless it is changed
 * mumble: Use privileged decorator for superuser actions
 * mumble: tests: Add functional tests for setting the passwords

== FreedomBox 22.14 (2022-06-20) ==

=== Highlights ===

 * ejabberd: Allow domains to be added or removed
 * mumble: Allow setting a password that is required to join the server
 * mediawiki: Add option to change the site name

=== Other Changes ===

 * actions: Add a decorator for marking superuser actions
 * doc: dev: Use and recommend new privileged actions
 * ejabberd: Automatically use coturn
 * janus: Improve description about coturn
 * locale: Update translations for Bulgarian, Chinese (Simplified), Czech, Dutch, French, German, Russian, Turkish
 * tests: Add a dummy parameter for middlewares for Django 4.0
 * translation: Don't use session for storing lang pref in Django 4.0
 * transmission: Simplify actions using the privileged decorator
 * users: Fix deleting user LDAP entry with Django 4.0

== FreedomBox 22.13 (2022-06-06) ==

=== Highlights ===

 * email: Make app available for all users (even without advanced flag)
 * janus: Add new app for lightweight WebRTC server
 * wordpress: Allow installing/updating plugins and themes

=== Other Changes ===

 * email: Add description about ISP and domain limitations
 * locale: Added Latvian translation
 * locale: Update translation for Bulgarian, Chinese (Simplified), Czech, Dutch, German, Russian, Swedish, Turkish
 * mumble: Allow changing root channel name
 * tests: functional: Add jobs for bullseye-backports
 * tests: functional: Integrate into Salsa CI
 * transmission: Add redirects to avoid 409 conflict
 * wordpress: tests: Continue past language selection screen
 * wordpress: tests: Fix writing title for new post in newer versions

== FreedomBox 22.12 (2022-05-23) ==

=== Highlights ===

  * *: Show Learn More... links in frontpage with description
  * mediawiki: Serve hidden service over http for .onion domains

=== Other Changes ===

  * apache: Allow URL diagnostics to work with redirects
  * firewall: Show service name in port forwarding info table
  * frontpage: Allow showing links to manual pages
  * frontpage: Reuse app header template for showing app description
  * locale: Update translations for Bulgarian, Chinese (Simplified), Czech, Dutch, French, German, Norwegian Bokmål, Turkish
  * mediawiki: Add stricter sandbox rules for jobrunner service
  * mediawiki: Fix URL diagnostics with redirects involved
  * ssh, bind: Show 'Learn More...' links
  * tor: Show port forwarding information in consistent way
  * tt-rss: Fix description about user access

== FreedomBox 22.11 (2022-05-09) ==

=== Highlights ===

 * email: Fix userdb lookups with LDAP
 * matrixsynapse: Allow new dependencies to be installed from backports

=== Other Changes ===

 * HACKING: Improve documentation on how to run tests
 * container: Show executed commands when setting up/running tests
 * locale: Update translations for Bulgarian, Danish, French, Hungarian, Norwegian Bokmål, Polish, Russian, Ukrainian
 * mediawiki: Check if admin password is at least 10 characters long
 * mediawiki: Handle password rejection from !MediaWiki
 * samba: Fix functional tests when user is not logged in at start
 * tests: functional: Get rid of dependency on xvfb
 * transmission: Improve description

== FreedomBox 22.10 (2022-04-25) ==

 * locale: Update translations for Bulgarian, Czech, Dutch, German, Greek, Russian, Swedish, Turkish
 * sharing: Allow spaces in path strings

== FreedomBox 22.9 (2022-04-11) ==

=== Highlights ===

 * minetest: Allow alternate name for 3d armor mod
 * upgrades: Use python3-typing-extensions from bullseye-backports

=== Other Changes ===

 * calibre: Fix description of allowable library names
 * locale: Add new Arabic translation
 * locale: Update translations for Arabic, Bulgarian, Czech, Dutch, French, German, Hungarian, Turkish
 * plinth: Add forum link to footer

== FreedomBox 22.8 (2022-03-28) ==

=== Highlights ===

 * network: Fix showing wifi connection

=== Other Changes ===

 * calibre: explain correct name format for new library
 * ikiwiki: add packages that are necessary
 * locale: Updated translations for Chinese (Simplified), French, Russian
 * upgrades: Allow backports from src:freedombox

== FreedomBox 22.7 (2022-03-14) ==

 * locale: Update translations for French, Hungarian, Spanish

== FreedomBox 22.6.1 (2022-03-06) ==

 * locale: Update translations for Bulgarian, Chinese (Simplified), Czech, Dutch, German, Turkish

== FreedomBox 22.6 (2022-03-02) ==

=== Highlights ===

 * email: Enable as an advanced app

=== Other Changes ===

 * dynamicdns: Fix adding null domain into configuration
 * email: Add backup/restore component
 * email: Add basic functional tests
 * email: Add front page shortcut, update name and description
 * email: Add more special-use IMAP folders, set autoexpunge to 60days
 * email: Add shortcut for non-admin users to manage their aliases
 * email: Add various documentation links for future readability
 * email: Allow re-running setup
 * email: Backup/restore aliases and mailboxes
 * email: Depend on and run redis server
 * email: Implement adding common aliases for first admin user
 * email: List all listening ports of the daemons
 * email: Narrowly match just rspamd's spam header
 * email: Open firewall port for managesieve protocol
 * email: Revert to LDAP auth as pam does not allow non-admin users
 * email: Set an icon from Tango project
 * email: Setup rspamd configuration to include !FreedomBox config
 * email: Tweak client auto-configuration file
 * email: Update donation URL to rspamd donation URL
 * email: aliases: Drop ability to enable/disable aliases
 * email: clients: Make Thunderbird URLs language independent
 * email: dkim: Implement setting up DKIM signing keys
 * email: dns: Show table for desired DNS entries
 * email: postfix: Fix priority for authentication directives
 * email: postfix: use inline map for TLS SNI maps
 * email: rspamd: Log to journald via syslog
 * email: rspamd: Simplify installing configuration
 * locale: Update translations for Bulgarian, Chinese (Simplified), Czech, Dutch, German, Hungarian, Russian, Swedish, Telugu, Turkish, Ukrainian
 * minidlna: add iOS VLC client
 * samba: add iOS VLC client

== FreedomBox 22.5 (2022-02-14) ==

=== Highlights ===

 * dynamicdns: Replace ez-ipupdate
   * Drop NAT detection as it is no longer used
   * Drop about page and merge into description
   * Drop tabs and use single page
   * Rewrite configuration handling and update using URL

=== Other Changes ===

 * app: Add component to store enabled state of an app in kvstore
 * backups: Implement backup/restore of key/value settings
 * locale: Update translations for Albanian, Bulgarian, Chinese (Simplified), Czech, Dutch, German, Hungarian, Russian, Spanish, Swedish, Turkish, Ukrainian
 * minetest: Reduce the number of configuration update messages
 * tests: functional: Add plugin for HTML reports
 * tt-rss: Restrict access to `feed-reader` group in "/tt-rss-app"
 * users: Fix typo in description

== FreedomBox 22.4 (2022-01-31) ==

=== Highlights ===

 * coturn: Use wildcard listening address to fix startup issues
 * sso, users: Redirect to home page after logout

=== Other Changes ===

 * apache: Don't redirect to HTTPS for .onion domains
 * apache: Don't set HSTS for .onion domain
 * cockpit: Explicitly redirect to HTTPS as needed for !WebSockets
 * doc: Fail when downloading images from Debian wiki fails
 * email_server: Drop showing diagnostics/repair and roundcube config
 * email_server: Drop some unused code
 * locale: Update translations for Bulgarian, Dutch, French, German, Hungarian, Russian, Swedish, Ukrainian
 * matrixsynapse: Add !FluffyChat to client list
 * mldonkey: Drop app not available in Debian Bullseye and Bookworm
 * power: Add a link to power app in the system menu
 * roundcube: Add setting for local connection only
 * shaarli: Add android app to description
 * shaarli: Add backup component
 * shaarli: Add functional tests
 * snapshots: Clarify that snapshots are take during updates too
 * tests: functional: Implement a workaround for issue with screenshots
 * users: Clarify help message for authorization password
 * wireguard: tests: Add functional tests

== FreedomBox 22.3 (2022-01-17) ==

=== Highlights ===

 * upgrades: Allow matrix's new dependency to be installed
 * sso: Adjust URL to CAPTCHA page needed by Django security fix

=== Other Changes ===

 * container: Avoid a warning that interactive mode is intended
 * help: tests: Fix functional test to check for status logs
 * locale: Update translations for Chinese (Simplified), Czech, Dutch, German, Hungarian, Turkish
 * sso: Add missing captcha/rate limiting on SSO login
 * tests: functional: Fix setting domain name with active notifications
 * tt-rss: Allow published articles to be publicly available

== FreedomBox 22.2 (2022-01-11) ==

=== Highlights ===

 * debian, setup.py: Add dependency on python3-tomli
 * help: Fix failing setup when manual directory is not available

=== Other Changes ===

 * backups: Correct spelling of encryption protocols
 * i2p: Fix grammar in description
 * ikiwiki: Initialize shortcuts during post-init setup
 * locale: Update translations for Chinese (Simplified), Czech, Dutch, German, Hungarian, Italian, Swedish, Turkish
 * mumble: Change description to include iOS client app
 * networks: Fix reference to an option
 * openvpn: Add link to IOS app
 * radicale: Update Thunderbird URLs
 * transmission: Fix capitalization
 * wireguard: Fix spelling

== FreedomBox 22.1 (2022-01-03) ==

=== Highlights ===

 * package: Add diagnostic to check if a package is the latest version

=== Other Changes ===

 * backups: Capitalize 'SSH' in template
 * config, upgrades: Specify submit button for tests
 * datetime: Explicitly list systemd-timesyncd as a dependency
 * locale: Update translations for Chinese (Traditional), Czech, Dutch, Hungarian, Norwegian Bokmål, Spanish, Swedish
 * storage: Skip tests if not enough disk space is available
 * upgrades: Relabel from 'Update' to 'Software Update'

== FreedomBox 21.16 (2021-12-20) ==

=== Highlights ===

 * datetime: Fix checking when timesyncd will run on a system

=== Other Changes ===

 * cockpit, ejabberd: Make 'name' optional in Signal handlers
 * diaspora: Drop app that was never finished
 * email_server:
   * Adjust TLS configuration parameters
   * Fix issue with handling domain removal
   * Include postfix package in packages list
   * Re-implement TLS configuration
   * Rename dovecot TLS configuration file for consistency
 * letsencrypt: Handle cert setup when an app wants all domains
 * locale: Update translations for Chinese (Simplified), Chinese (Traditional), Czech, French, German, Swedish, Turkish
 * monkeysphere, tahoe-lafs: Drop unused apps
 * roundcube: Allow upgrades by avoiding configuration file change
 * tests: Fix app name in pytest.skip statement
 * tests: functional: Skip MLDonkey app
 * upgrades: Cleanup dist upgrade steps specific to bullseye release
 * upgrades: Refactor dist upgrade process

== FreedomBox 21.15 (2021-12-06) ==

=== Highlights ===

 * dynamicdns: Update URLs to the new dynamic DNS server
 * firewall: Allow configuration upgrade to version 1.0.x
 * shaarli: Enable app (only available in testing and unstable)

=== Other Changes ===

 * *: Drop module level depends declaration
 * *: Drop module level package_conflicts and use component API
 * *: Drop unused manual_page at module level
 * *: Drop use of managed_packages and rely on Packages component
 * *: Drop use of managed_services, rely on Daemon component
 * *: Drop use of module level is_essential flag
 * *: Drop use of module level version
 * *: Drop use of unnecessary managed_paths
 * *: Use the App's state management API
 * actions/letsencrypt: Drop use of managed_paths and use LE component
 * actions/service: Drop unused list action
 * actions/service: Drop use of managed_services for Daemon component
 * actions: Get list of packages from Packages components
 * app: Introduce API for managing setup state of the app
 * app: Introduce API to setup an app
 * bind: Drop alias handling unnecessary in >= Bullseye
 * daemon: Add new component to hold information about related daemons
 * doc/dev: Drop discussion on managed_paths
 * doc/dev: Drop reference to module level depends declaration
 * doc/dev: Remove mention of managed_services
 * doc/dev: Remove outdated reference to init() at module level
 * doc/dev: Update documentation to not refer to managed_packages
 * email_server: Merge domain configuration with app view
 * email_server: Simplify domain configuration form
 * first_boot: Drop use of loaded_modules and use App.list
 * forms: Fix regression with TLS domain form in quassel and tt-rss
 * letsencrypt: On domain removal, don't revoke certificate, keep it
 * locale: Update translations for Czech, German, Norwegian Bokmål
 * main: List apps instead of modules
 * middleware, views: Reduce use of setup_helper
 * module_loader, app: Move app init to app module
 * package: Add parameter to specify skipping package recommendations
 * package: Implement installing packages in the component
 * package: Introduce component API for package conflicts
 * packages: Move checking for unavailable packages to component
 * security: Drop use of loaded_modules and use App.list
 * security: Drop use of managed_services in security report
 * security: Get the list of packages from Packages component
 * setup: Drop unused API for app's state management
 * setup: List dependencies for apps instead of modules
 * setup: Run setup on apps instead of modules
 * setup: Use apps instead of modules to determine running first setup
 * setup: Work on apps instead of modules for force upgrade
 * tests: Add 'domain' mark for apps that add/remove domains
 * web_server: Drop use of loaded_modules and use App.list

== FreedomBox 21.14.1 (2021-11-24) ==

 * config: Add packages component to a re-add zram-tools dependency

== FreedomBox 21.14 (2021-11-22) ==

=== Highlights ===

 * tt-rss: Allow selection of a domain name

=== Other Changes ===

 * *: Split app initialization from app construction
 * app: Introduce separate method for post initialization operations
 * datetime: Avoid error when systemctl is not available
 * debian: Fail build if no module dependencies found
 * locale: Update translations for Swedish, Turkish, Ukrainian
 * main: Drop initializing Django when listing dependencies

== FreedomBox 21.13 (2021-11-08) ==

=== Highlights ===

 * avahi, samba: Use systemd sandboxing
 * components: Introduce new component - Packages
 * security: Properly handle sandbox analysis of timer units

=== Other Changes ===

 * email_server (not enabled yet):
   * Add buttons for managing aliases, domains, spam
   * Authenticate using PAM instead of LDAP
   * Delivery mail to /var/mail instead of home directory
   * Don't use user IDs when performing lookups
   * Drop hash DB and use sqlite3 directly
   * Use Django forms and views
 * locale: Update translations for German, Swedish, Turkish, Ukrainian
 * tests: Use !BaseAppTests for functional tests of most apps
 * utils: Fix ruamel.yaml deprecation warnings

== FreedomBox 21.12 (2021-10-25) ==

 * locale: Update translations for Bulgarian, Czech, French, German, Turkish, Ukrainian
 * middleware: Don't show setup view to non-admin users
 * performance: Add backup support (no data)
 * storage: Pass optional mount point to partition expansion
 * storage: tests: Fix tests for expanding disk partitions
 * tests: Add !BaseAppTests class for common functional tests

== FreedomBox 21.11 (2021-10-11) ==

=== Highlights ===

 * ttrss: Fix daemon not running sometimes on startup

=== Other Changes ===

 * *: Always pass check= argument to subprocess.run()
 * *: Convert all functional tests to python format
 * *: Move all systemd service files from /lib to /usr
 * calibre: Run service only if when installed
 * d/control: Allow building with python interpreter of any arch
 * d/rules: Don't install and enable other systemd service files
 * d/rules: Don't use setup.py to invoke tests, invoke directly instead
 * email: Manage known installation conflicts
 * locale: Update translation for Bulgarian, Ukrainian
 * package: Add functions for removing packages
 * performance: Cleanup code meant for cockpit version < 235
 * pyproject.toml: Merge contents of .converagerc
 * pyproject.toml: Merge contents of pytest.ini
 * settings: Choose password hashing complexity suitable for SBCs
 * setup: Show and remove conflicts before installation
 * sso, translation: Help set language cookie when user logins in
 * storage: tests: functional: Fix tests always getting skipped
 * tests: Add some missed marks for functional tests
 * tests: Add tests for action utilities
 * tests: Improve handling of tests skipped by default
 * tests: help: Add help view tests
 * translation: Always set language cookie when switching language
 * ttrss: Add systemd security hardening to daemon
 * ttrss: tests: functional: Make subscription faster
 * user: Accommodate Django 3.1 change for model choice iteration
 * users: Help set language cookie when user profile is edited
 * wordpress: Run service only if when installed and configured

== FreedomBox 21.10 (2021-09-27) ==

=== Highlights ===

 * locale: Update translations for German, Italian, Swedish, Turkish, Ukrainian

=== Other Changes ===

 * Use Django gettext functions instead of ugettext
 * Use allow/denylist instead white/blacklist in comments
 * Use django.urls.re_path() instead of its alias url()
 * Various isort fixes
 * pyproject: Make isort consistent across execution environments
 * settings: Set Django auto field type explicitly
 * signals: Drop provider args when creating Signal object
 * sso: Update usage of OpenSSL crypt signing API
 * tests: Convert functional tests to python format
 * tests: Introduce fixtures to make it easy to test actions
 * tests: Show warning when app not available
 * tests: Use common fixtures for testing actions module
 * tests: Use newer splinter API for finding links
 * views: Update utility for checking URL safety

== FreedomBox 21.9 (2021-09-18) ==

=== Highlights ===

 * mediawiki: Backup and restore uploaded files
 * mediawiki: Enable a subset of default extensions

=== Other Changes ===

 * apache: Update security settings
   * Drop support for GnuTLS
   * Drop support for SSLv3, TLSv1 and TLSv1.1
   * Enable and prioritize HTTP/2 protocol
   * Setup Mozilla recommended configuration
 * locale: Update translations for Bulgarian, Chinese (Simplified), Dutch, Persian, Russian, Swedish, Turkish, Ukrainian
 * mediawiki: Handle upgrade for 1.35
 * mediawiki: Switch to !MediaWiki 2020 logo
 * plinth: remove diagnose command
 * Add workaround for Django 3.2 with captcha 0.5.6

== FreedomBox 21.8 (2021-08-30) ==

=== Highlights ===

 * wordpress: New app to manage a !WordPress site/blog

=== Other Changes ===

 * d/control: Drop wireless-tools as recommends
 * email: Basic app to manage an email server
   - Email server app is currently disabled by default, so it is not yet visible in the interface.
 * locale: Update translations for Norwegian Bokmål, Ukrainian
 * security: Remove display of past vulnerabilities

== FreedomBox 21.7 (2021-08-16) ==

=== Highlights ===

 * ttrss: Allow upgrade to version 21

=== Other Changes ===

 * locale: Update translations for Albanian, Bengali, Chinese (Simplified), German, Indonesian, Norwegian Bokmål, Ukrainian, Vietnamese
 * action_utils: Use flag to indicate freedombox package has been held
 * debian: Ensure fuse gets replaced by fuse3

== FreedomBox 21.6 (2021-05-31) ==

=== Highlights ===

 * locale: Add Sinhala language
 * locale: Add Vietnamese language
 * backups: Change submit button to fix translation issues

=== Other Changes ===

 * locale: Update translations for Chinese (Simplified), Chinese (Traditional), Dutch, French, German,  Hungarian, Indonesian, Japanese, Portuguese, Sinhala, Swedish, Telugu, Turkish, Vietnamese

== FreedomBox 21.5 (2021-04-19) ==

=== Highlights ===

 * ejabberd: Add STUN/TURN configuration
 * locale: Add Albanian language

=== Other Changes ===

 * Update copyright year
 * action_utils: Introduce utility for masking services
 * ci: Merge with Salsa CI pipeline
 * config, dynamicdns, pagekite: Remove incorrect use of str
 * config: Convert entered domain name to lower case
 * config: Disable rsyslog and syslog forwarding
 * config: Fix tests related to user home directory
 * config: Install and configure zram for swap
 * container script: Must convert env. var. string to a Path object
 * container: Work in the absence of systemd in PATH
 * container: distribution as environment variable
 * coturn: Mention ejabberd in app description
 * coturn: Validate TURN URIs if provided in form
 * debian: Add coverage to autopkgtest
 * deluge, mldonkey, syncthing, transmission: Depend on nslcd.service
 * deluge: Fix daemon user not in freedombox-share group after installation
 * diagnostics: Use lock to protect results
 * docs: Add filename to code snippets in tutorial
 * docs: Add missing imports in tutorial
 * docs: Add some troubleshooting information
 * docs: Generate developer documentation
 * docs: Improve Developer Documentation index page
 * docs: Set the `version` attribute as required instead of optional
 * dynamicdns: Convert entered domain name to lower case
 * dynamicdns: Wait after changing domain name in tests
 * first_boot: Use session to verify first boot welcome step
 * letsencrypt: Always return a diagnostics result
 * locale: Update translations for Albanian, Chinese (Simplified), Dutch, German, Greek, Indonesian, Polish, Spanish, Swedish, Turkish
 * pagekite: Convert entered kite name to lower case
 * security: Clarify vulnerability count and provide link to more info
 * security: Ensure that fail2ban is not re-enabled on version increment
 * security: Increment app version to reload fail2ban
 * security: Move fail2ban default configuration to this app
 * ssh, apache: Make fail2ban use systemd journald backend by default
 * users: Fix unit test failures when LDAP is empty

== FreedomBox 21.4.2 (2021-03-28) ==

=== Highlights ===

 * firstboot: Use session to verify first boot welcome step

=== Other Changes ===

 * locale: Update translations for German, Greek, Indonesian, Turkish
 * manual: Update Contributing and Matrix Synapse pages

== FreedomBox 21.4.1 (2021-03-13) ==

=== Highlights ===

 * deluge, mldonkey, syncthing, transmission: Ensure nslcd is running before the service is started
 * deluge: Fix daemon user not in freedombox-share group after installation

=== Other Changes ===

 * config: Fix tests related to user home directory
 * locale: Update translations for Dutch, German, Greek, Polish, Spanish, Swedish, Turkish

== FreedomBox 21.4 (2021-02-28) ==

=== Highlights ===

 * matrix-synapse: Auto configure STUN/TURN using coturn server

=== Other Changes ===

 * coturn: Add new component for usage of coturn by other apps
 * coturn: Minor refactor view to use utility to generate URIs
 * coturn: Remove advanced flag, make app visible to all
 * locale: Update translations for Dutch, French, German, Hungarian, Italian, Lithuanian, Norwegian Bokmål, Swedish, Turkish
 * matrix-synapse: Update description to talk about TURN configuration
 * plinth: Disable start rate limiting for service
 * ui: Fix buttons jumping on click in snapshots page
 * upgrades: Disable searx during dist-upgrade

== FreedomBox 21.3 (2021-02-11) ==

=== Highlights ===

 * zoph: Add new app to organize photos
   * Only available in Debian testing (bullseye) due to issues in buster.

=== Other Changes ===

 * locale: Update translations for Dutch, Greek, Spanish, Swedish, Turkish
 * sharing: Improve shares group access description
 * upgrades: Add 10 minute delay before apt update
 * upgrades: Disable apt snapshots during dist upgrade
 * upgrades: Only check free space bytes before dist upgrade

== FreedomBox 21.2 (2021-02-05) ==

=== Highlights ===

 * calibre: Fix freedombox.local inaccessible after enabling app
 * matrix-synapse: Install python3-psycopg2 from backports

=== Other Changes ===

 * backups: schedule: tests: Fix failures due to long test run
 * jsxc: Fix issues with jQuery >= 3.5.0
 * locale: Update translations for Bengali, Dutch, French, German, Hungarian, Italian, Polish, Russian, Spanish, Swedish, Turkish
 * mediawiki: Fix app installation process doesn't display status information
 * mediawiki: Set default logo to mediawiki.png
 * minidlna: Implement force upgrading from older version
 * minidlna: Minor refactor of media directory handling
 * plinth: Show running spinner when app installation is in progress
 * radicale: Allow older 2.x release to upgrade to 3.x
 * roundcube: Allow upgrade to 1.4.*
 * tests: Update functional tests default config
 * upgrades: Add notifications for dist upgrade
 * upgrades: Increment version for !MatrixSynapse 1.26

== FreedomBox 21.1 (2021-01-25) ==

=== Highlights ===

 * backups: Add scheduled backups for each location

=== Other Changes ===

 * container script: Various improvements
 * locale: Update translations for Bulgarian, Chinese (Simplified), Chinese (Traditional), Czech, Danish, Dutch, French, Galician, German, Greek, Gujarati, Hindi, Hungarian, Italian, Lithuanian, Norwegian Bokmål, Persian, Polish, Portuguese, Russian, Serbian, Slovenian, Spanish, Swedish, Turkish, Ukrainian
 * networks: Change connection type to a radio button
 * networks: Hide deactivate/remove buttons for primary connections
 * networks: Prevent unintended changes to primary connection.
 * networks: Separate the delete button and color it differently
 * networks: Use radio buttons for network modes
 * performance: Fix web client link to Cockpit
 * plinth: Fix disable daemon when service alias is provided
 * setup: Enable essential apps that use firewall
 * syncthing: Create LDAP group name different from system group
 * syncthing: Hide unnecessary security warning
 * tahoe: Disable app
 * ui: New style for select all checkbox
 * upgrades: Require at least 5 GB free space for dist upgrade

== FreedomBox 21.0 (2021-01-11) ==

=== Highlights ===

 * apache2: Allow downloads in openvpn and backups with latest browsers

=== Other Changes ===

 * locale: Update translations for Dutch, French, German, Hungarian, Polish, Spanish, Swedish, Turkish
 * app: Add locked flag
 * app: component: Add app_id and app properties
 * app: info: Move client validation to info component
 * backups: Add new component for backup and restore
 * backups: Don't open a new window for downloading backups
 * dev-container: 'up' command: Show banner also when container is already running
 * dev-container: Add command to print container IP address
 * dev-container: Add subcommand to run tests
 * doc: dev: Update the tutorial to reflect latest API/code
 * ejabberd: functional tests: Wait until the jsxc buddy list is loaded
 * functional tests: Make tests compatible with pytest-bdd v4.0
 * functional-tests: Fix installation errors in install.sh script
 * gitweb: Add functional tests for git-access group
 * gitweb: tests: functional: Fix test failures in localized environment
 * mumble: Updated mumla and removed plumble from clients list
 * openvpn: Don't show running status on download profile button
 * plinth: Fix daemon is enabled check when service alias is provided
 * radicale: Fix backup and restore of configuration
 * tests: functional: Improve creating users in tests
 * transmission: Show port forwarding information
 * transmission: Update description
 * upgrades: Add service for dist upgrade
 * upgrades: Ensure freedombox package is upgraded during dist upgrade
 * upgrades: Hold tt-rss during dist upgrade, if available
 * upgrades: Install python3-systemd for unattended-upgrades
 * upgrades: Restart !FreedomBox service at end of dist-upgrade
 * upgrades: Use full path to searx action script
 * users: Skip action script tests if LDAP is not set up

== FreedomBox 20.21 (2020-12-28) ==

=== Highlights ===

 * apache: Create snake oil certificate if not exists
   * Fixes an issue when installing !FreedomBox on Hetzner Cloud's Debian image
 * calibre: Fix link to manual page

=== Other Changes ===

 * deluge: Require user to be in bit-torrent group to access
 * locale: Update translations for German, Hungarian, Polish, Russian, Spanish, Swedish
 * security: Fix access denied for user daemon from cron
 * upgrades: Allow grub-pc upgrade without reinstalling grub
 * upgrades: Update searx search engines during dist upgrade
 * users: Remove timeout when creating Samba user

== FreedomBox 20.20.1 (2020-12-19) ==

=== Highlights ===

 * config: Skip homepage test on buildd
 * ui: Migrate from bootstrap 3 to bootstrap 4

=== Other Changes ===

 * apache: Disallow all inline styling in sandbox settings
 * gitweb: Make functional tests compatible with pytest-bdd v4.0
 * javascript: Fix disabled submit buttons when navigating back to a page
 * locale: Update translations for Dutch, German, Turkish
 * ui: Adopt a consistent and new table style

== FreedomBox 20.20 (2020-12-14) ==

=== Highlights ===

 * config: Add user websites as choices for homepage config
 * templates: Make toggle button responsive

=== Other Changes ===

 * apache: Add app name for diagnostics
 * diagnostics: Improve exception handling in app diagnostics
 * diagnostics: Show app name and fallback to app id if not exist
 * locale: Update translations for Dutch, French, German, Portuguese, Spanish, Swedish, Turkish
 * mumble: Implement force upgrade for 1.3.*
 * snapshot: Check that / is a btrfs subvolume before setup
 * upgrades: Hold mumble-server during dist upgrade

== FreedomBox 20.19 (2020-11-30) ==

=== Highlights ===

  * openvpn: Create user group "vpn"
  * upgrades: Add first boot step to run initial update

=== Other Changes ===

  * bepasty: Apply translation to autogenerated comments
  * locale: Update translations for Bengali, Dutch, German, Spanish
  * networks: Apply translation to a tooltip
  * samba: Show toggle buttons and share names
  * snapshots: Translate snapshot types (field description)
  * upgrades: Fix sources list for dist upgrade from buster
  * upgrades: Hold freedombox package during dist upgrade

== FreedomBox 20.18.1 (2020-11-23) ==

 * locale: Update translations for Dutch, French, German, Italian, Norwegian Bokmål, Spanish, Swedish, Turkish
 * sso: Fix regression in auth-pubtkt configuration

== FreedomBox 20.18 (2020-11-16) ==

=== Highlights ===

 * openvpn: Support Elliptic Curve Cryptography (ECC)
   * If you are already using OpenVPN, you can migrate to ECC to improve speed and security. Visit the OpenVPN page in the !FreedomBox interface to perform the one-time migration, and to re-download the client profiles.

=== Other Changes ===

 * dynamicdns: Handle IPv6
 * locale: Update translations for Dutch, French, German, Italian, Spanish
 * openvpn: Cleanup easyrsa 2 to 3 upgrade code
 * openvpn: Remove explicit setup step

== FreedomBox 20.17.1 (2020-11-07) ==

 * ci: Fix flake8 errors
 * debian: Rename source package to freedombox
 * locale: Update translations for German, Italian, Turkish
 * pubtkt: Fix Python format language errors

== FreedomBox 20.17 (2020-11-02) ==

=== Highlights ===

 * locale: Add Chinese (Traditional) translation
 * mediawiki: Add action to set domain name
 * upgrades: Add a setting to enable dist upgrade

=== Other Changes ===

 * apache: setup uwsgi by default
 * backups: i18n: Mark form success messages for translation
 * locale: Update translations for Danish, French, German, Italian, Norwegian Bokmål, Polish, Russian, Spanish, Swedish, Telugu, Turkish
 * mediawiki: Ensure password file is not empty
 * networks: css: Make button wider in network list
 * networks: i18n: Mark string for translation on delete page
 * networks: i18n: Mark various strings for translation
 * notifications: i18n: Mark app names and extra data for translation
 * package: i18n: Mark progress status strings for translation
 * upgrades: Disable the option when not able to dist upgrade

== FreedomBox 20.16 (2020-10-19) ==

=== Highlights ===

 * app: Add donation buttons on app pages
 * updates: Eliminate delay and better status for manual upgrade

=== Other Changes ===

 * calibre: Update group description to reflect 'using' app
 * diagnostics: Lazy format all diagnostic test strings properly
 * diagnostics: Show low system memory notifications
 * help: Link to updates page when new version is available
 * locale: Update translations for Chinese (Simplified), French, Greek, Norwegian Bokmål, Russian, Slovenian, Spanish, Swedish, Turkish
 * notifications: Show severity level on every notification
 * upgrades: Add status section showing version and upgrade status

== FreedomBox 20.15 (2020-10-05) ==

=== Highlights ===

 * calibre: Add new e-book library app
 * mumble: configure letsencrypt component
 * upgrades: Detect and upgrade to next stable release

=== Other Changes ===

 * bepasty: Change default permissions to 'read'
 * container: Assign virtual network interface to trusted firewall zone
 * container: Handle edge cases with container update
 * coturn: Don't handle certificates if not installed
 * debian/control: Add sshpass as build dependency
 * doc: Before fetching, drop all old to cleanup deleted pages/images
 * doc: dev: Link to list of potential apps from tutorial
 * dynamicdns: Drop unnecessary code to set app as enabled
 * locale: Update translations for French, Norwegian Bokmål, Portuguese, Spanish, Swedish, Turkish
 * module_loader, web_framework: Update console log messages
 * mumble: Store and use a single domain for TLS certificate setup
 * pagekite: Don't announce unconfigured kite as a valid domain
 * pagekite: Don't update names module if not installed
 * quassel: Don't handle certificates if not installed
 * ssh: action script: Require user credentials when editing ssh keys
 * tests: functional: Simplify calling the login helper
 * tor: Don't check if enabled when not installed
 * upgrades: Check free space before dist-upgrade
 * upgrades: Extend function to check for normal dist availability
 * upgrades: Set a flag so interrupted dist-upgrade can be continued
 * users: Deal with admin user already existing during first boot
 * users: Require admin credentials when creating or editing a user

== FreedomBox 20.14.1 (2020-09-23) ==

 * cockpit: Don't show home page icon to non-admin users
 * locale: Update translations for French, German, Norwegian Bokmål, Russian, Turkish
 * minidlna: Fix typo DNLA -> DLNA
 * module_loader: Load/process all essential modules before others

== FreedomBox 20.14 (2020-09-15) ==

=== Highlights ===

 * apache: Disable mod_status (CVE-2020-25073)
 * bepasty: New app for file upload and sharing
 * matrixsynapse: Allow upgrade to version 1.19

=== Other Changes ===

 * apps: Remove Coquelicot
 * backups: Make app available by default
 * debian: Add newline to end of /var/lib/plinth/firstboot-wizard-secret
 * debian: Don't show first wizard secret on command line
 * debian: Temporarily revert source package rename
 * diagnostics: Prevent showing running status on diagnostics menu item
 * doc: Add moinmoin wiki parser
 * doc: Fix wiki links in manual
 * ejabberd, mumble, wireguard: Update Apple app links
 * ejabberd: Use new ruamel.yaml API and allow duplicate keys
 * firewall: Show port forwarding info contextually
 * firewall: Show port forwarding info in tabular format
 * gitweb: Add ability to change default branch
 * gitweb: Fix enable auth webserver component on app init
 * help, networks: Clarify i18n different contexts for "Manual"
 * i18n: Mark strings missed for translation
 * ikiwiki: Validate a path when deleting wiki or blog
 * js: Don't show running status on buttons pulled to right
 * jsxc, sharing, wireguard: Add 'Learn more...' link for help pages
 * locale: Update translations for Danish, Dutch, Galician, German, Hungarian, Italian, Spanish, Swedish, Russian, Turkish
 * matrixsynapse: Perform a one time conversion to new config format
 * matrixsynapse: Rename Riot to Element
 * matrixsynapse: Use conf.d snippets
 * radicale: Remove code to handle 1.x
 * radicale: Stop service during backup and restore
 * samba: Hide common system partitions
 * snapshots: Clarify description for disabling yearly snapshots
 * ssh: Disallow managing keys for the root user
 * storage: Fix expanding partitions on GPT partition tables
 * upgrades, security: Update the messages describing backports
 * upgrades: Add first boot step to configure backports
 * upgrades: Change backports activation message wording
 * upgrades: Display correct backports info for unstable
 * upgrades: security: Don't use technical term 'backports' in UI
 * wireguard: Remove hardcoded Windows client version

== FreedomBox 20.13 (2020-07-18) ==

=== Highlights ===

 * upgrades: Update apt cache before manual update
 * minidlna: Do not expose statistics over public web

=== Other Changes ===

 * backups: Allow remote repository usernames to start with numbers
 * locale: Update translations for Chinese (Simplified), Hungarian, Kannada, Norwegian Bokmål, Spanish, Swedish
 * security: Move backports notice to security page
 * upgrades: Add button to activate backports if needed for current release
 * debian: Rename source package from plinth to freedombox

== FreedomBox 20.12.1 (2020-07-05) ==

 * cfg, frontpage: Ignore errors while reading config and shortcuts
 * locale: Update translations for French, German, and Norwegian Bokmål

== FreedomBox 20.12 (2020-06-29) ==

=== Highlights ===

 * apt: Recover from errors before installing apps or updating system
 * apache: Add strict content security policy, sandbox and other security headers
 * storage: Allow ejecting SATA disks
 * configuration: Allow changes using .d drop-in files

=== Other Changes ===

 * configuration: Move default configuration into source code
 * configuration: Read from multiple locations in /etc/ and /usr/share/
 * debian: Add ssl-cert and nscd as proper dependencies
 * frontpage: Allow adding shotcuts using .d drop-in files
 * frontpage: Read shortcuts from multiple locations in /etc/, /usr/share and /var/lib
 * locale: Update translations for Czech, Danish, French, German, Russian, Spanish, Swedish, Telugu, Turkish
 * storage: Automount system disks without partition table but ignore all loopback devices
 * storage: Allow ejecting SATA disks
 * storage: Show only physical disks and not all mount points
 * upgrades: Skip enabling backports on testing and unstable
 * upgrades: Show more logs
 * ui: Show a spinner and disable button on form submit

== FreedomBox 20.11 (2020-06-15) ==

=== Top Highlight ===

 * locale: Add new translation for Arabic (Saudi Arabia)

=== Other Changes ===

 * javascript: Remove use of Turbolinks library
 * locale: Update translations for French, Norwegian Bokmål, German, Swedish, Polish, and Spanish
 * matrixsynapse: Handle upgrade to versions 1.15.x
 * upgrades: Avoid manual update interruption when upgrading freedombox package
 * upgrades: Don't enable backports on Debian derivatives

== FreedomBox 20.10 (2020-06-01) ==

=== Top Highlights ===

 * pagekite: Fix expired certificates causing connection failures
 * tor: Fix problems with running a relay

=== Other Changes ===

 * backups: Add optional field - Name
 * cockpit: Promote for advanced storage/firewalld/networking ops
 * firewall: Don't show tun interface in internal zone warning
 * firewall: Mention that internal services are available over VPN
 * ikiwiki: Enable 'attachment' plugin by default
 * locale: Update translations for Spanish, French, Russian, Norwegian Bokmål, Czech, Hungarian, and Greek
 * minidlna: Add link to manual page
 * minidlna: Fix internationalization for name of the app
 * mldonkey: Add app to freedombox-share group
 * openvpn: Use app toggle button and common app view
 * radicale: Fix link in description to clients
 * samba: Add clients information
 * templates: Fix setup state check
 * users: Avoid error when user's groups cannot be parsed

== FreedomBox 20.9 (2020-05-18) ==

=== Top Highlights ===

 * performance: Add app for system monitoring
 * upgrades: Restart services and system when needed after upgrades
   * System restart will happen at 02:00 local time

=== Other Changes ===

 * bind: Add service alias for bind9 -> named
 * firewall: Reload firewalld so it works with newly installed services
 * first_setup: Fix regression with logo not showing
 * locale: Update translations for Norwegian Bokmål, German, Swedish, Spanish, and Russian
 * mediawiki: Stop jobrunner during backup/restore
 * minidlna: Stop service during backup/restore
 * mumble: Stop service during backup/restore
 * package: Fix error log when checking if package manager is busy
 * performance: Launch the Cockpit graphs directly if possible
 * quassel: Fix stopping service during backup/restore
 * quassel: Use systemd sandboxing features
 * samba: Change description to Network File Storage
 * snapshot: Fix issues with restore and delete
 * snapshot: Set as essential module
 * storage: Auto-mount disks, notify of failing disks
 * tor: Fix stopping service during backup/restore

== FreedomBox 20.8 (2020-05-04) ==

  * syncthing: Add service to freedombox-share group
  * users: When adding service to sharing group, only restart if already running
  * datetime: Ignore time synchronization service in containers and virtual machines
  * minidlna: Make app installable inside unprivileged container
  * web_server: Suppress warnings that static directories don't exist
  * debian: Remove unused timer
  * static: Use SVG logo during first wizard welcome step
  * static: Reduce the size of the background noise image
  * setup.py: Don't install/ship .po files
  * static: Don't ship visual design file and unused images
  * all: Update links to repository and project page
  * coturn: Add app to manage Coturn TURN/STUN server
  * mediawiki: Partial fix for installing on testing
  * datetime: Disable diagnostics when no tests are available
  * data: Print hostname and IP addresses before console login
  * snapshot: Fix message when not available
  * snapshot: Fix title
  * mumble: Add Mumla to the list of clients
  * locale: Update translations for Spanish, Telugu, Russian, German, French, and Swedish

== FreedomBox 20.7 (2020-04-20) ==

 * matrixsynapse: Fix initial installation and upgrade from backports
 * gitweb: Improve error handling when creating repository
 * locale: Update translations for French, Serbian, and Telugu

== FreedomBox 20.6.1 (2020-04-11) ==

 * users: Restore line of help text that was accidentally dropped
 * debian: Add firmware-ath9k-htc to Recommends
 * gitweb: Use proper ellipsis char when showing clone progress
 * locale: Update translations for Norwegian Bokmål, German, French, Portuguese, Italian, Russian, and Serbian

== FreedomBox 20.6 (2020-04-06) ==

 * app: Ensure toggle buttons work independently of configuration form
 * networks, monkeysphere: Make styling more specific to avoid interference
 * syncthing: Update description to mention 'syncthing' group
 * radicale: Support upgrade up to any 2.x version
 * packages: Hold freedombox package during package installs
 * users: Add component for managing users and groups
 * app: Fix grammar in developer documentation string
 * ikiwiki: Disable public edits of blog pages
 * ikiwiki: Add moderation of blog comments
 * firewalld: Support upgrade up to any 0.8.x version
 * infinoted: Fix permissions of sync directory
 * locale: Added Serbian translation
 * locale: Update translations for Russian, French, German, Czech, Italian, Hindi, Telugu, and Spanish

== FreedomBox 20.5.1 (2020-03-26) ==

 * networks: Update label wording in topology form
 * jsxc: Fix issue with serving static files
 * debian: Separate binary packages for each language manual
 * locale: Update translations for Norwegian Bokmål and German

== FreedomBox 20.5 (2020-03-23) ==

 * app: Fix description block in app header
 * pagekite: Don't signal new domain on init if app is disabled
 * pagekite: Don't attempt to notify about domain if app is disabled
 * pagekite: Remove app enabled checking from getting configuration
 * pagekite: On enable/disable, add/remove domain from names module
 * pagekite: Fix an error message in custom services form
 * matrixsynapse: Handle release of matrix-synapse 1.11
 * setup: Fix regression to force-upgrade caused by Info changes
 * pagekite: Don't allow non-unique custom services
 * index: Reintroduce clients button in front page
 * upgrades: Don't ship apt backport preferences file
 * upgrades: Use internal scheduler instead of systemd timer
 * shadowsocks: Change default configuration
 * shadowsocks: Fix incorrect setting of state directory
 * shadowsocks: When editing configuration, don't re-enable
 * mediawiki: Don't allow anonymous edits
 * names: Fix Local Network Domain is not shown
 * shadowshocks: Fix setting configuration on Buster
 * locale: Update translations for Swedish, Spanish, and French

== FreedomBox 20.4 (2020-03-09) ==

 * apache: Handle transition to php 7.4
 * app: Fix showing app name in port forwarding information
 * apps: Do not show status block if service is running
 * i2p: New style app page layout
 * locale: Update translations for French, Telugu, Spanish, and Swedish
 * networks: Add first boot step for network topology wizard
 * networks: Add form for network topology
 * networks: Don't show router wizard if not behind a router
 * networks, firewall: Support newer version of policykit
 * networks: Fixes for networks wizards access and user experience
 * networks: If topology wizard is skipped, skip router wizard too
 * networks: Show router wizard before Internet connection type wizard
 * plinth: Increase sqlite busy timeout from default 5s to 30s
 * quassel: Fix unable to disable application without choosing a domain name
 * shadowsocks: Move user settings to state directory
 * storage: Directory selection form improvements
 * transmission: Allow to submit download directory if it is creatable
 * upgrades: Clean apt cache every week
 * views: Improve template security

== FreedomBox 20.3 (2020-02-24) ==

 * apps: Update style for toggle button
 * apps: Drop border shadow for app icon in mobile view
 * apps: Show short description as secondary title
 * apps: Remove css filters and glow from app icons
 * cards: Remove the transition delay on hover effect
 * system: Implement new style for cards
 * framework: Generate secret key (existing sessions will get logged out)
 * framework: Cleanup expired sessions every week
 * networks: Add setting for internet connection type
 * networks: Ask about internet connection type during setup
 * shadowsocks: Fix shadowsocks not able to start
 * jsxc: Bypass issue with stronghold to get the app working again
 * monkeysphere: Fix regression with reading Apache configuration
 * help: Fix attribute on download manual button
 * firewall: Improve speed of some operations using DBus API
 * css: Add missing license identifier on some CSS files
 * deluge: Use safer method for editing configuration
 * deluge: More reliable initial configuration setup
 * samba: Add link to manual page
 * searx: Update search engines for 0.16.0
 * openvpn: Fix spelling for Tunnelblick
 * bind: Show served domains
 * Update translations for German, Swedish, Italian, Spanish, Norwegian Bokmål, Hungarian, Polish, and French

== FreedomBox 20.2 (2020-02-10) ==

 * networks: Support virtual Ethernet (veth) devices
 * diagnostics: Show firewall service status
 * storage: Show disks if !FreedomBox is running in an unprivileged container
 * service: Stop service not before but after disabling it
 * users: Use more precise username validation
 * sso, users: Turn off autocapitalization on the username field
 * help: Fix anchor hidden under navbar
 * searx: Fix installation issue for 0.16.0
 * firewall: Show Run Diagnostics button in app
 * glib: Introduce method to schedule an operation at regular intervals
 * notification: Show a drop down from main navbar for notifications
 * storage: Show low disk space warning using notifications API
 * upgrades: Show notification when !FreedomBox is updated
 * security: Add Sandbox Coverage to report page
 * matrixsynapse: Enable systemd sandboxing
 * locale: Update translations for Telugu, French, Norwegian Bokmål, German, Spanish, and Swedish

== FreedomBox 20.1 (2020-01-27) ==

 * deluge: Allow to set a download directory
 * deluge: Fix installation failure on slow machine
 * storage: Make external disk mounts accessible to other users
 * gitweb: Add link to the manual page
 * style: Fix incorrect margins for containers in mobile view
 * style: Fix responsiveness for app header
 * network: Fix activating connections that don't have real devices
 * wireguard: Add !WireGuard VPN app
 * networks: Add router configuration page
 * networks: Add first boot step for router config helper
 * bind: Enable sandboxing for bind service
 * locale: Updated translations for Dutch, Norwegian Bokmål, German, Spanish, Swedish, French, and Greek

== FreedomBox 20.0 (2020-01-13) ==

 * samba: Improve speed of actions
 * deluge: Manage deluged service and connect automatically from web interface
 * openvpn: Enable support for communication among all clients
 * storage: Ignore errors resizing partition during initial setup
 * storage: Make partition resizing work with parted 3.3
 * debian: Add powermgmt-base as recommended package
 * openvpn: Enable IPv6 for server and client outside the tunnel
 * networks: Fix crashing when accessing network manager D-Bus API
 * mediawiki: Use a mobile-friendly skin by default
 * mediawiki: Allow admin to set default skin
 * matrixsynapse: Allow upgrade to 1.8.*
 * security: Add explanation of sandboxing
 * Update translations for Greek, German, Swedish, Hungarian, Norwegian Bokmål, and French

== FreedomBox 19.24 (2019-12-30) ==

 * app: Fix !JavaScript doesn't run on first visit
 * samba: Add private shares
 * firewall: Support upgrading firewalld to 0.8
 * deluge: Add systemd sandboxing features
 * infinoted: Add systemd sandboxing features
 * storage: Add systemd sandboxing features to udiskie service
 * upgrades: Add systemd sandboxing features to repository setup service
 * security: List whether each app is sandboxed
 * mediawiki: Avoid delay in update script
 * diagnostics: Use new component based API for all diagnostic tests
 * minidlna: Fix showing clients information
 * mediawiki: Fix problem with session cache failing logins
 * locale: Update translations for French, German, Swedish, Greek, Hungarian, Norwegian Bokmål, and Dutch

== FreedomBox 19.23 (2019-12-16) ==

 * minidlna: New app for MiniDLNA (Simple Media Server)
 * apps: Show app icons in app pages
 * apps: Implement responsive layout for app pages
 * samba: Recursively set open share directory permissions
 * transmission: Add directory selection form
 * mumble: Add option to set !SuperUser password
 * cockpit: Extend apps description with access info
 * cockpit: Add list of valid urls to access the app
 * Update translations for French, German, Spanish, Portuguese, and Swedish

== FreedomBox 19.22 (2019-12-02) ==

 * samba: Add new app for Samba file sharing
 * pagekite: Remove tabs in the configuration page
 * openvpn: Fix text with manual link
 * pagekite: Show existing services only if there are any
 * pagekite: Move Custom Services under Configuration
 * pagekite: Use the new app toggle button
 * openvpn: Add client apps
 * backups: Fix title not appearing
 * diagnostics: Don't run on disabled modules
 * apps: Remove link to webapps in app descriptions
 * interface: Fix error with app toggle input
 * templates: Add toolbar for apps
 * toolbar: Move diagnostics button into dropdown menu
 * ssh: Fix Avahi SFTP service file
 * diagnostics: Fix IPv6 failures
 * matrix-synapse: Fix installation of 1.5 from buster-backports
 * app: Fix javascript constant redeclaration error
 * ikiwiki: Move the create button to manage section
 * gitweb: Move create button into manage section
 * networks: Move actions button into connection section
 * users: Move create button into users section
 * locale: Update translations for French, German, and Swedish

== FreedomBox 19.21 (2019-11-18) ==

 * gitweb: Allow to import from a remote repository
 * interface: Disable turbolinks on links that don't point to /plinth/...
 * backups: Show proper error when SSH server is not reachable
 * tor: Rename "Hidden Service" to "Onion Service"
 * ejabberd: Handle case where domain name is not set
 * tahoe: Mark Tahoe-LAFS as an advanced app
 * searx: Set safe_search to Moderate by default
 * backups: Make verify ssh host page string translatable
 * backups: Simplify SSH fingerprint verification command
 * doc: Fix unavailability of manual images
 * tor: Fix port diagnostics by correcting port data type
 * tor: Expect obfs service to be also available on IPv6
 * tor: Listen on IPv6 for !OrPort
 * clients: implement launch button feature
 * apps: Implement toggle button in apps pages
 * Update translations for German, Hungarian, Swedish, Norwegian Bokmål, French, Polish

== FreedomBox 19.20 (2019-11-04) ==

 * doc: Add Spanish manual
 * ssh: Add option to disable password authentication
 * sharing: Fix wrong links on Apache2 directory index page
 * gitweb: Set correct access rights after enabling application
 * gitweb: Fix links leading to blank page
 * gitweb: Set proper access after restoration of a backup
 * snapshot: Sort snapshot list from newest to oldest
 * infinoted: Add missing manual page link
 * backups: Fix typo
 * Update translations for German, Spanish, Swedish, Czech, French, Norwegian Bokmål, Hungarian

== FreedomBox 19.19 (2019-10-21) ==

 * gitweb: New app for simple git hosting
 * ikiwiki: Allow full Unicode text in wiki/blog title names
 * users: reload Apache2 to flush LDAP cache after user operations
 * ssh: Show server fingerprints in SSH page
 * frontpage: Show public shortcuts to all users regardless of group
 * ikiwiki: Remove extra create button when no wiki/blog is present
 * quassel: Add Let's Encrypt component for certificates
 * Update translations for Czech, French, Bulgarian, Dutch, German, and Norwegian Bokmål

== FreedomBox 19.18 (2019-10-07) ==

 * diagnostics: Ensure that exceptions are reported as failures
 * users: Rearrange UI to match with other apps
 * upgrades, ikiwiki, networks, backups: Replace page tabs with buttons
 * dynamicdns, i2p, pagekite, snapshot: Cleanup page templates
 * deluge: Support deluge 2 by starting it properly
 * minetest: Remove mod-torches no longer available in testing/unstable
 * security: Add past vulnerabilities count, move report to new page
 * Update translations for Spanish, Norwegian Bokmål, German

== FreedomBox 19.17 (2019-09-23) ==

 * firstboot: Add new help menu to firstboot navbar
 * firstboot: Hide left menu during first boot as intended
 * Update translations for Chinese (Simplified) and Czech
 * Fix tests for letsencrypt and tor

== FreedomBox 19.16 (2019-09-09) ==

 * backups: Allow adding backup repositories on multiple disks
 * help: Add buttons for contribute, support, and feedback
 * action_utils: Workaround problem with setting debconf answers
 * views: Fix failure in redirecting from language selection page
 * manual: Move PDF download link to HTML manual page
 * help: Convert help icon in the navbar to dropdown
 * ejabberd: Fix listen port configuration for ejabberd 19.x
 * cockpit, ejabberd: Prevent restart on freedombox startup
 * ejabberd: Perform host/domain name operations only when installed
 * logging: Improve formatting and reduce noise
 * translations: Update Hungarian, German, Italian, French, and Norwegian Bokmål

== FreedomBox 19.15 (2019-08-26) ==

 * security: Hide vulnerability table by default
 * names: Perform better layout of domain names table on small screens
 * cockpit: Apply domain name changes immediately
 * ejabberd: Prevent processing empty domain name
 * config: Send hostname change signal only after fully processing it
 * letsencrypt: Don't try to obtain certificates for .local domains
 * avahi: Expose .local domain as a proper domain
 * cockpit: Make essential and install by default
 * tt-rss: Force upgrade to 18.12-1.1 and beyond
 * updates: Allow matrix-synapse 1.3 to be installed for buster users
 * javascript: Don't resubmit when refreshing the page
 * storage: Fix regression with restoring backups with storage
 * matrix-synapse: Use recommended reverse proxy configuration
 * Update translations for German, Hungarian, and Norwegian Bokmål

== FreedomBox 19.14 (2019-08-12) ==

 * storage: Handle all device paths during eject
 * storage: Fix incorrect internationalization when throwing an error
 * upgrades: Use collapsible-button style for logs
 * firewall: Allow automatic upgrade to 0.7.x
 * upgrades: Handle release info change
 * frontpage: Fix regression with loading custom shortcuts
 * names: Add dynamic domain name
 * names: Add button to configure each type of name
 * names: Update page layout for clearer presentation
 * names: Introduce new API for domain name handling
 * api: Fix regression with listing only enabled apps in mobile app
 * Update translations for Czech, Hungarian, French, Chinese (Simplified), Turkish, Polish, and Norwegian Bokmål

== FreedomBox 19.13 (2019-07-29) ==

 * backups: Make UI more consistent with other apps
 * backups: Make backup location tables collapsible
 * Updated translations for Chinese (Simplified), German, and Norwegian Bokmål
 * help: Show security notice when backports are in use
 * security: Show vulnerability counts

== FreedomBox 19.12 (2019-07-22) ==

 * sharing: Allow directories to be publicly shared
 * backups: Add option to select/deselect all apps for backup or restore
 * dbus: Allow plinth user to own !FreedomBox DBus service
 * letsencrypt: Simplify renewal hooks implementation
 * cockpit: Don't handle domains if app is not installed
 * dynamicdns: Send domain added signal properly during init
 * ejabberd: Backup and restore TLS certificates
 * Started new Galician translation on Weblate
 * Updated translations for Czech, Norwegian Bokmål, Hungarian, Spanish, Telugu, Chinese (Simplified), German, Turkish, and Russian

== FreedomBox 19.2.2 (2019-07-17) ==

This release does not contain any functional changes, but fixes test failures when building the package.

== FreedomBox 19.2.1 (2019-07-09) ==

This is a bugfix release for 19.2.

 * dbus: Allow plinth user to own !FreedomBox DBus service

== FreedomBox 19.11 (2019-07-08) ==

 * backups: Fixes to issues while adding SSH remotes:
   * Improve UX of adding ssh remote
   * Avoid creating duplicate SSH remotes
   * Fix issue with repository not being initialized
   * Verify SSH hostkey before mounting
   * Allow SSH directory paths with : in them
   * Require passphrase for encryption in add repository form
   * Don't send passphrase on the command line
   * Un-mount SSH repositories before deleting them
 * matrixsynapse: Fix missing translation mark
 * Started new Greek translation on Weblate
 * Updated translations for Chinese (Simplified), Hungarian, Spanish, and Russian

== FreedomBox 19.10 (2019-06-24) ==

 * syncthing: Open firewall ports for listening and discovery
 * radicale: Workaround issue with creating log directory
 * Update translations for Turkish, German, Czech, Norwegian Bokmål, and Portuguese
 * Introduce components for firewall, webserver, uwsgi, and daemons

== FreedomBox 19.9 (2019-06-10) ==

 * config: Add option to show advanced apps, which are hidden by default
 * monkeysphere: Hide by default
 * searx: Add option to allow public access to the application
 * Introduce component architecture for apps, with components for menus and shortcuts
 * Start new translation for Bulgarian
 * Update translations for Turkish and Norwegian Bokmål

== FreedomBox 19.8 (2019-05-27) ==

 * Switch to using SVG icons for all apps.
 * Updated translations for Czech, Norwegian Bokmål, Hungarian, German, Turkish, and Spanish.

== FreedomBox 19.7 (2019-05-13) ==

 * i2p: Include default favorites.
 * Separate enabled and disabled apps.
 * Display port forwarding info for apps.
 * Added Slovenian translation.
 * Updated translations for Dutch, German, Hungarian, Norwegian Bokmål, Polish, Portuguese, Telugu.

== FreedomBox 19.6 (2019-04-29) ==

 * i2p: Enable new application for I2P Anonymity Network.
 * Updated translations for Czech, German, Norwegian Bokmål, and Turkish.
 * letsencrypt: Provide link to configure domain if not configured.
 * firewall: Show port numbers and types.

== FreedomBox 19.5 (2019-04-15) ==

 * storage: Use more reliable method to list disks and disk space usage.
 * Updated translations for Russian and German.

== FreedomBox 19.4 (2019-04-01) ==

 * clients: Open web app in a new browser tab
 * matrix-synapse: Change client diagnostics url
 * minetest: Fix duplicate domain names being displayed in UI
 * storage: Do not show an eject button on /boot partitions
 * letsencrypt: Call letsencrypt manage_hooks with correct arguments
 * dynamicdns: Install module by default
 * storage: Don't check type of the disk for / and /boot
 * storage: Don't log error when checking if partition is expandable
 * Updated translations for Norwegian Bokmål, Czech, German, Hungarian, Spanish, German, and Russian.

== FreedomBox 19.3 (2019-03-18) ==

 * UI: Move tabs below descriptions.
 * firewall: Style heading
 * names: Add description
 * pagekite: Change heading text
 * ikiwiki: Consistent styling for delete warning page
 * main: Show service version in logs
 * setup: Organize data files into various apps
 * Updated translations for Czech, Hungarian, Norwegian Bokmål, Spanish, German, French, Italian, and Turkish.

== FreedomBox 19.2 (2019-03-02) ==

 * config: Fix Ikiwiki entries not showing up as default apps
 * config: Migrate default app configuration to new conf file
 * config: Rename Default App to Webserver Home Page
 * config: Add option to use Apache's default home page as home page
 * config: Fix error when setting JSXC as the home page
 * Disable Coquelicot for Buster release
 * matrix-synapse: Fix LDAP login issue
 * config: Revert changes in freedombox.conf to avoid conffile prompt
 * openvpn: Migration from easy-rsa 2 to 3 for existing installations
 * tor: Use fixed 9001 port for relaying
 * package: Implement identifying packages that need conffile prompts
 * setup: Trigger force upgrade for app that implement it
 * bind: Handle conffile prompt during upgrade
 * apache: Pre-enable necessary apache modules
 * apache: Use cgid module instead of cgi
 * openvpn: Make frontpage shortcut appear after an upgrade
 * openvpn: Work around firewalld bug 919517
 * firewalld: Implement upgrading from 0.4.x to 0.6.x
 * ttrss: Implement upgrade from 17.4 to 18.12
 * radicale: Add description of web interface
 * ttrss: Add backup support
 * security: Migrate access config to new file
 * Updated translations for Czech, Hungarian, Norwegian Bokmål, Spanish, German, Telugu.

== FreedomBox 19.1 (2019-02-14) ==

 * radicale: Increment module version to trigger upgrade handling
 * radicale: Remove obsolete diagnostics
 * radicale: Fix server URLs in client info
 * Updated translations for Czech, Norwegian Bokmål, and Spanish.
 * setup: Add option to handle configuration prompts during install
 * radicale: Simplify upgrading to newer packages
 * matrixsynapse: Use Let's Encrypt certificates

== FreedomBox 19.0 (2019-02-09) ==

 * mldonkey: Add some more clients to the module page
 * mldonkey: Add to the description the three available front-ends
 * monkeysphere: Fix handling of multiple domains and keys
 * monkeysphere: Fix regression with reading new apache domain config
 * apache: Switch to mod_ssl from mod_gnutls
 * mldonkey: Enable app
 * upgrades: Fix priority for buster-backports version
 * upgrades: Fix premature adding of buster-backports sources
 * Updated translations for Czech, German, and Spanish
 * Switched to a new version number scheme: YY.N
   * YY is the year of release.
   * N is the release number within that year.

== Version 0.49.1 (2019-02-07) ==

 * ui: Fix regression with configure button in home page.
 * backups: Rename 'Abort' buttons to 'Cancel'.
 * backups: Use icon for add repository button.
 * backups: Move subsubmenu below description.
 * backups: Add title and description to other pages.
 * backups: Add link to manual page.
 * backups: Fix styling for upload size warning.
 * backups: Increase timeout for SSH operations to 30 seconds.
 * letsencrypt: UI: Fix checkbox disabling.
 * datetime: Switch from chrony to systemd-timesyncd.
 * Updated translations for Czech, Norwegian Bokmål, and Spanish.

== Version 0.49.0 (2019-02-05) ==

 * security: Update javascript for Content Security Policy.
 * help: Use correct package to determine available version.
 * repro: Disable app due to issues with Debian package.
 * ui: Fix regression with card icon style in front page.
 * js: Support full librejs compatibility.
 * js: Remove javascript license link from footer.
 * backups: Remove incorrectly set buffer size during download.
 * backups: Fix incomplete download archives.
 * backups: Improve performance of backup download.
 * radicale: Handle migration from 1.x to 2.x.
 * datetime: Switch from ntp to chrony.
 * backports: Add buster-backports to apt sources list.
 * Updated translations for Czech, Norwegian Bokmål, and Hungarian.

== Version 0.48.0 (2019-01-28) ==

 * Updated translations for Czech, Hungarian, German, and Norwegian Bokmål.
 * UI improvements:
   * Fix top margin for content containers.
   * Fix setting width of card-list at various page sizes.
   * Show help nav item text when navbar is collapsed.
   * Hide restart/shutdown items when navbar is collapsed.
   * Compact pages on extra small screen sizes.
 * Backups improvements:
   * Add backup/restore support for syncthing and openvpn.
   * Upgrade apps before restoring them
   * Fix showing not-installed apps in create backup page
   * Automatically install required apps before restore.
   * Add a loader to the restore button to indicate progress.
 * Serve default favicon for apps that don't provide one.
 * radicale: Fix issue with configuration changes not applying.
 * storage: Fix false error message in log when visiting home page.
 * infinoted: Handle timeout issue when stopping daemon during setup.
 * matrix-synapse: Fix startup error caused by bind_address setting.
 * radicale: Avoid changes to conffile for radicale 2.x.
 * help: Fix showing status logs when an error occurs.
 * fail2ban: Enable bans for apache auth failures.
 * mldonkey: Initial work on new module for the eDonkey network.
   * Not available yet, due to bug in package.

== Version 0.47.0 (2019-01-14) ==

 * Show Gujarati in the list of languages.
 * Replace glyphicons with forkawesome icons.
 * Snapshots:
   * Change configuration to avoid filling up disk.
   * Handle "Config in use" error.
   * Update descriptions and configuration options.
 * Firewall: Fix issue with transition from iptables.
 * Security: Switch to Argon2 password hash.
 * Cockpit: Add link to manual page and update description.
 * Radicale: Add initial support for radicale 2.x.
 * Setup:
   * Handle showing setup page after app completes installation.
   * Optimize installation in-progress checks and refresh time.

== Version 0.46.0 (2018-12-31) ==

 * Updated translations for Czech, German, Spanish, Ukrainian, and Norwegian Bokmål.
 * Use systemd journal for logging.
 * Rename plinth binary package to "freedombox", and merge freedombox-setup package into it.

== Version 0.45.0 (2018-12-17) ==

 * Storage: Merge list of removable media into existing table.
 * Backups: Allow remote backups to SSH servers using sshfs.
 * Backups: Removed asking for backup archive name.
 * Automatically handle future versions of PHP.
 * Updated translations for Hungarian, Czech, Spanish, Chinese (Simplified), Italian, Norwegian Bokmål, French, and German.

== Version 0.44.0 (2018-12-03) ==

 * UI: Add card style and gray noise background to apps pages.
 * UI: Fix distortion of the client apps buttons.
 * ejabberd: Handle BOSH port change from TCP 5280 to 5443.
 * Minetest: Update mods list to available Debian packages.
 * Firewall: Use nftables instead of iptables.
 * Snapshots: Fix default snapshot listing.
 * Snapshots: Show description above either tab.
 * Snapshots: Allow snapshots to be selected for deletion.
 * Translations: Updated Czech, Norwegian Bokmål, Spanish, German, and Portuguese.

== Version 0.43.0 (2018-11-19) ==

 * Backups improvements:
   * Allow backups to be downloaded directly, without export step.
   * Restore directly from uploaded backup.
   * Avoid error for apps with no data to backup.
   * Show free disk space on upload and restore page.
   * Do not limit maximum upload size.
 * openvpn: Migrate to easy-rsa 3 and fix setup issues.
 * Make single sign-on tickets valid for 12 hours.
 * Use consistent terminology for updates.
 * Updated translations for Czech and Portuguese.

== Version 0.42.0 (2018-11-05) ==

 * Fix wrong color in mobile menu
 * snapshot: Fix broken snapshot management after snapper update
 * Enable backup/restore for tor, upgrades, monkeysphere, letsencrypt, tahoe
 * monkeysphere: Handle importing new OpenSSH format keys
 * udiskie: unmount drive as superuser
 * Updated translations for Telugu, Indonesian, and Italian

== Version 0.41.0 (2018-10-22) ==

 * Enable backup/restore for datetime, deluge, avahi, backups, bind, security, snapshot, ssh, firewall, diagnostics, names, power, and storage.
 * snapshot: Fix issue with setting configuration.
 * backups: Fix backup archives ownership issue.
 * backups: Fix issue with showing exports from disks without labels.
 * backups: Don't rely on disk labels during export/restore.
 * backups: Fix downloading extracted archive files.
 * Updated translations for Norwegian Bokmål, French, Russian, and Spanish.

== Version 0.40.0 (2018-10-08) ==

 * Backups
   * Enable backup/restore for mumble, privoxy, roundcube, searx, jsxc, coquelicot, transmission, quassel, shadowsocks, sharing, pagekite, and cockpit.
   * Allow backup archives to be downloaded/uploaded through browser.
   * mediawiki: Backup/restore settings as well as data.
 * User Interface
   * Change card text style and position.
   * Change maximum cards per row.
   * Add tint effect on card icons under "Apps".
 * mediawiki: Run update script for 1.31 upgrade.
 * customization: Show custom shortcuts on frontpage.
 * Updated translations for Norwegian Bokmål, Portuguese, Spanish, Czech, German, French, and Italian.

== Version 0.39.0 (2018-09-24) ==

 * Updated translations for Hungarian and Norwegian Bokmål.
 * Merge Removable Media (udiskie) into Storage module.
 * Add Backups module for backing up apps data.

== Version 0.38.0 (2018-09-10) ==

 * mediawiki: Enable SVG support for !MediaWiki
 * upgrades: Clean up old kernel packages during automatic upgrades
 * Make the progress bar at the top of the page more visible.
 * Updated translations for Norwegian Bokmål, Czech, Russian, German, Hungarian, and Spanish.

== Version 0.37.0 (2018-08-27) ==

 * Updated translations for Czech, Norwegian Bokmål, Russian, Spanish, Hungarian, and Dutch.
 * install: Use Post/Response/Get pattern for reloads.

== Version 0.36.0 (2018-08-13) ==

 * Updated translations for Hindi, Spanish, Russian, Telugu, German, Hungarian, Czech, and French
 * ejabberd: Remove deprecated settings from already existing config files
 * mediawiki: Fix issue with re-installation
 * mediawiki: Enable Instant Commons
 * mediawiki: Fix images throwing 403s
 * turbolinks: Reload page using !JavaScript
 * Add Lato woff2 fonts
 * Disable launch button for web client when not installed

== Version 0.35.0 (2018-07-30) ==

 * configuration: Add an option to set a default app for !FreedomBox. The root URL path (`https://domainname/`) will redirect to the selected app.
 * ejabberd: Remove deprecated `iqdisc` setting. To apply this fix, disable and then re-enable the Message Archive Management setting.
 * ejabberd: Replace logo with original version.
 * mediawiki: Enable short URLs, which look like `https://domainname/mediawiki/ArticleName`.
 * radicale: Clarify description for shared calendar/addressbook.
 * storage: Handle mount points with spaces.
 * udiskie: Add button to eject drives.
 * udiskie: Also show read-only filesystems.
 * udiskie: Remove internal networks warning.
 * udiskie: Show special message when no storage device available.
 * Add turbolinks library for smoother navigation.
 * Removed extra text from icons for mediawiki, radicale, and tahoe-lafs.
 * Updated translations for Russian, Spanish, Dutch, Hungarian, Hindi, Italian, Telugu, German, and Norwegian Bokmål.

== Version 0.34.0 (2018-07-16) ==

 * Prompt for secret during firstboot welcome
   * (Does not apply to downloadable !FreedomBox images, but only when installed using freedombox-setup package.)
 * Updated translations for Italian, Dutch, Hindi, Hungarian

== Version 0.33.1 (2018-07-04) ==

  * Fix issue where editing a user would remove them from admin group
  * Updated translations for Hungarian, Czech, Spanish, Russian, Hindi

== Version 0.33.0 (2018-07-02) ==

 * Updated translations for Hungarian, Norwegian Bokmål, Spanish, Russian, Czech, Hindi, Dutch, Italian
 * firewall: Display information that a service is internal only
 * users: Don't show Create User link to non-admin users
 * users: Redirect to users list on successful user creation
 * packages: Show button to refresh package lists when a package is not available for install
 * Only show front page shortcuts that a user is allowed to access
 * Restrict removal of last admin user
 * Use logos instead of icons in the apps page
 * udiskie: New module for automatic mounting of removable media

== Version 0.32.0 (2018-06-18) ==

 * Apply new card based design
 * Fix client info table size and flickering
 * first-setup: Automatically expand root partition
 * mediawiki: Enable image uploads
 * mediawiki: Make private mode and public registrations mutually exclusive
 * mediawiki: Hide frontpage shortcut when private mode is enabled
 * Updated translations for Norwegian Bokmål, Czech, Spanish, Russian, Hindi, Telugu, Italian, Dutch, German, and Hungarian

== Version 0.31.0 (2018-06-04) ==

 * Updated translations for Czech, Spanish, Russian, German, Italian, Hindi, Telugu, and Norwegian Bokmål
 * mediawiki: Added private mode option
 * users: Fix user permissions not being saved
 * users: internationalize a string
 * mediawiki: Run update script for 1.30 upgrade
 * shortcuts: Fix urls for ikiwiki shortcuts

== Version 0.30.0 (2018-05-21) ==

 * Updated translations for Russian, Italian, Norwegian Bokmål, Hungarian, and Hindi
 * setup: Remove unavailable as a state in setup_helper

== Version 0.29.1 (2018-05-08) ==

  * security: Fix issue with Plinth locked out from sudo
  * Updated translations for Czech and Spanish

== Version 0.29.0 (2018-05-07) ==

 * security: Allow console login access to user plinth
 * Add an option to enable/disable public registrations in mediawiki
 * tt-rss: Skip the check for SELF_URL_PATH
 * searx: Fix issue with uwsgi crashing
 * Updated translations for Czech, Spanish, German, Norwegian Bokmål, and Italian

== Version 0.28.0 (2018-04-23) ==

 * setup: disable install button for currently unavailable apps
 * Add locale for Lithuanian (lt)
 * Translation updates for Italian, Czech, Russian, Spanish, German, Norwegian Bokmål, Telugu, and Dutch

== Version 0.27.0 (2018-04-09) ==

 * middleware: Skip 'installed' message for essential apps
 * users: Fix admin group appearing twice in permissions
 * apps: Fix app names and short descriptions not being translated
 * snapshots: Move manual page link to the index page
 * UI: Fix progress bar not appearing
 * snapshots: Fix for permissions issue when updating configuration
 * snapshots: Add option to enable/disable software installation snapshots
 * Translation updates for Italian, Czech, Russian, Spanish, Dutch, German, Norwegian Bokmål, and Ukrainian

== Version 0.26.0 (2018-03-26) ==

  * snapshots: Update description
  * searx: Rewrite url from /searx to /searx/
  * manual: Link to manual from each service
  * Workaround security issues in django-axes
  * apache: Only regenerate snake oil cert when needed
  * apache: Explicitly enable the latest version of PHP module
  * apache: Increase module version number to fix php7.2
  * Update translations for Chinese (Simplified), Russian, Czech, German, Norwegian Bokmål, Hungarian, Spanish, and Italian

== Version 0.25.0 (2018-03-12) ==

 * sharing: Add app for sharing disk folders.
 * ttrss: Update list of client apps.
 * infinoted: Allow setup to recover after timeout issue.
 * snapshots: Add configuration tab with settings for time-based snapshots.

== Plinth v0.24.0 (2018-02-26) ==

 * Add file-sharing application Coquelicot.
 * Add metasearch engine application Searx.
 * Add locale for Hungarian (hu).
 * mediawiki: Allow shortcut to be publicly visible on front page.
 * clients: Add and correct Client Apps.
 * locale: Preferred language can be set in each user's profile.
 * locale: Anonymous users can select preferred language.
 * config: Remove language selection from config page.
 * matrixsynapse: Fix mail attribute for ldap login.

== Plinth v0.23.0 (2018-02-12) ==

  * snapshots: Modify configurations to reduce disk usage.
  * snapshots: Skip currently active snapshot when deleting all snapshots.
  * jsxc: Use consistent url format.
  * sso: Increase timeout to 60 minutes.
  * theme: Change font from Helvetica to Lato.
  * Translation updates for Czech, German, Gujarati, and Telugu.

== Plinth v0.22.0 (2018-01-30) ==

  * matrix-synapse: Make sure configuration file does not get corrupted.
  * tor: Show enabled status properly.
  * first_setup: Fix not showing admin user creation step.
  * Migrate from !GitHub to Salsa
  * Migrate from CirceCI to !GitLab CI on Salsa.
  * Translation updates for Czech, Dutch, Gujarati, Hindi, Russian and Telugu.
  * Started new translation for Ukrainian.

== Plinth v0.21.0 (2018-01-15) ==

  * navigation bar: Change label from 'Configuration' to 'System'.
  * storage: Removed beta warning for expanding partition.
  * groups: Consistently show available user groups, even before applications are installed.
  * syncthing: Restrict administration to users in "syncthing" group.
  * help: Show menu on smaller screens also.
  * diagnostics: Enable the "Run Diagnostics" button when applications are enabled but not running.

== Plinth v0.20.0 (2018-01-01) ==

 * bind: Don't use forwarders by default
 * ejabberd: Remove redundant button Client Apps
 * mediawiki: Add wiki application
 * users: Make sure first run actually works
 * bind: Add information about current utility

== Plinth v0.19.0 (2017-12-18) ==

 * ejabberd: Use dynamic reload instead of restart when changing configuration.
 * manual: Make manual available as a PDF download.
 * minetest: Show domain information for users to connect to minetest.
 * snapshots: Add button to delete all snapshots.
 * snapshots: Add option to enable/disable automatic timeline snapshots.
 * users: Add groups for bit-torrent and feed-reader, available when these applications are installed.

== Plinth v0.18.0 (2017-12-04) ==

 * Add Shadowsocks client with socks5 proxy.
 * Fix SSO regressions and conflict with captcha.
 * transmission: Fix sso not being enabled on upgrade.
 * avahi: Add service for !FreedomBox discovery.
 * Add client information for modules.

== Plinth v0.17.0 (2017-11-20) ==

 * transmission: Enable Single Sign On.
 * cockpit: Add short description to frontpage shortcut.
 * fail2ban: Fix spelling and sentence structure.

== Plinth v0.16.0 (2017-11-06) ==

=== Added ===
 * Add mobile, web and desktop client info for modules.
 * Enable django !SecurityMiddleware to improve security ratings.
 * cockpit: New module for server administration and web terminal.

=== Fixed ===
 * letsencrypt: Fix internal server error when obtaining a certificate.
 * ejabberd: Fix LDAP server entry in config file during setup.
 * jsxc: Fix outdated URLs for connecting to local ejabberd server.

== Plinth v0.15.3 (2017-10-20) ==

=== Changed ===

 * Rename Disks to Storage.
 * Rename Snapshot to Storage Snapshots.
 * tt-rss: Enable API access by default.
 * Allow access to Plinth from outside the LAN.
 * matrix-synapse: Disable public registration by default.
 * power: Merge actions into the user dropdown.

=== Added ===

 * Add locales for Kannada (kn) and for Bengali (bn).
 * ejabberd: Use Let's Encrypt certificate, also across renewals.
 * matrix-synapse: Add enable/disable public registrations.
 * Add captcha validation on 3 failed attempts.
 * matrix-synapse: Enable LDAP integration.
 * letsencrypt: Automatically obtain and revoke SSL certificates.

=== Fixed ===

 * Fix front page label names.
 * Fix vertical alignment of shortcut icons.
 * storage: Fix issue with locales that use other decimal separators.
 * Make tt-rss api accessible using Apache basic auth.
 * letsencrypt: Handle case where current domain is empty.
 * Handle both admin and non-admin user names in update user template.

== Plinth v0.15.2 (2017-09-24) ==

=== Added ===

 * letsencrypt: Show more info on cert validity status.
 * letsencrypt: Add option to delete certificates.
 * letsencrypt: Add option to let Plinth manage certbot's renewal hooks.
 * power: Warn if a package manager is running before shutdown/restart.
 * security: Install and manage fail2ban.
 * names: Include domain and services from dynamicdns.
 * disks: Add low disk space warning to system and disks page.
 * ssh: New application to manage SSH server.
 * Add api module to get enabled services and access info.
 * Add Django password validators.
 * ejabberd, ikiwiki, ttrss: Add user login descriptions.

=== Removed ===

 * diaspora: Disable for this release due to issues affecting package.
 * Remove help from navbar before firstboot complete.

=== Fixed ===

 * i18n: Don't use backslash-newline for wrapping long lines.
 * radicale: Update link to documentation.
 * sso: Upgrade crypto to 4096-bit RSA and SHA-512.
 * Users: Allow non-admin users to log out.

=== Changed ===

 * letsencrypt: Make Let's Encrypt an essential module.
 * UI: Make apps and configure pages responsive on small screens.
 * Make help accessible for logged-in non-admin users.

== Plinth v0.15.0 (2017-07-01) ==

 * Added Tahoe-LAFS module for distributed file storage.
 * Added Diaspora* module for federated social networking.
   * Currently only available in "contrib" repository.
 * New Locales for Czech (cs) and Tamil (ta).
 * Added SSO using auth_pubtkt for Syncthing, TT-RSS, and the Repro admin panel.
     * If you are logged in to Plinth, you will be automatically logged in to these web apps.
 * ejabberd: Added option to enable/disable Message Archive Management.
 * help: Added Debian release name to about page.
 * firstboot: De-bloat first welcome screen.
 * Pinned footer to the bottom of the viewport.
 * disks: Restrict precision of reported available space on root partition.
 * diagnostics: Disable button if app/service is not running.
 * help: Only show help pages if user is logged in.
 * navbar: Moved logout to user drop-down and added a new power drop-down.
 * disks: Show disabled partition resize option if no space is available.
 * Added line break to titles to fix frontpage layout.
 * syncthing: Fixed typos and clarity in description.
 * firewall: Fix 500 error when firewalld is not running.
 * setup: Disable install/upgrade when dpkg/apt is running.
 * disks: Use information from lsblk for more accuracy.
 * datetime: Show timezone properly when it not in expected list.

== Plinth v0.14.0 (2017-04) ==

 * tor: Added option to use upstream bridges.
 * openvpn: Added shortcut to front page, shown only when logged-in.
 * openvpn: Non-admin users can download their own profiles.
 * Added new locales for Hindi (hi) and Gujarati (gu).
 * Added Syncthing module for file synchronization.
 * Added Matrix Synapse as chat server with groups, audio and video.
 * Require admin access for all system configuration pages.
 * Changed appearance of topbar and footer.
 * openvpn: Regenerate user key or certificate if empty.
 * disks: Workaround issue in parted during resize.

== Plinth v0.13.1 (2017-01-22) ==

 * Two new apps were added:
   * Gobby Server (infinoted) for collaborative editing of text documents
   * Domain Name Server (BIND), in system menu
 * Added !JavaScript license web labels to provide partial support for LibreJS.
 * Added basic configuration form for Minetest server.
 * Added indicator to Help->About page if new Plinth version is available.
 * Show app logos on front page instead of generic icons.
 * Prevent anonymous users from accessing setup pages.
 * Split Chat Server (XMPP) app into Chat Server (ejabberd) and Chat Client (jsxc).

== Plinth v0.12.0 (2016-12-08) ==

 * Open up RTP ports in the firewall for repro (SIP server).
 * Front page shortcuts for services show a Configure button in the details box for logged-in users.
 * Add mods packages to be installed with Minetest server.
 * Fix issue with reading Dynamic DNS status as non-root user.
 * After the hostname is changed, ensure the domain name is still set correctly.
 * Allow the domain name to be cleared, and properly set the configuration in this case.
 * On the Certificates (Let's Encrypt) page, show a more informative message when no domains are configured.
 * On the Chat Server (XMPP) page, show more clearly if domain is not set.
 * Apps that require login will not be shown on the front page, unless the user is logged in.
 * Show status block for News Feed Reader (Tiny Tiny RSS).
 * Change appearance of front page with larger icons and repositioned text.
 * Firewall page only lists services that have been setup. The port lists are collapsible under each service.
 * Support configuring IPv6 networks.
 * Make it less likely to accidentally delete the only Plinth user.
 * Updated to work with JSXC 3.0.0 (XMPP web client).

== Plinth v0.11.0 (2016-09-29) ==

 * Added loading icon for additional busy operations.
 * Added basic front page with shortcuts to web apps, and information about enabled services.
 * networks: Add batctl as dependency, required for batman-adv mesh networking.
 * users:
   * Fixed checking restricted usernames.
   * Display error message if unable to set SSH keys.
   * Flush nscd cache after user operations to avoid some types of errors.
 * monkeysphere:
   * Adopted to using SHA256 fingerprints.
   * Sort items for consistent display.
   * Handle new uid format of gpg2.
   * Fixed handling of unavailable imported domains.
 * minetest: Fixed showing status block and diagnostics.
 * Fixed stretched favicon.
 * Switched base template from container-fluid to container. This will narrow the content area for larger displays.
 * Plinth is now able to run as "plinth" user instead of root user.
 * xmpp: Replaced jwchat with jsxc.
 * ikiwiki: Allow only alphanumerics in wiki/blog name to avoid invalid paths.

== Plinth v0.10.0 (2016-08-21) ==

 * Updated Plinth to support Django 1.10.
 * Added a page to display recent status log from Plinth. It is accessible from the 500 error page.
 * Tor: Added options to toggle relay and bridge relay modes.
 * Radicale: Added access rights control.
 * Ikiwiki: Updated suggested packages.
 * Users and Groups: Fixed editing users without SSH keys.
 * Networks: Added basic support for configuring batman-adv mesh networking.
 * Networks: Fixed incorrect access for retrieving DNS entries.
 * New languages:
   * Persian (50% translated)
   * Indonesian (not started, contributions needed)
 * New modules added to Plinth:
   * Disks: Shows free space of mounted partitions, and allows expanding the root partition.
   * Security: Controls login restrictions.
   * Snapshots: Manages Btrfs snapshots.

== Version 0.9.4 (2016-06-24) ==

 * Added Polish translation.
 * Fixed issue preventing access to Plinth on a non-standard port.
 * Dealt with ownCloud removal from Debian. The ownCloud page in Plinth will be hidden if it has not been setup. Otherwise, a warning is shown.
 * Fixed issue in Privoxy configuration. Two overlapping listen-addresses were configured, which prevented privoxy service from starting.
 * Fixed issue that could allow someone to start a module setup process without being logged in to Plinth.
 * Fixed issues with some diagnostic tests that would show false positive results.
 * Added check to Diagnostics to skip tests for modules that have not been setup.
 * Fixed some username checks that could cause errors when editing the user.
 * Added sorting of menu items per locale.
 * Moved Dynamic DNS and Pagekite from Applications to System Configuration.
 * Allowed setting IP for shared network connections.
 * Switched Dreamplug image from "non-free" to "free". This means that we no longer include the non-free firmware for the built-in wifi on Dreamplug.
 * Added the "userdir" module for the Apache web server. This allows users in the "admin" group to create a folder called "public_html" under their home folder, and to publicly share files placed in this folder.
 * New wiki and manual content licence: ''[[https://creativecommons.org/licenses/by-sa/4.0/|Creative Commons Attribution-ShareAlike 4.0 International]]'' (from June 13rd 2016).
 * Switched to using apt-get for module setup in Plinth. This fixes several issues that were seen during package installs.

== Version 0.9 (2016-04-24) ==

 * Fixed Wi-Fi AP setup.
 * Prevent lockout of users in 'sudo' group after setup is complete.
 * Improved setup mechanism for Plinth modules. Allows users to see what a module is useful for, before doing the setup and package install. Also allows essential modules to be setup by default during !FreedomBox install.
 * Added HTTPS certificates to Monkeysphere page. Reorganized so that multiple domains can be added to a key.
 * Added Radicale, a CalDAV and CardDAV server.
 * Added Minetest Server, a multiplayer infinite-world block sandbox.
 * Added Tiny Tiny RSS, a news feed reader.

== Version 0.8 (2016-02-20) ==

 * Added Quassel, an IRC client that stays connected to IRC networks and can synchronize multiple frontends.
 * Improved first boot user interface.
 * Fixed Transmission RPC whitelist issue.
 * Added translations for Turkish, Chinese, and Russian. Fixed and updated translations in other languages.
 * Added Monkeysphere, which uses PGP web of trust for SSH host key verification.
 * Added Let's Encrypt, to obtain certificates for domains, so that browser certificate warnings can be avoided.
 * Added repro, a SIP server for audio and video calls.
 * Allow users to set their SSH public keys, so they can login over SSH without a password.

== Version 0.7 (2015-12-13) ==

 * Translations! Full translations of the interface in Danish, Dutch, French, German and Norwegian Bokmål, and partial Telugu.
 * Support for OLinuXino A20 MICRO and LIME2
 * New Plinth applications: OpenVPN, reStore
 * Improved first-boot experience
 * Many bugfixes and cleanups

== Version 0.6 (2015-10-31) ==

 * New supported hardware target: Raspberry Pi 2
 * New modules in Plinth:
   * Shaarli: Web application to manage and share bookmarks
   * Date & Time: Configure time zone and NTP service
   * Service Discovery: Configure Avahi service
 * Documentation revamp including new user manual and developer guide
 * Improved diagnostic tests, available in Plinth
 * Avoid unnecessary changes when installing on existing Debian system
 * Network configuration supports PPPoE connections
 * Debian packages can be download over Tor

== Version 0.5 (2015-08-07) ==

 * New targets: !CubieTruck, i386, amd64
 * New apps in Plinth: Transmission, Dynamic DNS, Mumble, ikiwiki, Deluge, Roundcube, Privoxy
 * !NetworkManager handles network configuration and can be manipulated through Plinth.
 * Software Upgrades (unattended-upgrades) module can upgrade the system, and enable automatic upgrades.
 * Plinth is now capable of installing ejabberd, jwchat, and privoxy, so they are not included in image but can be installed when needed.
 * User authentication through LDAP for SSH, XMPP (ejabberd), and ikiwiki.
 * Unit test suite is automatically run on Plinth upstream. This helps us catch at least some code errors before they are discovered by users!
 * New, simpler look for Plinth.
 * Performance improvements for Plinth.

== Version 0.3 (2015-01-20) ==

 * Tor Bridges: All boxes now act as non-exit Tor bridges, routing traffic for the Tor network.
 * [[FreedomBox/Manual/Firewall|Firewall]]: firewall is on by default and is automatically managed.
 * Add !BeagleBone support.  We now have images for !BeagleBone, !RaspberryPi, !VirtualBox i386/amd64, and !DreamPlug.
 * Ability to enable and use Tor Hidden Services.  Works with Ejabberd/JWChat and ownCloud services.
 * Enable Tor obfsproxy with scramblesuit.
 * Drop well-known root password (an account with sudo capabilities still exists for now but will be removed soon).
 * Switch to unstable as suite of choice for easier development.
 * Newer images are built with systemd by default (due to Debian change).
 * Install and operate firewall automatically (uses firewalld).
 * Major restructuring of Plinth UI using Python3, Django web development framework and Bootstrap3.  Code quality is much better and UI is more polished.
 * Introduced packaging framework in Plinth UI for on-demand application installation.

== Version 0.2 (2014-03-16) ==

 * Support for Raspberry Pi and !VirtualBox (x86) in addition to the !DreamPlug.
 * New Services:
  * Configuration Management UI.
  * Instant Messaging.
  * !OwnCloud.
  * dnsmasq.
  * Low-Level Configuration Management.
  * Service Announcement.
  * LDAP Server.
  * LXC Support.
  * Source Packages.
 * The privoxy setup is now the default from Debian.

== Version 0.1 (2013-02-26) ==

 * First !FreedomBox software release (0.1 image, developer release). 
 * Full hardware support in Debian
 * Support for !DreamPlug.
 * Basic software tools selected as common working environment:
  * User interface system "plinth"
  * Cryptography tools: gpg or "monkeysphere"
  * Box-to-box communication design: Freedom-buddy (uses [[https://en.wikipedia.org/wiki/Tor_%28anonymity_network%29|TOR network]])
  * Web cleaning: "privoxy-freedombox".

## END_INCLUDE

<<Include(FreedomBox/Portal)>>

----
CategoryFreedomBox
