⚠️ The following changes are planned for inclusion in a future update. This list is informational only: nothing here is final until the update is actually published. Some items may be deferred or abandoned, and other items may be added at any time. In particular, changes to the APIs and script engine have the potential to introduce compatibility issues with plug-ins which might lead to those features being delayed, changed, or withdrawn.
Special note: Because version 3.4 involves major architectural changes, it is more likely than usual that the information below will change substantially before release.
Unsigned previews are now available for download. Alternatively, developers can work with the latest updates by checking out the main
branch.
Move to Java 11:
Strange Eons now requires Java 11. Most users should not notice since the installer packages for Strange Eons include their own private Java environment.
Previously, Strange Eons included generic components for tokens and decks (and thus boards), but nothing for creating cards. This meant that new users couldn’t play around with it without installing at least one extension. This version adds over a dozen “generic” card types in sizes commonly offered by card printing services. Each type offers the same features: title and body text, a portrait, and the ability to customize design elements like the card’s background graphics. They strike a balance between simplicity and flexibility, and are perfect for quickly creating basic designs without having to create a plug-in. The built-in tuck box sizes have been updated to include a size preset for each generic card type.
Cloud fonts let both users and plug-in developers download fonts on demand. Cloud fonts can be used in Strange Eons without finding the relevant files yourself or installing them in your operating system. End users can Reserve cloud fonts in the Preferences dialog. Reserved fonts are kept up to date and registered automatically during startup. That means you can use them anywhere you can name a type family.
This means proper support for “Retina” displays and setups that use desktop scaling. Note that the underlying support at both the Java and operating system level is not always perfect. For example, you may encounter weird issues when moving windows between displays with different scaling factors.
Part of adding high DPI support was replacing or updating nearly every graphic used by Strange Eons. If you notice an image that appears to be missing or incorrect, please report it as a bug by opening an issue, using the Help/Report a Bug menu item, or submitting a pull request.
Projects support markdown (.md
) files for documentation. Markdown is a simple and intuitive way to format text using plain symbols, such as asterisks, dashes, and brackets. Double-click a markdown file to view it, or right click and choose Open to edit.
The previous “in house” text/code file editor has been replaced with a new implementation based on RSyntaxTextArea
. The new system has better support for high DPI displays,* and enables new functionality such as highlighting search and replace matches and occurrences of the identifier under the caret. Work is still ongoing, with additional new features planned. In a few areas, the new editor has not yet reached feature parity.
Other code editing improvements include updated syntax colour themes and a more modern default font for markup and code editing (Windows and Mac).
* There are some known issues with non-integer desktop scaling settings, such as 125%.
Theme preferences now include a small screenshot to preview themes without installing them. Hover the pointer for a larger image.
Reading text styles from setting values is now much faster, significantly reducing the time it takes to open certain component types.
File/Close All (or right click editor tab and choose Close All) to close all open editors.
[],=+
would fail, resulting in a broken image. Also affects certain other UI elements that accept a file path/file name, but portraits are the most prominent example.DefaultPortrait
drew a portrait with clipping, it would replace rather than extend any existing clip.https
access to the online help pages stopped working.addCustomComponent
components were not immediately visible.0b01010
) and BigInt
literals, as well as identifiers containing $
were incorrectly marked as invalid during syntax highlighting.NullPointerException
when reading an integer setting value stored with a radix point.project://
would throw an IOOB exception.ThemedSingleImageIcon
could enter an infinite loop trying to upscale an icon.DefaultPortrait.paint
did not honour a clip region set by the calling code.ClassMap
constructor could not be invoked.ToolWindow
s such as the script output window, and causes the window to “snap” back to the main display when trying to drag to another display. Should it cause other issues, this workaround can be disabled by setting the preference key window-location-bug-workaround
to no
.This project folder full of examples and resources for new plug-in developers has been significantly revamped:
README.md
with more information;If you are building Strange Eons from source, the build system has changed from Ant to Maven. If you are using an IDE to build the project, there is probably little or nothing to configure. Most current Java IDEs support Maven out of the box. You will need a “launch configuration” for the project; the repository includes configurations for NetBeans and VS Code. For other IDEs, you need to set the VM (or JVM) arguments passed to Java when running the project, specifically the Java agent, or it will fail to launch. At time of writing, the included configurations use: -Xmx4g -Xms1g -Xss1m -javaagent:lib/local/jar-loader/1.0/jar-loader-1.0.jar
. The current configuration can be found in .vscode/launch.json
under vmArgs
.
Region
and Region2D
classes now added convenience getter/setters for x2
and y2
to access the corner opposite x
and y
. When used from script code, these allow you to use, for example, region.x2 += 10
analogously to how you could use region.x
previously. Internally, Regions
are still defined in terms of width
and height
.Eons.log.warning(“uh-oh”)
) now include which script and line the message was logged from.DarkMagicFilter
can be useful for displaying an image designed for a light background on a dark background, or vice-versa.PixelArtUpscalingFilter
is useful for scaling up small, high frequency images such as icons.Console.scrollToTop()
and Console.scrollToBottom()
.Several new classes have been added to facilitate high DPI display support, and methods such as ResourceKit.getIcon(resUrl)
have been updated to return DPI-aware results. Many of these classes can also be used to support smart multi-resolution drawing for game components. See this page for more information.
The class ca.cgjennings.ui.theme.Palette
provides a shared palette with a selection of standard named colours. These colours are chosen to work together and can be customized by the theme. This allows you to use colour in UI elements safely, without getting clashing or hard-to-read results when the user’s theme is different from your own. Example use: Palette.get.dark.opaque.pink
.
Thanks to Henrik Rostedt for contributions to this update! Contribute your own features and bug fixes on GitHub.
Note: If you have unusual graphics issues, you can disable all acceleration with the command line flag -xDisableAcceleration
.
Windows: hardware acceleration is now disabled by default
Many graphics card drivers do not fully support the Direct3D-based acceleration that was previously used by default. The typical result is that parts of windows were repainted in the wrong places, making the application all but unusable. To avoid this confusing experience for new users, acceleration is now disabled by default. This may noticeably slow down the app on your device, particularly if you do not have a powerful CPU. You can opt in to acceleration by adding the -xEnableWindowsAcceleration
command line switch.
Linux: XRender acceleration is now enabled by default, when supported
Previously, the default was to use OpenGL-based acceleration. In this version, XRender-based acceleration will be used instead if available. If this causes problems, you can revert to OpenGL acceleration by adding the command line switch -xOpenGL
.
Mac: Metal acceleration is now enabled by default, when supported
Previously, the default was to use OpenGL-based acceleration. Starting in this version, Metal-based acceleration is possible, though it is generally only available when running Strange Eons with compatible builds of Java 17, which is not what Strange Eons currently ships with.
UndecoratedCardBack
can now specify a designed bleed margin (previously, creating a subclass was required).setCornerRadius(radiusInPoints)
or by adding a -corner-radius
template key. Strange Eons can then trim off these corners when requested by the user.ResourceParser
constructor can take a user-specified character set encoding.arkham.TextEncoding
class provides a single place to get the correct text encoding for standard file formats.getClassName()
, to get their class map class name (e.g., diy:adj/squirrel/tree.js
).StrangeEons.addStartupTask(Runnable)
added to complement addExitTask
.The interface to the script engine is undergoing significant change, but this should not affect developers who either rely on Strange Eons to manage loading and running scripts on their behalf, or interact with the engine through the higher-level
ScriptMonkey
class.
This release expands support for modern JavaScript features, and includes numerous performance and bug fixes. Summary of new JS features:
Array
Symbol.isConcatSpreadable
Array
methods: copyWithin
, fill
, from
, of
, keys
, values
, entries
Function
Set
and Map
Map
, Set
, WeakMap
and WeakSet
classesString
`the sum is ${x+2}`
, String.raw
String
methods: fromCodePoint
, padStart
, padEnd
, trimStart
, trimEnd
Math
, Number
, BigInt
, etc.x ** y
= xyBigInt
integers: 32n ** 64n - BigInt("24")
Math
functions: acosh
, asinh
, atanh
, clz32
, fround
, log2
, sign
Number.EPSILON
Object
Object
methods: values
, entries
, fromEntries
let fruit = "apple", amount = 100; let o = {fruit, amount};
Iterable
s can be used in JS for
-of
loopslist[i]
, read size()
using .length
, remove with delete
/length
JSON.stringify
will create string/number/boolean entries from equivalent Java types, and convert Java collections and arrays to JS arrays; maps will convert to JS objects (using string keys only).js
file with a matching .ts
source is opened in the editor, it will be treated as read-only..ts
file, a matching .js
file editor will automatically update.:
could be used to separate keys from values.Important: If you have problems with a plug-in (for example, creating a component for a particular game) after updating, ensure that Compatibilty mode is checked in the Preferences dialog (in category Plug-ins, under Plug-in Scripts/Compiler Options).
--run <script-file.js>
.eons
is installed to start Strange Eons in console mode. This keeps Strange Eons “attached” to the console it is started from so that console output is visible. This is also useful when running in non-interactive mode: for example, a batch file will wait for Strange Eons to exit before running the next command in the script.--xDisableJreCheck
skips the normal Java version checking performed at startup, allowing developers and expert users to try running the app with unsupported Java versions. Currently, a Java version from 8 to 11 must be used if this flag is not set.--xDisablePluginLoading
prevents plug-ins from being loaded from bundles (except test bundles) for development and troubleshooting purposes.xDisableFX
has been removed.require(relativePathToModuleScript)
. See the example commonjs-modules.js.--search
to find instances of Strange Eons with an available debug server and report their host and port for connecting.SplitJoin
class can now create instances with a specified number of threads (for I/O-bound tasks).Subprocess
class can now optionally disable redirection of the process’s I/O streams to the script console.Subprocess.launch
makes it easier to launch app tools from the app with the same VM arguments as the app itself.ProjectUtilities.execAsync
has been added to complement ProjectUtilities.exec
.StrangeImage.exists(identifier)
can be used to check whether a portrait-style image path points to a real image.StrangeImage.getAsBufferedImage
works like StrangeImage.get
but converts vector images directly into bitmaps. (Prefer StrangeImage.get
where possible.)PlatformSupport.PLATFORM_IS_OSX
constant has been deprecated with no intention to remove. Instead, use PlatformSupport.PLATFORM_IS_MAC
.Theme.isDark()
simplifies creation of dark mode themes. The Theme
class defines several new constants that can be used to refine themes via UIManager
. For example, the link colour of link labels can be customized with code like UIManager.put(LINK_LABEL_FOREGROUND, Color.RED)
in a theme’s modifyManagerDefaults
method.javax.swing.UIManager.getBoolean("useDarkTheme")
, which returns true
when a dark theme is active. If the plug-in is run in older versions of Strange Eons, it will always (and correctly) return false
.RenderTarget
, Sheet
s now use the helper class ca.cgjennings.apps.arkham.sheet.StandardHints
to initialize rendering hints quickly and consistently. This class can also be used to experiment with different hint values.Certain preference settings could be used to launch subprocesses such as the script debugging client. These settings are no longer used. Instead the app will launch these tools itself, without reference to these keys. This allows the exact command used to launch these commands to be updated automatically to keep up to date with changes to the Java runtime.
While the old keys are no longer used, it is still possible to override how these tools are launched if for some reason the automatic launch process does not work on a given system. However, there is no UI to edit these user settings so they must be set “by hand”. The following new keys are used (all with no initial value, meaning that the default automatic method is used):
test-bundle-launch
Controls how the plug-in test command starts a bundle test instance.
script-debug-client-launch
Controls how the script debugger client is started.
These keys can contain the following variables, which will be expanded to the relevant value:
%j
the path to the Java runtime executable
%v
the virtual machine arguments used to launch the main app
%c
the class path used to launch the main app
%h
the host name of the debug server (debugger client only)
%p
the port number of the debug server (debugger client only)
Publishing a plug-in bundle (preparing it for a catalog by creating a file ending in .pbz
, .pgz
, or .plzm
) no longer applies Pack200 compression as part of the publication process. This change is necessary for Strange Eons to run under Java 14+, which drops support for Pack200. Existing plug-ins in the official catalog have been re-published without Pack200. Older versions of Strange Eons will detect that Pack200 was not applied and will correctly install the repacked versions. If you operate a third party plug-in catalog, you must re-publish your plug-ins as well. You can do this as follows:
You may notice differences in how text is rendered compared to previous versions of Strange Eons. Perhaps most noticeable is that the ascent of fonts is slightly different so that text no longer aligns with elements the same way that it used to. These variations are unavoidable due to a change in the underlying font engine being used to draw text.
The original Sun (later Oracle) Java runtimes that came with previous versions of Strange Eons used a commercial font engine called T2K (later renamed Font Fusion) and/or the engine of the host platform. When Sun opened the source code for the Java runtime, a process began to find open source replacements for proprietary components like T2K. In the case of T2K, the replacement was FreeType. Between the initial release of Java versions 8 and 9, Oracle changed the licensing rules for their Java runtime. The result was that Strange Eons could no longer include Oracle’s runtime and had to switch to runtimes based on OpenJDK. Moreover, starting with Java 11, Oracle replaced the font engine in their own runtime from T2K to FreeType. Thus, this change is likely both long-term and universal and will need to be adapted to rather than avoided.
FreeType is a mature, high-quality font engine capable of producing results comparable to T2K. However, rendering type is a complex and subjective problem. This means that the results from any two font engines are inevitably going to vary. In most if not all cases, the issue is not that the result from FreeType is “bad”. Rather, the issue is that the text layout was designed against the original font engine, so it needs some additional tweaking for the new font engine. Plug-in developers may want to adjust the region boxes, font sizes, or other details for the new engine. Since the new engine will handle each font a little differently, it seems unlikely that a single simple set of adjustments will cover all cases. That said, if you want to experiment and offer some suggested standard adjustment that covers a majority of cases, feel free to share your settings and/or submit a pull request.
ImageUtils.stitch
function from stitching images along the vertical edge. [Thanks to Adam Goldsmith]string
, gstring
, etc., do not pass format specifiers correctly.ARC_BOTTOM_LEFT
throw an exception.AbstractVerbalDesignSupport
default design support view;getPortraitImage
error (note that this plug-in also currently requires compatibility mode to be enabled).This is a production release.
This description combines all changes from interim releases since the last production version, which was build 3784.
Help buttons link to the new open source documentation.
u+2c7e
) in the search field to go to that code point (or the nearest valid row).--plugintest
command line option can now be passed multiple test bundles separated by the path separator character (;
on Windows, :
elsewhere).Added arkham.Subprocess.launch
to simplify starting a child process that uses an executable class in the app JAR.
A host of script engine updates bring the JS engine closer to ES6 level. This includes arrow functions, object/class methods, destructuring assignment improvements, new native JS object methods, and many bug fixes and performance improvements. More details and examples of these changes can be found under the notes for beta build 3970.
Improved scripting (JS) API documentation is now in beta. This corrects and expands existing documentation, links to the Java API when relevant, and includes basic documentation for built-in JS objects (Array
, Function
, and so on). The Typescript definition files used to generate these docs are included in the se3docs repository. Suggestions, corrections, and improvements welcome. The original JS API documentation is still available during the transition.
The DefaultPortrait.setSyntheticEdgeLimit
method lets developers extend the edges of the portrait, similar to adding synthetic bleed margins to a Sheet
.
Added HSBPanel.setTitle
/getTitle
to change tintPanel
title label.
Added StrangeEons.getUrlForDocPage
to get a URL for a page in the se3docs site given its base file name (e.g., "dm-preferences"
).
Method FillInPreferenceCategory.addHelp
no longer takes a third argument (old code will still work).
Deprecated JHelpButton.setWikiPage
; this now forwards to setHelpPage
.
Removed arkham.project.PluginWizard
(superseded by PluginWizardDialog
).
Removed deprecated arkham.dialog.prefs.SBOrderedList
.
Removed PlatformSupport.isOSXMinorVersionAtLeast
, isUsingAquaDerivedLookAndFeel
, isUsingOSXSystemLookAndFeel
, isUsingQuaquaLookAndFeel
.
The OPT_*
bit flags in DIY are now package private; the methods getAdvancedFlags()
, setAdvancedFlags
and isAdvancedFlagAvailable
have been removed. Use the relevant public methods instead: setTransparentFaces
, setVariableSizedFaces
, setPortraitBackgroundFilled
, setMarkerBackgroundFilled
, setPortraitScaleUsesMinimum
, setMarkerScaleUsesMinimum
, setPortraitClipping
, setMarkerClipping
, setCustomPortraitHandling
and the complementary getters.
The following classes have been removed: GestureToolkit
, GestureEvent
, GestureListener
, GestureEventAdapter
, GestureCommand
.
In class PluginBundlePublisher
, methods that used to take a ProgressListener
parameter no longer do, as underlying infrastructure needed to support this has been removed in newer versions of Java.
StrangeEons.fileBugReport
updated to link to a partially completed contact form; this also affects the Help/Report a Bug menu item.
The constant self
is set to the script’s global scope for consistency with other JS environments.
The debug
script library has been removed. Use the built-in source-level debugger instead. The uiutils
library has been removed, though some useful functions from that library are now included in utils.js
in the Plug-in Authoring Kit.
The libutils
script library is deprecated, with no plans for removal. It can still be used, but won’t be featured in documentation and is no longer “registered” as a built-in library.
ImageUtils.crop
: the width
and height
are now optional; if left off they default to include the remainder of the image.
ImageUtils.tint
: corrected the (new version of the) documentation to state that the hue shift is measured in rotations, not degrees.
Added ImageUtils.trim
(trims transparent pixels from image edges).
Support for SE2 Compatibility Mode has been removed: the class PluginContext2xImpl
has been removed and is no longer returned from PluginContextFactory
; the *.ljs
(“legacy” JS) versions of script libraries have been removed; the Preferences dialog no longer lists the relevant settings; the setting key script-SE2-compatibility
no longer has a default value, is not migrated, and has no effect if set.
Removed support for reading API documentation via the javadoc://
and scriptdoc://
protocols. The related classes ca.cgjennings.io.protocols.CapturedStream
, ca.cgjennings.io.protocols.SurrogateConnection
, ca.cgjennings.io.protocols.APIDocumentCache
have also been removed.
The sprintf
-style script library functions will now coerce numeric values when possible. This means that, for example, you can now pass a regular JS number to a "%d"
conversion and it will not throw an exception. It is also now possible to pass a Locale
or Language
as the first argument to localize formatting (previously the interface locale was always used). Passing a locale of null
as the first argument will prevent localization.
Calling @(keyStr, formatArgs...)
or #(keyStr, formatArgs...)
will format interface and game language strings (respectively). Previously, this was done by calling string
and gstring
(which still works). In other words, the following are now all equivalent:
@("key-name", arg1, arg2, arg3);
string("key-name", arg1, arg2, arg3);
sprintf(@key-name, arg1, arg2, arg3);
seproject
files) every time the project closes.register
tool for adding desktop icons under Linux now includes the agent parameter required for Java 9+ (this causes no harm under Java 8).confirm.yesno
was accidentally renamed yesNo
in a beta release.Console.printHTML
was accidentally renamed printHTMLprintHTML
in a beta release.for
… of
loops were marked as errors.)Console.printComponent
failed due to an argument name mismatch.register
, used to register the app via xdg-utils
(for Linux-based systems) did not list the --uninstall
option.project:
URL when no project is open now throws a suitable FileNotFound
exception.--xDisableGestures
was removed.resources/alt/
and gave them transparent names.This is an early access beta release. Features may continue to evolve; the release notes for the next production (non-beta) edition will include the definitive description of the feature.
u+2c7e
) in the search field to go to that code point (or the nearest valid row).seproject
files) every time the project closes.--plugintest
command line option can now be passed multiple test bundles separated by the path separator character (;
on Windows, :
elsewhere).The SE2 Compatibility Mode option is deprecated. It is now disabled by default. In a future version, this option, and the additional script code that it loads (*.ljs
files), will be removed. It is not believed that any current plug-ins rely on this mode.
The sprintf
-style script library functions will now coerce numeric conversions when possible. This means that, for example, you can now pass a regular JS number to a "%d"
conversion and it will not throw an exception. It is also now possible to pass a Locale or Language as the first argument to localize formatting (previously the interface locale was always used). Passing a locale of null
as the first argument will prevent localization.
Calling @(keyStr, formatArgs...)
or #(keyStr, formatArgs...)
will format interface and game language strings (respectively).
This update brings partial ES6 support for script code, including:
// instead of
function f(x) {
return x*x - 1;
}
// you can write
f = x => x*x - 1;
// notice: the right side of the => is an expression
// that will implicitly be "return"ed
// if the function takes multiple arguments (or no arguments)
f = (x,y) => x*x + y - 1;
// if the function requires multiple statements or
// doesn't return anything
f = (x) => {
// function body ...
};
// functional programming is much more convenient
evenNumbers = [0,1,2,3,4,5].map(v => 2*v);
Note that arrow functions cannot be used to implement Java interfaces as they capture the this
value from the enclosing scope.
// instead of
let object = {
name: "Abigail",
greet: function(arg) {
println(this.name + " says hi to " + arg);
}
};
// you can write
let object = {
name: "Abigail",
greet(arg) {
println(this.name + " says hi to " + arg);
}
}
// array matching
let array = [1, 2, 3, 4, 5];
let [a, , b, c] = array;
println(a); // 1
println(b); // 3
println(c); // 4
// object matching
let obj = {
height: 60,
age: 10,
name: "Cathy"
};
let {age, height} = obj;
println(age); // 10
println(height); // 60
// parameter matching
function f([name, age]) {
return name + " is " + age;
}
let array = ["Bev", 52];
println(f(array)); // Bev is 52
find()
and findIndex()
.codePointAt()
, endsWith()
, includes()
, normalize()
, repeat()
, startsWith()
, trimLeft()
and trimRight()
.isFinite()
, isInteger()
, isNaN()
, isSafeInteger()
, parseInt()
, parseFloat()
. Numeric literals can now use binary (0b11010101
) and octal (0o325
) in addition to decimal (213
) and hexadecimal (0xd5
).cbrt()
, cosh()
, expm1()
, hypot()
, imul()
, log1p()
, log10()
, sinh()
, tanh()
, trunc()
.is()
and assign()
.captureStackTrace()
, Error.prepareStackTrace
, Error.stackTraceLimit
.ArrayBuffer
, and views Int8Array
, Uint8Array
, Uint8ClampedArray
, Int16Array
, Uint16Array
, Int32Array
, Uint32Array
, Float32Array
, Float64Array
).In addition to the above you can expect many more bug fixes and performance improvements under the hood.
HSBPanel.setTitle
/getTitle
to change tintPanel
title label.StrangeEons.getUrlForDocPage
to get a URL for a page in the se3docs site given its base file name (e.g., "dm-preferences"
).FillInPreferenceCategory.addHelp
no longer takes a third argument (old code will still work).JHelpButton.setWikiPage
; this now forwards to setHelpPage
.arkham.project.PluginWizard
(superseded by PluginWizardDialog
).arkham.dialog.prefs.SBOrderedList
.PlatformSupport.isOSXMinorVersionAtLeast
, isUsingAquaDerivedLookAndFeel
, isUsingOSXSystemLookAndFeel
, isUsingQuaquaLookAndFeel
.OPT_*
bit flags in DIY are now package private; the methods getAdvancedFlags()
, setAdvancedFlags
and isAdvancedFlagAvailable
have been removed. Use the relevant public methods instead: setTransparentFaces
, setVariableSizedFaces
, setPortraitBackgroundFilled
, setMarkerBackgroundFilled
, setPortraitScaleUsesMinimum
, setMarkerScaleUsesMinimum
, setPortraitClipping
, setMarkerClipping
, setCustomPortraitHandling
and the complementary getters.Console.printComponent
failed due to an argument name mismatch.register
, used to register the app via xdg-utils
(for Linux-based systems) did not list the --uninstall
option.project:
URL when no project is open should throw a suitable FileNotFound exception.This is an incomplete set of release notes for historic, now long obsolete versions. Available historic versions can be downloaded here.
Deck Editor
Expansion Board Location Editor
Investigator Editor
Location Card Editor
Monster Editor
Mythos Card Editor
Personal Story Card Editor
Miscellaneous
Scripting Engine
Bug Fixes
File | Print for game components updates list when custom paper sizes are created/deleted. |
dispose()
on console window did not call super implementation.Version 2 represents the biggest change for Strange Eons since its initial release.
Performance Enhancements
Plug-in Framework
Write custom plug-ins to extend and enhance SE using either compiled Java classes or ECMAScript (JavaScript). Download the plug-in kit for more information. Several plug-ins are included with Strange Eons as standard, including a reference map, skill check probability table, and scripting tools. Download more plug-ins here.
Custom Expansion Boards
Based on the existing deck editor, SE 2 now supports the creation of custom expansion boards and includes new editors for map locations, other world locations, special locations (like LiTaS) and gate markers. Improvements to the deck/expansion editor include:
Ancient One Plot/Epic Battle Cards
Ancient One Editor
Arkham Encounter Editor
Arkham Investigations Case Book Editor
Arkham Investigations Foldable Tome Editor
Benefit/Detriment Cards
Black Goat Cult Encounter Cards
Blight Cards
Corruption Cards
Difficulty Cards
DIY Card Type (“alpha”)
Gate Cards
Guardian Effect Card Editor
Investigator Editor
Note: To create an investigator with variable health (like Lily Chen), install the Variable Health Investigators extension plug-in.
Marker Editor
Miscellaneous Small Card
Miscellaneous Large Editor
Monster Editor
Scenario Editor
Design Support
Miscellaneous
target-print-dpi-min
and target-print-dpi-max
.Bug Fixes
OS X: sometimes exports blank image.
DIY Card Type: editing a text field bound with a Bindings object in a DIY card opened from a file causes the preview image to stop updating correctly.
Internet Explorer Plug-in Downloads: IE tries to save plug-in files with a ZIP extension. Plug-ins may now be either plain ZIP files or Web-proof bundles. Web-proof bundles are left as-is by IE and converted to regular bundles automatically when installed in SE. See the SE Text Resource Editor Tools | Make Plug-in Bundle… dialog for more information. |
Scripting engine is inconsistent across platforms and may be slow (some implementations do not include a code generator).
Possible thread deadlock when writing to script console.
Regression: using Clear command on deck editor locks program.
During initialization, some code violates event dispatch thread assertions.
Script console does not obey text anti-aliasing hints.
Tile Sets: no longer need to be merged into main settings.
UI: panel transition should use alternative to temporary pack()
to determine final window size.
Windows Vista: since %userprofile%
is now the base directory of the user’s home directory, settings files should be explicitly made hidden.
Regression: Blight card backs use Black Goat Cult back image.
When starting plug-ins at program start, a missing plug-in class should not stop the application from completing start-up.
Expansion Boards: new boards have name overwritten.
Decks: new deck is marked as having unsaved changes.
Decks: new deck is missing default name.
Corrected Dunwich Horror monster names in Spanish translation.
Image conversion script writes blank images.
About: update link to FFG forums.
Regression: when using --restool
command line option, quits with a spurious “required argument missing” error.
Component Drawing: components do not have a fixed size (e.g., markers/tokens, locations) not trimmed to correct size (missing right and bottom edge).
Plug-in Manager: when sorting by column, rows in the table are not converted to the correct row in the model (uninstall button tries to uninstall wrong plug-in).
Installer: uninstaller fails to remove some batch files in the install directory.
Monsters: Wizard Whatelely listed as “flying”.
Mark-up Parser: Escaped quotation marks were consumed too early during macro expansion. The following now evaluates correctly to <b>bold this</b>b>
:
<define taga "<tagb \"@1;\">" >
<define tagb "<tagc \"@1;\">" >
<define tagc "<b>@1;</b>" >
<taga "bold this">
Casebook: “Endgame” should always be the last index entry in the location index.
Casebook: label refactoring engine changes any label that starts with the target label.
Nimbus L&F: workaround for buttons “popping” with different font sizes.
Location Cards: Some Kingsport locations are listed in the wrong order.
Gate Selection Drop-down: selection background does not cover entire list item.
Quickscript: Command key on OS X executes command, then inserts letter.
Quickscript: left margin of editor should support standard drag line selection gesture. (This fix will also appear in the next update to the SE Text Resource Editor.)
Card rendering: a race condition can occur when exporting files that cause various odd effects when exporting images (typically text will be missing or the wrong size).
Nimbus L&F: Timeline events in case book editor rendered with wrong background colour.
Regression: Clear menu only enabled/disabled when File menu selected.
Commands: Spin Off, Next/Previous Window menu item states not updated.
Commands: Next/Previous Window should not use W accelerator key since that conflicts with Close under OS X.
Plug-ins: Toolbox menu entries should be sorted in order to provide a more stable order for menu items.
Console: stack trace should display a trace of relevant host stack elements when an exception occurs while a script is calling a host method.
Console: stack trace writer sometimes adds extraneous blank lines.
Scripting libraries: numerous fixes and additions.
AbstractEditor: on install events should execute before creating sheets for component.
Monster database: some monsters have incorrect gate symbol.
Expansion Symbol Menu: not set to “Use Default” after switching from a component with an expansion symbol set to one with no expansions symbol set.
Regression: Misc. small cards with a cost/hand requirement do not render in correct colours.
Black Goat expansion symbol not reversed on dark cards.
Plug-ins: since all requests for resources obeyed the custom resource folder setting, using a custom resource folder with plug-ins does not work unless the plug-in’s resources are also in the folder. After this change, resources are looked for first in a custom resource folder (if any), but if they are not found there then the program will search for the resource as if no custom folder were set.
Nimbus L&F: spelling-checking combo boxes do not pick up Nimbus border.
OS X: changing view quality or pressing OK on Preferences dialog throws a ClassCastException
.
OS X: export dialog is initially very small.
OS X: blank rectangle shown before splash image appears during startup.
OS X: text generator plug-in interprets default model text using wrong character set (accented characters are incorrect).
Workaround for bug in Nimbus L&F in JRE 6u10-rc2 that causes small style tabs to “pop” with different font sizes.
Regression: case book editor was changed to treat labels case-insensitively, but some cases were missed.
Case Book Publisher: reports that <H*n*>
and </H*n*>
are unknown tags even though they are known and valid.
Case Book Publisher: fails to call endFrontMatter()
if a title is defined but there is no prologue content.
Script Console: extraneous blank lines printed when printing a script stack trace.
Window Menu: could get out of sync if two sequential windows in the list are both closed between menu invocations.
Card Preview: may paint card at wrong position when low-zoom sharpening is enabled.
Windows Integration: NPE when opening non-SE file from shell.
Windows Integration: plug-ins should have shell icon/default open behaviour.
Windows Installer: uninstall does not delete user plug-in folder.
Deck Editor: call-out box tile has wrong width.
Deck Editor: commands such as nudge should repeat when key held down.
Deck Editor: find command examined items in unintuitive order in rare cases.
Image Preloader: could not detect all relevant image resources.
Deck Editor: double-clicking in the Cards tab adds a card but does nothing in a tile tab.
Script Console: The console does not receive repaint events while a script is running (print statements have no effect until the script stops running or a separate event loop is created).
Script Console: The console methods insertImage( Image )
, insertImage( Icon )
, and insertComponent( Component )
do not make the console window visible if it is hidden.
Plug-ins: instances created while managing plug-ins might not be unloaded.
Location Editor: icon selection controls not aligned correctly.
Spells: missing expansion icons.
Regression: some dialogs, including the Export dialog, fail because of missing files in 2.00a13.
Investigator Editor: custom home locations cannot be edited, only re-created.
Investigator Editor: custom items added on the possessions tab cannot be edited, only re-created.
Home locations with different location type may be considered equal.
Game items with different expansion code may be considered equal.
Investigator Editor: missing space in required expansion list
New Component Dialog: does not preselect Investigator when running in language other than English.
Premultiplied translucency option (controlled by setting key premultiply-image-alpha
) doesn’t work correctly.
Regression: Reference Map plug-in can’t find “guaranteed” location icons.
Nimbus L&F workarounds allow setting default L&F back to “auto” (only makes a difference in Java 6 update 10 or newer).
Regression: autocompleting combo box does not attempt to complete single letter.
Scenarios: Clear command doesn’t clear AO name.
Plug-ins: needlessly loaded/unloaded during startup.
Regression: print
/println
generate extra newline in script console.
Regression: <gate>
tag produces wrong family.
Scenarios: left side mark-up area misses standard tag initialization.
Spelling: incorrect handling of apostrophes.
Scenarios: version mismatch when loading saved files.
Regression: after using item wizard, item reverts to prior state.
Herald/Guardian: missing text fitting setting key.
Herald/Guardian: left side mark-up area does not recognize some standard tags.
Case Book: refactoring dialog rejects labels with uppercase letters.
New Component Dialog: Cancelling New Item Wizard should stop new item editor from opening.
Window Menu: order of windows in list should be stable.
Regression: Next/Previous window commands do not traverse windows in the correct order in some Look & Feels.
Regression: script console does not scroll to correct location after print.
OS X: instantiating a deck fails with NPE (Apple’s JVM returns null
desktop rendering hints).
Scripting: console’s print( Image )
changed to insertImage( Image )
for better Rhino compatibility.
New Component Dialog: when using multiple class maps, categories are not coalesced when a category name that uses @-syntax is repeated.
Regression: multiple copies of the same sheet appear in deck card list.
Regression: deck card paths are not updated properly if it contains cards whose location has moved.
Deck Editor: find command examined items in unintuitive order in rare cases.
Image Preloader: could not detect all relevant image resources.
Regression: deck editor throws AIOOBE when opening a deck if it contains cards whose location has moved.
Investigator Rules: automatic bonuses disabled by default, as per official characters.
Regression: ignoring/adding a spelling word to the user dictionary does not correctly update existing editors.
Deck: Opacity value in line/text box colour selector should be formatted as a percent.
QuickScript: Deleting more than 1 screen length of lines starting from line 1 causes line numbers and editors to be misaligned.
Monsters: Statistics for some monsters corrected.
Selecting “Use Default” expansion symbol has no effect.
Regression: Script console throws NPE if an extension script writes to a stream.
Text scaling algorithm chooses wrong scale, generating text that is larger than it should be; in some cases it may incorrectly choose the minimum scale, causing text to be invisible.
Regression: editing text box does not mark deck as having unsaved changes.
Deck: can’t use mark-up menu/shortcuts when editing text box.
Deck: text boxes should obey use-antialiased-text-on-highquality
and use-fractional-glyph-metrics
.
Regression: Ancient One doom tracks of 1-10 cause a fatal error.
Scripting: Rhino JavaScript implementation not compatible with Sun’s Rhino fork (missing println()
, etc.)
OS X: Apple does not include standard JavaScript engine.
Injury/Madness: title should be vertically centered.
Location card: when opening saved file, a gate card editor is created .
Case Book: should display a caret to give feedback during cursor key navigation.
Monster: back face renderer used front face for sizing.
Deck: repeated paste operations should cascade items.
Deck: location of pasted cards should not depend on grid size.
Image cache release old images too readily, causing more reloading than needed.
Mythos card: selecting unnamable location causes missing resource error.
Mythos card: selecting double doom/double terror may cause fatal error.
Mythos card: after entering custom gate name, gate burst option may be disabled.
Mythos card: after selecting “None” as gate and entering custom gate, the gate information is not displayed (as if “None” were selected).
Cannot read text of error dialogs that occur as a result of errors while a card preview is being painted.
Arkham Encounter card: after opening a card with custom location images, the portrait paths are not filled in with the correct portrait.
Deck: possible ConcurrentModificationException
when deleting selection.
Deck: 1.80 stopped exporting decks.
Resizing the Insert Image Dialog resets the image to its default size.
Item Wizard: items are created in the interface language instead of the game language.
When running with “limit to single instance” disabled, files on the command line are not opened.
Mark-up tags are not filtered out of suggested file names.
Foldable tome: back cover prints incorrect text.
Localized number entry and display (e.g., scale of 2.00 vs. 2,00) should now be consistent across the application.
Arkham Encounter: cards open as Other World encounter cards.
Exhibit items: text now extends to bottom of card if no hand symbol or cost is shown.
Deck editor: delete page action sometimes disabled at inappropriate times
Item wizard: option to add +1 bonus when using extra hand with a weapon should be disabled (and label set to a proper value) when a weapon is two-handed.
Monster editor: edit area could “collapse” at certain window sizes.
Mark-up renderer: might fail to correctly reset text scale on re-render.
Deck editor: wrong card faces may be deleted.
Deck editor: snap edge selection may be less than ideal when snapping to short or narrow cards. Sometimes the Z-order of cards would prevent some cards from being snapped against.
Resource Tool: Under some circumstances, fails to extract resources (under this condition, it fails to recognize folders in the source jar and therefore does not create them in the destination; if they did not already exist, extraction fails).
Preview Window: The loupe (magnifier) could paint outside of the preview window, painting over nearby window elements.
Resource Tool: “Repack” option prints “The source folder does not appear to contain Strange Eons resources.” and refuses to run.
Case Book Editor: creation failed in 1.80b2.
Other World Encounter: Dual-colour cards “forget” their second colour when opened from a file.
Arkham Encounter Card Editor
Magical Effect Card Editor
Spell Card Editor
Added option to automatically calculate costs based on 2 + | sanity cost | + | casting modifier | + base-spell-cost-adjustment. This option is on by default for new spell cards. |
Mythos Card Editor
Investigator Editor
General Features
Bug Fixes
King in Yellow Expansion Support
Herald/Guardian Cards
Mythos Cards
Item Editor
Gate Cards
Injury and Madness Cards
Miscellaneous Investigator Card
Ally Editor
Investigator Editor
Ancient One Editor
Monster Editor
Deck Editor
Image Export
General Features
Localization
Bug Fixes
Arkham Encounter Cards
Deck Editor
Item Editor
Investigator Editor
Paragraph Renderer
General Features
Bug Fixes
All Editors
Item Editor
Monster Editor
General Features
Bug Fixes
Investigator Editor
Item Editor
Skill Editor
Spell Editor
Card Quality
target-print-dpi
key (the default is 450 dots per inch). When printing, cards must be rendered at at least that resolution. Therefore, increasing this value can significantly increase the time required to print files, as well as the memory required by the program.General Features
Localization
Monster Editor
Ally Editor
Investigator Editor
Ancient One Editor
Resource Tool
Localization
Improved Typography
General Features
open-zip-after-export = yes
in your local settings.Known Issues
[Corrected in beta 1c] Bugs related to File | Close, File | Exit and clicking close button on window. File | Close did not correctly close the window, failing to offer to save unsaved cards. Modified cards that were disposed of but not removed from their container, causing a later null pointer exception that prevented the main window close button from completing the close operation and exiting the program. |
Added:
Changed:
Known Issues:
use-ally-cost-equality
rule (which is on by default), the price correction is incorrectly applied to spells instead of allies.Added:
<h2>
, <sup>
, <sub>
, <u>
, <del>
, and <tight>
.Changed:
Added:
Changed:
Minor bug fixes.
First public release.