Natural One 3.2

Almost entirely UI changes this time, fixes for some long-time visual issues.
  • Feature changes:
    • Added a button to the header to reset all input fields.
  • Output changes:
    • Changed the modifier line in attack and damage output to not show if all modifiers are zero.
    • Changed damage dice to display the on_critical dice instead of normal dice if applicable.
  • Interface changes:
    • Added extra spacing to treeview rows, so lists should be more readable now.
    • Improved section header text.
    • Simplified the template dialog grid internally, which also resulted in widgets aligning better.
    • Action bars now use appropriate classes to allow system themes to affect them properly.
    • Changed the critical icons to something more clear.
  • System changes:
    • Added full Pathfinder 2e Playtest support. This will be updated for the full version when it is released, but very little will need to be changed.
  • Bug fixes:
    • Fixed broken formatting on some weapons with no damage dice.
    • Fixed old data file not fully updated to new format.
    • Fixed variable size dice count not having input checking applied.

All code is on GitHub:


Natural One 3.1

Almost entirely UI changes this time, fixes for some long-time visual issues.
  • Interface changes:
    • Changed the template roll button to text. This was the only roll button that used an icon, and it wasn’t an intuitive icon at all.
    • Changed “Number of attacks” in Attack and Damage rolls to “Attack count”
    • Moved weapon selection into Combat tab grid. Everything is finally all nicely aligned.
  • System changes:
    • Updated data files to reflect UI changes. This mostly involved removing redundancy in category names.
  • Code changes:
    • Added a vector icon. Not currently used, but I’m going to look at transitioning all application icons to use this.

All code is on GitHub:

Natural One 3.0

Jumping straight from 2.0 to 3.0 this time. Not what I’d normally do, but there are multiple significant changes here that break backward compatibility.

Originally, I had planned for the next release to be 2.1, and mostly just add support for the upcoming Pathfinder 2nd Edition. However, there are some pretty big differences in how some things are handled in that system (notably critical rolls), so I decided to finally get around to some things I had put off. Notably, the format of the data files has changed pretty significantly. The old file format was very much just an ad hoc thing that then got extended as needed, without much thought to making it easy to work with. I don’t intend to add much more support for other systems past Pathfinder 2e, but at least it’s much nicer to work with now.

Note that this release doesn’t yet have support for Pathfinder 2e; that will probably come with release 3.1. It’s still in playtest phase at the moment, so while I don’t expect anything that Natural One uses to change, I’m still going to wait to add the data files. Once it’s fully released, however, adding support should be very quick as all the technical changes are done.

In addition to the data files, templates got some changes for the same reasons. As a side effect of this, old template files are no longer compatible.

Besides breaking everything, I did actually implement some new stuff here. Proper dice progression is finally here! For systems that support it, you can now step up/down weapon damage dice to whatever size you want. Previously only small and medium sizes were supported, and were hardcoded, but now it can simply extrapolate from the medium dice.

There’s some UI improvements here as well, mostly on the Combat tab. The checkboxes properly fit into the grid, and so on.

  • Feature changes:
    • Templates now support “not rolled on critical hit” as a critical option.
    • For systems that support it, weapon size can now be selected.
  • Interface changes:
    • Changed checkboxes to apply critical hits to be togglebuttons instead.
    • Moved checkboxes on Combat tab into the grid.
    • Changed critical option radiobuttons in template dialog to a combobox, as there were becoming too many options.
    • Improved labels on Initiative tab.
  • Output changes:
    • Removed word “template” from template output results title.
  • Code changes:
    • Added preliminary support for Pathfinder 2e.
    • Changed data files to new format.
    • Rewrote weapon roller.
  • Fixes:
    • Fixed failing to start due to missing system file.
    • Fixed incorrect path for user files on Windows. I’m still not planning on supporting Windows yet, but at the very least I don’t want to make more work in the future.
    • Fixed loading new data files requiring a restart.

All code is on GitHub:

Natural One 2.0

2.0! Not that much on the user side this time, but very significant internal changes. Natural One is now fully Python 3-compatible, and from now on will only target Python 3; starting with this version Python 2 support is dropped.

  • Interface changes:
    • Moved system file selection into a dialog instead of a filebutton. This means that the Add System section of the System dialog is gone, and now a system can be added from the Add button at the bottom of the systems list.
    • Increased default size of the template dialog.
    • Disabled multiplier input on template dialog when non-applicable critical options are set.
    • Added spacing between initiative radiobuttons.
    • Changed results display to a treeview, with improved spacing and formatting.
    • Added reordering to template rolls.
  • Output changes:
    • Critical fail and success messages are now bold.
    • Moved weapon name and damage die location in weapon roll output.
  • Systems changes:
    • Systems dialog now checks and automatically loads new built in systems when opened.
  • Code changes:
    • Simplified loading of symbolic icons with a new helper module.
    • Add proper Unicode support.
    • Remove Python 2 Unicode “support”.
    • Transitioned fully to Python 3.
    • Fixed shadowed names.
    • Fixed reordering items in lists jumping to the top in long lists.
  • Fixes:
    • Fixed luralize helper functions.
    • Fixed weapon selection generator in Python 3.
    • Fixed popovers throwing errors on some systems.

All code is on GitHub:

Natural One 1.7

Few big things this update. Templates are no longer auto-sorted, but can instead be reordered by dragging and dropping. This should make it easier to find templates in a long list, as important ones can now be dragged to the top.
Error indications resulting from user input should now be more accessible. Popovers now display next to widgets with errors, helpfully pointing out where a problem is and what to do about it. Previously these errors were kind of a problem for colorblind users, as the only indication was a red outline, but this addition should make the errors more obvious. The popovers are only dismissed after a click/focus change, so this helps make it more obvious to all users too.
Finally, Unicode support is here! Sort of, at least. It’s a rather bad hack to get it functional while I go refactor parts of the code to support it in a better way, but at least now it works. This is another important step in accessibility, as this previously limited all user inputs to ASCII characters only; now many more languages are supported. Or, I guess you could do this:

  • Interface changes:
    • Improved accessibility for user input errors by showing a popover in addition to the red outline.
    • Added ability to drag and drop templates to reorder. Order is saved on application exit and restored on open. Template sorting removed.
    • Merged enable all/disable all buttons in the systems dialog into one button that toggles state.
  • Systems changes:
    • Added Pathfinder’s “alchemical” weapon categories.
    • Added support for “Pure Steam” system. This is a Western/steampunk Pathfinder conversion, so no mechanical changes were required.
  • Code:
    • Added rudimentary Unicode support.
    • Moved template copy and remove into functions in the io module.
    • Simplified initiative drag and drop reorder code.
    • Added helper for loading symbolic icons.
    • Switched all string formatting to use format() instead of the old printf style formatting.
  • Fixes:
    • Fixed CSS data causing app to crash on launch in Python 3.

All code is on GitHub:

Natural One 1.6

Despite having a very large number of lines changed, aside from a couple minor fixes and changes most of this release should be invisible to users. Instead, this release focuses more on the internals; there are multiple simplifications to common tasks, and a much stricter adherence to style conventions. This is part of my effort to clean up my “yeah it works, good enough” approach to new features, though there’s still a bit to go.

  • Interface changes:
    • Changed initiative list column spacing to give more room to the name.
    • Mixed weapon damage types now display in order. Previously, it would sort alphabetically, which isn’t the most intuitive or standard way to do it.
  • Code changes:
    • Renamed many functions.
    • Simplified mixed damage type calculations.
    • Added helper methods for getting selected indices in lists.
    • Renamed application and window classes.
    • All code now uses flake8 to adhere to style conventions.
    • Simplified question dialog result checking.
  • Fixes:
    • Fixed spelling mistake.

All code is on GitHub:

Natural One 1.5

  • Feature changes:
    • Removing a system now deletes the imported system file.
    • Added feature to export templates.
    • Added feature to import templates.
  • Interface changes:
    • Added placeholder text to most inputs instead of default values. Along with this, most of the fields will default to these placeholder values if nothing is set, preventing user error and making validation easier.
    • Changed error styling to red border around the widget instead of red background with white text. This still needs work, as accessibility isn’t great, but it removes most aesthetic and user theme related issues.
    • Templates are now sorted alphabetically.
    • Improved tooltip on “clear output” header bar button.
    • Headers are now shown in the templates list.
    • Added “Rolls” column to the templates list to show the number of rolls in each template.
    • Critical range input can now longer be above 20.
  • Output changes:
    • Removed quotes from template roll output.
  • Code changes:
    • Fixed variable name shadowing.
    • Fixed code style issues.
    • Removed most roll input validation, as it is no longer necessary with default values and limited inputs.
    • Cleaned imports.
    • Removed unnecessary comments.
    • Moved the CSS data to a file to reduce duplication.
  • Fixes:
    • Fixed extra newline at the end of the output.
    • Fixed typo in template dialog tooltip.
    • Fixed inconsistent grammar in template dialog labels.

All code is on GitHub: