Nightly builds of upcoming 2.8

Nightly builds of the upcoming 2.8 release are available (r2981). Changes include a new SSH library including the support for SCP transfers, transfer throttling, automatic reconnection on network failures, limiting the number of concurrent transfers and an outline view to browse the folder hierarchy in the overwrite warning and synchronizsation dialogs. Give it a try and report any problems.

Update: The latest build is 3084.

Cyberduck 2.7.3

  • [Bugfix] Problem parsing PASV response from some servers (FTP) #779, #869]
  • [Bugfix] Stalls when connection is interrupted during DNS lookup #960]
  • [Bugfix] Improved sorting in ‘Kind’ browser column #993]
  • [Bugfix] Renaming files using Info panel causes repeated renaming #1005]
  • [Bugfix] Uploading folders interrupts file transfer (SFTP) #1001]
  • [Bugfix] Preference for auto-open delay for spring-loaded folders not saved #633]
  • [Bugfix] Preference to open new browser window on launch not used #997]
  • [Bugfix] Symbolic links on local filesystem not handled properly [#995]
  • [Bugfix] Send creation time of file with UTIME [#–]
  • [Feature] Clear command in History menu [#648]
  • [Feature] Preference to exclude files from transfers using regular expression [#511]

In the news.

Usually Cyberduck is featured in the nowadays popular I use these 10 OS X applications blog entries which thrills me, but this one is different: Elliotte Rusty Harold has written an article published at IBM developerworks titled Java 2007: The year in preview.
First, I had to think of myself when I read of the “(…) satisfied IntelliJ IDEA users will continue to wonder what all the fuss is about [the competition between Netbeans and Eclipse], confident in their belief that it’s the best Java IDE available. (…)” and secondly I was delighted if not proud to see the name of my own little software engineering effort appear in the Client GUIs section which reads “(…) Although many people haven’t noticed, the Java platform has been a real presence on the desktop for four or five years now. More than a few quality desktop applications have been written in Java code, including RSSOwl, Limewire, Azureus, Eclipse, NetBeans, Cyberduck, and others. These applications are written in nearly every GUI toolkit available including Swing, AWT, SWT, and even platform-native toolkits such as Mac OS X’s Cocoa. (…)“. Read the full article here.

Hidden Option

As of Cyberduck 2.7.2, there is a new hidden preference to display the items in the bookmark drawer using less screen real estate. Only the bookmark’s nickname is displayed and the row is about one third as usually height. To enable open a Terminal.app window and enter defaults write ch.sudo.cyberduck browser.bookmarkDrawer.smallItems true. Relaunch Cyberduck.

Cyberduck 2.7.2

  • [Feature] Option to use single connection for browser and transfers [#57]
  • [Feature] Option to remember open browser windows and reconnect upon relaunching the application [#59]
  • [Feature] Delay for spring-loaded folders can be set [#633]
  • [Feature] Calculate size of directory [#5]
  • [Feature] Duplicate files using option-drag [#150]
  • [Feature] Per bookmark setting for download folder [#158]
  • [Feature] Per bookmark setting to use single connection for browser and transfers [#–]
  • [Feature] Kind column in browser describing file type [#46]
  • [Feature] Advanced settings in connection and bookmark window in disclosable view
  • [Feature] Added PageSpinner to the list of supported editors (http://www.optima-system.com/pagespinner) [#205]
  • [Bugfix] Disconnecting in the background not blocking the user interface [#–]
  • [Bugfix] Folders marked as inaccessible after timeouts and cannot be opened after reconnecting [#611]
  • [Bugfix] Applescript/Dashboard should not use seperate session for transfers [#–]
  • [Bugfix] Cannot write to group writable files (SFTP) [#173]
  • [Bugfix] File length is set to zero if updating permission fails (SFTP) [#974]
  • [Bugfix] Directory listing is not refreshed when upload is completed after “Try Again” [#982]

Cyberduck 2.7

  • [Feature] Don’t block user interface when working in browser. All potentially lengthy operations are now performed in the background [#921]
  • [Feature] All (possibly stalled) operations in progress can be interrupted [#943]
  • [Feature] Improved error handling [#–]
  • [Feature] Failed network operations can be repeated [#–]
  • [Feature] A default bookmark can be configured [#915]
  • [Feature] Option to disable spring-loaded folders [#98]
  • [Feature] Individual settings how to treat duplicate files on uploads and downloads [#500]
  • [Feature] Callback to alternate connect mode upon failure (FTP) [#83]
  • [Feature] Add ‘Download To…’ menu option to download multiple files into designated, non-default directory [#909]
  • [Feature] The bottom of the browser window shows the security status [#9]
  • [Feature] Improvements to the AppleScript dictionary [#737], [#918], [#878], [#922]
  • [Feature] When duplicating files, propose a filename containing the current date and time [#912]
  • [Feature] Added JarInspector to the list of supported editors (http://www.cgerdes.com) [#–]
  • [Bugfix] Honor the existing permissions when replacing files [#–]

Cyberduck 2.7.1

  • [Localize] Portuguese Localization
  • [Bugfix] Reporting error about failed to set permissions whereas it actually succeeded [#–]
  • [Bugfix] Fail gracefully on uploading when server doesn’t support changing permissions [#–]
  • [Bugfix] Disconnecting from server could crash application shortly thereafter [#–]
  • [Bugfix] Outline view not updated after dragged files have been uploaded [#–]
  • [Bugfix] Synchronisation not awaiting selection from user [#–]

Cyberduck Bounty

Since I have included Uli Kusterer’s Crashreporter in Cyberduck, there have been many reports sent in. Some of them made me aware of problems and bugs got fixed. However, there are some crashes, I cannot track down:

Thread 0 Crashed:
0 libjvm.dylib 0x9c18683c JVM_MonitorWait + 12492
1 libObjCJava.A.dylib 0x971a4b48 __JAVAMethodInvoke + 264
2 libObjCJava.A.dylib 0x971a4dc8 JAVAMethodInvokeBoolean + 52
3 libObjCJava.A.dylib 0x971aaefc _NSInvokeJavaMethod + 1020
4 libObjCJava.A.dylib 0x971a72f8 _BRIDGEMethodImp + 152
5 com.apple.AppKit 0x937e794c -[NSMenu _populate:] + 516
6 com.apple.AppKit 0x937e73a4 AppKitMenuEventHandler + 512
7 com.apple.HIToolbox 0x931ea554 DispatchEventToHandlers(EventTargetRec*, OpaqueEventRef*, HandlerCallRec*) + 692
8 com.apple.HIToolbox 0x931e9cac SendEventToEventTargetInternal(OpaqueEventRef*, OpaqueEventTargetRef*, HandlerCallRec*) + 372
9 com.apple.HIToolbox 0x931e9b28 SendEventToEventTargetWithOptions + 40
10 com.apple.HIToolbox 0x932832d4 SendMenuPopulate(MenuData*, OpaqueEventTargetRef*, unsigned long, double) + 212
11 com.apple.HIToolbox 0x9329c1d0 PopulateMenu(MenuData*, OpaqueEventTargetRef*, CheckMenuData*, unsigned long, double) + 28
12 com.apple.HIToolbox 0x9329c150 Check1MenuForKeyEvent(MenuData*, CheckMenuData*) + 104
13 com.apple.HIToolbox 0x9329c5fc CheckMenuItemsForKeyEvent(MenuData*, CheckMenuData*, unsigned long, bool*) + 1012
14 com.apple.HIToolbox 0x9329c164 Check1MenuForKeyEvent(MenuData*, CheckMenuData*) + 124
15 com.apple.HIToolbox 0x9329ba24 CheckMenusForKeyEvent(MenuData*, CheckMenuData*) + 564
16 com.apple.HIToolbox 0x9329b774 IsMenuKeyEvent(MenuData*, OpaqueEventRef*, unsigned long, MenuData**, unsigned short*) + 564
17 com.apple.HIToolbox 0x9329b4f8 IsMenuKeyEvent + 140
18 com.apple.AppKit 0x9378d58c _NSGetMenuItemForCommandKeyEvent + 300
19 com.apple.AppKit 0x936f157c _NSHandleCarbonMenuEvent + 496
20 com.apple.AppKit 0x936eee64 _DPSNextEvent + 1280
21 com.apple.AppKit 0x936ee7a8 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 116
22 com.apple.AppKit 0x936eacec -[NSApplication run] + 472
23 com.apple.AppKit 0x937db87c NSApplicationMain + 452
24 ch.sudo.cyberduck 0x00001f30 _start + 340 (crt.c:272)
25 ch.sudo.cyberduck 0x00001dd8 start + 60

This looks completly obscure to me. It might be some concurrency issue in the menu delegate code (e.g. in the BookmarkMenuDelegate (line 160), HistoryMenuDelegate (line 218) or RendezvousMenuDelegate (line 283) of CDMainController. Or not. It might be a completly different issue I am unaware of or it might be a bug I can’t even fix myself but is in closed code from Apple (I have filed radar://4784618). Any ‘diff’ sent to me resolving the crash gives a bounty (using Paypal) of 100$. You can check out the Cyberduck source code from the Subversion repository.