`
+- `--http-retry-queue-file` flag becomes `--retry-queue-filepath`.
+- `retry-queue-filepath` default value changed from `/tmp/airtime_analyzer_http_retries` to `retry_queue` in the working directory.
+
+### New configuration schema and validation
+
+The configuration file parsing was improved with validation and the configuration schema was updated. Some deprecated fields were removed and other were renamed.
+
+The `general` section has been changed:
+
+- the `general.web_server_user` entry was removed
+- the `general.cache_ahead_hours` entry now defaults to 1
+- the `general.airtime_dir` entry is deprecated and can be removed
+- the `general.station_id` entry is deprecated and can be removed
+- the `general.protocol` (`http` or `https`) entry is recommended over the `general.force_ssl` entry.
+- the `general.force_ssl` entry should either be removed or set to a value (`true` or `false`), an empty value will fail validation.
+
+The storage (`current_backend`) section has been changed:
+
+- the `current_backend.storage_backend` entry now defaults to the only valid value `file`.
+
+:::note
+
+You can remove the entire `current_backend` section from your configuration file.
+
+:::
+
+The `database` section has been changed:
+
+- the `database.*` entries now have defaults
+- the `database.port` entry was added and defaults to `5432`
+- the `database.dbname` entry was renamed to `database.name`
+- the `database.dbuser` entry was renamed to `database.user`
+- the `database.dbpass` entry was renamed to `database.password`
+
+The `rabbitmq` section has been changed:
+
+- the `rabbitmq.*` entries now have defaults
+
+The `pypo` section has been changed:
+
+- the `pypo` section was renamed to `playout`
+- the `pypo.ls_*` entries were renamed to `playout.liquidsoap_*`
+- the `pypo.*_dir` entries were removed
+- the `pypo.api_client` entry was removed
+- the `pypo.record_file_type` entry was renamed to `playout.record_file_format`
+- the `pypo.base_recorded_files` entry was removed
+- the `pypo.poll_interval` entry was removed
+- the `pypo.push_interval` entry was removed
+- the `pypo.cue_style` entry was removed
+
+The deprecated sections `monit` and `facebook` are unused, they can be removed from your configuration file.
+
+Unless you use a custom auth backend, the `ldap` section can be removed from your configuration file.
+
+Remove any quoted values in your configuration file, validation might fail otherwise. See the following example:
+
+```ini
+# The previously quoted value
+ls_port = '1234'
+# should become
+liquidsoap_port = 1234
+```
+
+Please see the [configuration documentation](../admin-manual/setup/configuration.md) for more details.
+
+### Environment variables
+
+The API configuration environment variables names changed:
+
+- `LIBRETIME_CONF_DIR` was removed
+- `LIBRETIME_CONF_FILE` was renamed to `LIBRETIME_CONFIG_FILEPATH`
+
+The Analayzer configuration environment variables names changed:
+
+- `LIBRETIME_CONF_DIR` environment variable was replaced with `LIBRETIME_CONFIG_FILEPATH`.
+
+The Worker configuration environment variables names changed:
+
+- `RMQ_CONFIG_FILE` was renamed to `LIBRETIME_CONFIG_FILEPATH`.
+
+### Log files new paths
+
+When running Playout from the command line, the service will not log to a file by default.
+When running Playout as a systemd service, the log file moved from `/var/log/airtime/pypo/pypo.log` to `/var/log/libretime/playout.log`
+
+The Playout Notify log file at `/var/log/airtime/pypo-liquidsoap/notify.log` was removed and merged into the existing `/var/log/libretime/liquidsoap.log` log file.
+
+When running Liquidsoap from the command line, the service will not log to a file by default.
+When running Liquidsoap as a systemd service, the log file moved from `/var/log/airtime/pypo-liquidsoap/ls_script.log` to `/var/log/libretime/liquidsoap.log`
+
+The Legacy log file moved from `/var/log/airtime/zendphp.log` to `/var/log/libretime/legacy.log`
+
+The API log file moved from `/var/log/airtime/api.log` to `/var/log/libretime/api.log`
+
+Run the following command to create the new and clean the old log directory:
+
+```bash
+sudo mkdir -p /var/log/libretime
+sudo chown -R www-data:www-data /var/log/libretime
+
+sudo rm -rf /var/log/airtime
+```
+
+### Services new working directories
+
+When running Playout as a systemd service, the working directory changed from `/var/tmp/airtime/pypo/` to `/var/lib/libretime/playout`. When running from the command line, the users current working directory is now used by default.
+
+When running Liquidsoap as a systemd service, the working directory is now `/var/lib/libretime/playout`. When running from the command line, the users current working directory is now used by default.
+
+When running Analyzer as a systemd service, the working directory is now `/var/lib/libretime/analyzer`.
+
+When running Worker (celery) as a systemd service, the working directory changed from `/srv/airtime` to `/var/lib/libretime/worker`.
+
+Run the following command to clean the old directory:
+
+```bash
+sudo rm -rf /var/tmp/airtime/pypo/
+```
+
+### Analyzer new `ffmpeg` based steps
+
+The Analyzer now requires `ffmpeg`. The `silan` system dependency and the `rgain3` python package and it's system dependencies can be removed.
+
+Run the following command to clean the old packages:
+
+```bash
+sudo apt purge silan
+
+sudo apt purge \
+ gir1.2-gtk-3.0 \
+ libcairo2-dev \
+ libgirepository1.0-dev \
+ libglib2.0-dev \
+ pkg-config \
+ python3-cairo \
+ python3-dev \
+ python3-gi \
+ python3-gi-cairo \
+ python3-gst-1.0
+sudo pip3 uninstall rgain3
+```
+
+### No static files for the API
+
+The API does not rely on static files in production anymore.
+
+Run the following command to clean the old files:
+
+```bash
+sudo rm -rf /usr/share/airtime/api
+```
+
+## :warning: Known issues
+
+The following issues may need a workaround for the time being. Please search the [issues](https://github.com/libretime/libretime/issues) before reporting problems not listed below.
+
+### Ubuntu 18.04 Playout Status
+
+The playout status notifications in the web interface are not working. The issue
+is tracked in [#1606](https://github.com/libretime/libretime/issues/1606). The
+playout works correctly and can be heard in Icecast, however the **On Air**
+button is greyed out and the status reported on the **Streams** status page can
+report errors connecting to Liquidsoap. The current workaround is to upgrade the
+server to Ubuntu 20.04.
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/releases/3.0.0-alpha.12.md b/website/versioned_docs/version-3.0.0-alpha.12/releases/3.0.0-alpha.12.md
new file mode 100644
index 000000000..6f059c899
--- /dev/null
+++ b/website/versioned_docs/version-3.0.0-alpha.12/releases/3.0.0-alpha.12.md
@@ -0,0 +1,23 @@
+---
+title: LibreTime 3.0.0 alpha 12
+---
+
+import ReleaseHead from './\_release-head.md';
+
+
+
+## :sparkling_heart: Contributors
+
+The LibreTime project wants to thank the following contributors for authoring PRs to this release:
+
+- @jooola
+- @paddatrapper
+
+## :bug: Bug fixes
+
+- **playout:** add locales to libretime-playout-notify calls ([#1715](https://github.com/libretime/libretime/issues/1715))
+- **worker:** enable logfile variable expansion in ExecStart ([#1717](https://github.com/libretime/libretime/issues/1717))
+
+## :memo: Colophon
+
+This release mainly fixes bugs present in the [3.0.0-alpha.11 release](./3.0.0-alpha.11.md).
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/releases/README.md b/website/versioned_docs/version-3.0.0-alpha.12/releases/README.md
new file mode 100644
index 000000000..858a5c2cf
--- /dev/null
+++ b/website/versioned_docs/version-3.0.0-alpha.12/releases/README.md
@@ -0,0 +1,15 @@
+---
+title: Releases
+---
+
+:::info
+
+LibreTime is following [semantic versioning](https://semver.org/).
+
+:::
+
+:::note
+
+:sparkles: New LibreTime versions are released when it is ready :tm:.
+
+:::
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/releases/_category_.yml b/website/versioned_docs/version-3.0.0-alpha.12/releases/_category_.yml
new file mode 100644
index 000000000..0aa7eb9ab
--- /dev/null
+++ b/website/versioned_docs/version-3.0.0-alpha.12/releases/_category_.yml
@@ -0,0 +1,2 @@
+label: Releases
+position: 50
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/releases/_release-head.md b/website/versioned_docs/version-3.0.0-alpha.12/releases/_release-head.md
new file mode 100644
index 000000000..015623113
--- /dev/null
+++ b/website/versioned_docs/version-3.0.0-alpha.12/releases/_release-head.md
@@ -0,0 +1,16 @@
+import TarballLink from '@site/src/components/TarballLink';
+
+This version was released the {props.date}.
+
+:::info
+
+Please report new issues and/or feature requests in [the issue tracker](https://github.com/libretime/libretime/issues).
+
+Join our [discourse](https://discourse.libretime.org/) or chat with us on our [mattermost](https://chat.libretime.org/) if you need help and for general discussion.
+
+:::
+
+
+The full tarball for the {props.version}
release of
+LibreTime is available here.
+
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/releases/unreleased.md b/website/versioned_docs/version-3.0.0-alpha.12/releases/unreleased.md
new file mode 100644
index 000000000..1148f5269
--- /dev/null
+++ b/website/versioned_docs/version-3.0.0-alpha.12/releases/unreleased.md
@@ -0,0 +1,25 @@
+---
+title: Unreleased
+---
+
+import ReleaseHead from './\_release-head.md';
+
+
+
+## :sparkling_heart: Contributors
+
+The LibreTime project wants to thank the following contributors for authoring PRs to this release:
+
+## :rocket: Features
+
+## :bug: Bug fixes
+
+## :fire: Deprecation and removal
+
+## :arrow_up: Upgrading
+
+## :warning: Known issues
+
+The following issues may need a workaround for the time being. Please search the [issues](https://github.com/libretime/libretime/issues) before reporting problems not listed below.
+
+## :memo: Colophon
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/README.md b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/README.md
new file mode 100644
index 000000000..44be95064
--- /dev/null
+++ b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/README.md
@@ -0,0 +1,21 @@
+---
+title: User manual
+---
+
+Welcome to the **LibreTime user manual**, you should find guides and tutorials for managers, and content creators to use LibreTime.
+
+## Introduction
+
+:construction:
+
+## As manager
+
+:construction:
+
+## As content creator
+
+:construction:
+
+## As guest
+
+:construction:
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/_category_.yml b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/_category_.yml
new file mode 100644
index 000000000..2c401ab95
--- /dev/null
+++ b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/_category_.yml
@@ -0,0 +1,2 @@
+label: User manual
+position: 30
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/calendar-screenshot353-contents_of_show.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/calendar-screenshot353-contents_of_show.png
new file mode 100644
index 000000000..ff1ae7661
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/calendar-screenshot353-contents_of_show.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/calendar-screenshot451-calendar.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/calendar-screenshot451-calendar.png
new file mode 100644
index 000000000..f21f0d4f2
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/calendar-screenshot451-calendar.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/calendar-screenshot452-calendar_resolution.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/calendar-screenshot452-calendar_resolution.png
new file mode 100644
index 000000000..8e2792099
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/calendar-screenshot452-calendar_resolution.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/calendar-screenshot459-update_show.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/calendar-screenshot459-update_show.png
new file mode 100644
index 000000000..e01dfed56
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/calendar-screenshot459-update_show.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/calendar-screenshot488-add_remove_content.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/calendar-screenshot488-add_remove_content.png
new file mode 100644
index 000000000..4f5cbb1e9
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/calendar-screenshot488-add_remove_content.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/calendar-screenshot489-show_content.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/calendar-screenshot489-show_content.png
new file mode 100644
index 000000000..ab8d7618a
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/calendar-screenshot489-show_content.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/calendar-screenshot490-delete_this_instance.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/calendar-screenshot490-delete_this_instance.png
new file mode 100644
index 000000000..b19d94d8b
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/calendar-screenshot490-delete_this_instance.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/calendar-screenshot583-show_instance_description_vc9ooit.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/calendar-screenshot583-show_instance_description_vc9ooit.png
new file mode 100644
index 000000000..3d1846010
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/calendar-screenshot583-show_instance_description_vc9ooit.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/calendar.md b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/calendar.md
new file mode 100644
index 000000000..a69f6bb0b
--- /dev/null
+++ b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/calendar.md
@@ -0,0 +1,55 @@
+---
+title: Show calendar
+---
+
+The Calendar page of the LibreTime administration interface has three views: **day**, **week** and **month**, which can be switched using the grey buttons in the top right corner. By default, the **month** view is shown, with today's date highlighted by a pale grey background.
+
+
+
+In the top left corner of the page, you can go back or forward through the **Calendar** by clicking on the buttons which have a small grey triangle in a white circle. Click the **today** button to jump to today's date in the current view. (The **today** button will be greyed out if you are already viewing that date). In the **day** or **week** views, there is also a drop-down menu which allows you to set the resolution displayed for the calendar, ranging from one minute per row to sixty minutes per row.
+
+
+
+### Editing a show
+
+Show configuration and metadata can be changed at any time, except for **Date/Time Start** and **Record from Line In?** options, which are fixed after broadcast of that show commences. Click the show in the Calendar, and select **Edit Show** from the pop-up context menu. This opens the **Update Show** box, which is almost exactly the same as the **Add this Show** box. Click the **+ Update show** button at the top or bottom of the box when you are done.
+
+
+
+Episodes of repeating shows also have an **Instance Description** field in which you can add details for that particular episode. Click the episode in the Calendar, click **Edit** on the pop-up menu, then click **Edit this instance**. After entering an Instance Description, click the **+ Update show** button.
+
+
+
+Alternatively, individual shows can be clicked on and dragged to new days and times in the calendar. However, LibreTime will not allow you to drag a future show into the past, or drag and drop instances of a repeated show. In the **Day** and **Week** views, show length can be adjusted by clicking on the lower edge of the show box, and dragging the edge of the box upwards or downwards. The new show length is calculated automatically.
+
+### Adding content to a show
+
+To add content to a show, click the show in any view on the Calendar, and select **Schedule Tracks** from the pop-up menu. Shows that do not yet contain any scheduled content are marked with a red exclamation mark icon, to the right of the show start and end times in the top bar. Shows partially filled with content have a yellow exclamation mark icon. During playout of the show, a green play icon will also be shown in the top bar.
+
+
+
+The **Schedule Tracks** action opens a window with the name of the show. Like when using the **Now Playing** page, you can search for content items and add them to the show schedule on the right side of the page. Refer to the _Now Playing_ chapter for details.
+
+When your show has all the required content, click the **OK** button in the bottom right corner to close the window. Back in the **Calendar**, click the show and select **View** from the pop-up menu to view a list of content now included in the show.
+
+
+
+The **Contents of Show** window is a read-only interface featuring an orange bar which indicates how much media has been added to the show. Click the **OK** button in the bottom right corner, or the white **x** icon in the top right corner, to close the window.
+
+
+
+### Removing content from a show
+
+To remove an individual item from a show, click on the show in the **Calendar**, and select **Schedule Tracks** from the pop-up menu. In the window which opens, click any item you wish to remove from the show, then click **Delete** on the pop-up menu, or check the box in the item's row then click the **Remove** icon at the top of the table. To remove all files and playlists from a show, click on the show in the **Calendar**, and select **Clear Show** from the pop-up menu.
+
+### Deleting an upcoming show
+
+To delete an upcoming instance of a repeating show, click on the show in the **Calendar**, and select **Delete**, then **Delete Instance** from the pop-up menu. If you wish to delete all future instances of a repeating show, select **Delete Instance and All Following** from the pop-up menu.
+
+
+
+You cannot delete or remove content from shows that have already played out. These shows have only one option on the pop-up menu, which is **View**.
+
+### Cancelling playout
+
+If you wish to cancel playout of a show while it is running, click on the show in the **Calendar** and select **Cancel Show** from the pop-up menu. This action cannot be undone.
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/dashboard-columns.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/dashboard-columns.png
new file mode 100644
index 000000000..adfdd102d
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/dashboard-columns.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/dashboard-delete-extra.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/dashboard-delete-extra.png
new file mode 100644
index 000000000..08f62d9a2
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/dashboard-delete-extra.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/dashboard-drag-and-drop.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/dashboard-drag-and-drop.png
new file mode 100644
index 000000000..92e77c722
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/dashboard-drag-and-drop.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/dashboard-end-gap.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/dashboard-end-gap.png
new file mode 100644
index 000000000..aa3b29aba
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/dashboard-end-gap.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/dashboard-filter.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/dashboard-filter.png
new file mode 100644
index 000000000..2fd07d76c
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/dashboard-filter.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/dashboard-now-playing.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/dashboard-now-playing.png
new file mode 100644
index 000000000..b6aafcdda
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/dashboard-now-playing.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/dashboard.md b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/dashboard.md
new file mode 100644
index 000000000..3b69dded3
--- /dev/null
+++ b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/dashboard.md
@@ -0,0 +1,121 @@
+---
+title: Dashboard
+---
+
+:::tip
+
+Want to listen to LibreTime's output stream? Click **Listen** below the **On Air** light.
+
+:::
+
+The Dashboard is divided into two sections a Library section divided between
+Tracks, Playlists, Smart Blocks, Webstreams, and Podcasts, with the **Scheduled
+Shows** dialog on the right. This page provides an overview of the right-hand
+interface. Check the links to see information about the other sections which
+provide the content that can be scheduled.
+
+The **Scheduled Shows** page provides a view of the content your station is will
+playout, or has already played out, which defaults to showing the 3 hours
+ahead. This page also enables you to make last-minute changes to running shows.
+
+If you've only just installed LibreTime, there might not be any content shown
+yet. Click the calendar and clock icons above the table to change the date and
+time range, then click the **Find Shows** button (with the magnifying glass
+icon) to the right.
+
+
+
+To display the content of a particular show, click **Filter by Show** and select
+the name of the show from the drop-down menu which will appear.
+
+
+
+On the left side of the page, the **Start** and **End** times, **Duration**
+and **Title** of each content item are shown. On the right, **Creator**,
+**Album**, **Cue** or **Fade** times and **Mime** type (file format) can also be
+shown. This information can help you to prepare voice tracks for insertion into
+the show, including time checks if you wish. Putting current time information i
+to voice tracks describing specific content can, of course, limit the
+re-usability of those voice tracks, unless you always broadcast a particular
+item at the same time of day.
+
+Click the **Show/hide columns** button on the right to configure the metadata
+displayed, by checking the boxes in the pop-up window.
+
+
+
+The row for the currently playing item is displayed with a bright green
+background. Any underbooked shows (shows with insufficient content to fill the
+time allowed) are displayed with a row indicating the length of the underbooking
+in minutes and seconds. These rows contain a red exclamation mark in the first
+column, and have a pink background.
+
+
+
+### Removing content from a running show
+
+If a show is overbooked, which means the total playout duration is longer than
+the time allowed for the show, a brown row indicates that the item will be faded
+out when the show ends. A red row indicates that the item will not be played at
+all. The length of the overbooking is shown in minutes and seconds in the last
+row of the show. To remove the extra items from the end of an overbooked show,
+click the **Scissors** button at the top left of the table.
+
+Alternatively, check the boxes for items which have not yet completed playout,
+and click the **Trashcan** button, to the right of the Scissors, to remove them
+from the schedule. If you remove the currently playing item, playout will skip
+to the next item in the show automatically, so you should make sure you have
+enough items remaining in the show to avoid dead air.
+
+
+
+If you have a long schedule displayed, and you wish to skip to the currently
+playing item, click the button with the end arrow icon, to the right of the
+**Trashcan**.
+
+To cancel the current show completely, click the red button to the right again.
+A pop-up window will ask you to confirm the cancellation, as this action cannot
+be undone.
+
+Items which are no longer available have an exclamation mark icon in the second
+column. This may happen for media files which were part of previous shows, and
+were removed from LibreTime's library (main storage or watched folders)
+subsequently. Items which are included in forthcoming shows cannot be removed
+from the Library via the LibreTime interface.
+
+### Adding content to a running show
+
+After you have found the items that you want using the search tools, you can
+then drag and drop them from the library table on the left side of the page into
+the shows on the right side, including the current playing show.
+
+If the current show has nothing playing out at the time, the new item will begin
+playing immediately. This manual triggering of playout can be used as a live
+assist technique, in which the LibreTime server's soundcard output is mixed with
+other sources such as microphones or telephone hybrids on its way to a
+transmitter, or a separate stream encoder. For instance, a live show's host may
+not wish to cut off a studio discussion to play music at a fixed time.
+
+
+
+You can also select multiple items using the **Select** menu button, just
+beneath the simple search field, which has the options to **Select this page**
+of search results, **Deselect this page** and **Deselect all**. Alternatively,
+use the checkboxes on the left side of the library table to select specific
+items. Then drag one of the items into the show to add all of the selected
+items, or click the **Add to selected show** button, which has a plus icon. If
+you wish, you can also use the **Trashcan** button to permanently remove items
+from LibreTime's library. Only _admin_ users have permission to delete all
+items.
+
+To insert checkbox selected items at a specific time in the show schedule, click
+one of the songs in the schedule table. Then click the **Add to selected show**
+button in the library table. This will insert the library songs after the
+selected scheduled song.
+
+To add a single item at the insertion point, double-click on it in the library.
+There is no need to select or drag the item first.
+
+Right-clicking on a song in the schedule table will show a pop-up. This pop-up
+menu also enables you to audition the entire show in advance of playout, or
+remove the item that was clicked on from the show.
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/listener-stats-stream-stats.jpg b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/listener-stats-stream-stats.jpg
new file mode 100644
index 000000000..2f94190e1
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/listener-stats-stream-stats.jpg differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/listener-stats.md b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/listener-stats.md
new file mode 100644
index 000000000..f9ea5b54e
--- /dev/null
+++ b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/listener-stats.md
@@ -0,0 +1,13 @@
+---
+title: Listener statistics
+---
+
+The Listener Stats page on the Analytics menu shows graphs of listener connections to the configured streaming servers for the selected date and time range. On the right side, a green **Status** indicator shows **OK** if the connection to the streaming server is active.
+
+
+
+If the status indicator is red, check that the **Admin User** and **Admin Password** settings are correct under **Additional Options** for the named mount point, such as _libretime_128_, on the **Streams** page of the **Settings** menu.
+
+To choose which particular streams should have statistics displayed, click the check boxes for the individual colour-coded mount points, just below the graph.
+
+By default, statistics for the last 24 hours of streaming are shown. To change this date and time range, click the calendar and clock icons in the lower left corner of the page, then click the magnifying glass icon.
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/live-broadcast.md b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/live-broadcast.md
new file mode 100644
index 000000000..7086e35e4
--- /dev/null
+++ b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/live-broadcast.md
@@ -0,0 +1,73 @@
+---
+title: Broadcasting live
+---
+
+## MIXXX
+
+[Mixxx](https://www.mixxx.org) is a cross-platform Open Source application for DJs.
+
+Installed on a desktop or laptop computer, Mixxx complements your LibreTime server to provide a complete system
+for both live and scheduled broadcasting. Although Mixxx has many features designed for dance music DJs
+that require beat matching and pitch independent time stretching, the program can be used for any kind of
+manually triggered broadcast playout, including live speech shows such as news or current affairs.
+
+Mixxx supports a wide variety of popular hardware control surfaces, which can be connected to your
+computer using a USB cable. A control surface might replace or augment an analogue mixer in your studio,
+depending on your live mixing and playout requirements.
+
+Mixxx 1.9.0 or later includes a live streaming client which, like LibreTime, is compatible with the Icecast
+and SHOUTcast media servers. This feature can also be used to stream from Mixxx directly into LibreTime,
+using either the **Show Source** or **Master Source**.
+
+To configure Mixxx for streaming into LibreTime, click **Options**, **Preferences**, then
+**Live Broadcasting** on the main Mixxx menu. For server **Type**, select the default of **Icecast 2**.
+For **Host**, **Mount**, **Port**, **Login** and **Password**, use the **Input Stream Settings**
+configured in the LibreTime **Streams** page, on LibreTime's **System** menu.
+
+## B.U.T.T. (Broadcast Using This Tool)
+
+
+
+
+
+### Setup
+
+1. Download and install [BUTT](https://danielnoethen.de/) for your OS.
+ _Note: be sure you have butt version 0.1.17 or newer installed_
+2. Open up BUTT
+3. Click **settings**
+4. Under **Main** > **Server** click **ADD**
+ - Type LibreTime (or your station) under Name
+ - Click the radio button next to **IceCast** under Type
+ - Type your stations URL (webpage address) under **Address**:
+ - Type **8002** under **Port**:
+ - Type your DJ login password under **Password**
+ - Type **/show** under IceCast mountpoint:
+ - Type your dj login under **IceCast user:**
+5. Click **ADD**
+6. Still in settings click, **Audio** and select your audio input device under
+ **Audio Device**
+
+### Show time
+
+1. When its almost your show time go to your LibreTime page and look at the time in the top right when your show starts go to Butt.
+2. Click the white Play button (third button in the middle).
+3. If it says connecting... and then stream time with a counter- congratulations, your are connected!
+4. Go to the LibreTime page and at the top right under Source Streams the
+ tab besides Show Source is to the left and Orange - if it is and Current
+ shows Live Show you are connected.
+5. If it is gray, click on the **Show Source** switch to the right of it and it
+ will toggle your show on and you will be broadcasting. _Note: whether auto
+ connect is turned on is a station specific setting so it could work either way_
+
+### Recording your show
+
+You can record your show under butt by clicking the red circle record button on
+the left. It will save a mp3 based upon the date and time in your home/user
+directory by default.
+
+Everything should now be working and you can broadcast for your entire time
+slot. If you choose to stop streaming before it is over click the white square
+**Stop** button to disconnect. Then go to the LibreTime page and if the Show
+Source didn't automatically disconnect you can click it to the right and it
+should turn gray.
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/playlists-playlist-editor.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/playlists-playlist-editor.png
new file mode 100644
index 000000000..7c3a93398
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/playlists-playlist-editor.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/playlists-smartblock-advanced.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/playlists-smartblock-advanced.png
new file mode 100644
index 000000000..9abd5c794
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/playlists-smartblock-advanced.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/playlists-smartblock-content.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/playlists-smartblock-content.png
new file mode 100644
index 000000000..8215f363b
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/playlists-smartblock-content.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/playlists-smartblock-options.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/playlists-smartblock-options.png
new file mode 100644
index 000000000..b5d3052eb
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/playlists-smartblock-options.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/playlists.md b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/playlists.md
new file mode 100644
index 000000000..d293df869
--- /dev/null
+++ b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/playlists.md
@@ -0,0 +1,69 @@
+---
+title: Playlists and smart blocks
+---
+
+## Creating a new playlist
+
+You can create a new playlist on the toolbar of the **Playlists** page.
+
+
+
+Enter a **Name** and **Description** for the playlist, then click the **Save** button. Setting good quality metadata here will help you find the playlist using the search box later, so you should be as descriptive as possible.
+
+### Adding content to a playlist
+
+With a playlist open, drag and drop items from the search results on the left into the playlist on the right. Jingles and voice tracks can be added before, after or between music items.
+
+After adding files to the playlist, the total playlist time is displayed in the top right corner. The duration of an individual file is shown in each row of the playlist in a white font, and beneath this figure the time since the beginning of the playlist is displayed in a smaller light grey font. This elapsed time figure can be used as a time check for voice tracks, although this option may limit the re-usability of the voice track.
+
+To audition a playlist file in your web browser, click the white triangle button on the left side of its row. (If the format of the file is not supported by your browser, the triangle in this button will be greyed out). If audition of the file format is supported, a pop-up window will open, with the playlist starting at the file you clicked.
+
+Click the small white **x** icon on the right hand side of each row to remove a file from the playlist. You can also drag and drop files to re-order them, or click the **Shuffle** button to re-order files automatically.
+
+When your playlist is complete, click the **New** button in the top left corner to create another playlist, click the close icon (a white cross in a black circle) in the top right corner, or browse to another page of the LibreTime interface.
+
+If you want to edit the playlist content or metadata later, you can find it by **Title**, **Creator**, **Last Modified** date, **Length**, **Owner** or **Year** using one of the search tools on the Library page. Click the playlist in the search results list, and then click **Edit** from the pop-up menu. You can also **Preview** the entire playlist in a pop-up audition window, **Duplicate** or **Delete** one of your playlists from this menu.
+
+### Auto loading playlists
+
+LibreTime will schedule tracks from a selected playlist an hour before a show is scheduled to air. This is a great way to automatically schedule weekly shows which are received via. podcasts.
+
+## Creating a Smartblock
+
+
+
+Smart blocks are automatically filled with media files from the LibreTime library, according to the criteria that you specify. This feature is intended to save staff time, compared to selecting items for a playlist manually, and can be used to schedule shows that operate in a consistent format.
+
+To create a smart block, click the **Smartblocks** button on the left sidebar, and select **New** from the toolbar. Like a playlist, smart blocks can have a title and description, which you can edit. This helps you find relevant smart blocks in searches.
+
+Fill out the smart block's **Name**, **Search Criteria**, and **Limit to** sections. The search criteria can be any one of LibreTime's metadata categories, such as **Title**, **Creator** or **Genre**. The modifier depends on whether the metadata in question contains letters or numbers. For example, **Title** has modifiers including _contains_ and _starts with_, whereas the modifiers for **BPM** include _is greater than_ and _is in the range_.
+
+If you have a large number of files which meet the criteria that you specify, you may wish to limit the duration of the smart block using the **Limit to** field, so that it fits within the show you have in mind. Select **hours**, **minutes** or **items** from the drop-down menu, and click the **Generate** button again, if it is a static smart block. Then click the **Save** button.
+
+:::note
+
+Smart Blocks by default will not overflow the length of a scheduled show. This is to prevent tracks from being cut-off because they exceed the time limit of a show. If you want a smartblock to schedule tracks until it is longer than the Time Limit you can check **"Allow last track to exceed time limit"** (helpful for avoiding dead air on autoscheduled shows).
+
+:::
+
+
+
+You can also set the **smart block type**. A **Static** smart block will save the criteria and generate the block content immediately. This enables you to edit the contents of the block in the **Library** page before adding it to a show. A **Dynamic** smart block will only save the criteria, and the specific content will be generated at the time the block is added to a show. After that, the content of the show can be changed or re-ordered in the **Now Playing** page.
+
+Click the **plus button** on the left to add OR criteria, such as **Creator** containing _beck_ OR _jimi_. To add AND criteria, such as **Creator** containing _jimi_ AND BPM in the range _120_ to _130_, click the **plus button** on the right. (The criteria are not case sensitive). Click **Preview** to see the results.
+
+:::tip
+
+If you see the message **0 files meet the criteria**, it might mean that the files in the Library have not been tagged with the correct metadata. See the chapter [Preparing media](./preparing-media.md) for tips on tagging content.
+
+:::
+
+
+
+If you don't like the ordering which is generated, click the **Shuffle** button, or drag and drop the smart block contents into the order that you prefer. You can also remove items or add new items manually from the Library. Changes to static smart block contents are saved automatically when you add items, remove or re-order them, or click the **Generate** button. Click the **Save** button in the upper right corner to save any changes to smart block criteria.
+
+By default, a smart block will not contain repeated items, which will limit the duration of the block if you do not have sufficient items meeting the specified criteria in your **Library**. To override the default behaviour, check the **Allow Repeat Tracks** box. The **Sort tracks by** menu offers the options of **random**, **newest** or **oldest** items first.
+
+Smart blocks can be added to shows in the same way as a manually created playlist is added. Smart blocks can also be added to one or more playlists. In the case of a playlist containing a static smart block, click **Expand Static Block** to view the contents. For a dynamic smart block, you can review the criteria and duration limit by clicking **Expand Dynamic Block**.
+
+Once created, smart blocks can be found under the Smartblocks tab and refined at any time. They can be re-opened by right-clicking on the smart block and selecting **Edit** from the pop-up menu.
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/playout-history-history-templates.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/playout-history-history-templates.png
new file mode 100644
index 000000000..cf5213fcc
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/playout-history-history-templates.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/playout-history-log-sheet.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/playout-history-log-sheet.png
new file mode 100644
index 000000000..22341628f
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/playout-history-log-sheet.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/playout-history-new-hist-temp.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/playout-history-new-hist-temp.png
new file mode 100644
index 000000000..dab9c00e7
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/playout-history-new-hist-temp.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/playout-history.md b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/playout-history.md
new file mode 100644
index 000000000..5bf896929
--- /dev/null
+++ b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/playout-history.md
@@ -0,0 +1,347 @@
+---
+title: Playout history
+---
+
+On the History menu, the **Playout History** page enables you to view a list of files played within a specific date and time range. This page is designed to help your station prepare reports for music royalty collection societies and regulatory agencies.
+
+Search results can be copied to the clipboard using the **Copy** button, exported as data in **CSV** format (comma separated values), exported as a document in **PDF** format, or displayed in a printer-friendly format using the **Print** button. (Your web browser must have an Adobe Flash plugin installed for these buttons to appear). Press the **Esc** key to return to the LibreTime interface once the print job is complete.
+
+This page has three tabs: **Log Sheet**, **File Summary** and **Show Summary**. On any of these tabs, you can select a date and time range by clicking the calendar and clock icons in the upper left corner of the page. Then click the search button, which has a magnifying glass icon, to the right. A list of files played during that date and time range will appear further down the page.
+
+
+
+In the **Log Sheet** tab, the playout history is sorted by **Start Time** and **End Time** by default.
+
+The number of times each file was played and the length of the files are shown in the **File Summary** tab. To make optimal use of this feature for royalty reporting purposes, music files must be tagged with **Composer** and **Copyright** metadata. The artist performing a piece of music may not be the original composer of the work, or the copyright holder of the sound recording.
+
+On the **Show Summary** tab, click the name of a show within the search range to expand its row and see its playout details.
+
+### Manual logging
+
+If your station features playout from analogue sources such as turntables or microphones, there is no automatic metadata for LibreTime to collect from these inputs. To ensure that the playout history is complete, you can add log entries manually by clicking the **+ Create Entry** button. This action opens a pop-up window with default fields of Start Time, End Time, Title and Creator. Click the **Find** button to automatically fill the **Choose Show Instance** menu with the names of shows that took place within the specified time range. Then click the **Save** button to enter the new item into the playout history.
+
+Log entries can also be manually deleted, using the button with the trashcan icon, to the right of the **+ Create Entry** button. Pages of entries can be selected for deletion using the **Select** drop-down menu.
+
+## History templates
+
+
+
+The **History Templates** page on the History menu enables you to prepare reports with the exact content required by regulatory agencies in the territories that you are broadcasting to. You can begin creating a custom template by clicking the button **New Log Sheet Template** or the button **New File Summary Template**.
+
+
+
+Either of these actions opens a page in which you can name the new template, and add or remove elements from the list on the left. To add a new element from the list on the right, click the plus icon for the item you require. If the element you require is not listed, you can use the **Add New Field** box at the lower end of the right side column. Select _string_, _boolean_, _integer_, or _float_, depending on the type of data that you wish to log, and then click the **+ Add** button.
+
+When the template is in the format you require, click the **Save** button, and **Set Default Template** if you wish. The new template will now be listed on the History Templates page. If you have set a new default template, any changes will be visible on the tabs of the Playout History page.
+
+## Exporting the schedule {#exporting}
+
+LibreTime has a feature which enables your station's show and schedule information to be displayed on remote websites. This feature is included in LibreTime because you would not usually invite the general public to access your LibreTime server directly. If you had very large numbers of people requesting data from the LibreTime server at once, the burst of network traffic might overload the server, potentially disrupting your broadcasts. If carried out maliciously, this network overload is known as a _denial of service attack_.
+
+Instead, your public-facing web server can retrieve the schedule information from the LibreTime API. It can be presented using Javascript widgets and styled with CSS, in any format that you require.
+
+There are two kinds of information that can be retrieved remotely from the LibreTime API without authentication; the metadata for the current show plus the following show (live-info), or the schedule for the current week and the week ahead (week-info). The week-info metadata includes show names, times, and individual show URLs on your public website. That way, the audience for your station can click through from the schedule information to find out more about a particular show, or download a previous show recording that you might have made available.
+
+If your LibreTime server was accessible at https://libretime.example.com the live show information could be retrieved by your web server using this URL:
+
+```
+https://libretime.example.com/api/live-info/?callback
+```
+
+The comma-separated text metadata returned to your web server might be something like this:
+
+```json
+{
+ "env": "production",
+ "schedulerTime": "2013-07-03 14:07:31",
+
+ "previous": {
+ "name": "Earth, Wind & Fire - Boogie Wonderland",
+ "starts": "2013-07-01 22:53:00",
+ "ends": "2013-07-01 22:55:00",
+ "type": "track"
+ },
+ "current": {
+ "name": "Deodato - Also Sprach Zarathustra",
+ "starts": "2013-07-03 13:07:06",
+ "ends": "2013-07-03 13:16:05",
+ "media_item_played": true,
+ "record": 0,
+ "type": "track"
+ },
+
+ "next": {
+ "id": 8,
+ "instance_id": 10,
+ "name": "Rock Show",
+ "url": "https://rock.example.com/",
+ "start_timestamp": "2013-07-03 14:00:00",
+ "end_timestamp": "2013-07-03 15:00:00",
+ "starts": "2013-07-03 14:00:00",
+ "ends": "2013-07-03 15:00:00",
+ "record": 0,
+ "type": "show"
+ },
+
+ "currentShow": [
+ {
+ "start_timestamp": "2013-07-03 14:07:00",
+ "0": "2013-07-03 13:07:00",
+ "end_timestamp": "2013-07-03 15:00:00",
+ "1": "2013-07-03 14:00:00",
+ "name": "Funk Show",
+ "2": "Funk Show",
+ "id": 7,
+ "3": 7,
+ "instance_id": 9,
+ "4": 9,
+ "record": 0,
+ "5": 0,
+ "url": "https://funk.example.com/",
+ "6": "",
+ "starts": "2013-07-03 14:07:00",
+ "7": "2013-07-03 13:07:00",
+ "ends": "2013-07-03 15:00:00",
+ "8": "2013-07-03 14:00:00"
+ }
+ ],
+
+ "nextShow": [
+ {
+ "id": 8,
+ "instance_id": 10,
+ "name": "Rock Show",
+ "url": "https://rock.example.com/",
+ "start_timestamp": "2013-07-03 15:00:00",
+ "end_timestamp": "2013-07-03 16:00:00",
+ "starts": "2013-07-03 15:00:00",
+ "ends": "2013-07-03 16:00:00",
+ "record": 0,
+ "type": "show"
+ }
+ ],
+
+ "timezone": "BST",
+ "timezoneOffset": "3600",
+ "AIRTIME_API_VERSION": "1.1"
+}
+```
+
+The information for the current week's schedule could be retrieved using the URL:
+
+```
+https://libretime.example.com/api/week-info/?callback
+```
+
+In this case, the metadata returned would be in a different format from the above example, something like the following. To keep the example short, this particular schedule export only contains four shows on a Monday. A full weekly schedule export would contain a great deal more text.
+
+```json
+{
+ "monday": [
+ {
+ "start_timestamp": "2013-07-01 12:05:00",
+ "end_timestamp": "2013-07-01 13:00:00",
+ "name": "Elvis Show",
+ "id": 2,
+ "instance_id": 2,
+ "record": 0,
+ "url": "https://elvis.example.com/",
+ "starts": "2013-07-01 12:05:00",
+ "ends": "2013-07-01 13:00:00"
+ },
+
+ {
+ "start_timestamp": "2013-07-01 13:00:00",
+ "end_timestamp": "2013-07-01 14:00:00",
+ "name": "News",
+ "id": 3,
+ "instance_id": 4,
+ "record": 0,
+ "url": "https://news.example.com/",
+ "starts": "2013-07-01 13:00:00",
+ "ends": "2013-07-01 14:00:00"
+ },
+
+ {
+ "start_timestamp": "2013-07-01 14:00:00",
+ "end_timestamp": "2013-07-01 15:00:00",
+ "name": "Funk Show",
+ "id": 4,
+ "instance_id": 6,
+ "record": 0,
+ "url": "https://funk.example.com/",
+ "starts": "2013-07-01 14:00:00",
+ "ends": "2013-07-01 15:00:00"
+ },
+
+ {
+ "start_timestamp": "2013-07-01 15:00:00",
+ "end_timestamp": "2013-07-01 17:30:00",
+ "name": "Rock Show",
+ "id": 5,
+ "instance_id": 7,
+ "record": 0,
+ "url": "https://rock.example.com/",
+ "starts": "2013-07-01 15:00:00",
+ "ends": "2013-07-01 17:30:00"
+ }
+ ],
+
+ "tuesday": [],
+ "wednesday": [],
+ "thursday": [],
+ "friday": [],
+ "saturday": [],
+ "sunday": [],
+ "AIRTIME_API_VERSION": "1.1"
+}
+```
+
+If you see the message _You are not allowed to access this resource_ when attempting to display schedule information in your web browser, log in to the LibreTime administration interface, click _System_ in the main menu, then _Preferences_. Set **Allow Remote Websites To Access "Schedule" Info?** to **Enabled**, click the **Save** button, then refresh the browser window opened on the schedule export URL. If you do not wish to make schedule information available to the public, set this option to **Disabled** instead.
+
+### Caching schedule information
+
+If the LibreTime server is behind a firewall, or you want to protect the LibreTime server from large numbers of schedule requests, you may wish to cache the schedule information on a public-facing or intermediate server. You can then create a firewall rule that only allows the schedule server to connect to the LibreTime server, in addition to any remote users of the LibreTime web interface.
+
+Your system administrator can set up schedule caching on a standard Apache and PHP enabled web server with the _curl_ program installed, using the following steps:
+
+1. Create a shell script on the schedule server (schedule.example.com) that polls the remote LibreTime server (libretime.example.com), and writes the metadata returned into a pair of local temporary files:
+
+```
+sudo nano /usr/local/bin/libretime-schedule.sh
+```
+
+The content of this file should be like the following script, replacing libretime.example.com with the name of your LibreTime server:
+
+```bash
+#!/bin/sh
+
+curl -s "https://libretime.example.com/api/live-info/?callback=***" > /tmp/live-info
+
+curl -s "https://libretime.example.com/api/week-info/?callback=***" > /tmp/week-info
+```
+
+2. Make the script executable:
+
+```
+sudo chmod +x /usr/local/bin/libretime-schedule.sh
+```
+
+3. Create an Apache VirtualHost configuration for the schedule server:
+
+```
+sudo nano /etc/apache2/sites-available/schedule
+```
+
+containing a definition like the following, replacing `schedule.example.com` with the name of your schedule server:
+
+```apacheconf
+
+ ServerName schedule.example.com
+ DocumentRoot /var/www/schedule/
+
+```
+
+4. In the schedule server's DocumentRoot folder, create the folders `api/live-info/` and `api/week-info/`
+
+```bash
+sudo mkdir -p /var/www/schedule/api/live-info/
+sudo mkdir -p /var/www/schedule/api/week-info/
+```
+
+5. Create an index.php file in the `api/live-info/` folder:
+
+```bash
+sudo nano /var/www/schedule/api/live-info/index.php
+```
+
+containing the following code:
+
+```php
+
+```
+
+6. Create an index.php file in the `api/week-info/` folder:
+
+```
+sudo nano /var/www/schedule/api/week-info/index.php
+```
+
+containing the following code:
+
+```php
+
+```
+
+7. Enable the new configuration and reload the Apache web server:
+
+```bash
+sudo a2ensite schedule
+sudo /etc/init.d/apache2 reload
+```
+
+8. Create a cron job to run the shell script each minute:
+
+```bash
+sudo nano /etc/cron.d/libretime-schedule
+```
+
+containing the line:
+
+```
+* * * * * www-data /usr/local/bin/libretime-schedule.sh
+```
+
+The schedule server will now be serving the same show information as the LibreTime server, with a cache lifetime of one minute. You can adjust the cache lifetime by altering the frequency of the cron job that polls the LibreTime server.
+
+### Pushing schedule information via FTP or SSH
+
+If there is no inbound access to the LibreTime server at all, an FTP script can be used to push cached schedule data from LibreTime to an external web server. The standard ftp command should be available on the LibreTime server and the external web server should have a suitably restricted FTP account set up. After following steps 1 and 2 above to export schedule data to a pair of temporary files on the LibreTime server, create a new script on the LibreTime server to automatically make the upload:
+
+```
+sudo nano /usr/local/bin/upload-schedule-data.sh
+```
+
+Replace host, user and password values with appropriate values for your external web server:
+
+```bash
+#!/bin/sh
+HOST='website.example.com'
+USER='ftp_user'
+PASSWD='ftp_password'
+
+ftp -n -v $HOST << EOT
+user $USER $PASSWD
+ascii
+prompt
+put /tmp/airtime-week-info
+put /tmp/airtime-live-info
+bye
+EOT
+```
+
+Then make the new script executable and create a cron job to launch it every minute, as in step 8 above. Steps 3 to 7 above should be carried out on the external web server so that it can convert the two temporary files uploaded via FTP into public schedule data.
+
+If you have secure shell access (SSH) to the remote web server, you could write a script to use the secure copy command (scp) instead of ftp.
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/podcasts-podcasts_dashboard.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/podcasts-podcasts_dashboard.png
new file mode 100644
index 000000000..19bd3d361
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/podcasts-podcasts_dashboard.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/podcasts-podcasts_editor.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/podcasts-podcasts_editor.png
new file mode 100644
index 000000000..171f44536
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/podcasts-podcasts_editor.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/podcasts.md b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/podcasts.md
new file mode 100644
index 000000000..8ef446317
--- /dev/null
+++ b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/podcasts.md
@@ -0,0 +1,40 @@
+---
+title: Podcasts
+---
+
+The Podcasts page allows you add subscriptions to podcasts which are often used to syndicated audio files using a URL called a RSS feed. This allows your LibreTime instance to automatically download new shows from the web.
+
+:::info
+
+All podcasts available on iTunes have a RSS feed but it is sometimes hidden. See issue [#510](https://github.com/libretime/libretime/issues/510) for more information. RSS feeds that do not end in _.xml_ may be accepted by LibreTime yet fail to download episodes. A work-around is to download the episode using a podcast client such as [gpodder](https://gpodder.github.io/) and then manually upload and schedule the episode.
+
+Podcast feeds coming from Anchor.fm have been known to have a similar issue.
+
+:::
+
+The podcast interfaces provides you with the ability to generate [Smartblocks](./playlists.md) that can be used in conjunction with autoloading playlists to schedule the newest episode of a podcast without human intervention.
+
+
+
+
+
+### Podcasts dashboard
+
+
+
+The podcasts dashboard is similar to the tracks view, allowing you to add, edit, and remove
+podcasts by the toolbar, in addition to sorting by columns.
+
+To add a podcast, click on the **+ Add** button on the toolbar and provide the podcast's RSS feed, which usually ends in _.xml_.
+Once the podcast's feed is recognized, the editor pane opens for the podcast.
+
+### Editor
+
+
+
+In the podcasts editor, you can rename the podcast, update settings for the podcast, and manage episodes.
+A search box is available to search for episodes within the feed.
+
+- To import an episode directly into LibreTime, double-click on an episode or select it and click **+ Import**. The podcast will appear under tracks with the Podcast Name as the Album.
+- To delete an episode from LibreTime, select the episode and click on the red trash can on the toolbar.
+- If you would like LibreTime to automatically download the latest episodes of a podcast, make sure _Download latest episodes_ is checked. This can be used in conjunction with Smartblocks and Playlists to automate downloading and scheduling shows that are received via podcast feed.
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/preparing-media-screenshot126-debra_silence.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/preparing-media-screenshot126-debra_silence.png
new file mode 100644
index 000000000..1003ceb82
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/preparing-media-screenshot126-debra_silence.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/preparing-media-screenshot175-ex_falso.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/preparing-media-screenshot175-ex_falso.png
new file mode 100644
index 000000000..ab6c54e7c
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/preparing-media-screenshot175-ex_falso.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/preparing-media.md b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/preparing-media.md
new file mode 100644
index 000000000..6b5eebaf8
--- /dev/null
+++ b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/preparing-media.md
@@ -0,0 +1,108 @@
+---
+title: Preparing media for upload
+---
+
+Before uploading media to an LibreTime server, there are a number of factors which should be considered. Getting your ingest workflow right will save you a lot of time later.
+
+## Metadata quality
+
+LibreTime automatically imports any metadata that is in the files' ID3 tags. If these tags are incorrect or are missing information, you will have to either edit the metadata manually. Files with metadata such as track title and artist information may be difficult to locate in larger libraries, or add to shows, playlists, or smart blocks.
+
+There are a number of programs available which can be used to correct mistakes or incomplete information in ID3 tags. You can use a music library manager (like Apple Music, Rhythmbox, or Windows Media Player) to edit ID3 tags as well, but you may be required to import the files into your library, which may not always be convenient.
+
+- [TagScanner](https://www.xdlab.ru/en/) (Windows)
+- [Mp3tag](https://www.mp3tag.de/en/index.html) (Windows)
+- [MusicBrainz Picard](https://picard.musicbrainz.org/) (Mac, Windows, Linux)
+- [Ex Falso](https://code.google.com/p/quodlibet/) (Linux)
+
+The _Tags From Path_ feature of Ex Falso is a particularly useful time saver if you have a large archive of untagged files. Sometimes there is useful creator or title information in the file name or directory path structure, which can be converted into an ID3 tag automatically.
+
+
+
+## Metadata in legacy character sets
+
+LibreTime expects file tag metadata to be stored in the international _UTF-8_ character set. Programs such as **Ex Falso** (described above) encode metadata in UTF-8 by default. If you have an archive of files encoded with metadata in a legacy character set, such as the Cyrillic encoding _Windows-1251_, you should convert these files before import.
+
+The program **mid3iconv** (part of the **python-mutagen** package in Debian and Ubuntu) can be used to batch convert the metadata character set of files on the command line. You can install **python-mutagen** with the `sudo apt-get install python-mutagen`.
+
+ For example, to preview the conversion of tags from Windows-1251 (CP1251) character set to UTF-8 for a whole archive of MP3 files, you could use the command:
+
+```bash
+find . -name "*.mp3" -print0 | xargs -0 mid3iconv -e CP1251 -d -p
+```
+
+in the base directory of the archive. The **-d** option specifies that the new tag should be printed to the server console (debug mode), and the **-p** option specifies a preview run. This preview will enable you to confirm that the metadata is being read and converted correctly before writing the new tags.
+
+To actually convert all of the tags and strip any legacy ID3v1 tag present from each file at the same time, you could use the command:
+
+```bash
+find . -name "*.mp3" -print0 | xargs -0 mid3iconv -e CP1251 --remove-v1
+```
+
+The name of the original character set follows the **-e** option. Other legacy character sets that mid3iconv can convert to UTF-8 include:
+
+```
+KOI8-R: Russian
+KOI8-U: Ukrainian
+
+GBK: Traditional Chinese
+GB2312: Simplified Chinese
+
+EUC-KR: Korean
+EUC-JP: Japanese
+
+CP1253: Greek
+CP1254: Turkish
+CP1255: Hebrew
+CP1256: Arabic
+```
+
+## Audio loudness
+
+On file ingest, LibreTime analyzes each Ogg Vorbis, MP3, AAC or FLAC file's loudness, and stores a _ReplayGain_ value for that file in its database. At playout time, the ReplayGain value is provided to Liquidsoap so that gain can be automatically adjusted to provide an average output of -14 dBFS loudness (14 decibels below full scale). See https://en.wikipedia.org/wiki/ReplayGain for more details of ReplayGain.
+
+Because of this automatic gain adjustment, any files with average loudness higher than -14 dBFS will not sound louder than quieter files at playout time, but the lower crest factor in the louder files (their relatively low peak-to-average ratio) may be apparent in the output, making those files sound less dynamic. This may be an issue for contemporary popular music, which can average at -9 dBFS or louder before ReplayGain adjustment. (See https://www.soundonsound.com/sound-advice/dynamic-range-loudness-war for a detailed analysis of the problem).
+
+Your station's producers should therefore aim for 14dB between peak and average loudness to maintain the crest factor of their prepared material (also known as _DR14_ on some dynamic range meters, such as the command-line DR14 T.meter available from https://sourceforge.net/projects/dr14tmeter/). If the producers are working to a different loudness standard, the ReplayGain modifier in LibreTime's Stream Settings page can be adjusted to suit their material.
+
+Large transient peaks in otherwise quiet files should be avoided, to guard against the need for peak limiting when ReplayGain is applied to those quieter files.
+
+The **vorbisgain** command-line tool, available in the **vorbisgain** package in Debian/Ubuntu, can be used to indicate the ReplayGain of an individual Ogg Vorbis file before ingest into LibreTime. (A similar tool for MP3 files is available in the **mp3gain** package in Debian/Ubuntu).
+
+Here is an example of a very quiet file where the use of ReplayGain would make the output more than 17dB louder:
+
+```bash
+$ vorbisgain -d Peter_Lawson-Three_Gymn.ogg
+Analyzing files...
+
+ Gain | Peak | Scale | New Peak | Track
+----------+------+-------+----------+------
++17.39 dB | 4536 | 7.40 | 33585 | Peter_Lawson-Three_Gymn.ogg
+```
+
+And here is an example of a very loud file, with lower crest factor, where the output will be more than 7dB quieter with ReplayGain applied:
+
+```bash
+$ vorbisgain -d Snoop_Dogg-Doggfather.ogg
+Analyzing files...
+
+ Gain | Peak | Scale | New Peak | Track
+----------+-------+-------+----------+------
+ -7.86 dB | 36592 | 0.40 | 14804 | Snoop_Dogg-Doggfather.ogg
+```
+
+In the output from vorbisgain, _Peak_ is the maximum sample value of the file before any ReplayGain has been applied, where a value of 32,767 represents full scale when decoding to signed 16 bit samples. Note that lossy compressed files can have peaks greater than full scale, due to encoding artifacts. The _New Peak_ value for the Snoop Dogg file may be relatively low due to the hard limiting used in the mastering of that piece of music.
+
+## Silence in media files
+
+Before importing media, it is good practice to check for any silent sections in the media files. While LibreTime compensates for leading and trailing silence with the use of automatic cue-in and cue-out points, it is best to trim these files to the intended length before upload. Two notable audio file editors for removing silent sections are [Audacity](https://www.audacityteam.org/) and [Ocenaudio](https://www.ocenaudio.com/).
+
+:::danger
+
+Gaps in playout or dead air can have legal repercussions for your station. Check with your station manager or local or state communications authority for more information.
+
+:::
+
+Quiet introductions or extended fades can also lead to apparent gaps in your broadcast playout. This is more common when playing back audio from ripped CDs or dubbed from tape or vinyl. Long periods of silence should be removed from files before uploading to LibreTime.
+
+
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/scheduling-shows-on-air-status.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/scheduling-shows-on-air-status.png
new file mode 100644
index 000000000..00ac737f4
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/scheduling-shows-on-air-status.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/scheduling-shows-screenshot558-add_show.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/scheduling-shows-screenshot558-add_show.png
new file mode 100644
index 000000000..bcb876a40
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/scheduling-shows-screenshot558-add_show.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/scheduling-shows-screenshot560-show_when.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/scheduling-shows-screenshot560-show_when.png
new file mode 100644
index 000000000..f7bd6200a
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/scheduling-shows-screenshot560-show_when.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/scheduling-shows-screenshot561-add_show_content.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/scheduling-shows-screenshot561-add_show_content.png
new file mode 100644
index 000000000..2bc2cb813
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/scheduling-shows-screenshot561-add_show_content.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/scheduling-shows-screenshot562-drag_show_content.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/scheduling-shows-screenshot562-drag_show_content.png
new file mode 100644
index 000000000..46ac68e32
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/scheduling-shows-screenshot562-drag_show_content.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/scheduling-shows-select_files.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/scheduling-shows-select_files.png
new file mode 100644
index 000000000..b675114f9
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/scheduling-shows-select_files.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/scheduling-shows.md b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/scheduling-shows.md
new file mode 100644
index 000000000..06532be89
--- /dev/null
+++ b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/scheduling-shows.md
@@ -0,0 +1,82 @@
+---
+title: Scheduling shows
+---
+
+
+
+Log in using your username and password using the link in the upper right corner. (If you just installed
+LibreTime, your username/password is admin/admin.)
+
+The main workflow in LibreTime is **Upload** media -> create a show on the **Calendar** -> **Schedule Tracks**.
+
+Once you log in, click on the big blue button on the left navigation that says **Upload**.
+
+
+
+Select the type of media you are uploading (Music, Station IDs, etc.) by using the dropdown box
+at the top of the pane. After that, either drag and drop media into the area below or click the
+dashed rectangle to open a file browser.
+
+Once your files have uploaded and have been successfully imported (as shown in the pane on the right),
+click on **Calendar** on the left navigation.
+
+
+
+Click on the blue **+ New Show** button to add a new show.
+
+
+
+At the very minimum, fill out the show's name and when the show will take place. If the show will repeat regularly,
+check the **Repeats?** box and fill out the repeat information. A description of all fields of the New Show box
+are in the table below. Finally, click on the grey **+ Add this show** button at the top
+of the pane to add your show to the calendar.
+
+Once your show is created, click on it to open its context menu. Select **Schedule Tracks** to open the track scheduler.
+
+
+
+The track scheduler behaves similarly to iTunes or Windows Media Player: media browser on the left, playlist on the right.
+Find the tracks that you would like to schedule by using the search box or sorting columns and then dragging them
+into the playlist.
+
+
+
+The bar at the end of the show's playlist will show the amount of time the show is underscheduled or overscheduled.
+Shows that are underscheduled will have dead air at the end and shows that are overscheduled
+will fade out exactly when the show is over (the orange colored entry), meaning tracks scheduled to start
+after this point will not play (dark red colored entries). Click the **Ok** button in the bottom right to save.
+
+Show playback will start and end as per each show's start and end times, allowing you to rely completely on
+LibreTime for running your station or using LibreTime as a part of your live setup to cover when DJs are not present.
+When media is playing, the **On Air** indicator at the top will turn red.
+
+
+
+You can listen to your stream by going to `yourserverIP:8000` or by clicking the **Listen** button under the On Air
+indicator.
+
+### Show properties appendix
+
+| Field | Description |
+| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| _What_ | |
+| Name (Required) | The name of your show |
+| URL | The URL of your show. Not used on the public page. |
+| Genre | The genre of your show. Not used on the public page. |
+| Description | Description of your show. Not used on the public page. |
+| _When_ | |
+| Start Time (Required) | The time and date the show starts. Note that the time element is in 24 hour time. If the **Now** option is selected, the show will be created to immediately start. |
+| End Time (Required) | The time and date the show ends. Defaults to a time one hour after the start time, which can be seen in the **Duration** field, which is uneditable. |
+| Repeats? | If checked, allows for options to schedule a repeated show. Shows can repeat weekly up to monthly in increments of one week and can be scheduled on multiple days of the same week. An end date can be set, otherwise the show can be deleted by clicking on its entry in the calendar and clicking Delete > Future Occurrences. If **Linked ?** is checked, the playlist scheduled for the next show will also play for all future shows. |
+| _Autoloading Playlist_ | |
+| Add Autoloading Playlist? | If checked, allows for the following options |
+| Select Playlist | Select the playlist the show will autofill from (shows autofill exactly one hour before air). If you wish to use a smartblock you must add it to a playlist and then select that playlist. This can be used to auto-schedule new podcast episodes to air. |
+| Repeat Playlist Until Show Is Full | If checked, the playlist will be added to the show multiple times until the slot is full. Useful for applying a one-hour music playlist made up of smartblocks to a two-hour show. |
+| _Live Stream Input_ | |
+| Use LibreTime/Custom Authentication | |
+| Show Source | |
+| _Who_ | |
+| Search Users, DJs | Program Managers and Admins may assign DJs to a show, giving DJs access to schedule tracks for said show. DJs cannot create shows on their own. |
+| _Style_ | |
+| Background/Text Color | Set the color of the background and text of entries on the calendar. If not set, LibreTime will select contrasting colors for easy readability. |
+| Show Logo | If desired, you can upload a show logo here. The logo does not appear on the public page. |
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/settings-api-settings.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/settings-api-settings.png
new file mode 100644
index 000000000..1b7cf7bea
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/settings-api-settings.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/settings-general-playback-settings.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/settings-general-playback-settings.png
new file mode 100644
index 000000000..3defe97a9
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/settings-general-playback-settings.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/settings-libretime-master-source-stream.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/settings-libretime-master-source-stream.png
new file mode 100644
index 000000000..014b02aef
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/settings-libretime-master-source-stream.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/settings-libretime-show-source-stream.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/settings-libretime-show-source-stream.png
new file mode 100644
index 000000000..b9533bc14
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/settings-libretime-show-source-stream.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/settings-station-info-settings.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/settings-station-info-settings.png
new file mode 100644
index 000000000..d0103ccca
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/settings-station-info-settings.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/settings.md b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/settings.md
new file mode 100644
index 000000000..6e660ffbe
--- /dev/null
+++ b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/settings.md
@@ -0,0 +1,171 @@
+---
+title: Settings
+---
+
+## General settings
+
+
+
+On the **Settings** menu, click **General** to set your **Station Name**. This
+text is shown in your web browser's title bar when your station staff are logged
+into LibreTime, and optionally in stream metadata. You can also set a **Station
+Description** and **Station Logo** here.
+
+
+
+The **Default Interface Language** drop-down menu sets the default localization
+for your LibreTime instance, and the **Station Timezone** drop-down menu can be
+used to display local time at your station. LibreTime stores show times
+internally in UTC format (similar to _Greenwich Mean Time_), but displays local
+time for the convenience of your station staff. You can also set the day of the
+week that you wish to start your station's weekly schedule on, which defaults
+to Sunday.
+
+The **Track Type Default** enables you to select a track type default for uploads.
+
+Initially, the **Default Fade In** and **Default Fade Out** times for automated
+fades are set to half a second, and the **Default Crossfade Duration** is set to
+zero seconds. Custom fade and crossfade times can be set for adjacent items in a
+playlist or static smart block. See the chapter _Library_ for details.
+
+The **Intro Autoloading Playlist** enables you to select a playlist that will be
+scheduled at the beginning of every show that has enabled an autoloading
+playlist. This can be used for instance to insert a station ID or other
+announcements a the top of every show.
+
+The **Outro Autoloading Playlist** enables you to select a playlist that will be
+scheduled after the content of every show with an autoloading playlist.
+
+The **Overwrite Podcast Episode Metatags** option which is enabled by default
+causes LibreTime to override the Artist, Title & Album fields on any tracks
+downloaded from a podcast with information from the RSS feed.
+
+The **Generate a smartblock and a playlist upon creation of a new podcast**
+option when enabled will create a smartblock matching the newest episode of a
+podcast and a playlist containing that smartblock automatically upon adding a
+podcast to LibreTime. This can also be done manually by the generate smartblock
+and playlist button under a podcasts settings which is why it is disabled by
+default.
+
+
+
+You can opt-in to test new features with the **Feature Previews** option.
+Features that we soft rollout this way may need more feedback or still have
+tolerable bugs. This contains but is not limited to features like large ui
+refactors. You can switch back at any time.
+
+You can enable live, read-only access to the LibreTime schedule calendar for
+your station's public website with the **Public LibreTime API** option, if you
+wish. (There is more about this feature in the
+[_Exporting the schedule_](./playout-history.md) chapter, in the
+_Advanced Configuration_ section of this book).
+
+The **Allowed CORS URLs** is intended to deal with situations where you want a
+remote site with a different domain to access the API. This is relevant when
+there is a reverse proxy server in front of LibreTime. If you are using a
+reverse proxy, the URLs that will be used to access it should be added here.
+
+The **Display login button on your Radio Page?** will determine whether visitors
+to your site see a link to login. If this is disabled, DJs and admins will need
+to goto http://example.org/login to be able to login.
+
+The **Tune-In Settings** section is intended for stations that have partnered
+with TuneIn to automatically push their now playing metadata to TuneIn. This
+hasn't been tested and also requires special credentials from TuneIn.
+
+The **Dangerous Options** section provides an administrator the ability to erase LibreTime's track library.
+
+:::danger
+
+Erasing LibreTime's track library cannot be undone.
+
+:::
+
+Individual LibreTime users can choose another interface localization when they
+log in, or set personal preferences for localization and time zone by clicking
+their username on the right side of the menu bar.
+
+---
+
+## Track types
+
+### Create track types
+
+1. Click **Settings**
+1. Click **Track Types**
+1. Click **New Track Type**
+1. On the "Code" field, type a unique code that can be easily identifiable. Example, for Music use "MUS" or for Sound Effects use something like "FX".
+1. On the "Type Name" field, type a the name of the type of tracks. Example, "Station IDs".
+1. On the "Description" field, enter the description of the type given.
+1. On the "Visibility" drop down menu, choose to enable or disable the track type. By default, it is enabled. If disabled, it won't be shown across LibreTime or in the API for developers.
+1. Click **Save**.
+
+---
+
+## Stream settings
+
+
+
+### Global settings
+
+You can configure direct Icecast and SHOUTcast streams and sound card output by clicking **Streams** on the **System** menu.
+
+At the top left of the **Stream Settings** page are global settings including **Hardware Audio Output**, which enables playout from the default sound card on the server, if one is fitted. The default **Output Type** of _ALSA_ on the drop-down menu will be suitable for most servers with a sound card. If not, you have the option to choose from other Liquidsoap interfaces available, such as _OSS_ or _PortAudio_.
+
+The second checkbox under Global Settings enables the sending of **Icecast Vorbis Metadata** with direct streams. This setting is optional, because some media players have a bug which makes them disconnect from Ogg Vorbis streams when an Icecast server notifies the player that a new track is starting.
+
+The **Stream Label** radio button allows you to set the metadata that will be sent with direct streams; _Artist_ and _Title_, _Show_, _Artist_ and _Title_, or _Station name_ and _Show name_.
+
+The **Off Air Metadata** field configures the text that will be sent to any configured streaming servers, and from there on to media players, when Airtime is not streaming any output.
+
+Below this is the **Enable Replay Gain** checkbox which, if checked, automatically adjusts Airtime's output level to an average of -14dBFS, based on prior analysis of the level of individual files in the **Library**. This feature helps guard against unwanted changes in Airtime's output level caused by the typical variation in average level of recordings made in different studios at different times. The correction value for each file can be viewed by enabling the ReplayGain column in the **Library**.
+
+If Replay Gain is enabled, output level can be adjusted up to 10dB louder or quieter from the reference level of -14dBFS by clicking and dragging the **Replay Gain Modifier** control. Increasing level too far is likely to result in clipping (distortion) since the output level is adjusted to be greater than that of the original files. This scenario is indicated by amplitude correction factors greater than 1.0 in the Liquidsoap log file.
+
+Click the **Save** button on the right side of the page to save any changes that you have made to global settings. If you are only using the hardware audio output, and will not be streaming to or from Airtime, you can leave the **Stream Settings** page after clicking the **Save** button.
+
+### Input stream settings
+
+On the lower left side of the Stream Settings page you can configure remote live input streams from DJ programs such as **Mixxx** or **IDJC**, or smartphone applications used by broadcast journalists. A bug with **Butt** versions 1.14 to 1.16 causes streams not to connect to LibreTime. A fix has been introduced with **Butt** version 1.17 that allows it to be used by LibreTime.
+
+Airtime supports two types of live input stream; the **Show Source**, which enables a specific person to stream in during their own show, and the **Master Source**, which can override the Show Source if necessary. If neither type of live input is available, Airtime will fall back to **Scheduled Play** (playlists, smart blocks, remote streams and files scheduled in Airtime, in advance of or during a show).
+
+The **Auto Switch Off** and **Auto Switch On** checkboxes enable playout to be switched automatically to the highest priority source whenever an authenticated input source disconnects from or connects to Airtime, respectively. The field **Switch Transition Fade** sets the length of the audio fade as scheduled playout is switched to a remote input source, and back.
+
+Each type of input stream requires a username and password before the remote broadcaster can connect to Airtime. The **Master Username** and **Master Password** can be set in the Input Stream Settings box, while the authentication for individual Show Sources is set up in Airtime's schedule calendar. See the _Calendar_ chapter for details.
+
+Input streams must have a **Port** for the remote broadcaster to connect to, which should be a number in the range from 1024 to 49151. If you have the Icecast or SHOUTcast streaming server running on the same machine as Airtime, you should avoid using port 8000 or 8001 for either type of Airtime input stream. This is because both Icecast and SHOUTcast use port 8000, and SHOUTcast also uses port 8001. If the usernames and passwords were similar, remote broadcasters might accidentally connect to the streaming server directly, bypassing Airtime.
+
+To avoid further confusion, it is also recommended that you set a different **Mount Point** (the specific filename for broadcasters and listeners to connect to) from that used on your public Icecast or SHOUTcast server.
+
+If your Airtime server is behind a firewall, and you wish remote broadcasters to connect input streams to it across the public Internet, you may need to click the **Override** link to set a **Connection URL** which is available from outside your local area network. This URL might be based on the domain name assigned to the router which forwards the appropriate port to your Airtime server. Then click **OK** to save the new connection URL.
+
+### Switching input streams
+
+In the Master Panel, available input source streams are shown with an orange line connecting the source to the switch, which you could think of like a patch cable connecting a source to a broadcast mixer. When that switch is active, another orange line connects the switch to the On Air indicator, like a patch cable connecting a mixer to a transmitter.
+
+
+
+If you have checked the **Auto Switch On** box in the Stream Settings page, the **Master Source** switch will move automatically to the active position, on the left, when an authenticated master source connects to Airtime. Otherwise, you can activate the switches manually by clicking the left side of each switch, or deactivate them by clicking the right side. The switches do not have to be dragged with the mouse, in the way that a switch on a hardware mixer would be pushed sideways. **Show Source** live input streams can also be manually activated or deactivated in the same way. If neither the show source or master source is active then LibreTime will default to what is scheduled to play in the Calendar.
+
+
+
+If you have the **Auto Switch Off** box checked LibreTime will resume scheduled playback whenever a stream disconnects. Otherwise you will need to slide to disable a source after a DJ stops streaming.
+
+You can also force disconnection of a live remote source, for example when the remote input source has crashed and is no longer sending audio data, click the **X** icon to the left of the source name.
+
+### Output stream settings
+
+The Default Streaming radio button that is configured by default currently relies upon an insecure icecast password. You will want to change the Icecast2 password and select Custom Streaming. See the notice above for a tutorial on how to fix this.
+
+On the right side of the page, you can configure up to three independent output streams with different bit rates or formats, and send these streams to different Icecast or SHOUTcast servers. By default, only Stream 1 is enabled, with this stream being sent the Icecast server configured at installation time.
+
+To configure another stream, click the bar with the stream number to expand its box, and make sure **Enabled** is checked. Enter at least the streaming **Server** IP address or domain name, and **Port** details. The default port for Icecast and SHOUTcast servers is 8000.
+
+Click **Additional Options** to expand a box in which you can enter the usernames, passwords and metadata to send to the streaming server. The default **Username** for Icecast servers is _source_, and if this the name in use on your streaming server, you can leave this field empty. The **Admin User** and **Admin Password** settings are optional, and are used to query the streaming server for audience numbers by the **Listener Stats** page on the **System** menu.
+
+You can also set the specific **Mount Point** that listeners will connect to here. Then click one of the **Save** buttons in the upper or lower right corner of the page to update the Airtime server's settings.
+
+Airtime supports output to Icecast in Ogg Vorbis, Ogg Opus, MP3 and AAC formats. When selecting a SHOUTcast server from the **Service Type** drop-down menu, you are restricted to using MP3 or AAC formats only, so the choice of Ogg Vorbis and Opus formats is greyed out in the **Stream Type** drop-down menu. The SHOUTcast username for stream sources is fixed, so you do not need to enter this value under **Additional Options**, but you will usually have to enter a password.
+
+Any connection problems between Liquidsoap and Icecast or SHOUTcast are shown on the Stream Settings page. For example, if you enter the wrong password, you will see an _Authentication Required_ error message. To fix this, enter the correct password in the **Additional Options** box, and click the **Save** button. If the streaming server is down for any reason, or you have entered an incorrect **Server** name or **Port** number, you will see the message _Can not connect to the streaming server_.
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/status-screenshot521-system_status_240.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/status-screenshot521-system_status_240.png
new file mode 100644
index 000000000..bebbaf802
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/status-screenshot521-system_status_240.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/status.md b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/status.md
new file mode 100644
index 000000000..3a3d25b6b
--- /dev/null
+++ b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/status.md
@@ -0,0 +1,16 @@
+---
+title: System status
+---
+
+On the **Settings** menu, the **Status** page provides an overview of the health and resource usage of the various
+services that make up a LibreTime system. If all is well, you will only see green check mark icons in the
+Status column. This page also shows how much **Disk Space** you have used on the disk partition containing the media storage folder.
+
+
+
+If any of the check mark icons in the **Status** column have changed to a red warning sign, contact your system
+administrator for assistance. LibreTime will
+do its best to restart any failing services, but sometimes manual intervention may be required; for example, in the case of hardware failure.
+
+If you have run out of storage space, a LibreTime user with _admin_ privileges could log in and delete media files
+that are no longer required from the **Library**. Alternatively, you could ask your system administrator to install additional storage capacity.
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/users-user-edit.png b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/users-user-edit.png
new file mode 100644
index 000000000..a7b3f412e
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/users-user-edit.png differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/users.md b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/users.md
new file mode 100644
index 000000000..51801a370
--- /dev/null
+++ b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/users.md
@@ -0,0 +1,53 @@
+---
+title: Managing users
+---
+
+:::danger
+
+It is strongly recommended not to use the default `admin` account in production, especially if your LibreTime server is accessible from the internet.
+
+:::
+
+## User account types
+
+To add further user accounts to the system, one for each of your station staff that need access to Airtime, click the **New User** button with the plus icon. Enter a user name, password and contact details, and then select the **User Type** from the drop down menu, which can be _Admin_, _Program Manager_, _DJ_, or _Guest_.
+
+### Guests
+
+- Can view shows and the playout log on the Calendar and Dashboard, respectively
+- Listen to the output stream without leaving the interface
+
+### DJs
+
+- Everything Guests can do, plus
+- Upload media (music, PSAs, underwriting, shows, etc.) to their own library (DJs cannot view other libraries)
+- Edit metadata, delete, and schedule media in their own library to shows they're assigned to
+- Preview uploaded media _without_ affecting the live playout
+- Create Playlists, Smart Blocks, and connect Podcasts and Webstreams to LibreTime
+
+### Program managers
+
+- Everything DJs can do, plus
+- Manage other users' libraries in addition to their own
+- Create, edit, and delete color-coded shows on the Calendar and assign them to DJs (if needed)
+- Shows can be scheduled to repeat, with the option of linking content between the shows (helpful if a DJ livestreams in each week)
+- View listener statistics
+- Export playout logs for analysis or reporting for music royalties
+
+### Administrators
+
+- Everything Program Managers can do, plus
+- Manage all user accounts, including the ability to reset passwords
+- Configure Track Types for easy sorting of uploaded content
+- Change system settings
+
+## Editing or deleting user accounts
+
+To edit a user account, click on that user's row in the table, change the user's details in the box on the
+right side, and then click the **Save** button. To remove a user account, click the small **x** icon to the right
+side of its row in the table. You cannot delete your own user account, and usernames cannot be changed once created.
+
+
+
+Users can update their own password, and their contact, language and time zone details, by clicking their username on the
+right side of the main menu bar, next to the **Logout** link.
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/webstreams-webstream.jpg b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/webstreams-webstream.jpg
new file mode 100644
index 000000000..bd6436bcf
Binary files /dev/null and b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/webstreams-webstream.jpg differ
diff --git a/website/versioned_docs/version-3.0.0-alpha.12/user-manual/webstreams.md b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/webstreams.md
new file mode 100644
index 000000000..6d2825414
--- /dev/null
+++ b/website/versioned_docs/version-3.0.0-alpha.12/user-manual/webstreams.md
@@ -0,0 +1,23 @@
+---
+title: Webstreams
+---
+
+
+
+
+
+## Adding a webstream
+
+A web stream URL and metadata can be added to the LibreTime library, so that a remote stream can be searched for and scheduled to be _pulled_ into a show. For example, at the top of the hour your station may pull a news report from journalists working in another studio. This is a different concept from **Master Source** and **Show Source** remote streams which are _pushed_ into the LibreTime playout schedule.
+
+To add a web stream, click the **+ New** button on the left side of the Webstreams page. Like a playlist, web streams in the Library can have a title and **Description**, which may help you find them in searches later.
+
+
+
+The **Stream URL** setting must include the _port number_ (such as 8000) and _mount point_ (such as remote_stream) of the remote stream, in addition to the streaming server name. A **Default Length** for the remote stream can also be set. If the stream is added at the end of a show which becomes overbooked as a result, it will be faded out when the show ends.
+
+:::note
+
+LibreTime checks the remote webstream's status upon editing stream settings, so an offline stream will result in an error. There are many tools such as [BUTT](https://danielnoethen.de/butt/) and [MIXXX](https://www.mixxx.org) that can be used to send a test stream to LibreTime can save it; read more [here](./live-broadcast.md).
+
+:::
diff --git a/website/versioned_sidebars/version-3.0.0-alpha.12-sidebars.json b/website/versioned_sidebars/version-3.0.0-alpha.12-sidebars.json
new file mode 100644
index 000000000..caea0c03b
--- /dev/null
+++ b/website/versioned_sidebars/version-3.0.0-alpha.12-sidebars.json
@@ -0,0 +1,8 @@
+{
+ "tutorialSidebar": [
+ {
+ "type": "autogenerated",
+ "dirName": "."
+ }
+ ]
+}
diff --git a/website/versions.json b/website/versions.json
new file mode 100644
index 000000000..a366b947c
--- /dev/null
+++ b/website/versions.json
@@ -0,0 +1 @@
+["3.0.0-alpha.12"]