The JDB Util dependency has been upgraded to 3.4 from 2.0. This includes
backwords-incompatible changes in the LightOptionParser class used by this
project. I need to re-write that code to use the newer version of
LightOptionParser.
* Added UUIDs to `ts_entry` records. Updated `ts_json:construct_record` to
respond to `uuid` member properties if present. UUIDs are not required by the
strict parsing functions in `ts_json` because the client will make a request
with no UUID if it is a purely new timestamp. IN fact, this is the normal
case. The UUID is only present when another tool is syncing its copy of this
timeline wand adding entries that it has created and assigned UUIDs to.
* `ts_entry:new` will create a UUID for a new entry if it does not already have
one.
* Restructured the build process to put all build artifacts into a dedicated
`build` subdirectory, instead of mising them in an amongst the source code.
* Added the `uuid` module to the project. It can be found at
https://gitorious.org/avtobiff/erlang-uuid
* Rewrote asset URLs to use relative paths instead of absolute paths. Relative
paths are correct in this case, becuase assets always live alongside the HTML
pages. This change was needed to accomodate the new organization of the JDB
Labs dev environment, where all projects live under subdirectories of the
same virtual server instead of subdomains.
* Tweaked the timestamp entry fields in the web UI to save when the field is
blurred, not just when <Enter> or <Ctrl>-<Enter> is pressed (though those
still work).
* SyncTarget now persists the remote timeline after pushing to it.
* Added SyncTarget.shutdown() to allow callers to signal the sync timer thread
to stop.
* Fixed a bug where a SyncTarget was added instanciated times.
* Added `edit` which uses the program in $EDITOR to allow the user to edit the
current timeline marker.
* Added `delete` to remove the current timeline marker from the timeline.
* Added support for using a named TTY device in order to use an interactive
program ($EDITOR in this case) to take over interaction with the user. There
is still a problem with this, in that a process by default only has access to
its controlling TTY device. This mean, for example, that redirecting the
subprocess input and output to the TTY will fail to work properly if the
timestamper CLI process is not part of the same process group as the process
owning the TTY the user is interacting with. This is the case when using
nailgun: the java process running TimeStamperCLI is not part of the same
process group as the user's client shell.
I think TTY device permissions may be alterable, and we can work around this
by changing the permissions for the current TTY in the launcher script that
invokes the nailgun client. Needs more investigation.
* Added package build target to create a zip of the CLI standalone installation.
* Removed superfluous ``signpost`` library used by ``HTTPBuilder`` for OAuth
support.
* Refactored JDBLabsWebTimeline to throw appropriate exceptions when problems
occur while communicating with the server.
Web timelines as defined by the JDB Labs Web TimeStamper tool are now supported.
* `TimelineSource` now also takes the timeline config file as constructor input.
* Refactored `Timeline` to use reduce implementation redundencies: internal
implementations do not duplicate functionality.
* Improved comments in `TimelineProperties`.
* Updated `TimelineSourceFactory` to handle timelines that need to use
`JDBLabsWebTimelineSource`.