CHANGE LOG

4/4/11 - version 1.4.2 (r24555)
This release chiefly consists of a fully reimplemented connection panel. Besides being a sane, maintainable implementation this includes numerous new features and improvements like full circuit paths, applications involved for local connections, and better type identification.

    * added: full rewrite of the connection panel, providing:
          o listing the full paths involved in active circuits
          o identification of socks, hidden service, and controller applications (arm, vidalia, polipo, etc)
          o identification of exit connections with the common usage for the port they're using
          o display of the local -> internal -> external address when room is available (original patch by Fabian Keil)
          o better accuracy and performance in identifying client and directory connections
          o marking the uptimes for initial connections (arm only tracks connection uptimes since starting, so these entries are just minimum durations)
          o lazily loading the initial IP -> fingerprint mappings to improve the startup time
          o using the circuit-status to disambiguating multiple relays on the same IP address
          o smarter space utilization, filling in smaller columns if there isn't room for higher priority but larger entries
          o connection details popup changes:
                + using the consensus exit policies rather than the longer descriptor versions when available
                + displaying connection details no longer freezes the rest of the display
                + detail panel uses the full screen width and is dynamically resizable
                + more resilient to missing descriptors
    * change: hiding most tor config values by default (idea by arma)
    * change: dropping warning suggesting that users set the FetchUselessDescriptors option (suggestion by Sebastian and others)
    * change: always starting the bandwidth field from zero rather than using the state file total, which only contains the last day's worth of data (thanks to guilhem)
    * change: suggesting authentication and giving steps for it in the readme (suggestion by Sebastian)
    * change: caching config display lines, which reduces the CPU usage when scrolling by around 40%
    * change: added summaries for the remaining tor configuration options
    * change: using a dedicated enum class rather than tuple sets
    * fix: torrc validation requires 'GETINFO config-text' which was introduced in Tor verison 0.2.2.7 (caught by Sjon, talion, and torland, https://trac.torproject.org/projects/tor/ticket/2501)
    * fix: off-by-one issue with the displayed line numbers for torrc errors (caught by Sjon)
    * fix: bin function wasn't available before python 2.6 (caught by Paul Menzel)
    * fix: mis-parsing family entries when there's no entry after the comma (caught by StrangeCharm, https://trac.torproject.org/projects/tor/ticket/2414)
    * fix: preventing SOCKS and CONTROL connections from being expanded (patch by Fabian Keil)
    * fix: disabling name resolution for application queries to avoid leaking to resolvers (patch by Fabian Keil)
    * fix: reversing src and dst addresses of SOCKS and CONTROL connections (caught by Fabian Keil)
    * fix: changing the 'APPLICATION' type to 'SOCKS' since the previous label was too long (caught by Fabian Keil)
    * fix: crashing issue from unknown relay nicknames (caught by krkhan)
    * fix: concurrency bug occasionally causing "syshook" stacktraces when shutting down
    * fix: header panel displayed the wrong IP address if it changed since we first started (https://trac.torproject.org/projects/tor/ticket/2776)
    * fix: unchecked OSError could cause us to crash when making directories (for instance if there was a permissions issue)
    * fix: the availability check for bsd resolvers was broken, probably causing resolution to fail for a few seconds on that platform
    * fix: dropping the pointless 'Log notice stdout' entry provided by config-text queries (https://trac.torproject.org/projects/tor/ticket/2362)
    * fix: taking DirServer and AlternateDirAuthority into account when determining the directory authorities
    * fix: consuming a little extra space in the connection panel when scrollbars aren't visible
    * fix: dropping the deprecated 'features.config.descriptions.persistPath' config option
    * fix: failed connection attempts to the control port were generating zombie connections (https://trac.torproject.org/projects/tor/ticket/2812)
    * fix: concurrency bug in joining on the TorCtl thread when tor shut down
    * fix: the 'startup.dataDirectory' config option was being ignored
    * fix: recognizing the proper private ip ranges of the 172.* block
    * fix: missing 'is default' option from config sort ordering
    * fix (4/4/11): hidden service parsing issue when there's multiple spaces in the HiddenServicePort opition (caught by Nicolas Pouillard)

1/7/11 - version 1.4.1 (r24054)
Platform specific enhancements including BSD compatibility and vastly improved performance on Linux.

    * added: querying the proc contents when able for tor resource and connection samplings to *greatly* reduce arm's resource usage (many thanks to psutil)
    * added: vastly improved BSD compatibility, thanks to patches by Fabian Keil
          o pid resolution via pgrep (all platforms) and sockstat (bsd only)
          o connection resolution via sockstat (all platforms) and procstat (bsd only)
          o autodetecting the path prefix for FreeBSD jails
    * added: displaying summaries of the options on the configuration panel (idea by Sebastian)
    * added: arm cpu usage to the header panel and logs (with an estimate for system call usages)
    * added: testing script for checking connection resolution performance, connection dumps, and the glyph demo
    * added: option to dump arm debug logs (better failsafe option)
    * change: incrementing the uptime field of the header panel each second
    * change: centralizing arm resources in ~/.arm (suggested by Sebastian and also thanks to feedback from rransom)
    * change: using exponential backoff of ps/proc resource resolutions when calls fail or tor isn't running
    * change: reordered resolvers by order of performance
    * change: when tor's man page is unavailable falling back to descriptions provided with arm (often the case with tbb)
    * change: dropping support for graphing of custom ps attributes (feature was never used, kinda pointless, and incompatible with the proc enhancement)
    * fix: providing proper cpu samplings rather than an average over the life of the process
    * fix: expanding relative paths for the authentication cookie (mostly a problem for tbb instances)
    * fix: crashing error when querying hidden service parameters (caught by StrangeCharm, fixed by katmagic and chiiph)
    * fix: initially built diff differed from rebuilt version since it was missing the pycompat (caught by weasel)
    * fix: startup script wasn't handling unusual paths, such as with spaces and dashes (caught by weasel)
    * fix: startup script was forking the final process instead of calling exec (caught by weasel)
    * fix: log entries weren't being bracketed by date dividers when no scroll bars were visible (caught thanks to twur)
    * fix: workaround for config-text providing Log entries regardless of if it matches the default (caught thanks to Trystero)
    * fix: config validation mistakenly thought that Tor stripped spaces from CSV getconf responses (caught by murble)
    * fix: presenting a text input field with python 2.5 would crash (caught by murble)
    * fix: reloading torrc contents when a sighup is issued (caught by StrangeCharm)
    * fix: modifying lsof resolution to work with additional platforms (patch by Fabian Keil)
    * fix: dropping the locale for internal connections (patch by Fabian Keil)
    * fix: labeling connections to our socks port as being client connections (caught by Fabian Keil)
    * fix: skipping internal -> external address translation when the external address is private (caught by Fabian Keil)
    * fix: suppressing superfluous lsof warnings (patch by Hans Schnehl)
    * fix: when the pid was unavailable some resolvers failed to work
    * fix: including udp connection results (needed since exits proxy dns traffic)
    * fix: crashing issue when nickname was undefined but displayed on the connection panel
    * fix: concurrency issue caused the first connection resolution to often not have the pid
    * fix: connection resolution wasn't finding results if tor was running under a different name
    * fix: brought all Linux connection resolvers into parity (established tcp connections only)
    * fix: commands with quoted pipes were being mis-parsed by the sysTools' call function
    * fix (1/11/11, r24064): including platform, python version, and arm/tor configurations in debug dumps
    * fix (1/11/11, r24064): properly parse the ps field when displaying decimal seconds (patch by Fabian)
    * fix (1/11/11, r24064): error when initial resource lookups fail (caught by Trystero)
    * fix (1/12/11, r24075): decimal seconds in the ps uptime field were being misparsed (patch by Fabian)
    * fix (1/15/11, r24092): adding a --docPath argument to help Gentoo ebuilds (https://bugs.gentoo.org/349792)

11/27/10 - version 1.4.0 (r23873)
Introducing a new page for managing tor's configuration, along with several other improvements.

    * added: editor for the tor configuration, providing:
          o a simple method for setting config values and saving the new torrc
          o descriptions and usage information for the tor configuration options, fetched from its man page
          o color and bolding to indication option categories and if they're default or custom values
          o sorting by any of the config attributes
    * change: numerous revisions in preparation for being included in debian, thanks to weasel
          o moved deb/rpm build resources out of the source repository and added helper scripts
          o moved the arm install location to /usr/share/arm
          o purging the autogenerated egg file from the deb build
          o using temporary file utility for man page compression to avoid potential security issues (thanks to asn)
          o including dh_pysupport flag so it'll recognize the private python module (thanks to Emilio Pozuelo Monfort)
          o small revisions to several bits of debian metadata
    * change: full rewrite of the log panel, providing:
          o added: scrollbar and scrolling by displayed content rather than line numbers
          o added: checking for torrc entries that are pointless due to matching the default value
          o added: validation warning when custom entries are missing from the torrc
          o added: handling for the multiline torrc entry support that was added in tor 0.2.2.17-alpha
          o change: simplified and expanded on the config display and validation (performance improvements, human friendly units for torrc corrections, etc)
          o fix: torrc validation didn't recognize 'second' and 'byte' arguments
          o fix: scrolling was buggy if comments were being stripped
          o fix: more helpful messages for validation errors
          o fix: unnecessary whitespace was being stripped
    * added: INFO level logging for the arm startup time
    * change: removing all references to the controller password after we've connected to tor (request by ioerror)
    * change: using curses.textpad to improve text fields (supports arrow keys, emacs keybindings, etc)
    * change: revised the arm config interface (simplified and expanded to include maps)
    * fix: verbose logging was causing the application to freeze due to an n^2 deduplication implementation, disabling this feature for now when it takes too long (caught by NightMonkey)
    * fix: wasn't loading the settings.cfg if starting starter from the src directory (caught by NightMonkey)
    * fix: displaying empty conf contents caused crashes when calling math.log10(0) (caught by NightMonkey)
    * fix: persisting results from scraping the man page to greatly reduce startup time (idea by nickm)
    * fix: path for the sample armrc was wrong in the man page (caught by weasel)
    * fix: the arm starter was only executable from the arm directory
    * fix: not all worker threads were daemons, causing the process to persist in a broken state after exceptions and when quitting via ctrl+c
    * fix: custom armrcs resulted in the parsing config options being unavailable
    * fix: rounding error in rendering the scrollbar, causing it to shrink a line when at the bottom
    * fix: crashing issue when the 'queries.ps.rate' config value was undefined and the stats graph was displayed
    * fix: making the interface more resilient to being resized while popups are visible
    * fix: log panel wasn't respecting the prepopulate* log level config options
    * fix: off by one error when wrapping lines in the log panel
    * fix (11/30/10, r23882): install script was failing to make the temporary directory for the compressed man page
    * fix (11/30/10, r23882): a torrc validation log entries had a typo

10/6/10 - version 1.3.7 (r23439)
Numerous improvements, most notably being an expanded log panel, installer, and deb/rpm builds.

    * added: installation/removal scripts and man page (thanks to kaner)
    * added: scripts and resources for making deb and rpm releases (thanks to ioerror, and also requested by helmut)
    * added: path prefix option for chroot jails (requested by asn)
    * added: customizable graph size (requested by voidzero)
    * added: incremental y-axis measurements to the graph (requested by voidzero)
    * added: caching for static GETINFO parameter
    * added: logging for the refresh rate metric
    * change: full rewrite of the log panel, providing:
          o dividers for the date, bordering all events that occurred on the same day
          o hiding duplicate log entries (feature request by asn)
          o coalescing updates if they're numerous, such as running at the DEBUG runlevel
          o providing a notice if tor supports event types that arm doesn't, and logging them as the 'UNKNOWN' type
          o condensing the label for runlevel event ranges further if they're identical for multiple types
          o options for:
                + saving logged events to a file, either via snapshots or running persistence
                + presenting torctl events of arbitrary runlevels
                + clearing the event log
                + maximum lines displayed from individual log entries
                + cropping based on time (requested by voidzero)
          o numerous performance improvements (for log prepopulation, determining the content length, caching for helper functions, etc)
          o minor bug fixes including:
                + added handling for BUILDTIMEOUT_SET events
                + dropping brackets from label if no events are being logged
                + merging tor and arm backlogs according to timestamps
                + regex matches were failing for multiline log entries
    * change: using PidFile entry to fetch pid if available (idea by arma)
    * change: dropping irrelevant information from the header when not running as a relay
    * change: updated torctl version to the current git head release
    * change: measuring by bits for transfer rates (config can set it back to bytes)
    * change: home/end keys jump to start/end of all scroll areas (request by dun)
    * change: trimmed last couple letters off downloaded/uploaded labels (requested by asn)
    * change: dropping the 'frequentRefresh' parameter in favor of just doing refreshes when there's new graph stats available
    * fix: shifting bandwidth prepopulation by a sampling interval to account for tor's internal behavior (thanks to voidzero, nickm, arma, and Sebastian)
    * fix: making rdns resolution disabled by defaut due to possible connection disclosure to upstream resolver (thanks to Sebastian)
    * fix: skipping bandwidth prepopulation if not running as a relay (caught by arma)
    * fix: bandwidth stats above the graph weren't getting reset by sighups (caught by voidzero)
    * fix: config and connection panels were failing to parse a torrc with tabs (caught by voidzero)
    * fix: remapping torrc aliases so GETCONF calls don't fail (caught by voidzero)
    * fix: crashing error in bandwidth panel for wide screen displays (caught by cjb)
    * fix: changing debian arch to all rather than any (suggestion by murb)
    * fix: had case sensitive check for the torrc logging types (caught by asn)
    * fix: crashing error when ExitPolicy was undefined (caught by asn)
    * fix: dumping a stacktrace to /tmp and exiting immediately if exceptions are raised while redrawing
    * fix: connection panel failed to handle family entries identified by its nickname
    * fix: race condition between heartbeat detection and getting the first BW event
    * fix: refreshing after popups to make the interface seem more responsive
    * fix: crashing and minor display issues if orport was left unset
    * fix (10/7/10, r23463): crashing from type issue in the graph panel (caught by tomb)

6/7/10 - version 1.3.6 (r22617)
Rewrite of the first third of the interface, providing vastly improved performance, maintainability, and a few very nice features. This improved the refresh rate (which is also related to system resource usage) from 30ms to 4ms (an 87% improvement).

    * added: settings are fetched from an optional armrc (update rates, controller password, caching, runlevels, etc)
    * added: system tools util providing simplified usage, suppression of leaks to stdout, logging, and optional caching
    * added: wrapper for accessing TorCtl providing:
          o client side caching for commonly fetched relay information (fingerprint, descriptor, etc)
          o singleton accessor and convenience functions, simplifying interface code
          o wrapper allowing reattachment to new controllers (ie, arm still works if tor's stopped then restarted - still in the works)
    * change: full rewrite of the header panel, providing:
          o notice for when tor's disconnected (with time-stamp)
          o lightweight redrawing (smarter caching and moved updating into a daemon thread)
          o more graceful handling of tiny displays
    * change: rewrite of graph panel and related stats, providing:
          o prepopulation of bandwidth information from the state file if possible
          o observed and measured bandwidth stats (requested by arma)
          o graph can be configured to display any numeric ps stat
          o third option for graphing bounds (restricting to both local minima and maxima)
          o substantially reduced redraw rate and making use of cached ps parameters (reducing call volume)
    * fix: preventing 'command unavailable' error messages from going to stdout, which disrupts the display (caught by sid77)
    * fix: removed -p option due to being a gaping security problem (caught by ioerror and nickm)
    * fix: crashing issue if TorCtl reports TorCtlClosed before the first refresh (caught by Tas)
    * fix: preventing the connection panel from initiating or resetting while in blind mode (caught by micah)
    * fix: ss resolution wasn't specifying the use of numeric ports (caught by data)
    * fix: parsing error when ExitPolicy is undefined (caught by Paul Menzel)
    * fix: revised sleep pattern used for threads, greatly reducing the time it takes to quit
    * fix: bug in defaulting the connection resolver to something predetermined to be available
    * fix: stopping connection resolution (and related failover message) when tor's stopped
    * fix: crashing issue when trying to resolve addresses without network connectivity
    * fix: forgot to join on connection resolver when quitting
    * fix: revised calculation for effective bandwidth rate to take MaxAdvertisedBandwidth into account

4/8/10 - version 1.3.5 (r22148)
Utility and service rewrite (refactored roughly a third of the codebase, including revised APIs and much better documentation).

    * added: centralized logging utility for handling arm events, simplifying several parts of the interface
    * added: rewrote connection resolver, including:
          o fallback support for 'ss' and 'lsof' (requested by dun, John Case, and Christopher Davis)
          o readjusts resolution rate if calls prove burdensome
          o ui option for selecting mode of resolution
    * added: rewrote hostname resolver, including:
          o optional resolution via socket module (seems worse so disabled by default... pity)
          o non-blocking thread safety
          o extra error info
    * change: revised curses wrapper utilities (plus some hacks of the interface to accommodate it)
    * fix: issuing resets via RELOAD signal rather than sighup (thanks to Sebastian for pointing this out)
    * fix: taking into account potential None values when running get_option on arbitrary values (caught by pipe and enki)
    * fix: crashing problem if use_default_colors() calls failed (caught by sid77)
    * fix: removed workaround for mysterious torrc validation bug (was accidentally already fixed - thanks to dun for lending a test environment)
    * fix: size and time labels weren't doing integer truncation (rounding was unintended and frustratingly difficult to get rid of)
    * fix: hack to prevent log panel from drawing before being positioned
    * fix: arm crashed if torrc was an empty file
    * fix: wasn't consistently bolding help keys

3/7/10 - version 1.3.4 (r21852)
Weekend bugfix bundle.

    * added: returned option to reload torrc and added option to issue a sighup
    * fix: header panel wasn't interpreting multi-line exit policies (caught by dun)
    * fix: substantial display bug when stripping comments and torrc is bigger than the panel (caught by Paul Menzel)
    * fix: deb specific hack for estimating the file descriptor limit was broken (caught by Paul Menzel)
    * fix: skip printing stack trace in case of keyboard interrupt
    * fix: updated listing of directory authorities (for tor version 0.2.1.24)
    * fix: several uncaught exceptions when the network consensus couldn't be fetched
    * fix: torrc comment stripping wasn't removing comments on the same lines as commands
    * fix: torrc validation was failing under some conditions for CSV values (like ExitPolicy)
    * fix (3/9/10, r21888): initializing error when processing family connections (caught by dun)
    * fix (4/7/10, r22134): scrubbing wrong data for inbound connections (caught by waltman)

2/27/10 - version 1.3.3 (r21772)
Hiding client/exit information to address privacy concerns and fixes for numerous issues brought up in irc.

    * added: scrubbing connection details of possible client and exit connections
    * change: providing file descriptions in README, updated known issues and future plans in TODO
    * change: added precision for bandwidth cap and burst if uneven values (requested by mete1989)
    * fix: HiddenService* parameters fetched via a special option (caught by dun, karsten, and grumpy3)
    * fix: workaround for os specific torrc validation bug - unfortunately haven't managed to repro yet so no fix (caught by grumpy3, Tas, and dun)
    * fix: checking for python curses bindings at startup (caught by dun)
    * fix: import error - TorCtl and socket missing from confPanel.py (caught by grumpy3)
    * fix: showing external ip in connection panel rather than local nat address (caught by mete1989)
    * fix: raised minimum width at which graph stats are displayed beside label (caught by dun)
    * fix: wasn't treating "accept *" and "reject *" as catch-all policies
    * fix: wasn't resizing graph panel properly in case of a sighup

2/14/10 - version 1.3.2 (r21646)
Refactoring goodness and bug fixes.

    * change: revised curses utilities to further simplify interface implementations
    * change: substantial layout changes (adding util and init packages) and including a copy of the gpl
    * fix: bug with handing of DST for accounting's 'Time to reset' (patch provided by waltman)
    * fix: header and connection panels weren't accounting for having ORListenAddress set (caught by waltman)
    * fix: crashing bug when shrank too much for scrollbars to be drawn
    * fix: couple system commands weren't redirecting their stderr to /dev/null

2/7/10 - version 1.3.1 (r21580)
Had enough of a siesta - getting back into development beginning with a rewrite if the starter.

    * added: made authentication a little smarter, using PROTOCOLINFO to autodetect authentication type and cookie location
    * change: made 'blind mode' (disables connection queries) a startup option rather than flag in source (request by Sebastian)
    * change: all log events (including arm) are now set via character flags, with TorCtl events log as their own toggleable type
    * change: starting log label with runlevel events, condensing if logging a range
    * change: simplifying command line parsing via getopt
    * fix: blind mode now prevents all netstats (including connection counts and halting resolver thread), improving performance

11/29/09 - version 1.3.0 (r21062)
Weekend bugfix bundle.

    * added: most commands can be immediately executed from the help page (feature request by arma)
    * fix: truncating header's version fields if too long (caught by hexa)
    * fix: file descriptor dialog now provides a wider variety of error messages in case of failure
    * fix: offset issue in connections listing when scroll bar was visible
    * fix: removing family connections from listing when control port is closed
    * fix: preventing TorCtl startup issues from going to stdout (duplicates warnings)

11/8/09 - version 1.2.2 (r20927)
This will be the last update for a while since I'm about to start a new job.

    * added: including family relays on connections listing
    * added: file descriptors dialog (stats and scrollable listing)
    * change: logs warning if torrc fails to load
    * fix: size and time labels used in torrc are expanded for validation
    * fix: duplicate torrc entries weren't being detected if not erroneous
    * fix: crashing issue when cleaning up hostname cache
    * fix: stretching connection lines to fill full screen

10/21/09 - version 1.2.1 (r20814)
Substantial bundle of changes including torrc validation, improved arm event logging, and numerous bug fixes.

    * added: verifies loaded torrc consistency against tor's actual state (gives warning and providing corrections)
    * added: checks for torrc entries that are irrelevant due to duplication (gives notices and highlights)
    * added: log provides TorCtl events (hack... so ugly...)
    * added: option for logging runlevel events of arm, tor, or both
    * added: ARM-DEBUG event for netstat query time
    * added: providing progress bar when resolving a batch of hostnames
    * change: providing prompt notice when tor's control port is closed
    * fix: limiting pre-loaded events to this tor instance
    * fix: limits log entries used to pre-load events (big logs caused issue with startup time)
    * fix: properly closing TorCtl when quitting (was occasionally screwing up terminal)
    * fix: at several points TorCtlClosed exceptions were uncaught, causing crashes when tor was closed
    * fix: netstat and geoip failures were being noisy when tor quits
    * fix: bug in tracking connection counts if tor quits when paused
    * fix: sighup wasn't resetting all relevant internal variables
    * fix: pausing bypassed connection sorting

10/16/09 - version 1.2.0 (r20798)
Resolving a few small issues that bugged me.

    * change: using log file to pre-populate events if available
    * change: asks for confirmation when quitting
    * change: provides warning when tor's descriptors won't be updated
    * change: event log now allows for multi-line messages
    * fix: occasional crashing error concerning connection cache when paused
    * fix: issue with tracking connection times when paused or not visible

9/28/09 - version 1.1.3 (r20678)
More issues discussed on irc.

    * fix: made netstat lookups a best-effort service, separate from draw thread (caught by arma and StrangeCharm)
    * fix: using ps as final fallback if otherwise unable to determine pid (suggested by Sebastian)
    * fix: appends tor's pwd if torrc path is relative (caught by arma)

9/27/09 - version 1.1.2 (r20674)
Few issues discussed on irc.

    * added: changelog and cleaned up todo documents (requested by arma)
    * added: option in controller.py to disable connection panel (feature request by Sebastian)
    * fix: failed to work on osx and bsd due to crashes after failed system calls (caught by Sebastian and Christopher Davis)
    * fix: reloading static data in bandwidth panel after HUP (caught by hexa)
    * fix: couple alignment issues with the connection listings

9/23/09 - version 1.1.1 (r20655)
Bundle of semi-low hanging fruit, including a few issues discussed on irc.

    * added: showing extra parameters in connection listings if room's available
    * added: identifying directory server connections
    * change: providing an error message if running an incompatible python version (issue spotted by arma)
    * change: giving arm a version to help in bug reports
    * change: minor tweak to the wording of a faq entry (requested by Sebastian)
    * fix: wasn't accounting for RelayBandwidthRate/Burst in effective bandwidth (caught by hexa and arma)
    * fix: timing issue when shutting down (caught by arma)
    * fix: couple issues with connection time being tracked when paused
    * fix: preserving old results when netstat fails

9/6/09 - r20493
Several substantial features (last tasks for arm's todo list).

    * added: scroll bars for connections listing and event log
    * added: made log scrollable (feature request by StrangeCharm)
    * added: regular expression filtering for log (feature request by StrangeCharm)
    * added: connection uptimes (time since connection was first made)
    * added: identifying client from server connections and providing popup for client circuits
    * added: graph for system resource usage (cpu/memory)
    * change: removed cursor toggling option for connection page
    * fix: minor display issue when changing event types

8/22/09 - r20354
Several fixes and changes, mostly concerning the graph panel and making better use of screen real estate.

    * added: labeled the graph's x-axis and reordered the information with changes omitted for small (tty sized) terminals (feature request by StrangeCharm)
    * added: doubling up contents of header panel in case of wide screens to take advantage of added space
    * added: exit policy to header if a wide display
    * change: added precision for bandwidth measurements
    * change: using "orconn-status" info to eliminated ambiguity in identifying inbound connection fingerprints (clever idea, but had very little impact)
    * fix: when sighup signal is received reloads torrc and internal state (caught by StrangeCharm)
    * fix: probable resolution of nasty concurrent bug concerning access to connection cache
    * fix: minor issues concerning connection panel including graph widths and miscalculating local maxima
    * fix: short circuits fingerprint cache when looking up localhost descriptor (preventing lookup failures)
    * fix: minor issues with connection panel and description popups when no connections are available
    * fix: descriptor popup wasn't determining if the first visible line belonged to an encryption block
    * fix: made interface more resilient against arbitrary resizing (such as during popups)

8/17/09 - r20331
Work done over this last week.

    * added: popup for raw consensus description
    * added: total bandwidth measurement (feature request by StrangeCharm)
    * added: connection entry for lookup of local consensus data
    * change: widened graphs to utilize full screen width (clever idea by StrangeCharm)
    * change: preserving runtime and pid when shutting down
    * change: few tweaks to the readme
    * fix: joining on worker daemon threads to exit gracefully (had a noisy race condition)
    * fix: using BW events to keep connection count graph in sync with bandwidth graph
    * fix: can now support graphs of multiple sizes

8/8/09 - r20233
Rewrote graph panel so it can handle any real time statistics.

    * added: option to graph connection counts (feature request by phobos)
    * added: custom graph bounds (global or local maxima)

8/4/09
Announced the project on the or-talk mailing list today which spurred an interview with Brenno Winter (who works on the cleverly named Little Sister project). The interview is available here.

8/3/09 - r20210
Added start of a faq to the readme in preparation for announcement on or-talk.

7/30/09 - r20198
Work done over the trip.

    * added: customizable update interval for bandwidth graph (feature request by StrangeCharm)
    * change: noted new project page in the readme (www.atagar.com/arm)
    * change: added word wrapping to conf panel
    * change: added function for custom popup menus
    * change: logs error message when required event types are unsupported rather than throwing an exception
    * change: using different screenshot images
    * fix: resolved issue that caused monitor to think tor was resumed when quit
    * fix: bug with panel utility's resize detection
    * fix: resorts connections after NEWDESC and NEWCONSENSUS events
    * fix: forgetting to to resume monitor at multiple points after a temporary pause
    * fix: minor refactoring based on suggestions from pylint (unused imports and such)

7/22/09 - r20115
Another small grab bag update.

    * added: version status to header panel
    * change: noted "Common *nix commands including: ps, pidof, host, and netstat" among requirements in readme
    * change: took some tricks from Mike's ConsensusTracker to further improve match rate
    * fix: type mismatch that greatly diminished fingerprint matching
    * fix: accidentally used idhash rather than idhex for fingerprints when updating cache with the contents of a NEWDESC event

7/21/09 - r20100
Quick fixes based on discussion on irc.

    * change: provides warning when geoip database is unavailable (thanks to SwissTorExit and karsten)
    * fix: missing import for the socket module

7/20/09 - r20096, r20097, r20098
Couple fixes so arm plays nicely in the case of multiple running tor instances.

    * fix: can now deal with multiple tor instances: checks pid of process with the open control port
    * fix: if only one tor process is running use that pid (netstat fails if running as a different user

7/19/09 - r20087, r20090
Last substantial feature on my to-do list.

    * added: connections can be selected to view consensus details (very spiffy!)
    * added: listing selection is by menu rather than cycling
    * fix: couple bugs, the most interesting being when netstat can't resolve a connections listing (spotted by phobos)

7/18/09 - r20078, r20079
Miscellaneous fix and feature batch.

    * added: relay's flags to the header
    * added: listing by relay nickname
    * added: additional event aliases and option for NEWCONSENSUS
    * added (phobos): screenshot of arm in action so people can see what it looks like
    * change: use constant "Listing" label for sorting rather than current view
    * change: removed 'reload torrc' option (deceptive and useless)
    * fix: updates cached consensus mappings with NEWDESC and NEWCONSENSUS events

7/14/09 - r20016
Resolved a few quick bugs:

    * fix: added fingerprint lookup cache to resolve substantial performance issue
    * fix: hostname resolution progress accounts for newly added entries (no more negative progress)
    * fix: resolved bug that prevented arm from starting if too small
    * fix: ordering issue when sorting unresolved ip addresses

7/11/09 - r19975
Connections panel can now list by IP, hostname, or fingerprint: reverse resolution was easy, but comparing three different implementations and making it non-blocking with a pausable thread-pool backend? Not so much.

7/8/09 - r19953, r19957
Just got back from Toorcamp. Preliminary connection page and miscellaneous additions.

    * added: basic connection listing page (using netstat results)
    * added: connection listing now has user configurable sort functionality (it's actually pretty spiffy: supports secondary and tertiary sub-keys)
    * added: 'addfstr' to util which allows for embedded formatting tags (VERY helpful)
    * added: help shows page's current settings
    * added: made bandwidth panel toggleable
    * added: avg bandwidth to bottom of panel
    * fix: prevented header from being paused on page change
    * fix: prevented bandwidth accounting events from being lost when paused

6/14/09 - r19716
Decently big batch of feature additions and bug fixes.

    * added: second page that presents torrc with syntax highlighting, optional comment stripping, etc
    * added: ps sampling (cpu/memory usage, pid, and uptime)
    * added: help popup with page controls
    * fix: corrected issue that caused periodic refreshing to fail
    * fix: accounting reset time takes into account DST
    * fix: make accounting input and header pausable

6/10/09 - r19708, r19709
Couple quick changes.

    * change: removed '--path-to-torctl' startup option
    * fix: accounting 'time to reset' now includes gmt to local conversion

6/7/09 - r19646, r19655, r19656
Couple features.

    * added: svn external inclusion of TorCtl
    * added: bandwidth panel now displays accounting data if set

6/6/09 - r19636, r19637
Quick change based on discussion on irc.

    * added: command line argument to specify location of TorCtl without changing Python path first (feature request by phobos)

6/5/09 - r19629
Substantial refactoring changes.

    * change: switched from a functional to an OO implementation which further simplified the controller: as an added plus this should make adding additional 'pages' trivial
    * change: offloaded resizing to the curses wrapper
    * fix: dealt with another curses wtf bug where panels wouldn't repaint unless done in a specific order

6/4/09 - r19626
Tested and corrected formatting for all event types except STREAM and STREAM_BW (not sure how to make those occur...).

6/2/09 - r19615, r19619, r19620
Introduced layer of abstraction from curses, simplifying its use and greatly improving reliability.

    * added: introduced wrapper to hide curses ugliness which greatly simplified interface code
    * added: notice when relay's been silent for five seconds (based on BW events so probably due to Tor being closed), another idea by karsten
    * changed: unchecked events have stubs to present information and provide debugging information in case of type mismatch
    * fix: all problems with resizing: it's now rock solid

5/29/09 - r19580, r19594
Fixes for several rather sinister reliability problems:

    * added: allows logged events to be changed while running (suggested feature by karsten) and experimenting with a more modular design
    * fix: added non-blocking reentrant locks to fix concurrency errors that caused chaotic terminal glitches (such as switching to a Chinese character set)
    * fix: now fully handles resizing (including vertical)
    * fix: using new capabilities in TorCtl including cookie authentication and disabling logging
    * fix: bandwidth graph bug when paused
    * fix: occasionally refreshes static content in case of graphical hiccups
    * fix: added workaround for obscure curses caching bug that prevented portions of the screen from being redrawn
    * fix: bug preventing initialization if too small

5/25/09 - r19567
Few small tweaks including:

    * added: tiny shell script to alias starting
    * added: more informative error message if TorCtl isn't available
    * change: defaultly logged events
    * change: make inclusion of 'unknown' events toggleable

5/24/09 - r19548, r19549, r19550, r19551
Initial version of arm (terminal relay status monitor). Repository set up by arma.

    * fix: bug concerning undefined exit policy
    * fix: resolved issue that prevented monitor from functioning in terminals without curs_set support


