File Release Notes and Changelog
Release Name: 0.1a1
Notes:
Niagara
Cocoa Bittorrent client for Mac OS X and C torrent library
Release 0.1 Alpha 1 (0.0.6) - 12/8/2007
(c) Ryan Walklin 2007
Niagara and its core library libniagara are released under the GPL. See COPYING for details.
Thanks for downloading Niagara! This is the second release of the Cocoa GUI client.
This release most notably adds:
• Peer Exchange (PEX) based on the uTorrent specification
• Queue and seed ratio support
• An advanced interface with file, peer and block status display
• Growl integration
• Sparkle automatic update support
• Numerous other fixes and enhancements
Check Roadmap.rtf for an overview of where Niagara is going.
The Cocoa client requires Mac OS X 10.4, and is a Universal Binary supporting both the PowerPC and Intel architectures.
Feedback
Mailing list: http://lists.sourceforge.net/mailman/listinfo/niagara-devel
Development blog: http://niagara.sourceforge.net
Known issues:
• There is no GUI support for queue management. You can alter the queue indirectly by pausing and resuming torrents till the desired order is attained.
• The animated torrent display does not render properly when multiple status changes occur quickly
• The download and upload limiter GUI does not function currently
Instructions - Binary (Universal) Cocoa Client
Download the disk image (Niagara-0.0.6.dmg) from niagara.sourceforge.net, then open it and drag Niagara to your /Applications folder.
Double-click Niagara to start it. Add new torrents or import partial downloads by clicking the Add Torrent button. Torrents can be paused and resumed using the Pause/Resume button on the right. When torrents are complete and you are finished seeding, click Remove Torrent to remove the torrent from the list.
Instructions - Source Code
After SVN checkout:
For the Cocoa GUI client:
Install the Apple Developer Tools
Open the Niagara.xcodeproj file in Xcode, and build with either the Debug or Release architectures.
(Note: even if you download the source tarball, Niagara requires an SVN installation to build)
Changes:
Release 0.0.6 - 12/8/2007
Client
• Fixed fast-resume data not being read on restart if torrent was inactive on exit.
• Implemented Preferences dialog based on DBPrefsWindowController 1.1.1 code by Dave Batton.
• Added conditional debug flag to prevent Debug Niagara builds from overwriting Release build torrent data.
• Improvements to tracker announce handling` when tracker is down or slow.
• Tidy up of preferences, all enabled preferences will be implemented in 0.0.6. Added preference placeholders for default download location, Growl integration, bandwidth management, and other future featureset improvements.
• Refactoring of context/array sync code.
• Added NDEBUG and NS_BLOCK_ASSERTION preprocessor flags to project to prevent assertions in release code.
• Altered status update code to prevent thread-unsafe code been called from worker threads
• Refactor active context detection code to increase robustness
• Fixed rare crash in UI update code and reduced CPU usage
• Added Sparkle Framework for autoupdate support.
• Added Growl Notifications.
• Number of interface improvements and performance enhancements
• DBPrefsController updated to 1.1.2
• Option to remove original torrents on load added and implemented
• Replaced inspector tab bar with PSMTabBarControl
• Added NSCell subclass for torrent status display - NGTorrentTableCell.h
• Display icon for torrent filetype in status display.
• Rewrite of tracker shutdown code on exit, no longer blocks
• Version string handling improvements, now logs SVN revision number in build for Sparkle compatibility
• Better torrent status display with progress bar based on CTGradient, time remaining display
• Queue support
• Growl after hash checking, queue events
• Added DFLog.,m Logging class by Adam Knight
• Fixed state restoring across session regression
• Improved visual representation of queue updates, creation of NGAnimatingTableView
• Massive memory leak in peer status code fixed (hurray!)
• Start moving internal context interface functions to private
• Added Block display to advanced interface
• Only respond to TableViewSelectionDidChange events for torrent grid (whoops...)
• More efficient block selection algorithm, assigns up to 3 peers per block before allocating new block (if peers have block)
• Fixed occasional bug where pause button was disabled on start
• Fixed reregister timer not getting reset if we had reached the soft connection limit
• Added soft (won't initiate outgoing connections) and hard (won't accept incoming connections) peer limits
Library
• Fixes to tracker code to mirror client fixes
• Additional sanity checks for peer connections
• Initial extended message and PEX (peer exchange) support
• Fixed error when tracker response received for torrent not in context
• Improvements to hash checking code - fixed regression, now correctly skips over missing files
• Increased MAXCONN to 200 in line with other clients, added TORRENT_MAXCONN 60 to prevent well-seeded torrents having excessive connections
• Further enhancements to PEX code, now able to send accurate dropped peer messages, update client ID and use listen port if given by PEX-enabled client, and cache peers locally
• Refactor PEX to peerexchange.c, sent libbt patch to ksmathers
• PEX cache bugfix to correctly handle btPeerAddress array.
• Resync Niagara with version 1.06pre of libbt, thanks to Kevin Smathers.
• Support for UDP trackers and multitracker courtesy of libbt 1.06 code
• Revert to libcurl for tracker announce
• Massive refactoring of Torrent class, renamed to NGTorrent and optimised for KVC/KVO
• Logging improvements
• Framework for transfer logging and bandwidth throttling
• Don't Growl if we're just resuming seeding
• Torrent.m sets download directory correctly
• Ratio limit support, download rate limit support
• Framework to identify peers sending bad data