OHCS testing

Testing the Oath Hammer Character Sheet

Ten minutes is plenty. Pick two to four scenarios that interest you, try them, mark each as Works, Problem or Skipped, and press Send report. Partial reports are what we want: one scenario tested on your own phone is more useful than none. You can come back later and send another report with different scenarios. (All 34 scenarios together take about 74 minutes; nobody needs to do them all.)

Short on ideas? Use a quick pick, which highlights a small set:

Before you start

Video Walkthroughs: Create Character, Owlbear VTT, Cloud Sync & Passkeys (Open Full Video Page )

1. Standalone Character Creation & JSON Export
2. Owlbear Rodeo VTT: Export/Import, Copy/Paste & Room Dice
3. Cloud Account Register, Save, Restore & Login in a Brand-New Session
4. New Player Guide: Passkey Setup, Cross-Device & Owlbear Sync

Quick Setup: How to Test OHCS in Owlbear Rodeo (Jump to S29–S32)

  1. Add Custom Extension (GM once): Log in at owlbear.rodeo open your profile Extensions panel (puzzle piece icon or Dashboard Extensions) click + Add Extension paste:
    https://hypertekst.net/ohcs/manifest.json (or https://hypertekst.net/ohcs-beta/manifest.json for Beta; optional shared 3D dice tray: https://hypertekst.net/hammerdice-owlbear/manifest.json)
  2. Enable in Room: Open or create a Room click ... (More) Extensions in the top-left toggle Oath Hammer Character Sheet ON. The shield/hammer icon now appears in the top-left bar for you and all players in that room.
  3. Unlock License Key inside Owlbear (1-Click): Because browsers isolate third-party iframes inside owlbear.rodeo, click Pop Out in the indigo Owlbear VTT bar at the top of the sheet (which opens a top-level hypertekst.net window and automatically syncs your unlocked 7-word key back into Owlbear), OR click License Copy Key on your standalone tab and Paste Key inside Owlbear.
  4. Resize, Pop Out & Roll: Use Wide 960px to expand the popover in-place, Pop Out for a draggable sheet window, or Dice for a compact floating Dice Roller + Session Roll Log. Every roll pops a map-wide banner toast at the top of the Owlbear room and logs to Roll Log.

Quick Setup: Supabase Cloud Account, 2FA & 1-Step New-Device Restore (Jump to S19b)

  1. Register on Device 1 (After Unlocking Your 7-Word Key): Open History in the top toolbar (or open License Cloud Account). Enter your Email and a Password (min 6 characters) and click Register Account. Your unlocked 7-word license key, custom homebrew rules, and character roster are automatically uploaded to your private Supabase vault.
  2. Enable Authenticator App 2FA (Optional, Recommended): Once signed in inside History (or via License 2FA & History), click Setup 2FA, scan the QR code (or copy the secret) into 1Password / Apple Passwords / Google Authenticator, enter the 6-digit code, and click Verify & Activate 2FA.
  3. Sign In on Any New Device or Owlbear Rodeo (1-Step Restore): On a brand-new phone, tablet, laptop, or inside Owlbear Rodeo where the initial Enter Oath Hammer License Key modal appears, expand Cloud Account: Register, Sign In or Sync Vault, enter your Email + Password (+ 2FA code if enabled), and click Sign In & Restore. It unlocks the encrypted rulebook and restores your characters in one click without typing the 7-word key.

Sections

A. Access & License

S01 First load shows license gate1 min

Rules content stays locked until a valid key is entered.

Steps

  1. Open a private/incognito window.
  2. Go to https://hypertekst.net/ohcs/.

Expected

  • License modal is visible.
  • Class and Lineage dropdowns behind the modal contain only "None".
First load shows license gate
First load shows license gate
S02 Typo detection per word1 min

Each of the 7 words is checksummed individually.

Steps

  1. Paste your key, then change one letter in word 2.

Expected

  • Word 2 turns red, the status line names "Word 2".
  • Unlock button stays disabled.
Typo detection per word
Typo detection per word
S03 Unlock, Copy Key & Persistence2 min

A valid key decrypts rules, can be copied in 1 click for other tabs/VTT, and is remembered on this device.

Steps

  1. Fix the typo, press Unlock.
  2. Reload the page.
  3. Click " License" (in the top toolbar or sheet actions bar) and click " Copy Key" in the Full 7-Word Key box.
  4. Click "Forget key", then reload and paste your copied key back in.

Expected

  • Sheet becomes usable after unlock, no modal after reload.
  • " Copy Key" copies the full hyphenated 7-word phrase to your clipboard in one click.
  • After "Forget key" the gate returns, and " Paste Key" restores all 7 words at once.
Unlock, Copy Key & Persistence
Unlocked, empty sheet.
S04 Revoked key2 min

Revoked keys give clear feedback and do not damage characters.

Steps

  1. In a private window, paste this revoked demo key: aagslj-jzblme-xwqhew-asjqoj-aexajk-yeqyrt-tgvyhn
  2. Press Unlock.
  3. Then try it on a normal window that already has characters (use "Forget key" first, unlock again with your own key afterwards).

Expected

  • Clear message that the key is not valid; no crash or endless spinner.
  • Existing roster entries are unchanged after unlocking again with your own key.
  • Note any wording that confused you.
Revoked key
Result of entering the revoked demo key.

B. Character Creation

S05 Guided wizard4 min

A new player can build a legal character without reading the book.

Steps

  1. Press "Character Wizard".
  2. Walk through every step: lineage, class, attributes, skills, gear, oaths.
  3. Use Back and the step buttons to jump around.
  4. Finish.

Expected

  • Point budgets prevent illegal totals.
  • Finish writes all choices into the sheet.
  • Nothing is lost when jumping between steps.
Guided wizard
Guided wizard
S06 Wizard class step1 min

Class cards are readable and selectable.

Steps

  1. In the wizard, open step 3.
  2. Select two different classes in a row.

Expected

  • Selection highlight moves; description and starting kit update.
Wizard class step
Wizard class step
S07 Randomize1 min

Quick random character for testing or NPCs.

Steps

  1. Press "Randomize", choose options, confirm.
  2. Repeat 3 times.

Expected

  • Each result is a complete, legal character.
  • Undo/cancel leaves the current character intact.
Randomize
Randomize

C. Sheet Editing

S08 Attributes, derived stats & weapon quick-search3 min

Derived values recalculate immediately and the 58-weapon dropdown filters as you type.

Steps

  1. Change Toughness 3 -> 4.
  2. Add one rank of Resilience.
  3. Change Armor and Shield.
  4. In Weapons & Attacks, type "bow" or "halb" into the " Type to filter..." box above a Weapon dropdown and open the grouped dropdown.

Expected

  • Grit max, Defense and AV update without reload.
  • Weapon dropdown groups entries by category (Melee — Common, Heavy, Long, Shield, Ranged — Bow) and filters matching weapons as you type.
  • Values survive reload (autosave indicator shows saved).
Attributes, derived stats & weapon quick-search
Attributes, derived stats & weapon quick-search
S09 Full sheet sweep4 min

Every section accepts input and saves.

Steps

  1. Scroll the whole sheet top to bottom.
  2. Edit one field in each section: skills, weapons, gear, oaths, abilities, spells, notes.
  3. Add and remove an ability and a spell.

Expected

  • No field is stuck or overlaps another.
  • All edits persist after reload.
Full sheet sweep
Full-page capture of a filled character.
S10 Portrait and gallery1 min

Images are stored locally with the character.

Steps

  1. Click the portrait frame, pick an image.
  2. Remove it again.
  3. Add 2 gallery images.

Expected

  • Images show immediately and survive reload.
  • Large images do not freeze the page.

D. Dice & Combat

S11 Skill roll2 min

Tapping a skill opens a pre-filled pool.

Steps

  1. Tap the roll button next to Fighting.
  2. Check the White/Red/Black counts.
  3. Toggle Luck, +1 and -1 modifiers, then Roll.

Expected

  • Pool matches attribute + ranks.
  • White die colour stays white, Red red, Black black (also in dark mode).
  • Successes are counted correctly, exploding dice are marked.
Skill roll
Skill roll
S12 Roll result1 min

Results are readable and correct.

Steps

  1. Roll 5 times.
  2. Count successes by hand for at least two rolls.

Expected

  • Manual count matches the displayed total.
Roll result
Roll result
S13 Weapon attack and SV2 min

Attack roll computes Success Value against defense.

Steps

  1. Press Attack on Weapon 1, Roll.
  2. Raise defender Defense with +.

Expected

  • Net SV drops by one per defense point and never goes below 0.
Weapon attack and SV
Weapon attack and SV
S14 Weapon damage2 min

Damage = base DMG + SV, with traits applied.

Steps

  1. Press Damage on Weapon 1.
  2. Add +2 SV.
  3. Check AP and traits listed.

Expected

  • Total equals weapon DMG + SV.
  • Trait buttons apply and can be removed.
Weapon damage
Weapon damage
S15 Free dice roller1 min

Ad-hoc pools without a character stat.

Steps

  1. Open Dice from the toolbar.
  2. Set 3 white, 2 red, 1 black, Roll.
  3. Reset.

Expected

  • Counts can not go negative.
  • Reset clears pool and modifiers.
Free dice roller
Free dice roller

E. Rules Reference

S16 Rules help search2 min

In-app rules text is findable.

Steps

  1. Open Rules Help.
  2. Search "grit", then switch category tabs.
  3. Click a "?" next to a weapon or skill on the sheet.

Expected

  • Results filter as you type.
  • The "?" opens the matching entry directly.
Rules help search
Rules help search
S17 Homebrew vs. Errata: Create, Rename, Use & Submit ( Patches)4 min

Create or rename homebrew items, tweak core rules without overwriting canonical stats, use them on your sheet with badges, and submit to Discord.

Steps

  1. Open Custom Rules (" Patches" in the toolbar or sheet actions bar).
  2. Errata vs. Homebrew Mode: Notice the "Entry Mode" selector at the top of the builder form. Keep it on " Homebrew / Custom Rule (Preserves Core)" (default), pick Category "Weapons" (or " Gear / Talisman / Trinket" or "R Weapon Rune / Crafting Mod"), load existing "Flail", change DMG from "M+2" to "M+4", and click " Save to Active Custom Rules / Patch". Notice how it saves as " Flail (Homebrew)" so canonical "Flail" (M+2) stays untouched. (Switching Entry Mode to " Official Errata / Book Fix" modifies the core rule in-place for book typo fixes.)
  3. Create, Add Mechanical Effects & Rename: Click "+ Create New Entry", enter Name "Sunblae" (typo), pick a Range preset, type "abc" into DMG to test input validation, fix DMG to "M+3", AP "2", click trait pills ("Fast", "Versatile"), optionally click "+ Add Effect" in the Mechanical Effects Builder (`skill_mod`, `skill_color`, `stat_mod`, `weapon_mod`, `tracker_pip`), and click " Save". Then click " Edit" next to "Sunblae" in the Staged List, fix the name to "Sunblade", and click " Save" again.
  4. Use on Sheet & Help: Close the modal, open a Weapon, Gear, or Rune slot dropdown, and equip " Sunblade" or " Flail (Homebrew)" (under Custom / Homebrew). Check the active bonuses/traits and open " Rules Help" to see the badge.
  5. Submit to Discord: Re-open " Patches" and click " Submit Patch to Discord" (or " Download .ohcs-patch.json").

Expected

  • In Homebrew mode, tweaking a core item auto-suffixes " (Homebrew)" so the canonical rulebook entry remains intact; Errata mode patches in-place.
  • Clicking " Edit" on any staged row loads it back into the form; changing its name and saving renames it in-place (replacing the old name in the staged list and updating any equipped slot on the sheet).
  • Equipped homebrew items show a badge in dropdowns, active traits, and Rules Help, and trigger the violet TWEAKED banner.
  • Submitting posts to #ohcs-patches with HOMEBREW / ERRATA tags and deduplicates identical submissions for 5 minutes.
Homebrew vs. Errata: Create, Rename, Use & Submit (Patches)
Custom Rules & Patches modal showing Homebrew vs. Official Errata mode, Edit/Rename, and staged badges.
S17b Share Compendium Packs ( Packs & Keys) & Toggle Modules3 min

Export your custom rules as a shareable .ohcs-pack.json compendium, install or toggle community packs, and inspect License Key status.

Steps

  1. Open " Packs" (Keys & Compendia Pack Manager) from the top toolbar or sheet actions bar.
  2. Inspect the " Core Rules License Vault" status card (showing Unlocked status and 1-click " Copy 7-Word Key").
  3. Under " Local Homebrew & Custom Rules", click " Export Custom Pack" to download your active homebrew rules as a shareable .ohcs-pack.json file.
  4. Under " Installed Compendium Packs (.ohcs-pack.json)", click " Install .ohcs-pack.json", select the file you just exported, and test toggling the pack Enabled / Disabled.

Expected

  • " Export Custom Pack" packages your active custom weapons, armor, spells, abilities, and oaths into a clean .ohcs-pack.json compendium file.
  • Installed packs appear in the Pack Manager list where they can be toggled ON/OFF or removed at any time, immediately updating sheet dropdowns.

F. Roster & Data

S18 Multiple characters3 min

Roster switching never mixes data.

Steps

  1. New character, name it "Test A".
  2. Clone it, rename to "Test B", change Might.
  3. Switch between them.
  4. Delete "Test B".

Expected

  • Each character keeps its own values.
  • Delete asks for confirmation and removes only that entry.
Multiple characters
Multiple characters
S19 Export & Import Character JSON (with Homebrew / Locked Module Stubs)3 min

Characters move between devices without loss—even if the receiving browser does not have the character's homebrew pack installed.

Steps

  1. Equip a homebrew weapon (e.g. " Sunblade" from S17) on your character and click " Export JSON".
  2. Open a second browser or Incognito window (unlocked with your key, or with the custom rule deleted/disabled) where "Sunblade" is not installed.
  3. Click " Import" and load the exported character JSON.

Expected

  • Imported character loads all stats, notes, abilities, and portrait intact.
  • Even if "Sunblade" is missing from the local compendium, the weapon dropdown preserves " Sunblade [Imported]" with its combat stats (DMG, AP, Range, Traits) intact instead of resetting to "None", and displays a notice in the top banner and Packs modal.
S19b 25-Step Undo History, Kanka Entity Save & Supabase Cloud License/Character Sync ( History)3 min

Undo accidental edits with 1 click, persist character data on Kanka entities, and sign in on any new device to restore both your 7-word license key and character roster.

Steps

  1. Click " History" in the top toolbar or sheet action bar to open the Character Undo, Backup History & Cloud Sync modal.
  2. Test Undo & Clipboard: Click " Save Checkpoint", change an attribute on the sheet, then re-open " History" and click " Undo Last Change" (or click " Restore" on any of the last 25 snapshots). Test " Copy Character" and " Paste Character".
  3. Test Supabase Cloud Account (License + Roster Sync): Under " Supabase Cloud Account", register or sign in with Email + Password (optional TOTP 2FA supported). Click " Push to Cloud" to back up your unlocked 7-word license key, custom rules, and character roster.
  4. New-Device 1-Step Restore: Open an Incognito window (where the initial 7-word License Vault modal appears), expand " Have a Cloud Account? Sign In to Restore License Key & Characters", and click " Sign In & Restore".

Expected

  • Every stat edit automatically records into the 25-snapshot per-character ring buffer; " Undo Last Change" immediately restores the previous state.
  • When embedded in Kanka, clicking " Save to Kanka" persists all attributes plus ohcs_state_json directly to the Kanka entity.
  • Signing into your Cloud Account on a brand-new device automatically unlocks the 7-word encrypted rules vault, restores custom homebrew rules, and loads your character roster in one step.
25-Step Undo History, Kanka Entity Save & Supabase Cloud License/Character Sync (History)
Character Undo, 25-Step Revision History, Kanka Entity Persistence & Supabase Cloud Account modal ( History).
S20 Print / PDF2 min

Two-page printable sheet.

Steps

  1. Press Print, choose "Save as PDF".
  2. Try with split view active on a phone.

Expected

  • Two pages, no clipped boxes, no duplicated inputs.
  • Dice colours print correctly.
Print / PDF
Print media emulation.

G. Look & Layout

S21 Dark mode1 min

Theme switch is complete and readable.

Steps

  1. Switch theme to Dark, then Auto, then Light.

Expected

  • No white boxes left in dark mode.
  • Dice colours unchanged.
  • Choice survives reload.
Dark mode
Dark mode
S22 Phone layout3 min

One-handed use on a phone.

Steps

  1. Open on a phone (or devtools at 390 px).
  2. Tap a text field.
  3. Tap the top-row Encounter and Roller tabs, then tap or swipe through the bottom-row section tabs.

Expected

  • No zoom-in when tapping inputs (iOS).
  • Sticky 2-row top navigation shows character badge, `[ Encounter, Roller]`, and horizontal section tabs without floating footer buttons covering sheet text.
  • All buttons meet touch target size and are easy to hit with a thumb.
Phone layout
Phone layout
S23 Phone screen navigation2 min

Section cards switch cleanly.

Steps

  1. Tap or swipe horizontally (``/``) through every section tab, and swipe vertically (``/`` edge gesture) or tap Encounter.
  2. Rotate the device or widen above 768 px to check All vertical scroll / Expand All.

Expected

  • Active tab highlights cleanly with no empty screens or clipped controls.
  • Layout adapts on rotation without losing input; Tablet/Desktop exposes full-sheet vertical `All` view.
Phone screen navigation
Phone screen navigation
S24 Phone dice roller1 min

Dice usable on small screens.

Steps

  1. Tap Roller (or click an attack/skill) on the phone and roll.

Expected

  • Inline sliding roller card keeps vitals accessible; Roll button is reachable with the thumb and results are never hidden behind edges.
Phone dice roller
Phone dice roller

H. Channels & Offline

S25 Beta preview on stable (TWEAKED)2 min

Users always know when they are not on plain stable.

Steps

  1. On /ohcs/, press "Beta Features".
  2. Then press "Turn Off Beta Preview" in the banner.

Expected

  • Violet TWEAKED banner and ring appear, then disappear.
Beta preview on stable (TWEAKED)
Beta preview on stable (TWEAKED)
S26 Beta instance2 min

Beta is clearly labelled and does not damage stable data.

Steps

  1. Open https://hypertekst.net/ohcs-beta/.
  2. Edit a character, then return to /ohcs/.
  3. Use "Restore stable backup" if needed.

Expected

  • Amber BETA INSTANCE banner and "[BETA]" in tab title.
  • Stable still opens your characters.
S27 Changelog & Beta Feature Voting2 min

Users can see what changed and vote on which beta features promote to stable.

Steps

  1. Open the Changelog from the toolbar on stable or beta.
  2. Review the "Beta vs. Stable Changes" comparison table.
  3. Cast votes ( Want / Tweak / Skip) on features (Vitals, Pips, Resets, Delving, Split, Roster).
  4. Add optional comments in the feedback box and click " Submit Votes to Discord" (or " Copy Summary").

Expected

  • Version shown matches footer; table compares stable vs. beta capabilities.
  • Tapping vote buttons toggles selection and persists in your browser.
  • Submitting sends formatted votes to Discord #ohcs-patches (or copies summary if unauthenticated).
Changelog & Beta Feature Voting
Changelog & Beta Feature Voting
S28 Install and offline3 min

Works as an installed app without network.

Steps

  1. Install the app (browser menu or "Install" button).
  2. Open it once online, then enable airplane mode.
  3. Open again, edit, roll dice, open rules.

Expected

  • App loads offline with rules unlocked.
  • Edits persist after going back online.

I. Owlbear Rodeo VTT

S29 GM Setup: Create Room & Enable Extensions3 min

Only the GM needs an Owlbear Rodeo account and adds the extension manifest once for the room.

Steps

  1. Log in at https://www.owlbear.rodeo (GM account required; players do not need accounts).
  2. In your profile Dashboard -> Extensions -> click "+ Add Extension" (Custom Extension) and paste: https://hypertekst.net/ohcs/manifest.json
  3. (Optional) Also add the shared room dice tray manifest: https://hypertekst.net/hammerdice-owlbear/manifest.json
  4. Create or open a Room, click the "..." (More) menu -> Extensions, and toggle "Oath Hammer Character Sheet" ON for this room.

Expected

  • The Oath Hammer shield/hammer icon appears in the top-left action bar of the Owlbear room for the GM and all players.
  • Players joining the room automatically get the extension icon without installing any manifest URL themselves.
S30 Player Join, Auto-Unlock via Pop-Out or Copy Key2 min

Players join via room link, get admitted by the GM, and unlock the Owlbear iframe via 1-click Pop-Out or Copy/Paste.

Steps

  1. GM copies the Room URL (or clicks Invite) and sends it to the player (or opens an Incognito window to simulate a player).
  2. Player opens the room URL and enters a display name (no Owlbear account login required).
  3. GM clicks "Allow" on the Knocking notification at the top-left to admit the player as a Player role.
  4. Unlock inside Owlbear: Because browsers partition iframe storage inside owlbear.rodeo, either click " Pop Out Sheet" in the Owlbear VTT bar (which opens a top-level hypertekst.net window and automatically syncs your unlocked license key back into the Owlbear iframe), OR click " License" -> " Copy Key" on your standalone tab and " Paste Key" inside Owlbear.

Expected

  • The 420x720 character sheet popover opens inside Owlbear Rodeo with the indigo Owlbear VTT bar at the top.
  • Clicking " Pop Out Sheet" (or using " Copy Key" -> " Paste Key") unlocks the Owlbear iframe and caches the key for future sessions.
Player Join, Auto-Unlock via Pop-Out or Copy Key
420x720 Owlbear Rodeo extension popover with VTT Control Bar.
S31 Resize Popover (420px / 960px), Pop-Out Windows & Character Management3 min

Players can resize the Owlbear popover, pop out the Sheet or Dice Roller into movable windows, and create/import PCs.

Steps

  1. Compact vs. Wide Popover: By default, the 420x720 popover starts on the " Stats" card with header details collapsed so there is no long vertical scroll. Click " Wide 960px" in the Owlbear VTT bar to expand the popover to the full 3-column sheet (or " Compact 420px" to shrink back).
  2. Pop-Out Windows: Click " Pop Out Sheet" to open a freely movable/resizable character sheet window, or click " Pop Out Dice" to open a compact floating Dice Roller & Session Roll Log window.
  3. Create / Export / Import PC: Click "+ New" -> " Character Wizard", or use " Export JSON" / " Import" to exchange character files.

Expected

  • " Wide 960px" dynamically resizes the Owlbear popover via OBR.action.setWidth(960).
  • Popped-out Sheet and Dice windows can be dragged to a second monitor and relay all rolls straight into the Owlbear room.
Resize Popover (420px / 960px), Pop-Out Windows & Character Management
Owlbear VTT bar with Wide 960px toggle, Pop Out Sheet, Pop Out Dice, and Roster controls.
S32 Session Roll Log, Owlbear Map Toasts & Room Sync2 min

Every roll is logged with history in the built-in Roll Log, pops a toast on the Owlbear map, and syncs to HammerDice Owlbear.

Steps

  1. Roll any Skill (e.g. Fighting) or Weapon Attack from the Owlbear popover or from a popped-out Sheet/Dice window.
  2. Inspect the " Roll Log" feed inside the Dice Roller (and test " Copy Log" / " Clear").
  3. Observe the Owlbear Rodeo room notification banner at the top of the map and (if installed) the HammerDice Owlbear extension tray.

Expected

  • 1) Built-in Roll Log: Records a scrolling session history (up to 40 rolls) showing player name ( local / room), timestamp, White/Red/Black die chips with explosion markers (), and net Successes.
  • 2) Owlbear Map Notification: Calls OBR.notification.show(...) so everyone in the room sees a banner toast at the top of the map.
  • 3) Room Metadata & Cross-Window Sync: Writes net.hypertekst.hammerdice/lastRoll and rollHistory to OBR.room.setMetadata (syncing with HammerDice Owlbear and other players' sheets) and broadcasts across BroadcastChannel to popped-out windows.

J. Portrait Lightbox, Community Directory, Campaigns & Discord Bot (S33–S36)

S33 Multi-Picture Portrait Gallery & Full-Format Lightbox Viewer2 min

Upload multiple character pictures, switch active thumbnail, and inspect full-format resolution in the lightbox modal.

Steps

  1. In the Character Portrait frame (top-left), click " Upload" (or drag-and-drop 2–4 image files).
  2. Click thumbnails in the gallery strip below the portrait to switch the active primary portrait.
  3. Click the main portrait image (or " View Full") to open the Full-Format Lightbox Viewer (#oh-lightbox-modal).
  4. Use the / buttons or Left/Right arrow keys to cycle through portraits and Escape to close.

Expected

  • All uploaded portraits appear in the thumbnail strip (up to 8 per character) and persist in local storage and exported .ohcs.json files.
  • Clicking the portrait or " View Full" opens the full-screen lightbox showing the full-format image, counter ("Portrait X of N"), and keyboard navigation.
S34 Cloud Autosave, Public Publishing Opt-In & Community Directory Search3 min

Verify automatic cloud sync for active cloud accounts, opt-in public character publishing, and as-you-type FTS directory search.

Steps

  1. Open " Cloud" (#btn-cloud-sync) and sign in with an active cloud account.
  2. Verify "Auto-save to Cloud when signed in" (#oh-cloud-autosave-toggle) is checked, edit a field on the sheet, and wait 2.5 seconds.
  3. Optionally check " Publish active character to Community Directory" (#oh-cloud-public-toggle) and enter a short public summary.
  4. Click " Directory" (#btn-open-directory), search as you type in #oh-dir-search-input, and test " Import Copy" and " Copy Link".

Expected

  • Edits automatically sync to the cloud and update the #oh-cloud-autosave-badge timestamp without manual clicks.
  • Characters remain private by default unless published; published characters appear in the Community Directory with autocomplete suggestions and can be imported as a local copy or opened via ?char=<uuid>.
S35 Campaign Creation, Character Application/Invite & House Rules Sync3 min

Create a campaign, link a character via application or invite URL, and sync campaign house rules & custom equipment.

Steps

  1. Open " Directory" (#btn-open-directory) and switch to the " Campaigns & Party" tab.
  2. Create a new campaign (slug, name, setting) or browse an existing recruiting campaign.
  3. Click " Apply with Active Character" (or open a ?campaign=<id>&invite=<code> link) and approve the character link as GM.
  4. Click " Push My Custom Equipment to Campaign" (as GM) and " Sync Campaign House Rules & Equipment" (as Player).

Expected

  • Players can apply or join via invite link even if their character is not publicly published in the directory.
  • Syncing campaign house rules merges the campaign's custom equipment and rules into the player's local OHCS workbench.
S36 Marshalcy Campaign Bundle Sync & Discord Bot DM Key Manager3 min

Export/import a .marshalcy-campaign.json bundle into /marshalcy/ Wiki & Dossiers, and test Discord Bot DM Key Manager commands.

Steps

  1. In OHCS (" Campaigns & Party") or Marshalcy (/marshalcy/ " Wiki & Dossiers"), click " Export Campaign Bundle" or " Sync OHCS Party".
  2. In /marshalcy/, open " Wiki & Dossiers", inspect a party member's dossier, and click a portrait thumbnail to open the full-format lightbox (#marshalcyLightbox).
  3. In Discord (Server or Direct Message with the OHCS Bot), run /ohcs-character search, /ohcs-campaign list, or (as Admin) /ohcs-keys list and /ohcs-keys check.

Expected

  • Marshalcy displays the active campaign party dossiers and opens full-resolution character portraits in #marshalcyLightbox.
  • The Discord bot responds in both server channels and Direct Messages (DMs), listing keys, answering whether a given email/user has a key (and which one), and providing interactive Key Manager buttons/modals.

Sending

Send report opens the sheet in a new tab. Once the sheet is unlocked with your key, the report goes to our Discord channel and you see a confirmation at the bottom of the sheet. Only scenarios you marked are included. If sending fails, use Copy and paste the text in Discord or a GitHub issue.

Screenshots generated automatically from the current build on 2026-10-30. Actual appearance may differ slightly.