Skip to content

v0.18.0

2026-04-29

  • [ ] When I click the button to accept a character invitation on the /characters route, the new character doesn't appear in the list until I refresh the page. It should appear immediately after accepting the invitation, without a page refresh.
  • [x] Restore the bell icon (notifications) in the new left nav. It should be in the bottom section, above Help / About
  • [x] Editing the party assocation of a non-owned character is throwing an error "you can only add your own characters to a party". Two problems:
    • [x] The error message should show in the UI, not just the console
    • [x] If I don't own the character, but I do have edit access, I should be able to do this
  • [x] The map switcher in the upper-left of the map has a few issues:
    • The text is editable. This should behave like a standard dropdown.
    • The cursor is the text edit cursor when hovering over it. It should be a pointer to indicate it's clickable.
    • The options are not sorted; they should be sorted alphabetically by name for ease of navigation.
  • [x] Show character invitations on the top of the characters list page (in addition to the current notifications bell)
  • [x] 3d dice don't work until a theme is chosen, throwing 'installHook.js:1 Error: No theme config data to work with.'. The UI suggests there is a default, but it must not be implemented.
  • [x] Very long dice strings (e.g. 20d6) show the results in a long, non-breaking horizontal line, breaking the scrolling of the chat. Either we need to wrap these or set a max width and make them scrollable within that width.
  • [x] Remove the extra "chat" header left of the gear icon in the chat log
  • [x] Move the gear icon in the chat log to the header of the context, if possible (left of the minimize button). If not possible, move it to the right of the chat input on the fixed bottom bar.
  • [x] Add versions to modules.hosted.json, e.g.:
{ "modules": [
  { "package": "@purple-cat-games/system8", "version": "0.2.1" },
  ...
]}
  • [x] Make scripts/install-hosted-modules.sh and scripts/install-hosted-modules-frontend.sh fail the build on any module install/build error instead of silently skipping. Silent skips have caused production deploys to ship without expected modules with no warning.
  • [x] Add a MODULES_REV build-arg to the Dockerfile (and pass --build-arg MODULES_REV=${{ github.run_id }}-${{ github.run_attempt }} from CI) so the hosted-module install layer can be force-rebuilt without changing modules.hosted.json. Useful when a module version has been bumped on the registry but the layer would otherwise be cached.
  • [ ] Bug: in the user settings page, available models for gemini returns "Failed to fetch models (404)". OpenAI works fine. (Notes: not reproducible locally, need to check server logs)
  • [x] Bug: Add To Map in the character sheet detail page fails with "failed to create token". Response from API:
{
    "error": "Validation failed",
    "details": {
        "formErrors": [],
        "fieldErrors": {
            "artworks": [
                "Invalid input: expected array, received null"
            ]
        }
    }
}
  • [x] Prod issue: adding source images to a character has successful API response, but the new image never appears in the UI, even after hard refresh.

    • Reproducible locally
    • The art is created and saved to disk
    • The new artwork appears in the API response for /character/:id in the artworkImages array
  • [x] The roll() function in actions should roll 3d dice. Ensure that it's possible for the execution to await the result of the dice before returning the value.

  • [x] Add a d100 to the CurrentTokenBar dice section (already implemented in the ChatLog dice roller).

  • [x] While holding the space bar, the user's cursor position is shown to all connected users in real time.

  • [x] When click-dragging a token on the map, it is in a "moving" state where its path is highlighted on the map. This UI is only seen by the user doing the moving. Show this UI to connected users as well.

  • [x] Hide the on-hover card for map tokens. Not the vision badges (e.g. 'no light source'), just the card with the preview art.

  • [x] Pressing ctrl-C (or cmd-C) with one or more tokens selected, then ctrl/cmd-V on the map, currently copies the tokens as you'd expect. It should also be able to copy tokens on a different map.

  • [x] The on-hover portion of the CurrentTokenBar should be always visible on mobile since they can't hover.

  • [x] Don't show the impersonated token's CurrentTokenBar on mobile. They have the "me" UI which is specially built for mobile.

  • [x] When a token is mounted, it should be positioned in the center of the token it is mounted on, even if that is on a grid corner instead of a square.

  • [x] The 3rd level of submenu in the token context menu never appears. Actions has 3 levels.

  • [x] No feedback is shown to the user when they right-click a token, select Copy to Map, then choose the map.

  • [x] The typeahead in the equipment section of the character sheet doesn't show suggestions. Probably a z-index issue with the dropdown.

  • [x] Add a Notes section to the character sheet (simple text field, possibly 'text' type in sql instead of varchar because it could be very long). Use a FOSS markdown WYSIWYG editor for the input, and if said editor doesn't already have this capability, add a toggle to edit (raw markdown) vs preview the rendered output.

  • [x] Remove the characters section from the /campaigns route

  • [ ] Bug: when you click-drag a token that is mounted, the mount should move with them, but it doesn't.

  • [ ] When viewing a character for which you don't have write access (a shared character), force the user into Play mode, hiding all edit functionality.

  • [ ] The tabs portion of CurrentTokenBar is wrapping on mobile (and perhaps on desktop when the window is resized too small). This area should scroll instead of wrap.

  • [ ] In the character sheet context in Play mode, add a link to view the full character sheet

  • [ ] The Notes section of the character sheet, in preview mode, should be left-aligned

  • [ ] All content in the Help/About section should be left-aligned

  • Fix mobile character sheet!

Buffs

  • [ ] Finish implementation (TODO: write the requirements)

Library

  • [ ] Rename 'tokens' type to 'token artwork'.
  • [ ] Add 'tokens' entity to library. These are actual Token objects. Every token ever created in the campaign will live here, even after it's deleted from a map. This allows users to easily re-use old tokens.

Library Context in Play Mode

  • [ ] Dragging a token, map, or object from the library onto the map creates a new token instance on the map, with the same art and properties as the library token, on the appropriate layer.
  • [ ] The add to map button is very hard to see in some cases. Ensure it is opaque.
  • [ ] Clicking the body of a library item (not the add to map button) shows a modal with larger preview art and any metadata, with an Add to Map button.