Objective-C GData Framework Release Notes

Project site:     http://code.google.com/p/gdata-objectivec-client/
Discussion group: http://groups.google.com/group/gdata-objectivec-client-framework

Changes since 1.4.0

Additions

- Services and tickets now support properties to make it easier to pass
  parameters to service callback methods.  Tickets inherit a copy of the
  properties set in the service instance.

- Shim XML layer used for GDATA_IPHONE builds

- Added service support for Google AuthSub tokens

Bugs fixed

- Improved namespaced attribute support in GDataObject

- Fixed two ivar leaks in GDataServiceBase

- GDataObject request generation refactored into its own routine in GDataServiceBase.

- No longer testing isPrimary in isEqual method in email, postal address, 
  organization, IM, and phone elements.

- Fixed typo in YouTube sample which passed password as client ID 
  (thanks wshao99)

- Contact feed class now registered so it can be looked up for XML feeds
  with the proper category

- HTTP logging now uses NSDateFormatter rather than NSCalendarDate

- Escaping of links fixed in http logging


Release 1.4.0
19-March-2008
Changes since 1.3.0

Additions

- Added YouTube and Contacts support and sample applications

- Each client service now has a unique header which can be included by client
  applications instead of the full header, such as 
  #import "GData/GDataCalendar.h" rather than #import "GData/GData.h".

- Run loop modes can be specified for services and http fetchers, allowing
  networking during modal dialogs.
  
- Added GDataImplicitValueConstruct as base class for elements with no
  children or attribtues
  
- Added GDATA_DEFINES header, GDATA_FOUNDATION_ONLY and GDATA_IPHONE conditional
  compilation tests
  
- Added kUseRegisteredEntryClass constant instead of nil for specifying 
  dynamic lookup of entry objects by "kind" category in classForEntries method
  
- Added rel attribute and URL accessor to GDataFeedLink, and relatedLink 
  category on NSArray in GDataLink
  
- Added routine to generate URLs for Picasa Web Albums contact feeds

- Added AreBoolsEqual() utility function

- Added GDataUtilities class for general-purpose utility methods

Bugs fixed

- Google Docs sample now does authenticated document downloads.

- Fixed potential crash when a previously-issued auth token becomes
  invalid.

- Fixed leak of category list in feed base class (thanks riggle)

- Framework now built as garbage collection-compatible

- Unit test failures during garbage collection fixed

- Copy methods on GDataObjects now do deep copies

- Added missing constant kGDataBatchOperationQuery (thanks riggle)

- Non-whitespace control characters are now removed from all attribute values
  and element text (thanks riggle)
  
- Render pre-11th century dates with a leading zero (thanks riggle)

- Renamed "initExtensionDeclarations" as "addExtensionDeclarations" and similar

- Unified itemsForDescription mechanism into the GDataObject base class

- Unit tests now invoke stringValue whenever needed so they can be omitted
  from key-value test paths

- Added "charset=UTF-8" to the XML header and "Content-Transfer-Encoding=binary"
  to binary header inside input stream MIME documents 
  
- GDataFeedBase now specifies that entry class should be looked up dynamically
  rather than assuming they are of the class GDataEntryBase.
  
- Removed the deprecated, never-used gd:contactSection support


Release 1.3.0
5-December-2007
Changes since 1.2.0

Additions

- Added kGDataLinkRelWebContent (thanks riggle)

- Calendar events now have separate methods for recurrence and non-recurrence
  reminders, and calling setRecurrence will move the reminders appropriately
  
- Added batch support for Calendar and Spreadsheet. Calendar sample app now
  does batch delete of events when more than one event is selected.
  
- Added syncEvent, sequenceNumber, and iCalUID to Calendar event entries.

- Added spreadsheet worksheet methods for setting row and column limits,
  and default values for those in new spreadsheets.
  
- GDataService classes can now optionally follow "next" links when retrieving
  feeds.  This must be enabled by calling setServiceShouldFollowNextLinks:
  on the service object.
  
- GDataHTTPFetcher and services now optionally automatically retry fetches of
  some errors.  Calling setIsServiceRetryEnabled: enables the retry behavior
  for services.
  
- Feeds and entries now have methods for adding categories.

- GDataCategory includes label convenience method categoryWithLabel: and
  utility categories on arrays, containsCategoryWithLabel: and categoryLabels.
  GDataCategory's isEqual: now compares label data as well.
  
- Docs sample app can now delete a document.

- Picasa Web sample app now shows how to move a photo to another album.

- Added MacOSX version to service request user agent, along with a gzip string
  expected in the user agent by Google servers.

- Added a very simple Calendar "Hello World" example tool by David Oster.

  
Bugs Fixed

- Project settings have been adjusted to build on Leopard.

- Framework is now built with install location of @loader_path/../Frameworks...
  instead of @executable_path/../Frameworks/... so it can be loaded by other
  bundles such as plug-ins.
  
- A specific format is now specified in the header for calling setUserAgent: 
  (like [service setUserAgent:@"CompanyName-AppName-1.0"])
  The library now will append the client library version to the user agent
  string.
  
- GDataObject's isEqual: no longer compares local element names
  
- Fixed PicasaWeb feed URL parameter escaping.

- Fixed GDataCategory's categoriesWithScheme: category on NSArray.

- Now removes null characters from strings added to XML elements to avoid
  XML that makes servers unhappy.
  
- Feed, entry, and service classes now call their own methods more reliably
  to aid subclassing.
  
- Text constructs no longer specify "type=text" since that is implied according
  to the Atom standard.
  
- Service unit tests now cover http cookies and caching.

- HTTP cookies now work with server at localhost.

- Now defining -hash on GDataObject for better Leopard compatibility.

- Fixed setting the ticket error on authentication errors.


Release 1.2.0
15-August-2007
Changes since 1.1.0

Additions

- Added support for Google Code Search

- Added support for Google Docs document list

- Added http logging (see GDataHTTPFetcherLogging.h)

- Added ability to provide a connection class for GDataHTTPFetcher

- Added routines to let library users override standard classes
  with their own surrogate subclasses (see GDataServiceBase.h)
  
- Added setProperty:forKey: and propertyForKey: to GDataObject so users can
  easily attach any data without subclassing
  
- The ticket now retains the posted object for the convenience of the callbacks
  
- Added convenience setters for methods that take GDataTextContruct.
  For example, framework now supports setTitleWithString:.
  
- Added new PicasaWeb query parameters and all-photos feed URL string.

- Added support for Calendar web content gadget preferences

- Added support for add/update/remove calendars and calendar subscriptions

- Added ascending order parameter to Query base class

- Added more Calendar query parameters

- Authentication errors are now also returned in the userInfo with the "error"
  key (thanks ghulands)
  
- Add rel constants for GDataWhere (thanks riggle)

- Added a call to clear the last-modified dates tracked by the service object

- Added HTMLLink convenience accessor

Bugs Fixed

- Fixed escaping algorithm for query parameter generation.

- Calendar sample app no longer attempts to set the author value for an event,
  as the author is always the authenticated user
  
- Removed method for retrieving a calendar event feed for a username

- Changed addReminders: to addReminder: (thanks riggle)

- Return proper numeric types in GDataValueConstruct methods (thanks riggle)

- Fixed bugs in finding the proper class to instantiate from a category in XML

- Store cookies on redirects (thanks riggle)

- Fixed some addExtension methods

- Fixed extra retain on arguments during pre-authenticated fetches

- Allow subclasses of GDataEntryPhoto to override photoData method

- Ensure default application identifier is valid for an http useragent

- When a service is asked to retrieve a feed and actually fetches an entry,
  the service no longer creates a feed to contain the entry, so clients must
  be explicit about whether a feed or an entry is expected

- Fixed convenience method for GDataTextConstruct to return subclass type
  (thanks ghulands)


Release 1.1.0
4-June-2007
Changes since 1.0.0

- Added photos, media, and geo data classes, and Picasa Web Albums service
  classes

- Interfaces now use proper subclasses of GDataValueConstruct to ensure
  that XML element names are generated from objects created from scratch.  
  
- The XMLElement extension methods may now pass nil as default name to
  their superclass to use the extension's defined default name.
  
- Added ACL feed support, and ACL display and editing in Calendar sample
  
- GDataAtomPubControl convenience creator adds the "app" namespace for the
  element
  
- Fixed some incorrect selector signatures in the Blogger sample

- Changed GDataHTTPFetcher to allow redirects from http to https

- Upload of http data may now be monitored with progress callbacks

- GData fetcher now can respond to proxy credential challenges

- Entry content is now a GDataEntryContent object rather than a text construct
  
- Add accidentally omitted extendedProperty interfaces to 
  GDataEntryCalendarEvent and fix extendedProperty default element
  name (thanks iwankerl)
   
   
Release 1.0.0
16-April-2007

Initial public release.  Includes standard base elements, entry, feed,
service, and query classes, and unit tests.  Includes classes for
Calendar, Google Base, Spreadsheets.
