Cappuccino Changelog

What's new in Cappuccino 0.9.9

Apr 2, 2016
  • WHAT’S NEW:
  • Highlights in this release:
  • New: ability to localize a Cappuccino app using standard methods.
  • New: CPUserNotification and CPUserNotificationCenter support.
  • New: CPCache support.
  • New: CPTrackingArea support.
  • New: draw in high DPI (Retina drawing) when using canvas2D.
  • New: XcodeCapp 4.0.
  • New: capp_env virtual environments support.
  • New: abstract library for Cucapp.
  • New: runtime method binding for Objective-J (speed improvement of 20%).
  • New: CPAppearance and CPVisualEffectView support.
  • Optimization of the CPTableView.
  • FOUNDATION AND CORE:
  • (630aa53) New: CPCache has been added to Foundation.
  • (58afc92) New: timeout and cache feature in CPURLRequest.
  • (806be95) New: CPURLConnectionDelegate protocol.
  • (8809c16) New: CPURLConnection +sendAsynchronousRequest:queue:completionHandler:.
  • (ce8f8c0) New: CPNotificationQueue.
  • (686f931) New: ability to localize a Cappuccino application. An app can be localized through strings and cibs. The language to use is selected from the browser or from the Info.plist.
  • (e172217) New: CPArray -arrayByApplyingBlock:.
  • (cbc653b) Cappuccino now supports the KVC operators unionOfObjects, distinctUnionOfObjects, unionOfArrays, distinctUnionOfArrays and distinctUnionOfSets.
  • Bug Fixes:
  • (8599ad4) Fixed: the init method CPArray initWithObjects:count: did not work on a native CPJavascriptArray when the argument count was different than the length of the provided array.
  • (912930) Fixed: CPDictionary -initWithObjectsAndKeys: and CPDictionary -initWithObjects:forKeys: were not compliant with Cocoa when duplicated keys were passed to the method.
  • (3e29732) Fixed: the parameter queue of the method CPNotificationCenter -addObserverForName:object:queue:usingBlock: was ignored. It now creates a new operation and adds it to the given queue if needed.
  • (04f8545)(0508b70) Fixed: incompatibility with Internet Explorer 10. The withCredentials property is now set after the XMLHttpRequest has been opened.
  • (b59b025) Fixed: CPDateFormatter did not work with the symbols MM and LL for the month of December.
  • (ea644a2) Fixed: CPObjectController -setValue:forKey: incorrectly used the key as the value.
  • (ec55bdd) Fixed: not throw exception if plist is not valid. It will return nil instead.
  • APPKIT:
  • (14349cb) New: CPPlatformWindow -initWithWindow. This feature allows you to manipulate a CPPlatformWindow through the given CPWindow, which is easier than regular platform window manipulation.
  • (4d7cb06) New: the theme attributes image-search-inset and image-cancel-inset have been added for CPSearchField.
  • (51bdfa4) New: the protocol CPScrollViewDelegate has been added for CPScrollView.j.
  • (7b4365b) New: added the delegate method windowWillResize:toSize: for CPWindow.
  • (737ef58) New: added the delegate methods windowDidMiniaturize:, windowWillMiniaturize: and windowDidDeminiaturize: for CPWindow.
  • (0dad10d) New: send the CPAppKitDefined notification when the application is launched.
  • (57b6888)(899bbc2)(0d17757) New: indeterminate spinning CPProgressBarIndicator.
  • (bdbf1fb) New: added the property baseWritingDirection to CPControl. This allows you to write from left to right or right to left.
  • (3a6a849) New: CPUserNotification and CPUserNotificationCenter.
  • (3f9f92) New: CPPlatform +closeAllPlatformWindows. This method is called when reloading or closing the Cappuccino application. The method closes every platform window opened in the application.
  • (058a73) New: delegate methods applicationShouldTerminate and applicationShouldTerminateMessage for the CPApplicationDelegateProtocol.
  • (ab61aef) New: CPVisualEffectView and CPAppearance.
  • (2f79b07) New: default system menu is now disabled for right click, except for a right click on a CPTextField.
  • (448c2a2) New: speed up app loading by creating the DOMCanvas only if CPView -drawRect: or CPView -viewWillDraw are overridden, and do it lazily (on the first viewWillLayout).
  • (448c2a2) New: (private API) CPView viewWillLayout and CPView viewDidLayout.
  • (1fe1e6f) New: ability to more widely theme AppKit. In particular CPColor alternateSelectedControlColor and related CPColor fields can now be themed.
  • (d5f38fe) New: CPRunLoop -performBlock:argument:order:modes:.
  • (932b82)(770d5e) New: CPTrackingArea.
  • (a2c0b47) New: the graphical CPDatePicker now disallows dates outside of the specified minDate and maxDate.
  • (2d474cc) New: by default, Cappuccino now draws in high DPI when using canvas2D. You can disable this feature globally using the method CPView +setAllowsHighDPIDrawing:.
  • (c04d3b2 ) New: CPView -setNeedsLayout: and CPView -needsLayout have been added. This makes it possible to choose not to lay out a view when needed, whereas previously once a layout had been scheduled it would always occur.
  • (1c9e9da) New: CPTableView -viewAtColumn:row:makeIfNecessary.
  • Bug Fixes:
  • (eca9590) Fixed: CPTableColumn’s binding documentation was not clear.
  • (b16b838) Fixed: CPSearchFields were not properly aligned when coming from a xib.
  • (7c09517)(2b853df) Fixed: CPSegmentedControl -widthForSegment: and CPSegmentedControl -frameForSegment: did not return the correct value when using CPSegmentedControl -sizeToFit. The selectedSegment variable is now correctly updated.
  • (027a317) Fixed: memory leaks with tooltips in CPView. This was due to handlers not being released.
  • (1dc0601) Fixed: closing a CPPlatformWindow did not close its main CPWindow.
  • (cf92fb9) Fixed: CPComboBoxes were not properly aligned when coming from a xib.
  • (f2c5515) Fixed: CPTableView -reloadData caused an extra run loop perform.
  • (6aece1c) Fixed: the default template generated by the command capp gen -t ThemeDescriptor was slightly non-standard compared to that of Aristo 1 and Aristo 2.
  • (98d0a39) Fixed: in CPTableView, clickedRow and clickedColumn did not behave like in Cocoa outside of the scope of a mouse event.
  • (44c686f) Fixed: the method CPView -scrollRectToVisible: did not behave like in Cocoa.
  • (914a3d7) Fixed: the height of a CPSegmentedControl brought in via nib2cib was incorrect.
  • (10792c0)(01ba6dd)(fd06844) Fixed: the keyWindow and mainWindow of the application were not updated when switching from a platform window to another one.
  • (9798b9f) Fixed: the overflow of a CPPlatformWindow was not clipped; it was possible to scroll a platform window.
  • (769b379) Fixed: a CPPopover closed itself even on a click in another platform window.
  • (6efe563) Fixed: the private method CPEvent -_initOtherEventWithType:location:modifierFlags:timestamp:windowNumber:context: did not save the windowNumber provided.
  • (0dad10d) Fixed: notifications willBecomeActive: and didBecomeActive: were called even if the application was already active. These notifications are now also sent when the application just finished launch.
  • (5c2e093) Fixed: notifications willBecomeActive:, didBecomeActive:, willResignActive:, didResignActive: were not sent when the application focus was lost or gained.
  • (da15cc4) Fixed: the nextValidKeyView calculated by Cappuccino in a CPScrollView did not behave as in Cocoa. It didn’t take the scroll position into consideration.
  • (da15cc4) Fixed: a CPTextField could not become first responder when not visible.
  • (136138d) Fixed: incorrect CPTextField first responder resignation behavior for a non key window CPWindow.
  • (65a379c) Fixed: the textual CPDatePicker did not respect the English format.
  • (f822268) Fixed: memory leaks in CPSplitView when using a delegate.
  • (a7b6010) Fixed: CPScrollView -documentVisibleRect did not return the expected result when the document view was scaled.
  • (9694c7) Fixed: CPButton -sizeToFit was broken when calling the method with a new title or a new image.
  • (d6b0fc)(d1e31d) Fixed: when selecting a label through a right click, its selectable state was not taken into consideration.
  • (6fe9da)(923d32) Fixed: AppKit unit-tests were not stand-alone.
  • (5cd25e2) Fixed: type of boolean values lost when parsing a CPPredicate format.
  • (6420a51) Fixed: crash when a cell-based CPTableView contained a data view that contained an editable CPTextField.
  • (655bc39) Fixed: CPPopovers were blinking in Chrome and Opera.
  • (c9e83e0) Fixed: slow drawing on non-retina resolutions due to needless identity transform.
  • (3fcc37e) Fixed: CPTabView did not accept the first mouse event when the CPTabView was in an unfocused window.
  • (7a0b2c9) Fixed: crash with the CPRuleEditor when dragging the first row.
  • (4ac6395) Fixed: CPToolTip did not work in an external CPWindow.
  • (448c2a2) Fixed: view based CPTableView broken after the CPAppearance feature was added.
  • (448c2a2) Refactoring: CPAppearance and CPVisualEffectView.
  • (526181a) Fixed: CPImage -size returned internal object ref.
  • (d5b90c9) New: CPTabView improvements. The methods CPTabViewItem -tabViewItemWithViewController: and CPTabViewItem -setImage: have been added. New bindings options (CPContentBinding - CPSelectedIndexBinding - CPSelectionIndexesBinding) have been added to CPTabView.
  • (d5b90c9) Fixed: CPTabView -insertTabViewItem:atIndex:.
  • (c30f8b0) Fixed: warning when compiling AppKit.
  • (40a9f19) Fixed: crash when a new CPPlatformWindow was blocked by the browser when opening (e.g. by a popup blocker).
  • (f062fda) Optimization: CPView -layoutSubviews and CPView -viewWillLayout.
  • (b04e576) Tests: new unit tests for the method CPString -stringByReplacingCharactersInRange:.
  • (d4b1680) Fixed: copy and paste did not work properly in a new CPPlatformWindow.
  • (d5f38fe) Fixed: timing key responder issue when a CPTextField became the first key responder.
  • (b929a8f) Fixed: cib performances improved through a better way to handle CPThemeAttribute. Speed improvements of up 20% when loading a cib.
  • (5e94aaa) Fixed: default selection of a CPTabView didn’t not work.
  • (0bc02de) Fixed: CPBundle +loadCibNamed:owner: was asynchronous instead of synchronous.
  • (78e29d2) Fixed: cursor position of a CPTextField was wrong when the CPTextField became the first responder.
  • (e214bf3) Fixed: refactored CPString -charPositionOfString:withFont:forPoint:.
  • (411a282) Fixed: manual test SmartFoldersDemo fixed.
  • (0ac0845) Fixed: subquery expressions containing variables of a CPPredicate were ignored.
  • (912fdea) Fixed: new manual test for CPTabViewBindings.
  • (5ec5198) Fixed: added a manual test to check the behavior of a CPSplitView divider when having one view.
  • (8908fb7) Fixed: view hierarchy was not updated while processing events and using the CPTrackingArea.
  • (2dda326) Fixed: CPRadioButton cropped in the manual test Theme Kitchen Sink.
  • (8403e36) New: Theme Kitchen Sink test looks better.
  • (5d88d07) Fixed: CPPredicate’s predicateFormat with a CPNull value as right expression wasn’t working.
  • (96ae3da) Fixed: replace loops with CPArray -arrayByApplyingBlock:.
  • (4f13df6) Fixed: some manual tests were broken.
  • (f2528b5) Changed the name of the method CPDomDisplayServerSetStyleBackgroundSize to CPDOMDisplayServerSetStyleBackgroundSize.
  • (63f634a) Fixed: unreachable code in CPDOMDisplayServer.h.
  • (02f301d) Fixed: the CPStepper class initializer methods returned an object of type id instead of CPStepper.
  • (f9ce1d1)(01e69ce)(a2b38c8)(d50df6a)(cec746d)(71c0ba6) The CPTableView class has been refactored and optimized. The methods CPTableView -preparedViewAtColumn:row: and CPTableView -enumerateAvailableViewsUsingblock: have been added.
  • (ee688d9) Fixed: theme showcase didn’t work.
  • (187a017) Fixed: duplicated unit tests.
  • (c0a2da4) Fixed: CPDatePicker will now raise CPInvalidArgumentException if given an invalid date.
  • (7c4cdef) Fixed: wrong divider color of a CPSegmentedControl.
  • (7c60ffa) Fixed: CPPopover didn’t update its position when the frame of one of its superviews changed.
  • (9cb3eef) Fixed: when the auto-complete menu for a CPTokenField was open, the enter key was not consumed by the menu but forwarded to the application.
  • (8f11917) Fixed: race condition when editing a CPTextField in a CPTableView.
  • OBJECTIVE-J:
  • (8c2f0ba) Optimization: runtime methods objj_msgSend, objj_msgSendSuper and objj_method are now faster. Arrays and dictionaries use more efficient code. This improves app speed by up to 20%. New: ability to inline functions when compiling with the option -O2 or the compiler flag InlineMsgSend. * (751e76b) New: include type signatures by default when compiling an Objective-J file. This can be disabled by removing the compiler flag IncludeTypeSignatures or compiling with the -T option. * (751e76b) New: runtime methods method_copyReturnType, method_copyArgumentType and method_getNumberOfArguments. * (4b81e0d) Some AppKit speed improvements through the use of the new objj_msgSend in some places including CPTableView and CPWindow.
  • XCODECAPP:
  • (47611b7)(d317744)(340d827) New: XcodeCapp 4.0.
  • Bug Fixes:
  • (5457ddb) Fixed: XcodeCapp ignored the resources folder.
  • (2b17e17) Fixed: XcodeCapp did not ignore its own xib when the XcodeCapp folder was in a Cappuccino project.
  • (671ed3c)(bacb701) Fixed: memory leaks in XcodeCapp.
  • (2b17e17) Fixed: reload the operations and errors table views only when they are visible in XcodeCapp.
  • (f41504c)(51a88a2) Refactored: do not use Lumberjack in XcodeCapp anymore.
  • (50d7e8d) Fixed: typos and grammar in XcodeCapp.
  • (50d7e8d) Fixed: uneven margins and spacing in XcodeCapp settings.
  • NIB2CIB:
  • Bug Fixes:
  • (2f5e7f3) Fixed: nib2cib failed when having a custom formatter in a cell.
  • (0326b7d)(00bdbcf)(d527139) Fixed: nib2cib failed when having a CPTableView in a CPBox.
  • (808591d) Fixed: CPObjectController didn’t get entityName and lazyFetching attributes from the xib/cib file.
  • MISC:
  • (06c5976) New: added the tool objj2objcskeleton. This tool converts an Objective-J files to a basic Objective-C file containing an interface representing the original file.
  • (a0277ab) New: added the option -x (alternatively --xml) to objj. This option allows you to specify the output format of objj to be XML.
  • (245da9b)(0f62926)(c9f391d) New: capp_env has been added to Cappuccino. This tools allows you to create virtual environments for Cappuccino.
  • (3f88e02) New: -n option added to objj2objcskeleton. This option allows you to specify the name of the generated file.
  • (d358f0) New: the XML output format of the command objj now has the key sourcePath instead of path.
  • Bug Fixes:
  • (5bba109) Fixed: “too many open files” error when compiling an app or Cappuccino itself using jake. Jake now properly closes files when done with them.
  • (8cc075) Fixed: objj2objcskeleton did not transform Objective-J categories.
  • (0e4136) Fixed: the --xml option for the objj command did not output every error in XML.
  • (3d79799) Fixed: Cappuccino installation as a whole failed if XcodeCapp build failed.
  • (662db00) Fixed: build in directory with a space in the path would fail.
  • OJTEST:
  • (964fc8b) New: the method verifyThatAllExpectationsHaveBeenMetInOrder: has been added to OJMoq. This method allows you to check if certain registered methods are called in order.
  • (7c47306) New: the option -x to stop the suite of tests when a test fails.
  • (d19e968) New: jake install will update OJTest on your system.
  • (f8c73aa) New: OJTest raises a warning when a test method has already been declared in the same test class.
  • Bug Fixes:
  • (09de5a2) Fixed: counting of a selector with OBJMoq and OJMockSpy worked incorrectly if set up multiple times with different arguments.
  • (f799634) Fixed: attribute names were used directly instead of through runtime functions.
  • (def9006) Fixed: CPRunLoop was not called at the end of every tests.
  • (522fcdf) Fixed: duplicated unit tests.
  • (1f6cc19) Fixed: the coverage option wasn’t working.
  • CUCAPP:
  • (986db18) New: nodes backgroundColor, textColor and borderColor in generated XML.
  • (af4fbc7) New:-simulateScrollWheelOnPoint:.
  • (b432bd2) New: Cucapp now generates an error message for every Objective-J exception caught.
  • (e0f276e) New: jake install for Cucapp. The command will install Cucapp in narwhal and the gems required (Cucumber, Thin, Nokogiri, Launchy and JSON).
  • (e0f276e) New: added the command cucapp. This command allows you to create a testing architecture in your Cappuccino application. The architecture provides a new command jake cucumber-test, creates a soft link to where Cucapp is installed and creates every file needed to create Ceucumber tests.
  • (27f03e4) New: Cucapp now uses watir-webdriver as support for the browser.
  • (a12e068) New: environment variables WATIR_CHROME_DRIVER and WATIR_CHROME_SWITCHES to configure watir for Chrome.
  • (61b1906) New: files CPResponder+CuCapp.j and CuCapp+Record.j are now copied to the targeted folder when using the cucapp command.
  • (7f830c1) New: Cucapp now dispatches DOM events to the main document instead of sending events to the CPApp.
  • (8075435) New: default steps such as clicking, hitting a key and checking a CPControl value in test_application_steps.rb.
  • (8075435) New: environment variables BROWSER_SIZE_WIDTH and BROWSER_SIZE_HEIGHT to specify the size of the browser when testing.
  • (3472386) New: possibility to create screenshots from Cucapp.
  • (10b3ff2) New: support for phantomjs.
  • (30786c5) New: abstract layer of steps. These steps can be used to quickly and easily write tests in Cucumber. They are totally abstract and can be used for every Cappuccino application. They provide an API to simulate any action a user could perform and to check values in the application.
  • (b172e5a) New: the environment variable CAPP_INSTALL_DIR can be used to specify where Cucapp should be installed when using jake install.
  • (76551a5) New: Ruby methods to generate mouse up and down events.
  • (76551a5) New: the environment variable BROWSER_FULL_SCREEN can be set to have the browser in full screen when testing.
  • (a7b6fa1) New: added a sleep of 5 ms between every keyboard event generated by Cucapp.
  • Bug Fixes:
  • (a266833) Fixed: the command simulateScrollWheel: did not work in a CPScrollView.
  • (e07bc84) Fixed: the command simulateScrollWheel: did not return a result.
  • (01b7ddc) Fixed: methods textFor: and objectValue did not return the string value of a CPPopUpButton.
  • (e93d795) Fixed: CPWindows of the application not all closed when the test was over.
  • (fa281e8) Fixed: CPRunLoop was not called between every event simulated.
  • (76551a5) Refactoring of the class Encumber. Drag and drop events were generated from the Cappuccino side. They are now generated from the Cucumber side instead.
  • (a87e514)(531645a) Fixed: it wasn’t possible to launch the tests other than on port 3000.
  • (1854fd2) Fixed: the document used to dispatch the events generated by Cucapp could be null.
  • (1854fd2) Fixed: installation of gems could not be completed due to permission.
  • (74a7a3c) Fixed: documentation about how to install phantomjs has been added to the documentation.
  • (bfd7537) Fixed: style in cappuccino_mappings.rb.
  • (0f2fb70) Fixed: extraneous note about PhantomJS in the Readme.
  • (feedf75) Fixed: Cucapp imported . This could raise exceptions when testing a compiled application.
  • (111c56f) Fixed: The Cucapp’s CLI now logs informations when clicking on a CPView.
  • OTHER CHANGES:
  • (a439688) Fixed: private variables were shown in Cappuccino’s documentation.
  • (6b4a1b) New: added the Gitter chat link to the README.
  • (c468440) Fixed: tutorials have been updated with the latest features of XcodeCapp, Safari and Objective-J.
  • (5e3fe13) New: added Twitter account to the README.

New in Cappuccino 0.9.8 (Apr 17, 2015)

  • News:
  • New: CPCache has been added to Foundation. (william57m - 630aa53)
  • New: CPPlatformWindow -initWithWindow. This feature allows you to manipulate a CPPlatformWindow through the given CPWindow, which is easier than regular platform window manipulation. (Dogild - 14349cb)
  • New: the theme attributes image-search-inset and image-cancel-inset have been added for CPSearchField. (Dogild - 4d7cb06)
  • New: the protocol CPScrollViewDelegate has been added in CPScrollView.j. (Dogild - 51bdfa4)
  • New: CPSegmentedControl performance has been improved.
  • Changes/Fixes:
  • Fixed: CPTableColumn’s binding documentation was not clear. (daboe01 - eca9590)
  • Fixed: CPSearchFields were not properly aligned when coming from a xib. (t00f - b16b838)
  • Fixed: CPSegmentedControl -widthForSegment: and CPSegmentedControl -frameForSegment: did not return the correct value when using CPSegmentedControl -sizeToFit. The selectedSegment variable is now correctly updated. (cacaodev - 7c09517 2b853df)
  • Fixed: memory leaks with tooltTips in CPView. This was due to handlers not being released. (primalmotion - 027a317)
  • Fixed: closing a CPPlatformWindow did not close its main CPWindow. (primalmotion - 1dc0601)
  • Fixed: CPComboBoxes were not properly aligned when coming from a xib. (Dogild - cf92fb9
  • Fixed: CPTableView -reloaData caused an extra run loop perform. (Dogild - f2c5515)
  • Fixed: the default template generated by the command capp gen -t ThemeDescriptor was slightly non-standard compared to that of Aristo 1 and Aristo 2. (Dogild - 6aece1c)
  • Fixed: in CPTableView, clickedRow and clickedColumn did not behave like in Cocoa outside of the scope of a mouse event. (Dogild - 98d0a39)

New in Cappuccino 0.9.7 (May 10, 2014)

  • Highlights:
  • Objective-J 2.0: dictionary literals, array literals, pass by reference and protocols.
  • Compiler rewritten from ground up to generate faster than ever Cappuccino application code.
  • Aristo 2 - a new, lighter Cappuccino theme made by Sofa.
  • Native browser copy and paste support.
  • Scalable CPView ('zoom in' or out within a view and all its subviews).
  • Multiple-value bindings support.
  • Lion style “view based” CPTableView. While Cappuccino already supported view based table views, this new API matches Cocoa's and allows more convenient table customisation in Interface Builder and easier use of bindings (such as when binding a custom table cell view to a key of the row data).
  • XcodeCapp 3 featuring a much smoother experience with project history, speed and robustness improvements and throughout better UI.
  • CPDatePicker.
  • CPLocale.
  • - CPObject performSelector:withObject:afterDelay:.
  • CPError.
  • CPByteCountFormatter.

New in Cappuccino 0.9.6 (Jul 8, 2013)

  • Highlights:
  • CPComboBox.
  • Resize windows from any edge.
  • Automatic column sort support for bindings and array controller based table views, without having to manually set up sort descriptors.
  • CPTokenField autocomplete improvements.
  • CG clipping with a bezier path and a number of other drawing improvements.
  • Doc modal sheets and generally improved sheet support.
  • Support for many more CPButton types and options.
  • Foundation and Core:
  • (4684856) New: improve describe format of CPDictionary and CPArray to be more like literals. E.g. a dictionary is expressed as @{key1: value1}, an array like @[value2, value2], a string like @“”.
  • (eb2bb24) New: added support for CPNumberFormatterPercentStyle in CPNumberFormatter.
  • (797bfee) New: implement CPPointInRect. This improves source code compatibility with Cocoa when replacing NS with CP.
  • (7485c4e) New: -CPHTTPURLResponse allHeaderFields. When a CPURLConnection response is of the CPHTTPURLResponse type, the raw HTTP headers can now be retrieved through the allHeaderFields message.
  • (821961f) New: argument check CPIndexSet indexSetWithIndex:. Without this check, an index set could be initialised with NaN which would later lead to an infinite loop when enumerating the index set. This error makes the error early and explicit.
  • Bug Fixes:
  • (77955f4) Fixed: setTimeout(f) did not work for some JS libraries such as PDF.js when running in a Cappuccino context.
  • (8e16e62) Fixed: fix a bug where CPURL was not encoding self.baseURL and self.string.
  • AppKit:
  • (f535a6a) New: minor CPTabView optimisation.
  • (b577644) New: significantly optimise CPToolbar validation.
  • (7264692) New: optimise CPSegmentedButton setEnabled:forSegment:.
  • (632fba9) New: null check when laying out columns in CPTableView.
  • (a337bc2) New: reduce number of divs used by typical apps by something like 2.7%.
  • (3fd8d3e) New: - CPTableView clickedColumn.
  • (a70bc7d) New: “Creates Sort Descriptors” CPTableColumn value binding option. With this option an array controller driven table view can be sorted by clicking the table column headers without manually setting up sort descriptor prototypes.
  • (adb6404) New: support Cib/Interface Builder window positioning masks. This adds support for all “initial position” window masks in Interface Builder except “centre”. Position can be specified in current screen space coordinates and then adjusted proportionally to the browser size, or adjusted while preserving a left or right margin and a top or bottom margin.
  • (7c56ea4) New: skeleton CPColor colorUsingColorSpaceName:.
  • (e530831) New: + CPFont systemFontSizeForControlSize:.
  • (fd138cf) New: - CPBox setTitleFont: support.
  • (ca4e034) New: - CPBezierPath appendBezierPathWithArcFromPoint:toPoint:radius: and CGPathAddArcToPoint.
  • (9c2cb39) New: CGContextIsPathEmpty for non-canvas based platforms.
  • (eba3e95) New: - CPBezierPath controlPointBounds and CGPathGetBoundingBox.
  • (23adbd4) New: improve tooltips API and avoid some sticky tooltips.
  • (391701f) New: - CPBezierPath addClip and setClip. This enables e.g. a CPGradient to be drawn clipped by an arbitrary bezier path.
  • (4bedd52) New: CPGraphicsContext saveGraphicsState and restoreGraphicsState.
  • (fb155de) New: allow non-string tooltips. Technically the tooltip should be a CPString but if a date or a number is passed this will now work without a crash.
  • (c3c61e1) New: - CPBox titleView.
  • (a1751cc) New: improve popover's content view resizing.
  • (ba33803) New: improve CPPopover's popoverDidShow: timing.
  • (9ebc787) New: improve CPTokenField token spacing.
  • (b97a076) New: CPStepper bindings support for CPValueBinding, CPMinValueBinding, CPMaxValueBinding. Placehoders defaults are minValue, minValue, maxValue.
  • New: popover animation support in Firefox, Opera and IE10.
  • (c2bf47e) New: support CPThemeStateEditable for text fields.
  • (bd1f64b) New: only show token delete button on hover, and only when token field is editable. Before this change the close button showed at all times, even for token fields which weren't even editable. This change brings us closer to Cocoa in that there's no token delete button most of the time, and just like in Cocoa there are more controls available on hover. (Although in Cocoa there's a disclosure arrow and we have a close button instead.).
  • (deb6224) New: support for resizing windows on all sides.
  • (76a4ded) New: CPBrowserStyleProperty for getting browser specific CSS and JS names.
  • (b59f96d) New: key view loop enhancements
  • Bug Fixes:
  • (ff93262) Fixed: work around rendering bugs in WebKit when moving canvas backed views. This bug would cause errors such as the subviews of a CPBox not drawing properly as the box moved.
  • (b33763c) Fixed: popovers could only properly open relative to views in the main window.
  • (0e68729) Fixed: dragged table view columns ignored custom column header views.
  • (2355b7a) Fixes #1666: since 5763ebd extremely slow double clicks would be accepted.
  • (31d5ddb) Fixed: improve CPStepper graphics.
  • Disabled CPStepper looked larger than the regular stepper due to the outline becoming white.
  • Wrong pixels at bottom corners.
  • (ee1c547) Fixed: frame of CPScrollView was calculated incorrectly.
  • (04f650d) Fixed: windows selection compatibility. Fix for issue 1390.
  • (0a18990) Fixed: notify CPOutlineView delegate that item did collapse after reloading them.
  • (905d23d) Fixed: small graphical fix in CPPredicateEditor.
  • (c37783c) Fixed: fixed table column header styling.
  • (da91ab9) Fixed: implicitly set selectionIndexes. CPTableView's selectionIndexes binding shouldn't be set automatically unless the content binding was also set automatically (through a table column binding). Assume that manual content binding implies a desire to manually bind selection indexes (and sort descriptors) as well.
  • (0f5d459) Fixed: collection view crash on unepexted drag events.
  • (90d2713) Fixed: relative URLs were deemed to fail the SOP test by web views.
  • (0d9973a) Fixed: out of place table headers and other text positioning errors.
  • (0fa499b) Place CPAlerts above popovers.
  • (f1c6a8b) Fixed: Error: Permission denied to access property '_childAppIsStarting' in Firefox. This error would occur when running an app in an iframe which could not access its parent frame.
  • (7fab752) Fixed: text field responder error when using a formatter. If the formatter rejected a change and prevented the first responder status from being surrendered, the text field would still stop listening to key window changes and break first responder behaviour when switching between windows.
  • (074e9f7) Fixed: incorrect - CPWindow contentRectForFrameRect: and frameRectForContentRect: for borderless windows with toolbars.
  • (2758454) Fixed: tab views added in IB didn't resize properly. IB sets autoresizesSubviews to NO for tab views by default. In Cocoa this doesn't make any difference because NSTabView ignores this setting. This fix makes it so that Cappuccino's tab view also works with autoresizesSubviews off.
  • (fd3ad76) Fixed: after tabbing to a token field it'd immediately lose first responder status.
  • (256d363) Fixed: token fields lost first responder status when switching between windows.
  • (e2f8d77) Fixed: white line when scrolling between tokens.
  • (4ef5dc8) Fixed: token field autocomplete menu placed incorrectly.
  • (ce9534c) Fixed: canBecomeKeyWindow response for auxiliary windows. Without this fix Cappuccino always returned YES for canBecomeKeyWindow for every window. But in Cocoa, only “standard” windows with a title bar and/or resizing return YES. With this fix Cappuccino better matches Cocoa's behaviour.
  • (9035439) Fixed: token field first responder flicker when clicking tokens.
  • (d27e333) Fixed: tokens could be deleted in an non editable token field.
  • (095858d) Fixed: token field autocomplete scrollbars unresponsive to mouse.
  • (0781a41) Fixed: popoverDidShow in Firefox.
  • (eed37a0) Fixed: if any token field was being edited, the object value of all other token fields contained the partial value.
  • (252b8f5) Fixed: [CPApp windows] contained nil.
  • (cea1209) Fixed: CPAlert sheet crash.
  • (3775c3f) Fixed: CPAlert was a CPView.
  • (deacdde) Fixed: CPSegmentedControl not reducing its size when removing segments.
  • (782f47a) Fixed: key view loop fixes/improvements (cdc88db) CPTextField will no longer lose focus unnecessarily.
  • (8d68e80) Fix - CPWindow canBecomeKeyWindow and -canBecomeMainWindow to match Cocoa behavior (and misleading documentation).
  • NIB2CIB:
  • (7dd034e) New: nib2cib will now adjust to the correct themed height for subclasses of CPButton. For examples CPPopUpButton can get another height then CPButton.
  • Bug Fixes:
  • (4e6b997) Fixed: adjust size in NSStepper to CPStepper.
  • (3dacb4a) Fixed: fix nib2cib alignment ofCPColorWell, CPComboBox, CPPopUpButton and CPSegmentedControl.
  • (8ff2a32) Fixed: fix tag reading from IB Both controls and cells can have tags in IB, but Cappuccino has no cells. If the control has a tag, that takes precedence. Tag reading was moved to NSControl from NSView, since NSView does not have a tag in Cocoa.
  • (8819fd5) Fixed: improve nib2cib support for NSMatrix based radio groups. Without this fix, a matrix with a target-action pair would crash when the cib was loaded due to the matrix having been replaced with a CPView (which cannot take a target-action pair). Now if the matrix is for radio buttons, the action connection for the matrix is made to the CPRadioGroup instead and works as expected when radio selections are made.
  • MISC:
  • (3ccaa4d) New: button types can be set in IB, no need for code.
  • (7bf46cb) New: add support for disabling sudo action in jake with CAPP_NOSUDO=1.
  • (a24f33a) New: add .travis.yml for Travis-CI support.
  • (7070fe9) New: --quiet and --verbose bootstrap.sh options.
  • Bug Fixes:
  • (b28673d) Fixed: eliminate some debug output from jake test runs.
  • (c30a6fb) Improve XcodeCapp support for custom class inheritance.
  • (4acda0c) Fixed: fix and update css for documentation when using doxygen 1.8.
  • (0f9a2dc) XcodeCapp support for zsh.

New in Cappuccino 0.9 (May 6, 2011)

  • Bindings:
  • One of the most exciting features of this release is full Key Value Bindings support. Team members Klaas Pieter, Alexander, Ross, and of course many members of the community have put a tremendous amount of work into getting bindings ready for this release. With support for most major components, CPObjectController, CPArrayController, and undo/redo, bindings are already a killer feature. But we’ve gone one step beyond that and included support for bindings in nib2cib! So not only can you build your Cappuccino interface in Interface Builder, but you can now configure interface bindings in it as well.
  • CPTableView and CPOutlineView:
  • We were incredibly excited to introduce table views—one of the most important and versatile components in any widget set—in our 0.8 release. In 0.9, we’ve matured the table view to production quality and added its supplemental component, the outline view. CPOutlineView lets you build tables that provide hierarchical data and it inherits from CPTableView, so it already benefits from all the additional work that has gone into the table view.
  • CPOutlineView:
  • Table views now support bindings, group rows, inline editing, column reordering and resizing, and a whole slew of other features. Perhaps the most requested feature that is now supported: variable row heights.
  • 
CPTableView Variable Row Heights in an upcoming Cappuccino demo app:
  • One of the most important aspects of our table view is performance; we have been very careful not to sacrifice speed for any of these new features. CPTableView will still scroll like butter, even with hundreds of thousands of rows.
  • New Components
  • This release also introduces several new features to Cappuccino. You’ll find more controls from Cocoa and some new additions specific to Cappuccino. While there are too many to mention them all here, here are some notable additions:
  • CPAlert: Totally rewritten for ease of use and featuring a new UI  designed by Sofa.
  • CPBrowser: We’re shipping a great implementation of CPBrowser with this release of Cappuccino. CPBrowser provides columnar layout for displaying hierarchical data. This is very similar to the column view in Mac OS X’s Finder.
  • CPCursor: A simple API for changing the user’s cursor. The class supports a number of cursors from the start or allows you to load your own images.
  • CPPredicate: The CPPredicate school of classes gives you a very powerful way to filter through your data. A future release may include robust controls for users to visually edit predicates.
  • CPStepper: A control that allows users to incrementally step through values.
  • CPTokenField: A powerful text field subclass with support for autocomplete, CPTokenField allows you to build unique token managers, like the address fields in Mac OS X’s Mail.app.
  • NativeHost: We announced NativeHost a few months ago, but this is the first time we’ve included it with a release of Cappuccino. NativeHost lets you build your Cappuccino application for desktop platforms and distribute it like any other desktop app. Support for Mac OS X is currently included, with Windows and Linux support coming soon.

New in Cappuccino 0.7.1 (Sep 28, 2009)

  • Improvements to the way nib2cib handles custom classes in nibs.
  • Improvements to menus and menu items in nib2cib
  • Added automatic drag and drop support to CPImageView
  • Better JSON support
  • Better UTF8 Support
  • Updated included version of Narwhal (http://narwhaljs.org/)