20
Apr

Update Post – April 20, 2026

Hail, Portal People!

The season clock has chimed again, so it’s time for another reckoning. See below for all of the new features and bug fixes that were added to OP since the previous Update Post.

If you have any questions, comments, or feedback, feel free to post them in the Community Forums, or email support directly at [email protected].

List of Site Updates
  • Typing [TAB] in the Tags field, with no other characters typed will tab to the next form field.
  • Fixed bug where typing comma with nothing else in the Tags would type commas instead of ignoring the commas since there is no tag to create.
  • Fixed Tags bug where removing the first tag prevents that tag from being added again until the page is Saved and Edited again.
  • Fixed bug where a deleted OAuth Client Application was causing an error on OAuth Clients page.
  • Made the “assets” urls be routed to the “www” subdomain so that they can be cached by Cloudflare.
  • Moved favicons to the “assets” path with “www” subdomain.
  • Changed all_inbox_items to call the “www” subdomain instead of the Campaign subdomain, so it will cache.
  • Fixed CORS error on all_inbox_items.
  • Fixed warning about needing to include avatar_image on all_inbox_items.
  • Fixed CORS error on site.webmanifest.
  • Cached the all_inbox_items inbox data querying.
  • Moved Stripe checkout script only to the pages where it’s needed.
  • Changed wiki_page_js to be skipped if it would be empty.
  • Separated theme_css and custom_css and moved to the root domain with campaign selected in query_string to enable caching.
  • Moved dynamic_sheet_template css and js to be access from www to enable caching.
  • Added Privacy tooltip that removing the human check can take up to 24 hours to take effect.
  • Created pre_human_check page that can be cached.
  • Fixed spinner to be cacheable.
  • Reduced cached time on Cloudflare to 1 hour.
  • Changed DST JavaScript to use $.ajax instead of $.getScript so that it wouldn’t append the cache busting &_= query string parameter so Cloudflare can cache the DST JS.
  • Added cache control query string to inboxItemsUrl so that all_inbox_items can be cached in the browser.
  • Threw an error if the all_inbox_items was being requested without a cc.
  • Passed immuatable and max-age 1 year with all_inbox_items.
  • Removed redundant cache-control.
  • Added cc query string to enable immutable browser caching of the content_summary.
  • Fixed Cache-Control header on all_inbox_items to allow it to be browser cached long-term with cc query string param.
  • Added browser caching for other commonly requested endpoints that have cc params.
  • Changed throw error to params.require[:cc] to return a 400 if the cc is not there.
  • For a Player Profile, if the player has changed their member name, then return a 404 for the old member name instead of an error.
  • Fixed double emailing bug to auto_inactive Players.
  • Blocked sending of all emails to members that “don’t like email”.
  • Fixed Password Reset to redirect “no emails” members to support.
  • Added Unsubscribe all to Member Profile Email Contact Settings. Disabled other Contact Settings when checked.
  • Specified it’s the Obsidian Portal account, and not the email address account that is blocked.
  • Added unsubscribe-all note to multiple emails.
  • Fixed email_update to require being logged in and to give better messages about when the email has been updated or not.
  • Required logged in for visiting messaging pages.
  • Fixed capitalization on Separate Player and Non-Player Characters.
  • For Campaign Forum email reply posting, if the email reply is not from the email address that the post was sent to, then ignore it. It’s spam.
  • Removed all Campaign Stream entries for a page that has been changed to GM Only.
  • Added Secrets page Player Secret previews.
  • Robots.txt changes
  • For webcal, returned 410 Gone if Campaign Calendar has not had any events in the last 12 months.
  • Enabled webcal requests to get 304 responses
  • Fixed bug where Campaign was being touched even if there wasn’t a change to any of the Players’ auto statuses.
  • For webcal, returned 304 if the Campaign hasn’t been updated since the last check.
  • Fixed failed search to retry with problematic characters removed.
  • Added proxy_hide_header ETag to enable stale? to work.
  • Fixed bug where new signups were not getting the auth_token cookie to help them auto-login again after closing the browser.
  • Fixed bug where very rarely a Campaign would get its Theme, Banner, or Background stuck and not be able to change it.
  • Fixed bug where search indexing errors if the WikiPage was deleted before the index update was run.
  • Required logged-in for unsubscribe-all.
  • Changed Looking for Players to be stored as a date instead of as a boolean.
  • Fixed API bug when Character author is nil.
  • Added Tags in API for Create and Update for Characters and Wiki Pages.
  • In a new Campaign, made the default first Adventure Log Post GM Only.
  • Showed GM Only section on Edit Home Page.
  • Added GM Only to Campaign Home Page. Moved microdata to fix margin-bottom of the GM Only.
  • Added sample Campaign hooks for new Campaign Home Page.
  • Added new default Campaign Main Page All Campaign Members Player Secret.
  • Added new default Campaign Main Page GM Only text.
  • Added new default Campaign Main Page body of sample categories as new Wiki Page links.
  • Changed new default Adventure Log Post to suggest checking the default pages.

Game on!

Award Winning!

Gold ENnie for Best Website 09'-11'


Silver ENnie for Best Website, Best Podcast 2012-2013
Petrified Articles
Categories
© Copyright 2010-2026 Words In The Dark. All rights reserved. Created by Dream-Theme — premium wordpress themes. Proudly powered by WordPress.