There are not needed anymore, instances are always refreshed when adding
a new one, and we refresh periodically
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
- Test that same hashtags with different casing are taken only once into
account
- Test that too long hashtags are not extracted from description
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
The event update notification is made unique so that repeated changes
only trigger one notificate every 30 minutes
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
- Fixed group deletion with comments that caused foreign key issues
- Fixed incoming Accept activities from participations we don't already have
- Fixed resources that didn't have metadata size limits
- Properly fallback to UTC when sending notifications and the user doesn't have a timezone setting set
### Translations
- Arabic
- Basque
- Belarusian
- Bengali
- Catalan
- Chinese (Traditional)
- Croatian
- Czech
- Danish
- Dutch
- Esperanto
- Finnish
- French
- Gaelic
- Galician
- German
- Hebrew
- Hungarian
- Indonesian
- Italian
- Japanese
- Kabyle
- Kannada
- Norwegian Nynorsk
- Occitan
- Persian
- Polish
- Portuguese
- Portuguese (Brazil)
- Russian
- Slovenian
- Spanish
- Swedish
- Welsh
## 2.0.2 - 2021-12-22
### Changed
- Improved handling of media file deletion
- Releases and Docker image are now using Elixir 1.13
### Fixed
- Fixed position of tentative tag on event cards
- Fixed text overflow when a link is too long in event mobile view
- Fixed filtering user own memberships and group members in event organizer & contacts picker
- Fixed first day of week not depending on locale in the datetime picker
- Fixed the admin page when a group/profile/user was not found
- Fixed group members pagination on admin group profile view
- Fixed admin edition of the instance's language
### Translations
- Croatian
- Czech
- Esperanto
- German
- Hebrew
- Occitan
- Persian
- Russian
- Spanish
## 2.0.1 - 2021-11-26
### Changed
- Remove litepub context
### Fixed
- Make sure my group upcoming events are ordered by their start date
- Fix event participants pagination
- Always focus the search field after results have been fetched
- Don't sign fetches to instance actor when refreshing their keys
- Fix reject of already following instances
- Added missing timezone data to the Docker image
- Replace @tiptap/starter-kit with indidual extensions, removing unneeded extensions that caused issues on old Firefox versions
- Better handling of Friendica Update activities without actor information
- Always show pending/cancelled status on event cards
- Fixed nightly docker build
- Refresh loggeduser information before the final step of onboarding, avoiding loop when finishing onboarding
- Handle tz_world data being absent
### Translations
- Croatian (New !)
- Czech
- Gaelic
- Hungarian
- Indonesian
- Welsh (New!)
## 2.0.0 - 2021-11-23
Please read the [UPGRADE.md](https://framagit.org/framasoft/mobilizon/-/blob/main/UPGRADE.md#upgrading-from-13-to-20) file as well.
### Added
- Added possibility to follow groups and be notified from new upcoming events
- Export list of participants to CSV, `PDF` and `ODS`
- Allow to set timezone for an event. The timezone is automatically defined from the address if one is defined. If the event timezone is different than the user's current one, a toggle is shown to switch between the two.
- Added initial support for Right To Left languages (such as arabic) and [BiDi](https://en.wikipedia.org/wiki/Bidirectional_text)
- Group followers and members get an notification email by default when a group publishes a new event (subject to activity notification settings)
- Group admins can now approve or deny new memberships
- Build releases in `arm` and `arm64` format in addition to `amd64`
- Build Docker images in `arm` and `arm64` format in addition to `amd64`
- Added possibility to indicate the event is fully online
- Added possibility to search only for online events
- Added possibility to search only in past events
- Detect event, comments and posts languages automatically. Allows setting language
- Allow to change an user's password through the users.modify mix task
- Add instance setting so that only the admin can create groups
- Add instance setting so that only groups can create events
- Added JSON-LD metadata about the event in emails
- Added a quick link to email notification settings at the bottom of emails
- Allow to access Mobilizon with a specific language directly by using `https://instance.tld/lang` where `lang` is a language supported by Mobilizon
- Added organizer actor name (profile or group) in the icalendar export
- Add initial support for federation with Gancio
### Changed
- Multiple UI improvements, including post, event and participation cards, discussions and emails. The «My Events» page was also redesigned to allow showing events from your groups.
- Various accessibility improvements
- Event update notification is send to participants ~30 minutes after the event update, so that successive edits are throttled.
- Event, post and comments titles and content now have expose their detected language in HTML, for improved screen reader experience
- Delete current actor ID as well from local storage when unlogging
- Show a default text for instance contact in default terms text when no instance contact is set
- Only show locatecontrol button in leaflet map when we can do geolocation
- Disable push column in notification settings when push is not available
- Show actual language instead of language code in Users admin view
- Empty old & new passwords fields when successful password change
- Don't link to the group page from admin when actor is suspended
- Warn participants when the event organizer is suspended (and therefore the event cancelled)
- Improve metadata on public page
- Make sure some event action pages (participate remotely or without an account) don't get indexed by search engines
- Only send `Tombstone` element in `Delete` activities, not the whole previous deleted element.
- Make sure `Delete` activity are send correctly to everyone
- Only add address and tags to event icalendar export if they exist
- `master` branch has been renamed to `main`
- Mention following groups on the registration page
- Add missing group name to activity notifications
- Warn while registering and logging when the email contains uppercase characters
- Improve json-ld metadata on event live streams
- Add "eventAttendanceMode" to JSON-ld schema.org event representation
- Add "formerType" and "delete" attributes on Tombstones ActivityPub objects representation
- Improve MyEvents page description text
### Removed
- Support for Elixir <1.12andOTP<22
### Fixed
- Fix tags autocomplete
- Fix config onboarding after LDAP initial connexion
- Fix events pagination on tags page
- Fixed deduplicated files from orphan media being deleted as well
- Fix deleting own account
- Fix search returning user profiles instead of only groups
- Fix federating geo coordinates
- Fix an issue with group activity items when moving resources
- Fix an issue with Identity Picker
- Fix an issue with TagInput
- Fix an issue when leaving a group
- Fix admin settings edition
- Fix an issue when showing public page of suspended group
- Removed non existing page (`/about/mobilizon`) from sitemap
- Fix action logs containing group suspension events
- Fixed group physical address not exposed to ActivityPub
- Release front-end files are no longer in duplicate
- Only show datetime timezone toggle on event if the timezone offset is different from our own
- Fix error when determining audience for Discussion when deleting a comment
- Fix a couple of accessibility issues
- Limit to acceptable tags when pasting raw HTML into comment fields on front-end
- Fixed group map display
- Fixed updating group physical address
- Allow group members to access group drafts
- Improve group refreshment workflow
- Fixed date signature generation for federation
- Fixed an issue when duplicating a group event from another profile
- Fixed event metadata not saved on eventcreation
- Use a different pagination parameter for searched events and featured events on search page
- Fixed creating group activities when creating events with some fields
- Move release package at correct path for CI upload
- Fixed event contacts that were not exposed and fetched over federation
- Don't sign fetch when fetching actor for a given signature
- Some various HTTP signatures issues
- Fixed actor AP representation of avatar
- Handle errors when fetching actor pictures
- Fixed sending group events to followers on Mastodon
- Fixed actors avatars and banners being deleted if the same file was also an orphan media
- Fix spacing in organizer picker
- Increase number of close events and follow group events
- Fix accessing user profile in admin section
- Set initial values for some EventMetadata elements, fixing submitting them right away with no value
- Avoid giving an error page if the apollo futureParticipations query is undefined
- Fixed path to exports in production
- Fixed padding below truncated title of event cards
- Fixed exports that weren't enabled in Docker
- Fixed error page when event end date is null
- Fixed event language not being allowed to be null
### Security
- Fixed private messages sent as event replies from Mastodon that were shown publically as public comments. They are now discarded.
### Translations
- Czech
- Gaelic
- German
- Hungarian
- Indonesian
- Norwegian Nynorsk
- Occitan
- Persian
- Portuguese (Brazil)
- Russian
- Slovenian
- Spanish
## 2.0.0-rc.3 - 2021-11-22
This lists changes since 2.0.0-rc.3. Please read the [UPGRADE.md](https://framagit.org/framasoft/mobilizon/-/blob/main/UPGRADE.md#upgrading-from-13-to-20) file as well.
### Fixed
- Fixed path to exports in production
- Fixed padding below truncated title of event cards
- Fixed exports that weren't enabled in Docker
- Fixed error page when event end date is null
## 2.0.0-rc.2 - 2021-11-22
This lists changes since 2.0.0-rc.1. Please read the [UPGRADE.md](https://framagit.org/framasoft/mobilizon/-/blob/main/UPGRADE.md#upgrading-from-13-to-20) file as well.
### Changed
- Improve MyEvents page description text
### Fixed
- Fix spacing in organizer picker
- Increase number of close events and follow group events
- Fix accessing user profile in admin section
- Set initial values for some EventMetadata elements, fixing submitting them right away with no value
- Avoid giving an error page if the apollo futureParticipations query is undefined
### Translations
- German
- Hungarian
## 2.0.0-rc.1 - 2021-11-20
This lists changes since 2.0.0-beta.2. Please read the [UPGRADE.md](https://framagit.org/framasoft/mobilizon/-/blob/main/UPGRADE.md#upgrading-from-13-to-20) file as well.
### Changed
- Mention following groups on the registration page
- Add missing group name to activity notifications
- Warn while registering and logging when the email contains uppercase characters
- Improve json-ld metadata on event live streams
- Add "eventAttendanceMode" to JSON-ld schema.org event representation
- Add "formerType" and "delete" attributes on Tombstones ActivityPub objects representation
### Fixed
- Fixed creating group activities when creating events with some fields
- Move release package at correct path for CI upload
- Fixed event contacts that were not exposed and fetched over federation
- Don't sign fetch when fetching actor for a given signature
- Some various HTTP signatures issues
- Fixed actor AP representation of avatar
- Handle errors when fetching actor pictures
- Fixed sending group events to followers on Mastodon
- Fixed actors avatars and banners being deleted if the same file was also an orphan media
### Translations
- Gaelic
- Spanish
## 2.0.0-beta.2 - 2021-11-15
This lists changes since 2.0.0-beta.1. Please read the [UPGRADE.md](https://framagit.org/framasoft/mobilizon/-/blob/main/UPGRADE.md#upgrading-from-13-to-20) file as well.
### Added
- Group followers and members get an notification email by default when a group publishes a new event (subject to activity notification settings)
- Group admins can now approve or deny new memberships
- Added organizer actor name (profile or group) in the icalendar export
- Add initial support for federation with Gancio
### Changed
- Event update notification is send to participants ~30 minutes after the event update, so that successive edits are throttled.
- Event, post and comments titles and content now have expose their detected language in HTML, for improved screen reader experience
### Fixed
- Release front-end files are no longer in duplicate
- Only show datetime timezone toggle on event if the timezone offset is different from our own
- Fix error when determining audience for Discussion when deleting a comment
- Fix a couple of accessibility issues
- Limit to acceptable tags when pasting raw HTML into comment fields on front-end
- Fixed group map display
- Fixed updating group physical address
- Allow group members to access group drafts
- Improve group refreshment workflow
- Fixed date signature generation for federation
- Fixed an issue when duplicating a group event from another profile
- Fixed event metadata not saved on eventcreation
- Use a different pagination parameter for searched events and featured events on search page
### Translations
- Gaelic
- Spanish
## 2.0.0-beta.1 - 2021-11-09
Please read the [UPGRADE.md](https://framagit.org/framasoft/mobilizon/-/blob/main/UPGRADE.md#upgrading-from-13-to-20) file as well.
### Added
- Added possibility to follow groups and be notified from new upcoming events
- Export list of participants to CSV, `PDF` and `ODS`
- Allow to set timezone for an event. The timezone is automatically defined from the address if one is defined. If the event timezone is different than the user's current one, a toggle is shown to switch between the two.
- Added initial support for Right To Left languages (such as arabic) and [BiDi](https://en.wikipedia.org/wiki/Bidirectional_text)
- Build releases in `arm` and `arm64` format in addition to `amd64`
- Build Docker images in `arm` and `arm64` format in addition to `amd64`
- Added possibility to indicate the event is fully online
- Added possibility to search only for online events
- Added possibility to search only in past events
- Detect event, comments and posts languages automatically. Allows setting language
- Allow to change an user's password through the users.modify mix task
- Add instance setting so that only the admin can create groups
- Add instance setting so that only groups can create events
- Added JSON-LD metadata about the event in emails
- Added a quick link to email notification settings at the bottom of emails
- Allow to access Mobilizon with a specific language directly by using `https://instance.tld/lang` where `lang` is a language supported by Mobilizon
### Changed
- Multiple UI improvements, including post, event and participation cards, discussions and emails. The «My Events» page was also redesigned to allow showing events from your groups.
- Various accessibility improvements
- Delete current actor ID as well from local storage when unlogging
- Show a default text for instance contact in default terms text when no instance contact is set
- Only show locatecontrol button in leaflet map when we can do geolocation
- Disable push column in notification settings when push is not available
- Show actual language instead of language code in Users admin view
- Empty old & new passwords fields when successful password change
- Don't link to the group page from admin when actor is suspended
- Warn participants when the event organizer is suspended (and therefore the event cancelled)
- Improve metadata on public page
- Make sure some event action pages (participate remotely or without an account) don't get indexed by search engines
- Only send `Tombstone` element in `Delete` activities, not the whole previous deleted element.
- Make sure `Delete` activity are send correctly to everyone
- Only add address and tags to event icalendar export if they exist
- `master` branch has been renamed to `main`
### Removed
- Support for Elixir <1.12andOTP<22
### Fixed
- Fix tags autocomplete
- Fix config onboarding after LDAP initial connexion
- Fix events pagination on tags page
- Fixed deduplicated files from orphan media being deleted as well
- Fix deleting own account
- Fix search returning user profiles instead of only groups
- Fix federating geo coordinates
- Fix an issue with group activity items when moving resources
- Fix an issue with Identity Picker
- Fix an issue with TagInput
- Fix an issue when leaving a group
- Fix admin settings edition
- Fix an issue when showing public page of suspended group
- Removed non existing page (`/about/mobilizon`) from sitemap
- Fix action logs containing group suspension events
- Fixed group physical address not exposed to ActivityPub
### Security
- Fixed private messages sent as event replies from Mastodon that were shown publically as public comments. They are now discarded.
### Translations
- Czech
- Gaelic
- German
- Indonesian
- Norwegian Nynorsk
- Occitan
- Persian
- Portuguese (Brazil)
- Russian
- Slovenian
- Spanish
## 1.3.2 - 2021-08-23
### Fixed
@ -79,7 +756,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Fixed token refreshment issues
- Fixed search from 404 page
### Translations
- Catalan
@ -105,6 +781,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Fixed group discussions with deleted comments
## 1.2.2 - 2021-07-01
### Changed
- Improved UI for participations when message is too long
@ -131,6 +808,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Fixed compatibility check in Notification section for service workers
## 1.2.0 - 2021-06-29
### Added
- **Notifications for various group and event activity, both by email and browser push notifications. Daily and weekly digests are also available.**
@ -498,6 +1176,7 @@ This version introduces a new way to install and host Mobilizon: Elixir releas
- Hungarian
- Russian
- Spanish
## 1.1.0-rc.1 - 2021-03-29
### Added
@ -545,11 +1224,13 @@ This version introduces a new way to install and host Mobilizon: Elixir releas
## 1.1.0-beta.6 - 2021-03-17
### Fixed
- Fixed a typo in range/radius showing the wrong radius for close events on homepage
## 1.1.0-beta.5 - 2021-03-17
### Fixed
- Fixed a typo in range/radius preventing close events from showing up
## 1.1.0-beta.4 - 2021-03-17
@ -563,15 +1244,18 @@ This version introduces a new way to install and host Mobilizon: Elixir releas
## 1.1.0-beta.3 - 2021-03-16
### Fixed
- Handle ActivityPub Fetcher returning text that's not JSON
- Fix accessing a group profile when not a member
## 1.1.0-beta.2 - 2021-03-16
### Fixed
- Fixed geospatial configuration only being evaluated at compile-time, not at runtime
### Translations
- Slovenian
## 1.1.0-beta.1 - 2021-03-10
@ -713,23 +1397,23 @@ This version introduces a new way to install and host Mobilizon: Elixir releas
### Special operations
* **Reattach media files to their entity.**
- **Reattach media files to their entity.**
When media files were uploaded and added in events and posts bodies, they were only attached to the profile that uploaded them, not to the event or post. This task attaches them back to their entity so that the command to clean orphan media files doesn't remove them.
* **Refresh remote profiles to save avatars locally**
- **Refresh remote profiles to save avatars locally**
Profile avatars and banners were previously only proxified and cached. Now we save them locally. Refreshing all remote actors will save profile media locally instead.
***imagemagick and webp are now a required dependency** to build Mobilizon.
-**imagemagick and webp are now a required dependency** to build Mobilizon.
Optimized versions of Mobilizon's pictures are now produced during front-end build.
See [the documentation](https://docs.joinmobilizon.org/administration/dependencies/#misc) to make sure these dependencies are installed.
@ -781,6 +1465,7 @@ This version introduces a new way to install and host Mobilizon: Elixir releas
### Translations
Updated translations:
- Catalan
- Dutch
- English
@ -953,14 +1638,15 @@ Updated translations:
### Special operations
* We added `application/ld+json` as acceptable MIME type for ActivityPub requests, so you'll need to recompile the `mime` library we use before recompiling Mobilizon:
- We added `application/ld+json` as acceptable MIME type for ActivityPub requests, so you'll need to recompile the `mime` library we use before recompiling Mobilizon:
```
MIX_ENV=prod mix deps.clean mime --build
```
* The [nginx configuration](https://framagit.org/framasoft/mobilizon/-/blob/master/support/nginx/mobilizon.conf) has been changed with improvements and support for custom error pages.
- The [nginx configuration](https://framagit.org/framasoft/mobilizon/-/blob/main/support/nginx/mobilizon.conf) has been changed with improvements and support for custom error pages.
* The cmake dependency has been added (see [our documentation](https://docs.joinmobilizon.org/administration/dependencies/#basic-tools))
- The cmake dependency has been added (see [our documentation](https://docs.joinmobilizon.org/administration/dependencies/#basic-tools))
### Added
@ -995,15 +1681,17 @@ Updated translations:
## [1.0.0-beta.3] - 2020-06-24
### Special operations
Config has moved from `.env` files to a more traditional way to handle things in the Elixir world, with `.exs` files.
To migrate existing configuration, you can simply run `mix mobilizon.instance gen` and fill in the adequate values previously in `.env` files (you don't need to perform the operations to create the database).
A minimal file template [is available](https://framagit.org/framasoft/mobilizon/blob/master/priv/templates/config.template.eex) to check for missing configuration.
A minimal file template [is available](https://framagit.org/framasoft/mobilizon/blob/main/priv/templates/config.template.eex) to check for missing configuration.
Also make sure to remove the `EnvironmentFile=` line from the systemd service and set `Environment=MIX_ENV=prod` instead. See [the updated file](https://framagit.org/framasoft/mobilizon/blob/master/support/systemd/mobilizon.service).
Also make sure to remove the `EnvironmentFile=` line from the systemd service and set `Environment=MIX_ENV=prod` instead. See [the updated file](https://framagit.org/framasoft/mobilizon/blob/main/support/systemd/mobilizon.service).
### Added
- Possibility to participate to an event without an account (confirmation through email required)
- Possibility to participate to a remote event (being redirected by providing federated identity)
- Possibility to add a note as a participant when event participation is manually validated (required when participating without an account)
@ -1020,6 +1708,7 @@ Also make sure to remove the `EnvironmentFile=` line from the systemd service an
- Allow user to change language
### Changed
- Configuration handling (see above)
- Improved a bit color theme
- Signature validation also now checks if `Date` header has acceptable values
@ -1030,6 +1719,7 @@ Also make sure to remove the `EnvironmentFile=` line from the systemd service an
- Improved public event page
### Fixed
- Fixed URL search
- Fixed content accessed through URL search being public
- Fix event links in some emails
@ -1037,17 +1727,21 @@ Also make sure to remove the `EnvironmentFile=` line from the systemd service an
## [1.0.0-beta.2] - 2019-12-18
### Special operations
These two operations couldn't be handled during migrations.
They are optional, but you won't be able to search or get participant stats on existing events if they are not executed.
These commands will be removed in Mobilizon 1.0.0-beta.3.
In order to populate search index for existing events, you need to run the following command (with prod environment):
* `mix mobilizon.setup_search`
- `mix mobilizon.setup_search`
In order to move participant stats to the event table for existing events, you need to run the following command (with prod environment):
* `mix mobilizon.move_participant_stats`
- `mix mobilizon.move_participant_stats`
### Added
- Federation is active
- Added an interface for admins to view and manage instance followers and followings
- Ability to comment below events
@ -1072,6 +1766,7 @@ In order to move participant stats to the event table for existing events, you n
- Upgraded frontend and backend dependencies
### Changed
- Move participant stats to event table **(read special instructions above)**
- Limit length (20 characters) and number (10) of tags allowed
- Added some backend changes and validation for field length
@ -1085,6 +1780,7 @@ In order to move participant stats to the event table for existing events, you n
- Also consider the PeerTube `CommentsEnabled` property to know if you can reply to an event
### Fixed
- Fix event URL validation and check if hostname is correct before showing it
- Fix participations stats on the MyEvents page
- Fix event description lists margin
@ -1114,8 +1810,11 @@ In order to move participant stats to the event table for existing events, you n
- Fixed event HTML representation when `GET` request has no `Accept` header
# can be `:always`. If your smtp relay requires authentication set it to `:always`.
auth: :if_available
```
# Upgrading from 1.3 to 2.0
Requirements dependencies depend on the way Mobilizon is installed.
## New Elixir version requirement
### Docker and Release install
You are already using latest Elixir version in the release tarball and Docker images.
### Source install
**Elixir 1.12 and Erlang OTP 22 are now required**. If your distribution or the repositories from Erlang Solutions don't provide these versions, you need to uninstall the current versions and install [Elixir](https://github.com/asdf-vm/asdf-elixir) through the [ASDF tool](https://asdf-vm.com/).
## Geographic timezone data
Mobilizon 2.0 uses data based on [timezone-boundary-builder](https://github.com/evansiroky/timezone-boundary-builder) (which is based itself on OpenStreetMap data) to determine the timezone of an event automatically, based on it's geocoordinates. However, this needs ~700Mio of disk, so we don't redistribute data directly, depending on the case. It's possible to skip this part, but users will need to manually pick the timezone for every event they created when it has a different timezone from their own.
### Docker install
The geographic timezone data is already bundled into the image, you have nothing to do.
### Release install
In order to keep the release tarballs light, the geographic timezone data is not bundled directly. You need to download the data:
- either raw from Github, but **requires an extra ~1Gio of memory** to process the data
In both cases, ~700Mio of disk will be used. You may use the following configuration to specify where the data is expected if you decide to change it from the default location (`/var/lib/mobilizon/timezones`):
```elixir
config :tz_world, data_dir: "/some/place"
```
### Source install
You need to download the data:
- either raw from Github, but **requires an extra ~1Gio of memory** to process the data
This path can be configured, see [the dedicated docs page about this](https://docs.joinmobilizon.org/administration/configure/exports/).
Files in this folder are temporary and are cleaned once an hour.
## New optional dependencies
These are optional, installing them will allow Mobilizon to export to PDF and ODS as well. Mobilizon 2.0 allows to export the participant list, but more is planned.
### Docker
Everything is included in our Docker image.
### Release and source install
New optional Python dependencies:
- `Python` >= 3.6
- `weasyprint` for PDF export (with [a few extra dependencies](https://doc.courtbouillon.org/weasyprint/stable/first_steps.html))
- `pyexcel-ods3` for ODS export (no extra dependencies)
Both can be installed through pip. You need to enable and configure exports for PDF and ODS in the configuration afterwards. Read [the dedicated docs page about this](https://docs.joinmobilizon.org/administration/configure/exports/).
# Upgrading from 1.0 to 1.1
The 1.1 version of Mobilizon brings Elixir releases support. An Elixir release is a self-contained directory that contains all of Mobilizon's code (front-end and backend), it's dependencies, as well as the Erlang Virtual Machine and runtime (only the parts you need). As long as the release has been assembled on the same OS and architecture, it can be deploy and run straight away. [Read more about releases](https://elixir-lang.org/getting-started/mix-otp/config-and-releases.html#releases).
## Comparison
Migrating to releases means:
* You only get a precompiled binary, so you avoid compilation times when updating
* No need to have Elixir/NodeJS installed on the system
* Code/data/config location is more common (/opt, /var/lib, /etc)
* More efficient, as only what you need from the Elixir/Erlang standard libraries is included and all of the code is directly preloaded
* You can't hardcode modifications in Mobilizon's code
- You only get a precompiled binary, so you avoid compilation times when updating
- No need to have Elixir/NodeJS installed on the system
- Code/data/config location is more common (/opt, /var/lib, /etc)
- More efficient, as only what you need from the Elixir/Erlang standard libraries is included and all of the code is directly preloaded
- You can't hardcode modifications in Mobilizon's code
Staying on source releases means:
* You need to recompile everything with each update
* Compiling frontend and backend has higher system requirements than just running Mobilizon
* You can change things in Mobilizon's code and recompile right away to test changes
- You need to recompile everything with each update
- Compiling frontend and backend has higher system requirements than just running Mobilizon
- You can change things in Mobilizon's code and recompile right away to test changes
## Releases
If you want to migrate to releases, [we provide a full guide](https://docs.joinmobilizon.org/administration/upgrading/source_to_release/). You may do this at any time.
## Source install
To stay on a source release, you just need to check the following things:
* Rename your configuration file `config/prod.secret.exs` to `config/runtime.exs`.
* If your config file includes `server: true` under `Mobilizon.Web.Endpoint`, remove it.
- Rename your configuration file `config/prod.secret.exs` to `config/runtime.exs`.
- If your config file includes `server: true` under `Mobilizon.Web.Endpoint`, remove it.
```diff
config :mobilizon, Mobilizon.Web.Endpoint,
- server: true,
```
* The uploads default directory is now `/var/lib/mobilizon/uploads`. To keep it in the previous `uploads/` directory, just add the following line to `config/runtime.exs`:
- The uploads default directory is now `/var/lib/mobilizon/uploads`. To keep it in the previous `uploads/` directory, just add the following line to `config/runtime.exs`:
Or you may use any other directory where the `mobilizon` user has write permissions.
* The GeoIP database default directory is now `/var/lib/mobilizon/geo/GeoLite2-City.mmdb`. To keep it in the previous `priv/data/GeoLite2-City.mmdb` directory, just add the following line to `config/runtime.exs`:
- The GeoIP database default directory is now `/var/lib/mobilizon/geo/GeoLite2-City.mmdb`. To keep it in the previous `priv/data/GeoLite2-City.mmdb` directory, just add the following line to `config/runtime.exs`:
"We collect your feedback and the error information in order to improve this service."
)
}}</span
>
<spanv-else>
{{
$t(
"We improve this software thanks to your feedback. To let us know about this issue, two possibilities (both unfortunately require user account creation):"
"A user-friendly, emancipatory and ethical tool for gathering, organising, and mobilising.":"Et brugervenligt, befriende og etisk værktøj for at samles, organisere og mobilisere.",
"A validation email was sent to {email}":"En godkendelsesemail er blevet sendt til {email}",
"Abandon editing":"Afbryd redigering",
"About":"Om",
"About Mobilizon":"Om Mobilizon",
"About this event":"Om denne begivenhed",
"About this instance":"Om denne udbyder",
"Accepted":"Accepteret",
"Account":"Konto",
"Add":"Tilføj",
"Add a note":"Tilføj et notat",
"Add an address":"Tilføj en addresse",
"Add an instance":"Tilføj en udbyder",
"Add some tags":"Tilføj nogle nøgleord",
"Add to my calendar":"Tilføj til min kalender",
"Additional comments":"Yderligere kommentarer",
"Admin":"Administrator",
"Admin settings successfully saved.":"Administrator indstillinger er blevet gemt.",
"Administration":"Administrering",
"All the places have already been taken":"Alle pladserne er allerede optaget",
"Allow registrations":"Tillad registrering",
"Anonymous participant":"Anonym deltager",
"Anonymous participants will be asked to confirm their participation through e-mail.":"Anonyme deltagere vil blive bedt om at bekræfte deres deltagelse via e-mail.",
"Anonymous participations":"Anonyme deltagelser",
"Are you really sure you want to delete your whole account? You'll lose everything. Identities, settings, events created, messages and participations will be gone forever.":"Er du helt sikker på at du vil slette hele din konto? Alt vil forsvinde. Identiteter, indstillinger, skabte begivenheder, beskeder og deltagelser vil være borte for evigt.",
"Are you sure you want to <b>delete</b> this comment? This action cannot be undone.":"Er du sikker på at du vil <b>slette</b> kommentaren? Denne handling kan ikke fortrydes.",
"Are you sure you want to <b>delete</b> this event? This action cannot be undone. You may want to engage the discussion with the event creator or edit its event instead.":"Er du sikker på at du vil <b>slette</b> begivenheden? Denne handling kan ikke fortrydes. Du kan overveje at snakke med begivenhedens skaber eller at redigere begivenheden i stedet.",
"Are you sure you want to cancel the event creation? You'll lose all modifications.":"Er du sikker på at du vil annullere at skabe begivenheden? Alle ændringer vil gå tabt.",
"Are you sure you want to cancel the event edition? You'll lose all modifications.":"Er du sikker på at du vil annullere at redigere begivenheden? Alle ændringer vil gå tabt.",
"Are you sure you want to cancel your participation at event \"{title}\"?":"Er du sikker på at du vil annullere din deltagelse i begivenheden \"{title}\"?",
"Are you sure you want to delete this event? This action cannot be reverted.":"Er du sikker på du vil slette begivenheden? Denne handling kan ikke fortrydes.",
"Avatar":"Avatar",
"Back to previous page":"Tilbage til forrige side",
"Before you can login, you need to click on the link inside it to validate your account.":"Før du kan logge ind skal du klikke på linket i den for at bekræfte din konto.",
"Cancel my participation request…":"Annuller min anmodning om deltagelse…",
"Cancel my participation…":"Annuller min deltagelse…",
"Cancelled: Won't happen":"Afbrudt: Sker ikke",
"Change":"Ændre",
"Change my email":"Skift email",
"Change my identity…":"Ændre min identitet…",
"Change my password":"Skift kodeord",
"Clear":"Ryd",
"Click to upload":"Klik for at uploade",
"Close":"Luk",
"Close comments for all (except for admins)":"Luk kommentarer for alle (undtagen administratorer)",
"Closed":"Lukket",
"Comment deleted":"Kommentar slettet",
"Comment from @{username} reported":"Kommentaren fra @{username} er blevet indberettet",
"Comments":"Kommentarer",
"Confirm my participation":"Bekræft min deltagelse",
"Confirmed: Will happen":"Bekræftet: Kommer til at ske",
"Continue editing":"Fortsæt med at redigere",
"Country":"Land",
"Create":"Skab",
"Create a new event":"Lav en ny begivenhed",
"Create a new group":"Lav en ny gruppe",
"Create a new identity":"Lav en ny identitet",
"Create group":"Skab en gruppe",
"Create my event":"Skab min begivenhed",
"Create my group":"Skab min gruppe",
"Create my profile":"Skab min profil",
"Create token":"Skab token",
"Current identity has been changed to {identityName} in order to manage this event.":"Den aktive identitet er blevet ændret til {identityName} for at håndtere denne begivenhed.",
"Current page":"Nuværende side",
"Custom":"Tilpasset",
"Custom URL":"Tilpasset addresse",
"Custom text":"Tilpasset tekst",
"Dashboard":"Dashboard",
"Date":"Dato",
"Date and time settings":"Dato og tidsinstillinger",
"Deleting my account will delete all of my identities.":"Hvis jeg sletter min konto, bliver alle mine identiteter slettet.",
"Deleting your Mobilizon account":"Sletter din Mobilizon konto",
"Description":"Beskrivelse",
"Display name":"Viste navn",
"Display participation price":"Vis pris for deltagelse",
"Domain":"Domæne",
"Draft":"Kladde",
"Drafts":"Kladder",
"Edit":"Rediger",
"Eg: Stockholm, Dance, Chess…":"F.eks.: Stockholm, Dans, Skak…",
"Either on the {instance} instance or on another instance.":"Enten på {instance} udbyderen eller på en anden udbyder.",
"Either the account is already validated, either the validation token is incorrect.":"Enten er kontoen allerede godkendt, eller valideringskoden forkert.",
"Either the email has already been changed, either the validation token is incorrect.":"Enten er emailadressen allerede blevet ændret, eller valideringskoden er forkert.",
"Either the participation request has already been validated, either the validation token is incorrect.":"Enten er deltagelsesanmodningen allerede blevet godkendt, eller valideringskoden er forkert.",
"Email":"Email",
"Ends on…":"Slutter…",
"Enter the link URL":"Indtast linket",
"Error while changing email":"Fejl under ændring af emailadresse",
"Error while validating account":"Fejl under godkendelse af konto",
"Error while validating participation request":"Fejl under godkendelse af deltagelsesanmodning",
"Event":"Begivenhed",
"Event already passed":"Begivenheden er ovre",
"Event cancelled":"Begivenheden er aflyst",
"Event creation":"Skabelse af begivenhed",
"Event edition":"Redigering af begivenhed",
"Event list":"Liste af begivenheder",
"Event page settings":"Indstillinger for begivenhedens side",
"Event to be confirmed":"Begivenheden skal bekræftes",
"Event {eventTitle} deleted":"Begivenheden {eventTitle} blev slettet",
"Event {eventTitle} reported":"Begivenheden {eventTitle} blev indmeldt",
"Events":"Begivenheder",
"Ex: mobilizon.fr":"F.eks: mobilizon.fr",
"Explore":"Udforsk",
"Failed to save admin settings":"Kunne ikke gemme admin indstillinger",
"From the {startDate} at {startTime} to the {endDate}":"Fra d. {startDate} kl. {startTime} til d. {endDate}",
"From the {startDate} at {startTime} to the {endDate} at {endTime}":"Fra d. {startDate} kl. {startTime} til d. {endDate} kl. {endTime}",
"From the {startDate} to the {endDate}":"Fra d. {startDate} til d. {endDate}",
"Gather ⋅ Organize ⋅ Mobilize":"Samles ⋅ Organiser ⋅ Mobiliser",
"General":"Generelt",
"General information":"Generel information",
"Getting location":"Henter placering",
"Go":"Gå",
"Group name":"Gruppenavn",
"Group {displayName} created":"Gruppen {displayName} er oprettet",
"Groups":"Grupper",
"Headline picture":"Hovedbillede",
"Hide replies":"Skjul svar",
"I create an identity":"Jeg skaber en identitet",
"I don't have a Mobilizon account":"Jeg har ikke en Mobilizon konto",
"I have a Mobilizon account":"Jeg har en Mobilizon konto",
"I have an account on another Mobilizon instance.":"Jeg har en konto på en anden Mobilizon udbyder.",
"I participate":"Jeg deltager",
"I want to allow people to participate without an account.":"Jeg vil lade personer uden en konto deltage.",
"I want to approve every participation request":"Jeg vil godkende for alle deltagelsesanmodninger",
"Identity {displayName} created":"Identiteten {displayName} er skabt",
"Identity {displayName} deleted":"Identiteten {displayName} er slettet",
"Identity {displayName} updated":"Identiteten {displayName} er opdateret",
"If an account with this email exists, we just sent another confirmation email to {email}":"Hvis en konto med denne emailadresse findes, har vi lige sendt en bekræftelsesmail til {email}",
"If this identity is the only administrator of some groups, you need to delete them before being able to delete this identity.":"Hvis denne identitet er den eneste administrator af nogle grupper, skal du slette grupperne før du kan slette identiteten.",
"If you want, you may send a message to the event organizer here.":"Hvis du vil kan du sende en besked til begivenhedens arrangør her.",
"Instance Name":"Udbyderens navn",
"Instance Terms":"Udbyderens brugsvilkår",
"Instance Terms Source":"Kilde til udbyderens vilkår",
"Instance Terms URL":"Adresse til udbyderens vilkår",
"Instance settings":"Indstillinger for udbyderen",
"Instances":"Udbydere",
"Join <b>{instance}</b>, a Mobilizon instance":"Bliv medlem af <b>{instance}</b>, en Mobilizon udbyder",
"Last published event":"Nyeste begivenhed",
"Last week":"Sidste uge",
"Learn more":"Lær mere",
"Learn more about Mobilizon":"Lær mere om Mobilizon",
"Limited number of places":"Begrænset antal pladser",
"Load more":"Indlæs flere",
"Locality":"Sted",
"Log in":"Log ind",
"Log out":"Log ud",
"Login":"Log ind",
"Login on Mobilizon!":"Log ind på Mobilizon!",
"Login on {instance}":"Log ind på {instance}",
"Manage participations":"Håndter deltagelser",
"Mark as resolved":"Marker som løst",
"Members":"Medlemmer",
"Message":"Besked",
"Mobilizon is a federated network. You can interact with this event from a different server.":"Mobilizon er et føderalt netværk. Du kan interagere med denne begivenhed fra andre udbydere.",
"Moderated comments (shown after approval)":"Modererede kommentarer (vist efter godkendelse)",
"Moderation":"Moderering",
"Moderation log":"Moderationslog",
"My account":"Min konto",
"My events":"Mine begivenheder",
"My identities":"Mine identiteter",
"Name":"Navn",
"New email":"Ny email",
"New note":"Nyt notat",
"New password":"Nyt kodeord",
"New profile":"Ny profil",
"Next page":"Næste side",
"No address defined":"Ingen adresse givet",
"No closed reports yet":"Ingen behandlede indmeldinger endnu",
"No comment":"Ingen kommentar",
"No comments yet":"Ingen kommentarer endnu",
"No end date":"Ingen slutdato",
"No events found":"Ingen begivenheder fundet",
"No group found":"Ingen gruppe fundet",
"No groups found":"Ingen grupper fundet",
"No instance follows your instance yet.":"Ingen udbydere følger din udbyder endnu.",
"No instance to approve|Approve instance|Approve {number} instances":"Ingen udbydere at godkende|Godkend udbyder|Godkend {number} udbydere",
"No instance to reject|Reject instance|Reject {number} instances":"Ingen udbydere at afvise|Afvis udbyder|Afvis {number} udbydere",
"No instance to remove|Remove instance|Remove {number} instances":"Ingen udbydere at fjerne|Fjern udbyder|Fjern {number} udbydere",
"No message":"Ingen besked",
"No open reports yet":"Ingen åbne indmeldinger endnu",
"No participant to approve|Approve participant|Approve {number} participants":"Ingen deltagere at godkende|Godkend deltager|Godkend {number} deltagere",
"No participant to reject|Reject participant|Reject {number} participants":"Ingen deltagere at afvise|Afvis deltagere|Afvis {number} deltagere",
"No resolved reports yet":"Ingen løste indmeldinger endnu",
"No results for \"{queryText}\"":"Ingen resultater for \"{queryText}\"",
"Notes":"Notater",
"Number of places":"Antal steder",
"OK":"OK",
"Old password":"Gammelt kodeord",
"Please do not use it in any real way.":"Brug det venligst ikke som andet end en prøve."