High (0.4.99)
-------------

Building on Linux

Add CT_DEFINE type to better preserve original pattern's formatting
Add CT_COMMENT to preserve original comments

Medium-High (0.5.0)
-------------------

Fix yarn diameter snugness against bindings

Fix inter-binding distances

Building on OSX

Medium
------

Shrink OSX DMG size (link against standard wxWidgets)
Get OSX options notebook/panel to look right

toEdge & friends doesn't export correctly?
yarn definition doesn't export correctly

Buttons at the bottom appear to be more important than animate. Knit All
meaning is not apparent. Erase erases current pattern as well as what's
been rendered. There should be a way to only erase what's been rendered.
(Confirmation on erasing pattern?)

"Links" tab usage is not apparent, maybe take this out or only show in
advanced view.

The fact that the stitches per inch is only used before the pattern is
loaded is not apparent.

Erasing and then loading a new pattern causes simulation to slow down.

----
New architecture notes:
----

Each stitch consists of a number of 'nodes', which are the vertices where
the yarn crosses itself.  The nodes included in stitches.xml are the nodes
for consuming a single stitch off the needle.  A node has two input ports
and two output ports and can be thought of as two yarn segments crossing
at right angles.  The model for the node is socket joints at each port with
linear springs between socket joints for connected nodes.  The ports in the
model are at right angles to each other like '+'.  The 'offset' attribute
represents how far apart the two overlapping segments are separated.

Because the node's model is always created with the same orientation, the
offset can be positive or negative, causing a handedness difference in how
the yarn loops.  The simulation should rotate the node so that the system
is at lowest energy; in other words, if the model is rendered exactly, the
yarn loops will not actually interweave; they will simple loop very near
to each other.  To render things correctly, we can simple reverse the sign
of the offset when rendering; the physical model will still be 'anchored'
by the opposed forces of the upper and lower stitches and give the same
orientation, and the rendering will show the yarn actually looping around.

Each node endpoint contains references to the remote endpoint, so that the
entire fabric can be considered a complex multi-dimensional linked list. 
It is, in fact, a directed graph, where each vertex has 2 input 2 output
edges.  The 'loop' directive from the stitch library indicate where new
nodes should be inserted when a stitch is knitted into this one.  No actual
node exists at the 'loop' directive.  Instead, a reference to the last node
before the 'loop' is kept, and a list of these references is what makes up
each stitch-holder.

In the case of pass-stitch-over and decreases, multiple lower loops are
attached to a single upper loop.  In these cases, new nodes are created at
the 'loop' of the upper stitch, each very close to (and inside) the
existing nodes.  For example, with a decrease, the first stitch is taken
from the holder, the new stitch's nodes are added into the old stitch's,
then the second stitch is taken from the holder and the nodes on the
new stitch are duplicated (offset and any other attributes are the same)
so that they are close to but in the direction of the new stitch's loop,
and those new nodes are then added into the second old stitch's nodes.

The stitches.xml file uses only a few different tags:
node - Indicates that a new node should be created.  The first in/out pair
  for the node is the next 'loop' on the stitch-holder.  The second
  in/out pair is the end of the current piece of yarn.
  which - Default 1 for the first node, 0 for remaining. Specifies the 
    offset on the current holder to use when fetching the next loop. 
    A value of -1 means take the loop most recently put on the holder, 
    while a value of 1 means take the next available loop.  A value of 0
    means to use the last-used loop.
  length - Specifies the length of yarn between this and the next node.
  offset - Default 0. Specifies the shortest distance between the two in/out
    pairs.
loop - Indicates that a pointer to output of the last node should be added
  to the stitchholder. Another interpretation of 'loop' is that this is where
  new nodes will be added later.
overlay - Places one loop over another loop. The 'under' loop is the one that
  remains on the stitchholder. The nodes on either side of the 'under' loop
  are duplicated and the 'over' loop is then attached to those. The numbers
  for 'over' and 'under' follow the same rules for 'which'.