Earlier this week we released version 1.1.0 of the Coda Pack SDK, the underlying library that you use to create Packs. It is now the default in the Pack Studio, and you can update your project to use it in the CLI.
You can read the full changelog for all the details, but here are some highlights:
Progress bars in sync tables
Sync table schemas can now include progress bars. They are useful when the data you are trying to show represents progress towards some goal.
const ProjectSchema = coda.makeObjectSchema({
properties: {
name: { type: coda.ValueType.String },
progress: {
type: coda.ValueType.Number,
codaType: coda.ValueHintType.ProgressBar,
minimum: 0,
maximum: 100,
},
},
// ...
});
These progress bars aren’t interactive (users can’t change the value) and they only work in sync tables (not formulas on the canvas, etc).
Better typing for optional parameters
The advantage of using TypeScript for Packs is that it can help you catch edge cases in your code. While we already were able to correctly handle the types of parameters, we weren’t reflecting that optional parameters could also be undefined
(thanks to @balupton for raising this).
We’ve fixed this, and now you’ll get warnings from TypeScript if you code isn’t handling an unspecified parameter value.
Note that this only works in the CLI, since it requires TypeScript’s strict mode which is disabled in the Pack Studio.
Easier to install the CLI
The Pack CLI offers a lot of advanced features, but installing it has traditionally been a huge pain due to all of the required dependencies. The SDK itself doesn’t require anything other than Node.js, but theisolated-vm
library it relies on requires python and a bunch of system libraries. Meeting all of these dependencies, especially on Windows, can be quite a challenge.
We’ve now made the isolated-vm
library an optional dependency of the SDK. This means that we’ll still try to install it, but if it fails it won’t block the whole SDK installation from completing. If the isolated-vm
library fails to install then coda execute
will default to running your Pack directly in Node.js instead of the sandbox environment that isolated-vm
would have provided (the equivalent of using the flag --vm=false
).