Imported Upstream version 1.3.99.5_20131030_SE_05e5911_SYSYNC_69de386
[platform/upstream/syncevolution.git] / NEWS
1 SyncEvolution 1.3.99.6, xxxxxxxxxx
2 ==================================
3
4 This update focuses on SyncEvolution in IVI again. It adds support for
5 GENIVI Diagnostic Log and Trace (DLT) and enhances searching in the
6 unified address book.
7
8 Binaries on syncevolution.org now work with EDS < 3.6 *and* >= 3.6.
9
10 Details:
11
12 * libsynthesis: avoid redundant (and sometimes slow) getaddrbyname() (FDO #70771)
13
14   The network lookup of the hostname can be slow (10 second delay when
15   not connected) and shouldn't be necessary anyway, so disable it.
16
17 * PIM Manager: case-insensitive and transliterated search (FDO #56524)
18
19 * PIM: accent-insensitive and transliterated search (FDO #56524)
20
21   Accent-insensitive search ignores accents, using the same code as in
22   EDS.  Transliterated search ignores foreign scripts by transliterating
23   search term and contact properties to Latin first. That one is using
24   ICU directly in the same way as EDS, but doesn't use the EDS
25   ETransliterator class to avoid extra string copying.
26
27   This commit changes the default behavior such that searching is by
28   default most permissive (case- and accent-insensitive, does
29   transliteration). Flags exist to restore more restrictive matching.
30
31 * PIM: relax phone number matching
32
33   Previously, the current default country was used to turn phone numbers
34   without an explicit country code into full E164 numbers, which then
35   had to match the search term when doing a caller ID lookup.
36
37   This was inconsistent with EDS, where a weaker
38   EQUALS_NATIONAL_PHONE_NUMBER was done. The difference is that a
39   comparison between a number with country code matches one without if
40   the national number of the same, regardless of the current default
41   country. This is better because it reduces the influence of the hard
42   to guess default country on matching.
43
44   Another advantage of this change is the lower memory consumption and
45   faster comparison, because strings are now stored in 4 + 8 byte
46   numbers instead of strings of varying length.
47
48 * PIM: fix incorrect write into pim-manager.ini (FDO #70772)
49
50   Removing a peer accidentally wrote the updated list of active
51   address books into the "sort" property of pim-manager.ini, which
52   then prevented starting the PIM Manager.
53
54 * PIM: ignore broken sort order in config (FDO #70772)
55
56   Failure to set the sort order from pim-manager.ini should not
57   prevent the startup of the PIM Manager because the client cannot
58   really diagnose and fix the problem. It is better to try again with
59   the default sort order.
60
61 * PIM: adapt to locale changes at runtime (FDO #66618)
62
63   Listen to signals from localed D-Bus system service and update all
64   internal state which depends on the current locale. This state includes:
65   - pre-computed data in all loaded contacts
66   - filtering (for example, case sensitivity is locale dependent)
67   - the sort order
68
69   This feature can be controlled by setting the SYNCEVOLUTION_LOCALED
70   env variable:
71   - "session" - use a localed instance on the D-Bus session bus instead
72     of the system instance. This was originally meant for
73     testing, but might also be useful for per-user setting changes.
74   - "none" - disables the feature
75
76 * D-Bus server: support DLT (FDO #66769)
77
78   Diagnostic Log and Trace (DLT) manages a sequence of log messages,
79   with remote controllable level of detail. SyncEvolution optionally
80   (can be chosen at compile time and again at runtime) uses DLT
81   instead of its own syncevolution-log.html files. See README-DLT.rst
82   for more information.
83
84   To use the feature, configure SyncEvolution with
85   "--enable-dbus-server=--dlt --no-syslog"
86
87 * EDS: enhanced compatibility mode
88
89   SyncEvolution compiled for EDS < 3.6 can now also load EDS backends
90   compiled for EDS >= 3.6. The packaging for syncevolution.org uses
91   that to bundle EDS backends compiled on different distros in the
92   same package.
93
94 * EDS: SYNCEVOLUTION_EBOOK_QUERY env variable
95
96   Setting the SYNCEVOLUTION_EBOOK_QUERY env variable to a valid EBook
97   query string limits the results to contacts matching that
98   query. Useful only in combination with --print-items or
99   --export. Only implemented for EDS >= 3.6.
100
101 * EDS: fix compile problem with boost and EDS > 3.36
102
103   This fixes the following problem, seen with Boost 1.53.0 on altlinux
104   when compiling for EDS >= 3.6:
105
106     /usr/include/boost/smart_ptr/shared_ptr.hpp: In instantiation of 'typename boost::detail::sp_array_access<T>::type boost::shared_ptr<T>::operator[](std::ptrdiff_t) const [with T = char*; typename boost::detail::sp_array_access<T>::type = void; std::ptrdiff_t = long int]':
107     src/backends/evolution/EvolutionSyncSource.cpp:163:38: required from here
108     /usr/include/boost/smart_ptr/shared_ptr.hpp:663:22: error: return-statement with a value, in function returning 'void' [-fpermissive]
109     make[2]: *** [src/backends/evolution/src_backends_evolution_syncecal_la-EvolutionSyncSource.lo]
110
111
112 SyncEvolution 1.3.99.5, 01.10.2013
113 ==================================
114
115 SyncEvolution now supports Google CalDAV/CardDAV with OAuth2
116 authentication. These are the open protocol that Google currently
117 supports and thus the recommended way of syncing with Google,
118 replacing ActiveSync and SyncML (both no longer available to all
119 Google customers).
120
121 Support for Google CardDAV is new. Because of a vCard encoding issue
122 on the server side, spaces in long notes may get removed. Like
123 Evolution, SyncEvolution does not yet support some of the advanced
124 features of the server, in particular custom labels for phone numbers,
125 emails and addresses. Likewise, some client properties are not
126 supported by the server: CALURI, CATEGORIES, FBURL, GEO and ROLE are
127 not supported. Of ORG, only the first two components are supported.
128 Currently, properties not supported by one side get lost in a full
129 roundtrip sync.
130
131 SyncEvolution depends on external components for OAuth2. It can be
132 compiled to use gSSO [1] or GNOME Online Accounts. GNOME Online
133 Accounts >= 3.10 works out of the box for CalDAV and CardDAV, 3.8 only
134 for CardDAV (but the GNOME Online Accounts binary can be patched to
135 also support CalDAV, see [2]), anything older than 3.8 does not
136 work. Support for Ubuntu Online Accounts should not be hard to add,
137 but is not available yet [3].
138
139 [1] https://01.org/gsso and
140     http://cgit.freedesktop.org/SyncEvolution/syncevolution/plain/src/backends/signon/README
141 [2] http://cgit.freedesktop.org/SyncEvolution/syncevolution/plain/src/backends/goa/README
142 [3] http://thread.gmane.org/gmane.comp.mobile.syncevolution/4353/focus=4490
143
144
145 Details:
146
147 * GTK UI: fixed two crashes - running a sync with no service selected
148   and a 64 bit pointer problem recently discovered by Tino Keitel when
149   compiling the Debian package with -fPIE.
150
151 * password handling: fix usage of GNOME Keyring and KWallet (FDO #66110)
152
153   When clients like the GTK sync-ui stored a password, it was always
154   stored as plain text in the config.ini file by the
155   syncevo-dbus-server. The necessary code for redirecting the password
156   storage in a keyring (GNOME or KWallet) simply wasn't called in that
157   case.
158
159   The command line tool, even when using the D-Bus server to run the
160   operation, had the necessary code active and thus was not affected.
161   Now all SyncEvolution components use the same default: use safe
162   password storage if either GNOME Keyring or KWallet were enabled
163   during compilation, don't use it if not.
164
165   Fixing this revealed other problems, like not being able to store
166   certain passwords that lacked the necessary lookup criteria (like
167   syncURL and/or username). To address this, the lookup criteria where
168   extended and a new check was added to avoid accidentally removing
169   other passwords. As a result, it may be possible that SyncEvolution
170   no longer finds passwords that were stored with older versions of
171   SyncEvolution. In such a case the passwords must be set again.
172
173 * GNOME: clean up keyring access and require libgnome-keyring >= 2.20
174
175   The updated error messages now always include information about the
176   password and libgnome-keyring error texts.
177
178   A workaround is used for the "Error communicating with
179   gnome-keyring-daemon" problem that started to appear fairly
180   frequently in the automated testing once the keyring was actually
181   used. The problem shows up with some additional debug messages:
182
183     Gkr: received an invalid, unencryptable, or non-utf8 secret
184     Gkr: call to daemon returned an invalid response: (null).(null)()
185
186   It seems that sometimes setting up a session with GNOME keyring
187   fails such that all further communication leads to decoding problem.
188
189   There is an internal method to reset the session, but it cannot be
190   called directly. As a workaround, fake the death of the GNOME
191   keyring daemon and thus trigger a reconnect when retrying the GNOME
192   keyring access. This is done by sending a D-Bus message, which will
193   also affect other clients of GNOME keyring, but hopefully without
194   user-visible effects.
195
196 * config: enhanced password handling
197
198   It is possible to configure a plain username/password combination
199   once in SyncEvolution and then use references to it in other
200   configurations, instead of having to set (and update) the
201   credentials in different places. This is useful in particular with
202   WebDAV, where credentials had to be repeated several times (target
203   config, in each database when used as part of SyncML) or when using
204   a service which requires several configs (Google via SyncML and
205   CalDAV).
206
207   To use this, create a sync config for a normal peer or a dedicated
208   config just for the credentials, with "username/password/syncURL"
209   set. The "syncURL" must be set to something identifying the peer if
210   GNOME Keyring is used for the password storage.
211
212   Then set "username", "databaseUser" and "proxyUser" properties to
213   "id:<name of config with credentials>" and all read and write access
214   to those properties will be redirected by SyncEvolution into that
215   other configuration. This even works in the GTK UI.
216
217   For user names which contain colons, the new "user:<user name>" format
218   must be used. Strings without colons are assumed to be normal user
219   names, so most old configurations should continue to work.
220
221 * signon: new backend using libgsignond-glib + libaccounts-glib
222
223   The code works with gSSO (https://01.org/gsso). With some tweaks to
224   the configure check and some ifdefs it probably could be made to work
225   with Ubuntu Online Accounts.
226
227   The code depends on an account accessible via libaccounts-glib which
228   has a provider and and (optionally) services enabled for that
229   provider. It is not necessary that the account already has a signon
230   identity ID, the backend will create that for the provider (and thus
231   shared between all services) if necessary.
232
233   Therefore it is possible to use the ag-tool to create and enable the
234   account and services. Provider and service templates are in the next
235   commit.
236
237 * WebDAV: support OAuth2
238
239   If given an authentication configuration which can handle OAuth2,
240   then OAuth2 is used instead of plain username/password
241   authentication.
242
243 * WebDAV: support Google CardDAV, break Yahoo
244
245   Google CardDAV has one peculiarity: it renames new contacts during PUT without
246   returning the new path to the client. See also
247   http://lists.calconnect.org/pipermail/caldeveloper-l/2013-July/000524.html
248
249   SyncEvolution already had a workaround for that (PROPGET on old path, extract
250   new path from response) which happened to work. This workaround was originally
251   added for Yahoo, which sometimes merges contacts into existing ones. In
252   contrast to Yahoo, Google really seems to create new items.
253
254   Without some server specific hacks, the client cannot tell what happened.
255   Because Google is currently supported and Yahoo is not, let's change the
256   hard-coded behavior to "renamed items are new".
257
258 * WebDAV: started testing with owndrive.com = OwnCloud
259
260 * GOA: get OAuth2 tokens out of GNOME Online Accounts
261
262   "username = goa:..." selects an account in GOA and retrieves the
263   OAuth2 token from that.
264
265   The implementation uses the GOA D-Bus API directly, because our C++
266   D-Bus bindings are easier to use and this avoids an additional library
267   dependency.
268
269 * PIM: fix UID usage in sync.py example
270
271   Using the underscore in the UID has been wrong all along, it only
272   happened to work because UID sanity checking was missing. After adding
273   it, the example broke.
274
275   Now simply remove the colon. It makes the UID less readable, but it
276   doesn't have to be, and ensures that file names and database names
277   contain the UID as-is.
278
279 * PIM: if busy, don't shut down
280
281   While there are sessions pending or active, the server should not shut down.
282   It did that while executing a long-running PIM Manager SyncPeer() operations,
283   by default after 10 minutes.
284
285   This was not a problem elsewhere because other operations are associated with
286   a client, whose presence also prevents shutdowns. Perhaps PIM Manager should
287   also track the caller and treat it like a client.
288
289 * PBAP: do not end Bluez5 transfer prematurely
290
291   A transfer was marked as finished prematurely when encountering the
292   "active" Status value, which can happen for longer transfers.
293
294 * PBAP: add support for obexd 0.48
295
296   obexd 0.48 is almost the same as obexd 0.47, except that it dropped
297   the SetFilter and SetFormat methods in favor of passing a Bluex 5-style
298   filter parameter to PullAll.
299
300   SyncEvolution now supports 4, in words, four different obexd
301   APIs. Sigh.
302
303 * updated tests
304
305
306 Upgrading from releases <= 1.3.99.4:
307
308 If the value of "username/databaseUser/proxyUser" contains a colon,
309 the "user:" prefix must be added to the value, to continue treating it
310 like a plain user name and not some reference to an unknown identity
311 provider (like "id:", "goa:", "signon:", etc.).
312
313 The lookup of passwords in GNOME Keyring was updated slightly in
314 1.3.99.5. It may be necessary to set passwords anew if the old one is
315 no longer found.
316
317 Upgrading from release 1.2.x:
318
319 The sync format of existing configurations for Mobical (aka Everdroid)
320 must be updated manually, because the server has encoding problems when
321 using vCard 3.0 (now the default for Evolution contacts):
322    syncevolution --configure \
323                  syncFormat=text/x-vcard \
324                  mobical addressbook
325
326 The Funambol template explicitly enables usage of the
327 "refresh-from-server" sync mode to avoid getting throttled with 417
328 'retry later' errors. The same must be added to existing configs
329 manually:
330    syncevolution --configure \
331                  enableRefreshSync=TRUE \
332                  funambol
333
334 Upgrading from releases before 1.2:
335
336 Old configurations can still be read. But writing, as it happens
337 during a sync, must migrate the configuration first. Releases >= 1.2
338 automatically migrates configurations. The old configurations
339 will still be available (see "syncevolution --print-configs") but must
340 be renamed manually to use them again under their original names with
341 older SyncEvolution releases.
342
343
344 SyncEvolution 1.3.99.4, 12.07.2013
345 ==================================
346
347 The focus of this development snapshot is enhanced performance of
348 syncing. With EDS, contacts get added, updated or loaded with batch
349 operations, which led to 4x runtime improvements when importing PBAP
350 address book for the first time. Removing unnecessary work from any
351 following PBAP sync led to more than a 6x improvement.
352
353 These improvements also benefit non-PBAP syncing and could in theory
354 work with any SyncML peer. In practice, batching of items is currently
355 limited to SyncEvolution as peer.
356
357 The PBAP backend itself was rewritten such that data gets transferred
358 from a phone in parallel to processing the already transferred
359 data. The effect is that on a sufficiently fast system, a sync takes
360 about the same time as downloading all contacts. To get the text-only
361 part of the contacts even faster, PBAP syncing can be done such that
362 it first syncs the text-only parts (without removing existing photos),
363 then in a second round adds or modifies photos. The PIM Manager uses
364 this incremental mode by default, in the command line it can be chose
365 with the SYNCEVOLUTION_PBAP_SYNC env variable.
366
367 The HTTP server became better at handling message resends when the
368 server is slow with processing a message. The server is able to keep a
369 sync session alive while loading the initial data set by sending
370 acknowledgement replies before the client times out.
371
372 Guido Günther provided some patches addressing problems when compiling
373 SyncEvolution for Maemo.
374
375
376 Details:
377
378 * sync: less verbose output, shorter runtime
379
380   For each incoming change, one INFO line with "received x[/out of y]"
381   was printed, immediately followed by another line with total counts
382   "added x, updated y, removed z". For each outgoing change, a "sent
383   x[/out of y]" was printed.
384
385   In addition, these changes were forwarded to the D-Bus server where a
386   "percent complete" was calculated and broadcasted to clients. All of
387   that caused a very high overhead for every single change, even if the
388   actual logging was off. The syncevo-dbus-server was constantly
389   consuming CPU time during a sync when it should have been mostly idle.
390
391   To avoid this overhead, the updated received/sent numbers that come
392   from the Synthesis engine are now cached and only processed when done
393   with a SyncML message or some other event happens (whatever happens
394   first).
395
396   To keep the implementation simple, the "added x, updated y, removed z"
397   information is ignored completely and no longer appears in the output.
398
399 * HTTP server: handle message resends
400
401   If a client gave up waiting for the server's response and resent its message
402   while the server was still processing the message, syncing failed with
403   "protocol error: already processing a message" raised by the
404   syncevo-dbus-server because it wasn't prepared to handle that situation.
405
406   The right place to handle this is inside the syncevo-http-server, because it
407   depends on the protocol (HTTP in this case) whether resending is valid or
408   not. It handles that now by tracking the message that is currently in
409   processing and matching it against each new message. If it matches, the new
410   request replaces the obsolete one without sending the message again to
411   syncevo-dbus-server. When syncevo-dbus-server replies to the old message, the
412   reply is used to finish the newer request.
413
414 * PBAP: incremental sync (FDO #59551)
415
416   Depending on the SYNCEVOLUTION_PBAP_SYNC env variable, syncing reads
417   all properties as configured ("all"), excludes photos ("text") or
418   first text, then all ("incremental").
419
420   When excluding photos, only known properties get requested. This
421   avoids issues with phones which reject the request when enabling
422   properties via the bit flags. This also helps with
423   "databaseFormat=^PHOTO".
424
425 * PIM: use incremental sync for PBAP by default (FDO #59551)
426
427   When doing a PBAP sync, PIM manager asks the D-Bus sync helper to set
428   its SYNCEVOLUTION_PBAP_SYNC to "incremental". If the env variable
429   is already set, it does not get overwritten, which allows overriding
430   this default.
431
432 * PIM: set debug level in peer configs via env variable
433
434   Typically the peer configs get created from scratch, in particular
435   when testing with testpim.py. In that case the log level cannot be set
436   in advance and doing it via the D-Bus API is also not supported.
437   Therefore, for debugging, use SYNCEVOLUTION_LOGLEVEL=<level> to create
438   peers with a specific log level.
439
440 * PIM: include pim-manager-api.txt in source distro (FDO #62516)
441
442   The text file must be listed explicitly to be included by "make dist".
443
444 * PIM: "full name" -> "fullname" fix in documentation (FDO #62515)
445
446   Make the documentation match the code. A single word without
447   space makes more sense, so let's go with what the code already
448   used.
449
450 * PIM: enhanced searching (search part of FDO #64177)
451
452   Search terms now also include 'is/contains/begins-with/ends-with'
453   and they can be combined with 'and' and 'or', also recursively.
454
455 * PIM: Pinyin sorting for zh languages (part of FDO #64173)
456
457   Full interleaving of Pinyin transliterations of Chinese names with
458   Western names can be done by doing an explicit Pinyin transliteration
459   as part of computing the sort keys.
460
461   This is done using ICU's Transliteration("Han-Latin"), which we have
462   to call directly because boost::locale does not expose that API.
463
464   We hard-code this behavior for all "zh" languages (as identified by
465   boost::locale), because by default, ICU would sort Pinyin separately
466   from Western names when using the "pinyin" collation.
467
468 * PIM: new return value for SyncPeer(), new SyncProgress signal (FDO #63417)
469
470   The SyncPeer() result is derived from the sync statistics. To have
471   them available, the "sync done" signal must include the SyncReport.
472
473   Start and end of a sync could already be detected; "modified" signals
474   while a sync runs depends on a new signal inside the SyncContext when
475   switching from one cycle to the next and at the end of the last one.
476
477 * PIM: allow removal of data together with database removal (part of FDO #64835)
478
479   There is a difference in EDS between removing the database definition
480   from the ESourceRegistry (which makes the data unaccessible via EDS)
481   and removing the actual database. EDS itself only removes the definition
482   and leaves the data around to be garbage-collected eventually. This is
483   not what we want for the PIM Manager API; the API makes a stronger
484   guarantee that data is really gone.
485
486   Fixed by introducing a new mode flag for the deleteDatabase() method
487   and deleting the directory of the source directly in the EDS backend,
488   if requested by the caller.
489
490   The syncevolution command line tool will use the default mode and thus
491   keep the data around, while the PIM Manager forces the removal of
492   data.
493
494 * EDS: create new databases by cloning the builtin ones (FDO #64176)
495
496   Instead of hard-coding a specific "Backend Summary Setup" in
497   SyncEvolution, copy the config of the system database. That way
498   special flags (like the desired "Backend Summary Setup" for local
499   address books) can be set on a system-wide basis and without having to
500   modify or configure SyncEvolution.
501
502   Because EDS has no APIs to clone an ESource or turn a .source file
503   into a new ESource, SyncEvolution has to resort to manipulating and
504   creating the keyfile directly.
505
506 * EDS contacts: update PHOTO+GEO during slow sync, avoid rewriting PHOTO file
507
508   If PHOTO and/or GEO were the only modified properties during a slow
509   sync, the updated item was not written into local storage because
510   they were marked as compare="never" = "not relevant".
511
512   For PHOTO this was intentional in the sample config, with the
513   rationale that local storages often don't store the data exactly as
514   requested. When that happens, comparing the data would lead to
515   unnecessary writes. But EDS and probably all other local SyncEvolution
516   storages (KDE, file) store the photo exactly as requested, so not
517   considering changes had the undesirable effect of not always writing
518   new photo data.
519
520   For GEO, ignoring it was accidental.
521
522 * EDS contacts: avoid unnecessary DB writes during slow sync
523
524   Traditionally, contacts were modified shortly before writing into EDS
525   to match with Evolution expectations (must have N, only one CELL TEL,
526   VOICE flag must be set). During a slow sync, the engine compare the
527   modified contacts with the unmodified, incoming one. This led to
528   mismatches and/or merge operations which end up not changing anything
529   in the DB because the only difference would be removed again before
530   writing.
531
532 * EDS contacts: read-ahead cache
533
534   Performance is improved by requesting multiple contacts at once and
535   overlapping reading with processing. On a fast system (SSD, CPU fast
536   enough to not be the limiting factor), testpim.py's testSync takes 8
537   seconds for a "match" sync where 1000 contacts get loaded and compared
538   against the same set of contacts. Read-ahead with only 1 contact per
539   query speeds that up to 6.7s due to overlapping IO and
540   processing. Read-ahead with the default 50 contacts per query takes
541   5.5s. It does not get much faster with larger queries.
542
543 * command line: execute --export and --print-items while the source is still reading
544
545   Instead of reading all item IDs, then iterating over them, process
546   each new ID as soon as it is available. With sources that support
547   incremental reading (only the PBAP source at the moment) that provides
548   output sooner and is a bit more memory efficient.
549
550 * WebDAV: avoid segfault during collection lookup
551
552   Avoid referencing pathProps->second when the set of paths that
553   PROPFINDs returns is empty. Apparently this can happen in combination
554   with Calypso.
555
556 * engine: prevent timeouts in HTTP server mode
557
558   HTTP SyncML clients give up after a certain timeout (SyncEvolution
559   after RetryDuration = 5 minutes by default, Nokia e51 after 15
560   minutes) when the server fails to respond.
561
562   This can happen with SyncEvolution as server when it uses a slow
563   storage with many items, for example via WebDAV. In the case of slow
564   session startup, multithreading is now used to run the storage
565   initializing in parallel to sending regular "keep-alive" SyncML
566   replies to the client.
567
568   By default, these replies are sent every 2 minutes. This can be
569   configured with another extensions of the SyncMLVersion property:
570     SyncMLVersion = REQUESTMAXTIME=5m
571
572   Other modes do not use multithreading by default, but it can be
573   enabled by setting REQUESTMAXTIME explicitly. It can be disabled
574   by setting the time to zero.
575
576   The new feature depends on a libsynthesis with multithreading enabled
577   and glib >= 2.32.0, which is necessary to make SyncEvolution itself
578   thread-safe. With an older glib, multithreading is disabled, but can
579   be enabled as a stop-gap measure by setting REQUESTMAXTIME explicitly.
580
581 * Various testing and stability enhancements. SyncEvolution had to
582   be made thread-safe for the HTTP timeout prevention.
583
584
585 SyncEvolution 1.3.99.3, 06.03.2013
586 ==================================
587
588 Another development snapshot, with a particular focus on enhancing
589 (and in some cases, fixing) searching in the PIM Manager. The PIM
590 Manager in this snapshot depends on folks 0.9.x and thus gee
591 0.8. Support for Bluez 5 was added. The PIM Manager API was extended
592 by addding CreatePeer and ReplaceSearch. The previous methods,
593 SetPeer and RefineSearch, are still supported.
594
595 Some issues in CalDAV, WebDAV and SyncML were fixed.
596
597 Graham R. Cobb contributed several patches for enhancing ActiveSync
598 support and making it work with Exchange 2010.
599
600 Details:
601
602 * PIM Manager: add ReplaceSearch, always allow it
603
604   The new ReplaceSearch is more flexible than RefineSearch. It can
605   handle both tightening the search and relaxing it. The downside of it
606   is the more expensive implementation (must check all contacts again,
607   then find minimal set of change signals to update view).
608
609   Previously, a search which had no filter set at all at the begining
610   could not be refined. This limitation of the implementation gets
611   removed by always using a FilteredView, even if the initial filter is
612   empty.
613
614 * PIM Manager: introduce CreateConfig()
615
616   That SetPeer() allows modifying and creating a config leads to race
617   conditions when multiple clients want to create a config. The new
618   CreateConfig() avoids that by atomically checking that a config does
619   not exist yet and creating it.
620
621   SetPeer() is still available for backwards compatibility. It continues
622   to be used for modifying an existing config in TestContacts.testSync
623   to check the effect of the logging settings.
624
625 * PIM Manager: fix double entries in filtered search with limit
626
627   Stressing the FilteredView by using it in tests originally written
628   for the FullView showed that the filling up a view may have
629   used data while it was inconsistent internally, leading to
630   contacts being present multiple times.
631
632 * PIM Manager and sync: support location = GEO property (FDO #60373)
633
634   Exposed as "location" -> (lat, long) in the D-Bus bindings.
635   Reading, writing and updating are supported.
636
637 * PIM Manager: support groups = CATEGORIES (FDO #60380)
638
639   Allow reading and writing of groups (folks terminology), aka
640   CATEGORIES in vCard.
641
642 * PIM Manager: intelligent phone search in EDS (part of FDO #59571)
643
644   If phone number search is enabled in EDS, then the direct search in
645   EDS now uses the more accurate
646   E_BOOK_QUERY_EQUALS_NATIONAL_PHONE_NUMBER comparison, with the E164
647   formatted caller ID as value to compare against. This gives
648   semantically correct results. The previous solution (now the
649   fallback) had to use substring searches, which did not match if the
650   contact's phone number was not formatted according to E164 and
651   which may have matched the wrong contacts if the trailing numbers
652   are the same.
653
654 * PIM Manager : use pre-computed normalized phone numbers from EDS (part of FDO #59571)
655
656   When available, the pre-computed E164 number from EDS will be used
657   instead of doing one libphonebook parser run for each telephone
658   number while reading. Benchmarking showed that this parsing was the
659   number one hotspot, so this is a considerable improvement.
660
661 * PIM Manager: fix error messages
662
663   Ensure and check that no unnecessary ERROR messages are printed.
664   libfolks was used slightly incorrectly, leading to several
665   harmless error messages (glib asserts). libphonenumber printed
666   its error messages to stdout.
667
668 * PIM Manager: fix memory leaks during writing of contacts
669
670   Constructing the GValues created additional references instead
671   of taking over ownership as intended.
672
673 * D-Bus server: fix read-after-free bug when using syslog
674
675   openlog() expects the string to remain valid. Must ensure that in
676   LoggerSyslog by making a copy. Found with valgrind.
677
678 * PIM Manager: make implementation of some of the D-Bus methods thread-safe
679
680   The goal is to make it easier to extend syncevo-dbus-server
681   with other IPC mechanisms, which then can call the native C++
682   code directly.
683
684   That code was not prepared to handle calls in threads other than the
685   main one. Now this is checked when entering the methods and work is
686   shifted to the main thread if necessary. In the meantime the calling
687   thread waits for completion.
688
689 * PIM Manager: check responsiveness (part of FDO #60851)
690
691   Enhanced the testActive test so that it can detect when the D-Bus
692   server stops responding for too long. One major reason for that was
693   event processing in folks, which got improved as part of
694   https://bugzilla.gnome.org/show_bug.cgi?id=694385
695
696 * PIM Manager: adapt to gee 0.8
697
698   Changed the code to compile with gee 0.8, as used by folks 0.9.x.
699   Older versions of folks are no longer supported.
700
701 * PBAP: support Bluez 5
702
703   The new Bluez 5 API is the third supported API for doing PBAP
704   transfers. It gets checked first, then the PBAB backend falls back to
705   new-style obexd (file based, similar to Bluez 5, but not quite the
706   same) and finally old-style obexd (data transfer via D-Bus).
707
708   In contrast to previous APIs, Bluez 5 does not report the reason for a
709   failed PBAP transfer. SyncEvolution then throws a generic "transfer
710   failed" error with "reason unknown" as message.
711
712 * command line: recover from slow sync with new sync modes
713
714   The error message for an unexpected slow sync still mentioned
715   the old and obsolete "refresh-from-client/server" sync modes.
716   Better mention "refresh-from-local/remote".
717
718 * CalDAV: more workarounds for Google CalDAV + unique IDs
719
720   Google became even more strict about checking REV. Tests which
721   reused a UID after deleting the original item started to fail sometime
722   since middle of December 2012.
723
724 * CalDAV: work around Google server regression (undeclared namespace prefix in XML)
725
726   Google CalDAV for a while (December 2012 till January 2013) sent
727   invalid XML back when asked to include CardDAV properties in a
728   PROPFIND. This got rejected in the XML parser, which prevents
729   syncing calendar data:
730
731      Neon error code 1: XML parse error at line 55: undeclared namespace prefix
732
733   In the meantime Google fixed the issue in response to a bug report
734   via email. But the workaround, only asking for the properties which
735   are really needed, still makes sense and thus is kept.
736
737 * WebDAV: don't send Basic Auth via http proactively (FDO #57248)
738
739   Sending basic authentication headers via http is insecure. Only do
740   it proactively when the connection is encrypted and thus protects
741   the information or when the server explicitly asks for it.
742
743 * Nokia: always add TYPE=INTERNET to EMAIL (FDO #61784)
744
745   Without the explicit TYPE=INTERNET, email addresses sent to a Nokia
746   e51 were not shown by the phone and even got lost eventually (when
747   syncing back).
748
749   This commit ensures that the type is set for all emails sent to any
750   Nokia phone, because there may be other phones which need it and
751   phones which don't, shouldn't mind. This was spot-checked with a N97
752   mini, which works fine with and without the INTERNET type.
753
754   This behavior can be disabled again for specific Nokia phones by
755   adding a remote rule which sets the addInternetEmail session variable
756   to FALSE again.
757
758   Non-Nokia phones can enable the feature in a similar way, by setting
759   the variable to TRUE.
760
761 * SyncML: config option for broken peers
762
763   Some peers have problems with meta data (CtCap, old Nokia phones)
764   and the sync mode extensions required for advertising the restart
765   capability (Oracle Beehive). The default in SyncEvolution is to
766   advertise the capability, so manual configuration is necessary when
767   working with a peer that fails in that mode.
768
769   Because the problem occurs when SyncEvolution contacts the peers
770   before it gets the device information from the peer, dynamic rules
771   based on the peer identifiers cannot be used. Instead the local config
772   must already disable these extra features in advance.
773
774   The "SyncMLVersion" property gets extended for this. Instead of just
775   "SyncMLVersion = 1.0" (as before) it now becomes possible to say
776   "SyncMLVersion = 1.0, noctcap, norestart".
777
778   "noctcap" disables sending CtCap. "norestart" disables the sync mode
779   extensions and thus doing multiple sync cycles in the same session
780   (used between SyncEvolution instances in some cases to get client and
781   server into sync in one session).
782
783   Both keywords are case-insensitive. There's no error checking for
784   typos, so beware!
785
786   The "SyncMLVersion" property was chosen because it was already in use
787   for configuring SyncML compatibility aspects and adding a new property
788   would have been harder.
789
790 * ActiveSync: added support for specifying folder names
791
792   Previously, the database field was interpreted as a Collection ID.  This adds
793   logic to allow the database to be interpreted as a folder path.  The logic is:
794
795   1) If the database is an empty string, pass it through (this is the most
796   common case as it is interpreted as "use the default folder for the
797   source type").
798   2) If the database matches a Collection ID, use the ID (this is the same as
799   the previous behaviour).
800   3) If the database matches a folder path name, with an optional leading "/",
801   use the Collection ID for the matching folder.
802   4) Otherwise, force a FolderSync to get the latest folder changes from the
803   server and repeat steps 2 and 3
804   5) If still no match, throw an error.
805
806 * ActiveSync: support for listing databases
807
808   Now --print-databases scans folders on the ActiveSync server and
809   shows suitable folders for the ActiveSync backends instead of the
810   previous, hard-coded help text.
811
812   Invoking --print-databases can be used as a workaround for
813   "SyncFolder error: Invalid synchronization key" errors. A better
814   solution would be to do that automatically, but there was no time
815   to implement that. See FDO #61869 and "[SyncEvolution] Activesync server losing state"
816   http://thread.gmane.org/gmane.comp.mobile.syncevolution/4295
817
818 * command line: show backend error when listing databases fails
819
820   The command line swallowed errors thrown by the backend while listing
821   databases. Instead it just showed "<backend name>: backend failed". The goal
822   was to not distract users who accidentally access a non-functional backend.
823   But the result is that operations like --configure or --print-databases could
824   fail without giving the user any hint about the root cause of the issue.
825
826   Now the error explanation in all its gory details is included.
827
828   For example, not having activesyncd running leads to:
829   INFO] eas_contact: backend failed: fetching folder list:
830   GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name
831   org.meego.activesyncd was not provided by any .service files
832
833   And running activesyncd without the necessary gconf keys shows up as:
834   [INFO] eas_contact: backend failed: fetching folder list:
835   GDBus.Error:org.meego.activesyncd.Error.AccountNotFound: Failed to find
836   account [syncevolution@lists.intel.com]
837
838 * Minor memory leak fix when using GDBus GIO: GDBusMethodInfo
839
840   Also depends on a glib fix, see https://bugzilla.gnome.org/show_bug.cgi?id=695376
841
842 * build fixes
843
844   Avoid -lrt in make dependencies. Add missing pcre libs to
845   syncevo-dbus-server. sqlite backend needs "#include <stdio.h>"
846   (patch from Mario Kicherer).
847
848
849 SyncEvolution 1.3.99.2, 13.12.2012
850 ==================================
851
852 Another development snapshot. Includes all fixes that went into 1.3.2
853 and several improvements to the PIM Manager. Documentation was updated
854 and extended considerably. The pim-manager-api.txt now describes the
855 abstract API while src/dbus/server/pim/README explains how
856 SyncEvolution implements it.
857
858
859 Details:
860
861 * PIM Manager searches for a caller ID ('phone' search) in EDS
862   directly while folks still starts up. No unification is done of
863   these results. Intermediate results are replaced by the final ones
864   from folks once those are ready.
865
866 * PIM Manager: allow configuration of session directories (part of FDO #55921)
867
868   Useful for moving the session directories to a temporary file system.
869   They are essentially just useful for debugging when used as part of
870   PIM Manager.
871
872   - "logdir" - a directory in which directories are created with
873                debug information about sync session
874   - "maxsessions" - number of sessions that are allowed to exist
875                     after a sync (>= 0): 0 is special and means unlimited,
876                     1 for just the latest, etc.;
877                     old sessions are pruned heuristically (for example,
878                     keep sessions where something changed instead of
879                     some where nothing changed), so there is no hard
880                     guarantee that the last n sessions are present.
881
882 * PIM Manager: write less data to disk (part of FDO #55921)
883
884   Avoid writing config file changes to disk by enabling a new
885   "ephemeral" mode for syncing via the PIM Manager. In this mode,
886   config file changes are not flushed resp. discarded directly.
887   This prevents writing to .ini files in ~/.config.
888
889   The "synthesis" binfile client files are still written, but they get
890   redirected into the session directory, which can (and should) be set
891   to a temp file system and get deleted again quickly.
892
893   Data dumps are turned off now in the configs created by the PIM
894   Manager.
895
896 * syncevo-dbus-server: use syslog instead of standard output by default
897
898 * syncevo-dbus-server: command line options for controlling
899   output and startup
900
901   -d, --duration=seconds/'unlimited'    Shut down automatically
902                                         when idle for this duration (default 300 seconds)
903   -v, --verbosity=level                 Choose amount of output, 0 = no output,
904                                         1 = errors, 2 = info, 3 = debug; default is 1.
905   -o, --stdout                          Enable printing to stdout (result of operations)
906                                         and stderr (errors/info/debug).
907   -s, --no-syslog                       Disable printing to syslog.
908   -p, --start-pim                       Activate the PIM Manager (= unified address book)
909                                         immediately.
910
911 * PIM Manager: store set of active address books persistently (FDO #56334)
912
913   Together with storing the sort order persistently, this allows
914   restarting the daemon and have it create the same unified address book
915   again.
916
917 * PIM Manager: remove colon from valid peer UID character set (FDO #56436)
918
919   Using the UID as part of file names gets more problematic when
920   allowing colons. Remove that character from the API and enforce
921   the format in the source code.
922
923 * PIM Manager API: introduce contact ID and use it for reading
924
925   This makes it easier for a client to fully polulate its view with
926   contact data. Previously it could happen that due to concurrent
927   changes in the server, a client was returned data for the same
928   contact multiple times. A client had to detect that and re-issue
929   read requests.
930
931 * PIM Manager API: optional ViewAgent.Quiescent() (FDO #56428)
932
933   The callback is guaranteed to be invoked once when a search has
934   finished sending its initial results, and not sooner. This makes it
935   possible to check whether the current data contains some contact or
936   not.
937
938 * PIM Manager: limit number of search results (FDO #56142)
939
940   A 'limit' search term with a number as parameter (formatted as string)
941   can be added to a 'phone' or 'any-contains' search term to truncate the
942   search results after a certain number of contacts. Example:
943     Search([['any-contains', 'Joe'], ['limit', '10']])
944     => return the first 10 Joes.
945
946   As with any other search, the resulting view will be updated if
947   contact data changes.
948
949   The limit must not be changed in a RefineSearch(). A 'limit' term may
950   (but doesn't have to) be given. If it is given, its value must match
951   the value set when creating the search. This limitation simplifies the
952   implementation and its testing. The limitation could be removed if
953   there is sufficient demand.
954
955 * PIM Manager: fix refining a search
956
957   Due to not mapping the local index in the view to the parent's index,
958   refining only worked in views where parent and child had the same
959   index for the contacts in the search view.
960
961 * PIM Manager: fix starting when done via search
962
963   When the unified address book (= FullView) was not running yet at the
964   time when a client wanted to search it, the unified address book was
965   not started and thus the search never returned results.
966
967 * PIM Manager: fix writing contact, support photo and notes
968
969   folks and EDS do not support writing properties in parallel
970   (https://bugzilla.gnome.org/show_bug.cgi?id=652659). Must serialize
971   setting of modified properties.
972
973 * PIM Manager: fix incorrect contact removal signals in filtered view
974
975   The filtered view did not check whether a parent's removed contact was
976   really part of the view before sending a removal signal for it.
977
978 * D-Bus: missing out parameters in D-Bus introspection XML (FDO #57292)
979
980   The problem was in the C++ D-Bus binding. If the method that gets bound
981   to D-Bus returns a value, that value was ignored in the signature:
982     int foo() => no out parameter
983
984   It works when the method was declared as having a retval:
985     void foo (int &result) => integer out parameter
986
987   This problem existed for both the libdbus and the GIO D-Bus
988   bindings. In SyncEvolution it affected methods like GetVersions().
989
990 * PIM Manager performance: pre-compute normalized telephone numbers
991
992   Looking up by phone number spends most of its cycles in normalizing of
993   the phone numbers in the unified address book. Instead of doing that
994   work over and over again during the search, do it once while loading.
995
996   Looking up a phone number only once does not gain from this change, it
997   even gets slower (more memory intensive, less cache locality). Only
998   searching multiple times becomes faster.
999
1000   Ultimately it would be best to store the normalized strings together
1001   with the telephone number inside EDS when the contact gets
1002   created. Work on that is in progress.
1003
1004 * PIM Manager: improve performance of FullView sorting
1005
1006   This fixes the hotspot during populating the FullView content: moving
1007   contacts around required copying IndividualData and thus copying
1008   complex C++ structs and strings. Storing pointers and moving those
1009   avoids that, with no lack of convenience thanks to boost::ptr_vector.
1010
1011   Reordering also becomes faster, because the intermediate copy only
1012   needs to be of the pointers instead of the full content.
1013
1014 * PIM Manager example: add benchmarking
1015
1016   The new "checkpoints" split up the whole script run into pieces which
1017   are timed separately, with duration printed to stdout. In addition,
1018   tools like "perf" can be started for the duration of one phase.
1019
1020 * SyncML: workarounds for broken peers
1021
1022   Some peers have problems with meta data (CtCap, old Nokia phones) and
1023   the sync mode extensions required for advertising the restart
1024   capability (Oracle Beehive).
1025
1026   Because the problem occurs when SyncEvolution contacts the peers
1027   before it gets the device information from the peer, dynamic rules
1028   based on the peer identifiers cannot be used. Instead the local config
1029   must already disable these extra features in advance.
1030
1031   The "SyncMLVersion" property gets extended for this. Instead of just
1032   "SyncMLVersion = 1.0" (as before) it now becomes possible to say
1033   "SyncMLVersion = 1.0, noctcap, norestart".
1034
1035   "noctcap" disables sending CtCap. "norestart" disables the sync mode
1036   extensions and thus doing multiple sync cycles in the same session
1037   (used between SyncEvolution instances in some cases to get client and
1038   server into sync in one session).
1039
1040   Both keywords are case-insensitive. There's no error checking for
1041   typos, so beware!
1042
1043   The "SyncMLVersion" property was chosen because it was already in use
1044   for configuring SyncML compatibility aspects and adding a new property
1045   would have been harder.
1046
1047 * EDS: fix creating databases
1048
1049   --create-database was broken in combination with the final code in EDS
1050   3.6 because it passed NULL for the UID to e_source_new_with_uid(),
1051   which is considered an error by the implementation of that
1052   method. Must use e_source_new() if we don't have a UID.
1053
1054 * fixed some memory leaks, extended tests to cover new features and bugs
1055
1056
1057 SyncEvolution 1.3.99.1, 25.10.2012
1058 ==================================
1059
1060 Development snapshot. The PIM Manager API implementation is fully
1061 implemented, see src/dbus/server/pim/README for an introduction.  The
1062 PBAP backend together with a new one-way caching sync mode provides an
1063 efficient way of keeping a local database in sync via Bluetooth with a
1064 phone which does not implement SyncML.
1065
1066 Other changes:
1067
1068 * workarounds for warnings from g++ 4.5
1069
1070 * engine: : local cache sync mode
1071
1072   This patch  introduces support for true one-way syncing ("caching"):
1073   the local datastore is meant to be an exact copy of the data on the
1074   remote side. The assumption is that no modifications are ever made
1075   locally outside of syncing. This is different from one-way sync modes,
1076   which allows local changes and only temporarily disables sending them
1077   to the remote side.
1078
1079   Another goal of the new mode is to avoid data writes as much as
1080   possible.
1081
1082   This new mode only works on the server side of a sync, where the
1083   engine has enough control over the data flow. Setting "sync" to:
1084   - "local-cache-incremental" will do an incremental sync (if possible)
1085     or a slow sync (otherwise). This is usually the right mode to use,
1086     and thus has "local-cache" as alias.
1087   - "local-cache-slow" will always do a slow sync. Useful for
1088     debugging or after (accidentally) making changes on the local side.
1089     An incremental sync will ignore such changes because they are not
1090     meant to happen, aren't checked for to improve performance and
1091     thus will leave client and server out-of-sync!
1092
1093   Both modes are recorded in the sync report of the local side. The
1094   target side is the client and records the normal "two-way" or "slow"
1095   sync modes.
1096
1097   With the current SyncEvolution contact field list, first, middle and
1098   last name are used to find matches for contacts. For events, tasks
1099   and memos, time, summary and description are used.
1100
1101 * HTTP proxy: useProxy=0 overrides http_* env variables
1102
1103   Previously, if http_proxy was set, a proxy was used even if
1104   explicitly disabled. This prevented disabling the use of a proxy
1105   which only made sense in some cases, like accessing something
1106   that runs locally. Explicitly telling SyncEvolution to ignore
1107   http_proxy is necessary because it doesn't support no_proxy.
1108
1109 * WebDAV: auto-discovery fix
1110
1111   With Google Contact + CardDAV the auto-discovery failed after
1112   finding the default address book, without reporting that result.
1113
1114 * command line: implement --create/remove-database
1115
1116   Creating a database is only possible with a chosen name. The UID is
1117   chosen automatically by the storage. Only implemented in the EDS
1118   backend.
1119
1120 * file backend: sub-second mod time stamps
1121
1122   Change tracking in the file backend used to be based on the
1123   modification time in seconds. When running many syncs quickly (as in
1124   testing), that can lead to changes not being detected when they happen
1125   within a second. Now the file backend also includes the sub-second part of the
1126   modification time stamp, if available.
1127
1128   This change is relevant when upgrading SyncEvolution: most of the
1129   items will be considered "updated" once during the first sync after
1130   the upgrade (or a downgrade) because the revision strings get
1131   calculated differently.
1132
1133 * D-Bus server: avoid progress outside of 0-100% range
1134
1135   For example in the new TestLocalCache.testItemDelete100, the
1136   percentage value in the ProgressChanged signal become larger
1137   than 100 and then revert to 100 at the end of the sync.
1138
1139   Seems the underlying calculation is faulty or simply inaccurate.
1140   This is not fixed. Instead the result is just clipped to the valid
1141   range.
1142
1143 * code cleanup + improvements in testing
1144
1145
1146 SyncEvolution 1.3.1 -> 1.3.2, 05.11.2012
1147 ========================================
1148
1149 Minor (or major, if you depend on auto syncing) bug fix
1150 release. Details:
1151
1152 * auto sync: only synced once (FDO #56667)
1153
1154   A successful sync was incorrectly treated like a sync with a permanent
1155   failure, which prevents further automatic syncing.
1156
1157 * auto sync: notifications were not translated
1158
1159   The code which enabled localization of messages created by the
1160   D-Bus server was incomplete. Localization was only enabled
1161   accidentally through KDE if the KDE platform modules was enabled
1162   during compilation and installed.
1163
1164 * HTTP Proxy: useProxy=0 overrides http_* env variables
1165
1166   Previously, if http_proxy was set, a proxy was used even if
1167   explicitly disabled. This prevented disabling the use of a proxy
1168   which only made sense in some cases, like accessing something
1169   that runs locally. Explicitly telling SyncEvolution to ignore
1170   http_proxy is necessary because it doesn't support no_proxy.
1171
1172 * minor changes in testing and autotools files (missing Boost search path
1173   in gdbus* libs might have caused compile problems)
1174
1175
1176 SyncEvolution 1.3 -> 1.3.1, 05.10.2012
1177 ======================================
1178
1179 Minor bug fix release. Details:
1180
1181 * command line: fix output of --import for directories
1182
1183   The running count at the start of the line (#0, #1, ...) was
1184   not incremented when reading individual files from a directory.
1185
1186 * Funambol: work around PHOTO TYPE=image/jpeg, part II
1187
1188   The final version of the fix hadn't made it into the source code.
1189
1190 * vCalendar 1.0 + tasks: DUE date could be shifted by a day (FDO #55238)
1191
1192   Because of incomplete support for time conversion, the due date
1193   could get mixed up when phone and PC were set to something other
1194   than UTC. Reported and fixed by Peter Jan.
1195
1196 * syncevolution.org: syncevolution-evolution had incorrect dependencies
1197
1198   Installation on older Linux distros was not possible because the ebook/ecal
1199   package dependencies were named incorrectly, for example libebook-1.2-10
1200   instead of libebook1.2-10. Only more recent packages have the extra
1201   dash, for example libebook-1.2-12. Reported by Mariusz Sokolowski.
1202
1203 * GTK-3 UI: fixed compile problem
1204
1205   The GTK-3 UI depends on a class from gio-unix-2.0 and failed to
1206   compile on Fedora Core 16 because the configure checks for that lib
1207   (and thus the compiler flags) were missing. Reported by Peter
1208   Robinson.
1209
1210 * Curl: allow using it in the D-Bus server
1211
1212   In the past, using curl as HTTP transport in the syncevo-dbus-server
1213   was prevented, leading to "unsupported transport type is specified in
1214   the configuration". The reason was that using curl would block the
1215   server and make it unresponsive on D-Bus.
1216
1217   This reason has gone away, because now the HTTP traffic happens in a
1218   separate process. Thus now it is allowed to use curl in the
1219   syncevo-dbus-server.
1220
1221 * fix for false negative in syncevo-dbus-server testing
1222
1223
1224 SyncEvolution 1.2.2 -> 1.3, 10.09.2012
1225 ======================================
1226
1227 After almost three months of public beta testing the next major
1228 version of SyncEvolution is ready for release. The pre-releases did
1229 have the desired effect of flushing out bugs not found by nightly
1230 testing alone. Thanks everyone for packaging, downloading and testing
1231 them!
1232
1233 New features are KDE/Akonadi and ActiveSync support, not only in the
1234 source code but also in syncevolution.org binaries. ActiveSync is the
1235 recommended way of synchronizing contacts with Google:
1236 https://syncevolution.org/wiki/google-contacts-activesync
1237
1238 The D-Bus server and local sync were rewritten considerably, to make
1239 the code cleaner and more robust. The CalDAV backend now also supports
1240 tasks and memos. CalDAV and CardDAV can be used in combination with a
1241 SyncML peer ("bridging SyncML and WebDAV"), thus allowing a device
1242 which only supports SyncML to talk to a WebDAV service without any
1243 intermediate storage.
1244
1245 1.3 contains bug fixes that were not backported to 1.2.x, so upgrading
1246 is recommended. For example, SyncEvolution 1.3 is required for
1247 Evolution 3.4, otherwise photos are not exported properly. Support for
1248 Evolution >= 3.6 is in the source code, but not in syncevolution.org
1249 binaries. Further workarounds for recent changes in Google CalDAV and
1250 Funambol One Media were added.
1251
1252
1253 Details:
1254
1255 * ActiveSync: updated to work with latest activesyncd and Google, package binaries
1256
1257   Syncing Google contacts was added to the nightly testing. Syncing
1258   contacts and events with Exchange 2012 was already working. Setup
1259   instructions and known issues are described here:
1260   https://syncevolution.org/wiki/google-contacts-activesync
1261
1262 * phone sync: delete<->delete conflict + phone calendar+todo sync (BMC #23744)
1263
1264   When deleting an item on phone and locally, the next sync failed with
1265   ERROR messages about "object not found". This has several reasons:
1266   - libsynthesis super data store attempts to read items
1267     which may or may not exist (triggers ERROR message)
1268   - it checks for 404 but Evolution backends only return a generic
1269     database error (causes sync to fail)
1270
1271 * phone sync: get phone vendor and model from Device ID profile (BMC #736)
1272
1273   In the past we have relied on the user-modifiable device name to be
1274   the fingerprint for matching a phone to a template which is unreliable.
1275
1276   This release changes this in the cases where the phone supports the
1277   Device ID profile (DIP). If support for DIP is detected, then we
1278   extract the vendor and product ids and attempt to associate them
1279   with a product and vendor name by using a newly added lookup table.
1280
1281   This lookup table has to be maintained manually and depends on
1282   contributions by users to cover more devices. See
1283   http://blixtra.org/blog/2011/09/22/syncevolution-needs-you-or-at-least-your-bluetooth-phones/
1284
1285 * vCalendar 1.0: fixed recurring all-day event support
1286
1287   vCalendar 1.0 cannot represent all-day events. The workarounds for
1288   mapping iCalendar 2.0 all-day events into vCalendar 1.0 was
1289   incomplete, leading to effects like shifting EXDATEs and end
1290   times.
1291
1292 * Funambol: ignore UID
1293
1294   Funambol's OneMedia sends UID, but not RECURRENCE-ID. That becomes a
1295   problem when multiple events of the same event series are added to a
1296   backend which follows the iCalendar 2.0 standard (CalDAV, EDS, KDE),
1297   because these events all look like the master event, and there can be
1298   only one of those.
1299
1300   SyncEvolution now strips the UID from all events coming from any
1301   Funambol server (regardless of the version). If a future Funambol
1302   server release adds support for both UID and RECURRENCE-ID, then
1303   SyncEvolution will have to be updated to take advantage of the
1304   improved server. Because the RECURRENCE-ID is also getting
1305   stripped (despite not being set at the moment), SyncEvolution should
1306   continue to work as it does now even if the server changes.
1307
1308   It would have been nice to limit this workaround to affected Funambol
1309   server versions, but an inquiry on the Funambol mailing list didn't
1310   get a reply, therefore SyncEvolution is playing it safe and assumes
1311   that all future Funambol releases will have the same problem.
1312
1313 * Funambol: work around PHOTO TYPE=image/jpeg
1314
1315   A combination of Funambol Android and Funambol server recently led to
1316   the Funambol server sending PHOTO data with TYPE=image/jpeg. This is
1317   invalid and caused EDS to reject the photo (Vladimir Elisseev,
1318   "[SyncEvolution] issues with syncing photos").
1319
1320   Work around the problem by only keeping the part of the type after the
1321   last slash, if there is any. For image/jpeg and similar types that
1322   leads to the desired value and does not affect valid values, because
1323   those do not contain a slash
1324   (http://www.iana.org/assignments/media-types/image/index.html).
1325
1326 * Funambol: avoid slow syncs in refresh from server
1327
1328   libsynthesis has traditionally implemented "refresh-from-server" as
1329   "delete local data" plus "slow" sync. This is more compatible, because
1330   some servers (like Google) do not support "refresh-from-server".
1331
1332   But it has the downside that the server cannot know that the client
1333   won't send any data, and Funambol's OneMedia now only allows one slow
1334   sync before blocking the next one for a certain period of time. This is
1335   done to prevent excessive resource usage by badly behaving clients.
1336
1337   To accomodate both kinds of servers, the new "enableRefreshSync"
1338   sync property can be set set to explicitly allow the usage of
1339   the "refresh-from-server" sync mode. It's off by default. The Funambol
1340   template has it turned on, existing configs must be updated manually
1341   (see upgrading comments below).
1342
1343 * Mobical (aka Everdroid): stopped testing memo syncing
1344
1345   Memos used to work, but now only trigger an unspecific 400 error
1346   on the server side.
1347
1348 * GTK-UI: accept service config with a username again (BMC#23106)
1349
1350   Suppressing configs with empty username had undesired side effects:
1351   modifying configs for direct syncing with a device incorrectly
1352   triggered the same error message, without any means of entering
1353   a username. The faulty check was removed without replacement.
1354
1355 * GTK-UI: added GTK 3 version of UI
1356
1357   When GTK 3 is found during compilation, a GTK 3 version of the
1358   UI is built. The source code of both is different to avoid
1359   excessive use of ifdefs. At the moment, both versions offer
1360   the same features. In the long run, the GTK 3 version will
1361   replace the GTK 2 version.
1362
1363 * command line: added refresh/one-way-from-local/remote (BMC #23537)
1364
1365   The -from-client/server sync modes are confusing because the direction
1366   of the data exchange depends on which side acts as SyncML server or
1367   client.
1368
1369   This release introduces new modes which use -from-local/remote
1370   instead. The statistics and messages also use these variants
1371   now. The old modes are still understood, but are declared as "not
1372   recommended" in the documentation.
1373
1374 * command line: config and source names are optional (BMC #23783)
1375
1376   The need to add "foo" and "bar" pseudo config and source names to the
1377   command line even when all parameters for the operation where
1378   explicitly specified on the command line was confusing.
1379
1380   Now it is possible to invoke item operations without the config and
1381   source name. Names which refer to non-existent configs are still
1382   accepted, as in previous releases. Typos are handled better by
1383   producing a detailed error report which includes (as applicable):
1384   - config doesn't exist
1385   - source doesn't exist or not selected
1386   - backend property not set
1387
1388   Because luids used to be positional arguments after <config> and
1389   <source>, a new --luids keyword is necessary to indicate that the
1390   ensuing parameters are luids and not <config> and <source>.
1391
1392 * command line: introduced --print-databases, supported for CalDAV/CardDAV
1393
1394   Listing databases is now a dedicated operation, instead of being done
1395   whenever syncevolution was invoked without parameters.
1396
1397   Advantages:
1398   - can be combined with property assignments for backends
1399     which do not work without that additional information, for example
1400     CalDAV/CardDAV:
1401     syncevolution --print-databases \
1402                   backend=[caldav|carddav] \
1403                   syncURL=... \
1404                   username=... \
1405                   password=...
1406   - can be done for configured sources
1407
1408 * command line: use both stdout and stderr
1409
1410   Traditionally, the "syncevolution" command line tool mixed its
1411   INFO/ERROR/DEBUG messages into the normal stdout. This has the major
1412   drawback that error messages get lost during operations like
1413      syncevolution --export - @default addressbook | grep "John Doe"
1414
1415   Now anything which is not the expected result of the operation is
1416   always sent to stderr. Obviously this includes ERROR messages. INFO
1417   and DEBUG are harder to decide. Because they usually convey meta
1418   information about the running operation, they are also sent to
1419   stderr. The output of running a sync goes to both stdout (summary)
1420   and stderr (progress).
1421
1422 * command line: allow setting empty properties
1423
1424   Due to the way how properties were handled internally, it wasn't
1425   possible to explicitly set a property to its default value. Instead
1426   the property was unset. For example, explicitly setting database= was
1427   not possible.
1428
1429   This is necessary for client-test and ActiveSync, because client-test
1430   needs to know that the testing is expected to run with the default
1431   databases (something which normally is avoided by overwriting empty
1432   database properties).
1433
1434   Now the "is set" state is tracked explicitly in the config storage and
1435   command line property APIs. Unsetting a property via the command line
1436   could be implemented with an explicit command line option, but is not
1437   supported at the moment.
1438
1439 * command line: fixed --export <file name>
1440
1441   When exporting items into a file, the delimiter between items
1442   was missing.
1443
1444 * command line + local sync: fixed erroneous "Comparison impossible" output.
1445
1446   "Comparison impossible" was incorrectly printed after a successful
1447   comparison on the target side of local sync.
1448
1449 * local sync: fix timeout with local sync with libdbus
1450
1451   When using libdbus instead of GIO D-Bus (as done by syncevolution.org
1452   binaries and SyncEvolution on Maemo), local sync may have aborted
1453   after 25 seconds when syncing many items with a D-Bus timeout error:
1454
1455   [ERROR] sending message to child failed: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible ca
1456
1457   Reported by Toke Høiland-Jørgensen for Harmattan. Somehow not encountered
1458   elsewhere.
1459
1460 * synccompare: shorter data dump of PHOTO
1461
1462   A full comparison of the base64 PHOTO data can be very long.
1463   Now some key characteristics of the PHOTO data (number of
1464   characters in base64 encoding, number of bytes in decoded
1465   data, md5sum of decoded data) are printed instead.
1466
1467   That way, unintended changes of the data (different encoding,
1468   different content) should still be found while testing and
1469   added/removed photos are nicely visible in synccompare diffs.
1470
1471 * synccompare: fixed output for byte-identical duplicates
1472
1473   If database dumps contained byte-identical duplicates, they
1474   were treated as a single item on the left side of a comparison.
1475   This caused erroneous "added" entries on the right side.
1476
1477 * secure password storage: usage of GNOME Keyring vs. KDE KWallet configurable
1478
1479   Automatically detecting KDE users is not possible at the
1480   moment. Instead KDE users have to manually set the new "keyring"
1481   global config property to "KDE" (case insensitive) if the
1482   SyncEvolution installation supports both, because GNOME Keyring is the
1483   default to avoid surprises for traditional users. If only KWallet
1484   support is enabled, then this is not necessary.
1485
1486   "GNOME" and "true/false/1/0/yes/no" can also be set. This has the
1487   advantage that keyring usage can be enabled permanently for the
1488   command line in --daemon=no mode; normally keyrings are not used in
1489   that mode because accessing them can bring up UI dialogs.
1490
1491   It also becomes possible to disable keyring usage in syncevo-dbus-server,
1492   something which couldn't be done before.
1493
1494   The --keyring command line option is still supported, as an alias for
1495   "[--sync-property] keyring=<value>". The default value for --keyring
1496   is true, to match the traditional behavior. In contrast to other sync
1497   properties, setting "keyring" does not require an explicit --run
1498   parameter. Again this is done to mirror traditional usage.
1499
1500 * config: improved 'maxlogdirs' documentation
1501
1502   The old explanation made it sound like nothing would get deleted by
1503   default ("If set, ..."). That's not correct, by default only 10
1504   sessions are kept.
1505   Also explain the behavior of deleting intermediate sessions first.
1506
1507 * Evolution: always create databases (PTCOM-113)
1508
1509   Always try to create address book or calendar database, because even
1510   if there is a source there's no guarantee that the actual database
1511   was created already; the original logic for only setting this when
1512   explicitly requesting a new database therefore failed in some cases.
1513
1514   This problem affected users who had never created anything locally
1515   and wanted to use SyncEvolution to migrate their data. Now that
1516   works without having to create dummy entries first.
1517
1518 * Evolution contacts: changed default sync format to vCard 3.0
1519
1520   vCard 3.0 is the better default because it has saner encoding
1521   rules and defines more properties, thus avoiding the need for
1522   non-standard extensions. However, Mobical has problems with
1523   the new default. See upgrade instructions below.
1524
1525 * Evolution: added support for EDS 3.5.x
1526
1527   When compiled against EDS 3.5.x or later, SyncEvolution now uses
1528   the backend code originally written for the EClient API introduced
1529   in EDS 3.2. That code was changed so that it works with the new
1530   include file rules and ESourceRegistry in EDS 3.5.x. Support
1531   for using the EClient API with EDS 3.4 was removed because maintaining
1532   three different flavors of the EDS backend code would be too much
1533   work and not gain much (just the possibility to test the EDSClient
1534   code with 3.4).
1535
1536   At the moment, this is a compile time choice made automatically
1537   by configure. syncevolution.org binaries are compiled against
1538   an older EDS and thus do not work with EDS 3.5.x or later.
1539
1540   EDS 3.5.x handles authentication itself, using a standard system
1541   prompt if necessary. SyncEvolution can no longer provide the password,
1542   and thus the "databaseUser/Password" options have no effect when using
1543   EDS 3.5.x.
1544
1545 * D-Bus server: fixed HTTP presence for recent libdbus
1546
1547   Testing with libdbus 1.6.0 on Debian Testing failed because the lib
1548   changed some behavior: instead of looking up the owner of a certain
1549   bus name immediately, it now does that when invoking a
1550   method. Therefore the check for "have connection" in SyncEvolution
1551   was too simplistic and missed the fact that both were not usable,
1552   causing the server to assume that HTTP was down while in reality it
1553   should have assumed it to be up. This prevented auto-syncing and
1554   manually clicking "Sync" in the GTK UI.
1555
1556 * D-Bus server: made notification verbosity configurable with "notifyLevel"
1557
1558   The new "notifyLevel" per-peer configuration option allows users to
1559   control how many desktop notifications the D-Bus server produces while
1560   executing an automatic sync:
1561
1562   0 - suppress all notifications
1563   1 - show only errors
1564   2 - show information about changes and errors (in practice currently the same as level 3)
1565   3 - show all notifications, including starting a sync (default)
1566
1567 * WebDAV: fixed data corruption issue when uploading item with long UID
1568
1569   In some cases data with a very long UID wasn't handled correctly,
1570   causing the out-going data to be malformed and probably causing a
1571   rejection by the server. The root cause is incorrect string handling.
1572   In releases before 1.2.99.1, only the --import operation of contacts
1573   into CardDAV were affected. In 1.2.99.1, the same code also got used
1574   for calendar items and then could also affect syncing.
1575
1576 * CalDAV: updated Google workarounds
1577
1578   Google started sending empty items (VCALENDAR with no VEVENT inside)
1579   which cannot be removed. SyncEvolution 1.3 ignores such items.
1580
1581   The workaround for a 404 from Google Calendar for a GET (sending a
1582   REPORT request matching the item's UID) was broken: first, processing
1583   the result ended up calling the unset responseEnd boost function
1584   pointer, which caused the request to fail. Second, getting multiple
1585   items wasn't handled (data from all items concatenated together was
1586   used).
1587
1588   That can happen in the somewhat unlike case that some items have a UID
1589   which is a complete superset of the requested UID - not realistic in
1590   real life, but happens during testing.
1591
1592 * Google Calendar: updated URL redirect handling
1593
1594   Google Calendar sometimes returns redirect requests to human-readable
1595   web sites (an "unavailable" page, a login form). This is of course
1596   bogus when the client is an automated CalDAV client.
1597
1598   The "unavailable.html" case was already handled. Made it a bit more
1599   flexible to also catch possible variations of it (additional
1600   parameters, https instead of http).
1601
1602   Added the https://accounts.google.com/ServiceLogin case. Not sure
1603   whether retrying will help in that case, but there's not much else
1604   that SyncEvolution can do.
1605
1606 * WebDAV: bridge with SyncML
1607
1608   Now a peer accessed via SyncML can read/write data stored in a
1609   CalDAV/CardDAV server directly. This can be used to connect a device
1610   which only supports SyncML to a CalDAV/CardDAV server, or sync data
1611   between a SyncML server and a CalDAV/CardDAV server. See "CalDAV and
1612   CardDAV" in the README for details.
1613
1614 * WebDAV: improved --configure
1615
1616   Added INFO output about checking sources. This helps with WebDAV when
1617   the server cannot be contacted (dead, misconfigured) because otherwise
1618   there would be no indication at all why the --configure operation
1619   seems to hang.
1620
1621   Here is some example output, including aborting:
1622   $ syncevolution --configure --template webdav \
1623                   syncURL=http://192.168.1.100:9000/ \
1624                   username=foo password=bar retryDuration=2s \
1625                   target-config@webdav-temp
1626   [INFO] creating configuration target-config@webdav-temp
1627   [INFO] addressbook: looking for databases...
1628   [INFO] addressbook: no database to synchronize
1629   [INFO] calendar: looking for databases...
1630   [INFO] calendar: no database to synchronize
1631   [INFO] memo: looking for databases...
1632   [INFO] memo: no database to synchronize
1633   [INFO] todo: looking for databases...
1634   [INFO] todo: no database to synchronize
1635
1636   It timed out fairly quickly here because of the retryDuration=2s. That
1637   also gets placed in the resulting config, which is probably not desired.
1638
1639   Aborting the operation is now supported:
1640
1641   $ syncevolution --configure \
1642                   --template webdav \
1643                   syncURL=http://192.168.1.100:9000/ \
1644                   username=foo password=bar \
1645                   target-config@webdav-temp
1646   [INFO] creating configuration target-config@webdav-temp
1647   [INFO] addressbook: looking for databases...
1648   ^C[INFO] Asking to suspend...
1649   [INFO] Press CTRL-C again quickly (within 2s) to stop immediately (can cause problems in the future!)
1650   ^C[INFO] Aborting immediately ...
1651   [ERROR] error code from SyncEvolution aborted on behalf of user (local, status 20017): aborting as requested by user
1652
1653   It would be good to make the CTRL-C handling code aware that it can
1654   abort immediately instead of doing the intermediate "asking to suspend"
1655   step, which only makes sense for sync sessions.
1656
1657 * WebDAV: support tasks and memos (BMC #24893)
1658
1659   The new backend property values "CalDAVTodo" and "CalDAVJournal"
1660   select tasks resp. memos stored in a CalDAV collection. "CalDAV"
1661   continues to select events.
1662
1663   Events, tasks and journals can be mixed in the same resource (=
1664   URL). However, this is less efficient than storing them separately.
1665
1666   A good CalDAV server allows filtering items by type, and SyncEvolution
1667   uses that. However, it was found that Radicale 0.7 ignores this
1668   filtering, which could have led to data loss (SyncEvolution asks for
1669   all VTODOs in preparation for a "delete all items" operation in a
1670   "CalDAVTodo" source, gets also VJOURNALs, then deletes them).
1671
1672   Therefore SyncEvolution plays it safe and downloads the VTODO and
1673   VJOURNAL data to double-check that it is working on the right items.
1674   This causes additional traffic for well-behaving servers; currently
1675   it cannot be turned off.
1676
1677   Tasks are exchanged as vCalendar 1.0 or iCalendar 2.0 VJOURNAL.
1678   Memos are exchanged as VTODO or plain text. The logic for storing
1679   incoming plain text is slightly different compared to the way how
1680   the EDS memo backend did it: instead of copying the first line
1681   from the text into the summary, it is now moved. In other words,
1682   the first line gets stripped. The change is primarily technically
1683   motivated; both approaches have pros and cons.
1684
1685 * WebDAV: improved Radicale support
1686
1687   Radicale > 0.7 will return status 200 for delete requests;
1688   is now treated like 204 by SyncEvolution. 412 'Preconditiona Failed'
1689   when asking to delete an already removed item is treated like
1690   the more common 404 'not found'. Same with 410 'gone' instead
1691   of 404 when trying to read a non-existent item.
1692
1693 * CalDAV/CardDAV sync: improved target side output
1694
1695   Added a "target side of local sync ready" INFO message to introduce
1696   the output which has the target context in the [INFO] tag. The sync report
1697   from the target side now has the target context embedded in brackets
1698   after the "Changes applied during synchronization" header, to avoid
1699   ambiguities.
1700
1701   Sometimes the backend has to resend requests because of temporary
1702   issues. If the problem turned out to be permanent, there was a long
1703   period of time, retryDuration=5 minutes to be precice, in which no
1704   visible progress happened.
1705
1706   Now SyncEvolution's WebDAV backend will print a message like this
1707   before going to sleep until it is time to retry:
1708
1709   [INFO @googlecalendar] operation temporarily (?) failed, going to retry in 5.0s before giving up in 18.4s: PROPFIND: Neon error code 1: 401 Unauthorized
1710
1711   The uncertainty comes from several factors. In this example, the 401
1712   might indicate a permanent problem (wrong credentials), or it could be
1713   Google reporting a temporary authorization problem which is (probably)
1714   meant to slow down the client while it asks the user to re-enter the
1715   password. SyncEvolution only asks for passwords once, so it tries
1716   again with the same password if it was successful with it in the
1717   past. Otherwise it gives up immediately.
1718
1719   Another dubious example are name server lookup errors. They can be
1720   permanent (wrong host name) or temporary (name server
1721   down). SyncEvolution errs on the side of retrying, to avoid
1722   interrupting an operation which still has a chance to continue.
1723
1724   Output from the target side of a local sync was passed through stderr
1725   redirection as chunks of text to the frontends. This had several
1726   drawbacks:
1727   - forwarding only happened when the local sync parent was processing
1728     the output redirection, which (due to limitations of the implementation)
1729     only happens when it needs to print something itself
1730   - debug messages were not forwarded
1731   - message boundaries might have been lost
1732
1733   In particular the new INFO messages are relevant while the sync runs
1734   and need to be shown immediately.
1735
1736 * WebDAV: --status for WebDAV source aborted
1737
1738   The command line --status operation did not complete when applied to a
1739   CalDAV/CardDAV source. Instead it aborted because the operation took a
1740   code path where the backend was not fully initialized.
1741
1742 * file backend: more flexible sync support for memos
1743
1744   The databaseFormat=text/calendar for memos did not support
1745   synchronizing as plain text. When using the new
1746   databaseFormat=text/calendar+plain, vCalendar/iCalendar/plain text
1747   are all valid sync formats; the storage is iCalendar 2.0
1748   VJOURNAL in all cases.
1749
1750 * WebDAV: avoid potential crash during database detection
1751
1752   When a server responds to a PROPFIND for a path with results for some
1753   other path, then SyncEvolution crashed during the search for the
1754   default calendar or address book because of a bug in the code which
1755   was meant to handle that kind of response. Apparently Yahoo Calendar
1756   did that. Now seen again in combination with Radicale 0.6.4.
1757
1758   In general, the code was made more robust to cope with bugs in
1759   Radicale 0.6.4. Later Radicale versions fixed these issues and also
1760   worked with SyncEvolution 1.2.2 without client-side workarounds.
1761
1762 * WebDAV: better path normalization
1763
1764   "syncURL" and "database" properties had to end in a trailing slash,
1765   otherwise items were not found (404 errors). Now the necessary slash
1766   is added automatically.
1767
1768 * Curl transport: support SSLServerCertificates=<path>
1769
1770   When the setting refers to a directory, then CURLOPT_CAINFO doesn't
1771   work (must be a file). Check this and use CURLOPT_CAPATH instead.
1772
1773   Caveat: there are some comments in the API documentation about "NSS
1774   enabled libcurl" which supports a directory in
1775   CURLOPT_CAINFO. Hopefully providing an explicit path in CURLOPT_CAPATH
1776   also works in that configuration.
1777
1778 * code cleanup + rewrite: syncing done in separate process
1779
1780   syncevo-dbus-server now runs syncing in a separate process. Local
1781   sync also uses a second helper process. This makes the D-Bus server
1782   more responsive via D-Bus (no more blocking operations) and
1783   minimizes the effect of bugs in code involved with syncing
1784   (backends, system libraries, etc.).
1785
1786   In the long term this restructuring will also allow more advanced
1787   features, like monitoring local or remote storage for changes.
1788
1789 * SyncEvolution <-> SyncEvolution sync: multiple cycles per session
1790
1791   SyncML only allows one send/receive cycle per session. There are cases
1792   (for example, client side merges data that a dumber server failed to
1793   match correctly) where client and server are still out of sync at
1794   the end of a cycle. When SyncEvolution syncs with another SyncEvolution
1795   instance (locally or remotely), both sides detect that the peer
1796   can continue syncing in the same session and start over automatically
1797   when needed. Previously the user had to start another sync session manually.
1798
1799   To the user this is shown as "number of cycles" in a sync session
1800   in the sync report. "Restart" is the process of entering a new cycle.
1801
1802   The cycles are also visible in the command line output as multiple
1803   INFO lines:
1804
1805     [INFO] eds_contact: starting first time sync from client (peer is server)
1806     [INFO] creating complete data backup of source eds_contact before sync (enabled with dumpData and needed for prin
1807     Local data changes to be applied during synchronization:
1808     *** eds_contact ***
1809     no changes
1810
1811     [INFO] eds_contact: sent 1/1
1812     [INFO] eds_contact: started
1813     [INFO] eds_contact: first time sync done successfully
1814     [INFO] eds_contact: starting normal sync from client (peer is server)         <===
1815     [INFO] eds_contact: started                                                   <===
1816     [INFO] eds_contact: normal sync done successfully                             <===
1817     [INFO] creating complete data backup after sync (enabled with dumpData and needed for printChanges)
1818
1819     Synchronization successful.
1820
1821     Changes applied during synchronization:
1822     +---------------|-----------------------|-----------------------|-CON-+
1823     |               |         LOCAL         |        REMOTE         | FLI |
1824     |        Source | NEW | MOD | DEL | ERR | NEW | MOD | DEL | ERR | CTS |
1825     +---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
1826     |   eds_contact |  0  |  0  |  0  |  0  |  1  |  0  |  0  |  0  |  0  |
1827     |   refresh-from-local, 2 cycles, 0 KB sent by client, 0 KB received  |
1828                             ^^^^^^^^
1829     |   item(s) in database backup: 1 before sync, 1 after it             |
1830     +---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
1831     |          start Tue Feb  7 17:07:49 2012, duration 0:03min           |
1832     |               synchronization completed successfully                |
1833     +---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
1834
1835 * SyncEvolution <-> SyncEvolution sync: negotiate UID support via SyncCap (BMC #22783)
1836
1837   The semantic of UID/RECURRENCE-ID in calendar data is now tracked
1838   per data store involved in a sync. If full iCalendar 2.0 semantic
1839   (= IDs are globally unique) is guaranteed, then pairs are found
1840   based on these IDs. Otherwise pairs must be found by looking at
1841   item attributes.
1842
1843   Previously a hack was used to detect this kind of support (any kind
1844   of SyncEvolution instance was assumed to support it, although some
1845   backends do not).
1846
1847 * engine: add DTSTAMP+LAST-MODIFIED before writing calendar items
1848
1849   When writing calendar items into a backend storage as iCalendar 2.0 or
1850   vCalendar 1.0, they should have DTSTAMP and LAST-MODIFIED values. DTSTAMP
1851   is expected by some CalDAV servers (like Apple). LAST-MODIFIED is usually
1852   added by the storage, but not always.
1853
1854   In the text/plain -> syncevolution -> text/calendar -> Radicale -> EDS
1855   -> syncevolution chain the LAST-MODIFIED was not added by Radicale, which caused
1856   problems for change tracking in an EDS-based SyncEvolution.
1857
1858   Also necessary when importing from a phone using vCalendar without
1859   DTSTAMP directly into CalDAV.
1860
1861 * autotools: ensure that link lines are complete
1862
1863   As mentioned by Tino Keitel on the mailing list, some libs and
1864   executables were only implicitly linked against libraries that they
1865   called directly. This happened to work by chance because these libraries
1866   ended up in the running executable anyway, due to indirect loading.
1867   Now there is a "make installcheck" test for this kind of defect
1868   and the makefiles were updated to avoid it.
1869
1870   One exception is libsmltk, which depends on the caller providing
1871   SySync logging support.
1872
1873 * syncevolution.org packages: fixed D-Bus server autostart in .deb and .rpm packages
1874
1875   syncevo-dbus-server wasn't started automatically as part of a user
1876   session because /etc/xdg/autostart/syncevo-dbus-server.desktop wasn't
1877   included in the packages. This broke auto syncing after a session
1878   restart (required manually starting SyncEvolution).
1879
1880 * syncevolution.org packages: support KDE
1881
1882   The traditional "syncevolution-evolution" package was
1883   replaced with "syncevolution-bundle". A meta "syncevolution-evolution"
1884   package depends on it, to support seamless updates for users who have
1885   "syncevolution-evolution" installed.
1886
1887   Binary dependencies of the main .deb are ignored for backends
1888   because loading them is optional. The new "syncevolution-kde"
1889   package has the right dependencies for KDE/Akonadi, while
1890   "syncevolution-evolution" mostly just lists standard libs
1891   if the "EDS compatibility" mode is used, where libebook/libecal
1892   are loaded dynamically.
1893
1894   Platform specific code (GNOME keyring, KDE wallet) was moved into
1895   loadable, optional modules, to allow installation of the SyncEvolution
1896   bundle without forcing the installation of unused system components.
1897
1898 * D-Bus: use GIO D-Bus instead of libdbus if available
1899
1900   When compiling from source, the more modern GIO D-Bus is used instead
1901   of libdbus if available and recent enough (>= 2.30). syncevolution.org
1902   binaries still use libdbus, to stay compatible with older Linux
1903   distros.
1904
1905 * several minor bug fixes
1906
1907   syncevo-dbus-server now runs under valgrind in the nightly testing,
1908   plus several more test scenarios were added. This helped to find
1909   and fix various minor memory handling issues.
1910
1911 * developers: backend API changes
1912
1913   beginSync/endSync() (aka m_startDataRead/m_endDataWrite) may now be
1914   called multiple times per SyncSource instance life cycle. SyncSources
1915   derived from TrackingSyncSource should work without changes. Use the
1916   Client::Source::*::testChangesMultiCycles test to check whether your
1917   backend supports this correctly.
1918
1919   Reading and deleting must throw a 404 status exception when an item
1920   is not found. The Client::Source::*::*404 tests cover this.
1921
1922   The special semantic of the former RegisterSyncSource::InactiveSource
1923   (invalid pointer of value 1) caused bugs, like using it in
1924   --print-databases (=> segfault) or not being able to store the result
1925   of a createSource() directly in a smart pointer (=> potential leak in
1926   SyncSource::createSource()).
1927
1928   Obviously a bad idea to start with. Replaced with a
1929   RegisterSyncSource::InactiveSource() method which creates a real,
1930   inactive SyncSource instance which can and must be deleted by the
1931   caller.
1932
1933   This is a SyncSource API change for backend developers.  Instead of
1934   RegisterSyncSource::InactiveSource, return
1935   RegisterSyncSource::InactiveSource(). Comparisons against
1936   RegisterSyncSource::InactiveSource needs to be replaced with a call
1937   to the new SyncSource::isInactive().
1938
1939   Long-running backend calls are encouraged to check for events on the
1940   main glib context (either in a loop or with
1941   g_main_context_iteration(NULL)) and abort when
1942   SuspendFlags::getSuspendFlags().getState() returns
1943   SuspendFlags::ABORT.
1944
1945   Implementing the improved local sync output required extending the
1946   D-Bus API. The Server.LogOutput signal now has an additional
1947   "process name" parameter. Normally it is empty. For messages
1948   originating from the target side, it carries that extra target
1949   context string.
1950
1951   This D-Bus API change is backward compatible. Older clients can still
1952   subscribe to and decode the LogOutput messages, they'll simply ignore
1953   the extra parameter. Newer clients expecting that extra parameter
1954   won't work with an older D-Bus daemon: they'll fail to decode the
1955   D-Bus message.
1956
1957 * packagers:
1958
1959   libgdbussyncevo is now installed as a normal library in /usr/lib,
1960   even though SyncEvolution is the only user.
1961
1962   pcrecpp is now a new hard dependency.
1963
1964
1965 Upgrading from release 1.2.x:
1966
1967 The sync format of existing configurations for Mobical (aka Everdroid)
1968 must be updated manually, because the server has encoding problems when
1969 using vCard 3.0 (now the default for Evolution contacts):
1970    syncevolution --configure \
1971                  syncFormat=text/x-vcard \
1972                  mobical addressbook
1973
1974 The Funambol template explicitly enables usage of the
1975 "refresh-from-server" sync mode to avoid getting throttled with 417
1976 'retry later' errors. The same must be added to existing configs
1977 manually:
1978    syncevolution --configure \
1979                  enableRefreshSync=TRUE \
1980                  funambol
1981
1982 Upgrading from releases before 1.2:
1983
1984 Old configurations can still be read. But writing, as it happens
1985 during a sync, must migrate the configuration first. Releases >= 1.2
1986 automatically migrates configurations. The old configurations
1987 will still be available (see "syncevolution --print-configs") but must
1988 be renamed manually to use them again under their original names with
1989 older SyncEvolution releases.
1990
1991
1992 SyncEvolution 1.2.99.3 -> 1.3, 10.09.2012
1993 =========================================
1994
1995 Final SyncEvolution 1.3 release. The pre-releases did have the desired
1996 effect of flushing out bugs not found by nightly testing alone. Thanks
1997 everyone for packaging, downloading and testing them! Time to get it
1998 out officially as the next stable release.
1999
2000 * D-Bus server + GIO D-Bus: shutdown fix
2001
2002   When compiled against GIO D-Bus (not the case in syncevolution.org
2003   binaries), the syncevo-dbus-server occasionally shut down before
2004   sending out all pending D-Bus messages. Showed up only in nightly
2005   testing.
2006
2007 * D-Bus server + GIO D-Bus: fix auto-activation (Debian bug #599247)
2008
2009   When syncevo-dbus-server was started on demand by the D-Bus daemon,
2010   then it registered itself with the daemon before it was ready to
2011   serve requests. Only happened in combination with GIO D-Bus and
2012   thus was not a problem before 1.2.99.x.
2013
2014   One user-visible effect was that the GTK UI did not select the default
2015   service when it was started for the first time, because it could not
2016   retrieve that information from syncevo-dbus-server.
2017
2018 * local sync: fix timeout with local sync with libdbus
2019
2020   When using libdbus instead of GIO D-Bus (as done by syncevolution.org
2021   binaries and SyncEvolution on Maemo), local sync may have aborted
2022   after 25 seconds when syncing many items with a D-Bus timeout error:
2023
2024   [ERROR] sending message to child failed: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible ca
2025
2026   Reported by Toke Høiland-Jørgensen for Harmattan. Somehow not encountered
2027   elsewhere.
2028
2029 * KDE: check for D-Bus to avoid crash in KApplication (BMC #25596)
2030
2031   Some unnamed version of KDE crashes in KApplication when invoked
2032   without a D-Bus session. The reporter ran into this when compiling
2033   from source, because the SyncEvolution binary is invoked as part of
2034   the build process, which ran outside of a D-Bus session.
2035
2036   Avoid the crash by checking for a D-Bus session bus before instantiating
2037   KApplication. Instantiating KApplication was added for KWallet support.
2038   Without D-Bus, KWallet does not work either, therefore throw an explicit
2039   error when the lack of D-Bus is detected.
2040
2041 * Funambol: work around PHOTO TYPE=image/jpeg
2042
2043   A combination of Funambol Android and Funambol server recently led to
2044   the Funambol server sending PHOTO data with TYPE=image/jpeg. This is
2045   invalid and caused EDS to reject the photo (Vladimir Elisseev,
2046   "[SyncEvolution] issues with syncing photos").
2047
2048   Work around the problem by only keeping the part of the type after the
2049   last slash, if there is any. For image/jpeg and similar types that
2050   leads to the desired value and does not affect valid values, because
2051   those do not contain a slash
2052   (http://www.iana.org/assignments/media-types/image/index.html).
2053
2054 * syncevo-http-server: fixed printing of server debug output
2055
2056   Python failed to call logSyncEvoOutput() after adding the additional
2057   'process' parameter to LogOutput because it extracts all four
2058   parameters and then cannot pass them to logSyncEvoOutput().
2059
2060   Now logSyncEvoOutput() uses the new process information to instantiate
2061   a logger with the right prefix, using 'sync' as fallback for messages
2062   without that information (as before).
2063
2064 * Some minor code and test cleanup.
2065
2066
2067 SyncEvolution 1.2.99.3 -> 1.2.99.4, 07.08.2012
2068 ==============================================
2069
2070 Another release candidate for SyncEvolution 1.3. Lesson learned:
2071 declaring a snapshot as "final" is a good way of luring the hidden bugs
2072 into the light. Of course, then another snapshot is needed...
2073
2074 Details:
2075
2076 * D-Bus server: fix support for autoSyncDelay > 0
2077
2078   Auto syncing was not getting triggered when using an autoSyncDelay > 0;
2079   by default it is 5 minutes. Thanks to Vladimir Elisseev for reporting
2080   this problem.
2081
2082 * command line: fixed --export <file name>
2083
2084   When exporting items into a file, the delimiter between items
2085   was missing.
2086
2087 * config: improved 'maxlogdirs' documentation
2088
2089   The old explanation made it sound like nothing would get deleted by
2090   default ("If set, ..."). That's not correct, by default only 10
2091   sessions are kept.
2092   Also explain the behavior of deleting intermediate sessions first.
2093
2094 * developers: fixed D-Bus interface XML
2095
2096   Reverted to Qt 4.x compatible annotations and changed "templateName"
2097   to "getTemplate" to make it more obvious what the parameter does.
2098   Only relevant for the out-of-tree Qt UI.
2099
2100   Fixed accidental removal of the "template" parameter in
2101   Session.GetNamedConfig(). Was not used in practice, but has to be
2102   correct in case that someone wants to use it.
2103
2104
2105 SyncEvolution 1.2.99.2 -> 1.2.99.3, 24.07.2012
2106 ==============================================
2107
2108 Final release candidate for SyncEvolution 1.3 - fingers crossed,
2109 knock on wood, etc.
2110
2111 ActiveSync is now available in binaries from syncevolution.org and
2112 becomes the recommended way of synchronizing contacts with Google. EDS
2113 3.5.x and later are supported when compiling from source;
2114 syncevolution.org binaries continue to support only EDS up to 3.4.
2115
2116
2117 Details:
2118
2119 * EDS: added support for EDS 3.5.x
2120
2121   When compiled against EDS 3.5.x or later, SyncEvolution now uses
2122   the backend code originally written for the EClient API introduced
2123   in EDS 3.2. That code was changed so that it works with the new
2124   include file rules and ESourceRegistry in EDS 3.5.x. Support
2125   for using the EClient API with EDS 3.4 was removed because maintaining
2126   three different flavors of the EDS backend code would be too much
2127   work and not gain much (just the possibility to test the EDSClient
2128   code with 3.4).
2129
2130   At the moment, this is a compile time choice made automatically
2131   by configure. syncevolution.org binaries are compiled against
2132   an older EDS and thus do not work with EDS 3.5.x or later.
2133
2134   EDS 3.5.x handles authentication itself, using a standard system
2135   prompt if necessary. SyncEvolution can no longer provide the password,
2136   and thus the "databaseUser/Password" options have no effect when using
2137   EDS 3.5.x.
2138
2139 * ActiveSync: updated to work with latest activesyncd and Google, package binaries
2140
2141   Syncing Google contacts was added to the nightly testing. Syncing
2142   contacts and events with Exchange 2012 was already working. Setup
2143   instructions and known issues are described here:
2144   https://syncevolution.org/wiki/google-contacts-activesync
2145
2146 * local sync: don't drop data comparison output on target side
2147
2148   synccompare on the target side of a local sync was invoked with its
2149   output being redirected via an unreliable socket to the local sync
2150   parent. When the output was large, some of it might have been lost.
2151
2152 * local sync: fixed crash
2153
2154   When processing stdout from syncevo-local-child in
2155   syncevo-dbus-helper, the LogRedirect class was invoked recursively and
2156   tried to print the same stdout data repeatedly until the
2157   syncevo-dbus-helper crashed due to the infinite recurssion.
2158
2159 * local sync: fixed helper process shutdown in case of parent failure
2160
2161   The helper process only detected that the parent failed when
2162   it tried to log something while the parent had already shut down
2163   the D-Bus connection. Even that did not work reliably and differed
2164   between D-Bus libdbus and GIO.
2165
2166   Added several test cases and fixes for "process died prematurely"
2167   error scenarios.
2168
2169 * Mobical (aka Everdroid): stopped testing memo syncing
2170
2171   Memos used to work, but now only trigger an unspecific 400 error
2172   on the server side.
2173
2174 * autotools: ensure that link lines are complete
2175
2176   As mentioned by Tino Keitel on the mailing list, some libs and
2177   executables were only implicitly linked against libraries that they
2178   called directly. This happened to work by chance because these libraries
2179   ended up in the running executable anyway, due to indirect loading.
2180   Now there is a "make installcheck" test for this kind of defect
2181   and the makefiles were updated to avoid it.
2182
2183   One exception is libsmltk, which depends on the caller providing
2184   SySync logging support.
2185
2186 * D-Bus server: fixed HTTP presence for recent libdbus
2187
2188   Testing with libdbus 1.6.0 on Debian Testing failed because the lib
2189   changed some behavior: instead of looking up the owner of a certain
2190   bus name immediately, it now does that when invoking a
2191   method. Therefore the check for "have connection" in SyncEvolution
2192   was too simplistic and missed the fact that both were not usable,
2193   causing the server to assume that HTTP was down while in reality it
2194   should have assumed it to be up. This prevented auto-syncing and
2195   manually clicking "Sync" in the GTK UI.
2196
2197 * syncevolution.org: declare dependencies on libical and EDS
2198
2199   Let the bundle .deb depend on libical if the lib was enabled during
2200   compilation (for example, for CalDAV). This ensures that it gets
2201   installed on systems which otherwise don't have it.
2202
2203   "syncevolution-evolution" is compatible (and depends on) EDS up to
2204   and including 3.4. The package now declares that dependency and
2205   conflicts with more recent EDS, because even if the older EDS libs
2206   are still installed they won't work when the rest of EDS was
2207   updated.
2208
2209 * CalDAV + syncevolution.org: fixed segfault without libical+libecal
2210
2211   When libical and libecal were not installed, trying to use the CalDAV
2212   backend for VEVENTs segfaulted because it depends on libical and did
2213   not check properly for it. Only affected syncevolution.org binaries.
2214
2215
2216 SyncEvolution 1.2.99.1 -> 1.2.99.2, 04.07.2012
2217 ==============================================
2218
2219 Next step towards SyncEvolution 1.3. It adds a workaround for
2220 Funambol's OneMedia and fixes an old bug which became more severe in
2221 1.2.99.1. Also has some usability improvements for
2222 CalDAV/CardDAV. Hopefully it will not take long to stabilize the code,
2223 so test it now while it is still hot :-)
2224
2225
2226 Details:
2227
2228 * Funambol: ignore UID
2229
2230   Funambol's OneMedia sends UID, but not RECURRENCE-ID. That becomes a
2231   problem when multiple events of the same event series are added to a
2232   backend which follows the iCalendar 2.0 standard (CalDAV, EDS, KDE),
2233   because these events all look like the master event, and there can be
2234   only one of those.
2235
2236   SyncEvolution now strips the UID from all events coming from any
2237   Funambol server (regardless of the version). If a future Funambol
2238   server release adds support for both UID and RECURRENCE-ID, then
2239   SyncEvolution will have to be updated to take advantage of the
2240   improved server. Because the RECURRENCE-ID is also getting
2241   stripped (despite not being set at the moment), SyncEvolution should
2242   continue to work as it does now even if the server changes.
2243
2244   It would have been nice to limit this workaround to affected Funambol
2245   server versions, but an inquiry on the Funambol mailing list didn't
2246   get a reply, therefore SyncEvolution is playing it safe and assumes
2247   that all future Funambol releases will have the same problem.
2248
2249 * WebDAV: fixed data corruption issue when uploading item with long UID
2250
2251   In some cases data with a very long UID wasn't handled correctly,
2252   causing the out-going data to be malformed and probably causing a
2253   rejection by the server. The root cause is incorrect string handling.
2254   In releases before 1.2.99.1, only the --import operation of contacts
2255   into CardDAV were affected. In 1.2.99.1, the same code also got used
2256   for calendar items and then could also affect syncing.
2257
2258 * engine: add DTSTAMP+LAST-MODIFIED before writing calendar items
2259
2260   When writing calendar items into a backend storage as iCalendar 2.0 or
2261   vCalendar 1.0, they should have DTSTAMP and LAST-MODIFIED values. DTSTAMP
2262   is expected by some CalDAV servers (like Apple). LAST-MODIFIED is usually
2263   added by the storage, but not always.
2264
2265   In the text/plain -> syncevolution -> text/calendar -> Radicale -> EDS
2266   -> syncevolution chain the LAST-MODIFIED was not added by Radicale, which caused
2267   problems for change tracking in an EDS-based SyncEvolution.
2268
2269   Also necessary when importing from a phone using vCalendar without
2270   DTSTAMP directly into CalDAV.
2271
2272 * Google Calendar: updated URL redirect handling
2273
2274   Google Calendar sometimes returns redirect requests to human-readable
2275   web sites (an "unavailable" page, a login form). This is of course
2276   bogus when the client is an automated CalDAV client.
2277
2278   The "unavailable.html" case was already handled. Made it a bit more
2279   flexible to also catch possible variations of it (additional
2280   parameters, https instead of http).
2281
2282   Added the https://accounts.google.com/ServiceLogin case. Not sure
2283   whether retrying will help in that case, but there's not much else
2284   that SyncEvolution can do.
2285
2286 * CalDAV + VJOURNAL: handle UID conflicts
2287
2288   When asked to insert a VJOURNAL which already existed (= same UID),
2289   CalDAV servers respond with a 412 "Precondition failed" error. This
2290   needs to be detected and translated into an "item needs to be merged"
2291   result so that the engine can load the existing item, merge the data,
2292   and then write back.
2293
2294 * WebDAV: --status for WebDAV source aborted
2295
2296   The command line --status operation did not complete when applied to a
2297   CalDAV/CardDAV source. Instead it aborted because the operation took a
2298   code path where the backend was not fully initialized.
2299
2300 * CalDAV/CardDAV sync: improved target side output
2301
2302   Added a "target side of local sync ready" INFO message to introduce
2303   the output which has the target context in the [INFO] tag. The sync report
2304   from the target side now has the target context embedded in brackets
2305   after the "Changes applied during synchronization" header, to avoid
2306   ambiguities.
2307
2308   Sometimes the backend has to resend requests because of temporary
2309   issues. If the problem turned out to be permanent, there was a long
2310   period of time, retryDuration=5 minutes to be precice, in which no
2311   visible progress happened.
2312
2313   Now SyncEvolution's WebDAV backend will print a message like this
2314   before going to sleep until it is time to retry:
2315
2316   [INFO @googlecalendar] operation temporarily (?) failed, going to retry in 5.0s before giving up in 18.4s: PROPFIND: Neon error code 1: 401 Unauthorized
2317
2318   The uncertainty comes from several factors. In this example, the 401
2319   might indicate a permanent problem (wrong credentials), or it could be
2320   Google reporting a temporary authorization problem which is (probably)
2321   meant to slow down the client while it asks the user to re-enter the
2322   password. SyncEvolution only asks for passwords once, so it tries
2323   again with the same password if it was successful with it in the
2324   past. Otherwise it gives up immediately.
2325
2326   Another dubious example are name server lookup errors. They can be
2327   permanent (wrong host name) or temporary (name server
2328   down). SyncEvolution errs on the side of retrying, to avoid
2329   interrupting an operation which still has a chance to continue.
2330
2331   Output from the target side of a local sync was passed through stderr
2332   redirection as chunks of text to the frontends. This had several
2333   drawbacks:
2334   - forwarding only happened when the local sync parent was processing
2335     the output redirection, which (due to limitations of the implementation)
2336     only happens when it needs to print something itself
2337   - debug messages were not forwarded
2338   - message boundaries might have been lost
2339
2340   In particular the new INFO messages are relevant while the sync runs
2341   and need to be shown immediately.
2342
2343 * command line: fixed password + property lookup during --print-databases
2344
2345   --print-databases for an existing configuration did not look up
2346   passwords stored in a keyring, causing the operation to fail for
2347   backends like CalDAV/CardDAV where credentials are required.
2348
2349   Overriding source properties in that case also only worked when using
2350   the unqualified property name ("databasePassword=foo") but not when
2351   using the source name as prefix ("calendar/databasePassword=foo").
2352
2353 * Developers:
2354
2355   Implementing the improved local sync output required extending the
2356   D-Bus API. The Server.LogOutput signal now has an additional
2357   "process name" parameter. Normally it is empty. For messages
2358   originating from the target side, it carries that extra target
2359   context string.
2360
2361   This D-Bus API change is backward compatible. Older clients can still
2362   subscribe to and decode the LogOutput messages, they'll simply ignore
2363   the extra parameter. Newer clients expecting that extra parameter
2364   won't work with an older D-Bus daemon: they'll fail to decode the
2365   D-Bus message.
2366
2367
2368 SyncEvolution 1.2.2 -> 1.2.99.1, 22.06.2012
2369 ===========================================
2370
2371 First pre-release of SyncEvolution 1.3. Contains bug fixes that were
2372 not backported to 1.2.x, so upgrading is recommended. For example,
2373 SyncEvolution 1.3 is required for Evolution 3.4, otherwise photos are
2374 not exported properly. Further workarounds for recent changes in
2375 Google CalDAV were added.
2376
2377 Major new features are KDE/Akonadi support in the syncevolution.org
2378 binaries and ActiveSync support (only in the source code). The D-Bus
2379 server and local sync were rewritten considerably, to make the code
2380 cleaner and more robust. The CalDAV backend now also supports tasks
2381 and memos.
2382
2383
2384 Details:
2385
2386 * phone sync: delete<->delete conflict + phone calendar+todo sync (BMC #23744)
2387
2388   When deleting an item on phone and locally, the next sync failed with
2389   ERROR messages about "object not found". This has several reasons:
2390   - libsynthesis super data store attempts to read items
2391     which may or may not exist (triggers ERROR message)
2392   - it checks for 404 but Evolution backends only return a generic
2393     database error (causes sync to fail)
2394
2395 * phone sync: get phone vendor and model from Device ID profile (BMC #736)
2396
2397   In the past we have relied on the user-modifiable device name to be
2398   the fingerprint for matching a phone to a template which is unreliable.
2399
2400   This release changes this in the cases where the phone supports the
2401   Device ID profile (DIP). If support for DIP is detected, then we
2402   extract the vendor and product ids and attempt to associate them
2403   with a product and vendor name by using a newly added lookup table.
2404
2405   This lookup table has to be maintained manually and depends on
2406   contributions by users to cover more devices. See
2407   http://blixtra.org/blog/2011/09/22/syncevolution-needs-you-or-at-least-your-bluetooth-phones/
2408
2409 * vCalendar 1.0: fixed recurring all-day event support
2410
2411   vCalendar 1.0 cannot represent all-day events. The workarounds for
2412   mapping iCalendar 2.0 all-day events into vCalendar 1.0 was
2413   incomplete, leading to effects like shifting EXDATEs and end
2414   times.
2415
2416 * GTK-UI: accept service config with a username again (BMC#23106)
2417
2418   Suppressing configs with empty username had undesired side effects:
2419   modifying configs for direct syncing with a device incorrectly
2420   triggered the same error message, without any means of entering
2421   a username. The faulty check was removed without replacement.
2422
2423 * GTK-UI: added GTK 3 version of UI
2424
2425   When GTK 3 is found during compilation, a GTK 3 version of the
2426   UI is built. The source code of both is different to avoid
2427   excessive use of ifdefs. At the moment, both versions offer
2428   the same features. In the long run, the GTK 3 version will
2429   replace the GTK 2 version.
2430
2431 * command line: added refresh/one-way-from-local/remote (BMC #23537)
2432
2433   The -from-client/server sync modes are confusing because the direction
2434   of the data exchange depends on which side acts as SyncML server or
2435   client.
2436
2437   This release introduces new modes which use -from-local/remote
2438   instead. The statistics and messages also use these variants
2439   now. The old modes are still understood, but are declared as "not
2440   recommended" in the documentation.
2441
2442 * command line: config and source names are optional (BMC #23783)
2443
2444   The need to add "foo" and "bar" pseudo config and source names to the
2445   command line even when all parameters for the operation where
2446   explicitly specified on the command line was confusing.
2447
2448   Now it is possible to invoke item operations without the config and
2449   source name. Names which refer to non-existent configs are still
2450   accepted, as in previous releases. Typos are handled better by
2451   producing a detailed error report which includes (as applicable):
2452   - config doesn't exist
2453   - source doesn't exist or not selected
2454   - backend property not set
2455
2456   Because luids used to be positional arguments after <config> and
2457   <source>, a new --luids keyword is necessary to indicate that the
2458   ensuing parameters are luids and not <config> and <source>.
2459
2460 * command line: introduced --print-databases, supported for CalDAV/CardDAV
2461
2462   Listing databases is now a dedicated operation, instead of being done
2463   whenever syncevolution was invoked without parameters.
2464
2465   Advantages:
2466   - can be combined with property assignments for backends
2467     which do not work without that additional information, for example
2468     CalDAV/CardDAV:
2469     syncevolution --print-databases \
2470                   backend=[caldav|carddav] \
2471                   syncURL=... \
2472                   username=... \
2473                   password=...
2474   - can be done for configured sources
2475
2476 * command line: use both stdout and stderr
2477
2478   Traditionally, the "syncevolution" command line tool mixed its
2479   INFO/ERROR/DEBUG messages into the normal stdout. This has the major
2480   drawback that error messages get lost during operations like
2481      syncevolution --export - @default addressbook | grep "John Doe"
2482
2483   Now anything which not the expected result of the operation is
2484   always sent to stderr. Obviously this includes ERROR messages. INFO
2485   and DEBUG are harder to decide. Because they usually convey meta
2486   information about the running operation, they are also sent to
2487   stderr. The output of running a sync goes to both stdout (summary)
2488   and stderr (progress).
2489
2490 * command line: allow setting empty properties
2491
2492   Due to the way how properties were handled internally, it wasn't
2493   possible to explicitly set a property to its default value. Instead
2494   the property was unset. For example, explicitly setting database= was
2495   not possible.
2496
2497   This is necessary for client-test and ActiveSync, because client-test
2498   needs to know that the testing is expected to run with the default
2499   databases (something which normally is avoided by overwriting empty
2500   database properties).
2501
2502   Now the "is set" state is tracked explicitly in the config storage and
2503   command line property APIs. Unsetting a property via the command line
2504   could be implemented with an explicit command line option, but is not
2505   supported at the moment.
2506
2507 * command line + local sync: fixed erroneous "Comparison impossible" output.
2508
2509   "Comparison impossible" was incorrectly printed after a successful
2510   comparison on the target side of local sync.
2511
2512 * synccompare: shorter data dump of PHOTO
2513
2514   A full comparison of the base64 PHOTO data can be very long.
2515   Now some key characteristics of the PHOTO data (number of
2516   characters in base64 encoding, number of bytes in decoded
2517   data, md5sum of decoded data) are printed instead.
2518
2519   That way, unintended changes of the data (different encoding,
2520   different content) should still be found while testing and
2521   added/removed photos are nicely visible in synccompare diffs.
2522
2523 * synccompare: fixed output for byte-identical duplicates
2524
2525   If database dumps contained byte-identical duplicates, they
2526   were treated as a single item on the left side of a comparison.
2527   This caused erroneous "added" entries on the right side.
2528
2529 * secure password storage: usage of GNOME Keyring vs. KDE KWallet configurable
2530
2531   Automatically detecting KDE users is not possible at the
2532   moment. Instead KDE users have to manually set the new "keyring"
2533   global config property to "KDE" (case insensitive) if the
2534   SyncEvolution installation supports both, because GNOME Keyring is the
2535   default to avoid surprises for traditional users. If only KWallet
2536   support is enabled, then this is not necessary.
2537
2538   "GNOME" and "true/false/1/0/yes/no" can also be set. This has the
2539   advantage that keyring usage can be enabled permanently for the
2540   command line in --daemon=no mode; normally keyrings are not used in
2541   that mode because accessing them can bring up UI dialogs.
2542
2543   It also becomes possible to disable keyring usage in syncevo-dbus-server,
2544   something which couldn't be done before.
2545
2546   The --keyring command line option is still supported, as an alias for
2547   "[--sync-property] keyring=<value>". The default value for --keyring
2548   is true, to match the traditional behavior. In contrast to other sync
2549   properties, setting "keyring" does not require an explicit --run
2550   parameter. Again this is done to mirror traditional usage.
2551
2552 * Evolution: always create databases (PTCOM-113)
2553
2554   Always try to create address book or calendar database, because even
2555   if there is a source there's no guarantee that the actual database
2556   was created already; the original logic for only setting this when
2557   explicitly requesting a new database therefore failed in some cases.
2558
2559   This problem affected users who had never created anything locally
2560   and wanted to use SyncEvolution to migrate their data. Now that
2561   works without having to create dummy entries first.
2562
2563 * Evolution contacts: changed default sync format to vCard 3.0
2564
2565   vCard 3.0 is the better default because it has saner encoding
2566   rules and defines more properties, thus avoiding the need for
2567   non-standard extensions. However, Mobical has problems with
2568   the new default. See upgrade instructions below.
2569
2570 * D-Bus server: made notification verbosity configurable with "notifyLevel"
2571
2572   The new "notifyLevel" per-peer configuration option allows users to
2573   control how many desktop notifications the D-Bus server produces while
2574   executing an automatic sync:
2575
2576   0 - suppress all notifications
2577   1 - show only errors
2578   2 - show information about changes and errors (in practice currently the same as level 3)
2579   3 - show all notifications, including starting a sync (default)
2580
2581 * CalDAV: updated Google workarounds
2582
2583   Google started sending empty items (VCALENDAR with no VEVENT inside)
2584   which cannot be removed. SyncEvolution 1.3 ignores such items.
2585
2586   The workaround for a 404 from Google Calendar for a GET (sending a
2587   REPORT request matching the item's UID) was broken: first, processing
2588   the result ended up calling the unset responseEnd boost function
2589   pointer, which caused the request to fail. Second, getting multiple
2590   items wasn't handled (data from all items concatenated together was
2591   used).
2592
2593   That can happen in the somewhat unlike case that some items have a UID
2594   which is a complete superset of the requested UID - not realistic in
2595   real life, but happens during testing.
2596
2597 * WebDAV: bridge with SyncML
2598
2599   Now a peer accessed via SyncML can read/write data stored in a
2600   CalDAV/CardDAV server directly. This can be used to connect a device
2601   which only supports SyncML to a CalDAV/CardDAV server, or sync data
2602   between a SyncML server and a CalDAV/CardDAV server. See "CalDAV and
2603   CardDAV" in the README for details.
2604
2605 * WebDAV: improved --configure
2606
2607   Added INFO output about checking sources. This helps with WebDAV when
2608   the server cannot be contacted (dead, misconfigured) because otherwise
2609   there would be no indication at all why the --configure operation
2610   seems to hang.
2611
2612   Here is some example output, including aborting:
2613   $ syncevolution --configure --template webdav \
2614                   syncURL=http://192.168.1.100:9000/ \
2615                   username=foo password=bar retryDuration=2s \
2616                   target-config@webdav-temp
2617   [INFO] creating configuration target-config@webdav-temp
2618   [INFO] addressbook: looking for databases...
2619   [INFO] addressbook: no database to synchronize
2620   [INFO] calendar: looking for databases...
2621   [INFO] calendar: no database to synchronize
2622   [INFO] memo: looking for databases...
2623   [INFO] memo: no database to synchronize
2624   [INFO] todo: looking for databases...
2625   [INFO] todo: no database to synchronize
2626
2627   It timed out fairly quickly here because of the retryDuration=2s. That
2628   also gets placed in the resulting config, which is probably not desired.
2629
2630   Aborting the operation is now supported:
2631
2632   $ syncevolution --configure \
2633                   --template webdav \
2634                   syncURL=http://192.168.1.100:9000/ \
2635                   username=foo password=bar \
2636                   target-config@webdav-temp
2637   [INFO] creating configuration target-config@webdav-temp
2638   [INFO] addressbook: looking for databases...
2639   ^C[INFO] Asking to suspend...
2640   [INFO] Press CTRL-C again quickly (within 2s) to stop immediately (can cause problems in the future!)
2641   ^C[INFO] Aborting immediately ...
2642   [ERROR] error code from SyncEvolution aborted on behalf of user (local, status 20017): aborting as requested by user
2643
2644   It would be good to make the CTRL-C handling code aware that it can
2645   abort immediately instead of doing the intermediate "asking to suspend"
2646   step, which only makes sense for sync sessions.
2647
2648 * WebDAV: support tasks and memos (BMC #24893)
2649
2650   The new backend property values "CalDAVTodo" and "CalDAVJournal"
2651   select tasks resp. memos stored in a CalDAV collection. "CalDAV"
2652   continues to select events.
2653
2654   Events, tasks and journals can be mixed in the same resource (=
2655   URL). However, this is less efficient than storing them separately.
2656
2657   A good CalDAV server allows filtering items by type, and SyncEvolution
2658   uses that. However, it was found that Radicale 0.7 ignores this
2659   filtering, which could have led to data loss (SyncEvolution asks for
2660   all VTODOs in preparation for a "delete all items" operation in a
2661   "CalDAVTodo" source, gets also VJOURNALs, then deletes them).
2662
2663   Therefore SyncEvolution plays it safe and downloads the VTODO and
2664   VJOURNAL data to double-check that it is working on the right items.
2665   This causes additional traffic for well-behaving servers; currently
2666   it cannot be turned off.
2667
2668   Tasks are exchanged as vCalendar 1.0 or iCalendar 2.0 VJOURNAL.
2669   Memos are exchanged as VTODO or plain text. The logic for storing
2670   incoming plain text is slightly different compared to the way how
2671   the EDS memo backend did it: instead of copying the first line
2672   from the text into the summary, it is now moved. In other words,
2673   the first line gets stripped. The change is primarily technically
2674   motivated; both approaches have pros and cons.
2675
2676 * WebDAV: improved Radicale support
2677
2678   Radicale > 0.7 will return status 200 for delete requests;
2679   is now treated like 204 by SyncEvolution. 412 'Preconditiona Failed'
2680   when asking to delete an already removed item is treated like
2681   the more common 404 'not found'. Same with 410 'gone' instead
2682   of 404 when trying to read a non-existent item.
2683
2684 * file backend: more flexible sync support for memos
2685
2686   The databaseFormat=text/calendar for memos did not support
2687   synchronizing as plain text. When using the new
2688   databaseFormat=text/calendar+plain, vCalendar/iCalendar/plain text
2689   are all valid sync formats; the storage is iCalendar 2.0
2690   VJOURNAL in all cases.
2691
2692 * WebDAV: avoid potential crash during database detection
2693
2694   When a server responds to a PROPFIND for a path with results for some
2695   other path, then SyncEvolution crashed during the search for the
2696   default calendar or address book because of a bug in the code which
2697   was meant to handle that kind of response. Apparently Yahoo Calendar
2698   did that. Now seen again in combination with Radicale 0.6.4.
2699
2700   In general, the code was made more robust to cope with bugs in
2701   Radicale 0.6.4. Later Radicale versions fixed these issues and also
2702   worked with SyncEvolution 1.2.2 without client-side workarounds.
2703
2704 * WebDAV: better path normalization
2705
2706   "syncURL" and "database" properties had to end in a trailing slash,
2707   otherwise items were not found (404 errors). Now the necessary slash
2708   is added automatically.
2709
2710 * Funambol: avoid slow syncs in refresh from server
2711
2712   libsynthesis has traditionally implemented "refresh-from-server" as
2713   "delete local data" plus "slow" sync. This is more compatible, because
2714   some servers (like Google) do not support "refresh-from-server".
2715
2716   But it has the downside that the server cannot know that the client
2717   won't send any data, and Funambol's OneMedia now only allows one slow
2718   sync before blocking the next one for a certain period of time. This is
2719   done to prevent excessive resource usage by badly behaving clients.
2720
2721   To accomodate both kinds of servers, the new "enableRefreshSync"
2722   sync property can be set set to explicitly allow the usage of
2723   the "refresh-from-server" sync mode. It's off by default. The Funambol
2724   template has it turned on, existing configs must be updated manually
2725   (see upgrading comments below).
2726
2727 * Curl transport: support SSLServerCertificates=<path>
2728
2729   When the setting refers to a directory, then CURLOPT_CAINFO doesn't
2730   work (must be a file). Check this and use CURLOPT_CAPATH instead.
2731
2732   Caveat: there are some comments in the API documentation about "NSS
2733   enabled libcurl" which supports a directory in
2734   CURLOPT_CAINFO. Hopefully providing an explicit path in CURLOPT_CAPATH
2735   also works in that configuration.
2736
2737 * code cleanup + rewrite: syncing done in separate process
2738
2739   syncevo-dbus-server now runs syncing in a separate process. Local
2740   sync also uses a second helper process. This makes the D-Bus server
2741   more responsive via D-Bus (no more blocking operations) and
2742   minimizes the effect of bugs in code involved with syncing
2743   (backends, system libraries, etc.).
2744
2745   In the long term this restructuring will also allow more advanced
2746   features, like monitoring local or remote storage for changes.
2747
2748 * SyncEvolution <-> SyncEvolution sync: multiple cycles per session
2749
2750   SyncML only allows one send/receive cycle per session. There are cases
2751   (for example, client side merges data that a dumber server failed to
2752   match correctly) where client and server are still out of sync at
2753   the end of a cycle. When SyncEvolution syncs with another SyncEvolution
2754   instance (locally or remotely), both sides detect that the peer
2755   can continue syncing in the same session and start over automatically
2756   when needed. Previously the user had to start another sync session manually.
2757
2758   To the user this is shown as "number of cycles" in a sync session
2759   in the sync report. "Restart" is the process of entering a new cycle.
2760
2761   The cycles are also visible in the command line output as multiple
2762   INFO lines:
2763
2764     [INFO] eds_contact: starting first time sync from client (peer is server)
2765     [INFO] creating complete data backup of source eds_contact before sync (enabled with dumpData and needed for prin
2766     Local data changes to be applied during synchronization:
2767     *** eds_contact ***
2768     no changes
2769
2770     [INFO] eds_contact: sent 1/1
2771     [INFO] eds_contact: started
2772     [INFO] eds_contact: first time sync done successfully
2773     [INFO] eds_contact: starting normal sync from client (peer is server)         <===
2774     [INFO] eds_contact: started                                                   <===
2775     [INFO] eds_contact: normal sync done successfully                             <===
2776     [INFO] creating complete data backup after sync (enabled with dumpData and needed for printChanges)
2777
2778     Synchronization successful.
2779
2780     Changes applied during synchronization:
2781     +---------------|-----------------------|-----------------------|-CON-+
2782     |               |         LOCAL         |        REMOTE         | FLI |
2783     |        Source | NEW | MOD | DEL | ERR | NEW | MOD | DEL | ERR | CTS |
2784     +---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
2785     |   eds_contact |  0  |  0  |  0  |  0  |  1  |  0  |  0  |  0  |  0  |
2786     |   refresh-from-local, 2 cycles, 0 KB sent by client, 0 KB received  |
2787                             ^^^^^^^^
2788     |   item(s) in database backup: 1 before sync, 1 after it             |
2789     +---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
2790     |          start Tue Feb  7 17:07:49 2012, duration 0:03min           |
2791     |               synchronization completed successfully                |
2792     +---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
2793
2794 * SyncEvolution <-> SyncEvolution sync: negotiate UID support via SyncCap (BMC #22783)
2795
2796   The semantic of UID/RECURRENCE-ID in calendar data is now tracked
2797   per data store involved in a sync. If full iCalendar 2.0 semantic
2798   (= IDs are globally unique) is guaranteed, then pairs are found
2799   based on these IDs. Otherwise pairs must be found by looking at
2800   item attributes.
2801
2802   Previously a hack was used to detect this kind of support (any kind
2803   of SyncEvolution instance was assumed to support it, although some
2804   backends do not).
2805
2806 * syncevolution.org packages: fixed D-Bus server autostart in .deb and .rpm packages
2807
2808   syncevo-dbus-server wasn't started automatically as part of a user
2809   session because /etc/xdg/autostart/syncevo-dbus-server.desktop wasn't
2810   included in the packages. This broke auto syncing after a session
2811   restart (required manually starting SyncEvolution).
2812
2813 * syncevolution.org packages: support KDE
2814
2815   The traditional "syncevolution-evolution" package was
2816   replaced with "syncevolution-bundle". A meta "syncevolution-evolution"
2817   package depends on it, to support seamless updates for users who have
2818   "syncevolution-evolution" installed.
2819
2820   Binary dependencies of the main .deb are ignored for backends
2821   because loading them is optional. The new "syncevolution-kde"
2822   package has the right dependencies for KDE/Akonadi, while
2823   "syncevolution-evolution" mostly just lists standard libs
2824   if the "EDS compatibility" mode is used, where libebook/libecal
2825   are loaded dynamically.
2826
2827   Platform specific code (GNOME keyring, KDE wallet) was moved into
2828   loadable, optional modules, to allow installation of the SyncEvolution
2829   bundle without forcing the installation of unused system components.
2830
2831 * D-Bus: use GIO D-Bus instead of libdbus if available
2832
2833   When compiling from source, the more modern GIO D-Bus is used instead
2834   of libdbus if available and recent enough (>= 2.30). syncevolution.org
2835   binaries still use libdbus, to stay compatible with older Linux
2836   distros.
2837
2838 * several minor bug fixes
2839
2840   syncevo-dbus-server now runs under valgrind in the nightly testing,
2841   plus several more test scenarios were added. This helped to find
2842   and fix various minor memory handling issues.
2843
2844 * developers: backend API changes
2845
2846   beginSync/endSync() (aka m_startDataRead/m_endDataWrite) may now be
2847   called multiple times per SyncSource instance life cycle. SyncSources
2848   derived from TrackingSyncSource should work without changes. Use the
2849   Client::Source::*::testChangesMultiCycles test to check whether your
2850   backend supports this correctly.
2851
2852   Reading and deleting must throw a 404 status exception when an item
2853   is not found. The Client::Source::*::*404 tests cover this.
2854
2855   The special semantic of the former RegisterSyncSource::InactiveSource
2856   (invalid pointer of value 1) caused bugs, like using it in
2857   --print-databases (=> segfault) or not being able to store the result
2858   of a createSource() directly in a smart pointer (=> potential leak in
2859   SyncSource::createSource()).
2860
2861   Obviously a bad idea to start with. Replaced with a
2862   RegisterSyncSource::InactiveSource() method which creates a real,
2863   inactive SyncSource instance which can and must be deleted by the
2864   caller.
2865
2866   This is a SyncSource API change for backend developers.  Instead of
2867   RegisterSyncSource::InactiveSource, return
2868   RegisterSyncSource::InactiveSource(). Comparisons against
2869   RegisterSyncSource::InactiveSource needs to be replaced with a call
2870   to the new SyncSource::isInactive().
2871
2872   Long-running backend calls are encouraged to check for events on the
2873   main glib context (either in a loop or with
2874   g_main_context_iteration(NULL)) and abort when
2875   SuspendFlags::getSuspendFlags().getState() returns
2876   SuspendFlags::ABORT.
2877
2878 * packagers:
2879
2880   libgdbussyncevo is now installed as a normal library in /usr/lib,
2881   even though SyncEvolution is the only user.
2882
2883   pcrecpp is now a new hard dependency.
2884
2885
2886 Upgrading from release 1.2.x:
2887
2888 The sync format of existing configurations for Mobical (aka Everdroid)
2889 must be updated manually, because the server has encoding problems when
2890 using vCard 3.0 (now the default for Evolution contacts):
2891    syncevolution --configure \
2892                  syncFormat=text/x-vcard \
2893                  mobical addressbook
2894
2895 The Funambol template explicitly enables usage of the
2896 "refresh-from-server" sync mode to avoid getting throttled with 417
2897 'retry later' errors. The same must be added to existing configs
2898 manually:
2899    syncevolution --configure \
2900                  enableRefreshSync=TRUE \
2901                  funambol
2902
2903 Upgrading from releases before 1.2:
2904
2905 Old configurations can still be read. But writing, as it happens
2906 during a sync, must migrate the configuration first. Releases >= 1.2
2907 automatically migrates configurations. The old configurations
2908 will still be available (see "syncevolution --print-configs") but must
2909 be renamed manually to use them again under their original names with
2910 older SyncEvolution releases.
2911
2912
2913 SyncEvolution 1.2.1 -> 1.2.2, 13.01.2012
2914 ========================================
2915
2916 Maintenance release with various bug fixes.
2917
2918 * syncevo-dbus-server + ConnMan: fixed "online" detection (BMC #21541, BMC #24587)
2919
2920   SyncEvolution did not recognize any cellular connectivity as
2921   suitable for syncing. The strict check for certain "connected
2922   technology" is unnecessary, anything which makes the computer
2923   "online" should be good enough. So now it just uses the ConnMan
2924   "State" property.
2925
2926   Additional benefit: will continue to work with ConnMan 1.0, which
2927   won't have the "ConnectedTechnologies" property anymore.
2928
2929   The Bluetooth available check was also (incorrectly) using the
2930   ConnMan API.  Now asssume that OBEX/Bluetooth is always available.
2931
2932 * automatic backups: added INFO messages and fixed dumpData/printChanges (BMC #24619)
2933
2934   Point out that backups are created (user might be unaware otherwise
2935   and wonder about the delay), explain why (so that users know how to
2936   turn it off).
2937
2938   Turning these backups off with dumpData=0 printChanges=0 had to be
2939   fixed, backups were always written previously.
2940
2941 * EDS compatibility: bumped version check for EDS 3.2
2942
2943   SyncEvolution is known to work with EDS 3.2. Therefore use the
2944   libebook/ecal/edataserver libs from 3.2 if available, without
2945   warnings in the --version output. Also happens with inconsistent
2946   distro setups where the old libs are available and would have been
2947   prefered by SyncEvolution 1.2.1 even though the old libs no longer
2948   work with EDS 3.2.
2949
2950 * GTK-UI: do not accept service config without a username (BMC#23106)
2951
2952   Instead of creating such a config, an error dialog is shown.
2953
2954 * GTK-UI: updated translations
2955
2956 * fixed various compile issues, primarily on Fedora Core 17
2957   (unistd.h/ssize_t, invoking syncevolution during compilation,
2958   missing src/dbus/qt/configure-sub.in)
2959
2960
2961 SyncEvolution 1.2 -> 1.2.1, 25.11.2011
2962 ======================================
2963
2964 Maintenance release with various bug fixes.
2965
2966 * GTK UI + config: fix "custom server" setup (BMC #13511)
2967
2968   When the "default" config template (= ScheduleWorld) was downgraded to
2969   "not consumer ready" in SyncEvolution 1.1.0.99.1, setting up a custom
2970   SyncML service in the GTK UI stopped working because the UI wouldn't
2971   show the "not consumer ready" config.
2972
2973   The problem described above is deterministic and fixed now.
2974   Initially the problem seemed to be random. So perhaps there is
2975   also another, related issue.
2976
2977 * phone sync: delete<->delete conflict + phone calendar+todo sync (BMC #23744)
2978
2979   When deleting an item on phone and locally, the next sync failed with
2980   ERROR messages about "object not found". Retrying the sync then worked.
2981
2982 * Nokia: prevent accidental usage of "calendar" or "todo" sources
2983
2984   Nokia phones use a combined "calendar+todo" source for syncing. The
2985   "calendar" and "todo" sources also exist because that is where local
2986   databases are configured.
2987
2988   In such a setup, syncing always has to use "calendar+todo". For example,
2989   to refresh from the Linux desktop to the phone, use:
2990        --sync refresh-from-server <config> calendar+todo
2991
2992   To work with items (restore, show local content), use the underlying sources,
2993   as in:
2994        --print-items <config> calendar
2995
2996   It was possible to accidentally sync with the "calendar". This commit
2997   prevents that by adding an invalid URI setting to the "calendar" and
2998   "todo" sources in the Nokia and Ovi templates. Existing configs are not
2999   touched, so beware when you already have configured your Nokia phone.
3000
3001 * vCard: X- chat extensions were limited to one instance per kind
3002
3003   For example, only one Jabber account could be synchronized. This
3004   was caused by an incomplete definition of the conversion to and from
3005   vCard.
3006
3007 * syncevo-dbus-server + phone sync: catch SIGPIPE to avoid premature exit
3008
3009   Frederik Elwert reported that running a local sync with a phone via
3010   Bluetooth caused the syncevo-dbus-server to shut down during a sync.
3011   Explicitly telling the process to ignore the SIGPIPE signal solved that
3012   problem.
3013
3014 * syncevo-http-server: support chained SSL certificates
3015
3016   So far, the file pointed to by --certificate-file had to
3017   contain the server certificated (signed by a CA known to the client)
3018   and (optionally) a client certificate. Now the file may also contain
3019   additional intermediate certificates which will be sent to the client
3020   (chained certificates).
3021
3022 * documentation: added glossary and command line conventions sections,
3023   improved listing of properties, embedd property definitions in man page,
3024   README and README.html
3025
3026 * EDS compatibility: fixed inconsistency in libecal check
3027
3028   The check for the _r variants in libical still used an older max
3029   version. This might have prevented using them (if not found) or
3030   could have led to a mixture of old and new libecal in the same
3031   process (probably crashed).
3032
3033 * glib: avoid including glib/*.h headers directly
3034
3035   Recent glib deprecates the direct inclusion of some of its headers,
3036   in favor of including glib.h. Doing that here whenever possible, so
3037   perhaps it now compiles on Fedora 17 (untested).
3038
3039
3040 SyncEvolution 1.1.1 -> 1.2, 13.10.2011
3041 ======================================
3042
3043 The major new feature of the 1.2 release is support for non-SyncML
3044 protocols in general and CalDAV/CardDAV in particular. ActiveSync
3045 support is in development and will be in 1.3. These protocols are
3046 implemented as backends which are combined with other backends by
3047 SyncEvolution in a so called "local sync". The GTK sync-ui does not
3048 yet support configuring non-SyncML protocols. See the README.rst and
3049 man page for more information on how to use the new feature via the
3050 command line.
3051
3052 Properties not supported by SyncML servers can now be preserved
3053 locally in two-way synchronization (BMC #15030). This depends on
3054 information about what properties a SyncML server supports ("CtCap"),
3055 which is typically not provided by servers. SyncEvolution contains a
3056 copy of that information for Google Contacts (BMC #15029).
3057
3058 Akonadi backend and KWallet support were merged. They are not included
3059 yet in syncevolution.org binaries. To use them compile from source.
3060
3061 The configuration format was updated to solve a conceptual problem
3062 inherited with the legacy property names: the "type" property had
3063 multiple, sometimes conflicting roles. For example, setting the
3064 preferred data format for sync with one peer might have changed the
3065 backend selection for some other peer (BMC #1023). Now
3066 "backend/databaseFormat/syncFormat/forceSyncFormat" replace
3067 "type". "type" is still accepted by the command line as alias.
3068
3069 Upgrading from releases before 1.2:
3070
3071 Old configurations can still be read. But writing, as it happens
3072 during a sync, must migrate the configuration first. Release 1.2
3073 automatically migrates configurations. The old configurations
3074 will still be available (see "syncevolution --print-configs") but must
3075 be renamed manually to use them again under their original names with
3076 older SyncEvolution releases.
3077
3078
3079 Other changes:
3080
3081 * Using the --sync-property and --source-property command line options is
3082   optional, just specifying the property assignment is enough.
3083
3084 * syncevo-http-server was enhanced considerably. See http://syncevolution.org/wiki/http-server-howto
3085
3086 * support NetworkManager API >= 0.9 (BMC #19470)
3087
3088 * syncevolution.org binaries: now compatible with Debian Testing/libnotify.so.4 (BMC #22668)
3089
3090   libnotify is not linked directly into syncevo-dbus-server in the
3091   syncevolution.org binaries. Instead libnotify.so.1 till .so.4
3092   (current Debian Testing) are opened opened dynamically and the
3093   necessary functions are looked up via dlsym(). Not finding the
3094   libraries or the functions silently disables this notification
3095   mechanism.
3096
3097 * Sync mode is recorded when running in SyncML server mode (BMC #2786).
3098
3099 * syncevo-dbus-server automatically stops when some of its libraries
3100   are updated and restarts if auto-syncing is on (BMC #14955).
3101
3102 * Added code for Buteo, mKCal and QtContacts in MeeGo.
3103
3104   Buteo and mKCal were removed again from MeeGo, so the code
3105   is obsolete. The QtContacts backend may be still be useful
3106   to access items via that API, but for syncing on MeeGo
3107   the normal EDS backend is used since MeeGo reverted back
3108   to EDS as PIM storage.
3109
3110 * "databasePassword" source property: lookup failure in keyring (BMC #22937)
3111
3112   The databasePassword also wasn't looked up at all when doing item operations
3113   via the command line.
3114
3115   When configuring sources for an HTTP server, the config name typically
3116   is just the context (@foo). When using the config in the HTTP server,
3117   the config name is the peer inside that context (client@foo). Because
3118   the GNOME keyring lookup keys for the "databasePassword" (more
3119   specifically, the object name) contained the full config name which
3120   was different in both cases, looking up the saved password failed.
3121
3122   The solution is to normalize the config name (to accomodate for
3123   different ways of spelling it) and use only the context, with @ as
3124   before. This will break existing setups where the object name in the
3125   keyring (incorrectly) includes the full config name. In that case just
3126   configure the source again to set the password anew.
3127
3128 * Evolution Calendar: fixed detached recurrence support (BMC #22940)
3129
3130   When manipulating a meeting series with more than one detached
3131   recurrence certain sequences of operations could incorrectly fail
3132   with "UID already exists".
3133
3134 * iCalendar 2.0: must set VALUE in EXDATE (part of BMC #22940)
3135
3136   EXDATE has a VALUE parameter, which wasn't defined in the XML
3137   profile. Didn't seem to matter at all in practice, but wasn't
3138   standard-compliant.
3139
3140 * GTK sync-ui: wrap sync service descriptions (BMC #7199)
3141
3142   Descriptions of different sync services are not fully visible unless
3143   word-wrapping gets enabled.
3144
3145 * CalDAV/CardDAV + local storage: avoid empty properties
3146
3147   The main motivation for this change is that a recent Apple Calendar
3148   server rejects vCards with empty BDAY property. Another reason is that
3149   keeping the data as small as possible is desirable by itself.
3150
3151   Sending an empty property serves as a hint for the peer that the
3152   property is supported. This is not necessary when storing an item in a
3153   backend. Therefore this commit disables empty properties for all
3154   backends which do not themselves set the m_backendRule Synthesis info
3155   value.
3156
3157 * Google Contacts: ensure that first/middle/name are set when storing in EDS (BMC #20864)
3158
3159   Evolution and the MeeGo UX assume that first/middle/last name are set.
3160   That is not the case when a contact is created in the Google Contacts
3161   web interface. Such contacts are sent by Google without the N
3162   property.
3163
3164   SyncEvolution now tries to recreate the name components from the FN
3165   string, by splitting at word boundaries and assuming "<first>
3166   <middle> <last>" or "<last>, <first>" format. Obviously this
3167   heuristic fails for some locales.
3168
3169 * Evolution Calendar: fixed error handling for broken TZIDs
3170
3171 * Sony Ericsson: use ISO-8859-1 for all devices (BMC #14414)
3172
3173   Passing invalid UTF-8 strings into libecal caused glib to
3174   abort syncevo-dbus-server.
3175
3176 * auto sync: show all failed syncs except for temporary network errors (BMC #21888)
3177
3178   Notifications were meant to be shown for all errors except temporary
3179   ones. This has never been implemented correctly since the feature was
3180   introduced: instead of hiding known temporary errors, all errors except
3181   500 (fatal error) were suppressed.
3182
3183 * vCard: inline local photo data (BMC #19661)
3184
3185   Some platforms (Maemo, MeeGo) store photos in separate files. Now SyncEvolution
3186   efficiently includes that photo data in the generated vCard right before sending
3187   it to a peer; previously it sent a useless local file:// URI. The Maemo port
3188   has a less efficient workaround for that which now should be obsolete.
3189
3190 * syncevo-dbus-server: online status wrong without Network Manager or ConnMan (BMC #21543)
3191
3192   When neither Network Manager nor ConnMan are running, network presence was "not
3193   online". This prevented running automatic syncs.
3194
3195
3196 For developers:
3197
3198 * modified backend API
3199   - ClientTestConfig modernized
3200   - InsertItemResult::m_merged turned from boolean to enum
3201
3202 * testing and compilation changes; for example, the minimum version of
3203   libsynthesis is now checked at configure time instead of failing at
3204   runtime due to missing features in the Synthesis engine
3205
3206
3207 SyncEvolution 1.1.99.7 -> 1.2, 13.10.2011
3208 =========================================
3209
3210 Some more bug fixes and testing improvements.
3211
3212 * fixed potential invalid memory access in add<->add conflict handling
3213 * fixed memory leak in workaround for EDS bug
3214 * CalDAV/CardDAV: handle ETags without quotation marks (eGroupware)
3215 * updated README: warning about sync direction moved to --sync option
3216
3217
3218 SyncEvolution 1.1.99.6 -> 1.1.99.7, 15.09.2011
3219 ==============================================
3220
3221 Mostly bug fixes again. Some are a bit more intrusive, thus another
3222 pre-release.
3223
3224 * syncevolution.org binaries: now compatible with Debian Testing/libnotify.so.4 (BMC #22668)
3225
3226   libnotify is not linked directly into syncevo-dbus-server in the
3227   syncevolution.org binaries. Instead libnotify.so.1 till .so.4
3228   (current Debian Testing) are opened opened dynamically and the
3229   necessary functions are looked up via dlsym(). Not finding the
3230   libraries or the functions silently disables this notification
3231   mechanism.
3232
3233 * calendar sync: better handling for add<->add conflicts (partly fixes BMC #22783)
3234
3235   When both sides of a sync have added the same event, the sync must
3236   determine which one is more recent instead of blindly overwriting
3237   always the same side.  Such conflicts are typically rare except for
3238   enterprise scenarios where meeting invitiations are processed
3239   automatically by a groupware (Exchange, Google Calendar/Mail, ...)
3240   and then the attendee status is updated on one side.
3241
3242   SyncEvolution now does the necessary age comparison and preserves the more
3243   recent data for most properties. In some properties the data from both
3244   sides is preserved by concatenating the text (description, location, ...).
3245   It remains to be seen whether that is really desirable. Also, sync statistics
3246   are slightly off: the incoming item is counted as "added" even though it
3247   gets turned into an update.
3248
3249 * item operations: authentication problem for WebDAV when using keyring (BMC #21311)
3250
3251   The password still wasn't looked up in the keyring when using
3252   --import/export/delete-items.
3253
3254 * "databasePassword" source property: lookup failure in keyring (BMC #22937)
3255
3256   The databasePassword also wasn't looked up at all when doing item operations
3257   via the command line.
3258
3259   When configuring sources for an HTTP server, the config name typically
3260   is just the context (@foo). When using the config in the HTTP server,
3261   the config name is the peer inside that context (client@foo). Because
3262   the GNOME keyring lookup keys for the "databasePassword" (more
3263   specifically, the object name) contained the full config name which
3264   was different in both cases, looking up the saved password failed.
3265
3266   The solution is to normalize the config name (to accomodate for
3267   different ways of spelling it) and use only the context, with @ as
3268   before. This will break existing setups where the object name in the
3269   keyring (incorrectly) includes the full config name. In that case just
3270   configure the source again to set the password anew.
3271
3272 * Evolution Calendar: fixed detached recurrence support (BMC #22940)
3273
3274   When manipulating a meeting series with more than one detached
3275   recurrence certain sequences of operations could incorrectly fail
3276   with "UID already exists".
3277
3278 * iCalendar 2.0: must set VALUE in EXDATE (part of BMC #22940)
3279
3280   EXDATE has a VALUE parameter, which wasn't defined in the XML
3281   profile. Didn't seem to matter at all in practice, but wasn't
3282   standard-compliant.
3283
3284 * GTK sync-ui: wrap sync service descriptions (BMC #7199)
3285
3286   Descriptions of different sync services are not fully visible unless
3287   word-wrapping gets enabled.
3288
3289 * source configs: don't check "backend" unless it is needed
3290
3291   When using a config which has sources with a backend type set which is
3292   not currently available, an error was thrown even if those sources
3293   weren't even part of the current operation (for example, syncing
3294   another source which is currently supported).
3295
3296 * config migration: avoid name conflicts and auto syncing of old configs (BMC #22691)
3297
3298   When (auto-)migrating a config, it was possible that a name for the
3299   peer, say foo.old, was chosen for the renamed config although there
3300   was already such a config, for example foo.old in ~/.sync4j. Besides
3301   being confusing for users, this also led to a bug in the code where it
3302   copied from the older config with the foo.old name.
3303
3304   The main problem fixed is the disabling of auto syncing
3305   in the old config. Otherwise it was still used by syncevo-dbus-server
3306   for syncing, which triggered another auto-migration, ad infinitum...
3307
3308 * auto syncing: must check whether enabled when looking at unknown URLs (part of BMC #22691)
3309
3310   "syncURL = insert your URL here" with "autoSync = 0" did lead to auto
3311   sync attempts although it wasn't enabled. A check for "auto syncing
3312   enabled" was missing for the "unknown transport" case.
3313
3314 * CalDAV/CardDAV + local storage: avoid empty properties
3315
3316   The main motivation for this change is that a recent Apple Calendar
3317   server rejects vCards with empty BDAY property. Another reason is that
3318   keeping the data as small as possible is desirable by itself.
3319
3320   Sending an empty property serves as a hint for the peer that the
3321   property is supported. This is not necessary when storing an item in a
3322   backend. Therefore this commit disables empty properties for all
3323   backends which do not themselves set the m_backendRule Synthesis info
3324   value.
3325
3326 * Apple CardDAV: apply PHOTO import/export scripts by default
3327
3328   A recent Apple Calendar server (correctly) rejects the invalid
3329   PHOTO;TYPE=unknown: property in a vCard. This internal representation
3330   must be cleared before serializing the field list.
3331
3332 * for developers: modified backend API
3333   - ClientTestConfig modernized
3334   - InsertItemResult::m_merged turned from boolean to enum
3335
3336 * testing and compilation changes; for example, the minimum version of
3337   libsynthesis is now checked at configure time instead of failing at
3338   runtime due to missing features in the Synthesis engine
3339
3340
3341 SyncEvolution 1.1.99.5 -> 1.1.99.6, 17.08.2011
3342 ==============================================
3343
3344 Mostly bug fixes, some improvements in testing and packaging. This
3345 release was tested successfully with DAViCal 0.9.9.4.
3346
3347 * CalDAV: fixed incorrect change tracking causing "event not found" (BMC #22329)
3348
3349 * CalDAV: handle delete<->delete conflict during local sync (BMC #22327)
3350
3351   If the same event was deleted both locally and in the CalDAV server, syncing
3352   failed with "event not found".
3353
3354 * Google Contacts: ensure that first/middle/name are set when storing in EDS (BMC #20864)
3355
3356   Evolution and the MeeGo UX assume that first/middle/last name are set.
3357   That is not the case when a contact is created in the Google Contacts
3358   web interface. Such contacts are sent by Google without the N
3359   property.
3360
3361   SyncEvolution now tries to recreate the name components from the FN
3362   string, by splitting at word boundaries and assuming "<first>
3363   <middle> <last>" or "<last>, <first>" format. Obviously this
3364   heuristic fails for some locales.
3365
3366 * CalDAV: continue despite Google Calendar access problems (see BMC #19484)
3367
3368   An attempt to work around "403 You don't have access to change that
3369   event" errors, perhaps caused by
3370   http://code.google.com/p/google-caldav-issues/issues/detail?id=38
3371   The problem is now recorded instead of aborting the sync. The sync
3372   then ends in a 22001 = "partial failure" error and the operation
3373   will be retried in the next sync.
3374
3375 * CalDAV: transform UTC RECURRENCE-ID for Evolution (BMC #22594)
3376
3377   Evolution showed a meeting twice on the day of a modified recurrence,
3378   if the meeting series was originally created and modified in Exchange,
3379   then imported into Google Calendar.
3380
3381 * CalDAV syncevolution.org binaries now works when libneon.so.27
3382   or libneon-gnutls.so.27 (Debian) are installed. Previously
3383   libneon.so.27 was required, which is no longer available in
3384   Debian Testing.
3385
3386 * syncevo-dbus-server/gdbus: fixed segfault when asked for properties
3387   when none are available (BMC #22152)
3388
3389 * Evolution Calendar: fixed error handling for broken TZIDs
3390
3391 * Sony Ericsson: use ISO-8859-1 for all devices (BMC #14414)
3392
3393   Passing invalid UTF-8 strings into libecal caused glib to
3394   abort syncevo-dbus-server.
3395
3396 * item operations: authentication problem for WebDAV when using keyring (BMC #21311)
3397
3398   The password wasn't looked up in the keyring when using --print-items/import/export/...
3399
3400 * WebDAV: fixed item operations without configuration (BMC #22164)
3401
3402   Previously failed with "[ERROR] : virtual read-only configuration node, cannot write
3403   property webDAVCredentialsOkay = 1".
3404
3405 * auto sync: show all failed syncs except for temporary network errors (BMC #21888)
3406
3407   Notifications were meant to be shown for all errors except temporary
3408   ones. This has never been implemented correctly since the feature was
3409   introduced: instead of hiding known temporary errors, all errors except
3410   500 (fatal error) were suppressed.
3411
3412 * vCard: inline local photo data (BMC #19661)
3413
3414   Some platforms (Maemo, MeeGo) store photos in separate files. Now SyncEvolution
3415   efficiently includes that photo data in the generated vCard right before sending
3416   it to a peer; previously it sent a useless local file:// URI. The Maemo port
3417   has a less efficient workaround for that which now should be obsolete.
3418
3419 * syncevo-dbus-server: online status wrong without Network Manager or ConnMan (BMC #21543)
3420
3421   When neither Network Manager nor ConnMan are running, network presence was "not
3422   online". This prevented running automatic syncs.
3423
3424 * fixed compile issues with Debian Testing/gcc 4.6.1
3425
3426
3427 Known issues, might still be resolved for the final 1.2:
3428 --------------------------------------------------------
3429
3430 * syncevolution.org binaries: libnotify1 -> libnotify4 incompatibility (BMC #22668)
3431
3432   Newer distros no longer have the libnotify.so.1 that syncevolution.org
3433   binaries depend on. As a workaround it is possible to install the libnotify1
3434   package from older distro releases.
3435
3436 * CalDAV: add<->add conflicts (BMC #22669)
3437
3438   Suppose the same meeting invitation for event UID=FOO is processed in
3439   both Evolution and Google Calendar. This always happens when the meeting
3440   invitation emails is sent to Google Mail, then later viewed in Evolution.
3441   On the Evolution side, the invitation is accepted. In Google Calendar this is
3442   still open.
3443
3444   When syncing in that state the sync engine does not recognize that
3445   both sides have added the same meeting and the "meeting accepted"
3446   information eventually gets lost.
3447
3448   As a workaround, always synchronize the calendar before processing
3449   meeting invitation emails.
3450
3451
3452 SyncEvolution 1.1.99.1 -> 1.1.99.5, 13.07.2011
3453 ==============================================
3454
3455 Release 1.1.99.5 is the first release candidate for 1.2. It has gone
3456 through a long stabilization period and thus is suitable for normal users.
3457
3458 The major new feature of the 1.2 release is support for non-SyncML
3459 protocols in general and CalDAV/CardDAV in particular. ActiveSync
3460 support is in development. These protocols are implemented as backends
3461 which are combined with other backends by SyncEvolution in a so called
3462 "local sync". The GTK sync-ui does not yet support configuring
3463 non-SyncML protocols. See the README.rst and man page for more
3464 information on how to use the new feature via the command line.
3465
3466 Properties not supported by SyncML servers can now be preserved
3467 locally in two-way synchronization (BMC #15030). This depends on
3468 information about what properties a SyncML server supports ("CtCap"),
3469 which is typically not provided by servers. SyncEvolution contains a
3470 copy of that information for Google Contacts (BMC #15029).
3471
3472 Akonadi backend and KWallet support were merged. They are not included
3473 yet in syncevolution.org binaries. To use them compile from source.
3474
3475 The configuration format was updated to solve a conceptual problem
3476 inherited with the legacy property names: the "type" property had
3477 multiple, sometimes conflicting roles. For example, setting the
3478 preferred data format for sync with one peer might have changed the
3479 backend selection for some other peer (BMC #1023). Now
3480 "backend/databaseFormat/syncFormat/forceSyncFormat" replace
3481 "type". "type" is still accepted by the command line as alias.
3482
3483 Old configurations can still be read. But writing, as it happens
3484 during a sync, must migrate the configuration first. In contrast to
3485 earlier, more experimental releases in the 1.2 series, 1.1.99.5 and
3486 later automatically migrate configurations. The old configurations
3487 will still be available (see "syncevolution --print-configs") but must
3488 be renamed manually to use them again under their original names with
3489 older SyncEvolution releases.
3490
3491 Other changes:
3492 * syncevo-http-server was enhanced considerably. See http://syncevolution.org/wiki/http-server-howto
3493 * support NetworkManager API >= 0.9 (BMC #19470)
3494 * Sync mode is recorded when running in SyncML server mode (BMC #2786).
3495 * syncevo-dbus-server automatically stops when some of its libraries
3496   are updated and restarts if auto-syncing is on (BMC #14955).
3497 * Using the --sync-property and --source-property command line options is
3498   optional, just specifying the property assignment is enough.
3499 * Added support for Buteo, mKCal and QtContacts in MeeGo.
3500   Buteo and mKCal were removed again from MeeGo, so the code
3501   is obsolete. The QtContacts backend may be still be useful
3502   to access items via that API, but for syncing on MeeGo
3503   the normal EDS backend is used since MeeGo reverted back
3504   to EDS as PIM storage.
3505 * code cleanup and various minor fixes/improvements, see ChangeLog
3506
3507
3508 SyncEvolution 1.1 -> 1.1.1, 26.12.2010
3509 ======================================
3510
3511 Maintenance release, in particular improving syncing with phones.
3512 There was a bug that could cause all kinds of weird behavior after
3513 a failed sync with a phone, so updating is highly recommended.
3514
3515 * Synthesis engine: fixed a corruption issue in internal meta data which
3516   caused duplicates and other problems in a pretty indeterminstic way;
3517   apparently caused by failed syncs (BMC #11044).
3518
3519 * Synthesis engine: recurrence rules with end date now sent correctly to phones (BMC #11241).
3520
3521   The RRULE property was not encoded correctly previously during the
3522   iCalendar 2.0 -> vCalendar 1.0 conversion. Events with recurrence count
3523   were okay. Probably also affected SyncML servers without iCalendar 2.0
3524   support.
3525
3526   The fix was confirmed to work with Nokia phones. It also helps with Sony Ericsson
3527   phones, but at least the t700 still has a problem: depending on the phone's
3528   time zone, it repeats the event for one day too long (BMC #10092).
3529
3530 * Synthesis engine: fixed broken time zone information when sending to phone;
3531   previously that broke sending calendar updates to Nokia phones (BMC #9600).
3532
3533   iCalendar 2.0 time zone definitions imported from libical were not
3534   encoded correctly in vCalendar 1.0 items as sent to phones. Nokia
3535   phones accepted such data when part of a new event, but rejected
3536   updates of it.
3537
3538 * Synthesis engine: shorter TZIDs, might help N900 calendar (BMC #6680).
3539
3540   The shorter TZIDs will be included in iCalendar 2.0 data exported
3541   by libsyntesis and thus SyncEvolution. This change is motivated primarily
3542   by the observation that the N900 calendar storage can handle TZID=<location>,
3543   but not TZID=/softwarestudio.org/Tzfile/<location>.
3544
3545 * ScheduleWorld: disable configuration template because service has shut down.
3546
3547   The template is only hidden from the GTK sync-ui, but remains in SyncEvolution
3548   for the time being because it is referenced in several places.
3549
3550 * Evolution CalDAV: added workaround for "must sync twice" (BMC #10265)
3551
3552   The Evolution CalDAV backend seems to update its data when closing the
3553   database, not when opening it. As a result, syncevolution had to be run
3554   twice to see all data changes. The workaround is to open the database
3555   twice at the start of the sync. This is done for all calendar databases,
3556   regardless of which backend they use, in case that some other (yet unknown)
3557   backend needs the same workaround.
3558
3559 * GTK sync-ui: workaround for "Sync Now" button not reacting to online
3560   status changed (BMC #9949).
3561
3562 * Changed slow sync handling. Some users have complained about getting
3563   duplicated contacts (BMC #10081). The exact reason is not known (no
3564   useful logs provided yet), but it might be due to using "duplicate"
3565   as resolution strategy during slow syncs.
3566
3567   This caused slightly different contacts to be duplicated instead of
3568   merging the two copies, reasoning that "no data loss" is better than
3569   "duplicates". This release switches to a mode where the engine
3570   tries harder to avoid duplicates by merging data if modification
3571   time stamps are available for contacts (usually they are). When fields
3572   differ, the more recent data is kept.
3573
3574 * convert absolute alarm back to relative (BMC #11233)
3575
3576   Experiments show that at least Nokia phones (and thus perhaps also
3577   Mobical.com) interpret a fixed alarm as "repeat alarm with the same
3578   relative offset as on first occurrence". The same transformation to
3579   relative alarm times is applied whenever the transformation to
3580   absolute alarm is enabled for a peer.
3581
3582 * Sony Ericsson: enable conversion to absolute alarm times (BMC #10092)
3583     
3584   Like Nokia and Mobical.net, Sony Ericsson phones also seem to be unable
3585   to deal with relative alarm times - verified with t700.
3586
3587 * Sony Ericsson C510: workaround for SyncML violation
3588
3589   The phone does not sent identifiers for the target database;
3590   using the source identifier as fallback allows a sync to
3591   run.
3592
3593 * Fixed a regression affecting users who had created a config
3594   with SyncEvolution < 1.0. Using the config worked once, then
3595   failed with "No configuration for ... found". Users must
3596   manually remove the empty "peers" directory inside their
3597   affected configuration, the fix only makes configs without that
3598   directory usable again (BMC #9381).
3599
3600 * Removed obsolete workaround for older mKCal calendar storage.
3601 * Fixed error message in QtContacts backend.
3602 * Same SYNCEVOLUTION_DEBUG code as in master branch.
3603 * Some updates to synccompare, including a workaround for a Perl
3604   bug seen on Debian Testing with Perl 5.10.1-16 (Perl panic).
3605 * Fix compilation of syncevo-dbus-server with libnotify 0.7.0 (BMC #10453).
3606 * Fixed compilation on Debian GNU/Hurd (no MAX_PATH, Mac OS X confusion).
3607
3608
3609 SyncEvolution 1.0.1 -> 1.1, 26.10.2010
3610 ======================================
3611
3612 An incremental update, resolving issues where the fixes would have
3613 been too intrusive for a 1.0.x release. In particular compatibility
3614 with Nokia phones was improved. Some new features were also included
3615 (command line options for manipulating items, backends for MeeGo PIM
3616 storages).
3617
3618 Details:
3619
3620 * bug fix in sync-ui: wrong direction of one-way data transfers with devices (BMC #7091)
3621 * bug fix in syncevo-dbus-server: incorrect Presence status after config change (BMC #8453)
3622   Shows up in sync-ui as "'Sync Now' button active after creating a config while offline".
3623 * sync-ui (GTK version): app is now listed as "SyncEvolution (GTK)" under "Office"
3624 * Nokia phones: avoid data loss in two-way sync due to X-EVOLUTION-UI-SLOT (BMC #2566)
3625 * Nokia phones: alarm times in UTC, sending PHOTO (BMC #1657, #5860)
3626 * included all phone templates submitted to syncevolution.org Wiki (BMC #5727)
3627 * syncevo-phone-config: set consumerReady in output, more useful for Wiki (BMC #3803)
3628 * workaround for D-Bus timeouts in EDS libecal/libebook (BMC #4026)
3629 * added generic command line options for importing, exporting, updating, listing
3630   and deleting items in the different backends (http://syncevolution.org/blogs/pohly/2010/manipulate-evolution-kcalextendedmkcal-qtcontacts-pim-items-uniform-command-line)
3631 * added backends for mKCal and QtContacts (MeeGo PIM storage),
3632   meant to be used for manipulating this data on the command line
3633 * enhanced D-Bus interface (BMC #3558, #3559, #3560, #3562, #3563, #7761, #7766)
3634 * the command line tool now warns when running against a different D-Bus daemon (BMC #3563)
3635 * creating and configuring sources in a context (without peer-specific
3636   properties) is now supported
3637 * improved documentation: README.rst, man page, and --help output
3638 * fixed some compile issues (BMC #6367), improved nightly testing
3639
3640
3641 SyncEvolution 1.0 -> 1.0.1, 16.07.2010
3642 ======================================
3643
3644 A bug fix release. The main reason for releasing it is that
3645 SyncEvolution 1.0 no longer worked on recent distros (Fedora Core 13,
3646 Debian testing) because of a name clash between the Bluez D-Bus
3647 utility code and recent glib.
3648
3649 Details:
3650
3651 * compile fix for FC 13 (and possibly others): use private copy of gdbus (BMC #3556)
3652
3653 * sync-ui: prevent overwriting device configs by accident (BMC #3566,1194)
3654   Setting up a phone used the template name as config name and overwrote
3655   an existing configuration of another phone that was created using that
3656   same template. Now the code uses the Bluetooth device name as set on the
3657   device and checks for (less likely) collisions. It also sanitizes the
3658   name to avoid complicated config names (only relevant when also using
3659   the command line).
3660
3661 * syncevo-dbus-server: accept 'application/vnd.syncml+xml; charset=UTF-8' for starting an HTTP session (BMC #3554) 
3662   The redundant charset specification was set by the Funambol
3663   Thunderbird client. Because of a literal comparison against
3664   'application/vnd.syncml+xml' the messages were rejected.
3665
3666 * config fix: operations on non-peer configs failed (BMC #3157)
3667   When running operations on a non-peer configuration (like --restore @default
3668   addressbook), the operation fails with
3669   [ERROR] <source name>: type 'select backend' not supported
3670
3671 * ZYB.com: service goes away end of June 2010, template removed (BMC #3310)
3672 * some build (BMC #2586, BMC #3557) and language updates
3673
3674
3675 SyncEvolution 0.9.2 -> 1.0, 11.06.2010
3676 ======================================
3677
3678 Major new features compared to previous stable release:
3679 * synchronize directly with a phone over Bluetooth/OBEX
3680 * accept Bluetooth/OBEX connections in cooperation with obexd >= 0.19
3681 * run SyncEvolution as a rudimentary HTTP SyncML server
3682
3683 The GTK sync-UI can be used to select a paired phone and create a
3684 configuration for it based on the bundled configuration templates.
3685 Configuration templates are included for Nokia phones; for other
3686 phones see the http://syncevolution.org/development/sync-phone HOWTO
3687 and check out the Wiki there. Some users have already reported success
3688 for Sony Ericsson phones and added setup instructions. New templates
3689 from the Wiki can be dropped into ~/.config/syncevolution-templates
3690 under an arbitrary file name.
3691
3692 Unexpected slow syncs can be detected when running as client (MB
3693 #2416) and unless turned off (see "preventSlowSync"), SyncEvolution
3694 aborts the session so that the situation can be analyzed. A refresh
3695 from client or server might be more suitable. The command line tool
3696 provides instructions at the end of its output. The GTK sync-UI
3697 points towards its recovery dialog.
3698
3699 Automatic synchronization is supported by the syncevo-dbus-server (MB
3700 #6378). When that is installed, it will be started as part of a user
3701 session and keep running to trigger syncs in the
3702 background. Notifications are emitted when syncs start, end or fail
3703 (MB #10000).
3704
3705 Automatic synchronization can be enabled separately for each peer
3706 ("autoSync=0/1", off by default), will be done at regular intervals
3707 ("autoSyncInterval=30" minutes) when online long enough
3708 ("autoSyncDelay=5" minutes). That last option ensures that a) an
3709 automatic sync does not attempt to use a network connection unless it
3710 was already active and b) hopefully is also around long enough to
3711 complete the sync.
3712
3713 The Synthesis XML configuration was split up into different parts
3714 which are assembled from /usr/share/syncevolution/xml. Files in
3715 ~/.config/syncevolution-xml override and extend the default files,
3716 which my be useful when adding support for a new phone.
3717
3718 SyncML servers:
3719 * ZYB.com now works thanks to a workaround for anchor handling (MB #2424);
3720   only contacts tested because everything else is considered legacy by ZYB.com
3721 * Horde: avoid confusing the server with a deviceId that starts like the
3722   ones used in old Funambol clients, helps with calendar sync (MB #9347)
3723 * Mobical.net (and other, similar services): fix vCalendar 1.0 alarm
3724   properties before importing them (MB #10458)
3725 * desknow.com works when switching to SyncMLVersion = 1.1
3726 * Funambol, Memotoo (and probably others): preserve meeting series when
3727   receiving update for detached recurrence (BMC #1916)
3728
3729 Evolution:
3730 * addressbook backend: avoid picking CouchDB, second try (MB #7877)
3731 * calendar backend: minor fix for change tracking when deleting
3732   a single instance of a recurring event
3733 * workaround for Evolution 2.30: "timezone cannot be retrieved because it
3734   doesn't exist" is triggered incorrectly when importing non-standard
3735   timezone definitions because libecal changed an error code (MB #9820)
3736
3737 Performance and reliability improvements (MB #7708):
3738 * synccompare much faster
3739 * database dumps consume less disk space
3740 * more intelligent about expiring obsolete session directories
3741   and backups
3742 * database accesses are reduced in several backends
3743 * shorter logs (MB #8092)
3744 * message resending helps under unreliable network connectivity ("RetryInterval")
3745 * full support for suspend&resume in SyncEvolution client to SyncEvolution or
3746   Synthesis server syncs
3747 * better handling of certain third-party time zone definitions (BMC #1332)
3748
3749 Improved GTK sync-UI:
3750 * revised config screen: all in one list where entries can be expanded,
3751   integrated setup of sync with other devices
3752 * recovery support: restore from backup, unexpected slow sync handling
3753 * spinner while network is in use (MB #2229)
3754 * interactive password requests (MB #6376)
3755 * uses new D-Bus API
3756
3757 Command line:
3758 * fixed printing of rejected items (MB #7755)
3759 * consistent logging of added/updated/deleted items with short
3760   description
3761 * improved error reporting (textual descriptions instead of plain
3762   error codes MB #2069, partial success MB #7755, record and show
3763   first ERROR encountered MB #7708)
3764 * can create new sources (MB #8424)
3765 * runs operations inside daemon and thus avoids conflicts with
3766   operations done by other clients; for testing purposes (like
3767   running a client which talks to a local server in the daemon) it is
3768   still possible to ignore the daemon (--daemon=no, MB #5043)
3769 * revised README, now also available as man page (BMC #690)
3770
3771 Redesigned and reimplemented D-Bus API, used by sync-UI and command line:
3772 * central syncevo-dbus-server controls configurations and sync sessions:
3773   http://syncevolution.org/development/direct-synchronization-aka-syncml-server
3774 * accepts incoming SyncML connection requests and messages received by
3775   independent transport stubs (obexd, HTTP server, ...)
3776 * can be used by multiple user interfaces at once
3777 * fully documented, see src/dbus/interfaces and http://api.syncevolution.org
3778 * no longer depends on dbus-glib with hand-written glue code for C++,
3779   instead uses gdbus plus automatic C++ binding generated via C++ templates
3780
3781 Revised configuration layout (MB #8048, design document at
3782 http://syncevolution.org/development/configuration-handling):
3783 * several peer-independent sync and source properties are shared
3784   between multiple peers
3785 * they can be accessed without selecting a specific peer, by using an
3786   empty config name or with the new "@<specific context>" syntax
3787 * user interface of command line unchanged
3788 * old configurations can be read and written, without causing
3789   unwanted slow syncs when moving between stable and unstable
3790   SyncEvolution versions
3791 * old configurations can be migrated with the "--migrate" command
3792   line switch; however, then older SyncEvolution can no longer
3793   access them and migrating more than one old configuration causes
3794   the second or later configuration to loose its "deviceId" property
3795   (which is shared now), causing a slow sync once
3796 * config names may contain characters that are not allowed in the
3797   file names used for the underlying files; will be replaced with
3798   underscores automatically (MB #8350)
3799
3800
3801 Upgrading from 0.9.x:
3802
3803 * Upgrading and downgrading should work seamlessly when using existing
3804   configurations.
3805
3806 * The new configuration layout is only used when creating new
3807   configurations or explicitly invoking "syncevolution --migrate" (see
3808   above). Such configs cannot be used by older SyncEvolution releases.
3809
3810 * The new "RetryInterval" property causes messages to be resent
3811   after 2 minutes (increased from 1 minute in previous 1.0 betas).
3812   At least the Funambol server is known to not handle this correctly
3813   in all cases (http://funzilla.funambol.com/show_bug.cgi?id=7910).
3814   So in the Funambol config template the interval is set to zero,
3815   disabling the feature. Disabling the feature must be done manually
3816   in existing Funambol configurations.
3817
3818
3819 SyncEvolution 1.0 beta 3 -> 1.0 final, 11.06.2010
3820 =================================================
3821
3822 Bug fixes and new features:
3823
3824 * Configuration templates are stored in a single file (BMC #1208).
3825   New templates (like something downloaded from http://syncevolution.org/wiki)
3826   can be dropped into $HOME/.config/syncevolution-templates using an arbitrary
3827   file name.
3828 * Progress and per-source status are now also reported and recorded when
3829   running in server mode (BMC #1359). There are still several limitations
3830   (sync mode not reported, no information about sent/received/processed items
3831   while the sync runs, see BMC #2786).
3832 * Better handling of certain third-party time zone definitions (BMC #1332).
3833   Better logging to track down such problems.
3834 * D-Bus server + command line: return error code when failed (BMC #2193)
3835 * syncevo-phone-config: simplified command line options, several bug fixes
3836   (syntax error, incorrect handling of calendar+todo, BMC #1197)
3837 * Revised README, now also available as man page (BMC #690). Conversion of D-Bus API
3838   documentation into .html page (BMC #1745).
3839 * Funambol, Memotoo (and probably others): preserve meeting series when
3840   receiving update for detached recurrence (BMC #1916)
3841 * Fix for potential out-of-bounds memory access (BMC #1007).
3842 * HTTP server: fix for potential crash when second session was requested while an
3843   older one was still running, initial sync was done without libical time zone
3844   information and thus may have mismatched times (BMC #2435)
3845 * Nokia E55: convert alarm times (BMC #1657). This is done via a new remote rule
3846   in /usr/share/syncevolution/xml/remoterules/server/46_E55.xml
3847   If another phone needs the same treatment, then copy that file to
3848   ~/.config/syncevolution-xml/remoterules/server and edit the <model> element.
3849 * GTK GUI: styling fix (BMC #1372), updated toolbar for MeeGo 1.0 (BMC #1970),
3850   avoid duplicating configs when selecting a config created by syncevo-phone-config 
3851   or the command line (BMC #1266), scroll bars for emergency window (BMC #1296),
3852   avoid compile problem on Fedora Core 13 due to name collision with system sync()
3853   call, updated translations.
3854
3855
3856 SyncEvolution 1.0 beta 2 -> beta 3, 20.04.2010
3857 ==============================================
3858
3859 One more step towards the long awaited 1.0. 0.1 was released over four
3860 years ago and the 1.0 cycle started some time last summer. Beta 3 is
3861 considered feature complete at this point.
3862
3863 Automatic synchronization is supported by the syncevo-dbus-server (MB
3864 #6378). When that is installed, it will be started as part of a user
3865 session and keep running to trigger syncs in the
3866 background. Notifications are emitted when syncs start, end or fail
3867 (MB #10000).
3868
3869 Automatic synchronization can be enabled separately for each peer
3870 ("autoSync=0/1", off by default), will be done at regular intervals
3871 ("autoSyncInterval=30" minutes) when online long enough
3872 ("autoSyncDelay=5" minutes). That last option ensures that a) an
3873 automatic sync does not attempt to use a network connection unless it
3874 was already active and b) hopefully is also around long enough to
3875 complete the sync.
3876
3877 Detecting online status depends on ConnMan. Without it, SyncEvolution
3878 assumes that the network is available. For Bluetooth it is enough to
3879 have a peer paired.
3880
3881 When SyncEvolution is compiled with a backend sync daemon
3882 ("syncevo-dbus-server"), then conceptually that daemon controls the
3883 configuration and coordinates manually and automatically started sync
3884 sessions. Previously, the command line tool bypassed the daemon by
3885 running operations itself. Now it can hand over the command line
3886 parameters to the daemon to be executed there ("--daemon=yes", the
3887 default if the daemon is available; MB #5043). Command line parameters
3888 and output of "syncevolution" are the same as before. Note that the
3889 daemon only runs one operation at a time, which delays the command
3890 line client when the daemon is busy. For testing purposes (like
3891 running a client which talks to a local server in the daemon) it is
3892 still possible to ignore the daemon (--daemon=no).
3893
3894 Thanks to fixes and improvements in both Synthesis engine and
3895 SyncEvolution, suspend and resume are fully supported in client and
3896 server (MB #2425). Previously it failed in some cases, as mercilessly
3897 exposed by our automated testing. Now all of these tests pass. The
3898 HTTP server now also handles message resends by clients correctly.
3899
3900 Direct synchronization with older phones (like Sony Ericsson K750i)
3901 can be started now by switching to an older version of the SyncML
3902 standard ("SyncMLVersion" property, MB #9312). No further
3903 interoperability testing with such phones has been done at this
3904 time. When acting as client, that same property allows talking to
3905 older SyncML servers, like desknow.com.
3906
3907 A minor workaround and the right configuration make it possible to
3908 synchronize with Nokia N85 and probably also other S60
3909 devices. Added a template for "Nokia S60". Also made the template
3910 for "Nokia N900" accessible in the GTK GUI.
3911
3912 Because determining which configuration works for a phone involves
3913 a lot of trial-and-error, the new "syncevo-phone-config" script
3914 automates that process.
3915
3916 Other changes:
3917
3918 * Mobical.net (and other, similar services): fix vCalendar 1.0 alarm
3919   specifications before importing them (MB #10458)
3920 * Nokia N900: added a config template for it and disabled the redundant
3921   RespURI when using Bluetooth. Preliminary testing shows that this solves
3922   some of the issues seen before (MB #10224).
3923 * workaround for Evolution 2.30: "timezone cannot be retrieved because it
3924   doesn't exist" is triggered incorrectly when importing non-standard
3925   timezone definitions because libecal change an error code (MB #9820)
3926 * "syncevo-http-server" HTTP server script is included in normal install
3927 * syncevolution.org binaries: finally solved the libbluetooth3
3928   incompatibility (MB #9289). Binaries of beta 2 crashed on more
3929   recent distros because of that.
3930 * SyncML client and Bluetooth: a mobile device running SyncEvolution
3931   creates a configuration automatically (MB #6175). The peer contacting
3932   us has to use the standard SyncEvolution URIs (addressbook, calendar,
3933   todo, memo).
3934 * command line: when dealing with the shared non-peer part of a config,
3935   it checks for properties which are unsuitable only prints
3936   those (MB #8048)
3937 * GTK GUI: improved setup of devices, automatic sync switch,
3938   some fixes for crashes and other tweaks
3939 * Nokia 7210c: send time as UTC instead of relying on time zone
3940   information (MB #9907).
3941 * command line: setting up a configuration for a "SyncEvolution"
3942   server on a client was not possible because the "SyncEvolutionClient"
3943   configuration was picked instead (MB #10004). The latter has to
3944   be used when configuring a SyncEvolution server to talk to a
3945   SyncEvolution client.
3946 * restore: no longer updates the time of the backup (MB #9963)
3947 * various minor improvements and fixes, see ChangeLog
3948
3949 Upgrading:
3950 * The new "RetryInterval" property causes messages to be resent
3951   after 2 minutes (increased from 1 minute in previous 1.0 betas).
3952   At least the Funambol server is known to not handle this correctly
3953   in all cases (http://funzilla.funambol.com/show_bug.cgi?id=7910).
3954   So in the Funambol config template the interval is set to zero,
3955   disabling the feature. Enabling or disabling the feature must
3956   be done manually in existing configurations.
3957
3958 SyncEvolution 1.0 beta 1 -> beta 2, 23.02.2010
3959 ==============================================
3960
3961 Several new features and some bug fixing. Despite some open issues
3962 (see below), this release is ready for getting packaged in staging
3963 areas of distros as replacement for 0.9.2.
3964
3965 As before, documentation for 1.0 is only available in the
3966 "Development" section of syncevolution.org, including HOWTOs for
3967 setting up the HTTP SyncML server and phones manually.
3968
3969 Setting up a phone became a bit easier with beta 2, because
3970 SyncEvolution is now integrated with the GNOME Bluetooth panel: once a
3971 device with SyncML client support is paired, a button offers to bring
3972 up the sync-UI and configure or synchronize with that device. We do a
3973 fuzzy match against the Bluetooth device name to find a suitable
3974 template (not manufacturer/model, because that is not readily
3975 available). Still not many (read: hardly any) templates available,
3976 though.
3977
3978 The binaries on syncevolution.org are compiled with Bluetooth support.
3979 libbluetooth2 or libbluetooth3 should be installed, but are not
3980 essential. If there is no suitable version of it, the Bluetooth
3981 channel has to be selected manually as part of the syncURL.
3982
3983 Unexpected slow syncs are prevented by default, in contrast to beta 1
3984 where this feature was available but turned off. When an unexpected
3985 slow sync is detected in a client, users have to follow the
3986 instructions provided by the command line or sync-ui and choose how to
3987 proceed (explicitly request slow sync, refresh from server or client,
3988 restore from backup). SyncEvolution as server currently cannot prevent
3989 slow syncs, even when initiating the sync with a phone.
3990
3991 In preparation for syncing automatically, logdir and database handling
3992 was improved considerably. Backups use less disk space because
3993 identical files share the same file content via hard links. This also
3994 speeds up the synccompare Perl script. Database dumps and the
3995 corresponding comparison are delayed until the session really runs,
3996 which avoids doing needless work a) when the server a client tries to
3997 contact is unreachable or down and b) by only including sources that
3998 are really in use during a sync on the server side.
3999
4000 The Synthesis XML configuration was split up into different parts
4001 which are assembled from /usr/share/syncevolution/xml. Files in
4002 ~/.config/syncevolution-xml override and extend the default files,
4003 which my be useful when adding support for a new phone.
4004  
4005
4006 Summary of changes since 1.0 beta 1:
4007
4008 * sync-ui: recovery dialog (MB #8050), device setup, config usable with
4009   long strings (MB #9278), fixed displaying of source phases during sync
4010   (MB #9320)
4011 * sync-ui + syncevo-dbus-server: integration with Bluez to detect paired
4012   devices (MB #9216, MB #7089), select template based on device name (MB #7838),
4013   detect network and Bluetooth connectivity (only with ConnMan, MB #7700),
4014   passwords stored in GNOME keyring by syncevo-dbus-server are shown with
4015   dots in sync-ui (MB #9169)
4016 * Evolution addressbook backend: avoid picking CouchDB, second try (MB #7877)
4017 * Evolution calendar backend: minor fix for change tracking when deleting
4018   a single instance of a recurring event
4019 * build fixes: Bluetooth compatibility (MB #9289), use libical _r variant
4020   of calls because 0.43 has issues in the normal version, conflict with
4021   system libsynthesis and libsmltk (MB #9811)
4022 * Horde: avoid confusing the server with a deviceId that starts like the
4023   ones used in old Funambol clients, helps with calendar sync (MB #9347)
4024 * better reporting when SyncEvolution dies during a sync (only happend once
4025   when it wasn't installed properly, but still... MB #9844)
4026 * performance improvements: synccompare much faster/database dumps consume
4027   less disk space/more intelligent about expiring obsolete session directories
4028   and backups/database accesses are reduced in several backends (MB #7708),
4029   shorter logs (MB #8092)
4030 * slow sync detection: now also works in the case where the client detects
4031   an anchor mismatch and enabled by default (MB #2416)
4032 * OBEX transport: some error handling changes and removal of polling, now
4033   also possible via sync-ui + syncevo-dbus-server (MB #9436)
4034 * API changes: SyncSource introduces an "isEmpty" operation which is
4035   needed for the slow sync detection
4036 * SyncML: split up configuration (MB #7712), increased default message size
4037   because the old one might have been too small for large DevInf structures
4038 * several fixes for virtual data sources ("calendar+todo"): now works
4039   on client side, fixed naming on server (MB #9664), fixed error message
4040   for slow sync detection, supported in combination with sync-UI (MB #9535)
4041 * fixes for shared configuration layout: finding sessions of peers in
4042   non-default context, adding sources affected peers in the same context
4043   (MB #9329), wrong context during --configure when using shortcut for peers
4044   in non-default context (MB #9338)
4045
4046
4047 Known gaps for 1.0 final and beyond:
4048
4049 Redesigned and reimplemented D-Bus API, required by sync-UI:
4050 - 'syncevolution' command line tool bypasses D-Bus server and runs
4051   sync sessions itself (MB #5043)
4052 - availability of peers not detected when using NetworkManager
4053   (connected for HTTP, paired for Bluetooth; MB #7700)
4054
4055 SyncML server in general:
4056 - suspend/resume support is untested (MB #2425)
4057 - the progress events and statistics reported for a SyncML client
4058   are not generated when running as SyncML server, will require
4059   a fair amount of refactoring in the Synthesis engine (MB #7709)
4060
4061 HTTP SyncML server:
4062 - a configuration must be created for each peer manually, including
4063   a remoteDeviceId value that contains the peer's SyncML device ID
4064   (MB #7838)
4065
4066 OBEX SyncML server ("sync with phones"):
4067 - does not support phones which require a SAN 1.0 message (MB #9312)
4068 - determining a working configuration for an unknown phone requires
4069   a bit of experimenting, which should be automated (MB #9862)
4070
4071 OBEX SyncML client:
4072 - parsing of SAN message is rudimentary and depends on an existing local
4073   configuration, needs to be refined depending on which SyncML server software
4074   it is meant to work with (MB #6175)
4075
4076 Automatic sync (MB #6378):
4077 - no support for the various server push notification mechanisms
4078 - no intelligent detection of local changes
4079 - no regular background sync, development is in progress
4080
4081 Upgrading from 1.0 beta 1: moving back and forth should work seamlessly
4082 Upgrading from 0.9.x: see under beta 1
4083
4084
4085 SyncEvolution 0.9.2 -> 1.0 beta 1, 26.01.2010
4086 ==============================================
4087
4088 Compared to the current stable release, 0.9.2, this beta release can also:
4089 * synchronize directly with a phone over Bluetooth/OBEX
4090 * accept Bluetooth/OBEX connections in cooperation with obexd 0.19
4091 * run SyncEvolution as a rudimentary HTTP SyncML server
4092
4093 These feature were already available in a source-only 1.0 alpha
4094 release. For the beta, we fixed some issues (nothing major)
4095 and in addition to the source, also make binaries available. As
4096 before, we hope to get feedback on where we are going with 1.0 and its
4097 SyncML server and direct synchronization features. If you want to get
4098 involved, now is a good time because a) there is something which works
4099 and b) there is still time to influence the final 1.0, scheduled for
4100 March 2010.
4101
4102 Documentation of the new features can be found in the "Development"
4103 section (http://syncevolution.org/development) for HOWTOs or ask on
4104 the mailing list (http://syncevolution.org/support).
4105
4106 Here is a more complete list of features compared to the stable
4107 release. The full (and up-to-date) list can be retrieved from the
4108 Moblin Bugzilla (MB) issue tracking system with this query:
4109 http://bugzilla.moblin.org/showdependencytree.cgi?id=7892&hide_resolved=0
4110 For changes compared to the 1.0 alpha please consult the
4111 change log.
4112
4113 Implemented features are marked with a plus +, open ones with a minus -.
4114
4115 ZYB.com
4116 + now works thanks to a workaround for anchor handling (MB #2424)
4117 - only contacts tested because everything is considered legacy
4118   by ZYB.com
4119
4120 Slow sync handling (MB #2416)
4121 + Unexpected slow syncs can be detected when running as client and
4122   if configured (see "preventSlowSync"), abort the session so that
4123   the situation can be analyzed. A refresh from client or server
4124   might be more suitable. Because this required manual intervention
4125   by the user, the feature is off by default.
4126 - Catching slow syncs does not work yet when running as server and
4127   in one corner case in a client.
4128
4129 Improved sync-UI:
4130 + settings for HTTP servers are now done inside the list of
4131   all configs and server templates instead of poping up a
4132   separate window
4133 + uses the new D-Bus API
4134 + no longer uses private gconf key to select default peer,
4135   replaced by "defaultPeer" in SyncEvolution config
4136 + added recovery features like handling of unexpected slow syncs (MB #2416)
4137 - restoring from backup only supported by command line (MB #8050)
4138 - spinner to indicate network activity missing (MB #2229)
4139 - interactive password request not implemented yet (MB #6376)
4140
4141 Command line:
4142 + fixed printing of rejected items (MB #7755)
4143 + improved error reporting (textual descriptions instead of plain
4144   error codes MB #2069, partial success MB #7755, record and show
4145   first ERROR encountered MB #7708)
4146 + can create new sources (MB #8424)
4147
4148 Redesigned and reimplemented D-Bus API, required by sync-UI:
4149 + central syncevo-dbus-server controls configurations and sync sessions:
4150   http://syncevolution.org/development/direct-synchronization-aka-syncml-server
4151 + accepts incoming SyncML connection requests and messages received by
4152   independent transport stubs (obexd, HTTP server, ...)
4153 + can be used by multiple user interfaces at once
4154 + fully documented, see src/dbus/interfaces
4155 + no longer depends on dbus-glib with hand-written glue code for C++,
4156   instead uses gdbus plus automatic C++ binding generated via C++ templates
4157 - 'syncevolution' command line tool bypasses D-Bus server and runs
4158   sync sessions itself (MB #5043)
4159 - availability of peers not detected (connected for HTTP, paired for
4160   Bluetooth; MB #7700)
4161 - Bluetooth peers can only be configured via command line (MB #9216)
4162
4163 Revised configuration layout (MB #8048, design document at
4164 http://syncevolution.org/development/configuration-handling):
4165 + several peer-independent sync and source properties are shared
4166   between multiple peers
4167 + they can be accessed without selecting a specific peer, by using an
4168   empty config name or with the new "@<specific context>" syntax
4169 + user interface in command line and D-Bus API unchanged
4170 + old configurations can be read and written, without causing
4171   unwanted slow syncs when moving between stable and unstable
4172   SyncEvolution versions
4173 + old configurations can be migrated with the "--migrate" command
4174   line switch; however, then older SyncEvolution can no longer
4175   access them and migrating more than one old configuration causes
4176   the second or later configuration to loose its "deviceId" property
4177   (which is shared now), causing a slow sync once
4178 + config names may contain characters that are not allowed in the
4179   file names used for the underlying files; will be replaced with
4180   underscores automatically (MB #8350)
4181 - users of the sync-ui will not know about the --migrate option,
4182   so if they have only one configuration, it should be migrated
4183   automatically
4184
4185 SyncML server in general:
4186 + incoming connections are accepted by syncevo-dbus-server via
4187   the D-Bus Connection API; because this is a "personal SyncML
4188   server", all local data is meant to belong to a single user,
4189   and only one sync session can be active at any point in time
4190 + different users on the same machine can run their own server,
4191   as long as they ensure that listening for incoming connections
4192   does not conflict with each other (different port in HTTP)
4193 + the session of an HTTP client which stops sending messages expires
4194   after "RetryDuration" seconds instead of blocking the server
4195   forever (MB #7710)
4196 - suspend/resume support is untested (MB #2425)
4197 - automatic backup of server databases is inefficient (done
4198   even when client is not allowed to do a sync; always backs up
4199   all data, including sources which are not active; MB #7708)
4200 - the progress events and statistics reported for a SyncML client
4201   are not generated when running as SyncML server, will require
4202   a fair amount of refactoring in the Synthesis engine (MB #7709)
4203 - the Synthesis server example config contains workarounds for
4204   specific phones, but SyncEvolution does not currently use those;
4205   adding new workarounds should be made very simple (MB #7712)
4206
4207 HTTP SyncML server:
4208 + test/syncevo-http-server.py provides an experimental HTTP server
4209   based on Python and Twisted
4210 - a configuration must be created for each peer manually, including
4211   a remoteDeviceId value that contains the peer's SyncML device ID
4212   (MB #7838)
4213
4214 OBEX SyncML server ("sync with phones"):
4215 + peers are contacted via a builtin transport that uses libopenobex (MB #5188)
4216 + Server Alerted Notification (SAN) message triggers syncs; server ID
4217   and URI are configurable (MB #7871)
4218 - a configuration must be created for each peer manually, including
4219   a syncURL that contains the peer's MAC address (MB #7838)
4220 - should be integrated into the system's Bluetooth pairing (MB #7089)
4221
4222 OBEX SyncML client:
4223 + obexd 0.19 contains a plugin which passes SyncML messages to syncevo-dbus-server
4224 - parsing of SAN message is rudimentary and depends on an existing local
4225   configuration, needs to be refined depending on which SyncML server software
4226   it is meant to work with (MB #6175)
4227
4228 Automatic sync (MB #6378):
4229 - no support for the various server push notification mechanisms
4230 - no intelligent detection of local changes
4231 - no regular background sync
4232 - depends on safe handling of concurrent editing, which is blocked
4233   by merging of a new Evolution Data Server API (MB #3479)
4234
4235 Upgrading from 0.9.x:
4236
4237 * Upgrading and downgrading should work seamlessly when using existing
4238   configurations. But this being an alpha, better ensure that you have
4239   backups of both your data and your configurations in
4240   ~/.config/syncevolution.
4241
4242 * The new configuration layout is only used when creating new
4243   configurations or explicitly invoking "syncevolution --migrate" (see
4244   above). Such configs cannot be used by older SyncEvolution releases.
4245
4246
4247 SyncEvolution 0.9.1 -> 0.9.2, 23.01.2010
4248 ========================================
4249 Synthesis SyncML Engine version: see src/synthesis/ChangeLog
4250
4251 New Maemo 5/Nokia N900 calendar backend and packages, brought to you
4252 by Ove Kaaven. These packages are available via the Maemo extras-devel
4253 repository. Bug reports can be submitted both in http://bugs.maemo.org
4254 and http://bugzilla.moblin.org. The latter is the tracker that is
4255 monitored by the SyncEvolution team, which will also incorporate
4256 patches. In general, Ove is the main maintainer of the new backend.
4257
4258 New XMLRPC backend, contributed by Franz Knipp/M-otion. It accesses
4259 data inside a web service via a SOUP API and thus allows synchronizing
4260 it via SyncML. See src/backends/xmlrpc/README for more information.
4261
4262 Added templates for Oracle Beehive and Goosync. Both are not currently
4263 part of the regular testing.
4264
4265 In addition to that, 0.9.2 is an incremental update, with several
4266 updated translations and addressing all of the issues reported by
4267 users for 0.9.1:
4268
4269 - vCard dialects: added "X-GENDER/X-SIP" (used by Maemo) and X-SKYPE
4270   (used by Maemo and recent Evolution, MB #8948)
4271
4272 - Evolution Address Book: avoid picking CouchDB by default (MB #7877, evolution-couchdb #479110)
4273
4274   CouchDB address books are appended at the end of the local database
4275   list, otherwise preserving the order of address books. The initial
4276   release of evolution-couchdb in Ubuntu 9.10 is unusable because it
4277   does not support the REV property.
4278
4279   Reordering the entries ensures that the CouchDB address book is not
4280   used as the default database by SyncEvolution, as it happened in
4281   Ubuntu 9.10.  Users can still pick it intentionally via
4282   "evolutionsource".
4283
4284 - installation: templates now in $(datadir)/syncevolution/templates (MB #7808)
4285   This are files used internally, meant to be extended by distributors.
4286   Storing them in /etc is no longer supported, but also unlikely to be
4287   needed. Added warnings that these files cannot simply be copied into
4288   .config because they are not complete configurations.
4289
4290 - installation: "make install" populates $(docdir) (MB #7168)
4291   Previously README, COPYING, NEWS, and server READMEs were copied
4292   into syncevolution.org .tar.gz/.deb/.rpm archives as part of
4293   custom make rules and thus missing in other installations.
4294
4295 - building: --with-boost had no effect (MB#7856), detect incorrect
4296   use of --with-synthesis-src, workaround for lack of --with-docdir
4297   in older autoconf, do not unnecessarily depend on CPPUnit header
4298   files and GNOME/EDS libs (MB#8338), workaround for libtool bug
4299   ("cannot install `syncecal.la' to a directory not ending in ..."),
4300
4301 - clarified documentation of properties for file backend (MB#8146)
4302   
4303 - stderr redirection: detect "error" messages and show them (MB#7655)
4304   The "GConf Error: Failed to contact configuration server..." error
4305   message was suppressed by the code which catches noise from libraries
4306   invoked by SyncEvolution. Now it is printed as ERROR, making it
4307   easier to detect why running SyncEvolution inside cron needs
4308   additional changes:
4309   http://www.estamos.de/blog/2009/05/08/running-syncevolution-as-cron-job/
4310
4311 - importing contacts from SyncML server without full name (MB#5664):
4312   Evolution expects the name to be set and shows an empty string if
4313   it is missing. Now the name is re-added by appending first, middle and
4314   last name.
4315
4316 - Evolution calendar: work around 'cannot encode item' problem (MB #7879)
4317   Happens when the calendar file contains broken events which reference
4318   a timezone that is not defined. Now the event is treated like one in
4319   the local timezone.
4320
4321 - "http_proxy" env variable is supported regardless which HTTP transport
4322   is used (MB#8177).
4323
4324 - avoid crashes when libecal sets neither error nor pointer (MB#8005)
4325   and when aborting a running sync in the syncevo-dbus-server (MB#8385)
4326
4327 - "--status" output: fixed missing total item counts (MB #9097)
4328
4329
4330 Upgrading from 0.9.1:
4331
4332 * nothing to do, upgrading and downgrading should work seamlessly
4333
4334
4335 SyncEvolution 0.9 -> 0.9.1, 26.10.2009
4336 ======================================
4337 Synthesis SyncML Engine version: see src/synthesis/ChangeLog
4338
4339 Mobical and Memotoo are now officially supported.
4340
4341 Memotoo uses vCard 2.1 with several Evolution specific extensions. It
4342 uses iCalendar 2.0, however, without actually supporting the advanced
4343 features of it. Times are converted to UTC and meeting information are
4344 lost.
4345
4346 Mobical uses vCard 2.1 and vCalendar 1.0 as data formats, with the
4347 result that many properties used in Evolution are not supported by the
4348 server.  In particular calendar support is very limited (known issues
4349 when events are in time zones different from the one selected locally
4350 and on the server, no support for meetings). For details see
4351 README.mobical.
4352
4353 *** Beware *** that the Mobical SyncML password is *not* the same as
4354 the one for their web site. Log into mobical.net, then go to "my accounts
4355 >> configure new device >> manual settings" to find the SyncML
4356 credentials.
4357
4358 It is now possible to compile database backends outside of
4359 SyncEvolution, install them and have SyncEvolution use them
4360 automatically like any other backend. The backend API has been
4361 enhanced considerably. For example, backend developers have
4362 access to a modular set of utility classes that can be mixed
4363 into a specific implementation. Backends can access the internal
4364 Synthesis representation directly and therefore no longer need
4365 their own vCard/vCalendar/iCalendar parser.
4366
4367 The sqlite demo backend can be enabled and compiled again with
4368 --enable-sqlite. It demonstrates how to map directly from the
4369 Synthesis field list to some internal format (an SQLite database
4370 schema in this case).
4371
4372 Other changes:
4373
4374 * Resend messages to cope with intermittent loss of network
4375   connectivity (Moblin Bugzilla #3427). See the new "ResendDuration"
4376   and "ResendDelay" configuration properties for details.
4377
4378 * SyncEvolution command line uses the GNOME keyring when
4379   the new --keyring option is given.
4380
4381 * The logging of added and updated items was enhanced. Events,
4382   tasks and memos are logged with a short description instead of
4383   just the local ID. The description for contacts was improved.
4384
4385 * Receiving photos from Mobical failed because Mobical
4386   does not quite follow the vCard 2.1 (Moblin Bugzilla #6668).
4387   Sending photos worked, but added a few bytes of garbage
4388   at the end of each photo (typically ignored when showing).
4389   Parser was made more tolerant by Synthesis and encoder bug
4390   was fixed.
4391
4392 * Task priorities used by Mobical and Evolution did not match:
4393   vCalendar 1.0 uses 1-3, iCalendar 2.0 uses 1-9 (MB #6664).
4394   SyncEvolution now translates between the two ranges, with
4395   some information getting lost when talking to a peer which
4396   only supports the smaller range.
4397
4398 * Importing work and home phone numbers from Google into desktop
4399   Evolution works better, because SyncEvolution now adds the "VOICE"
4400   flag expected by Evolution (MB#6501).
4401
4402 * SSL certificate checking with Google is enabled by default
4403   and enabled in Moblin, because libsoup in that distro has
4404   the necessary fix. Without that fix, all connection attempts
4405   fail. The binaries on syncevolution.org are compiled with
4406   --disable-ssl-certificate-check, so users who want the
4407   additional security must enable it.
4408
4409 * .rpms on syncevolution.org no longer specify a dependency
4410   on certain Perl features. This depencency was a problem on
4411   Mandriva. Unwanted hard dependencies on libecal in syncevolution.org
4412   binaries are avoided for real this time (MB#6552).
4413
4414 * Some sync-UI enhancements (describe sync services, avoid crash
4415   with very long input in some of the text boxes (MB#5219), set
4416   application icon, improved some strings).
4417
4418 * sync-UI: now disables sources which are not supported when
4419   setting up a configuration, like memos on Moblin (MB #6672).
4420   Previously the source was enabled, which prevented using
4421   using the configuration as-is on the command line.
4422
4423 * The sync UI allowed to enable calendar and task synchronization
4424   with Google although Google does not support that (MB#5871).
4425   In new installations this is prevented by clearing the URI
4426   for those data categories.
4427
4428 * Trying to remove a non-existent configuration via the command
4429   line now raises an error, to catch typos (MB #6673).
4430
4431 * Improved checks which logs in the logdir belong to the current
4432   server (MB#5215).
4433
4434 * Improved sanity checking of integer configuration parameters
4435   (MB#6500).
4436
4437 * Spelling fix: "aboring" => "aborting"
4438
4439
4440 Known issue:
4441
4442 * Mobical and Memotoo do not have a description in the GUI yet.
4443
4444 * ZYB.com is not supported because of a known anchor handling
4445   problem in the server (MB#2424).
4446
4447
4448 Upgrading from 0.9:
4449
4450 * nothing to do, upgrading and downgrading should work seamlessly
4451
4452
4453 SyncEvolution 0.9.1 beta 2 -> 0.9.1, 26.10.2009
4454 ===============================================
4455 Synthesis SyncML Engine version: see src/synthesis/ChangeLog
4456
4457 Minor changes:
4458
4459 * spelling fixes in NEWS file (--source-type => --source-property)
4460 * update to zh_CN
4461 * improved autotools compilation of libsynthesis
4462
4463
4464 SyncEvolution 0.9.1 beta 1 -> 0.9.1 beta 2, 19.10.2009
4465 ======================================================
4466 Synthesis SyncML Engine version: see src/synthesis/ChangeLog
4467
4468 Several fixes:
4469
4470 * Receiving photos from Mobical failed because Mobical
4471   does not quite follow the vCard 2.1 (Moblin Bugzilla #6668).
4472   Sending photos worked, but added a few bytes of garbage
4473   at the end of each photo (typically ignored when showing).
4474   Parser was made more tolerant by Synthesis and encoder bug
4475   was fixed.
4476
4477 * Task priorities used by Mobical and Evolution did not match:
4478   vCalendar 1.0 uses 1-3, iCalendar 2.0 uses 1-9 (MB #6664).
4479   SyncEvolution now translates between the two ranges, with
4480   some information getting lost when talking to a peer which
4481   only supports the smaller range.
4482
4483 * The workaround for detecting an endless stream of Alert 222
4484   messages (caused by misbehavior of certain servers when
4485   a specific message has to be resent) aborted certain
4486   valid (albeit somewhat pathologic) sync sessions. Improved
4487   the heuristic so that it still catches the real loop without
4488   aborting in that other case.
4489
4490 * sync-ui: now disables sources which are not supported when
4491   setting up a configuration, like memos on Moblin (MB #6672).
4492   Previously the source was enabled, which prevented using
4493   using the configuration as-is on the command line.
4494
4495 * .rpms on syncevolution.org no longer specify a dependency
4496   on certain Perl features. This depencency was a problem on
4497   Mandriva. Unwanted hard dependencies on libecal in syncevolution.org
4498   binaries are avoided for real this time (MB#6552).
4499
4500 * Trying to remove a non-existent configuration via the command
4501   line now raises an error, to catch typos (MB #6673).
4502
4503 * Message resend options: added sanity checks to catch negative
4504   values, clarified that duration is given in seconds, 0s resend
4505   interval disables resending (MB #6500).
4506
4507 * Spelling fix: "aboring" => "aborting"
4508
4509
4510 SyncEvolution 0.9 -> 0.9.1 beta 1, 06.10.2009
4511 =============================================
4512 Synthesis SyncML Engine version: see src/synthesis/ChangeLog
4513
4514 Mobical and Memotoo are now officially supported.
4515
4516 Memotoo uses vCard 2.1 with several Evolution specific extensions. It
4517 uses iCalendar 2.0, however, without actually supporting the advanced
4518 features of it. Times are converted to UTC and meeting information are
4519 lost.
4520
4521 Mobical uses vCard 2.1 and vCalendar 1.0 as data formats, with the
4522 result that many properties used in Evolution are not supported by the
4523 server.  In particular calendar support is very limited (known issues
4524 when events are in time zones different from the one selected locally
4525 and on the server, no support for meetings). For details see
4526 README.mobical.
4527
4528 *** Beware *** that the Mobical SyncML password is *not* the same as
4529 the one for their web site. Log into mobical.net, then go to "my accounts
4530 >> configure new device >> manual settings" to find the SyncML
4531 credentials.
4532
4533 It is now possible to compile database backends outside of
4534 SyncEvolution, install them and have SyncEvolution use them
4535 automatically like any other backend. The backend API has been
4536 enhanced considerably. For example, backend developers have
4537 access to a modular set of utility classes that can be mixed
4538 into a specific implementation. Backends can access the internal
4539 Synthesis representation directly and therefore no longer need
4540 their own vCard/vCalendar/iCalendar parser.
4541
4542 The sqlite demo backend can be enabled and compiled again with
4543 --enable-sqlite. It demonstrates how to map directly from the
4544 Synthesis field list to some internal format (an SQLite database
4545 schema in this case).
4546
4547 Other changes:
4548
4549 * Resend messages to cope with intermittent loss of network
4550   connectivity (Moblin Bugzilla #3427). See the new "ResendDuration"
4551   and "ResendDelay" configuration properties for details.
4552
4553 * The logging of added and updated items was enhanced. Events,
4554   tasks and memos are logged with a short description instead of
4555   just the local ID. The description for contacts was improved.
4556
4557 * The sync UI allowed to enable calendar and task synchronization
4558   with Google although Google does not support that (MB#5871).
4559   In new installations this is prevented by clearing the URI
4560   for those data categories.
4561
4562 * Importing work and home phone numbers from Google into desktop
4563   Evolution works better, because SyncEvolution now adds the "VOICE"
4564   flag expected by Evolution (MB#6501).
4565
4566 * SyncEvolution command line uses the GNOME keyring when
4567   the new --keyring option is given.
4568
4569 * SSL certificate checking with Google is enabled by default
4570   and enabled in Moblin, because libsoup in that distro has
4571   the necessary fix. Without that fix, all connection attempts
4572   fail. The binaries on syncevolution.org are compiled with
4573   --disable-ssl-certificate-check, so users who want the
4574   additional security must enable it.
4575
4576 * syncevolution.org binaries should be compatible with a wider
4577   range of Evolution releases again (MB#6552).
4578
4579 * Some sync UI enhancements (describe sync services, avoid crash
4580   with very long input in some of the text boxes (MB#5219), set
4581   application icon, improved some strings).
4582
4583 * Improved checks which logs in the logdir belong to the current
4584   server (MB#5215).
4585
4586 * Improved sanity checking of integer configuration parameters
4587   (MB#6500).
4588
4589 Known issue:
4590
4591 * Mobical and Memotoo do not have a description in the GUI yet.
4592
4593 * ZYB.com is not supported because of a known anchor handling
4594   problem in the server (MB#2424).
4595
4596
4597 SyncEvolution 0.8.1 -> 0.9, 12.08.2009
4598 --------------------------------------
4599 Synthesis SyncML Engine version: see src/synthesis/ChangeLog
4600
4601 This is a major new release, with first steps towards further improvements.
4602 From this release on, the Synthesis SyncML engine will be the
4603 underlying SyncML and data conversion engine.
4604
4605 A native GTK GUI is now included. The "sync-ui" program depends on a
4606 backend D-Bus service ("synevo-dbus-server") and several auxiliary
4607 files. Therefore, it only runs without hacks after installation in 
4608 /usr (possible with .deb, .rpm and binary .tar.gz archives, and
4609 with "sudo make install", after compiling from source). The
4610 normal command line tool still works without being installed.
4611
4612 In this release, the data handling model was changed from "all items
4613 are sent verbatim to the SyncML server" to "parse and convert". The
4614 argument for the former approach was that the SyncML server should be
4615 the only entity in the system which does data conversion. The previous
4616 releases already had to deviate from this approach to accommodate for
4617 minor client/server incompatibilities and for vCard 2.1 support, so the
4618 new approach just takes it one step further.
4619
4620 The main reason for going to full semantic conversion is vCalendar 1.0
4621 support. Support by servers for iCalendar 2.0, the only format
4622 supported by 0.8.1, is often still incomplete or even non-existent. By
4623 doing the conversion on the client side, SyncEvolution is now able to
4624 synchronize events and tasks with a wider variety of servers.
4625
4626 It is still true that properties not supported by a server cannot
4627 be synchronized to other devices, so using a server with full
4628 iCalendar 2.0 support is recommended. But in contrast to 0.8.1,
4629 information that can be stored only locally is no longer lost when
4630 receiving an incomplete update from the SyncML server, thanks to
4631 intelligent merging, provided by the Synthesis engine. This depends on
4632 an accurate description of the server's capabilities, which might not
4633 be provided by all of them. This still needs to be tested in more detail.
4634
4635 Interoperability with servers tested extensively in this release.
4636 The following servers are now supported:
4637
4638 * ScheduleWorld. There is very complete support for Evolution data. The
4639   only known issues are around resuming from an interrupted sync.
4640
4641 * Google contact sync.
4642
4643   Google follows the vCard 2.1 specification, and thus does not support
4644   some of the vCard 3.0 additions, nor some of the common extensions. As
4645   a result, several properties are not synchronized (nickname, birthday,
4646   spouse/manager, URLs, ...). Only one top-level organization seems to
4647   be supported. For details, see README.google.
4648
4649   Regarding Google's SyncML support, refresh-from-client and
4650   one-way-from-client sync modes are not supported. Deleting contacts
4651   moves them out of the main address without deleting them permanently. When
4652   adding such a contact again, the server discards the data sent by the
4653   client and recreates the contact with the data that it remembered.
4654
4655   Because SSL certificate checking for Google works only with libsoup
4656   if the platform has a patched libsoup
4657   (http://bugzilla.gnome.org/show_bug.cgi?id=589323) or libsoup >=
4658   2.28, certificate checking remains turned off by default for
4659   Google. If your platform has a suitable libsoup (like Moblin 2.0),
4660   then enable checking with:
4661
4662   syncevolution --configure \
4663                 --sync-property SSLVerifyServer=true \
4664                 --sync-property SSLVerifyHost=true \
4665                 google
4666
4667 * Funambol, with calendar and task support. Funambol supports iCalendar 2.0
4668   in the current server, so this is enabled in the configuration template.
4669   Not all iCalendar 2.0 features are supported by the server,
4670   most notably support for meetings (drops attendees), meeting
4671   invitations (drops UID), detached recurrences
4672   (drops RECURRENCE-ID). See README.funambol for details.
4673
4674   Interoperability with the Funambol server was improved by adding
4675   support for some vCard extensions (X-MANAGER/ASSISTANT/SPOUSE/ANNIVERSARY,
4676   #2418). Lost ACTION property has a work around (#2422).
4677
4678   To enable that support in an existing configuration so that it
4679   exchanges items in the more suitable iCalendar 2.0 format, use:
4680
4681   syncevolution --configure --source-property sync=two-way \
4682                 funambol calendar todo
4683   syncevolution --configure --source-property type='calendar:text/calendar!' \
4684                 funambol calendar
4685   syncevolution --configure --source-property type='todo:text/calendar!' \
4686                 funambol todo
4687
4688   Without the exclamation mark, format auto-negotiation would pick the
4689   less capable vCalendar 1.0 format because that is marked as preferred
4690   by the server.
4691
4692
4693 *** WARNING ***: After switching from a previous release to the
4694 current one, or vice versa, do a "syncevolution --sync
4695 refresh-from-server" or "--sync refresh-from-client" (depending on
4696 which side has the authoritative copy of the data) once, to get client
4697 and server into a consistent state. Not doing so can result in
4698 applying the same changes to the server multiple times, and thus
4699 duplicates.
4700
4701 Other changes in detail:
4702
4703 * vCalendar 1.0 is now supported.
4704
4705 * Both libcurl and libsoup can be selected at compile time as HTTP(S)
4706   transport mechanism.
4707
4708 * SF #2101015: Expect: 100-continue header results in 417 Error with proxy.
4709   Should no longer occur with the HTTP transports in this release.
4710
4711 * SF #1874805: Syncing with Funambol results in loosing all-day property.
4712   This now works thanks to the Synthesis data conversion rules.
4713
4714 * SF #2586600: Synchronisation with mobical.net fails in 0.8.1.
4715   Works now, but there are some known issues (Bugzilla #3009)
4716   and therefore mobical.net is not officially supported yet.
4717
4718 * SF #2542968: Separator for categories should not be escaped.
4719   Done correctly by the Synthesis vcard conversion.
4720
4721 * bug fix: Evolution notes with only a summary and no description were
4722   not sent correctly to the server. Instead of sending the summary,
4723   an empty text was sent. 
4724
4725 * CTRL-C no longer kills SyncEvolution right away. Instead it
4726   asks the server to suspend the session. If that takes too
4727   long, then pressing CTRL-C twice quickly will abort the sync
4728   without waiting for the server (Warning, this may lead to a
4729   slow sync in the next session).
4730
4731 * WBXML is enabled by default now, except for Funambol (#2415).
4732   Using WBXML reduces message sizes and increases parsing
4733   performance.
4734
4735 * New configuration templates can be added to
4736   /etc/default/applications/syncevolution. These templates may contain
4737   icons, which are used by the GUI (no icons shipped right now).
4738
4739 * Information about previous synchronization sessions is now stored in a
4740   machine-readable format and can be accessed using the new
4741   --print-sessions options. The output of this information is more
4742   complete and more nicely formatted.
4743
4744 * --status now shows not only data changes since the last sync, but also
4745   item changes (see README for the difference between the two).
4746
4747 * The new --restore option allows restoring local data to the state as
4748   it was before or after a sync. For this to work, "logdir" must be set
4749   (done by default for new configurations). The format of database dumps
4750   was changed to implement this feature. Instead of in a flat file,
4751   items are now saved as individual files in a directory. To get the
4752   previous format back (for example, to import as one .vcf or .ics file
4753   manually) concatenate these files.
4754
4755 * With â€“-remove, one can remove configurations. It leaves data files and
4756   the local databases untouched.
4757
4758
4759 Known issues:
4760
4761 * The GUI includes the number of locally deleted items during a
4762   refresh-from-server sync in the number of "received changes"
4763   (#5185), which is a bit misleading. This is a result of #3314,
4764   which introduced changes not "received" from the server.
4765
4766 * When a network error occurs and the client
4767   never notices that the connection to the server was lost, 
4768   it will hang forever, waiting for the server's reply (#3427).
4769
4770 * The file backend now works only for data formats understood
4771   by SyncEvolution and the Synthesis engine. Items are parsed
4772   when exchanging them among the backend, engine, and server,
4773   in contrast to 0.8.1, where item content was not touched
4774   locally (#5046).
4775
4776 * The ZYB.com server sends conflicting sync anchors, so
4777   most syncs don't work as expected (#2424).
4778
4779
4780 SyncEvolution 0.9 beta 3 hotfix -> 0.9 final, 12.08.2009
4781 --------------------------------------------------------
4782
4783 Because SSL certificate checking for Google only works with libsoup if
4784 the platform has a patched libsoup
4785 (http://bugzilla.gnome.org/show_bug.cgi?id=589323) or libsoup >= 2.28,
4786 certificate checking remains turned off by default for Google. If your
4787 platform has a suitable libsoup (like Moblin 2.0), then enable
4788 checking with:
4789
4790   syncevolution --configure \
4791                 --sync-property SSLVerifyServer=true \
4792                 --sync-property SSLVerifyHost=true \
4793                 google
4794
4795 Only minor changes:
4796 * updated translations
4797 * refresh-from-server syncs now report how many items were
4798   deleted locally at the start of the sync (Bugzilla #3314).
4799   The GUI includes the number of locally deleted items during a
4800   refresh-from-server sync in the number of "received changes",
4801   which is a bit misleading (#5185).
4802 * fixed build issue on Fedora 11/g++ 4.4 (Bugzilla #5061)
4803 * some build and test improvements
4804 * proper fix for D-Bus error functions (#4919)
4805 * improve sync-ui startup time by avoiding an unnecessary
4806   copying of the sync config into itself (#5021)
4807 * adapted tooltip style (used for SyncML server links) to new
4808   Moblin theme, they weren't visible earlier (#5017)
4809 * notify zone selector in Moblin 2.0 about sync-ui startup (#4752)
4810 * sync-ui: minor layout change for fatal error situation
4811
4812
4813 SyncEvolution 0.9 beta 3 -> 0.9 beta 3 hotfix, 23.07.2009
4814 ---------------------------------------------------------
4815
4816 Found additional Google limitation: the server drops photos if they
4817 exceed a certain size. The limit is somewhere between 40KB (okay) and
4818 80KB (dropped).
4819
4820 The last-minute workaround for Google/libsoup/gnutls (using http)
4821 didn't work because apparently Google only supports SyncML over https
4822 (Bugzilla #4551).  Now the default configuration template uses https
4823 with all certificate checking disabled. A patch for libsoup was
4824 submitted to upstream.
4825
4826 Some error messages by the "syncevolution" command line tool were not
4827 printed (#4676). The root cause was the intentional interception of
4828 stderr to hide the noise printed by various system libraries
4829 (#1333). Unfortunately remarks about incorrect command line options
4830 were among swallowed messages. No good workaround available short of
4831 disabling the redirection with SYNCEVOLUTION_DEBUG=1, so let's release
4832 an update...
4833
4834 Other changes:
4835 * updated translations
4836
4837
4838 SyncEvolution 0.9 beta 2 -> 0.9 beta 3, 21.07.2009
4839 --------------------------------------------------
4840 Synthesis SyncML Engine version: see src/synthesis/ChangeLog
4841
4842 Enabled calendar and task synchronization for myFunambol.com.
4843 Not all iCalendar 2.0 features are supported by the server,
4844 most notably support for meetings (drops attendees), meeting
4845 invitations (drops UID), detached recurrences
4846 (drops RECURRENCE-ID). See README.funambol for details.
4847
4848 Interoperability with the Funambol server was improved by adding
4849 support for some vCard extensions (X-MANAGER/ASSISTANT/SPOUSE/ANNIVERSARY,
4850 Bugzilla #2418). Lost ACTION property is worked around (#2422).
4851
4852 Synchronization with Google Contacts was enabled and tested.
4853 A configuration template for that server is now provided. Google
4854 follows the vCard 2.1 specification and thus does not support some
4855 of the vCard 3.0 additions, nor some of the common extensions. As
4856 a result, several properties are not synchronized (nickname, birthday,
4857 spouse/manager, URLs, ...). Only one top-level organization seems to
4858 be supported. For details, see README.google.
4859
4860 Regarding Google's SyncML support, refresh-from-client and
4861 one-way-from-client sync modes are not supported. Deleting contacts
4862 moves them out of the main address without deleting them permanently. When
4863 adding such a contact again, the server discards the data sent by the
4864 client and recreates the contact with the data that it remembered.
4865
4866 SSL certificate checking with libsoup (the default transport) is now
4867 supported (#2431). However, libsoup/gnutls are very strict about SSL
4868 certificate checking and reject version 1 certificates, like the one
4869 used by Verisign for Google (#4551). At the moment the only solution
4870 is to fall back to plain http in the Google configuration template.
4871
4872 CTRL-C no longer kills SyncEvolution right away. Instead it
4873 asks the server to suspend the session. If that takes too
4874 long, then pressing CTRL-C twice quickly will abort the sync
4875 without waiting for the server (warning, this may lead to a
4876 slow sync in the next session).
4877
4878 WBXML is enabled by default now, except for Funambol (#2415).
4879 Using WBXML reduces message sizes and increases parsing
4880 performance. It was not enabled initially in the 0.9 releases in order
4881 to test this new feature more thoroughly. Old configs don't have an
4882 explicit enableWBXML setting and therefore will automatically use the
4883 new default.
4884
4885 Various bug fixes and improvements:
4886
4887 * only show servers in GUI which are tested and supported (Bugzilla #3336)
4888 * a single log file is written in .html format (#3474)
4889 * added several translations of the GUI
4890 * lots of testing improvements, build binary packages again
4891
4892 UPGRADING
4893
4894 When enabling calendar and todo synchronization with Funambol
4895 in an existing configuration, set the type so that iCalendar 2.0 is used:
4896   syncevolution --configure --source-property sync=two-way funambol calendar todo
4897   syncevolution --configure --source-property type='calendar:text/calendar!' funambol calendar
4898   syncevolution --configure --source-property type='todo:text/calendar!' funambol todo
4899
4900 When creating a configuration anew, this is not necessary because the
4901 configuration template contains those types.
4902
4903
4904 SyncEvolution 0.9 beta 1 -> 0.9 beta 2, 12.06.2009
4905 --------------------------------------------------
4906 Synthesis SyncML Engine version: see src/synthesis/ChangeLog
4907
4908 Major new feature: a GTK GUI! The "sync-ui" program depends on a
4909 backend D-Bus service ("synevo-dbus-server") and several auxiliary
4910 files. Therefore it only runs without hacks after "sudo make install",
4911 in contrast to the normal command line which can be invoked directly.
4912
4913 New configuration templates can be added to
4914 /etc/default/applications/syncevolution. These templates may contain
4915 icons which are used by the GUI (no icons shipped right now).
4916
4917 Information about previous synchronization sessions is now stored in a
4918 machine-readable format and can be accessed via the new
4919 --print-sessions options. The output of this information is more
4920 complete and nicer formatted.
4921
4922 --status now not only shows data changes since the last sync, but also
4923 the item changes (see README for the difference between the two).
4924
4925 The new --restore option allows restoring local data to the state as
4926 it was before or after a sync. For this to work, "logdir" must be set
4927 (done by default for new configurations). The format of database dumps
4928 was changed to implement this feature: instead of in a flat file,
4929 items are now saved as individual files in a directory. To get the
4930 previous format back (for example, to import as one .vcf or .ics file
4931 manually) concatenate these files.
4932
4933 With --remove one can remove configurations. It leaves data files and
4934 the local databases untouched.
4935
4936 Various bug fixes and improvements:
4937
4938 * compiles and works again on Debian Etch if Boost 1.35 is installed
4939   from www.backports.org (without GUI, see Bugzilla #3358)
4940
4941 * uses XDG_CACHE_HOME (= ~/.cache) for logs and database dumps to
4942   avoid interfering with .desktop search in XDG_DATA_HOME; the
4943   directory there is automatically moved when running syncevolution
4944   (Bugzilla #3309)
4945
4946 * re-enabled certain config options (clientAuthType, maxMsgSize, maxObjSize);
4947   normally it shouldn't be necessary to modify those (Bugzilla #3242, #2784)
4948
4949 * fixed error handling of unexpected server reply in libsoup transport
4950   (Bugzilla #3041)
4951
4952 * message logging is enabled at logLevel 3 (XML translation) and 4 (also
4953   original XML or WBXML message)
4954
4955 * GTK GUI fixes since initial Moblin 2.0 beta: only start it once if
4956   libunique is available (Bugzilla #3154), wrap text in change sync service"
4957   button (Bugzilla #2064), sort sources alphabetically in UI (Bugzilla #2070)
4958
4959
4960 SyncEvolution 0.8.1 -> 0.9 beta 1, 13.05.2009
4961 ---------------------------------------------
4962 Synthesis SyncML Engine version: see src/synthesis/ChangeLog
4963
4964 A major new release and the first step towards further improvements:
4965 from this release onwards, the Synthesis SyncML engine is used as the
4966 underlying SyncML and data conversion engine. The focus of this first
4967 beta was to reach the same level of functionality and stability as in
4968 0.8.1. Therefore this beta does not yet bring much new features; this
4969 will be the focus of further beta releases until finally 0.9 will be a
4970 full replacement for 0.8.1.
4971
4972 This release also switches from an "all items are sent verbatim to the
4973 SyncML server" to a "parse and convert" data handling model. The
4974 argument for the former approach was that the SyncML server should be
4975 the only entity in the system which does data conversion. The previous
4976 releases already had to deviate from this approach to accommodate for
4977 minor client/server incompatibilities and for vCard 2.1 support.
4978
4979 The main reason for going to full semantic conversion is vCalendar 1.0
4980 support. Support by servers for iCalendar 2.0, the only format
4981 supported by 0.8.1, is often still incomplete or even non-existent. By
4982 doing the conversion on the client side, SyncEvolution is now able to
4983 synchronize events and tasks with a wider variety of servers.
4984
4985 It is still true that properties not supported by a server cannot
4986 be synchronized to other devices, so using a server with full
4987 iCalendar 2.0 support is recommended. But in contrast to 0.8.1,
4988 information that can only be stored locally is no longer lost when
4989 receiving an incomplete update from the SyncML server thanks to
4990 intelligent merging provided by the Synthesis engine. This depends on
4991 an accurate description of the server's capabilities, which might not
4992 be provided by all of them - still needs to be tested in more detail.
4993
4994 *** WARNING ***: after switching from a previous release to the
4995 current one or vice versa, do a "syncevolution --sync
4996 refresh-from-server" or "--sync refresh-from-client" (depending on
4997 which side has the authoritative copy of the data) once to get client
4998 and server into a consistent state. Not doing so can result in
4999 applying the same changes to the server multiple times and thus
5000 duplicates.
5001
5002 Changes in detail:
5003
5004 * vCalendar 1.0 is now supported. Because this hasn't been tested that
5005   much yet, events and tasks are still disabled in the Funambol default
5006   configuration (SF #2635973).
5007
5008 * Both libcurl and libsoup can be selected at compile time as HTTP(S)
5009   transport mechanism.
5010
5011 * SF #2101015: Expect: 100-continue header results in 417 Error with proxy
5012   Should no longer occur with the HTTP transports in this release.
5013
5014 * SF #1874805: Syncing with Funambol results in loosing all-day property
5015   This now works thanks to the Synthesis data conversion rules.
5016
5017 * SF #2586600: Synchronisation with mobical.net fails
5018   Should work now because of the different SyncML implementation (untested).
5019
5020 * SF #2542968: separator for categories should not be escaped
5021   Done correctly by the Synthesis vcard conversion.
5022
5023 * bug fix: Evolution notes with only a summary and no description were
5024   not sent correctly to the server: an empty text was sent instead of
5025   sending the summary
5026
5027 Known shortcomings in this release which will be fixed before the
5028 final 0.9:
5029
5030 * Verbatim file backups of items on the SyncML server are currently
5031   not possible: the SyncEvolution "file" backend still exists, but
5032   all items are converted by the Synthesis engine and therefore must
5033   be in a format supported by the engine.
5034
5035 * HTTPS can be used with libsoup, but certificate checking is always
5036   disabled. Need to find a portable way to determine where the
5037   certificate file is on various systems.
5038
5039 * Log file handling is not yet unified: the traditional client.log
5040   contains only high-level SyncEvolution log entries. Low-level
5041   SyncML and engine log entries are in sysync_*.html files.
5042
5043 * stdout and stderr messages from system libraries are visible on the
5044   console. 0.8.1 used to redirect those into the client.log to hide
5045   this noise; this will be added again. In the meantime, ignore
5046   messages like "Deadlock potential - avoiding evil bug!". This is
5047   liborbit telling us that it is (hopefully successfully) handling
5048   something nasty.
5049
5050
5051 SyncEvolution 0.8.1 -> 0.8.1a, 15.12.2008
5052 -----------------------------------------
5053 C++ client library: 7.0 plus some patches, see github
5054 repository referenced in configure script.
5055
5056 A minor bug fix release, updating only necessary on Mac OS X.
5057
5058 * #2307976 "Trace/BPT trap - sync failure": occurs randomly in
5059   Mac OS X specific transport layer of the Funambol C++ client
5060   library. Avoided in 0.8.1a by using libcurl as transport,
5061   as in 0.7.
5062
5063
5064 SyncEvolution 0.8 -> 0.8.1, 11.10.2008
5065 --------------------------------------
5066 C++ client library: 7.0 plus some patches, see github
5067 repository referenced in configure script.
5068
5069 A minor bug fix release, updating not really necessary.
5070 The binary packages for Evolution are built now so that
5071 one package works for all compatible Evolution releases,
5072 including the new Evolution 2.24.
5073
5074 * Evolution calendar: regression in 0.8: one-way sync of virtual
5075   birthday calendar (#2095433). "refresh-from-client" works again
5076   for the birthday calendar. Other modes are not supported.
5077   In contrast to previous releases SyncEvolution now does some
5078   sanity checks that the sync mode is right.
5079 * Mac OS X: removing old logdirs failed (#2087389). Fixed.
5080 * SyncML client library: "Expect: 100-continue" header
5081   resulted in 417 error with certain proxies (#2101015).
5082   Now this header is always disabled; it doesn't make
5083   much sense with SyncML anyway.
5084 * The development of the Funambol C++ client library is now
5085   tracked in a git repository on github.com. Modifications
5086   and tags for SyncEvolution are checked in there. The
5087   configure script checks out the right sources from there
5088   automatically; can be controlled via --with-funambol-src
5089   parameter.
5090 * Evolution desktop: the version of the used Evolution libraries
5091   is included in the "--version" output and log files.
5092 * Cleaned up README. Kudos to Martin Wetterstedt for pointing
5093   out mistakes in the README and the web site.
5094
5095
5096 SyncEvolution 0.7 -> 0.8, 29.08.2008
5097 ------------------------------------
5098 C++ client library: 7.0 plus compatibility patch for Synthesis
5099
5100 Updating user configuration: this version introduces a new, simplified
5101 configuration layout. Old configurations still work. They can be
5102 converted to the new format via a new "--migrate" command line option.
5103
5104 *** WARNING ***: this version uses a different change tracking for Mac
5105 OS X address book, Evolution calendars, task lists and memos.  After
5106 switching from a previous release to the current one or vice versa, do
5107 a "syncevolution --sync refresh-from-server" once to reset the change
5108 tracking. Not doing so can result in applying the same changes to the
5109 server multiple times and thus duplicates.
5110
5111 * New configuration file layout: following the freedesktop.org
5112   recommendation, new configurations are stored in
5113   $XDG_CONFIG_HOME/syncevolution or $HOME/.config/syncevolution if
5114   XDG_CONFIG_HOME is not set. The old layout under
5115   $HOME/.sync4j/evolution is still supported.
5116
5117 * New command line options: new configurations can be created by
5118   syncevolution itself (--configure), including setting of all
5119   configuration properties (--sync-property, --source-property).
5120   The configuration can dumped to stdout (--print-config), with or
5121   without comments explaining each property (--quiet). See the
5122   README for details.
5123
5124 * The "evolutionsource" source property no longer has to be configured.
5125   If left blank, the default client database will be synchronized.
5126
5127 * Selecting which kind of data is to be synchronized under a specific
5128   source name is a lot easier now and the same on all supported
5129   platforms: the SyncEvolution backends can be selected via aliases
5130   (e.g. "contacts") and the format is specified via an optional
5131   MIME type (e.g. "contacts:text/x-vcard"). In the unlikely situation
5132   that multiple backends are active which can synchronize the same
5133   kind of data, then the right one can be selected by the unique
5134   name of the backend (e.g. "Evolution Address Book").
5135
5136 * New configurations automatically get a random client ID string.
5137   Setting it manually is still possible, but no longer necessary.
5138   Disabling unavailable data sources is also done automatically.
5139
5140   SyncEvolution checks that the backend is available and there is
5141   at least one database (the first one will be synchronized unless
5142   explicitly changed). If these checks fail and the sync source was
5143   explicitly requested by the user by listing it after the server
5144   name, then an error is printed and no configuration is written.
5145   If the user wants the default setup, then the source is silently
5146   disabled.
5147
5148 * All passwords can be read from stdin at runtime or an environment
5149   variable (see "--sync-property password=?" or README for details).
5150   Both avoids the less secure storing of plain text passwords in the
5151   configuration files (SF #1832458).
5152
5153 * Detached recurrences: meeting series where some occurrences were
5154   modified are now supported. Previously only the main event was
5155   synchronized. All exceptions got lost when copying back from the
5156   server. Requires a SyncML server which supports this. ScheduleWorld
5157   was extended to do that.
5158
5159 * Fixed segfaults caused by logging certain data. The reason was an 
5160   API change in the client library's logging calls which the older
5161   SyncEvolution code hadn't been adapted to. Did not normally occur,
5162   but might have been the reason for SF #1830149 (unconfirmed).
5163
5164 * Time zone support: the time zones of incoming events are mapped
5165   to native time zone definitions whenever possible. Currently
5166   this works if the TZID follows the Olson naming scheme with a
5167   location at the end. Matching the time zone has the advantage of
5168   being able to update the time zone definition without having to
5169   recreate the event. If matching fails and the VTIMEZONE definition
5170   differs from one already imported earlier, then SyncEvolution works
5171   arounds limitation in Evolution by renaming the time zone.
5172   Previously the new event used the old and most likely out-dated
5173   time zone definition.
5174
5175   ***WARNING***: Evolution itself does not do either of these steps
5176   itself yet, thus importing meeting invitations via Evolution still
5177   fails in some cases. The code implementing the time zone handling
5178   described above was written with inclusion into Evolution itself in
5179   mind; a discussion with the Evolution developers about that is in
5180   progress.
5181
5182 * On Maemo/Nokia Internet Tablets, calendar synchronization now
5183   works because the new calendar change tracking no longer depends
5184   on some of the backend calls which used to fail (SF #1734977).
5185
5186 * Added SSL configuration options: certificate checking can be
5187   relaxed or disabled completely (SF #1852647).
5188
5189 * Added a new file backend: stores each SyncML item as a separate file
5190   in a directory.  The directory has to be specified via the database
5191   name, using [file://]<path> as format. The file:// prefix is
5192   optional, but the directory is only created if it is used.
5193
5194   Change tracking is done via the file systems modification time
5195   stamp: editing a file treats it as modified and then sends it to the
5196   server in the next sync. Removing and adding files also works.
5197
5198   The local unique identifier for each item is its name in the
5199   directory. New files are created using a running count which
5200   initialized based on the initial content of the directory to
5201   "highest existing number + 1" and incremented to avoid collisions.
5202  
5203   Although this sync source itself does not care about the content of
5204   each item/file, the server needs to know what each item sent to it
5205   contains and what items the source is able to receive. Therefore
5206   the "type" property for this source must contain a data format
5207   specified, including a version for it. Here are some examples:
5208   - type=file:text/vcard:3.0
5209   - type=file:text/plain:1.0
5210
5211 * Code restructuring: it is now possible to add new backends and thus
5212   write SyncML clients for other kinds of data without touching any
5213   line of code in SyncEvolution itself. All the required interfaces
5214   are documented inside SyncEvolution itself. A HTML documentation can
5215   be built via the new "make doc" target (requires Doxygen and dot).
5216
5217   The SyncEvolution framework itself never depended on GNOME or
5218   Evolution, only the Evolution data sources did. If you want
5219   support for other ways of storing your data, consider writing
5220   a new data source - it is really easy. See EvolutionSyncSource
5221   or TrackingSyncSource for details.
5222
5223 * Messages are printed to the screen immediately. More readable
5224   log file format.
5225
5226 * Maemo: the useless ''list: unable to access calendars:
5227   failure' error message is avoided. It was triggered by not having
5228   memo support in Evolution Data Server. Cleaned up the code so that
5229   it properly distinguishes between 'calendar', 'memo list' and
5230   'task list'.
5231
5232 * added server template for MemoToo; note that the server has not been
5233   tested
5234
5235 * added synchronization of Evolution memo summary
5236
5237   Most devices only synchronize plain text and do not have a
5238   separate summary field. Such an extra summary field was added to
5239   Evolution after memo support was initially implemented in
5240   SyncEvolution, therefore SyncEvolution did not transmit that
5241   field.
5242   
5243   Added transmitting the summary by inserting it as first line of
5244   the plain text blob *if* it is not already identical with the
5245   first line. When receiving a memo, the summary is set from the
5246   first line *without* removing the first line because the first
5247   line might have been used as a normal part of the memo.
5248
5249 * Various other minor changes, fixes and lots of code cleanups.
5250
5251 * license cleanup: SyncEvolution is GPL v2 or later
5252
5253
5254 SyncEvolution 0.8 beta 2 -> 0.8 final, 29.08.2008
5255 -------------------------------------------------
5256 C++ client library: 7.0 plus compatibility patch for Synthesis
5257
5258 * license cleanup: SyncEvolution is GPL v2 or later
5259
5260
5261 SyncEvolution 0.8 beta 2 -> 0.8 beta 3, 17.08.2008
5262 --------------------------------------------------
5263 C++ client library: 7.0 plus compatibility patch for Synthesis
5264
5265 * Another revision of updating events in Evolution calendars:
5266   the method introduced in 0.8 beta 1 for dealing with
5267   detached recurrences did not work with the Evolution Exchange
5268   Connector. Now both Exchange and local calendars pass the unit
5269   tests again.
5270
5271 * minor code cleanup (testing, writing additional backends)
5272
5273
5274 SyncEvolution 0.8 beta 1 -> 0,8 beta 2, 03.08.2008
5275 --------------------------------------------------
5276 C++ client library: 7.0 plus compatibility patch for Synthesis
5277
5278 * To prevent accidental sync runs when a configuration change
5279   was intented, a new --run switch must be used when configuration
5280   properties are given on the command line. When neither --run
5281   nor --configure are specified, SyncEvolution prints an
5282   error and refuses to do anything.
5283
5284 * Improved documentation for command line, in particular the synopsis.
5285
5286 * Added a new file backend: stores each SyncML item as a separate file
5287   in a directory.  The directory has to be specified via the database
5288   name, using [file://]<path> as format. The file:// prefix is
5289   optional, but the directory is only created if it is used.
5290
5291   Change tracking is done via the file systems modification time
5292   stamp: editing a file treats it as modified and then sends it to the
5293   server in the next sync. Removing and adding files also works.
5294
5295   The local unique identifier for each item is its name in the
5296   directory. New files are created using a running count which
5297   initialized based on the initial content of the directory to
5298   "highest existing number + 1" and incremented to avoid collisions.
5299  
5300   Although this sync source itself does not care about the content of
5301   each item/file, the server needs to know what each item sent to it
5302   contains and what items the source is able to receive. Therefore
5303   the "type" property for this source must contain a data format
5304   specified, including a version for it. Here are some examples:
5305   - type=file:text/vcard:3.0
5306   - type=file:text/plain:1.0
5307
5308 * Code restructuring: it is now possible to add new backends and thus
5309   write SyncML clients for other kinds of data without touching any
5310   line of code in SyncEvolution itself. All the required interfaces
5311   are documented inside SyncEvolution itself. A HTML documentation can
5312   be built via the new "make doc" target (requires Doxygen and dot).
5313
5314
5315 SyncEvolution 0.8 alpha 1 -> 0.8 beta 1, 12.07.2008
5316 ---------------------------------------------------
5317 C++ client library: the frozen 7.0 code, but before the release
5318
5319 * Added support for detached recurrences (aka modified instances of
5320   a recurring event). Requires a SyncML server which supports this.
5321   ScheduleWorld was extended to do that.
5322
5323 * Fixed segfaults caused by logging certain data. The reason was an 
5324   API change in the client library's logging calls which the older
5325   SyncEvolution code hadn't been adapted to. Did not normally occur,
5326   but might have been the reason for SF #1830149 (unconfirmed).
5327
5328 * when creating a config for the first time, only enable sync sources
5329   which can be synchronized (SF #1991286)
5330
5331   The check for that was completely missing. Now SyncEvolution
5332   checks that the backend is available and there is at least one
5333   database (the first one will be synchronized unless explicitly
5334   changed). If these checks fail and the sync source was explicitly
5335   requested by the user by listing it after the server name, then
5336   an error is printed and no configuration is written. If the user
5337   wants the default setup, then the source is silently disabled.
5338
5339 * Fixed incorrect properties in some of the new server templates
5340   (ScheduleWorld syncURL + calender URI, Funambol syncURL, ScheduleWorld
5341    addressbook type)
5342
5343 * Device IDs must start with the "sc-pim-" prefix, otherwise myFUNAMBOL
5344   may treat different devices as the single phone that myFUNAMBOL
5345   supports, leading to unwanted slow syncs.
5346
5347 * Maemo package is build again so that backends are loaded dynamically:
5348   installing Dates application is as it was with the 0.7 release
5349   (SF #1993109). The useless ''list: unable to access calendars:
5350   failure' error message is avoided. It was triggered by not having
5351   memo support in Evolution Data Server. Cleaned up the code so that
5352   it properly distinguishes between 'calendar', 'memo list' and
5353   'task list'.
5354
5355 * added server template for MemoToo; note that the server has not been
5356   tested
5357
5358 * added synchronization of Evolution memo summary
5359
5360   Most devices only synchronize plain text and do not have a
5361   separate summary field. Such an extra summary field was added to
5362   Evolution after memo support was initially implemented in
5363   SyncEvolution, therefore SyncEvolution did not transmit that
5364   field.
5365   
5366   Added transmitting the summary by inserting it as first line of
5367   the plain text blob *if* it is not already identical with the
5368   first line. When receiving a memo, the summary is set from the
5369   first line *without* removing the first line because the first
5370   line might have been used as a normal part of the memo.
5371
5372 * removed --properties option: it wasn't implemented yet and won't be in 0.8
5373
5374 * fixed regression in alpha 1: setting sync mode during status query
5375   or sync affected *all* sources, even the disabled ones. Now it only
5376   affects the enabled ones, as intended. To enable disabled sync sources,
5377   list them after the server name.
5378
5379 *** WARNING ***: this version uses a different change tracking for
5380 for Mac OS X AddressBook. After switching from a previous release to the current
5381 one or vice versa, do a "syncevolution --sync refresh-from-server"
5382 once to reset the change tracking. Not doing so can result in applying
5383 the same changes to the server multiple times and thus duplicates.
5384
5385 A similar change was necessary in 0.8 alpha 1 for Evolution calendar,
5386 tasks, and memos. When switching from a version >= 0.8 alpha 1 to an
5387 older version or vice versa also refresh the local databases.
5388
5389 0.8 alpha 1 did not create correct configurations. When you want to continue
5390 using such a configuration, make sure that in addition to the obviously
5391 wrong syncURLs also the less obvious ScheduleWorld config mistakes are fixed:
5392 * calendar: uri=cal2
5393 * addressbook: type=addressbook:text/vcard
5394 * deviceId must start with "sc-pim-" if you synchronize with myFUNAMBOL,
5395   otherwise there may be unwanted slow syncs when multiple devices with
5396   a different deviceId connect. Note that changing the deviceId causes
5397   a slow sync, so you should get client and server in sync before changing
5398   the value, change it, then do a "--sync refresh-from-server".
5399
5400
5401 SyncEvolution 0.7 -> 0.8 alpha 1, 19.04.2008
5402 --------------------------------------------
5403 C++ client library: a snapshot of the development version
5404
5405 Updating user configuration: this version introduces a new, simplified
5406 configuration layout. Old configurations still work. They can be
5407 converted to the new format via a new "--migrate" command line option.
5408
5409 *** WARNING ***: this version uses a different change tracking for
5410 Evolution calendars, task lists and memos. After switching from a previous
5411 release to the current one or vice versa, do a "syncevolution --sync
5412 refresh-from-server" once to reset the change tracking. Not doing so
5413 can result in applying the same changes to the server multiple times
5414 and thus duplicates.
5415
5416 * New configuration file layout: following the freedesktop.org
5417   recommendation, new configurations are stored in
5418   $XDG_CONFIG_HOME/syncevolution or $HOME/.config/syncevolution if
5419   XDG_CONFIG_HOME is not set. The old layout under
5420   $HOME/.sync4j/evolution is still supported.
5421
5422 * New command line options: new configurations can be created by
5423   syncevolution itself (--configure), including setting of all
5424   configuration properties (--sync-property, --source-property).
5425   The configuration can dumped to stdout (--print-config), with or
5426   without comments explaining each property (--quiet). See the
5427   README for details.
5428
5429 * The "evolutionsource" source property no longer has to be configured.
5430   If left blank, the default client database will be synchronized.
5431
5432 * Selecting which kind of data is to be synchronized under a specific
5433   source name is a lot easier now and the same on all supported
5434   platforms: the SyncEvolution backends can be selected via aliases
5435   (e.g. "contacts") and the format is specified via an optional
5436   MIME type (e.g. "contacts:text/x-vcard"). In the unlikely situation
5437   that multiple backends are active which can synchronize the same
5438   kind of data, then the right one can be selected by the unique
5439   name of the backend (e.g. "Evolution Address Book").
5440
5441 * New configurations automatically get a random client ID string.
5442   Setting it manually is still possible, but no longer necessary.
5443
5444 * All passwords can be read from stdin at runtime or an environment
5445   variable (see "--sync-property password=?" or README for details).
5446   Both avoids the less secure storing of plain text passwords in the
5447   configuration files (SF #1832458).
5448
5449 * Detached recurrences: meeting series where some occurrences were
5450   modified are now supported. Previously only the main event was
5451   synchronized. All exceptions got lost when copying back from the
5452   server. ***WARNING***: such events are accepted by ScheduleWorld,
5453   but not propagated to other clients. Under investigation.
5454
5455 * Time zone support: the time zones of incoming events are mapped
5456   to native time zone definitions whenever possible. Currently
5457   this works if the TZID follows the Olson naming scheme with a
5458   location at the end. Matching the time zone has the advantage of
5459   being able to update the time zone definition without having to
5460   recreate the event. If matching fails and the VTIMEZONE definition
5461   differs from one already imported earlier, then SyncEvolution works
5462   arounds limitation in Evolution by renaming the time zone.
5463   Previously the new event used the old and most likely out-dated
5464   time zone definition.
5465
5466   ***WARNING***: Evolution itself does not do either of these steps
5467   itself yet, thus importing meeting invitations via Evolution still
5468   fails in some cases. The code implementing the time zone handling
5469   described above was written with inclusion into Evolution itself in
5470   mind; a discussion with the Evolution developers about that is in
5471   progress.
5472
5473 * On Maemo/Nokia Internet Tablets, calendar synchronization now
5474   works because the new calendar change tracking no longer depends
5475   on some of the backend calls which used to fail (SF #1734977).
5476
5477 * Added SSL configuration options: certificate checking can be
5478   relaxed or disabled completely (SF #1852647).
5479
5480 * Adding support for new local data sources is easier now. The
5481   SyncEvolution frame work itself never depended on GNOME or
5482   Evolution, only the Evolution data sources did. If you want
5483   support for other ways of storing your data, consider writing
5484   a new data source - it is really easy. See EvolutionSyncSource
5485   or TrackingSyncSource for details.
5486
5487 * Messages are printed to the screen immediately. More readable
5488   log file format.
5489
5490  * Various other minor changes and fixes.
5491
5492
5493 SyncEvolution 0.6 -> 0.7, 17.12.2007
5494 ------------------------------------
5495 C++ client library: r_6_5_3_1
5496
5497 Updating user configuration: no relevant changes in this release. For those
5498 who haven't done so already, enabling large object support is recommended
5499 (see syncml/config.txt sample configs).
5500
5501 * added port for iPhone and Mac OS X Address Book
5502
5503 * fixed Nokia packaging problem which prevented installation
5504   via the package manager unless it was in "red pill" mode
5505   (SF #1781652)
5506
5507 * sync with eGroupware - lost or messed up telephones: SyncEvolution
5508   incorrectly added TYPE=OTHER to phone numbers sent with e.g.
5509   CELL instead of TYPE=CELL (SF #1796086). Another patch was
5510   required for eGroupware itself to correctly map phone numbers
5511   as sent by SyncEvolution, see Compatibility web page.
5512
5513 * added .deb packages
5514
5515 * adapted calendar event insert/update to Evolution 2.12: the UID needs to be
5516   restored, otherwise the Evolution backend crashes (GNOME issue #488881)
5517
5518 * new feature: if the previous log directory is still available,
5519   then local changes made since last sync can be queried
5520   before starting a sync (new option --status) and will be
5521   printed directly before a sync. Setting the "logdir" option
5522   will automatically keep the most recent logs and database
5523   dumps around.
5524
5525 * added command line options:
5526   --sync|-s <mode>
5527     Temporarily synchronize the active sources in that mode. Useful
5528     for a 'refresh-from-server' or 'refresh-from-client' sync which
5529     clears all data at one end and copies all items from the other.
5530
5531   --status|-t
5532     The changes made to local data since the last synchronization are
5533     shown without starting a new one. This can be used to see in advance
5534     whether the local data needs to be synchronized with the server.
5535
5536   --quiet|-q
5537     Suppresses most of the normal output during a synchronization. The
5538     log file still contains all the information.
5539
5540   --help|-h
5541     Prints usage information.
5542
5543   --version
5544     Prints the SyncEvolution version.
5545
5546 * default configurations now reference the normal Evolution databases
5547   ("Personal") thus requiring less changes to use. The account information
5548   is now clearly marked as placeholder which needs to be entered.
5549
5550 * bugfix: vCard 3.0 with mixed case were not converted properly to vCard 2.1
5551   by SyncEvolution (must convert to upper case because vCard 2.1 only allows
5552   that), leading to problems with mapping phone numbers in the Funambol server.
5553   Diagnosed and reported by Paul McDermott, thanks a lot!
5554
5555 * support receiving plain text notes with \n and \r\n line breaks;
5556   always send with \r\n
5557
5558 * added explicit error message when syncevolution is invoked
5559   with incorrect names in the list of sources to synchronize:
5560   previously it silently ignored unknown names
5561
5562 * improved output: less verbose ("extracting" items is now
5563   logged at debug level and thus not normally shown) and more
5564   informative printing of changes (table summarizes number of
5565   changes on client and server, heading for comparison changed
5566   to make it clear that it shows changes on the client)
5567
5568 * SyncCap is not generated unless syncModes are configured: added
5569   a comment to example config (SF #1764123)
5570
5571 * improved error handling: catch errors during post-processing and
5572   continue
5573
5574
5575 SyncEvolution 0.7-pre2 -> 0.7, 17.12.2007
5576 -----------------------------------------
5577 C++ client library: r_6_5_3_1
5578
5579 * bugfix: vCard 3.0 with mixed case were not converted properly to vCard 2.1
5580   by SyncEvolution (must convert to upper case because vCard 2.1 only allows
5581   that), leading to problems with mapping phone numbers in the Funambol server.
5582   Diagnosed and reported by Paul McDermott, thanks a lot!
5583
5584 * support receiving plain text notes with \n and \r\n line breaks;
5585   always send with \r\n
5586
5587 * added explicit error message when syncevolution is invoked
5588   with incorrect names in the list of sources to synchronize:
5589   previously it silently ignored unknown names
5590
5591 * added stack dumping in case of premature abort;
5592   removed workaround for lost connection to Evolution Dataserver
5593   again because the workaround itself caused random segfaults inside
5594   glib
5595
5596
5597 SyncEvolution 0.7-pre1 -> 0.7-pre2, 08.11.2007
5598 ----------------------------------------------
5599 C++ client library: branch b_v65
5600
5601 Updating user configuration: no relevant changes in this release. For those
5602 who haven't done so already, enabling large object support is recommended
5603 (see syncml/config.txt sample configs). It is required for myFUNAMBOL to
5604 synchronize very large address books and some users have reported segfaults
5605 unless this option was enabled.
5606
5607 * iPhone bug fix: syncing contacts with photos was unreliable (export) and
5608   crashed (import) because the API had not been called correctly
5609
5610 * iPhone + ScheduleWorld: when configured to use vcard3 (recommended!) then
5611   contacts are exchanged as vCard 3.0
5612
5613 * iPhone + ScheduleWorld bugfix: importing vCard 3.0 did not correctly
5614   classify the phone numbers. A sync with the new "--sync refresh-from-server"
5615   option will fix this, assuming that the server has the correct data.
5616
5617 * Evolution: detect a crashed backend and abort SyncEvolution instead of
5618   hanging forever.
5619
5620 * adapted calendar event insert/update to Evolution 2.12: the UID needs to be
5621   restored, otherwise the Evolution backend crashes (GNOME issue #488881)
5622
5623 * new feature: if the previous log directory is still available,
5624   then local changes made since last sync can be queried
5625   before starting a sync (new option --status) and will be
5626   printed directly before a sync. Setting the "logdir" option
5627   will automatically keep the most recent logs and database
5628   dumps around.
5629
5630 * added command line options:
5631   --sync|-s <mode>
5632     Temporarily synchronize the active sources in that mode. Useful
5633     for a 'refresh-from-server' or 'refresh-from-client' sync which
5634     clears all data at one end and copies all items from the other.
5635
5636   --status|-t
5637     The changes made to local data since the last synchronization are
5638     shown without starting a new one. This can be used to see in advance
5639     whether the local data needs to be synchronized with the server.
5640
5641   --quiet|-q
5642     Suppresses most of the normal output during a synchronization. The
5643     log file still contains all the information.
5644
5645   --help|-h
5646     Prints usage information.
5647
5648   --version
5649     Prints the SyncEvolution version.
5650
5651 * default configurations now reference the normal Evolution databases
5652   ("Personal") thus requiring less changes to use. The account information
5653   is now clearly marked as placeholder which needs to be entered.
5654
5655
5656 SyncEvolution 0.6 -> 0.7-pre1, 17.10.2007
5657 -----------------------------------------
5658 * C++ client library: tag "sdkcpp_6_0_9_1" (same as before)
5659 * added support for Mac OS X/iPhone address book
5660 * fixed Nokia packaging problem which prevented installation
5661   via the package manager unless it was in "red pill" mode
5662 * improved output: less verbose ("extracting" items is now
5663   logged at debug level and thus not normally shown) and more
5664   informative printing of changes (table summarizes number of
5665   changes on client and server, heading for comparison changed
5666   to make it clear that it shows changes on the client)
5667 * example configs were in share/share directory (SF #1767329)
5668 * Nokia 770/800: uninstallable package fixed by setting category
5669   (SF #1781652)
5670 * sync with eGroupware - lost or messed up telephones: SyncEvolution
5671   incorrectly added TYPE=OTHER to phone numbers sent with e.g.
5672   CELL instead of TYPE=CELL (SF #1796086). Another patch was
5673   required for eGroupware itself to correctly map phone numbers
5674   as sent by SyncEvolution, see Compatibility web page.
5675 * SyncCap is not generated unless syncModes are configured: added
5676   a comment to example config (SF #1764123)
5677 * improved error handling: catch errors during post-processing and
5678   continue
5679
5680
5681 SyncEvolution 0.5 -> 0.6, 13.07.2007
5682 ------------------------------------
5683 * C++ client library: tag "sdkcpp_6_0_9_1"
5684 * added support for synchronizing Evolution notes (aka memos) as
5685   plain text where the first line serves as summary; this is the
5686   format understood by ScheduleWorld
5687 * added support for synchronizing Evolution notes (aka memos) as
5688   iCal 2.0 journal; not currently supported by any server and 
5689   untested
5690 * revamped example configs and documentation: only one set of
5691   config files for each server is provided, because this is more
5692   likely to be needed by users
5693 * example configs are now installed in share/doc/syncevolution,
5694   enabled message limit and large object support in them
5695 * added support for Nokia 770/800 (aka Maemo):
5696   built with loadable modules so that it works with whatever
5697   backends are installed, improved log handling to accomodate
5698   for limited space on filesystem (see below), some workarounds
5699 * added workaround for Nokia 770:
5700   contacts are not really deleted unless the EDS-Sync with
5701   instant messaging servers is activated; now SyncEvolution
5702   will delete contacts marked as deleted by the GUI before
5703   a sync if it finds any.
5704   WARNING: if you use EDS-Sync and SyncEvolution, then give
5705   EDS-Sync enough time after going online to finish its own
5706   synchronization of modified/deleted contacts before starting
5707   SyncEvolution.
5708 * improved log handling: writing log and database dumps can be
5709   disabled with "logdir=none", verbosity of log is controlled by
5710   "loglevel", better handling of errors during initial database
5711   access
5712 * added workaround for Evolution bug #455274:
5713   the separator for multiple categories in events and tasks
5714   is not generated and interpreted according to iCalendar 2.0
5715   by Evolution; as a consequence of that items sent to the server
5716   had all categories merged into one and items imported into
5717   Evolution only used one of the catories
5718   http://bugzilla.gnome.org/show_bug.cgi?id=455274
5719 * fixed off-by-one counting of months in backup directory names
5720 * fixed error handling: a failed source was not forced into a slow
5721   sync as required; one failed source prevented saving configs of
5722   not-failed ones and thus forced those into an unnecessary slow
5723   sync
5724 * uses the Funambol C++ testing framework (which is based on the
5725   previous SyncEvolution testing); now creates its configs
5726   and (when using CLIENT_TEST_EVOLUTION_PREFIX=file://<path>)
5727   also the Evolution databases automatically
5728 * implemented synccompare as pure Perl script using Algorithm::Diff
5729   instead of external diff tool
5730 * synccompare did not figure out width of shell window as it should have
5731 * better error handling if creating the before/after database dumps
5732   fails (SF #1685637)
5733 * workaround for Funambol 3.0 trailing = parser bug
5734
5735 UPGRADING
5736
5737 Old config files from 0.5 or older continue to work, but it is recommended
5738 to set the following options to enable message size limits:
5739   maxMsgSize = 8192
5740   maxObjSize = 500000
5741   loSupport = 1
5742
5743
5744 SyncEvolution 0.6pre2 -> 0.6, 13.07.2007
5745 ----------------------------------------
5746 * improved README/HACKING documents
5747 * fixed the new example configs: use event/task for Funambol 6.0,
5748   name was wrong
5749 * added workaround for Evolution bug #455274:
5750   the separator for multiple categories in events and tasks
5751   is not generated and interpreted according to iCalendar 2.0
5752   by Evolution; as a consequence of that items sent to the server
5753   had all categories merged into one and items imported into
5754   Evolution only used one of the catories
5755   http://bugzilla.gnome.org/show_bug.cgi?id=455274
5756 * added workaround for Nokia 770:
5757   contacts are not really deleted unless the EDS-Sync with
5758   instant messaging servers is activated; now SyncEvolution
5759   will delete contacts marked as deleted by the GUI before
5760   a sync if it finds any.
5761   WARNING: if you use EDS-Sync and SyncEvolution, then give
5762   EDS-Sync enough time after going online to finish its own
5763   synchronization of modified/deleted contacts before starting
5764   SyncEvolution.
5765
5766
5767 SyncEvolution 0.6pre1 -> 0.6pre2, 23.04.2006
5768 --------------------------------------------
5769 * C++ client library: tag "sdkcpp_6_0_7" + revision 1.7 of
5770   build/autotools/test/Makefile.am
5771 * added support for synchronizing Evolution notes (aka memos) as
5772   plain text where the first line serves as summary; this is the
5773   format understood by ScheduleWorld, not the iCal 2.0 format
5774   added in 0.6pre1
5775 * improved log handling: writing log and database dumps can be
5776   disabled with "logdir=none", verbosity of log is controled by
5777   "loglevel", better handling of errors during initial database
5778   access
5779 * fixed off-by-one counting of months in backup directory names
5780 * fixed error handling: a failed source was not forced into a slow
5781   sync as required; one failed source prevented saving configs of
5782   not-failed ones and thus forced those into an unnecessary slow
5783   sync
5784 * revamped example configs: only one set of config files for each
5785   server is provided, because this is more likely to be needed
5786   by users
5787 * uses the Funambol C++ testing framework (which is based on the
5788   previous SyncEvolution testing); now creates its configs
5789   and (when using CLIENT_TEST_EVOLUTION_PREFIX=file://<path>)
5790   also the Evolution databases automatically
5791
5792
5793 SyncEvolution 0.5 -> 0.6pre1, 26.03.2006
5794 ----------------------------------------
5795 * C++ client library: CVS snapshot from 26.03.2006
5796 * added support for synchronizing Evolution notes (aka memos) as
5797   iCal 2.0 journal
5798 * added --enable-static-cxa = linking C++ runtime statically:
5799   binaries produced for 0.6 will have less external
5800   dependencies than the 0.5 binaries
5801 * added hacks for Maemo/Nokia 770, including a build
5802   mode with dynamically loadable modules (--enable-shared, --enable-maemo,
5803   --with-patched-dbus)
5804 * implemented synccompare as pure Perl script using Algorithm::Diff
5805   instead of external diff tool
5806 * synccompare did not figure out width of shell window as it should have
5807 * better error handling if creating the before/after database dumps
5808   fails (SF #1685637)
5809 * example configs are now installed in share/doc/syncevolution,
5810   enabled message limit and large object support in them
5811 * workaround for Funambol 3.0 trailing = parser bug
5812
5813 UPGRADING
5814
5815 Old config files continue to work, but it is recommended
5816 to set the following options to enable message size limits:
5817   maxMsgSize = 8192
5818   maxObjSize = 500000
5819   loSupport = 1
5820
5821
5822
5823 SyncEvolution 0.4 -> 0.5, 12.11.2006
5824 ------------------------------------
5825 * C++ client library revision "syncevolution-0-5":
5826   - added support for sending changes in smaller chunks
5827     ("Large Object Support"): disabled by default, see updated
5828     example configuration
5829   - time is printed with GMT offset so that a server admin in
5830     a different timezone can always figure out how a client log
5831     relates to events on the server
5832   - special item keys as they might be stored in some calendars after
5833     importing non-Evolution events are now properly supported
5834 * bug fix: in 0.4 it was necessary to manually configure the verDTD
5835   or the Funambol 3.0a server would choke on the invalid SyncML during
5836   the second synchronization with SyncEvolution; now this option is set
5837   automatically
5838 * added support and testing of transmitting just the changes
5839   from client to server or vice versa; see "one-way-from-server/client"
5840   in example configuration
5841 * fixed/updated comments in the example configuration
5842 * improved automated testing and fixed the problem that CPPUnit was not
5843   found unless it was part of the system
5844 * Now works on Maemo/Nokia 770: minor changes were necessary so that
5845   the system address book can now be selected under the name "<<system>>.
5846   Copying 300 contacts into the Nokia 770 went fine, but any further
5847   attempt to synchronize suffered from timeouts inside the embedded
5848   Evolution Data Server.
5849
5850
5851 SyncEvolution 0.3 -> 0.4, 11.09.2006 
5852 ------------------------------------
5853 * C++ client library revision "syncevolution-0-4":
5854   - added support for device information, required by some servers
5855   - fixed incompatibilities with non-Funambol servers
5856   - the user agent string can now be modified in the
5857     spds/syncml/config.txt, but it is recommended to not set
5858     it explicitly. Then SyncEvolution will automatically insert
5859     its current version.
5860   - #305795: for tasks the "text/x-todo" type from the configuration
5861     was sent to servers instead of the correct "text/calendar"
5862     provided by SyncEvolution itself
5863   - sync modes "refresh-client/server" can now be specified as
5864     "refresh-from-client/server" in the config
5865 * updated default syncml/config.txt:
5866   - firstTimeSyncMode has never been implemented in the library,
5867     removed its documentation,
5868   - added documentation for userAgent
5869   - use "refresh-from-client/server"
5870 * SF issue 1511951: support copying changes back from EGroupware
5871   server by not expecting the UID of calendar items to be unmodified
5872 * fixed a bug where after a refresh-from-client sync changes would
5873   be sent to the server again during a two-way sync although the
5874   server already had them
5875 * implemented authentication for Evolution databases
5876 * synccompare was removing too many parts of vCards with 
5877   single-value ORG properties
5878 * improved error reporting when selected server is not configured
5879 * changed vCard parser to make it compatible with servers
5880   which send a verbatim semicolon as part of properties where
5881   the semicolon has no special meaning
5882 * If minor errors occur like not being able to insert an
5883   item at the client or server side, then it is reported in the
5884   log and output, but the next synchronization will be a normal
5885   synchronization, not a forced slow one as in previous versions.
5886   The old approach ensured that the problem was noticed and fixed,
5887   but required user assistance. With the new approach synchronization
5888   continues to work, although without fixing the root cause of
5889   the problem.
5890 * Workaround for bug in Evolution 2.0.6 (and perhaps other versions):
5891   for calendars and task lists not all deleted items were reported
5892   at once thus a single synchronization would only tell the server
5893   about a subset of the changes. Repeating the synchronization would
5894   eventually be told of all changes, so now this repetition is built
5895   into the code which queries for changes and a single synchronization
5896   is sufficient as it should be.
5897
5898
5899 SyncEvolution 0.4 pre2 -> 0.4, 11.09.2006 
5900 -----------------------------------------
5901 * adapted to C++ client library from CVS head, tagged as syncevolution-0-4:
5902   devinfo.patch patch was merged with several changes to the API
5903 * SF issue 1511951: support copying changes back from EGroupware
5904   server by not expecting the UID of calendar items to be unmodified
5905
5906
5907 SyncEvolution 0.4 pre1 -> pre2, 21.08.2006
5908 ------------------------------------------
5909 * C++ client library revision "syncevolution-0-4-pre2":
5910   most patches were merged into CVS head, but .patches/devinfo.patch
5911   still needs to be applied manually when checking out from the
5912   Funambol CVS instead of using the bundled version
5913 * fixed a bug where after a refresh-from-client sync changes would
5914   be sent to the server again during a two-way sync although the
5915   server already had them
5916 * implemented authentication for Evolution databases
5917 * synccompare was removing too many parts of vCards with 
5918   single-value ORG properties
5919 * improved error reporting when selected server is not configured
5920 * use 7-bit quoted-printable encoding with explicit UTF-8 charset for
5921   vCard 2.1 to avoid any potential confusion about the content; not
5922   really necessary because SyncML specifies 8-bit UTF-8 as the default
5923 * fix for 0.4 pre 1: sending CHARSET is not allowed (and not
5924   needed) for vCard 3.0, so it was removed again (did not harm
5925   either)
5926 * fix for 0.4 pre 1: sending vCard 2.1 to Synthesis server did
5927   not work because the new device info always mentioned 3.0 as
5928   the preferred format - now the preferred format matches the one
5929   that was configured and that thus will be used.
5930
5931
5932 SyncEvolution 0.3 -> 0.4 pre 1, 2006-08-06
5933 ------------------------------------------
5934 * C++ client library revision "funambol30ga" plus the patches
5935   stored in its ".patches" directory:
5936   - the user agent string can now be modified in the
5937     spds/syncml/config.txt, but it is recommended to not set
5938     it explicitly. Then SyncEvolution will automatically insert
5939     its current version.
5940   - now compatible with additional servers (fixed some SyncML
5941     protocol issues, added support for sending device
5942     information)
5943   - revised API of the client library
5944   - #305795: for tasks the "text/x-todo" type from the configuration
5945     was sent to servers instead of the correct "text/calendar"
5946     provided by SyncEvolution itself
5947   - sync modes "refresh-client/server" can now be specified as
5948     "refresh-from-client/server" in the config
5949 * updated default syncml/config.txt:
5950   - firstTimeSyncMode has never been implemented in the library,
5951     removed its documentation,
5952   - added documentation for userAgent
5953   - use "refresh-from-client/server"
5954 * changed vCard parser to make it compatible with servers
5955   which send a verbatim semicolon as part of properties where
5956   the semicolon has no special meaning
5957 * If minor errors occur like not being able to insert an
5958   item at the client or server side, then it is reported in the
5959   log and output, but the next synchronization will be a normal
5960   synchronization, not a forced slow one as in previous versions.
5961   The old approach ensured that the problem was noticed and fixed,
5962   but required user assistance. With the new approach synchronization
5963   continues to work, although without fixing the root cause of
5964   the problem.
5965 * Workaround for bug in Evolution 2.0.6 (and perhaps other versions):
5966   for calendars and task lists not all deleted items were reported
5967   at once thus a single synchronization would only tell the server
5968   about a subset of the changes. Repeating the synchronization would
5969   eventually be told of all changes, so now this repetition is built
5970   into the code which queries for changes and a single synchronization
5971   is sufficient as it should be.
5972 * Made it compile on Maemo 2.0, the Nokia 770 build environment, by
5973   adding "--disable-ecal". Not tested yet, though.
5974
5975
5976 SyncEvolution 0.3, 2006-06-27
5977 -----------------------------
5978
5979 * added syncing of calendars and tasks as iCalendar 2.0
5980 * added syncing of contacts as vCard 3.0
5981 * tested extensively with sync.scheduleworld.com and
5982   added an example configuration for it
5983 * uses C++ client library revision "wmplugin_3_0_20"
5984   which contains several bug fixes, among them proper
5985   support for special characters and memory handling
5986   fixes
5987 * much nicer listing of changes made during a sync,
5988   handled by the improved "synccompare" utility script
5989   (formerly known as "normalize_vcard")
5990 * improved automated testing
5991
5992
5993 SyncEvolution 0.2, 2006-03-19
5994 -----------------------------
5995
5996 * added automatic backup mechanism and log storage,
5997   see "Automatic Backups and Logging".
5998 * output no longer is the original log data, but rather
5999   a human-readable report of errors and synchronization
6000   results.
6001 * "normalize_vcard" can now also compare two .vcf files
6002   directly.
6003 * improved unit tests to catch more errors
6004 * hide certain differences in vcards coming back from
6005   the server: duplication of extended vcard properties,
6006   missing TYPE=OTHER
6007 * fixed client library problems:
6008   see http://forge.objectweb.org/tracker/?group_id=96&atid=100096
6009       #304792, #304829
6010 * added some more problems to the "Known Problems" section
6011
6012
6013 SyncEvolution 0.1, 2006-03-13
6014 -----------------------------
6015
6016 * initial release