| 1 |
0.15.1 |
| 2 |
====== |
| 3 |
|
| 4 |
Changes since 0.15.0: |
| 5 |
|
| 6 |
- Set 'ESSID' on WiFi contexts. |
| 7 |
- Fix a crasher bug. |
| 8 |
- Fix some leaks. |
| 9 |
- Remove a cyclic-reference |
| 10 |
- Fix logic to find service from list and therefore the issue of wrongly |
| 11 |
ignoring new services. |
| 12 |
- Remove all hosted paths from SoupServer before unrefing it. |
| 13 |
|
| 14 |
Dependency related changes: |
| 15 |
|
| 16 |
- Require gssdp >= 0.9.2. |
| 17 |
|
| 18 |
Bugs fixed in this release: |
| 19 |
|
| 20 |
2212 - Leak in gupnp_root_device_construct |
| 21 |
2215 - gupnp-control-point ignores services at startup |
| 22 |
2216 - Leak in gupnp_resource_factory |
| 23 |
2217 - gupnp-unix-context-manager leaks contexts if interfaces are not up |
| 24 |
2218 - gupnp-context creates new SoupServers on shutdown |
| 25 |
|
| 26 |
All contributors: |
| 27 |
|
| 28 |
Zeeshan Ali (Khattak) <zeeshanak@gnome.org> |
| 29 |
Jens Georg <mail@jensge.org> |
| 30 |
|
| 31 |
0.15.0 |
| 32 |
====== |
| 33 |
|
| 34 |
Changes since 0.14.0 not included in 0.14.1: |
| 35 |
|
| 36 |
- Port from dbus-glib to GDBus. |
| 37 |
- Enable gzip compression for large action response bodies. |
| 38 |
- Fix gupnp-binding-tool to generate headers usable in C++. |
| 39 |
|
| 40 |
Dependency related changes: |
| 41 |
|
| 42 |
- Require glib >= 2.24.0. |
| 43 |
- Require libsoup >= 2.28.2. |
| 44 |
- Require gio >= 2.26 (new dependency). |
| 45 |
- Drop dependency on dbus-glib. |
| 46 |
|
| 47 |
Bugs fixed in this release: |
| 48 |
|
| 49 |
2184 - Migrate from dbus-glib to glib's GDBus |
| 50 |
|
| 51 |
All contributors: |
| 52 |
|
| 53 |
Ross Burton <ross@linux.intel.com> |
| 54 |
Sven Neumann <s.neumann@raumfeld.com> |
| 55 |
Henry Hoegelow <h.hoegelow@raumfeld.com> |
| 56 |
Zeeshan Ali (Khattak) <zeeshanak@gnome.org> |
| 57 |
Fargier Sylvain <fargier.sylvain@free.fr> |
| 58 |
|
| 59 |
0.14.0 |
| 60 |
====== |
| 61 |
|
| 62 |
Changes since 0.13.5: |
| 63 |
|
| 64 |
- Don't use deprecated glib, gobject and libsoup APIs. |
| 65 |
- Check for libuuid only on platforms where we need it. |
| 66 |
- Explicitly link example apps to needed libraries. |
| 67 |
- Fix some potential crashes and leaks. |
| 68 |
- Fix pointer to/from integer conversion on 64-bit machines. |
| 69 |
- Fix parsing of unsigned integers. |
| 70 |
- Use locale-independent float <-> string conversions. |
| 71 |
- Remove some redundant functions and variables. |
| 72 |
- Remove some unused variables noticed. |
| 73 |
- Use correct mime-type for XML data. |
| 74 |
- Various non-functional improvements. |
| 75 |
|
| 76 |
Bugs fixed in this release: |
| 77 |
|
| 78 |
2192 - 64bit portability issue with *_register_*_type functions |
| 79 |
2190 - Build fails because explicit linking is missing |
| 80 |
2188 - configure.ac should leave out the uuid module check on OSX |
| 81 |
|
| 82 |
All contributors: |
| 83 |
|
| 84 |
Ross Burton <ross@linux.intel.com> |
| 85 |
Sven Neumann <s.neumann@raumfeld.com> |
| 86 |
Jens Georg <mail@jensge.org> |
| 87 |
Zeeshan Ali (Khattak) <zeeshanak@gnome.org> |
| 88 |
Nader Morshed <morshed.nader@gmail.com> |
| 89 |
|
| 90 |
0.13.5 |
| 91 |
====== |
| 92 |
|
| 93 |
Changes since 0.13.4: |
| 94 |
|
| 95 |
- Chain up in GUPnPXMLDoc's finalize(). |
| 96 |
- Correct transfer annotation for gupnp_context_get_session(). |
| 97 |
- Prefer g_strcmp0() over strcmp(). |
| 98 |
- Check for body length rather than Content-Length in SOAP requests so we |
| 99 |
can satsify DLNA CTT test 7.2.5.7. |
| 100 |
- Explicitly link test apps to needed libraries. |
| 101 |
|
| 102 |
Bugs fixed in this release: |
| 103 |
|
| 104 |
2186 - Missing annotation for context_get_session |
| 105 |
|
| 106 |
All contributors: |
| 107 |
|
| 108 |
Sven Neumann <s.neumann@raumfeld.com> |
| 109 |
Zeeshan Ali (Khattak) <zeeshanak@gnome.org> |
| 110 |
Zach Goldberg <zgold@corvette.(none)> |
| 111 |
|
| 112 |
0.13.4 |
| 113 |
====== |
| 114 |
|
| 115 |
Changes since 0.13.3: |
| 116 |
|
| 117 |
- GUPnPService should remove all handlers installed on the shared SoupServer |
| 118 |
instance when it is disposed. |
| 119 |
- Fixate subscription timeout to be 300s as per DLNA requirement (7.2.22.1). |
| 120 |
- Correct type of action argument of GUPnPService::action-invoked. |
| 121 |
- Remove redundant copying of GValue content in a few places. |
| 122 |
- Handle multiple variables inside property node in event notifications to be |
| 123 |
compatible with server-side implementations using older GUPnP |
| 124 |
- Fix syntax of event notifications with multiple properties. |
| 125 |
- Add/fix gobject-introspection annotations for various functions. |
| 126 |
- Some non-functional improvements. |
| 127 |
|
| 128 |
Bugs fixed in this release: |
| 129 |
|
| 130 |
2084 - Add scope annotations to various functions |
| 131 |
2131 - GUPnPServiceAction is a boxed, not a pointer |
| 132 |
2086 - Fix gtk-doc format on all functions in public GUPnP API |
| 133 |
|
| 134 |
All contributors: |
| 135 |
|
| 136 |
Sven Neumann <s.neumann@raumfeld.com> |
| 137 |
Zeeshan Ali (Khattak) <zeeshanak@gnome.org> |
| 138 |
Zach Goldberg <zgold@corvette.(none)> |
| 139 |
|
| 140 |
0.13.3 |
| 141 |
====== |
| 142 |
|
| 143 |
Changes since 0.13.2: |
| 144 |
|
| 145 |
- Include the Content-Type header in the HTTP messages. This satisfies DLNA |
| 146 |
CTT test cases 7.2.5.9 and 7.2.29.1. |
| 147 |
- Use g_message instead of g_warning if we can't connect to DBus. |
| 148 |
- Make the HTTP server listen on the context's interface only. |
| 149 |
- Fix some potential crashes in GUPnPServiceProxy and GUPnPContextManager code. |
| 150 |
- Fix build issues in jhbuild environment. |
| 151 |
- Fix some gcc warnings. |
| 152 |
- Add new API to host path for specific user-agent(s). |
| 153 |
- Add gobject-introspection support: |
| 154 |
- Provide gobject-introspection GIR and typelib. |
| 155 |
- Add needed annotations to doc comments. |
| 156 |
- Add GList variants of action-related functions to satisfy PyGI. |
| 157 |
- A few non-functional improvments. |
| 158 |
|
| 159 |
Dependency related changes: |
| 160 |
|
| 161 |
- gssdp >= 0.7.1 |
| 162 |
|
| 163 |
Bugs fixed in this release: |
| 164 |
|
| 165 |
2054 - Xbox hacks |
| 166 |
1965 - gcc warning fixes |
| 167 |
2039 - GUPnP is hard to use with jhbuild |
| 168 |
1948 - Signal handler are not disconnected when ContextManager is disposed |
| 169 |
2030 - gupnp context listens on 0.0.0.0 instead of the context's ip |
| 170 |
1924 - Content-Type header must contain charset="utf-8" in all HTTP transactions |
| 171 |
2006 - Implement 3 new functions for language bindings (begin_action_list, |
| 172 |
end_action_list, gupnp_service_action_get_value_type) |
| 173 |
1919 - Add GObject Introspection Annotations and Makefile |
| 174 |
1979 - g_warning make gupnp-igd test fails |
| 175 |
1906 - Tests failed with gupnp 0.13 |
| 176 |
|
| 177 |
All contributors: |
| 178 |
|
| 179 |
Zeeshan Ali (Khattak) <zeeshanak@gnome.org> |
| 180 |
Zach Goldberg <zgold@corvette.(none)> |
| 181 |
Ross Burton <ross@linux.intel.com> |
| 182 |
Olivier Crête <olivier.crete@collabora.co.uk> |
| 183 |
Neil Roberts <neil@linux.intel.com> |
| 184 |
Sven Neumann <s.neumann@raumfeld.com> |
| 185 |
Jens Georg <mail@jensge.org> |
| 186 |
Yakup Akbay <yakbay@ubicom.com> |
| 187 |
|
| 188 |
0.13.2 |
| 189 |
====== |
| 190 |
|
| 191 |
Changes since 0.13.1: |
| 192 |
|
| 193 |
- Utilize libconic (Maemo5) if available. |
| 194 |
- Unix context manager must signal the unavailibility of all contexts when |
| 195 |
disposed. |
| 196 |
- Enable silent build rules if they are available. |
| 197 |
- Fix race-conditions in client-side notification handling. |
| 198 |
- Unix context manager ignores point-to-point interfaces. |
| 199 |
- Context manager ignores interfaces without IP addresses. |
| 200 |
- Don't require timeouts to be specified in subscription requests. |
| 201 |
- Fix build against gcc 4.[1,2]. |
| 202 |
- Make network manager thread-safe. |
| 203 |
- Remove idle source on dispose in context manager implementations. |
| 204 |
- Warn in docs that gupnp_service_info_get_introspection() is evil and why. |
| 205 |
- Service retrieves introspection data in truly async way. |
| 206 |
- Fix some leaks. |
| 207 |
- A bunch of code clean-ups. |
| 208 |
|
| 209 |
All contributors: |
| 210 |
|
| 211 |
Olivier Crête <olivier.crete@collabora.co.uk> |
| 212 |
Zeeshan Ali (Khattak) <zeeshanak@gnome.org> |
| 213 |
Ross Burton <ross@linux.intel.com> |
| 214 |
Jens Georg <mail@jensge.org> |
| 215 |
Cem Eliguzel <celiguzel@ubicom.com> |
| 216 |
|
| 217 |
Bugs fixed: |
| 218 |
|
| 219 |
1890 - Timeout parsing problem with SUBSCRIBE method |
| 220 |
1880 - subscription/notification handling is racy |
| 221 |
1906 - Tests failed with gupnp 0.13 |
| 222 |
1849 - Compile error when using gcc 4.[1,2] and strict aliasing |
| 223 |
1494 - Ability to deal with multiple network interfaces |
| 224 |
1881 - networkmanager interaction should use its own dbus connection |
| 225 |
|
| 226 |
0.13.1 |
| 227 |
====== |
| 228 |
|
| 229 |
Changes since 0.13: |
| 230 |
|
| 231 |
- Use unix context manager if NetworkManager service is not available. |
| 232 |
- Fix some minor leaks. |
| 233 |
|
| 234 |
All contributors: |
| 235 |
|
| 236 |
Zeeshan Ali (Khattak) <zeeshanak@gnome.org> |
| 237 |
Ross Burton <ross@linux.intel.com> |
| 238 |
|
| 239 |
0.13 |
| 240 |
==== |
| 241 |
|
| 242 |
Changes since 0.12.8: |
| 243 |
|
| 244 |
- Print reason when fail to fetch description doc |
| 245 |
- Support for dynamic/multiple networks through a new class, ContextManager. |
| 246 |
This class creates/destroys new context as new network interfaces go up/down. |
| 247 |
It also provides two convenient methods to take care of control point and |
| 248 |
device reference managment for you. Currently we have two implementations of |
| 249 |
context manager: |
| 250 |
* unix: The static but guaranteed to work on Unix, implementation. This is the |
| 251 |
default if none chosen at configure-time. |
| 252 |
* network-manager: A NetworkManager based implementation. |
| 253 |
- Idle handlers should use the assigned GMainContext. |
| 254 |
- Gracefully handle 'no root element in description' scenerio. |
| 255 |
- "host-ip" property moved from GUPnPContext to parent GSSDPClient. |
| 256 |
- ControlPoint set itself inactive before getting disposed. |
| 257 |
- New function to retrieve the capabilities of a DLNA device as announced in |
| 258 |
the device description. |
| 259 |
- New function to retrieve the content of arbitrary elements in the device |
| 260 |
description. |
| 261 |
- Fixed a crash that happens when service-proxy goes down before subscribtion to |
| 262 |
it completes. |
| 263 |
- Correct condition for SID being NULL. |
| 264 |
- Don't create redundant proxies. |
| 265 |
- Must not announce earlier versions of resources. This is strictly forbidden |
| 266 |
according to the latest UPnP specs. Instead GSSDP now handles M-SEARCH |
| 267 |
requests independent of version requested. |
| 268 |
- Free app developer from hosting of description documents. |
| 269 |
- New API to get SoupMessage associated with ServiceAction. |
| 270 |
- Handle the SOAPAction header being missing. |
| 271 |
- Fixed strrchr result checking. |
| 272 |
- Provide and use a wrapper class for xmlDoc objects, GUPnPXMLDoc that is a |
| 273 |
first-class gobject. |
| 274 |
- New domains for XML errors. |
| 275 |
- Many other minor fixes. |
| 276 |
|
| 277 |
Bugs fixed: |
| 278 |
|
| 279 |
1626 - Print reason when fail to fetch description doc |
| 280 |
1769 - audit issues |
| 281 |
1760 - missing/invalid SOAPAction header crashes gupnp |
| 282 |
1705 - Provide a public API to get information about a GUPnPServiceAction's HTTP |
| 283 |
request |
| 284 |
|
| 285 |
Dependencies changed: |
| 286 |
|
| 287 |
- gssdp >= 0.7 |
| 288 |
|
| 289 |
All contributors: |
| 290 |
|
| 291 |
Zeeshan Ali (Khattak) <zeeshanak@gnome.org> |
| 292 |
Ross Burton <ross@linux.intel.com> |
| 293 |
Sven Neumann <s.neumann@raumfeld.com> |
| 294 |
Jens Georg <mail@jensge.org> |
| 295 |
Steven Dorigotti <steven.dorigotti@tvblob.com> |
| 296 |
|
| 297 |
WARNING: This release is API and ABI incompatible with previous releases. |
| 298 |
|
| 299 |
0.12.8 |
| 300 |
====== |
| 301 |
|
| 302 |
Changes since 0.12.7 |
| 303 |
|
| 304 |
- Don't crash if device descriptions don't contain a root element. |
| 305 |
- Fix pkg-config paths. |
| 306 |
- Avoid using asserts. |
| 307 |
- Use the closest match instead of using the icon that was last checked. |
| 308 |
- Expect xmlRecoverMemory to fail. |
| 309 |
- Reject action messages with zero content length. |
| 310 |
- Change version in action answer. |
| 311 |
|
| 312 |
Bug fixes in this release: |
| 313 |
|
| 314 |
- bug#1570: gupnp doesn't set the pkgconfig lib dir correctly in 64 bit env. |
| 315 |
- bug#1574: Avoid using asserts. |
| 316 |
- bug#1592: gupnp_device_info_get_icon_url() does not return the closest match. |
| 317 |
- bug#1604: Crash on action without any content. |
| 318 |
|
| 319 |
All contributors to this release: |
| 320 |
|
| 321 |
Ross Burton <ross@linux.intel.com> |
| 322 |
Zeeshan Ali (Khattak) <zeeshanak@gnome.org> |
| 323 |
Steven Dorigotti <steven.dorigotti@tvblob.com> |
| 324 |
Sven Neumann <s.neumann@raumfeld.com> |
| 325 |
Jens Georg <mail@jensge.org> |
| 326 |
|
| 327 |
0.12.7 |
| 328 |
====== |
| 329 |
|
| 330 |
- Chain up dispose and finalize in GUPnPDeviceInfo [Sven Neumann] |
| 331 |
- Use a dedicated SoupSession [Sven Neumann] |
| 332 |
- Fix device icon fallback logic [Ross Burton] |
| 333 |
- Fix user agent string [Sven Neumann] |
| 334 |
- Sanity check UDN while parsing [Zeeshan Ali] |
| 335 |
|
| 336 |
0.12.6 |
| 337 |
====== |
| 338 |
|
| 339 |
- Port to FreeBSD. [Romain Tartière] |
| 340 |
- Ship the XML files needed for example app. [Romain Tartière] |
| 341 |
- Keep a reference on the control-point during signal emission. [Sven Neumann] |
| 342 |
- Allow passing NULL to ControlPoint constructor, for default resource factory. |
| 343 |
[Sven Neumann] |
| 344 |
- Remove debug output that accidentally went in with the last commit. |
| 345 |
[Sven Neumann] |
| 346 |
|
| 347 |
0.12.5 |
| 348 |
====== |
| 349 |
|
| 350 |
- Improved error handling. [Sven Neumann, Jorn Baayen] |
| 351 |
- Specify character set (UTF-8) in NOTIFY messages. [Jorn Baayen] |
| 352 |
- Don't export internal functions. [Jorn Baayen] |
| 353 |
- Fix some crasher bugs. [Zeeshan Ali] |
| 354 |
- More lenient handling of xml from external sources. [Jorn Baayen, |
| 355 |
Jussi Kukkonen] |
| 356 |
- Fix possible reference cycles. [Zeeshan Ali, Jorn Baayen] |
| 357 |
- Better handling of event subscription timeouts. [Zeeshan Ali] |
| 358 |
|
| 359 |
0.12.4 |
| 360 |
====== |
| 361 |
|
| 362 |
- Set Content Type header correctly in soap messages [Zeeshan Ali] |
| 363 |
- Don't pass arbitrary strings to printf() for security [Sven Neumann] |
| 364 |
- Handle fscanf failing in get_default_host_ip() [Sven Neumann] |
| 365 |
|
| 366 |
0.12.3 |
| 367 |
====== |
| 368 |
|
| 369 |
- Greatly improved client-side bindings [Jussi Kukkonen] |
| 370 |
- Server-side bindings [JK] |
| 371 |
- Don't use NULL return values from g_get_application_name [Ross Burton] |
| 372 |
- Make gupnp_context_get_session public [Jorn Baayen] |
| 373 |
- Use the specified GMainContext for timeouts [Olivier Crete, Jorn Baayen] |
| 374 |
|
| 375 |
0.12.2 |
| 376 |
====== |
| 377 |
|
| 378 |
- Support returning actions outside of the 'action-invoked' signal handler |
| 379 |
in service implementations. [Zeeshan Ali, Jorn Baayen] |
| 380 |
- Add explicit dependency on gthread. [Zeeshan Ali, Jorn Baayen] |
| 381 |
|
| 382 |
0.12.1 |
| 383 |
====== |
| 384 |
|
| 385 |
- Support Range headers without upper bound. [Jorn Baayen] |
| 386 |
- Fixed memory management in HTTP GET handler. [Jorn Baayen] |
| 387 |
|
| 388 |
0.12 |
| 389 |
==== |
| 390 |
|
| 391 |
- Add tool for generating convenience C wrappers for GUPnP service definitions. |
| 392 |
[Ross Burton] |
| 393 |
- Remove xmlDoc argument from gupnp_root_device_new() for simplicity. |
| 394 |
(xmlDocs can still be passed to gupnp_root_device_new_full()) |
| 395 |
[Jorn Baayen] |
| 396 |
- Better documentation, new tutorials and sample code. [Ross Burton] |
| 397 |
- Improved support for Accept-Language header. [Jorn Baayen] |
| 398 |
- Various internal improvements. [Zeeshan Ali, Jorn Baayen] |
| 399 |
|
| 400 |
0.10.1 |
| 401 |
====== |
| 402 |
|
| 403 |
- Bump soname. |
| 404 |
|
| 405 |
0.10 |
| 406 |
==== |
| 407 |
|
| 408 |
- Use libsoup 2.4. [Zeeshan Ali Khattak, Jorn Baayen] |
| 409 |
- Use g_timeout_add_seconds(). [Jorn Baayen] |
| 410 |
- Use GIO instead of xdgmime. [Jorn Baayen] |
| 411 |
- Support HTTP Range header in the HTTP server. [Jorn Baayen] |
| 412 |
- Use GMappedFile to mmap served files of read()ing them. [Jorn Baayen] |
| 413 |
- Improved documentation. [Ross Burton] |
| 414 |
- Spew HTTP messages to console when GUPNP_DEBUG is set. [Ross Burton] |
| 415 |
- Various other fixes. [Ross Burton, Zeeshan Ali Khattak, Jorn Baayen] |
| 416 |
|
| 417 |
0.8 |
| 418 |
=== |
| 419 |
|
| 420 |
- New API allowing for subclassing of resource types. |
| 421 |
[Zeeshan Ali, Jorn Baayen] |
| 422 |
- GUPnPDeviceInfo returns subresources with version greater or equal than |
| 423 |
requested version. [Jorn Baayen] |
| 424 |
- Servers announce versions less or equal than implemented version. |
| 425 |
[Jorn Baayen] |
| 426 |
- Make gupnp_context_get_server() public. [Jorn Baayen] |
| 427 |
- GError arguments added to all error signals. [Jorn Baayen] |
| 428 |
- Improved resubscription handling. [Jorn Baayen] |
| 429 |
- Various other fixes and internal improvements |
| 430 |
[Ross Burton, Zeeshan Ali, Jorn Baayen]. |
| 431 |
|
| 432 |
0.6 |
| 433 |
=== |
| 434 |
|
| 435 |
- Added service signal autoconnection feature in the spirit of |
| 436 |
glade_xml_signal_autoconnect(). [Zeeshan Ali] |
| 437 |
- Fixed various bugs related to object destruction. Fixes #500, 503. |
| 438 |
[Jorn Baayen] |
| 439 |
- Accept 'yes' and 'no' boolean values. [Zeeshan Ali] |
| 440 |
- More information in error messages. [Zeeshan Ali, Jorn Baayen] |
| 441 |
- Mark GUPnPServiceIntrospectionCallback() 'error' argument as 'const'. |
| 442 |
[Jorn Baayen] |
| 443 |
- Fixed gupnp_device_info_get_model_number() to return the right value. |
| 444 |
[Zeeshan Ali] |
| 445 |
- Moved the uuid dependency to Requires.Private, and removed the |
| 446 |
shared-mime-data build dependency. [Jorn Baayen] |
| 447 |
- Various other minor fixes. [Zeeshan Ali, Jorn Baayen] |
| 448 |
|
| 449 |
Special thanks to Stéphane Loeuillet for stress-testing the library and |
| 450 |
discovering many bugs. (Which are all fixed in this release. :) ) |
| 451 |
|
| 452 |
0.4 |
| 453 |
=== |
| 454 |
|
| 455 |
- A new series of functions for sending actions taking hash tables of parameter |
| 456 |
name-GValue pairs. [Jorn Baayen] |
| 457 |
- New introspection methods for state variable and action retrieval by name. |
| 458 |
[Zeeshan Ali] |
| 459 |
- New pkg-config file for building against an uninstalled libgupnp. |
| 460 |
[Zeeshan Ali] |
| 461 |
- Improved conversion between GValues and UPnP value types. [Jorn Baayen] |
| 462 |
- Only include evented state variables in initial event message. |
| 463 |
[Jorn Baayen] |
| 464 |
|
| 465 |
0.3 |
| 466 |
=== |
| 467 |
|
| 468 |
- Allow embedded devices to have their own UDNs. [Jorn Baayen] |
| 469 |
- Portability fix. [Priit Laes] |
| 470 |
|
| 471 |
0.2 |
| 472 |
=== |
| 473 |
|
| 474 |
- Fully implemented server-side API. [Jorn Baayen] |
| 475 |
- New service introspection support through SCPD documents. [Zeeshan Ali] |
| 476 |
- M-POST support. [Jorn Baayen] |
| 477 |
- More error codes split out into several error domains. [Jorn Baayen] |
| 478 |
- Use Accept-Language header for internationalisation. [Jorn Baayen] |
| 479 |
- Subresource retreival moved from DeviceProxy to DeviceInfo. [Jorn Baayen] |
| 480 |
- Bug fixes. |
| 481 |
|
| 482 |
GUPnP is now feature complete. |
| 483 |
|
| 484 |
0.1 |
| 485 |
=== |
| 486 |
|
| 487 |
Initial release. Full client-side API, server side not done yet. |