diff --git a/.prettierignore b/.prettierignore
index 8e279ed9..e0313857 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -18,4 +18,6 @@ server/web/
server/temp
**/.tsup
-*.html
\ No newline at end of file
+*.html
+
+docs-extras/**/*.md
\ No newline at end of file
diff --git a/docs-extras/includes/definitions.md b/docs-extras/includes/definitions.md
new file mode 100644
index 00000000..9b163b33
--- /dev/null
+++ b/docs-extras/includes/definitions.md
@@ -0,0 +1,4 @@
+
+
+*[HTML]: Hyper Text Markup Language
+*[W3C]: World Wide Web Consortium
diff --git a/docs/configure/library/custom-shows.md b/docs/configure/library/custom-shows.md
index 73561ed0..9dae3836 100644
--- a/docs/configure/library/custom-shows.md
+++ b/docs/configure/library/custom-shows.md
@@ -1,3 +1,6 @@
# Custom Shows
-Placeholder
+!!! info
+ Custom Shows will be renamed to "Playlists" an in upcoming release
+
+Custom Shows are akin to classic playlists. Any ordering operations in scheduling tools will use the ordering as defined in the Custom Show. Custom Shows can be schedule as if they were "regular" shows in slot editors. Content within are grouped by the Custom Show and not their _actual_ show. This allows creating more complex groupings of content for use in channels.
\ No newline at end of file
diff --git a/docs/configure/programming.md b/docs/configure/programming.md
index aefdf952..7a2a9789 100644
--- a/docs/configure/programming.md
+++ b/docs/configure/programming.md
@@ -32,24 +32,4 @@ By default, your shows are ordered alphabetically (by show name) and episodes wi

-To make the viewing experience more interesting and authentic, you will want to use Tunarr's [scheduling tools](../scheduling-tools/) to reorder and group content.
-
-If we instead wanted this similar to what we'd see on traditional television, select "SORT" and choose either Block Shuffle or Cyclic Shuffle.
-
-
-
-Block Shuffle will play a specific number of episodes from a show, proceed to the next show, play that same number of episodes, proceed to the next show, etc.
-
-By default, when a show completes airing, it will be absent from your schedule until all of the remaining shows complete airing, where the schedule will then be repeated. This means that as you reach the end of your schedule, it may be dominated by one or two shows that have a longer runtime or more episodes than others.
-
-To get around this, select "Make perfect schedule loop". This will attempt to have all shows complete airing at the same time.
-
-
-
-Please note the perfect schedule loop option does not currently support larger channels. If you see the below error, your channel has too many episodes to use this feature. In this case, the "Loop Short Programs" option can be used.
-
-
-
-Cyclic Shuffle will alternate between shows while attempting to preserve the episode sequence. So in this example, it will play S00E01 from show 1, then play S00E01-E02 from show 2, then S01E01-E02 from show 1, then S01E01 from show 2, etc. Compared to Block Schedule, Cyclic Shuffle is randomized, so it will not always display the same number of episodes from a show. Cyclic Shuffle also does not support any features to create even blocks, so the end of your schedule will likely be dominated by a few shows with larger episode counts and runtime.
-
-Once you have a channel created with programming, you are ready to setup your [Client](/configure/clients) and start using Tunarr!
\ No newline at end of file
+To make the viewing experience more interesting and authentic, you will want to use Tunarr's [scheduling tools](../scheduling/) to reorder and group content.
diff --git a/docs/configure/scheduling-tools/block-shuffle.md b/docs/configure/scheduling-tools/block-shuffle.md
deleted file mode 100644
index e69de29b..00000000
diff --git a/docs/configure/scheduling-tools/cyclic-shuffle.md b/docs/configure/scheduling-tools/cyclic-shuffle.md
deleted file mode 100644
index e69de29b..00000000
diff --git a/docs/configure/scheduling-tools/balance.md b/docs/configure/scheduling/balance.md
similarity index 100%
rename from docs/configure/scheduling-tools/balance.md
rename to docs/configure/scheduling/balance.md
diff --git a/docs/configure/scheduling/block-shuffle.md b/docs/configure/scheduling/block-shuffle.md
new file mode 100644
index 00000000..1a1135fb
--- /dev/null
+++ b/docs/configure/scheduling/block-shuffle.md
@@ -0,0 +1,13 @@
+# Block Shuffle
+
+Block Shuffle will play a specific number of episodes from a show, proceed to the next show, play that same number of episodes, proceed to the next show, etc.
+
+By default, when a show completes airing, it will be absent from your schedule until all of the remaining shows complete airing, where the schedule will then be repeated. This means that as you reach the end of your schedule, it may be dominated by one or two shows that have a longer runtime or more episodes than others.
+
+To get around this, select `Make perfect schedule loop`. This will attempt to have all shows complete airing at the same time.
+
+
+
+Please note the perfect schedule loop option does not currently support larger channels. If you see the below error, your channel has too many episodes to use this feature. In this case, the "Loop Short Programs" option can be used.
+
+
diff --git a/docs/configure/scheduling/concepts.md b/docs/configure/scheduling/concepts.md
new file mode 100644
index 00000000..6ef37b19
--- /dev/null
+++ b/docs/configure/scheduling/concepts.md
@@ -0,0 +1,11 @@
+# Scheduling Concepts
+
+## Definitions
+
+* **Lineup**: A channel's *lineup* describes its programming sequence. Channel lineups are looped infinitely and based off of the channel's start time.
+* **Programming**: A channel's *programming* refers the actual media in a channel lineup
+* **Filler**: *Filler* content refers to media that is used to "round out" a schedule. For instance, a 22-minute television episode may need 8 minutes of "filler" distributed within a 30-minute slot to replicate a true "TV" experience
+* **Flex**: *Flex* time refers to chunks of time in which one or more pieces of filler are placed within a channel lineup. Content used to fill periods of *flex* time are not chosen until stream time.
+* **Padding**: *Padding* generally refers to applying flex time in order to have content start at "nice" times, e.g. 12:00, 12:30, etc.
+* **Slot**: Tunarr includes programming tools called *slot* editors. Using *slots* allows for fine-grained control over channel lineups. A *slot* refers to a "grouping" of programming with either a set duration or start time.
+
diff --git a/docs/configure/scheduling-tools/consolidate.md b/docs/configure/scheduling/consolidate.md
similarity index 100%
rename from docs/configure/scheduling-tools/consolidate.md
rename to docs/configure/scheduling/consolidate.md
diff --git a/docs/configure/scheduling/cyclic-shuffle.md b/docs/configure/scheduling/cyclic-shuffle.md
new file mode 100644
index 00000000..403a8324
--- /dev/null
+++ b/docs/configure/scheduling/cyclic-shuffle.md
@@ -0,0 +1,19 @@
+# Cyclic Shuffle
+
+Cyclic Shuffle alternates between shows while preserving the episode sequence. This tool is the equivalent of using [block shuffle](../scheduling/block-shuffle.md) and setting "Program Count" to "1" and "Type" to "Random".
+
+
+ 
+ Cyclic and Block shuffle buttons
+
+
+A sample cyclic shuffled schedule with 3 shows could be something like:
+
+1. Show A, S02E03
+2. Show B, S01E02
+3. Show A, S02E04
+4. Show C, S04E01
+5. Show C, S04E02
+6. Show B, S01E03
+
+In other words, channel programming is grouped by show, randomly shuffled (while preserving episode order), and then chosen at random to produce a lineup.
diff --git a/docs/configure/scheduling-tools/index.md b/docs/configure/scheduling/index.md
similarity index 85%
rename from docs/configure/scheduling-tools/index.md
rename to docs/configure/scheduling/index.md
index 6d828b9f..a1c1f77d 100644
--- a/docs/configure/scheduling-tools/index.md
+++ b/docs/configure/scheduling/index.md
@@ -1,6 +1,6 @@
# Scheduling Tools
-Tunarr offers a range of tools for modifying channel schedules.
+Tunarr offers a range of tools for modifying channel schedules. However, it is important to first become familiar with Tunarr's scheduling [concepts](./concepts.md).
* [Slot Editor](random-slots.md) allows assigning programming to "slots" of fixed or dynamic duration. Slots can then be played back sequentially or at random when generating a schedule.
diff --git a/docs/configure/scheduling-tools/random-slots.md b/docs/configure/scheduling/random-slots.md
similarity index 89%
rename from docs/configure/scheduling-tools/random-slots.md
rename to docs/configure/scheduling/random-slots.md
index ccace0f4..59c47f20 100644
--- a/docs/configure/scheduling-tools/random-slots.md
+++ b/docs/configure/scheduling/random-slots.md
@@ -4,13 +4,13 @@ Slots Editor allows you to schedule programming in "slots". This tool is powerfu
To use Slots Editor for your channel programming, select "TOOLS", then "Slots Editor".
-
+
## Slot Configuration
Each slot is configured with a few parameters.
-
+
When creating a programming slot, you choose between "Fixed" and "Dynamic" length.
@@ -68,21 +68,21 @@ This is an implementation of the original "cyclic shuffle" dizqueTV programming
In this example, we want "30 Rock and "Arrested Development" to air in 30 minute blocks. We have Pad Times set to 00:00 and 00:30, so the episodes will always try to air right at those times by using [Flex](/configure/channels/flex) to fill the empty time.
-
+
Below is a generated schedule with this configuration. A few things to note:
*
- 
+ 
Example generated schedule
In this example, one of our shows has far more episodes than the other but by default the episode Distribution is Uniform so the shows will be ordered with equal priority. If we instead wanted "Yu-Gi-Oh! Duel Monsters" to air 70% of the time, and "Batman Beyond" to air 30% of the time, we would set Distribution to Weighted and adjust the sliders.
-
+
See below for an example of our schedule now that "Yu-Gi-Oh! Duel Monsters" is Weighted to air 70% of the time.
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/configure/scheduling-tools/replicate.md b/docs/configure/scheduling/replicate.md
similarity index 100%
rename from docs/configure/scheduling-tools/replicate.md
rename to docs/configure/scheduling/replicate.md
diff --git a/docs/configure/scheduling-tools/time-slots.md b/docs/configure/scheduling/time-slots.md
similarity index 77%
rename from docs/configure/scheduling-tools/time-slots.md
rename to docs/configure/scheduling/time-slots.md
index 15debed0..3900f404 100644
--- a/docs/configure/scheduling-tools/time-slots.md
+++ b/docs/configure/scheduling/time-slots.md
@@ -4,20 +4,20 @@ Time Slots allow you to schedule specific shows to run at specific time slots ea
To schedule Time Slots for your channel programming, select "TOOLS", then "Time Slots".
-
+
In this example, we want "Yu-Gi-Oh! Duel Monsters" to always air at 10am each day, followed by "Batman Beyond" at 10:30am each day. We also want [Flex](/configure/channels/flex) to fill the time in-between episodes using the Pad Times option, so that episodes always air right at 10am and 10:30am. We have allowed 5 minutes of lateness, so if an episode runs over the 30 minute time slot by 5 minutes or less, the next shows episode will still play no later than 10:35am.
-
+
See below for an example of our current schedule. Please note that as we have only selected two time slots for the entire day, "Batman Beyond" being our last scheduled show will continue airing until the following day at 10am when the next scheduled episode of "Yu-Gi-Oh! Duel Monsters" is set to air.
-
+
If we instead wanted to air these two episodes, then have the channel play Flex content until the next episode of "Yu-Gi-Oh! Duel Monsters" the following day at 10am, we would simply add Flex after "Batman Beyond".
-
+
See below for an example of our schedule now that we have Flex after our two episodes air. Now it will alternate Show 1 Day 1, Show 2 Day 1, Show 1 Day 2, Show 2 Day 2, etc.
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/mkdocs.yml b/mkdocs.yml
index 879a4c9e..4e161ef1 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -34,6 +34,7 @@ theme:
- navigation.indexes
- content.code.copy
- content.code.select
+ - content.tooltips
nav:
- Home: index.md
@@ -61,12 +62,15 @@ nav:
- Watermarks: configure/channels/watermarks.md
- Programming: configure/programming.md
- Scheduling:
- - configure/scheduling-tools/index.md
- - Slot Editor: configure/scheduling-tools/random-slots.md
- - Time Slots: configure/scheduling-tools/time-slots.md
- - Balance: configure/scheduling-tools/balance.md
- - Replicate: configure/scheduling-tools/replicate.md
- - Consolidate: configure/scheduling-tools/consolidate.md
+ - configure/scheduling/index.md
+ - Concepts: configure/scheduling/concepts.md
+ - Slot Editor: configure/scheduling/random-slots.md
+ - Time Slots: configure/scheduling/time-slots.md
+ - Cyclic Shuffle: configure/scheduling/cyclic-shuffle.md
+ - Block Shuffle: configure/scheduling/block-shuffle.md
+ #- Balance: configure/scheduling/balance.md
+ - Replicate: configure/scheduling/replicate.md
+ - Consolidate: configure/scheduling/consolidate.md
- Library:
- configure/library/index.md
- Filler: configure/library/filler.md
@@ -83,6 +87,7 @@ nav:
markdown_extensions:
- admonition
+ - abbr
- md_in_html
- toc:
permalink: true
@@ -93,7 +98,9 @@ markdown_extensions:
line_spans: __span
pygments_lang_class: true
- pymdownx.inlinehilite
- - pymdownx.snippets
+ - pymdownx.snippets:
+ auto_append:
+ - docs-extras/includes/definitions.md
extra_css:
- stylesheets/extra.css
@@ -104,3 +111,6 @@ extra:
plugins:
- glightbox
+
+watch:
+ - docs-extras/includes