Skip to content

TomeStack 0.5.0

Latest

Choose a tag to compare

@github-actions github-actions released this 12 Oct 22:26
· 2 commits to main since this release
29ac983

Everything built since 0.4.0, listed below. It is checked on test data (automated tests and the desktop smoke); the owner checks on an installed build are still open (zoom, Narrator, High Contrast, print).

Unsigned: Windows shows "Windows protected your PC" the first time you run TomeStack.App-win-Setup.exe. Choose More info, then Run anyway. Some workplace PCs, and Windows 11 with Smart App Control on, block unsigned apps entirely.

Updating from 0.4.0: download the newer Setup.exe and run it; TomeStack never checks for updates and makes no network calls. On first start, 0.5.0 backs up the database (tomestack.db.v9.bak) and moves the data folder to database version 10. After that, 0.4.0 can no longer open the folder, and a backup or share made by 0.5.0 that holds a character (character schema v8) cannot be imported into 0.4.0.

Not affiliated: TomeStack names D&D Beyond only to say which character-sheet PDF it imports. It is not affiliated with D&D Beyond or Wizards of the Coast, and the importer says so on its first step.

Added

  • A guided character builder (D32): six steps (rules, ability scores, species, class, background, choices), with standard array, point buy, rolled (4d6 drop lowest) or hand-entered scores, and a review of the character before "Create and save".

  • dice.roll (D32): a roll with no character, for the builder's ability scores (a formula, an optional keepHighest, an optional label of at most 80 characters shown with the roll). It writes nothing and stores nothing.

  • Search spells by name (D30): in the builder's spell pickers and on the Spells tab; accents and case do not matter.

  • Previous rolls (D28): the summary keeps the last ten rolls of the session under Last roll.

  • Settings grew (owner follow-ups, 2026-10-06): Appearance (System, Light, Dark: pick a colour scheme without changing Windows), Text size (90% to 200%), Ability boxes (modifier first or score first), and an Accessibility group: reduce motion, stronger borders and labels, an always-visible focus outline, larger buttons, underlined text buttons, and whether rolls are announced to screen readers. A list of the keyboard shortcuts. All kept on this computer only.

  • Concentration (character schema v8): "Concentrate on {spell}" on Spells (a prepared concentration spell; a cantrip counts); Play shows the spell, and after damage the Constitution saving throw to keep it (DC 10 or half the damage), with the roll and the two outcomes as confirmed changes. At 0 hit points it ends by itself, and a long rest's preview lists ending it (untick to keep it). A spell with a very long name is concentrated on with its name clipped, never refused.

  • Currency and session notes (character schema v8): coins on Inventory; dated session notes on Notes above the gap notes, printed only when ticked. Session notes stay on this computer and in your personal backups; a share package never carries them, and importing a share over a character keeps your local notes. Restoring a snapshot keeps your notes, and snapshots do not copy them; the restore preview names the coin change. A character that would be over the 5 MB a package entry can hold is refused when it is saved, and a backup (one character or everything) or share is refused, before anything is written, if one of its entries would be over that limit, so every backup TomeStack makes can be restored.

  • Stats knows more, and Features know what granted them: saving throws and skills say "proficient" or "expertise"; Passive Perception, Insight and Investigation (10 + the skill) are calculated; Speed is a field (30 ft. until species content carries one; override it on Stats if yours differs) and also appears in the summary. Content cannot target passives or speed until a content schema version allows it; the calculator ignores such a modifier or restriction (and says so) even in an older revision already installed. Features group by what granted them ("From …") before the kinds. The character list's data now carries each character's level.

  • A Characters home screen with a card per character (name, rules family, level, last change) and "Open"; "Characters" in the sidebar returns to it.

  • Compact view on Play for combat (hides the explanations, traces and class columns; rests, spends and recoveries stay readable), and Undo last change for the last hit-point, resource, condition, slot, toggle or concentration change. Undo is one level, for the open sheet only, and is offered only while the sheet still shows the state that change produced. Switching a toggle that spends a use back off cannot be undone; switching one on can (the use comes back); a change that overlapped another (or an Undo, a rest or a restore), or changed nothing, has no Undo, and starting a change withdraws the Undo on offer. Healing from 0 hit points while death saves are recorded has no Undo, because it clears them.

  • A refreshed look, with three themes (Settings): forest, cool and violet, each in light and dark with your system. The sheet's header and summary now run across the whole window, with the sidebar and the sheet's pages below; the sidebar can be hidden and shown from the header or with Ctrl+B, and the app remembers your choice. Dice tumble onto the result when you roll (turn it off in Settings; the app also follows your Windows "show animations" setting). The summary gains an Inspiration checkbox and one-point hit-point buttons; hit dice read "4 of 4 (d10)". The version is in Settings. Settings are kept on this computer only, in no backup or package.

  • Import from a D&D Beyond PDF: decide once. On "Rules and campaign" you can say whether numbers that differ should take the installed sources' values or the sheet's; the Numbers step is pre-filled and every row can still be changed. A differing speed starts as the sheet's number either way, since TomeStack's speed is only a 30-foot placeholder for now. "Equip matched weapons and armour" is on by default for every caller.

  • Import a character from a D&D Beyond PDF sheet:

    • "Import from D&D Beyond PDF…" in the Characters list turns an exported D&D Beyond character sheet into a new TomeStack character. You review every match and every number first. Nothing is saved until you choose "Create character", and Cancel at any step saves nothing.
    • TomeStack reads the sheet's form fields once and keeps nothing of the PDF. It matches names against the content you have installed, in the rules family you pick; names it cannot match or place are listed and kept as gap notes on the new character. A sheet printed to PDF, without form fields, cannot be read.
    • For each number that differs, you choose TomeStack's number, the sheet's number (an override), or a gap note.
    • Current and temporary hit points and inspiration come over only if you tick the box. Notes, attunement, languages and the player name are not brought over. Currency (up to 1,000,000 of a coin) is brought over, and speed and passive Perception are compared with TomeStack's numbers, only when the sheet's layout maps them and the values read (for currency: no mapped coin is unreadable, and a blank coin counts as 0); otherwise they are listed as not brought over. The 2014 layout maps all of them (the coins, speed and passive Perception).
    • The 2014-style sheet is recognised, its layout confirmed against a real export. That sheet has no equipped mark, death saves, or spent hit dice and slots, so, unless you keep "Equip matched weapons and armour" ticked, imported items are not equipped, and the character starts rested on those. 2024-style sheets are not recognised yet.
    • Gap notes gain a new kind for these unmatched items (gap-note schema v2). The data folder moves to database version 10 (no table changes; the previous version is backed up first, tomestack.db.v9.bak), so older TomeStack versions refuse the folder rather than failing on these notes. A personal backup that holds one cannot be opened by older versions, which report the backup entry as not valid; other backups can.
    • A sheet that names no subclass (every 2014-style sheet) now has your class's subclass choice offered in the import, your own published homebrew included. It proposes one only when every feature that subclass grants up to your level is on the sheet; otherwise you choose, with the likely matches listed first, or leave it out before creating the character.
    • "Equip matched weapons and armour" (ticked by default, on the numbers page, because it changes Armor Class) equips the matched weapons, the first body armour and the first shield it creates. The sheet does not say what is equipped, so check Inventory afterwards; if a sheet does mark an item equipped or not, that mark wins.
  • A recovery-drill counter, for developers (roadmap T6; not in the app):

    • The development host can count what a closed TomeStack data folder holds, and compare two counts: the library before a backup and after a restore on another computer.
    • It reports only numbers and fingerprints, including one for every character's calculated sheet. It never changes the folder.
    • How to run the drill: features/restore-drill-procedure.md.

Changed

  • Only your rules family is offered in the builder (D31): species, backgrounds, classes and choice options of the other family are no longer listed; the studio and Sources still show every family. This holds inside a campaign too: content of the other family is never listed there, even when the campaign also disallows its source.
  • Spells are campaign-restricted: in the builder's spell picker a spell from a source the campaign does not allow is listed disabled ("not allowed in this campaign") until you give an exception reason, which is then recorded with the spell. A recorded spell from such a source now shows the same campaign warning on the sheet as other content (or the exception's reason). No data changes.
  • A pick that needs a campaign exception reason keeps its place when the reason is cleared (follow-up): in the builder, if you clear the reason (or untick "Use content from outside the campaign") after picking campaign-outside content, the pick stays and the step's Next, or "Create and save" / "Save …" on the last step, waits with "{name} needs a campaign exception reason." Give the reason again or unpick it to go on; nothing is saved without its exception. Content a saved character already holds is not asked again.
  • Level-up says why "Next: choices" waits (follow-up): at level 20 the step reads "Already at level 20, the highest level.", and with no class picked "Choose a class to continue."; the button is no longer natively disabled, so keyboard and screen reader users reach it and hear the reason.
  • A choice that keeps an imported option of the other rules family can be changed (follow-up): ticking another option in the same choice no longer needs the kept option unticked first; an option the character already records is accepted when re-sent, while a newly added option of the other family is still refused. No data changes.
  • The builder is steadier (checkpoint B review): Next waits while "Roll again" is rolling and for a name on the first step; "Create and save" and Cancel ignore a press while a save is in flight; Back during the preview cancels the jump; a reply that lands after Cancel changes nothing, so "Draft discarded" stays true; Cancel from level-up or "Make choices" shows the character as it is now; opening two characters quickly shows the one you opened last, and a slow open never replaces a screen you chose after it; a character saved just as you leave the builder still appears in the list, with the status "Saved {name}.", and does not open over the screen you moved to; Finish waits while a hit die is being rolled; an empty label in a snapshot name or printed gap note falls back to its description.
  • Short and long rests at the top of the sheet (D29): the two buttons are in the sheet header and the preview opens under the summary; they are no longer on Play. A hit die being rolled counts against the dice left, "Cancel rest" waits while a finish is being saved, and a late reply never switches the screen to another character. A button that cannot act yet is shown with a dimmed label rather than faded, so its focus ring stays clear.
  • Inactive buttons are easier to read: a button that cannot act yet (Finish, Add, Roll, Remove, Cancel, Level up, Next and "Create and save", quick hit points) shows its dimmed label on the page colour with a dashed border instead of the browser's grey face, so the words stay readable in dark mode (at least 4.5:1 in every theme) and still look clearly inactive. The builder's review list also no longer has a screen reader say "colon" after each name.
  • Bigger ability numbers, smaller Roll buttons (D28): the modifier is larger and the roll control is a compact 'Roll' button with the same spoken name.
  • Light mode is tinted and brighter (D27): each theme colours the page, the sidebar, the summary and the header in light mode; dark mode is unchanged.
  • The character sheet has tabs. Export, Export for a virtual tabletop, Archive, Snapshots and Updates available moved from the top of the sheet to a Manage tab. Open choices and content problems now sit above the tabs, visible whichever tab is open. The strip works from the keyboard (arrow keys, Home, End). features/sheet-layout.md, ADR-014.
  • A summary at the top of the sheet: abilities with a roll button each, proficiency bonus, Armor Class, initiative, hit points, hit dice, inspiration and active conditions, with the d20 roll mode and the last roll. An overridden number says "(overridden)". The old "Rolls" section is gone.
  • The sheet's pages: Play (hit points, attacks, conditions, resources; rests are in the sheet header since D29), Spells (for casters, or when a spell number is set; with the spellcasting traces), Inventory, Features, Stats (every other calculated field with its trace and override), Notes (gap notes) and Manage. The sheet opens on Play the first time. "Report a gap" opens Notes and puts the cursor in the note. Nothing on the sheet was removed. SPEC P-03.
  • The sheet reopens on the page you used last for that character (remembered in this data folder only, in no package, share or backup). "Open " from Gap notes opens the Notes page. At 400% zoom or in a narrow window the character list stacks above the sheet instead of squeezing it.
  • Small layout fixes: the app header no longer runs off the window when a screen holds a wide table; "Level up" and "Print…" sit together; the summary's roll buttons look like buttons; the d20 roll mode is one compact row. Inventory says how many carried items are not equipped (only equipped items apply).
  • The shell: the sidebar toggle sits at the top left and the header carries the theme's tint; the sidebar lists your characters first under a "Characters" heading, then the tools. The header's "Hide sidebar" (or Ctrl+B) hides it; the sidebar has no close button of its own. The print preview scrolls into view and takes focus when it opens. In the installed app, F5, Ctrl+P and the other browser shortcuts no longer act (Ctrl+plus/minus/0 still zoom).
  • The summary is boxes: one per ability (modifier large, score beside it), one per combat number, and a fixed-height strip for the d20 mode and the last roll, so an ordinary roll never moves the tabs. An ability roll's result now says "Strength check", like its button. Only an advantage or disadvantage d20 is drawn in the second accent; a plain d20 uses the theme accent. The checked d20 segment is readable under Windows contrast themes.
  • The pages: Play shows Attacks and actions beside Hit points, Conditions and Resources on a wide window; Stats is two columns; Inventory lists Equipped and Carried apart; Features are grouped by what granted them; spell slots and resources show pips; conditions are chips; the tab strip has small glyphs beside its words. The dark themes are a little brighter.

Migration

  • Character schema v8 (docs/schemas/character.v8.schema.json) adds currency, notes (dated session notes) and play.concentration. v1–v7 characters are upcast with no coins, no notes and no concentration. There is no database migration and no new package format number; an older TomeStack refuses a backup that holds a v8 character (package.schema-unsupported), as with every character schema change before.

Download

  • TomeStack.App-win-Setup.exe: the installer (per-user, no admin rights, Windows 10 and 11, 64-bit). Windows 10 is best-effort.
  • TomeStack.App-win-Portable.zip: the same build without installing.
  • The .nupkg and releases.win.json files are Velopack's package and feed. You don't need them; TomeStack never downloads updates by itself.

This build is unsigned. See the note at the top about the SmartScreen prompt. Third-party notices are in ATTRIBUTION.md next to TomeStack.exe. Two Microsoft Windows SDK files that ship with TomeStack (Microsoft.Windows.SDK.NET.dll, WinRT.Runtime.dll) are covered by the Microsoft Windows SDK license terms. By installing TomeStack you agree to those terms for those files; see "Terms for the Microsoft Windows SDK files" in ATTRIBUTION.md.