Releases: RobotWebTools/roslibjs
2.0.0
Note
We understand that the removal of some lesser-used APIs may be painful for a subset of users. However, given the small team maintaining the project, we felt it necessary to reduce the scope of the library - at least temporarily - to make it possible to move forward on new features and better underlying implementations.
With that being said, we're excited to ship roslibjs 2.0, years in the making!
Highlights of roslibjs 2.0.0
Additions
- Asynchronous callback support for Services.
- Support for ROS 2 Actions.
- Support for ROS 2 TF.
- Support for injecting your own transport implementation into the
Rosclass. - Support for new rosbridge APIs, for example param retrieval failure cases.
- Integration tests for ROS 2 to ensure ongoing support.
- Greatly improved TypeScript declarations.
- Internal migration from JavaScript to TypeScript to ensure provided TypeScript type declarations are always up-to-date.
- No more need for
@types/roslibas an extra dependency!
- No more need for
- ECMAScript Modules (ESM) support to provide better bundling and static analysis support to downstream projects.
Removals
- Classic "Universal Module Definition (UMD)" bundles of roslibjs. We only support the standardized ECMAScript Modules (ESM).
- JSDelivr CDN releases, as there are many CDNs that serve NPM packages now, like UNPKG.
- Removal of Web Worker mode.
- Removal of non-WebSocket transport implementations (NodeTCP and WebRTC).
- You can now provide these yourself - or any other socket implementation you can dream up - with the new Transport API!
Import syntax change
- Due to the change to using standard ECMAScript Modules and optimization of the library for modern bundling practices, if you were previously importing roslib in either of the following ways:
you will need to adapt your syntax for ESM. The easiest replacement is:
const ROSLIB = require("roslib"); // or import ROSLIB from "roslib";
However, we would recommend a best practice of instead importing APIs of roslib directly by name, for instanceimport * as ROSLIB from "roslib";
to make it easier for your project's tooling to statically analyze and bundle your code.import { Ros } from "roslib";
Future changes
We hope this is just the beginning of a new era for the RobotWebTools JavaScript clients - an easier-to-contribute-to (thanks to type checking, better tests, etc.) set of libraries with more focused scope. Continuing forward, we will continue to emphasize ease of development and use, including some of the following efforts:
- Integration of
ros2djsandros3djsinto this repository as a monorepo to make it easier to work on the RWT frontend libraries together - Migration of the examples in
roslibjs,ros2djs, andros3djsinto separate executable packages in the monorepo, with end-to-end tests to assure they stay functional and up-to-date - Migration of ROS 1 Action support to a separate extension package for
roslibjs, to preserve its implementation as the core moves forward with a ROS 2 focus - Migration of ROS 1 TF support to a separate extension package for
roslibjs, for the same reason (as it depends on ROS 1 Actions)
Acknowledgements
Reviving development of this library wouldn't have been possible without the help of long-time maintainer @MatthijsBurgh, more recent additions to the maintainer team @sea-bass, @bjsowa, and @EzraBrooks - and many contributions from other individuals such as @drewhoener, @douglascayers, @harsh-pal-robotics, @noah-wardlow, and more.
Thanks and kudos to everyone who made this happen!
Full Changelog: 1.4.1...2.0.0
2.0.0-alpha7
What's Changed
- Switch from cbor-js to cbor2 by @EzraBrooks in #1096
- Add
@xmldom/xmldomback to bundle by @EzraBrooks in #1099 - Use standard Uint8Array instead of Node.js Buffer by @EzraBrooks in #1097
Full Changelog: 2.0.0-alpha6...2.0.0-alpha7
2.0.0-alpha6
What's Changed
- Revert rename of connection event by @EzraBrooks in #1091
Full Changelog: 2.0.0-alpha5...2.0.0-alpha6
2.0.0-alpha5
What's Changed
- Fix repository URL in package.json by @EzraBrooks in #1088
Full Changelog: 2.0.0-alpha4...2.0.0-alpha5
2.0.0-alpha4
What's Changed
- Create
nexttag in NPM when prerelease by @EzraBrooks in #1087
Full Changelog: 2.0.0-alpha3...2.0.0-alpha4
2.0.0-alpha3
What's Changed
- Fix typo in Node.js version in CD by @EzraBrooks in #1085
Full Changelog: 2.0.0-alpha2...2.0.0-alpha3
2.0.0-alpha2
What's Changed
- Trigger CD on pre-releases by @EzraBrooks in #1083
- Fix CD permissions by @EzraBrooks in #1084
Full Changelog: 2.0.0-alpha1...2.0.0-alpha2
2.0.0-alpha1
What's Changed
- Bump puppeteer from 21.5.0 to 21.6.0 by @dependabot[bot] in #654
- Bump ws from 8.14.2 to 8.15.0 by @dependabot[bot] in #653
- No build files for v2 by @MatthijsBurgh in #655
- Validate existing JavaScript implementation with TypeScript by @EzraBrooks in #649
- Bump typescript from 5.2.2 to 5.3.3 by @dependabot[bot] in #658
- (README) no pre-build files anymore by @MatthijsBurgh in #656
- Add ROS 2 action support by @sea-bass in #645
- Update .npmignore file by @MatthijsBurgh in #659
- Remove socket.io support by @EzraBrooks in #661
- Bump ws from 8.15.0 to 8.16.0 by @dependabot[bot] in #662
- Bump puppeteer from 21.6.0 to 21.7.0 by @dependabot[bot] in #664
- Bump follow-redirects from 1.14.9 to 1.15.4 by @dependabot[bot] in #666
- Bump follow-redirects from 1.15.2 to 1.15.4 in /examples/react-example by @dependabot[bot] in #667
- Upgrade to eventemitter3 by @EzraBrooks in #668
- Remove Web Worker support by @EzraBrooks in #669
- Migrate from jshint to eslint by @EzraBrooks in #670
- Bump puppeteer from 21.7.0 to 21.9.0 by @dependabot[bot] in #673
- Bump puppeteer from 21.9.0 to 21.11.0 by @dependabot[bot] in #674
- Unify NodeJS and browser implementation by @EzraBrooks in #672
- Update package-lock.json to v3 by @EzraBrooks in #675
- Bump mocha from 10.2.0 to 10.3.0 by @dependabot[bot] in #676
- Bump puppeteer from 21.11.0 to 22.0.0 by @dependabot[bot] in #678
- Bump globals from 13.24.0 to 14.0.0 by @dependabot[bot] in #677
- Bump puppeteer from 22.0.0 to 22.1.0 by @dependabot[bot] in #680
- Switch from Karma and Mocha to Vitest by @EzraBrooks in #681
- Use explicit vitest API by @EzraBrooks in #682
- extend eslint config to tests/misc. JS files by @EzraBrooks in #683
- Consolidate key-spacing style by @EzraBrooks in #684
- Remove ts-node dependency by @EzraBrooks in #685
- Remove dead code from topic listener test by @EzraBrooks in #686
- Modernize import syntax to ESModules by @EzraBrooks in #665
- global -> globalThis by @EzraBrooks in #689
- Remove all remaining Grunt tasks in favor of Vite configs by @EzraBrooks in #687
- Bump eslint from 8.56.0 to 8.57.0 by @dependabot[bot] in #690
- Import fixes in demos by @sea-bass in #692
- Remove Message, ServiceRequest, and ServiceResponse types by @sea-bass in #691
- Bump typescript from 5.3.3 to 5.4.2 by @dependabot[bot] in #693
- Fix Service.advertise callback type by @EzraBrooks in #695
- Bump vitest from 1.3.0 to 1.4.0 by @dependabot[bot] in #697
- Bump follow-redirects from 1.15.4 to 1.15.6 in /examples/react-example by @dependabot[bot] in #696
- Fix test file include pattern by @EzraBrooks in #699
- Remove old object-assign polyfill, move
globalsto dev deps by @EzraBrooks in #700 - Add
advertiseAsyncmethod toServiceby @EzraBrooks in #698 - Fix un-advertisement and multiple-advertisement of Service callbacks by @EzraBrooks in #701
- Externalize EventEmitter3 dependency by @EzraBrooks in #688
- Clean up constantly initialized class members by @EzraBrooks in #702
- Bump webpack-dev-middleware from 5.3.3 to 5.3.4 in /examples/react-example by @dependabot[bot] in #703
- Bump vite from 5.1.3 to 5.2.6 by @dependabot[bot] in #704
- Bump express from 4.18.2 to 4.19.2 in /examples/react-example by @dependabot[bot] in #705
- Bump @types/node from 20.11.19 to 20.12.2 by @dependabot[bot] in #708
- Bump globals from 14.0.0 to 15.0.0 by @dependabot[bot] in #707
- Bump vite-plugin-dts from 3.7.2 to 3.8.1 by @dependabot[bot] in #706
- (actions) drop node 16 by @MatthijsBurgh in #710
- Bump eslint from 8.57.0 to 9.0.0 by @dependabot[bot] in #709
- Bump peaceiris/actions-gh-pages from 3 to 4 by @dependabot[bot] in #713
- Bump @testing-library/react from 14.2.1 to 15.0.2 by @dependabot[bot] in #712
- Bump vitest from 1.4.0 to 1.5.0 by @dependabot[bot] in #711
- Split
publishNPM hook intoprepublishOnlyandprepareby @EzraBrooks in #715 - Bump eslint from 9.0.0 to 9.1.0 by @dependabot[bot] in #717
- Bump ws from 8.16.0 to 8.17.0 by @dependabot[bot] in #721
- Bump vite-plugin-dts from 3.8.1 to 3.9.0 by @dependabot[bot] in #720
- Bump globals from 15.0.0 to 15.1.0 by @dependabot[bot] in #719
- Bump ejs from 3.1.8 to 3.1.10 in /examples/react-example by @dependabot[bot] in #722
- Bump vitest from 1.5.0 to 1.6.0 by @dependabot[bot] in #724
- Bump eslint from 9.1.0 to 9.2.0 by @dependabot[bot] in #723
- Bump globals from 15.1.0 to 15.2.0 by @dependabot[bot] in #727
- Bump eslint from 9.2.0 to 9.3.0 by @dependabot[bot] in #729
- Bump globals from 15.2.0 to 15.3.0 by @dependabot[bot] in #728
- Bump jsdom from 24.0.0 to 24.1.0 by @dependabot[bot] in #730
- Bump eslint from 9.3.0 to 9.4.0 by @dependabot[bot] in #732
- Bump @types/node from 20.12.2 to 20.14.0 by @dependabot[bot] in #733
- Bump globals from 15.3.0 to 15.4.0 by @dependabot[bot] in #735
- Bump @testing-library/react from 15.0.2 to 16.0.0 by @dependabot[bot] in #734
- Add
ROS2TFClientby @pac48 in #731 - Bump braces from 3.0.2 to 3.0.3 by @dependabot[bot] in #736
- Bump eslint from 9.4.0 to 9.5.0 by @dependabot[bot] in #740
- Bump vite from 5.2.6 to 5.3.1 by @dependabot[bot] in #739
- Bump globals from 15.4.0 to 15.5.0 by @dependabot[bot] in #738
- Bump braces from 3.0.2 to 3.0.3 in /examples/react-example by @dependabot[bot] in #737
- Bump ws from 8.17.0 to 8.17.1 by @dependabot[bot] in #741
- Bump socket.io from 4.6.0 to 4.7.5 in /examples/react-example by @dependabot[bot] in #743
- Bump globals from 15.5.0 to 15.6.0 by @dependabot[bot] in #745
- Bump typescript from 5.4.2 to 5.5.2 by @dependabot[bot] in #744
- Bump globals from 15.6.0 to 15.7.0 by @dependabot[bot] in #749
- Bump eslint from 9.5.0 to 9.6.0 by @dependabot[bot] in #747
- Bump ws from 8.17.1 to 8.18.0 by @dependabot[bot] in #754
- Bump globals from 15.7.0 to 15.8.0 by @dependabot[bot] in #752
- Bump eslint from 9.6.0 to 9.7.0 by @dependabot[bot] in #759
- Bum...
1.4.1
Full Changelog: 1.3.0...1.4.1
This is the final v1 release
What's Changed
- Auto docs by @MatthijsBurgh in #539
- Bump actions/checkout from 2 to 3 by @dependabot in #540
- (docs) add markdown parser to fix docs by @MatthijsBurgh in #541
- Abuse default tag to show library version in docs by @MatthijsBurgh in #545
- Bump grunt from 1.5.2 to 1.5.3 by @dependabot in #549
- Bump ws from 8.6.0 to 8.7.0 by @dependabot in #550
- Improve RosTCP.js logging by @jamestiotio in #551
- Bump ws from 8.7.0 to 8.8.0 by @dependabot in #554
- Bump karma from 6.3.17 to 6.4.0 by @dependabot in #555
- Add channel omission flags to ActionClient's JSDoc param tag by @jamestiotio in #556
- (actions) use container by @MatthijsBurgh in #553
- Standardize and improve docstring by @jamestiotio in #562
- Update async >=2.6.4 by @MatthijsBurgh in #565
- Bump ws from 8.8.0 to 8.9.0 by @dependabot in #566
- Bump @xmldom/xmldom from 0.8.1 to 0.8.3 by @dependabot in #568
- Bump mocha from 10.0.0 to 10.1.0 by @dependabot in #569
- Bump ws from 8.9.0 to 8.10.0 by @dependabot in #571
- (actions) use cache of setup-node by @MatthijsBurgh in #572
- Fix socket.io-parser by @MatthijsBurgh in #573
- Node 16 by @MatthijsBurgh in #574
- Fix: auto updating of build by @MatthijsBurgh in #575
- Bump ws from 8.10.0 to 8.11.0 by @dependabot in #576
- Bump engine.io from 6.2.0 to 6.2.1 by @dependabot in #577
- Bump @xmldom/xmldom from 0.8.3 to 0.8.4 by @dependabot in #578
- Bump puppeteer from 19.2.0 to 19.3.0 by @dependabot in #580
- Update examples by @MatthijsBurgh in #581
- Bump mocha from 10.1.0 to 10.2.0 by @dependabot in #583
- Bump puppeteer from 19.3.0 to 19.4.0 by @dependabot in #582
- (README) remove link to demos by @MatthijsBurgh in #585
- Bump ws from 8.11.0 to 8.12.0 by @dependabot in #588
- Bump puppeteer from 19.4.0 to 19.5.2 by @dependabot in #589
- Bump ua-parser-js from 0.7.31 to 0.7.33 by @dependabot in #592
- Bump grunt from 1.5.3 to 1.6.0 by @dependabot in #594
- Bump puppeteer from 19.5.2 to 19.6.2 by @dependabot in #593
- Run ChromeHeadLess without sandbox in CI by @MatthijsBurgh in #598
- Bump puppeteer from 19.6.2 to 19.7.1 by @dependabot in #596
- Bump socket.io from 4.5.0 to 4.6.0 by @dependabot in #595
- React example by @MatthijsBurgh in #597
- Bump ws from 8.12.0 to 8.13.0 by @dependabot in #600
- Bump webpack from 5.75.0 to 5.76.1 in /examples/react-example by @dependabot in #601
- Bump puppeteer from 19.7.1 to 19.8.0 by @dependabot in #602
- Bump puppeteer from 19.8.0 to 19.9.0 by @dependabot in #604
- Bump karma-chrome-launcher from 3.1.1 to 3.2.0 by @dependabot in #607
- Bump puppeteer from 19.9.0 to 19.10.1 by @dependabot in #606
- Bump puppeteer from 19.10.1 to 19.11.1 by @dependabot in #608
- Bump engine.io from 6.4.1 to 6.4.2 in /examples/react-example by @dependabot in #611
- Bump engine.io from 6.4.0 to 6.4.2 by @dependabot in #610
- Bump puppeteer from 19.11.1 to 20.1.1 by @dependabot in #612
- Bump puppeteer from 20.1.1 to 20.2.0 by @dependabot in #613
- (examples) no need for EventEmitter CDN by @MatthijsBurgh in #615
- Bump socket.io-parser from 4.2.2 to 4.2.3 in /examples/react-example by @dependabot in #617
- Bump socket.io-parser from 4.2.2 to 4.2.3 by @dependabot in #616
- Bump puppeteer from 20.2.0 to 20.4.0 by @dependabot in #618
- Bump puppeteer from 20.4.0 to 20.5.0 by @dependabot in #619
- Bump puppeteer from 20.5.0 to 20.7.2 by @dependabot in #620
- Bump socket.io from 4.6.0 to 4.7.0 by @dependabot in #621
- Bump puppeteer from 20.7.2 to 20.8.0 by @dependabot in #623
- Bump tough-cookie from 4.1.2 to 4.1.3 in /examples/react-example by @dependabot in #622
- Bump semver from 6.3.0 to 6.3.1 in /examples/react-example by @dependabot in #624
- Bump word-wrap from 1.2.3 to 1.2.4 in /examples/react-example by @dependabot in #625
- Bump word-wrap from 1.2.3 to 1.2.4 by @dependabot in #626
- Bump puppeteer from 20.8.0 to 20.9.0 by @dependabot in #627
- Bump puppeteer from 20.9.0 to 21.0.1 by @dependabot in #628
- Bump puppeteer from 21.0.1 to 21.1.0 by @dependabot in #629
- Bump @adobe/css-tools from 4.0.1 to 4.3.1 in /examples/react-example by @dependabot in #630
- Bump ws from 8.13.0 to 8.14.1 by @dependabot in #631
- (actions) don't run melodic, run 20 by @MatthijsBurgh in #633
- Bump actions/checkout from 3 to 4 by @dependabot in #632
- Bump puppeteer from 21.1.0 to 21.2.1 by @dependabot in #634
- Bump puppeteer from 21.2.1 to 21.3.4 by @dependabot in #635
- Bump stefanzweifel/git-auto-commit-action from 4 to 5 by @dependabot in #637
- Bump @babel/traverse from 7.20.10 to 7.23.2 in /examples/react-example by @dependabot in #639
- Bump puppeteer from 21.3.4 to 21.4.0 by @dependabot in #640
- Bump browserify-sign from 4.2.1 to 4.2.2 by @dependabot in #641
- Bump actions/setup-node from 3 to 4 by @dependabot in #642
- Bump puppeteer from 21.4.0 to 21.5.0 by @dependabot in #644
- Ensure
fieldTypeis a scalar ifarrayLenis-1by @scottbell in #638 - Add fail callback and missing docstrings to params by @epaezrubio in #357
- Release process document by @MatthijsBurgh in #570
- Update changelog by @MatthijsBurgh in #650
- Bump @adobe/css-tools from 4.3.1 to 4.3.2 in /examples/react-example by @dependabot in #651
New Contributors
- @jamestiotio made their first contribution in #551
- @scottbell made their first contribution in #638
- @epaezrubio made their first contribution in #357
Full Changelog: 1.3.0...1.4.1