-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcappuccino-release-notes.html
2141 lines (1921 loc) · 161 KB
/
cappuccino-release-notes.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Cappuccino Release Notes</title>
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<link href="/img/favicon.ico" rel="shortcut icon">
<link href="/css/main-6ee61d5e.css" rel="stylesheet" type="text/css">
<link href="https://fonts.googleapis.com/css?family=Lato:300,400,700,900,300italic,400italic,700italic,900italic" rel="stylesheet" type="text/css">
<link href="/blog/feed.xml" rel="alternate" title="Cappuccino Blog Feed" type="application/atom+xml">
</head>
<body class="file-cappuccino-release-notes-html">
<a class="scrolltop" href="#">
<span>up</span>
</a>
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-target=".nav-collapse" data-toggle="collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="/">
<img alt="logo" src="/img/cappuccino-website-logo-333bd6a0.png">
</a>
<div class="nav-collapse collapse">
<ul class="nav pull-right">
<li>
<a class="scroller" href="/#features">Features</a>
</li>
<li>
<a class="scroller" href="/downloads.html#download">Download</a>
</li>
<li>
<a href="/learn/">Learn</a>
</li>
<li>
<a href="/contribute.html">Contribute</a>
</li>
<li>
<a href="/blog/">Blog</a>
</li>
<li>
<a href="/learn/documentation/">API</a>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="container">
<h2 class="section_header">
<hr class="left visible-desktop">
<span>Cappuccino Release Notes</span>
<hr class="right visible-desktop">
</h2>
<div class="row">
<div class="offset2 span8 markdown">
<h2>What’s New in Cappuccino 0.9.10</h2>
<p><em>Release date: 2017-07-11</em></p>
<p>Cappuccino 0.9.10 introduces <code>CPTextView</code>, <code>CPViewAnimator</code>, <code>CGContextText</code>, support of node as a narwhal engine and over 100 other changes and improvements.</p>
<p>Highlights in this release:</p>
<ul>
<li>New: node can be now set as the narwhal engine.</li>
<li>New: <code>CPTextView</code> in AppKit.</li>
<li>New: <code>CGContextText</code> in AppKit.</li>
<li>New: <code>CPAnimationContext</code> and <code>CPViewAnimator</code> in AppKit.</li>
</ul>
<h2>Foundation and Core</h2>
<ul>
<li>(a10dfa4) New: <code>CPNumber -integerValue</code> and <code>CPString -integerValue</code>.</li>
<li>(41a7417) New: Sweden / Swedish as a possible locale.</li>
<li>(5da8728) New: <code>CPObject +instancesImplementSelector:(SEL)aSelector</code>.</li>
</ul>
<p><em>Bug fixes:</em></p>
<ul>
<li>(a995f3a) Fixed: no exception thrown if a plist was not valid in <code>CPKeyedUnarchiver</code>.</li>
<li>(e13f5ed) Fixed: <code>CPNumber intValue</code> did not return an integer.</li>
<li>(42d7e43) Fixed: formatting of <code>CPCache</code>.</li>
<li>(5c60819) Fixed: cache control was not set properly in <code>CPURLRequest</code>.</li>
<li>(ae5d317) Fixed: when dependent key paths used a relationship, only the first added observer would observe the attribute for the relationship object.</li>
<li>(a192698) Fixed: <code>CPObject +implementsSelector:</code> did not work with proxies and KVO swizzled classes.</li>
<li>(12ed42e) Fixed: regular expression were not compatible with <code>gcc</code> > 4.9.</li>
</ul>
<h2>AppKit</h2>
<ul>
<li>(b12d149) New: <code>CPViewController -loadViewAsynchronously:</code>.</li>
<li>(598a6eb) (571891) (410ad0d) New: <code>CPAnimationContext</code> and <code>CPViewAnimator</code>.</li>
<li>(fedc721) New: <code>CPViewController -viewWill/DidAppear</code> and <code>CPViewController viewWill/didDisappear</code>.</li>
<li>(abb0799) New: autoscrolling for table view columns.</li>
<li>(0aeccb) (bea03d) (65f701) (6c9c135) (249ebeb) New: <code>CPTextView</code> in AppKit.</li>
<li>(315a7b9) New: <code>CGContextText</code> in CoreGraphics.</li>
<li>(606132) New: manual test for <code>CPSegmentedControl</code>.</li>
<li>(5059028) New: documentation for autoscroll of <code>CPView</code>.</li>
<li>(0eb196e) New: <code>CPTabView</code> loads the views asynchronously when possible.</li>
<li>(6652a27) New: allow a text based control to stay on a single line when text wraps.</li>
<li>(3f64b74) New: <code>CPSetPlatformFeature</code> function in <code>CPCompatibility</code>.</li>
<li>(f18074b) New: optional declarative layout for use in <code>CoreAnimation</code> (‘CSS animations’).</li>
</ul>
<p><em>Bug fixes:</em></p>
<ul>
<li>(8f11917) Fixed: race condition when editing a <code>CPTextField</code> in a <code>CPTableView</code> with a double click; focus was lost under some conditions.</li>
<li>(6d1a094) Fixed: <code>CPSearchField</code> did not support <code>CPMenuItem -setIndentationLevel:</code>.</li>
<li>(c24c386) Fixed: crash when having a <code>CPTableViewHeader</code> without a <code>CPTableView</code>.</li>
<li>(43a2480) Fixed: cursor key binding methods did not fire in IE 11.</li>
<li>(5c58552) Fixed: first <code>CPPopUpItem</code> was always selected if selected binding value was set before content binding value.</li>
<li>(cd92ebd) Fixed: <code>CPObjectController -setEntityName</code> did not work.</li>
<li>(1575c2b) Fixed: <code>CPTableView</code> <code>viewBasedCib</code> manual test was broken due to <code>CPBox</code>.</li>
<li>(ffcac67) Fixed: manual test <code>SmartFoldersDemo</code>.</li>
<li>(f67faf) Fixed: <code>CPCollectionView</code> content binding.</li>
<li>(3e6e5f9) Fixed: <code>CPViewController -isViewLoaded</code> property was always set to NO in async mode.</li>
<li>(818d5d5) Fixed: date comparisons in <code>CPPredicateEditor</code>.</li>
<li>(c38daac) Fixed: unit tests for <code>CPPredicateEditor</code>.</li>
<li>(333e112) Fixed: <code>CPPredicateEditor</code> predicate when the template has a <code>CPFloatAttributeType</code>.</li>
<li>(9273c9e) Fixed: <code>CPColorPanel</code> always opened in main platform window.</li>
<li>(1927bb4) Fixed: <code>CPTextField</code> didn’t optimize tracking areas management.</li>
<li>(a28f9ce) Fixed: right mouse clicking during a drag operation canceled it.</li>
<li>(a84a7bb) Fixed: the background of the brightness slider had a uniform color in <code>CPColorPicker</code>.</li>
<li>(5f1229) Fixed: missing import in <code>CPCollectionView</code>.</li>
<li>(12dde51) Fixed: <code>CPView</code> received multiple <code>-viewDidHide/Unhide</code> messages.</li>
<li>(a2960a7) Fixed: <code>CPPasteBoard</code> dead code.</li>
<li>(e4fce08) Fixed: scrolling events were not dispatched to the <code>CPApp</code> on slower systems under Chrome 52.</li>
<li>(4395c07) Fixed: iOS virtual keyboard “done” button not working and tapping other text fields while editing (often) not working.</li>
<li>(1360caa) Fixed: editing in a cell-based <code>CPTableView</code> was broken in an editing session.</li>
<li>(2f82fb8) Fixed: typo in the documentation of <code>CPControl</code>.</li>
<li>(c2b7cc7) Fixed: formatting of <code>CPView</code>.</li>
<li>(969d1d) Fixed: optimization of the tracking areas feature in <code>CPView</code>.</li>
<li>(4b55a69) Fixed: issues in <code>CPAnimationContext</code> and <code>CPView</code> animator.</li>
<li>(62e5d8d) Fixed: incorrect type declaration in <code>CPCache</code>.</li>
<li>(037bc4e) New: test to demonstrate the <code>wantsPeriodicFrameUpdates</code> animator property.</li>
<li>(cfbef14) New: inhibit DOM updates during size animation in <code>CPAnimationContext</code>.</li>
<li>(3d9b42f) Fixed: <code>CSSAnimation</code> linting.</li>
<li>(8d403f5) Fixed: IB connections in <code>CPTabViewNibTest</code>.</li>
<li>(eeea21c) Fixed: <code>CPViewAnimator</code> was not giving correct frame information.</li>
<li>(60b2f7d) Fixed: legacy scrollers were not clickable under some circumstances.</li>
<li>(51b9b40) Fixed: native paste in Chrome was not working as robustly as it should.</li>
<li>(6aea016) Fixed: text-sizing by canvas and via DOM sizing differed by 1px.</li>
<li>(1a299d8) Fixed: <code>CPBox</code> drawing artifacts when used in <code>CPSeparator</code> mode.</li>
<li>(f00a5fb) Fixed: delegate <code>-tableView:didDragTableColumn:</code> was never sent.</li>
</ul>
<h2>Objective-J</h2>
<ul>
<li>(f24c4b0) New: node can be used as a narwhal engine.</li>
<li>(e134f91) New: merged in the parser and compiler that is used in the node objj-runtime.</li>
</ul>
<p><em>Bug fixes:</em></p>
<ul>
<li>(3ba2158) Fixed: outdated sourcemap syntax prevented showing the right sources when debugging in the browser. <code>//@ sourceURL=...</code> has now been replaced by <code>//# sourceURL=...</code> when compiling Objective-J code.</li>
</ul>
<h2>XcodeCapp</h2>
<p><em>Bug fixes:</em></p>
<ul>
<li>(087e811) New: bump <code>XcodeCapp</code> copyright year.</li>
<li>(b09cb24) Fixed: XcodeCapp ‘Preferences’ menu item not in the standard place.</li>
<li>(dd62c0) Fixed: <code>XcodeCapp</code> was broken under macOS Sierra.</li>
</ul>
<h2>Misc</h2>
<ul>
<li>(5bc3609) New: removed Native Host.</li>
</ul>
<p><em>Bug fixes:</em></p>
<ul>
<li>(584aebf) Fixed: <code>capp_env</code> did not use the master version of Cappuccino.</li>
<li>(80bfeb1) Fixed: vestigial rakefile.</li>
</ul>
<h2>Nib2Cib</h2>
<ul>
<li>(edbc1ba) New: <code>nib2cib</code> support for <code>CPButton -imageScaling</code>.</li>
</ul>
<p><em>Bug fixes:</em></p>
<ul>
<li>(dde8059) New: show successfully loaded <code>NSClasses</code> in <code>nib2cib</code> verbose mode.</li>
<li>(f4c11d1) Fixed: <code>nib2cib</code>‘ed files different with jake release and jake deploy.</li>
<li>(3e56c8e) Fixed: XcodeCapp <code>nib2cib</code> incorrect vs jake release.</li>
<li>(c4bf67d) Fixed: selection in <code>CPTabView</code> when set through <code>nib2cib</code>.</li>
</ul>
<h2>Cucapp</h2>
<p><em>Bug fixes:</em></p>
<ul>
<li>(67c767c) Fixed: accidental Nuage Networks specific code related to text fields made it into the general release.</li>
<li>(a924fcf) Fixed: wrong default path for loading Cucapp in the CLI.</li>
<li>(2fe795f) Fixed: private API <code>_mainDOMWindow</code> did not actually return the main DOM window but the key DOM window.</li>
<li>(732d77e) Fixed: the function <code>dumpGuiObject</code> was called two times for the class <code>CPScrollView</code>.</li>
</ul>
<h2>Other changes</h2>
<ul>
<li>(598a482) New: Gitter badge in the README.</li>
</ul>
<p><em>Bug fixes:</em></p>
<ul>
<li>(fa07bc1) Fixed: missed some version number bumps in the 0.9.9 release.</li>
<li>(f9cc773) Fixed: missing requirements in the README.</li>
</ul>
<h2>What’s New in Cappuccino 0.9.9</h2>
<p><em>Release date : 2016-03-31</em></p>
<p>Cappuccino 0.9.9 introduces CPLocalization, XcodeCapp 4.0, CPTrackingArea, retina drawing support and over 250 other changes and improvements.</p>
<p>Highlights in this release:</p>
<ul>
<li>New: ability to localize a Cappuccino app using standard methods.</li>
<li>New: <code>CPUserNotification</code> and <code>CPUserNotificationCenter</code> support.</li>
<li>New: <code>CPCache</code> support.</li>
<li>New: <code>CPTrackingArea</code> support.</li>
<li>New: draw in high DPI (Retina drawing) when using <code>canvas2D</code>.</li>
<li>New: XcodeCapp 4.0.</li>
<li>New: <code>capp_env</code> virtual environments support.</li>
<li>New: abstract library for <code>Cucapp</code>.</li>
<li>New: runtime method binding for Objective-J (speed improvement of 20%).</li>
<li>New: <code>CPAppearance</code> and <code>CPVisualEffectView</code> support.</li>
<li>Optimization of the <code>CPTableView</code>.</li>
</ul>
<h2>Foundation and Core</h2>
<ul>
<li>(630aa53) New: <code>CPCache</code> has been added to <code>Foundation</code>.</li>
<li>(58afc92) New: timeout and cache feature in <code>CPURLRequest</code>.</li>
<li>(806be95) New: <code>CPURLConnectionDelegate</code> protocol.</li>
<li>(8809c16) New: <code>CPURLConnection +sendAsynchronousRequest:queue:completionHandler:</code>.</li>
<li>(ce8f8c0) New: <code>CPNotificationQueue</code>.</li>
<li>(686f931) New: ability to localize a Cappuccino application. An app can be localized through <code>strings</code> and <code>cib</code>s. The language to use is selected from the browser or from the <code>Info.plist</code>.</li>
<li>(e172217) New: <code>CPArray -arrayByApplyingBlock:</code>.</li>
<li>(cbc653b) Cappuccino now supports the KVC operators <code>unionOfObjects</code>, <code>distinctUnionOfObjects</code>, <code>unionOfArrays</code>, <code>distinctUnionOfArrays</code> and <code>distinctUnionOfSets</code>.</li>
</ul>
<p><em>Bug Fixes:</em></p>
<ul>
<li>(8599ad4) Fixed: the init method <code>CPArray initWithObjects:count:</code> did not work on a native <code>CPJavascriptArray</code> when the argument count was different than the length of the provided array.</li>
<li>(912930) Fixed: <code>CPDictionary -initWithObjectsAndKeys:</code> and <code>CPDictionary -initWithObjects:forKeys:</code> were not compliant with Cocoa when duplicated keys were passed to the method.</li>
<li>(3e29732) Fixed: the parameter <code>queue</code> of the method <code>CPNotificationCenter -addObserverForName:object:queue:usingBlock:</code> was ignored. It now creates a new operation and adds it to the given queue if needed.</li>
<li>(04f8545)(0508b70) Fixed: incompatibility with Internet Explorer 10. The <code>withCredentials</code> property is now set after the <code>XMLHttpRequest</code> has been opened.</li>
<li>(b59b025) Fixed: <code>CPDateFormatter</code> did not work with the symbols <code>MM</code> and <code>LL</code> for the month of December.</li>
<li>(ea644a2) Fixed: <code>CPObjectController -setValue:forKey:</code> incorrectly used the key as the value.</li>
<li>(ec55bdd) Fixed: not throw exception if plist is not valid. It will return nil instead.</li>
</ul>
<h2>AppKit</h2>
<ul>
<li>(14349cb) New: <code>CPPlatformWindow -initWithWindow</code>. This feature allows you to manipulate a <code>CPPlatformWindow</code> through the given <code>CPWindow</code>, which is easier than regular platform window manipulation.</li>
<li>(4d7cb06) New: the theme attributes <code>image-search-inset</code> and <code>image-cancel-inset</code> have been added for <code>CPSearchField</code>.</li>
<li>(51bdfa4) New: the protocol <code>CPScrollViewDelegate</code> has been added for <code>CPScrollView.j</code>.</li>
<li>(7b4365b) New: added the delegate method <code>windowWillResize:toSize:</code> for <code>CPWindow</code>.</li>
<li>(737ef58) New: added the delegate methods <code>windowDidMiniaturize:</code>, <code>windowWillMiniaturize:</code> and <code>windowDidDeminiaturize:</code> for <code>CPWindow</code>.</li>
<li>(0dad10d) New: send the <code>CPAppKitDefined</code> notification when the application is launched.</li>
<li>(57b6888)(899bbc2)(0d17757) New: indeterminate spinning <code>CPProgressBarIndicator</code>.</li>
<li>(bdbf1fb) New: added the property <code>baseWritingDirection</code> to <code>CPControl</code>. This allows you to write from left to right or right to left.</li>
<li>(3a6a849) New: <code>CPUserNotification</code> and <code>CPUserNotificationCenter</code>.</li>
<li>(3f9f92) New: <code>CPPlatform +closeAllPlatformWindows</code>. This method is called when reloading or closing the Cappuccino application. The method closes every platform window opened in the application.</li>
<li>(058a73) New: delegate methods <code>applicationShouldTerminate</code> and <code>applicationShouldTerminateMessage</code> for the <code>CPApplicationDelegateProtocol</code>.</li>
<li>(ab61aef) New: <code>CPVisualEffectView</code> and <code>CPAppearance</code>.</li>
<li>(2f79b07) New: default system menu is now disabled for right click, except for a right click on a <code>CPTextField</code>.</li>
<li>(448c2a2) New: speed up app loading by creating the <code>DOMCanvas</code> only if <code>CPView -drawRect:</code> or <code>CPView -viewWillDraw</code> are overridden, and do it lazily (on the first <code>viewWillLayout</code>).</li>
<li>(448c2a2) New: (private API) <code>CPView viewWillLayout</code> and <code>CPView viewDidLayout</code>.</li>
<li>(1fe1e6f) New: ability to more widely theme AppKit. In particular <code>CPColor alternateSelectedControlColor</code> and related <code>CPColor</code> fields can now be themed.</li>
<li>(d5f38fe) New: <code>CPRunLoop -performBlock:argument:order:modes:</code>.</li>
<li>(932b82)(770d5e) New: <code>CPTrackingArea</code>.</li>
<li>(a2c0b47) New: the graphical <code>CPDatePicker</code> now disallows dates outside of the specified <code>minDate</code> and <code>maxDate</code>.</li>
<li>(2d474cc) New: by default, Cappuccino now draws in high DPI when using <code>canvas2D</code>. You can disable this feature globally using the method <code>CPView +setAllowsHighDPIDrawing:</code>.</li>
<li>(c04d3b2 ) New: <code>CPView -setNeedsLayout:</code> and <code>CPView -needsLayout</code> 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.</li>
<li>(1c9e9da) New: <code>CPTableView -viewAtColumn:row:makeIfNecessary</code>.</li>
</ul>
<p><em>Bug Fixes:</em></p>
<ul>
<li>(eca9590) Fixed: <code>CPTableColumn</code>’s binding documentation was not clear.</li>
<li>(b16b838) Fixed: <code>CPSearchField</code>s were not properly aligned when coming from a xib.</li>
<li>(7c09517)(2b853df) Fixed: <code>CPSegmentedControl -widthForSegment:</code> and <code>CPSegmentedControl -frameForSegment:</code> did not return the correct value when using <code>CPSegmentedControl -sizeToFit</code>. The <code>selectedSegment</code> variable is now correctly updated.</li>
<li>(027a317) Fixed: memory leaks with tooltips in <code>CPView</code>. This was due to handlers not being released.</li>
<li>(1dc0601) Fixed: closing a <code>CPPlatformWindow</code> did not close its main <code>CPWindow</code>.</li>
<li>(cf92fb9) Fixed: <code>CPComboBox</code>es were not properly aligned when coming from a xib.</li>
<li>(f2c5515) Fixed: <code>CPTableView -reloadData</code> caused an extra run loop perform.</li>
<li>(6aece1c) Fixed: the default template generated by the command <code>capp gen -t ThemeDescriptor</code> was slightly non-standard compared to that of Aristo 1 and Aristo 2.</li>
<li>(98d0a39) Fixed: in <code>CPTableView</code>, <code>clickedRow</code> and <code>clickedColumn</code> did not behave like in Cocoa outside of the scope of a mouse event.</li>
<li>(44c686f) Fixed: the method <code>CPView -scrollRectToVisible:</code> did not behave like in Cocoa.</li>
<li>(914a3d7) Fixed: the height of a <code>CPSegmentedControl</code> brought in via <code>nib2cib</code> was incorrect.</li>
<li>(10792c0)(01ba6dd)(fd06844) Fixed: the <code>keyWindow</code> and <code>mainWindow</code> of the application were not updated when switching from a platform window to another one.</li>
<li>(9798b9f) Fixed: the overflow of a <code>CPPlatformWindow</code> was not clipped; it was possible to scroll a platform window.</li>
<li>(769b379) Fixed: a <code>CPPopover</code> closed itself even on a click in another platform window.</li>
<li>(6efe563) Fixed: the private method <code>CPEvent -_initOtherEventWithType:location:modifierFlags:timestamp:windowNumber:context:</code> did not save the <code>windowNumber</code> provided.</li>
<li>(0dad10d) Fixed: notifications <code>willBecomeActive:</code> and <code>didBecomeActive:</code> were called even if the application was already active. These notifications are now also sent when the application just finished launch.</li>
<li>(5c2e093) Fixed: notifications <code>willBecomeActive:</code>, <code>didBecomeActive:</code>, <code>willResignActive:</code>, <code>didResignActive:</code> were not sent when the application focus was lost or gained.</li>
<li>(da15cc4) Fixed: the <code>nextValidKeyView</code> calculated by Cappuccino in a <code>CPScrollView</code> did not behave as in Cocoa. It didn’t take the scroll position into consideration.</li>
<li>(da15cc4) Fixed: a <code>CPTextField</code> could not become first responder when not visible.</li>
<li>(136138d) Fixed: incorrect <code>CPTextField</code> first responder resignation behavior for a non key window <code>CPWindow</code>.</li>
<li>(65a379c) Fixed: the textual <code>CPDatePicker</code> did not respect the English format.</li>
<li>(f822268) Fixed: memory leaks in <code>CPSplitView</code> when using a delegate.</li>
<li>(a7b6010) Fixed: <code>CPScrollView -documentVisibleRect</code> did not return the expected result when the document view was scaled.</li>
<li>(9694c7) Fixed: <code>CPButton -sizeToFit</code> was broken when calling the method with a new title or a new image.</li>
<li>(d6b0fc)(d1e31d) Fixed: when selecting a label through a right click, its selectable state was not taken into consideration.</li>
<li>(6fe9da)(923d32) Fixed: <code>AppKit</code> unit-tests were not stand-alone.</li>
<li>(5cd25e2) Fixed: type of boolean values lost when parsing a <code>CPPredicate</code> format.</li>
<li>(6420a51) Fixed: crash when a cell-based <code>CPTableView</code> contained a data view that contained an editable <code>CPTextField</code>.</li>
<li>(655bc39) Fixed: <code>CPPopover</code>s were blinking in Chrome and Opera.</li>
<li>(c9e83e0) Fixed: slow drawing on non-retina resolutions due to needless identity transform.</li>
<li>(3fcc37e) Fixed: <code>CPTabView</code> did not accept the first mouse event when the <code>CPTabView</code> was in an unfocused window.</li>
<li>(7a0b2c9) Fixed: crash with the <code>CPRuleEditor</code> when dragging the first row.</li>
<li>(4ac6395) Fixed: <code>CPToolTip</code> did not work in an external <code>CPWindow</code>.</li>
<li>(448c2a2) Fixed: view based <code>CPTableView</code> broken after the <code>CPAppearance</code> feature was added.</li>
<li>(448c2a2) Refactoring: <code>CPAppearance</code> and <code>CPVisualEffectView</code>.</li>
<li>(526181a) Fixed: <code>CPImage -size</code> returned internal object ref.</li>
<li>(d5b90c9) New: <code>CPTabView</code> improvements. The methods <code>CPTabViewItem -tabViewItemWithViewController:</code> and <code>CPTabViewItem -setImage:</code> have been added. New bindings options (<code>CPContentBinding</code> - <code>CPSelectedIndexBinding</code> - <code>CPSelectionIndexesBinding</code>) have been added to <code>CPTabView</code>.</li>
<li>(d5b90c9) Fixed: <code>CPTabView -insertTabViewItem:atIndex:</code>.</li>
<li>(c30f8b0) Fixed: warning when compiling AppKit.</li>
<li>(40a9f19) Fixed: crash when a new <code>CPPlatformWindow</code> was blocked by the browser when opening (e.g. by a popup blocker).</li>
<li>(f062fda) Optimization: <code>CPView -layoutSubviews</code> and <code>CPView -viewWillLayout</code>.</li>
<li>(b04e576) Tests: new unit tests for the method <code>CPString -stringByReplacingCharactersInRange:</code>.</li>
<li>(d4b1680) Fixed: copy and paste did not work properly in a new <code>CPPlatformWindow</code>.</li>
<li>(d5f38fe) Fixed: timing key responder issue when a <code>CPTextField</code> became the first key responder.</li>
<li>(b929a8f) Fixed: cib performances improved through a better way to handle <code>CPThemeAttribute</code>. Speed improvements of up 20% when loading a cib.</li>
<li>(5e94aaa) Fixed: default selection of a <code>CPTabView</code> didn’t not work.</li>
<li>(0bc02de) Fixed: <code>CPBundle +loadCibNamed:owner:</code> was asynchronous instead of synchronous.</li>
<li>(78e29d2) Fixed: cursor position of a <code>CPTextField</code> was wrong when the <code>CPTextField</code> became the first responder.</li>
<li>(e214bf3) Fixed: refactored <code>CPString -charPositionOfString:withFont:forPoint:</code>.</li>
<li>(411a282) Fixed: manual test SmartFoldersDemo fixed.</li>
<li>(0ac0845) Fixed: subquery expressions containing variables of a <code>CPPredicate</code> were ignored.</li>
<li>(912fdea) Fixed: new manual test for <code>CPTabViewBindings</code>.</li>
<li>(5ec5198) Fixed: added a manual test to check the behavior of a <code>CPSplitView</code> divider when having one view.</li>
<li>(8908fb7) Fixed: view hierarchy was not updated while processing events and using the <code>CPTrackingArea</code>.</li>
<li>(2dda326) Fixed: <code>CPRadioButton</code> cropped in the manual test Theme Kitchen Sink.</li>
<li>(8403e36) New: Theme Kitchen Sink test looks better.</li>
<li>(5d88d07) Fixed: <code>CPPredicate</code>’s predicateFormat with a <code>CPNull</code> value as right expression wasn’t working.</li>
<li>(96ae3da) Fixed: replace loops with <code>CPArray -arrayByApplyingBlock:</code>.</li>
<li>(4f13df6) Fixed: some manual tests were broken.</li>
<li>(f2528b5) Changed the name of the method <code>CPDomDisplayServerSetStyleBackgroundSize</code> to <code>CPDOMDisplayServerSetStyleBackgroundSize</code>.</li>
<li>(63f634a) Fixed: unreachable code in <code>CPDOMDisplayServer.h</code>.</li>
<li>(02f301d) Fixed: the <code>CPStepper</code> class initializer methods returned an object of type <code>id</code> instead of <code>CPStepper</code>.</li>
<li>(f9ce1d1)(01e69ce)(a2b38c8)(d50df6a)(cec746d)(71c0ba6) The <code>CPTableView</code> class has been refactored and optimized. The methods <code>CPTableView -preparedViewAtColumn:row:</code> and <code>CPTableView -enumerateAvailableViewsUsingblock:</code> have been added.</li>
<li>(ee688d9) Fixed: theme showcase didn’t work.</li>
<li>(187a017) Fixed: duplicated unit tests.</li>
<li>(c0a2da4) Fixed: <code>CPDatePicker</code> will now raise <code>CPInvalidArgumentException</code> if given an invalid date.</li>
<li>(7c4cdef) Fixed: wrong divider color of a <code>CPSegmentedControl</code>.</li>
<li>(7c60ffa) Fixed: <code>CPPopover</code> didn’t update its position when the frame of one of its superviews changed.</li>
<li>(9cb3eef) Fixed: when the auto-complete menu for a <code>CPTokenField</code> was open, the enter key was not consumed by the menu but forwarded to the application.</li>
<li>(8f11917) Fixed: race condition when editing a <code>CPTextField</code> in a <code>CPTableView</code>.</li>
</ul>
<h2>Objective-J</h2>
<p>(8c2f0ba) Optimization: runtime methods <code>objj_msgSend</code>, <code>objj_msgSendSuper</code> and <code>objj_method</code> 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 <code>-O2</code> or the compiler flag <code>InlineMsgSend</code>.
* (751e76b) New: include type signatures by default when compiling an Objective-J file. This can be disabled by removing the compiler flag <code>IncludeTypeSignatures</code> or compiling with the <code>-T</code> option.
* (751e76b) New: runtime methods <code>method_copyReturnType</code>, <code>method_copyArgumentType</code> and <code>method_getNumberOfArguments</code>.
* (4b81e0d) Some AppKit speed improvements through the use of the new <code>objj_msgSend</code> in some places including <code>CPTableView</code> and <code>CPWindow</code>.</p>
<h2>XcodeCapp</h2>
<ul>
<li>(47611b7)(d317744)(340d827) New: XcodeCapp 4.0.</li>
</ul>
<p><em>Bug Fixes:</em></p>
<ul>
<li>(5457ddb) Fixed: XcodeCapp ignored the resources folder.</li>
<li>(2b17e17) Fixed: XcodeCapp did not ignore its own xib when the XcodeCapp folder was in a Cappuccino project.</li>
<li>(671ed3c)(bacb701) Fixed: memory leaks in XcodeCapp.</li>
<li>(2b17e17) Fixed: reload the operations and errors table views only when they are visible in XcodeCapp.</li>
<li>(f41504c)(51a88a2) Refactored: do not use Lumberjack in XcodeCapp anymore.</li>
<li>(50d7e8d) Fixed: typos and grammar in XcodeCapp.</li>
<li>(50d7e8d) Fixed: uneven margins and spacing in XcodeCapp settings.</li>
</ul>
<h2>Nib2cib</h2>
<p><em>Bug Fixes:</em></p>
<ul>
<li>(2f5e7f3) Fixed: <code>nib2cib</code> failed when having a custom formatter in a cell.</li>
<li>(0326b7d)(00bdbcf)(d527139) Fixed: <code>nib2cib</code> failed when having a <code>CPTableView</code> in a <code>CPBox</code>.</li>
<li>(808591d) Fixed: <code>CPObjectController</code> didn’t get <code>entityName</code> and <code>lazyFetching</code> attributes from the xib/cib file.</li>
</ul>
<h2>Misc</h2>
<ul>
<li>(06c5976) New: added the tool <code>objj2objcskeleton</code>. This tool converts an Objective-J files to a basic Objective-C file containing an interface representing the original file.</li>
<li>(a0277ab) New: added the option <code>-x</code> (alternatively <code>--xml</code>) to <code>objj</code>. This option allows you to specify the output format of <code>objj</code> to be XML.</li>
<li>(245da9b)(0f62926)(c9f391d) New: <code>capp_env</code> has been added to Cappuccino. This tools allows you to create virtual environments for Cappuccino.</li>
<li>(3f88e02) New: <code>-n</code> option added to <code>objj2objcskeleton</code>. This option allows you to specify the name of the generated file.</li>
<li>(d358f0) New: the XML output format of the command <code>objj</code> now has the key <code>sourcePath</code> instead of <code>path</code>.</li>
</ul>
<p><em>Bug Fixes:</em></p>
<ul>
<li>(5bba109) Fixed: “too many open files” error when compiling an app or Cappuccino itself using <code>jake</code>. Jake now properly closes files when done with them.</li>
<li>(8cc075) Fixed: <code>objj2objcskeleton</code> did not transform Objective-J categories.</li>
<li>(0e4136) Fixed: the <code>--xml</code> option for the <code>objj</code> command did not output every error in XML.</li>
<li>(3d79799) Fixed: Cappuccino installation as a whole failed if <code>XcodeCapp</code> build failed.</li>
<li>(662db00) Fixed: build in directory with a space in the path would fail.</li>
</ul>
<h2>OJTest</h2>
<ul>
<li>(964fc8b) New: the method <code>verifyThatAllExpectationsHaveBeenMetInOrder:</code> has been added to <code>OJMoq</code>. This method allows you to check if certain registered methods are called in order.</li>
<li>(7c47306) New: the option <code>-x</code> to stop the suite of tests when a test fails.</li>
<li>(d19e968) New: <code>jake install</code> will update OJTest on your system.</li>
<li>(f8c73aa) New: OJTest raises a warning when a test method has already been declared in the same test class.</li>
</ul>
<p><em>Bug Fixes:</em></p>
<ul>
<li>(09de5a2) Fixed: counting of a selector with <code>OBJMoq</code> and <code>OJMockSpy</code> worked incorrectly if set up multiple times with different arguments.</li>
<li>(f799634) Fixed: attribute names were used directly instead of through runtime functions.</li>
<li>(def9006) Fixed: <code>CPRunLoop</code> was not called at the end of every tests.</li>
<li>(522fcdf) Fixed: duplicated unit tests.</li>
<li>(1f6cc19) Fixed: the coverage option wasn’t working.</li>
</ul>
<h2>Cucapp</h2>
<ul>
<li>(986db18) New: nodes <code>backgroundColor</code>, <code>textColor</code> and <code>borderColor</code> in generated XML.</li>
<li>(af4fbc7) New:<code>-simulateScrollWheelOnPoint:</code>.</li>
<li>(b432bd2) New: Cucapp now generates an error message for every Objective-J exception caught.</li>
<li>(e0f276e) New: <code>jake install</code> for Cucapp. The command will install Cucapp in <code>narwhal</code> and the gems required (Cucumber, Thin, Nokogiri, Launchy and JSON).</li>
<li>(e0f276e) New: added the command <code>cucapp</code>. This command allows you to create a testing architecture in your Cappuccino application. The architecture provides a new command <code>jake cucumber-test</code>, creates a soft link to where Cucapp is installed and creates every file needed to create Ceucumber tests.</li>
<li>(27f03e4) New: Cucapp now uses <code>watir-webdriver</code> as support for the browser.</li>
<li>(a12e068) New: environment variables <code>WATIR_CHROME_DRIVER</code> and <code>WATIR_CHROME_SWITCHES</code> to configure <code>watir</code> for Chrome.</li>
<li>(61b1906) New: files <code>CPResponder+CuCapp.j</code> and <code>CuCapp+Record.j</code> are now copied to the targeted folder when using the <code>cucapp</code> command.</li>
<li>(7f830c1) New: Cucapp now dispatches <code>DOM</code> events to the main document instead of sending events to the <code>CPApp</code>.</li>
<li>(8075435) New: default steps such as clicking, hitting a key and checking a <code>CPControl</code> value in <code>test_application_steps.rb</code>.</li>
<li>(8075435) New: environment variables <code>BROWSER_SIZE_WIDTH</code> and <code>BROWSER_SIZE_HEIGHT</code> to specify the size of the browser when testing.</li>
<li>(3472386) New: possibility to create screenshots from Cucapp.</li>
<li>(10b3ff2) New: support for phantomjs.</li>
<li>(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.</li>
<li>(b172e5a) New: the environment variable <code>CAPP_INSTALL_DIR</code> can be used to specify where Cucapp should be installed when using <code>jake install</code>.</li>
<li>(76551a5) New: Ruby methods to generate mouse up and down events.</li>
<li>(76551a5) New: the environment variable <code>BROWSER_FULL_SCREEN</code> can be set to have the browser in full screen when testing.</li>
<li>(a7b6fa1) New: added a sleep of 5 ms between every keyboard event generated by Cucapp.</li>
</ul>
<p><em>Bug Fixes:</em></p>
<ul>
<li>(a266833) Fixed: the command <code>simulateScrollWheel:</code> did not work in a <code>CPScrollView</code>.</li>
<li>(e07bc84) Fixed: the command <code>simulateScrollWheel:</code> did not return a result.</li>
<li>(01b7ddc) Fixed: methods <code>textFor:</code> and <code>objectValue</code> did not return the string value of a <code>CPPopUpButton</code>.</li>
<li>(e93d795) Fixed: <code>CPWindow</code>s of the application not all closed when the test was over.</li>
<li>(fa281e8) Fixed: <code>CPRunLoop</code> was not called between every event simulated.</li>
<li>(76551a5) Refactoring of the class <code>Encumber</code>. Drag and drop events were generated from the Cappuccino side. They are now generated from the Cucumber side instead.</li>
<li>(a87e514)(531645a) Fixed: it wasn’t possible to launch the tests other than on port 3000.</li>
<li>(1854fd2) Fixed: the <code>document</code> used to dispatch the events generated by Cucapp could be null.</li>
<li>(1854fd2) Fixed: installation of gems could not be completed due to permission.</li>
<li>(74a7a3c) Fixed: documentation about how to install phantomjs has been added to the documentation.</li>
<li>(bfd7537) Fixed: style in <code>cappuccino_mappings.rb</code>.</li>
<li>(0f2fb70) Fixed: extraneous note about PhantomJS in the Readme.</li>
<li>(feedf75) Fixed: Cucapp imported <code><AppKit/AppKit.j></code>. This could raise exceptions when testing a compiled application.</li>
<li>(111c56f) Fixed: The Cucapp’s CLI now logs informations when clicking on a <code>CPView</code>.</li>
</ul>
<h2>Other Changes</h2>
<ul>
<li>(a439688) Fixed: private variables were shown in Cappuccino’s documentation.</li>
<li>(6b4a1b) New: added the Gitter chat link to the README.</li>
<li>(c468440) Fixed: tutorials have been updated with the latest features of XcodeCapp, Safari and Objective-J.</li>
<li>(5e3fe13) New: added Twitter account to the README.</li>
</ul>
<p>The changes above summarize a few hundred of the most important changes in Cappuccino 0.9.9. You can review the other 250 or so changes in the <a href="https://github.com/cappuccino/cappuccino/compare/0.9.8...0.9.9">0.9.8…0.9.9 compare view</a>.</p>
<h2>What’s New in Cappuccino 0.9.8</h2>
<p><em>Release date : 2015-03-29</em></p>
<p>Cappuccino 0.9.8 introduces multiline support for CPTextField, Cucapp, XcodeCapp 3.2 and over 300 other changes and improvements.</p>
<p>Highlights in this release:</p>
<ul>
<li>New: <code>@typdef</code> support.</li>
<li>New: multi-line support for <code>CPTextField</code>.</li>
<li>New: <code>CFError</code>, <code>CPURLErrors</code> and <code>CFError</code>.</li>
<li>New: <code>CPControl -setControlSize:</code>.</li>
<li>Redesigned 'CPPredicateEditor’ and ‘CPRuleEditor’.</li>
<li>New: all <code>@protocols</code> in Foundation and AppKit.</li>
<li>New: support for <code>capp_lint</code> and <code>objj</code> to XcodeCapp (now version 3.2).</li>
<li>Added Cucapp as part of the Cappuccino Project (<a href="https://github.com/cappuccino/cucapp">https://github.com/cappuccino/cucapp</a>)</li>
<li>New: support for more than 32 theme states in the theming system.</li>
<li>Fixed: many memory leaks in Foundation and AppKit.</li>
<li>Optimization of the runtime function <code>objj_msgSend</code>.</li>
</ul>
<h2>Foundation and Core</h2>
<ul>
<li>(a1ea371) New: <code>CPCoding</code> for <code>CPAttributedString</code>.</li>
<li>(7c6ef51) New: <code>CPDate +dateByAddingTimeInterval:</code>.</li>
<li>(e7ae969) New: <code>CPNotificationCenter -addObserverName:object:queue:usingBlock:</code>.</li>
<li>(fa5fd1e) New: <code>CPDiacriticInsensitiveSearch</code> support in <code>CPString</code> for the method <code>-(CPRange)rangeOfString:options:range:</code>. Added support for strip variants of ‘E’ ‘I’ ‘O’ ‘U’.</li>
</ul>
<p><em>Bug Fixes:</em></p>
<ul>
<li>(1dc84f9) Fixed: issue with <code>CPDateFormatter -_dateWithTimeZone:</code> when timeZone is null.</li>
<li>(acd5442) Fixed: <code>CPDateFormatter</code>‘s <code>relativeDateFormating</code> didn’t work in January and was inaccurate for some time intervals around daylight saving time changes.</li>
<li>(d176dd0) Fixed: <code>CPNumber +numberWithBool:</code> broke <code>CPComparisonPredicate</code>.</li>
<li>(a31ad2c) Fixed: <code>CPAttributedString -isEqual:</code> true despite attribute differences.</li>
<li>(9119e08) Fixed: <code>CPDateFormatter</code> didn’t work for non-“en” locales.</li>
<li>(06240d1) Fixed: <code>CPUserDefault -setFloat:forKey:</code> used <code>@selector(aValue)</code> instead of <code>@selector(floatValue)</code>.</li>
<li>(d3490f6) The method <code>encodeValueOfObjCType</code> has been renamed to <code>encodeValueOfObjJType</code> in <code>CPCoder</code>.</li>
<li>(eb883bc) Refactoring of the classes <code>CPURLRequest</code> and <code>CPURLConnection</code>:
<ul>
<li>The property <code>withCredentials</code> has been moved from <code>CPURLConnection</code> to <code>CPURLRequest</code>.</li>
<li>The accessors <code>originalRequest</code> and <code>currentRequest</code> have been added to <code>CPURLConnection</code>.</li>
<li>Added the possibility to make a deep copy of the <code>CPURLRequest</code>.</li>
</ul>
</li>
<li>(b1382e8) Fixed: a <code>CPOperation</code> marked as cancelled could not be restarted.</li>
<li>(fa7b71c) Fixed: constructors of <code>CPDate</code> did not raise warnings when the arguments were not <code>floats</code> or <code>ints</code>.</li>
</ul>
<h2>AppKit</h2>
<ul>
<li>(7b86465) New: protocols <code>CPTableViewDelegate</code> and <code>CPTableViewDataSource</code>.</li>
<li>(09eca10) New: protocol <code>CPAlertDelegate</code>.</li>
<li>(4d266f4) New: protocol <code>CPCollectionViewDelegate</code>.</li>
<li>(5b2bfce) New: protocol <code>CPApplicationDelegate</code>.</li>
<li>(db113da) New: protocols <code>CPOutlineViewDelegate</code> and <code>CPOutlineViewDataSource</code>.</li>
<li>(7d14676) New: protocol <code>CPTabViewDelegate</code>.</li>
<li>(5dd4266) New: protocol <code>CPToolbarDelegate</code>.</li>
<li>(cc9d896) New: protocol <code>CPPopoverDelegate</code>.</li>
<li>(f8ae610) New: protocol <code>CPSplitViewDelegate</code>.</li>
<li>(7ccdc50) New: protocol <code>CPAnimationDelegate</code>.</li>
<li>(d5af980) New: protocol <code>CPSoundDelegate</code>.</li>
<li>(0a85b4b) New: protocol <code>CPImageDelegate</code>.</li>
<li>(1825887) New: protocol <code>CPMenuDelegate</code>.</li>
<li>(59b80ab) New: protocol <code>CPComboDelegate</code>.</li>
<li>(9b39724) New: protocol <code>CPRuleEditorDelegate</code>.</li>
<li>(1171c9a) New: protocol <code>CPTokenFieldDelegate</code>.</li>
<li>(9d2fba3) New: protocol <code>CPWindowDelegate</code>.</li>
<li>(26118ee) New: protocols <code>CPControlTextEditingDelegate</code> and <code>CPTextFieldDelegate</code>.</li>
<li>(2513cf0) New: protocol <code>CPBrowserDelegate</code>.</li>
<li>(25bb51f) New: protocol <code>CPComboBoxDataSource</code>.</li>
<li>(6cae917) New: bidirectional <code>CPLevelIndicator</code> behavior.</li>
<li>(7d304fb) New: support for unlimited number of <code>CPTheme</code> state definitions.</li>
<li>(970b176) New: graphical <code>CPDatePicker</code> now reacts correctly to clicks on the arrow buttons with Cmd / ctrl / alt depressed.</li>
<li>(c1fb54e) New: delegate method <code>CPTableView -tableView:willRemoveView:forTableColumn:row</code>.</li>
<li>(904454d) New: delegate method <code>CPOutlineView -outlineView:willRemoveView:forTableColumn:item:</code>.</li>
<li>(1b351ad) New: <code>CPColor +checkerBoardColor</code> for debug use.</li>
<li>(050fcf2) New: <code>CPThemeStateFirstResponder</code> for <code>CPView</code>.</li>
<li>(025a43e) New: <code>CPThemeStateKeyWindow</code> for <code>CPView</code>.</li>
<li>(a544854) New: feature to select a set of dates with a shift click in a <code>CPDatePicker</code>.</li>
<li>(0f2ec90) New: support for <code>documentVisibleRect</code> in <code>CPClipView</code> and <code>CPScrollView</code>.</li>
<li>(7470f4f) New: <code>CPEvent</code> <code>scrollingDeltaX</code>, <code>scrollingDeltaY</code> and <code>hasPreciseScrollingDeltas</code>.</li>
<li>(07c0de7) New: support line-by-line scrolling with old scroll wheel devices in Firefox.</li>
<li>(12c427a) New: added the method <code>CPControl -setControlSize:</code>.</li>
<li>(3dc581e) New: added the theme attribute <code>nib2cib-adjustment-frame</code>.</li>
<li>(a3796fe) New: the method <code>-(void)bind:toObject:withKeyPath:options:</code> now checks if another exclusive binding exists.</li>
<li>(a3796fe) New: added the private method <code>+(void)_reverseSetValueFromExclusiveBinderForObject:</code> in <code>CPBinder</code> to send the value back to the bound object when you don’t know the original binding name.</li>
<li>(9c6cca7) New: multi-line support for <code>CPTextField</code>.</li>
<li>(e1d92bd) New: <code>CPDatePicker</code> now has a focus ring when editing.</li>
<li>(fa3f18c) Optimizaton: <code>CPWindow -setContentView:</code> now checks that the new view is not the same as the existing content view.</li>
</ul>
<p><em>Bug Fixes:</em></p>
<ul>
<li>(8b975f5, 8147f64) Fixed: <code>CPDatePicker</code> textual issues.</li>
<li>(21aac76) Fixed: crash in <code>CPDateFormatter -getObjectValue:forString:errorDescription:</code> with nil errorDescription.</li>
<li>(2fc501f) Fixed: <code>CPDateFormatter -stringFromDate:</code> did not return a default date.</li>
<li>(ebccbf2) Fixed: issues with timeZone and the <code>CPDatePicker</code>.</li>
<li>(93b48ba) Fixed: support for dates (<code>CPDatePicker</code>) in <code>CPPredicateEditor</code>.</li>
<li>(1814f6b) Fixed: crash when clicking on an empty <code>CPTableView</code> with variable row height.</li>
<li>(821f8fe) Fixed: error when several objects were bound to the same <code>objectController.selection.keyPath</code> and the objectController selection changed.</li>
<li>(d7b5382) Fixed: <code>CPTabView</code> did not update its tab’s labels when laid out.</li>
<li>(974942a) Fixed: OS X two finger scrolling issue.</li>
<li>(86f0724) Fixed: <code>CPRoundRectBezelStyle</code> gave a <code>CPNull</code> ThemeState.</li>
<li>(5b4e7df) Fixed: placeholder string shown while editing empty <code>CPTextField</code>.</li>
<li>(be3c4ab) Fixed: <code>CPPopover</code> not closing in some browsers.</li>
<li>(15e16d8) Fixed: editing text fields on different windows could clobber each other’s contents.</li>
<li>(8bdaeab) Fixed: selection behavior when implementing <code>CPTableView -selectionIndexesForProposedSelection:</code>
</li>
<li>(1557c56) Fixed: crash due to wrong delegate bitmask in <code>CPOutlineView</code>.</li>
<li>(af83065) Fixed: warning due to use of <code>aDOMEvent.returnValue</code>.</li>
<li>(3e187df) Fixed: <code>CPPopover transitionend</code> not correctly called in random cases.</li>
<li>(07f7ad0) Fixed: crash on Cmd + Z keypress within a control in a <code>CPPopover</code>.</li>
<li>(de4bc67) Fixed: <code>CPToolTip</code> added to <code>CPWindow</code> wrong.</li>
<li>(af37616) Fixed: <code>CPToolTip</code> still shown when closing a window asynchronously.</li>
<li>(4dadf0c) Fixed: <code>CPPopover</code> did not update its frame after <code>setContentSize:</code>.</li>
<li>(3c0f6d3) Fixed: <code>CPMenu</code> enabled state was not visually updated upon change of a bound value.</li>
<li>(951e811) Fixed: <code>CPPopover -popverWillShow:</code> was called too early.</li>
<li>(584955c) Fixed: <code>CPPopover -updateFrameWithSize:</code> always assumed the popover was open.</li>
<li>(59a9727) Fixed: crash due to <code>CPTooltip</code> remaining attached to a closed <code>CPWindow</code>.</li>
<li>(26d6450) Fixed: variable scope in <code>CPSegmentedControl</code>.</li>
<li>(7fc014f) Fixed: <code>contentInset</code> theme value read two times in <code>CPToolBar</code>.</li>
<li>(d46b9b5) Fixed: textual <code>CPDatePicker</code> stepper incorrectly enabled after decode.</li>
<li>(61f6ef4) Fixed: crash in <code>CALayer</code> when running non-DOM platform.</li>
<li>(ba27a4c) Fixed: new first responder and key window theme states not always applied.</li>
<li>(a4702d4) Fixed: illegible white on grey text in <code>CPTableView</code>.</li>
<li>(f953b4d) Fixed: warning when closing a <code>CPPopover</code> for the first time.</li>
<li>(741ac31) Fixed: issue when making the first paste with a right click.</li>
<li>(089d564) Fixed: <code>CPDatePicker</code> firstResponder issue.</li>
<li>(ac53b30) Fixed: <code>CPComboBox</code> doesn’t work in modal.</li>
<li>(1e12973) Fixed: wrong text colour in a <code>CPTableView</code> cell when editing another cell.</li>
<li>(a129f2c) Fixed: <code>CPTextField</code> didn’t update its style while editing.</li>
<li>(3364e6c) Fixed: unsigned delegate methods of <code>CPTokenField</code> erased by <code>CPTextField</code>.</li>
<li>(cd6ffba) Fixed: <code>CPPanel</code> and <code>CPPopover</code> didn’t close when hitting escape.</li>
<li>(972c142) Fixed: <code>CPDatePicker</code> value became wrong after a stepper was clicked.</li>
<li>(148f317) Fixed: when closing a <code>CPPanel</code> with escape, the delegates were not called.</li>
<li>(3b9a012) Fixed: <code>CPTextField -setTextColor:</code> did not change the color of the placeholder.</li>
<li>(43ed8be) Fixed: delegate method <code>popoverWillShow:</code> called when the popover was already open.</li>
<li>(7bd27eb) Fixed: crash of press tool when missing theme attribute(s).</li>
<li>(34072f3) Fixed: <code>stringValue</code> was used instead of <code>intValue</code> in <code>CPDatePicker</code>.</li>
<li>(f8457bd) Fixed: <code>CPPopover _closeOnBlur</code> had accessors.</li>
<li>(c274f27) Fixed: escape on a <code>CPanel</code> or a <code>CPPopover</code> broke the key chain event.</li>
<li>(88954b9) Fixed: <code>CPCollectionView</code> height was too low.</li>
<li>(7de3022) Fixed: animation of a <code>CPPopover</code> didn’t work as in Cocoa.</li>
<li>(c642d76) Fixed: <code>CPPopover</code> didn’t handle semi-transient behavior.</li>
<li>(3652931) Fixed: <code>CPTextField -setTextFieldBackgroundColor:</code> had not effect.</li>
<li>(4a3f51e) Fixed: <code>CPDatePicker</code> did not use days, months, year when used within a <code>CPPredicateEditor</code>.</li>
<li>(293114f) Fixed: delete methods erased entire field in <code>CPTextField</code>.</li>
<li>(01b631a) Fixed: <code>CPPopover</code> not showing in correct platform window.</li>
<li>(d686a0d) Fixed: <code>CPTextField</code> bindings delete data in case of multiple selection after tabbing out with no editing.</li>
<li>(7890085) Fixed: <code>CPPopover</code> animation issues.</li>
<li>(26e29df) Fixed: <code>CPRuleEditor/CPPredicateEditor</code> alignments.</li>
<li>(3e4c038) Fixed: memory leaks in <code>CPOutlineView</code> and corrupted itemInfos dictionary.</li>
<li>(55861a8) Fixed: transient popovers were not closed by a right click.</li>
<li>(b3f7f44) New: set user event flag based on presence of DOMEvent in <code>CPTextField</code>.</li>
<li>(a04f104) Fixed: checking if a <code>CPTextField</code> is usable in a <code>CPPlatformWindow</code>.</li>
<li>(48b3eb2) Fixed: delegate method <code>popoverDidShow:</code> not called with a none animated <code>CPPopover</code>.</li>
<li>(b1981bb) Fixed: <code>activateIgnoringOtherApps:shouldIgnoreOtherApps</code> did not call <code>_didBecomeActive</code> in <code>CPApplication</code>.</li>
<li>(4cebfbc) Removed outdated <code>collectionViewDidChangeSelection:</code> delegate method.</li>
<li>(b2f1477) Fixed: wrong condition in <code>CPApplication</code> in <code>_didBecomeActive</code>.</li>
<li>(9ed30f5) Fixed: methods <code>viewDidMoveToSuperview</code>, <code>viewDidMoveToWindow</code>, <code>viewWillMoveToSuperview</code> and <code>viewWillMoveToWindow</code> not called as in Cocoa.</li>
<li>(abdf115) Fixed: memory leaks with <code>CPNotification</code>.</li>
<li>(92a5fa1) Fixed: crash of the <code>CPOutlineView</code> when reloading and asssigning an item to another parent.</li>
<li>(f1cfa14) Fixed: buttons in <code>CPButtonBar</code> were never removed from the <code>CPButtonBar</code>
</li>
<li>(3f4ba87) Fixed: <code>CPTooltip</code> content alignement was mistakenly set to be justified.</li>
<li>(b922144) Fixed: some tooltips were truncated.</li>
<li>(fe6a576) Fixed: Aristo 1 close button of inactive windows looked like the same in active windows.</li>
<li>(f007ecf) Fixed: wrong text-color for <code>CPDatePicker</code>.</li>
<li>(ae5b3c4) Fixed: <code>CPDatePicker</code> didn’t work in a <code>CPTableView</code>.</li>
<li>(ab4f0f8) Fixed: display-issue in Google Chrome caused by a negative z-index.</li>
<li>(48276f9) Fixed: <code>CPPlatformString +sizeWithFont:inWidth</code> sometimes calculated a width 1 px too narrow.</li>
<li>(8d036ab) Fixed: backspace in a non-editable or disabled <code>CPTextField</code> triggered the browser’s page back button.</li>
<li>(b9b396a) Fixed: <code>CPButton -setHidden:</code> in a button bar was not working.</li>
<li>(1e39281) Fixed: the method <code>-(void)unbindAllForObject:</code> of the class <code>CPBinder</code> did not work.</li>
<li>(7db488c) Fixed: memory leaks in <code>CPImageView</code> due to the <code>CPImageDidLoadNotification</code>.</li>
<li>(a3796fe) Fixed: memory leaks for the classes <code>CPPopUpButton</code>, <code>CPRadio</code> and <code>CPSegmentedControl</code> when using bindings.</li>
<li>(83ec89f) Fixed: <code>CPDatePicker</code> incorrectly sent an action to its target when using the method <code>-(void)setObjectValue:</code> or <code>-(void)setDateValue:</code>.</li>
<li>(c1e89bd) Fixed: <code>CPDatePicker</code> did not behave a a <code>CPTextField</code> in a <code>CPTableView</code> with regards to row selection.</li>
<li>(b617d60) Fixed: when encoding and decoding a <code>CPTableView</code>, several <code>_CPTableDrawView</code>s were added to the view.</li>
<li>(921fcbd) Fixed: the first responder would sometimes stop being the first responder when moved between two views in the same window.</li>
<li>(5979baa) Fixed: <code>CPPopover</code>’s <code>-popoverShouldClose:</code> delegate method was not called in transient or semi-transient mode.</li>
<li>(608480c) <code>CPPopover</code> windows now trap the next mouse event automatically if the popover is still visible after a <code>performClose:</code>.</li>
<li>(09e3c5e) Fixed: ability to select part of a textual <code>CPDatePicker</code> when dragging.</li>
<li>(f295667) Fixed: <code>Key Value Observing</code> generated new and old values in the change dictionary regardless of the options provided when adding the observer. Now it respects the options passed in the method <code>addObserver:forKeyPath:options:context:</code>. This can result in speed improvements of up to 200%.</li>
<li>(8e346f1) Fixed: when a <code>CPTableView</code> had its selection style set to <code>CPTableViewSelectionHighlightStyleNone</code>, two clicks were required to select a control in a row.</li>
<li>(328172c) Fixed: <code>CPTableView</code> enabled the bezeled state of a non-selectable <code>CPTextField</code> when right clicked.</li>
<li>(a75e5d9) Fixed: a selectable text mouse cursor style was not shown when the mouse hovered above an enabled and editable or selectable <code>CPTextField</code>.</li>
<li>(2e3c658) Fixed: when closing and reopening a <code>CPWindow</code> the first responder would not reset.</li>
<li>(459374d) Fixed: the menu of <code>CPComboBox</code> would not move in tandem with its control’s window.</li>
<li>(f486c02) Fixed: some <code>CPComboBox</code> APIs. You can now set the <code>font</code>, <code>alignment</code>, <code>intercellSpacing</code> and <code>itemHeight</code> of the <code>CPComboBox</code> without <code>listDelegate</code>.</li>
<li>(2dff805) The <code>content-inset</code> of a <code>CPComboBox</code> has been changed for better alignment.</li>
<li>(5cad5b0) Fixed: the text cursor of a <code>CPTextField</code> didn’t take the <code>content-inset</code> into account.</li>
<li>(d8718cc) Fixed: when switching between two <code>CPPlatformWindow</code>s, the new targeted window didn’t get the first <code>CPEvent</code> which instead went to the previous window.</li>
<li>(d8718cc) Fixed: a <code>CPPanel</code> could not be opened in a <code>CPPlatformWindow</code> other than the main one.</li>
<li>(afe326c) New: you can now set a specific height for a <code>CPTextField</code> even if a control size is set.</li>
<li>(5a99e18) Fixed: chaining sheet dialogs in a <code>CPWindow</code> wouldn’t work.</li>
<li>(d5b4d66) Fixed: opening a <code>CPMenu</code> with items and then opening a <code>CPMenu</code> without any items would cause a crash.</li>
<li>(05d602c) <code>CPDatePicker</code> no longer holds the character <code>CPCarriageReturnCharacter</code>.</li>
<li>(c4fbef2) Fixed: crash when dragging the first filter of a <code>CPRuleEditor</code> above the first line of the rule editor.</li>
<li>(f17898d, 0fb7399) Fixed: <code>CPPopover</code> would no longer move together with the control it was attached to.</li>
<li>(3aa8eb9) Fixed: blank screen in some browser. The <code>z-index</code> of the main <code>div</code> of the Cappuccino is now set to 0 instead of -1000.</li>
<li>(82dc126) Fixed: memory leaks in the classes <code>CPTableView</code>, <code>CPScrollView</code>, <code>CPClipeView</code>, <code>CPComboBox</code>, <code>CPTextField</code> and <code>CPView</code>.</li>
<li>(82dc126) Fixed: a null <code>intercellSpacing</code> would crash <code>CPComboBox</code>. The delegate method <code>comboBoxWillDismiss:</code> did not work.</li>
<li>(f4c2a0a) Fixed: the add and remove button of a <code>CPPredicateEditor</code> were blurred.</li>
<li>(0265fc3) Fixed: the size of a <code>CPCheckBox</code> was incorrectly calculated when using the constructor <code>checkBoxWithTitle:</code>.</li>
<li>(02f301d) Fixed: <code>CPStepper</code> class method returned <code>id</code> instead of <code>CPStepper</code> type.</li>
<li>(f2528b5) Fixed: inconsistent naming of <code>CPDOMDisplayServerSetStyleBackgroundSize</code>
</li>
<li>(a2c0b47) Fixed: <code>CPDatePicker</code> did not gray out dates outside of minDate and maxDate.</li>
</ul>
<h2>Objective-J</h2>
<ul>
<li>(5ab346e) New: the keyword <code>@typedef</code> has been added to Objective-J. This keyword allows you to define new types for your application.</li>
<li>(d3490f6) New: <code>CFError</code> has been added to the framework. <code>CPError</code> is now toll-free bridged with <code>CFError</code>. This mirrors the implementation in Cocoa.</li>
<li>(d3490f6) New: <code>CPURLErrors</code> and <code>CFNetworkErrors</code> have been added to the framework. They respect the same error codes as in Cocoa.</li>
<li>(2411edd) New: faster <code>objj_msgSend</code>.</li>
<li>(3331778) New: <code>CFHTTPRequest</code> now accepts the withCredentials property.</li>
<li>(ffcef90) New: <code>CPURLRequest</code> now accepts withCredentials.</li>
</ul>
<p><em>Bug Fixes:</em></p>
<ul>
<li>(ee668df) Fixed: ivars with accessors in a Category caused a duplicate ivar error.</li>
<li>(8c43f4f) Fixed: potential error while skipping whitespace in XML plists.</li>
<li>(1dbd41a) Fixed: error in Internet Explorer if Info.plist was served with the wrong content type.</li>
<li>(d629a13) Fixed: issue with InvalidStateError when using <code>CPURLConnection</code> in IE11.</li>
<li>(2f7681f) Fixed: the compiler did not show erorrs on the first line of a file.</li>
<li>(13fe318) Fixed: <code>Objective-J</code> now gives an understandable error when the compiler cannot find a protocol in a class declaration.</li>
<li>(6f90e76) Fixed: the keyword <code>@ref</code> did not work correctly if the variable was an ivar.</li>
</ul>
<h2>XcodeCapp</h2>
<ul>
<li>(973940f) New: integration of <code>capp_lint</code> in XcodeCapp.</li>
<li>(f14add2) New: added option in XcodeCapp for displaying errors in notifications.</li>
<li>(4806c52) New: update Cappuccino from XcodeCapp.</li>
<li>(b028e62) New: support of objj in XcodeCapp.</li>
<li>(148960e) New: XcodeCapp now has an option to select if it becomes active or not when opening the errors & warnings panel.</li>
</ul>
<p><em>Bug Fixes:</em></p>
<ul>
<li>(8f5aa0e) Fixed: XcodeCapp documentation was outdated.</li>
</ul>
<h2>Nib2cib</h2>
<ul>
<li>(0cc1679) New: <code>nib2cib</code> support for the standard color panel toolbar item.</li>
</ul>
<p><em>Bug Fixes:</em></p>
<ul>
<li>(4a31467) Fixed: <code>CPSegementedControl</code> causes an error in <code>nib2cib</code>.</li>
<li>(e7a0e9a) Fixed: “the built in image NSRadioButton is not supported” error.</li>
<li>(b28e0d1) Fixed: <code>nib2cib</code> of <code>CPDatePicker</code> would not convert enabled state.</li>
<li>(c28da78) Fixed: <code>nib2cib</code> of segmented control would not convert enabled state.</li>
</ul>
<h2>Misc</h2>
<ul>
<li>(fadffee) New: <code>bootstrap.sh</code> now uses SSL.</li>
<li>(febce68) New: don’t run Travis setup quietly to make it easier to track setup errors.</li>
<li>(2e015c9) New: <code>Doxygen</code> theme refresh.</li>
<li>(6334458) New: <code>CFPropertyList</code> unit tests have been added.</li>
<li>(79c2576) New: manual <code>AppKit</code> tests have been added.</li>
<li>(9e918cc) New: ability to perform offline bootstraping.</li>
<li>(cd19fc7) New: <code>capp_lint</code> is installed with <code>jake install</code>.</li>
<li>(02f36a1) New: theme kitchen sink manual test to exercise many themable controls in many states at once.</li>
<li>(b028e62) New: options <code>-m</code>, <code>-I</code>, <code>-h</code> added to <code>objj</code> to compile several files.</li>
<li>(64a15db) New: when building your application you can now disable the <code>CommonJS</code> build phase by setting the system environement variable <code>IGNORE_ENV_COMMONJS</code>.</li>
<li>(ef4cd6a) New: <code>--theme</code> option for capp tool.</li>
<li>(06d0357) The Objective-J VIM highlighting has been updated and is similar to the official <code>Objective-C</code> VIM highlighting and the official <code>JavaScript</code> VIM highlighting.</li>
<li>(fdc5ed9) New: the configuration files of <code>doxygen</code> have been redesigned. The command <code>jake docset</code> has been added.</li>
</ul>
<p><em>Bug Fixes:</em></p>
<ul>
<li>(fa66c26) Fixed: broken documentation.</li>
<li>(23ff035) Fixed: wrong link to install <code>homebrew</code>.</li>
<li>(d51f179) Fixed: error when running some XML tests with rhino.</li>
<li>(c21d0c6) Fixed: dependency on tusk in <code>jakefile</code>.</li>
<li>(372372a) Fixed: <code>capp_lint</code> didn’t handle protocol.</li>
<li>(8d7c47a) Remove explicit use of Mac OS X 10.5 SDK, replace with latest OS X in <code>fontinfo</code>.</li>
<li>(7958775, 75a4d8a) Fixed: <code>bootstrap.sh</code> didn’t handle specific OpenJDK Runtime Environment version. <code>bootstrap.sh</code> could not filter the OpenJDK version key out correctly.</li>
<li>(a822ec7) Fixed: <code>jake</code> did not work in the Cappuccino directory for non-Mac OS X systems.</li>
<li>(e155cca) Old CI scripts have been removed from the Tools directory.</li>
<li>(c484e4a) NativeHost is no longer built by default.</li>
<li>(c3fc6a0) Fixed: the URL of the current release version of Cappuccino was wrong in the documentation.</li>
<li>(e40612a) Fixed: in the <code>Jakefile</code> template, the configuration build environment parameter could have multiple values. Now this variable is correctly set by detecting the build environment.</li>
<li>(de3eb86) Fixed: some warnings when compiling Cappuccino with <code>rhino</code>.</li>
<li>(ee688d9) Fixed: showcase of themes was broken.</li>
</ul>
<h2>OJTest</h2>
<ul>
<li>(1ab1ac2) New: ability to launch a set of tests from a test file.</li>
<li>(9bb55a2) New: <code>+setUp</code> and <code>+tearDown</code> methods.</li>
<li>(410d9ce) New: print the number of tests launched by <code>OJTest</code>.</li>
<li>(080b5b7) New: warnings raised when tests are declared several times.</li>
</ul>
<p><em>Bug Fixes:</em></p>
<ul>
<li>(1f6cc19) Fixed: coverage options for <code>OJTest</code>.</li>
</ul>
<h2>Other Changes</h2>
<p>The changes above summarise a few hundred of the most important changes in Cappuccino 0.9.8. You can review the other 700 or so changes in the <a href="https://github.com/cappuccino/cappuccino/compare/0.9.7...0.9.8">0.9.7…0.9.8 compare view</a>.</p>
<h2>What’s New in Cappuccino 0.9.7</h2>
<p><em>Release date: 2013-11-28</em></p>
<p>Cappuccino 0.9.7 introduces Aristo 2, Objective-J 2.0 and over 500 other changes and improvements.</p>
<p>Highlights in this release:</p>
<ul>
<li>Objective-J 2.0: dictionary literals, array literals, pass by reference and protocols.</li>
<li>Compiler rewritten from ground up to generate faster than ever Cappuccino application code.</li>
<li>Aristo 2 - a new, lighter Cappuccino theme made by Sofa.</li>
<li>Native browser copy and paste support.</li>
<li>Scalable <code>CPView</code> ('zoom in’ or out within a view and all its subviews).</li>
<li>Multiple-value bindings support.</li>
<li>Lion style “view based” <code>CPTableView</code>. 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).</li>
<li>XcodeCapp 3 featuring a much smoother experience with project history, speed and robustness improvements and throughout better UI.</li>
<li>
<code>CPDatePicker</code>.</li>
<li>
<code>CPLocale</code>.</li>
<li>
<code>- CPObject performSelector:withObject:afterDelay:</code>.</li>
<li>
<code>CPError</code>.</li>
<li>
<code>CPByteCountFormatter</code>.</li>
</ul>
<h2>Foundation and Core</h2>
<ul>
<li>(176440e) New: <code>- CPURLConnection sendSynchronousRequest:</code> return nil if <code>CPHTTPRequest</code> failed.</li>
<li>(76e9725) New: error on adding <code>CPNotFound</code> to an index set.</li>
<li>(75d73d3) New: format object descriptions like object literals.</li>
<li>(55ec70c) New: <code>CPError</code> class.</li>
<li>(04026c0) New: faster <code>- CPArray objectsAtIndexes:</code> when the array is a native array (up to 6X).</li>
<li>(0268f98) New: faster <code>- CPMutableArray removeObjectIdenticalTo:</code> when the array is a native array (up to 10X).</li>
<li>(5200f94) New: dictionary literals in Objective-J 2.0.</li>
<li>(472848d) New: array literals in Objective-J 2.0.</li>
<li>(f4b08a9) New: <code>- CPObject performSelector:withObject:afterDelay:</code> and related methods.</li>
<li>(34faf36) New: @ref and @deref in Objective-J 2.0.</li>
<li>(c550cd7) New: optimise <code>- CPArray enumerateObjectsWithOptions:usingBlock:</code>.</li>
<li>(ecc1e77) New: added macro/identifier concatenation with the ‘##’ operator.</li>
<li>(a373081) New: <code>CFBundle.identifier</code>, <code>CFBundle.bundleWithIdentifier</code>, <code>- CPBundle -bundleWithIdentifier</code>.</li>
<li>(fe26e6c) New: <code>+ CPException raise:format:</code>.</li>
<li>(1f280b3) New: <code>- CPNumberFormatter localizedStringFromNumber:numberStyle:</code>.</li>
<li>(bf94dd3) New: KVC <code>setValue:forKey:</code> now automatically unwraps <code>CPValue</code>.</li>
<li>(d3a44cb) New: <code>objj_getClassList()</code>.</li>
<li>(4221acf) New: more fine-grained <code>OBJJ_PROGRESS_CALLBACK</code> calls, allowing smoother progress bars.</li>
<li>(42ad40d) New: sort the keys in <code>- CPDictionary description</code>. This makes it easier to find an item in a large dictionary.</li>
<li>(d38125d) New: Objective-J protocols supports.</li>
<li>(d3ab2a0) New: “//example.com/x” style URL support in <code>CPURL</code> and <code>CFURL</code>.</li>
</ul>
<p><em>Bug Fixes:</em></p>
<ul>
<li>(13fbfb6) Fix to enable the startup loader to continue if dynamically loaded.</li>
<li>(23401d3) Fixed: error in function <code>CPDescriptionOfObject</code> when a JSON object property has a null value.</li>
<li>(24d6e58) Fixed: <code>CPPredicate TRUEPREDICATE</code> didn’t work.</li>
<li>(1f0ab2a) Fixed: bad formatting of negative numbers by <code>CPNumberFormatter</code>.</li>
<li>(2371438) Fixed: KVC array <code>removeObjectsInArray:</code>.</li>
<li>(b34e24d) Fixed: <code>mutableArrayValueForKey: … removeObjectsInArray</code> should remove all instances of the found objects.</li>
<li>(e17253d) Fixed: <code>CPDecimalCompare</code> problems when comparing to zero.</li>
<li>(181c4ad) Fixed: support IBOutlet as a synonym to @outlet.</li>
<li>(63ae584) Fixed: <code>CPDecimalRound</code> should return a result in all cases.</li>
<li>(fc403d6) Fixed: <code>CPString compare:</code> method against nil and <code>CPNull</code>.</li>
<li>(f52f118) Fixed: array sort using descriptors involving nil and <code>CPNull</code>.</li>
<li>(c437024) Fixed: subclasses of <code>CPMutableArray</code> had broken <code>removeObject:</code>.</li>
<li>(6d1c4a9) Fixed: <code>- CPMutableArray removeObjectIdenticalTo:</code> did not remove all instances, was documented incorrectly.</li>
<li>(ae2ed8b) Fixed: <code>CPAttributedString</code> problems with empty strings and out of range indexes.</li>
<li>(6ee3a39) <code>- CPDictionary setObject:forKey:</code> will log deprecated warning when passing nil object or key.</li>
<li>(5312524) Fixed: define navigator.userAgent as another ugly Rhino fix.</li>
<li>(7bef84e) Fixed: allow <code>CPDecimal</code> to handle decimal numbers with leading zeros.</li>
<li>(7d51a34) Fixed: <code>- CPUndoManager isUndoRegistrationEnabled</code>.</li>
<li>(39b49d4) Fixed: <code>CPNumberFormatter</code> formatted @“” wrong.</li>
<li>(bd6d2e7) Fixed: <code>CPString stringByTrimmingCharactersInSet</code>.</li>
<li>(05fa505) Fixed: <code>CPArray</code> did not allow binding to @count.</li>
<li>(cc2503a) Fixed: <code>CFBundle.prototype.bundleURL()</code> did not return an absolute URL.</li>
<li>(d64ea28) Fixed: <code>- CPBundle bundleWithIdentifier</code> did not create <code>CPBundle</code> when necessary.</li>
<li>(ffdee8c) Fixed: <code>[CPExpression isEqual:nil]</code> and <code>[CPPredicate isEqual:nil]</code>.</li>
<li>(fe79628) Fixed: <code>CGRectFromString</code> made bad <code>CGSizeFromString</code> call.</li>
<li>(2290574) Fixed: crash on <code>CPArray/CPDictionary description</code> if a value was the window object.</li>
<li>(e59389b) Fixed: crash in <code>CPArray/CPDictionary description</code> containing self referential JS object.</li>
<li>(0f53ced) Fixed: comparing a <code>CPNumber</code> vs nil or <code>CPNull</code> didn’t throw an exception.</li>
<li>(3419f6f) <code>CPTimer</code> number of seconds interval set to 0.1 if equal to 0.0, like in Cocoa.</li>
<li>(f75955b) Fixed: <code>CPNumberFormatter</code> minimum and maximum wrong encoding when set to nil.</li>
<li>(df2be92) Fixed: <code>CPNumber numberWithBool:</code> not returning a number.</li>
</ul>
<h2>AppKit</h2>
<ul>
<li>(bafd62d) New: <code>- CPCollectionView draggingViewForItemsAtIndexes:withEvent:offset:</code>.</li>
<li>(27cda34) New: improve performance of row and column drag and drop for <code>CPTableView</code>.</li>
<li>(67f7649) New: <code>CPTableView</code> with Lion’s view-based API.</li>
<li>(4369f4b) New: set <code>CPThemeStateEditable</code> in <code>CPTextField setEditable:</code>.</li>
<li>(f4904b8) New: <code>- CPCib initWithContentsOfURL:</code> return nil if the returned data is nil.</li>
<li>(7bf5f6f) New: added <code>scrollRectToVisible</code> when <code>CPTokenField</code> becomes first responder.</li>
<li>(8b5c0fb) New: CPCollectionView - allow the prototype view to be loaded from a cib.</li>
<li>(6561e4f) New: Aristo 2 theme.</li>
<li>(4757648) New: CPAlert can be moved now.</li>
<li>(edc6244) New: make <code>CPBox</code> themable.</li>
<li>(b82225e) New: make <code>CPLevelIndicator</code> themable.</li>
<li>(347de2c) New: make <code>CPSplitView</code> themable.</li>
<li>(2da0142) New: make find/search/cancel buttons themable.</li>
<li>(ce33737) New: make <code>CPBrowser</code> themable.</li>
<li>(844ed59) New: <code>CPCursor</code> will now look in the theme to get system cursors.</li>
<li>(cebf8d3) New: make standard template images plus, minus and action themable.</li>
<li>(f30e846) New: added theme value to set the position of the buttons relative to the type of window.</li>
<li>(3b72626) New: added inactive state to window title bar (for windows which are neither key nor main).</li>
<li>(348d689) New: close popovers attached to controls in windows which close.</li>
<li>(25633f0) New: child window support.</li>
<li>(b3bf190) New: reduce the menu sticky interval to 0.4s which improves UX and is more like Cocoa behavior.</li>
<li>(8cbfc79) New: makes popover’s background and stroke color (both minimal and HUD style) themable.</li>
<li>(18d77ca) New: <code>CPTokenField</code> menu per token support (<code>tokenField:menuForRepresentedObject:</code>).</li>
<li>(4680f0f) New: <code>CPGradient initWithStartingColor:endingColor:</code>.</li>
<li>(d1ebf8d) New: make <code>CPShadow</code> mutable (e.g. <code>setShadowColor:</code>).</li>
<li>(08ad614) New: <code>- CPGradient drawInBezierPath:angle:</code>.</li>
<li>(e376f97) New: <code>- CPShadow set</code>.</li>
<li>(8b17b52) New: <code>value</code> and <code>isIndeterminate</code> binding support for <code>CPProgressIndicator</code>.</li>
<li>(4791973) New: don’t limit max number of rows for collection views if max number of rows is set to 0.</li>
<li>(055d43e) New: custom system cursors to use sprited PNG’s for non IE browsers.</li>
<li>(1c6d2f7) New: don’t change the platform window’s title unless the Cappuccino window is full platform.</li>
<li>(e03622b) New: <code>+ CPBezierPath bezierPathWithRoundedRect:xRadius:yRadius:</code>.</li>
<li>(02b7198) New: action bindings for <code>CPMenuItem</code>.</li>
<li>(cd54687) New: when a column header is pressed and is the _editingColumn, make the table view first responder.</li>
<li>(92c2ed9) New: table view <code>selectAll:</code> and <code>deselectAll:</code>.</li>
<li>(3591ba0) New: CPImageView bindings improvements.</li>
<li>(a9952a2) New: CPRadioGroup bindings - <code>selectedValue</code>, <code>selectedTag</code>, <code>selectedIndex</code>, <code>enabled</code> and <code>hidden</code>.</li>
<li>(77d2ebb) New: <code>shouldReorderColumn</code> delegate method for <code>CPTableView</code>.</li>
<li>(262bd5b) New: use dedicated class, <code>_CPStateMarker</code>, instead of <code>CPString</code> for selection markers.</li>
<li>(72c277d) New: <code>CPSegmentedControl</code> segment selection bindings support.</li>
<li>(7fab8d9) New: don’t allow views from another window to be next/previouskeyViews.</li>
<li>(ab692bb) New: <code>CGContextSetLineDash</code>.</li>
<li>(ffbd981) New: <code>- CPBezierPath setLineDash:</code> and <code>getLineDash:</code>.</li>
<li>(5868a4c) New: <code>- CPDocumentController documentForWindow</code> and <code>hasEditedDocuments</code>.</li>
<li>(1649ea6) New: <code>CPDatePicker</code>.</li>
<li>(1649ea6) New: <code>CPLocale</code>.</li>
<li>(6ef5b46) New: <code>CPTokenField</code> sends focus and blur notifications.</li>
<li>(100f1b0) New: about panel is now constructed in code, rather than in a CIB.</li>
<li>(95d4bef) New: <code>- CPColor hueComponent</code>, <code>saturationComponent</code> and <code>brightnessComponent</code>.</li>
<li>(7b59ec9) New: allow sheets to have toolbars.</li>
<li>(44a8726) New: type check - <code>CPPasteBoard setString:forType:</code> to catch strange bugs earlier.</li>
<li>(ad33411) New: <code>CGContextDrawRadialGradient</code> support.</li>
<li>(25f54c8) New: <code>CGPathContainsPoint</code>.</li>
<li>(a9a0b1c) New: JavaScript clipboard API support for pasting.</li>
<li>(93c2762) New: improve <code>CPPopover</code> theamability.</li>
<li>(b258b1a) New: appkit<em>tag</em>dom_elements now tags with UIDs too. Tagging with UIDs can make it much easier to debug encoding/decoding related bugs where it’s not clear that the right view ended up in the right spot.</li>
<li>(5a7c2e5) New: added themable attribute for grid line thickness in table view.</li>
<li>(7f08997) New: added themable attribute for divider thickness in table header view.</li>
<li>(2183c6d) New: added methods to globally turn off window constraining when resizing the platform window.</li>
<li>(fc93190) New: notify when the platform window resizes.</li>
<li>(377618d) New: non-editable but selectable text fields can become the first responder.</li>
<li>(03acecd) New: selectable text field Select All (Cmd-A, Ctrl-A) support.</li>
<li>(638d8de) New: triple-click selectable text field to select all.</li>
<li>(648dc6e) New: Edit > Delete menu item support for text fields.</li>
<li>(5958220) New: <code>- CPTextField deleteForward:</code>.</li>
<li>(08eff6e) New: grey out Edit menu non applicable items for text fields.</li>
<li>(8503081) New: <code>shouldExpand/Collapse</code> delegate for <code>CPOutlineView</code>.</li>
<li>(ef5f26f) New: added support for scaling in <code>CPView</code> (<code>scaleUnitSquareToSize</code> and <code>setScaleSize</code>).</li>
<li>(cf19aef) New: added method <code>selectionIndexesForProposedSelection</code> in <code>CPOutlineView</code>.</li>
<li>(ebc1025) New: fill in <code>userInfo</code> for <code>CPTextDidEndEditingNotification</code>.</li>
<li>(1cec1b0) New: <code>CPTableView</code> drop view themable.</li>
<li>(6a7e0ff) Reworked PatternColor to be a lot smarter, support much more concise expression of images.</li>