diff --git a/CHANGELOG.md b/CHANGELOG.md
index e201866..54e32ff 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,10 @@
 
 ## Upcomming Version
 
+### Version 3.15.0
+- Night order bubbles always on for storyteller
+- Optional night order bubbles for players
+
 ### Version 3.14.0
 Reworked script selection UI
 
diff --git a/package-lock.json b/package-lock.json
index 1da95ed..1a00f31 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
 {
   "name": "townsquare",
-  "version": "3.14.0",
+  "version": "3.15.0",
   "lockfileVersion": 2,
   "requires": true,
   "packages": {
     "": {
       "name": "townsquare",
-      "version": "3.14.0",
+      "version": "3.15.0",
       "license": "GPL-3.0",
       "dependencies": {
         "@fortawesome/fontawesome-svg-core": "^1.2.32",
diff --git a/package.json b/package.json
index 55fe5b9..bb82c02 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "townsquare",
-  "version": "3.14.0",
+  "version": "3.15.0",
   "description": "Blood on the Clocktower Town Square",
   "author": "Pingumaskt",
   "scripts": {
diff --git a/src/components/Menu.vue b/src/components/Menu.vue
index 0da6b82..52e785e 100644
--- a/src/components/Menu.vue
+++ b/src/components/Menu.vue
@@ -81,7 +81,7 @@
               />
             </em>
           </li>
-          <li @click="toggleNightOrder" v-if="players.length">
+          <li @click="toggleNightOrder" v-if="session.isSpectator">
             {{ locale.menu.grimoire.order }}
             <em>
               <font-awesome-icon
diff --git a/src/components/Player.vue b/src/components/Player.vue
index f62d5a2..9825ca8 100644
--- a/src/components/Player.vue
+++ b/src/components/Player.vue
@@ -20,7 +20,10 @@
 
       <div
         class="night-order first"
-        v-if="nightOrder.get(player).first && grimoire.isNightOrder"
+        v-if="
+          nightOrder.get(player).first &&
+            (grimoire.isNightOrder || !session.isSpectator)
+        "
       >
         <em>{{ nightOrder.get(player).first }}.</em>
         <span v-if="player.role.firstNightReminder">{{
@@ -29,7 +32,10 @@
       </div>
       <div
         class="night-order other"
-        v-if="nightOrder.get(player).other && grimoire.isNightOrder"
+        v-if="
+          nightOrder.get(player).other &&
+            (grimoire.isNightOrder || !session.isSpectator)
+        "
       >
         <em>{{ nightOrder.get(player).other }}.</em>
         <span v-if="player.role.otherNightReminder">{{
diff --git a/src/components/TownSquare.vue b/src/components/TownSquare.vue
index e829042..f7e008b 100644
--- a/src/components/TownSquare.vue
+++ b/src/components/TownSquare.vue
@@ -140,7 +140,10 @@
         >
           <div
             class="night-order first"
-            v-if="nightOrder.get(role).first && grimoire.isNightOrder"
+            v-if="
+              nightOrder.get(role).first &&
+                (grimoire.isNightOrder || !session.isSpectator)
+            "
           >
             <em>{{ nightOrder.get(role).first }}.</em>
             <span v-if="role.firstNightReminder">{{
@@ -149,7 +152,10 @@
           </div>
           <div
             class="night-order other"
-            v-if="nightOrder.get(role).other && grimoire.isNightOrder"
+            v-if="
+              nightOrder.get(role).other &&
+                (grimoire.isNightOrder || !session.isSpectator)
+            "
           >
             <em>{{ nightOrder.get(role).other }}.</em>
             <span v-if="role.otherNightReminder">{{