Skip to content

Releases: firegiant9000/TomeStack

TomeStack 0.5.0

Choose a tag to compare

@github-actions github-actions released this 12 Oct 22:26
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 th...
Read more

TomeStack 0.4.0

Choose a tag to compare

@github-actions github-actions released this 02 Oct 22:22
10eef25

The first release published on GitHub, with a downloadable installer. Version 0.4.0 comes after the 0.3.1 test installers that were built locally but never published (ADR-008 "Versioning"). It brings everything built since 0.3.0, listed below. How far each part is proven:

  • Checked on test data only, not in real play yet: M2.1 (data safety), M2.2 (the Fighter), M5 (the homebrew studio) and M6 (sharing, extensions, VTT export).
  • M3, playing a real character end to end: the engineering is done, but the gate is not met.
  • M4, reading a PDF and proposing rules: still experimental.

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: TomeStack never checks for updates and makes no network calls. To update, download the newer Setup.exe and run it. Your data folder (%LOCALAPPDATA%\TomeStack) is kept and is backed up before any database upgrade.

Added

  • Download TomeStack from GitHub (roadmap T5):

    • Releases now come as a downloadable installer on the project's Releases page, built and checked automatically from a version tag.
    • The installed folder now also has THIRD-PARTY-NOTICES-Velopack.md, the licenses of the code inside the installer and updater.
    • The installer components are updated to Velopack 1.2.161.
    • ATTRIBUTION.md now has the terms for two Microsoft Windows SDK files that TomeStack uses to read text from scanned PDFs. By installing TomeStack you agree to those terms for those two files.
  • M6 exit gate checked on fixtures (M6 slice 6): a source pack, a campaign pack and a full backup with an extension each come back as they were in a fresh TomeStack data folder, except that shared sources are marked as received and an extension comes back turned off until you grant it again. Restoring on a second computer has not been tried yet.

  • Guides for homebrew authors (M6 slice 5; its extension changes approved by the owner 2026-09-30): docs/authoring/ explains how to write a class in the Homebrew studio, share your homebrew as a source pack, and write an extension, with a compatibility table. Every example in them is tested by following it as written. An extension's export is now refused if it leaves out a license notice, and extension files made with Windows PowerShell's Compress-Archive now install.

  • Export a character for Foundry VTT, or as a sheet file (M6 slice 4, ADR-012): "Export for a virtual tabletop" on the sheet saves a file you import into Foundry VTT (dnd5e system 6.0.5 on Foundry 14; Experimental until it has been tried in a real Foundry world) or TomeStack's own sheet JSON for any other tool. The preview says what is left out because it may not be shared (its totals stay), and which numbers Foundry works out itself and may show differently, and what the Foundry file cannot carry (such as the Pact Magic slot level). Spells arrive ready to prepare and cast with their own caster's ability; link and roll codes in exported text stay plain text. Every file carries the license notices of the sources it draws on, and never a folder path, a PDF link or a gap note. Nothing is uploaded. Roll20 has no supported import file and is not offered.

  • Extensions, without running any code (M6 slice 3, ADR-011; approved by the owner 2026-09-30): the Extensions screen installs an extension file after showing what it would be allowed to do; you tick each permission it may use, and can turn it off or remove it at any time. An extension is a set of instructions that TomeStack carries out itself, within strict limits. An import (for example a CSV spell list) becomes draft content in a new source that is never shared; an export (for example a Markdown summary of a sheet) leaves out content that may not be shared, keeps every license notice, and is checked for your folder paths and user name before it is saved. Every run shows its result before anything is written. The sample is in examples/extensions. Full backups keep installed extensions, which come back turned off with no permission granted.

  • Share a campaign as a campaign pack (M6 slice 2; approved by the owner 2026-09-30): "Share …" on the Campaigns screen saves the campaign's rules, allowed sources and house rules, with the published content of the homebrew you marked as your own work. The SRD is named, not copied, and every other allowed source is only named, with the reason shown before you save. It never carries characters or gap notes. Importing a pack for a campaign you already have asks whether to keep your version or use the imported one, and lists the characters whose content the imported one would no longer allow. A source the pack only names, and that you do not have, stays allowed and is shown as "waiting" until you install it.

  • Share your own homebrew as a source pack (M6 slice 1; its schema changes approved by the owner 2026-09-29): on the Sources screen, "Mark as shareable…" asks you to confirm that a source is your own work, and "Share sources as a pack" saves those sources with their published content: no characters, drafts, PDFs or text read from PDFs. Importing a pack shows the sender's statement and copies your library first. From this version on, a source that gets a PDF attached, pages imported or a PDF candidate accepted is marked for good as holding imported material: it is never shared, not in a pack and not in a character share, even after the PDF is removed. Sources from earlier versions are marked if they have a PDF now, had one before database version 3, or have an import job. The data folder moves to database version 8, and full backups to package format 7 (see Migration).

  • Snapshots of a character (M5 slice 8): "Take snapshot" on the sheet keeps a copy of the character to come back to. "Restore" first shows what would change. It then keeps a snapshot of the current state as well, so every restore can be undone. Snapshots stay on this computer: exports, shares and full backups leave them out. The data folder moves to database version 7; the previous version is backed up first (tomestack.db.v6.bak).

  • Design feedback, if you want it (M5 slice 7): a "Show design feedback" setting in the studio, off by default. When it is on, "Get design hints" compares a class or feature with the SRD classes. It points out more spell slots than any SRD full caster has, a multiclass share that gives more slots than the class's own table, a resource that grows faster than any SRD pool, and levels that give nothing. Hints never block publishing, never change a character and are never exported.

  • Start homebrew from a template (M5 slice 6): four starting points in the studio: a feature with limited uses, a stance you switch on and off, a subclass skeleton and a class skeleton. A template opens as an unsaved draft; nothing is saved or published until you do it. The skeletons leave empty feature slots at the usual levels, which you fill with your own published features. The studio can now also edit toggles, and bonuses that apply only while a toggle is on.

  • See how your homebrew fits together (M5 slice 5): "Show relationships" in the studio editor draws a tree. For a class it runs by level, through the features and choices it brings in, to the resources and to the rolls and rests that use them. It also shows what never applies, such as a grant inside granted content. It works fully by keyboard and with screen readers, and Enter on a rule jumps to it in the editor.

  • Compare two versions of your homebrew (M5 slice 4): "Compare revisions" in the studio editor shows what changed between any two versions, including the unsaved one on screen. It shows the rules and the texts line by line, and what each version would give copies of your characters (and a blank character, for a class or subclass). Nothing is changed. The update review uses the same calculation.

  • Try a class or subclass before you publish it (M5 slice 3): "Try it" in the class and subclass editors shows how the revision on screen plays, at a level you pick. It runs on a blank character or on a copy of one of yours, with the calculated sheet fields it would change. Nothing is saved, and your characters keep using published content only.

  • Find problems in your homebrew (M5 slice 2): "Find problems in " in the homebrew studio checks all of a source's content, drafts included, and "Find problems" checks the entry you are editing. It finds what the Check button cannot see on one entry alone. Examples: a resource nothing spends or recovers, a recovery or action for a resource that isn't there, a grant that never applies because the content is itself granted, a subclass no class offers, a class feature nothing grants, a choice with nothing to pick, class columns that are read but missing or defined twice, and grants of an older version. Show opens the entry and moves focus to the rule. Nothing is changed.

  • Write your own class in the homebrew studio (M5 slice 1b; ADR-010): "New class" sets the hit die, the saving throws and multiclass prerequisites. It can also set:

    • a skill choice (TomeStack creates the skill options for you);
    • a subclass choice at any level, which your own subclasses join;
    • class columns such as "Ink", which resources and other formulas can read;
    • features by level;
    • spellcasting with its own slot table and a caster share for multiclassing.

    The class appears in the builder like any other, and the sheet shows its columns under "Class columns". Content that uses these features can only be opened by this version of TomeStack or later.

  • Classes with their own columns and caster shares (M5 slice 1a; ADR-010; rules engine only): class content can now carry named per-level columns, such as "Ink: 2, 2, 3 …". I...

Read more