- Moving CSS into the code, so no
Tron.css
would be required; - Detailed and friendly documentation;
- Fix showing icons on the buttons, due to the switch to
Url
usage, it was broken; - Fix altering coordinates in XY control when dragging;
- Show current value on X/Y controls;
Live
controls:- Fix reporting
Live
controls; - Fix
Live
controls to display value while being dragged; - Fix encoding and decoding
Live
controls;
- Fix reporting
- JS Companion for building Tron UI entirely from JavaScript;
- With the ability to subscribe to control changes from the UI being created;
- With the ability to subscribe to control changes from the UI that was built in Elm;
- With the ability to send value changes;
- Massive changes in the public API:
WithTron
helpers are now suggesting to help user createBrowser.*
configurations instead of hiding and replacing them;- No more confusing
Backed
Tron-s in favor of just enabling specific ports inTron.Option.Communication
and always storing the previous GUI tree; Communication
options are simplified and moved to separate module;Tron.OfValue msg
is now justTron msg
, under the hood it isTree (Control.Value -> Maybe msg)
;Property a
was renamed toTree a
and so what was confusing normalTron a
is nowTree a
;- No more
ValueAt
type, the module is still there to work withTree ()
, which is the simply the previous state of GUI tree structure; - More
map
-pings andzip
-pings to help converting things here and there; - Building
Tree ()
is fromTree.Build.Unit
, buildingTree a
is fromTree.Build.Any
and buildingTron msg
is fromTron.Build
; - Several improvements in builders to make them easier and friendlier;
- Massive changes in the internal API:
Property a
which isTree a
now, always holds the value (wasn't holding forGhost
case before);Control
s now have their ownupdate
cycle andAction
s as well;- ...
- All the examples were updated to the new API;
- Make pagination optional for Choice and Group panels, add
PanelShape.singlePage
/PanelShape.manyPages
+ more helpers; - The UI constuctor comes as the powerful example;
- Fix sending several updates from the client with
Backed.byProxyApp
;
- Introduce tests for pagination and deducing incoming values;
- Additional
ValueAt
helpers which should reduce boilerplate code; - Fix rendering pagination;
- Add
DeduceIn
as the message with label-path and JSON value to be deduced to current state of the tree, when sent; - Rename
Exp.RawInUpdate
->Exp.In
,Exp.RawOutUpdate
->Exp.Out
,Exp.RawProperty
->Exp.Property
;
- Fix pagination issue with distributing items;
- The border around color controls;
- Add
SendReceiveJson
option with ability to send JSON; - Add
Docker
argument to run a specific example;
- Fix layouting of the controls at the root position when they don't fit in viewport;
- Add modes for
Choice
control: now it can be a knob (changed by drag or switched by click, useBuilder.toKnob
) or just a click-through switch (useBuilder.toSwitch
); - Add Live controls: the value is changing together with the updates, use
Builder.live
to convert any control to its live version; - New pagination style;
- Add
Debug
option to render targets, which could help with observation of the problems with UI; - Fix the major bug with
Path.pop
returning reverse result and, so, working with second-level panels; - Significantly improve knobs/drag-driven-controls behaviour
- Fix dragging in general;
- Fix knobs to use current value when user starts dragging;
- Fix/improve knobs to support on-the-fly change of the value;
- Fix knobs showing the values
< min
or> max
;
- Add the border to the expanded and/or focused items;
- Add the text mask to wide texts on controls so that they would overlflow the borders just slightly;
- Add
Tron.Random
UI generator to the API just for fun; Tron.Expose.ProxyValue
->Tron.Control.Value
;- Major changes in the core API, no more functions or messages are stored in the
Model
,Tron
just assigngs some value to the control now, instead of storing a handler, but there's alsoTron.OfValue
from now on, which converts the control's value to the usermsg
; - Get rid of
Tron.Builder.String
, it is not very useful and can easily be converted fromTron ()
orTron Value
;
- New base font:
Oxanium
; - Fix
.int
controls and knob controls in general to show the value b/wmin
andmax
instead of just0..1
value;
- Remove previously required
PanelShape
andCellShape
fromBuilder.nest
andBuilder.choice
and make them separate functionsBuilder.shape
&Builder.cells
correspondigly; - Add
Builder.face
and removeBuilder.buttonWith
so that there will be only one way to change the button/nest/choice face through API; WithTron.Backed
helpers are now separate and improved and extended with the ones that have access to the value storage;WithTron.ValueAt
as a public API module with helpers;- Choice can optionally have a face (
icon
/color
) which overrides showing selected option; - Fixed: the size of the choice/nest can not be changed dynamically;
- Fixed: distribution over pages;
- Improve
Tron.palette
control rendering & handling (which is just choice over colors); - Better icon size;
- Show labels on the buttons as well;
- Show values on the knobs;
Tron.palette
now asks for labels along with colors;- Remove collapse panel button (since click on groups/choices expands anyway);
Gui.css
->Tron.css
;
- Make
Expose.Data.Convert
work withTron *
instances instead ofProperty *
, which was confusing, though it is just the alias anyway. - Fix
rows
&cols
forPanelShape
; - Make
Builder
API friendlier withchoice
accepting a list of choices as configured controls, instead of just choices: i.e. buttons, with icons, if needeed, or just any control; - Add
setIcon
andsetColor
to theBuilder
API so that.nest
could have an icon instead of showing the arrow; - Hide on Space functionality;
- Expose
Tron.Option
; - Move and rename
Builder msg
toTron msg
so that it will have more similarities toHtml msg
,Svg msg
& s.o; - Make
Backed
as JSON default helper, and theBacked
as strings — secondary;
WithTron
helper that wrapsBrowser.*
helpers and allows to add GUI to the existing Elm application easily;- Much cleaner API of the
Builder
and others; - New layouting system instead of
BinPack
used previously; - Add pagination support for groups where number of controls inside exceeds some amount;
- Color button control;
- Examples for sending GUI updates to JS, in JSON or in Strings;
- Helpers, optional to use, based on the examples, like
detachable
,communicateJS
... - Rename
Gui
module toTron
; - Fix URLs for icons not to require
assets/{icon}_{theme}.svg
address; - Let user refer to icons using
Url
rather than filename and allow to be dependent onTheme
; - Hide
Tron
(previouslyGui
) API withMsg
,init
,view
... and stuff, only expose theWithTron
API; - Remove unexpected sorting in nested panels;
- Separate
Dock
and its logic,Expose
and its datatypes and logic, and hide such logic from user API; - Fix
cols
vsrows
to be bound to docking orientation (or just don't change direction of panels when docking); - One-Control example;
- Make examples run easy with one script, through arguments;
- Now there is a
Style.Shape
module that helps to define the shape of the plate in a friendly method, like only by specifying the required number of rows or columns (and no adjustment to cell shape is required anymore); - Docking support for all nine directions;
- Now the whole viewport is used for the grid by default + let user request the custom shape of the grid;
- All the style modules are moved to
Style.*
package and properly separated; Gui.over
function keeps the expanded panels expanded, the newGui.use
function—doesn't;Builder.expand
+Builder.collapse
helpers;- Now controls' types and helpers are defined in the separate modules;
Builder.labels
;- The Goose example instead of the boring default one (still, the boring one can be switched back);
Builder.map
andBuilder.Set
;
- Support cell shapes other than 1x1;
- Support different docks:
TopToBottom
,BottomToTop
,LeftToRight
,RightToLeft
; - Calculate the grid size dynamically;
Gui.reshape
to allow to force custom size of the grid;- Choice component shows the selected item instead the expanding control;
Builder.choiceWithIcons
+Builder.string
+Builder.palette
helpers;- Shape is required to be passed to group controls;
- Button now may have different faces : icon, color, or just text;
- Fix X/Y control to be exported to
dat.gui
;
- Detaching is based on Client IDs;
Render.Style
module is exposed separately;- Design fixes;
- Basic controls and the examples are there:
- Knob;
- XY;
- Toggle;
- Color;
- Choice;
- Nesting;
- Button;
- Text;
- Detaching is supported;
- Converting tree to
dat.gui
and back is supported;