Repository navigation
v0.8.4
Release v0.8.4
📦 NPM packages
🐳 Docker image
docker pull ms2data/malloy-publisher:0.8.4
docker pull ms2data/malloy-publisher:latest
ℹ️ Details
- Release branch:
release/sdk-0.8.4 - Triggered by: @Sha-Bang
Publisher serves .malloy notebooks
A .malloy file directly under a package's top-level notebooks/ whose model-level notes include
## artifact { kind=notebook … } is now a served notebook. Its cells are read from the file in order:
floating (markdown) notes, one query cell per run: with its tag block, and one definition
cell per other statement. List-notebooks includes served notebooks beside .malloynb files. Get-notebook returns
one with a format (malloynb or malloy) and, per cell, a kind (markdown, query or
definition). A code cell also carries a markdown field when (markdown) prose is attached to its
statement, a proseLines field naming the lines of its text that hold that prose (0-based,
inclusive [start, end] pairs, [] when none), a codeLine field with the line where its
statement's code starts, and a caption field with its leading #" text when it has one. The Console opens one at notebooks/<slug>. A served notebook keeps
modelType: model, so the model GET, /compile, MCP execute_query and the declared-givens fetch
treat it as any model.
Behavior changes to know about:
- list-models excludes served notebooks, with or without a surface, so they are absent from MCP
get_contextas well. Use list-notebooks. - Notebook prose is an annotation on the
(markdown)route, and the number of#says what it
belongs to.##|(markdown)…|##(the body starts on the next line) or##(markdown) textis
a cell of its own, and adjacent lines merge.#(markdown) textor#|(markdown)…|#belongs
to the statement below it (run:,source:,query:,given:,type:) and renders with that
cell, as a header above arun:'s result and above its#"caption. It cannot sit above an
importorexport, which take no annotations; use##|(markdown)there. Earlier
spellings are still read:##",##|",##(text)and##|(text)notes below a notebook's tag
are markdown cells too, with no lint finding (a name on a block draws a warning). - A notebook's description is the unnamed
"notes above## artifact. A dashboard's is the
same, and when it has none above it still reads the ones below the tag, with a lint warning to
move them above. The in-repo dashboards already put theirs above. On a dashboard,##|(text) name
is still a text tile, with no lint finding. notebooksis a segment the Console owns./<env>/<pkg>/notebooks/<file.ext>no longer reaches
a package'spublic/notebooks/.- The published-names filter now applies to
modelInfo.anonymous_querieson the model GET for every
curated model, and to a.malloynbGET'sanonymous_queriesunder a surface: only runs over
published sources are returned. /compilereports new lint problems on files undernotebooks/anddashboards/, each naming
its line and the fix, and they appear in package warnings. A served notebook whose cells cannot be
read is anerror.- New metrics:
publisher_notebook_discovery_total{format,outcome},
publisher_notebook_cell_executions_total{format,kind,outcome}and
publisher_notebook_cell_execution_duration_ms{format,outcome}.
dashboard_columns is read again, as a deprecated alias
The 0.2.1 note that said dashboard_columns is gone is superseded.
dashboard { columns=N } beside the artifact tag stays the canonical grid width, and
dashboard_columns=N inside the artifact tag is a deprecated alias that Publisher reads when
columns is absent. It draws a warning, and when the two disagree it is an error naming both values
and columns is what is served. A package that spelled the alias and got the default width now gets
the width it wrote.
kind=dashboard on a dashboards/ file's artifact tag and kind=query on a tile entry are accepted
as the explicit defaults. A text tile is a named ##|(markdown) name block listed in tiles with
kind=text; the format is decided, but text tiles are not rendered yet. Eight finding codes fail
/compile regardless: notebook-statement-above-artifact, notebook-tag-above-artifact and
notebook-markdown-above-artifact (a statement, a tag or a (markdown) note above a served
notebook's ## artifact), notebook-columns-conflict (a tiled dashboard's dashboard_columns
disagrees with dashboard { columns }), notebook-markdown-opener-text (more than a name after
(markdown) on a block's opener), notebook-markdown-attached-nowhere (a #(markdown) note with no
statement to take it), notebook-artifact-unparsed (an ## artifact tag that does not parse), and
notebook-cells-unreadable (a served notebook's cells could not be read).
Package-scope /compile fails when any file in the package has one.
What's Changed
- chore(release): stamp 0.8.3 on main by @housejester in #1263
- feat(server): let a gateway list, show and run a package's files off its surface for the package's authors by @jswir in #1261
- feat(server, sdk): serve notebooks written as plain .malloy files, with prose as (markdown) annotations by @Sha-Bang in #1259
- refactor(server): rename includeOffSurface to includeHiddenFilesAndSources by @jswir in #1264
- feat(skills): malloy-queries names the query mistakes an agent makes most (aggregates in calculate, no percentile, range comparisons, day_of_year, wider reserved words, required #(filter)) by @kylenesbit in #1249
- skills: givens reach callers through index.malloy's imports, and what each miss looks like by @jswir in #1245
- fix(deps): clear the open Dependabot alerts by @kylenesbit in #1253
Full Changelog: v0.8.3...v0.8.4