Releases: nyblnet/bento
Release list
bento/slides v1.0.18
Download the single file below and open it in any modern browser — it's the document, the viewer and the editor in one. Shipped files self-update through the signed release channel.
-
Security: offline mode did not block everything it promised. The switch
says "nothing leaves this computer", and five things still went out with it
on: a manual Check for updates called the release server, Manage
languages… downloaded the pack index and any pack you added, a deck's video
or image pointing at a web address still loaded from it, requests already
running were left to finish, and a second tab that was already in a live
session kept syncing edits.The last two matter most. A remote image or video in a document is the
cheapest tracking beacon there is — it tells whoever hosts it that you opened
the file, and when — and offline mode is exactly what you would turn on
before opening a deck you did not write. The second tab was worse: real
document content kept moving.Separately, where a browser blocks site data — a private window, or a
locked-down setup — the checkbox showed the switch on while nothing had been
stored, so it did nothing at all. It now holds for the session regardless and
says plainly that it will not survive a reload.Offline mode now covers all of it: the network is reachable from exactly one
place in the code, flipping the switch cuts requests and connections that are
already open rather than only the next one, and a deck's remote images and
video are left unloaded. Reported privately, with a reproduction — and found
by watching real traffic after reading the code twice suggested there was
nothing wrong. -
Updating a file no longer interrupts you. With Bento Tray installed and a
folder granted, "Update this file" now finishes without a single dialog. The
backup it leaves behind is saved beside your document instead of being
downloaded — so the copy you would roll back to sits next to the thing it
backs up, rather than in your downloads folder. Without the extension it is
still a download, exactly as before.Two things caused the prompt. The backup was handed to the browser's download
machinery, which asks where to put things if you have told Chrome to; and an
update of a double-clicked file described itself to the extension as an
export, so the extension — correctly — refused to write it for you. -
Fix: Share opened cut in half on a narrow window. Once the window is
narrow enough to fold the toolbar into ⋯, opening Share from that menu
drew the popover sliced down its left edge, with the properties panel showing
through the gap where the rest of it should have been. Share and Language now
open as a section of the ⋯ list itself — full width, scrolling with it,
nothing hanging over an edge to be cut off.The ⋯ menu scrolls when it has more in it than fits on screen, and a box that
scrolls in one direction quietly clips the other whether you asked for that or
not. Anything floating inside it was always going to be trimmed. Wide windows
were never affected: the fold only happens when the toolbar runs out of room. -
The update card drops its peach stripe. The "Version X is available" card
in About carried a thick accent rule down its leading edge — the only stripe
of its kind anywhere in the app, and a hard-coded colour, so it stayed peach
while everything around it moved into dark mode. It now has the same quiet
1px border as every other surface in the dialog and themes along with them.
The accent stays where it earns its place: on the button you press.
bento/slides v1.0.17
-
Security: update this file. A deck could run code hidden in its own
content. Ordinary-looking document content — an image, a shape, an embedded
drawing — could carry script that ran when the slide was drawn, or quietly
send the reader somewhere else. No unusual file was needed and nothing looked
wrong on screen.That matters more here than in most applications, because a Bento file is not
a passive document: the page holding it also holds the live-session keys, the
local autosave copy, and — where the browser allows it — permission to write
back to the file on disk. Anything running inside the page inherits all of it.Every path that turns author content into a page is now sanitised: the
renderer, the still image written for file-manager thumbnails, and the PDF
export. The iOS host no longer trusts a filename a document supplies, blob
fetches verify what they received, and new password-protected files use a
stronger key derivation.Two exports were also leaking. "Copy document JSON" carried the live
room's private keys — while suggesting you paste the result into an AI chat —
and "Save as template…" wrote readable content out of a password-protected
deck. A third case kept a key in an invite copy that should not have had one.
All three now strip, through one list in one place rather than three
independent decisions.If you have already shared a live deck — its JSON, or the file itself, to
a chat, a ticket or an agent — updating does not retract that. Use Share →
Rotate keys, which mints a new room and revokes the old one, then re-share
the new copy. If you published a template made from a password-protected
deck, treat its contents as disclosed: rotation cannot take back what the
template already wrote in the clear.Found by auditing this repository rather than by a report, with an
independent adversarial review on each round, and every fix was checked to
fail against the previous build before being kept. The collaboration relay is
deliberately not part of this release — a relay deployment cannot be
undone by a file update, so it ships separately once its own regression is
resolved. -
A dark interface, if you want one. About → Appearance offers Match my
system, Light or Dark. It follows your machine by default and changes as your
machine does, so a laptop that dims at sunset takes the editor with it.Your deck does not invert. Dark dims the chrome around the slide; the
slide itself stays exactly as authored, because its background is your data
and someone proofing at midnight still needs to see what will be projected.
The presenter window stays dark in both themes — you present in a dark room.The theme is a viewer preference, stored on your machine and never written
into the file, so it never travels to whoever you send a deck to. Same rule
the interface language and reduced motion already follow. -
Hide a slide from the show. Toggle Hide slide in the Slide panel and it
stays in the deck, fully editable, but drops out of the walk: arrow keys pass
over it, PDF export leaves it out, and it is never picked as the file's
thumbnail. An elementlinkstill reaches it, which is the point — backup
numbers, an appendix, the detail slide you only open if somebody asks.Hidden slides do not take a page number, so
{{page}}/{{pages}}stay
contiguous for the audience: the same rule interactive states already follow,
rather than a second one to remember. If you prefer the office-suite
behaviour, where a hidden slide keeps its number so the visible ones do not
renumber while you toggle slides during rehearsal, turn on Number hidden
slides under Slideshow.The sidebar shows what the audience would count — a hidden slide's number is
struck through, or replaced by a dash when it has none — because a slide you
have forgotten you hid is a slide you find out about mid-presentation. -
A deck that is being shared now says so before an agent reads it. A file
with live collaboration switched on carries the keys to its own session —
that is what makes sharing work without accounts, and it means anything
receiving the file receives the room: a chat, a ticket, an agent harness.
Nothing about a document looks like a credential, so this was easy to do by
accident.The agent guide and the packaged skill now open by checking for it and
saying so, andwindow.bento.validate()reports it as
collab-secrets-present— only when private key material is actually there,
so a read-only copy stays quiet. Removing the keys afterwards does not
retract them; if a shared deck has already gone somewhere, Share → Rotate
keys is the remedy. -
Fix: a live session could crash when two people created the same element at
the same moment. Sharing an element id across slides is the morph idiom —
it is what id continuity is for — so two collaborators inserting one
concurrently is ordinary, not a collision. If one copy carried a property the
other did not (a shadow, a gradient fill, an outline, a group, a link), the
replica receiving the other's insert threw and the session stopped. Nothing
was lost from the file; the tab simply stopped keeping up. Same one-line
defect as the two before it in this engine — a debug string built eagerly
around a value that can legitimately be absent — and it is now pinned by a
test with a deterministic trigger rather than left to a random rig's depth. -
Fix: the end of the toolbar could be cut off the right edge. Between
roughly 1200 and 1250 pixels wide, the buttons on the right ran past the
window while their labels were still showing — the bar collapsed to icons at
1200px, but it actually needed 1250px to fit. A fixed width was never going
to be right, because the same buttons need a different amount of room
depending on browser zoom, system text size, the language the interface is
in, and whether the update chip is showing. The bar now measures itself and
steps down through its tiers until it fits, whatever is in it. -
Fix: on a narrow window, the ⋯ menu could not be clicked. With the
properties panel open, the menu opened and drew in full, but every click on
it landed on the panel behind instead. The toolbar sits in its own painting
layer, and that layer was ranked below the panel — so nothing the menu itself
could do would bring it forward. The toolbar now sits above the panels, where
a menu that escapes it belongs. -
Fix: choosing a custom slide size now reveals its width and height. The
page-size picker rebuilt the properties panel before recording any custom
state, so a preset-sized deck immediately snapped back to its preset and the
two inputs never appeared. Custom mode now reveals the existing controls
without changing the document until a dimension is actually edited. -
Fix: the toolbar keeps its height as you resize the window. Narrowing
past 760px used to shave 4px off it and then, below 700px, add 14px back for
touch-sized buttons — so the bar shrank and then grew while a window was
being dragged. It now narrows horizontally only, which is where the room was
needed anyway, and has two heights with a reason each: normal, and taller on
a phone where every button is a 44px target.
bento/slides v1.0.16
Download the single file below and open it in any modern browser — it's the document, the viewer and the editor in one. Shipped files self-update through the signed release channel.
- Fix: the slide could open off-centre, pushed to one side and clipped.
Most likely on a deck whose page is larger than the default — a 1600×900 deck
outgrows the editing canvas at zoom levels where a 1280×720 one still fits.
The canvas gained room to pan past the slide's edges in 1.0.14, and turning
that room on moved the slide within the scrollable area without moving the
view with it, so you were left looking at the empty margin beside your slide.
Clicking the zoom percentage snapped it back, because that was the one action
that re-centred. The view now stays put across any re-layout.
bento/slides v1.0.15
Download the single file below and open it in any modern browser — it's the document, the viewer and the editor in one. Shipped files self-update through the signed release channel.
-
Fix: removing a formatting option no longer disconnects the people you are
working with. While a live session was running, taking something away —
switching a gradient fill back to solid, turning an outline off, ungrouping,
unlinking a chart from its table, clearing a click target — crashed everyone
else's copy of the deck. The person doing it saw nothing wrong; their
collaborators' sessions stopped applying changes.Removing a property is sent as an instruction with no value attached, and one
line of diagnostic code assumed a value was always there. Adding things was
always safe, which is why this survived: the convergence tests only ever
added, so an op that takes a property away had never once occurred in 45,000
checks. They generate removals now. -
"Save a copy…" and share exports remember their own folder. The save
picker used one identity for every kind of save, so it opened wherever you
last put a view-only copy even when you were saving your working file.
In-place saves, copies and share exports now each remember their own last
location.Underneath, this makes the intent of a save visible to anything hosting
Bento —tray/ios, and browser hosts — which previously could not tell ⌘S
from "Save a copy…" at all, because both arrived with identical arguments. -
Fix: the topbar came back in the wrong order after the window narrowed and
widened again. Below 700px the bar folds its buttons into two menus, and
unfolding put them back by a rule rather than by memory — everything except
Redo went into the right-hand group, immediately before Format. So Comment
migrated out of the insert tools it belongs to, and Save ended up sitting
after Help. Each button now returns to the group it was authored into, in the
order the bar was built with. -
Fix: a deck opens where the browser refuses it storage. With site data
blocked, inside some embedded webviews, or in any sandboxed frame, a Bento
file showed "This file could not start" and nothing else — because reading
thelocalStorageproperty (not calling a method on it, merely reading it)
throws in those contexts, and the very first thing the app did was read your
saved language. One unreadable preference cost you the whole document.Preferences now fall back to their defaults instead: the deck opens and
behaves as it would for a first-time visitor. Anything you change during the
session works normally; it just is not remembered.
bento/slides v1.0.14
Download the single file below and open it in any modern browser — it's the document, the viewer and the editor in one. Shipped files self-update through the signed release channel.
-
Pan the canvas by dragging, and past the slide's edges. The scrollbars
were the only way to move a zoomed slide, which puts the control at the edge
of the screen while the work is in the middle of it. Hold space and drag
to pan — the gesture nearly every canvas tool uses — or drag with the middle
mouse button if yours has one. On a trackpad a two-finger scroll already
panned once you were zoomed in, and still does.Scrolling also used to stop dead at the slide's edges, so at high zoom a
corner element could never be moved off the corner of the screen to work on
it. There is now half a screen of room beyond every edge once you zoom past
fit — enough for any point on the slide to reach the middle — and none at all
while the whole slide fits, so a view that needs no scrollbars still has
none. Asked for by gcgbarbosa. -
Fit a text box to its text, in one click. A box that is too short lets its
content spill over whatever sits below it, and one that is too tall throws off
its alignment against everything beside it — neither is visible in the numbers.
The Typography panel now has a button that sets the box to exactly the height
its text needs, and tells you what that is before you press it.Underneath is
window.bento.measure(), which answers the question the format
could not: how tall is this string at this width, in this font? Ask it with a
spec and you can size a box before creating the element, which is what turns
generating a deck from guess-then-correct into laying it out right the first
time. Requested by thinkbig1979. -
Entrances and count-ups now run on morph slides. Both were skipped
wholesale on any slide reached bytransition:"morph", which the authoring
guide actively encourages — so a headline statistic rendered as a static
number, and an element told to sweep in from the right got a small upward
nudge instead.The rule is now per element. One that morphs in from the previous slide is
already in motion and still ignores both. One that is new to the slide has
nothing to fight, so it counts up, and enters the way you asked — direction,
duration and order included. Elements with nofx.enterkeep the automatic
fade-and-rise, so nothing changes in a deck that did not ask for it. -
Fix: the built-in layouts fit the slide. They were drawn for a 1600×900
stage while the default deck is 1280×720, so applying Title put the title
box 160 px off the right edge and Title + content overflowed the bottom by
88 px. They are now scaled to the deck's own page size, which also makes them
correct for the custom sizes the slide panel offers. -
Check a deck for what the runtime silently swallows. Almost everything
that goes wrong in a generated deck fails quietly: a typo'd property is
ignored, adash-marchloop on a solid stroke animates nothing, a typeface
the file never carried falls back to something else, and text overflows its
box while the JSON looks perfect.window.bento.validate()reports all of it
in one structured pass, including text overflow measured against the real
renderer. It only reads — it never changes the document.Its first run found dead configuration in our own starter deck: three charts
carrying a chart option the renderer has never read, and two entrance
animations that could never play. Requested by thinkbig1979. -
Fix: two gallery templates asked for a typeface they did not carry. The
Orbital and Pixel Picnic templates set their text in Instrument Sans but
embedded no font at all, so every viewer without that typeface installed
silently got Helvetica Neue instead. They now carry the face — and only the
face they use, rather than every font the gallery has. The failure was
invisible to us for the worst possible reason: whoever builds a template is
the person most likely to have its typeface installed. -
The agent authoring guide describes what the runtime actually does.
agents.mdgained the download URL, the realfx.loopparameters (and the
strokeStylea dash-march needs to be visible), the chart option keys
charts-lite honours,morphId, layouts androle, column arithmetic for the
1280×720 canvas, and an accurate account of embedded fonts. Every gap here
was found by an agent authoring a deck from the guide alone, and every one of
them failed silently. Reported in detail by thinkbig1979.
bento/slides v1.0.13
Download the single file below and open it in any modern browser — it's the document, the viewer and the editor in one. Shipped files self-update through the signed release channel.
-
Fix: fade, slide and zoom transitions animate again. They had been
instant cuts. Reveal only mounts slides withinviewDistance, which was set
to 1 — so the slide being moved to was not in the page, and a CSS
transition had nothing to animate into. Morph was unaffected, because that
is Bento's own animation rather than Reveal's. Found and fixed by James
London. -
Copy and paste keeps embedded typefaces intact. Pasting elements into
another deck used to lose their embedded font entirely, and pasting slides
carried every face in the source deck while omitting the bytes they pointed
at. Both now carry exactly the faces in use, and a name collision keeps the
recipient's own bytes. Fixed by Kushida. -
Update notes now cover every version you skipped. The About dialog
described only the newest release, so upgrading across two versions told you
nothing about the one in between — and 1.0.12 was barely a day old when this
release became necessary. It now spans the releases you missed.
bento/slides v1.0.12
Download the single file below and open it in any modern browser — it's the document, the viewer and the editor in one. Shipped files self-update through the signed release channel.
-
A laser pointer while you present. Press L in the slideshow and the
cursor becomes a red dot trailing a short comet tail, for pointing at the
thing you are talking about. Press L again to put it away. It is presenter
equipment, not deck content: nothing about it is written into the file, so a
deck you point at is byte-identical to one you did not. -
Decks thumbnail properly on iPhone and iPad. 1.0.11 taught files to draw
a picture of page one in Finder, and it worked everywhere except the platform
most likely to need it — iOS renders neither a page's JavaScript nor its
<noscript>, so a deck in Files stayed the same dark box. The preview is now
ordinary markup followed by a script that removes it before the browser paints
a frame, which the thumbnailer keeps and every reader never sees. Existing
decks pick this up the next time you save. -
Count-up numbers keep their thousands separators. A number written
1,234counted up to1.234and stayed wrong once the animation finished;
1,234,567became1.2340000. Numbers now settle exactly as you typed them,
in your own convention —1,234.5and1.234,5both survive, and a sentence
ending in a number keeps its full stop. -
The tab tells you which file you are editing. A deck's title and its file
name drift apart constantly — rename the deck and the file on disk keeps its
old name — and only one of them answers what does ⌘S overwrite? The tab and
a small chip beside the title now show the file, whenever the two differ. -
Save offers the file you are looking at. Opening
Q3-board.bento.html
and pressing ⌘S used to propose savingBento_Slides_Showcase.bento.html—
the name was built from the deck's title, so an ordinary save quietly
suggested a second file beside the real one. It now offers the file you
actually opened. (Exports — share copies, templates — still name themselves;
those are deliberately new files.) -
Drop a deck onto an open editor to switch to it. With a deck already open,
dragging another.bento.htmlin from Finder opens it in place of the current
one. On Chrome and Edge it arrives with permission to write back, so ⌘S saves
it without a dialog — which a deck opened by double-clicking cannot do, since
the browser gives such a page no way to write to its own file. -
Release notes in the About dialog get room to be read. An available
update is now one card — version, what changed, and the two ways to take it —
and the notes are a real list inside their own scroll region rather than a
140px porthole in a dialog that was itself scrolling. The dialog is 440px
wide instead of 360 (capped to the viewport, so a 375px phone keeps its
gutters), which is enough that the five bullets a release carries fit whole
at any normal window height. -
Turkmen, taking the language packs to 22. Contributed and reviewed by a
native speaker (Mekan Soltanov), and the only pack currently complete against
the whole interface. Install it from the globe menu → Manage languages. -
Save a copy, set a password or reach version history from a phone. The
Save button's caret does not fit beside a 44px target, which left every file
operation behind it unreachable on a phone — save a copy, duplicate as a new
deck, the password actions, version history and the JSON round-trip. They now
sit at the bottom of the ⋯ menu. -
Fix: the current slide's thumbnail stays visible. Walking a long deck with
the arrow keys scrolled the canvas but not the sidebar, so the highlighted
thumbnail wandered off-screen. Contributed by Yishen Tu. -
Fix: the auto-save tip pointed at the wrong menu. It said version history
lived in About; it moved to the Save menu several releases ago.
bento/slides v1.0.11
Download the single file below and open it in any modern browser — it's the document, the viewer and the editor in one. Shipped files self-update through the signed release channel.
-
LaTeX maths in any text box, rendered as MathML. Type
$E=mc^2$and it
renders as a formula —$$…$$for a display equation on its own line. The
document stores exactly what you typed, so a deck with maths still opens in
an older copy of Bento: you'll see the plain$E=mc^2$rather than a broken
slide. -
Symbol-level formula morphing. On a morph transition, a term that
crosses the equals sign is seen to travel there instead of the whole
formula crossfading. Give the element the same id on both slides and$a + b = c$becomes$a = c - b$with thebmoving across. The starter deck
demonstrates it. -
Twenty-one installable language packs, each hash-signed. The globe menu
gains Manage languages… — install a language from the release channel or
remove one you don't need. Arabic, Hebrew, Hindi, Korean, Russian,
Ukrainian, Vietnamese and fourteen others are available without adding a
byte to files that don't use them. Each pack's fingerprint is signed
alongside the release, so installing a language is verified exactly like an
update.Your choice lives in the browser, never in the document — a deck written in
Tokyo opens in French chrome for a French reader, and the deck itself is
unchanged either way. -
The editor is usable at 402px — the topbar folds instead of overflowing.
The toolbar used to need about 680px of a 402px screen: it ran off the edge,
took the Save button with it, and because nothing clipped it, swiping the
toolbar dragged the whole canvas sideways. On a phone it now folds into two
menus — + for inserting and ⋯ for everything occasional — leaving slides,
insert, undo, format, save and more, at proper touch size. The side panels
slide over the canvas instead of squeezing it, so the slide you're editing
is no longer the smallest thing on screen. Nothing changes on a laptop.Known gap: the save-as menu (copy, new deck, template, password) doesn't fit
on a phone yet and is unreachable there for now. -
Decks carry a page-one preview, so Finder and Files thumbnail them
properly. Every Bento file used to thumbnail as the same dark box, because
thumbnails are drawn without running a page's JavaScript and, until Bento
boots, every deck genuinely is the same bytes plus the same boot splash.
Saving now writes a still picture of page one into the file, which is what
those previews draw instead — so a folder of decks is finally something you
can read. It costs about 14 KB on a typical deck (under 2% of the file),
never more than 64 KB: a page with a big photograph keeps its layout and its
words and drops the photograph rather than carrying it twice. Nothing
changes when you open a deck normally — the picture is written for software
that can't run the file, and is never shown to a reader.A password-protected deck gets no preview at all. A readable picture of
the title page sitting next to the encrypted document would give away exactly
what the password is there to protect, so encrypted decks keep the plain dark
thumbnail — and a deck that had a preview loses it the moment you set a
password. -
Deck-level toggles for slide number, progress bar and corner arrows.
They live in a new Slideshow section of the slide panel. They're
deck-wide and travel in the file, so a deck you hand to someone else
presents the way you designed it. -
Release notes ride in the signed manifest, shown before and after
updating. When an update is available the About dialog now lists the
headlines from that release inline, instead of only a version number and a
link off to GitHub — and because they travel in the signed manifest, they
can't be tampered with. After the update lands and you reload, Bento says
once which version you're now on, with a link to the full notes. It only
says it if you actually upgraded: someone opening a deck you sent them never
sees it. -
A Screen Wake Lock is held for the length of a presentation. Phones and
laptops used to dim and lock partway through a talk if you left a slide up
for a couple of minutes. Bento now holds the screen on for the length of the
show and lets go when you exit — and takes the lock again if you switch away
and come back. -
Honest save messaging where the File System Access API is missing. Those
browsers (and every browser on iPhone and iPad) can't rewrite a file in
place — Bento hands back an updated copy instead. The editor used to say the
opposite in its tooltips and only admit it in a passing message after the
first save. It now says what will actually happen before any work is at
stake, once per browser, and the Save button describes the real behaviour.Those browsers also now show that your work is being kept safe. Bento has
always snapshotted the deck into the browser as you edit and offered it back
when you reopen, but on Safari and Firefox nothing ever said so — the only
signal was an amber dot that never cleared. It now reports when it last
backed up, while still showing the file itself as out of date, because it is.
(A password-protected deck is never snapshotted, so it stays quiet rather
than promise a safety net it doesn't have.) -
The update save dialog pre-fills the open file's own name. It offers the
name of the deck you have open rather than one derived from its title — so a
file calledQ3-board.bento.htmlno longer offers to save itself as
Q3_Board_Review.bento.html. The backup written alongside an in-place
update follows the same name. Where the save dialog opens is set by the
browser and can't be pointed at a folder by the page, but it now remembers
the last place you saved, so the second update onwards starts in the right
directory. -
The starter deck is called “Bento Slides Showcase” again. The lowercase
rebrand swept the deck's own title along with the app's, but a deck title is
a document name — it shows in the window title and becomes the suggested
filename — so it reads better in title case. Thebento/slideswordmark is
unchanged. -
Charts honour axis and legend text styles, and measure CJK correctly.
The lightweight chart renderer applies configured font sizes and weights to
axis labels and legends, respects legend spacing and placement, and measures
CJK legend text correctly so localized series names no longer overlap. -
Fix: a formula you opened but didn't change now redraws when you finish.
Editing a formula (or a{{page}}-style field) shows its raw source; leaving
without typing anything used to leave that source on the slide until
something else happened to repaint. -
Fix: Reveal's scroll view no longer activates below 435px. Below about
435px wide, the presentation was quietly switching to a scrolling reading
layout instead of a slideshow — so swipe navigation stopped working and
hidden interactive slides became scrollable content. -
Fix: saves no longer accumulate an uncompressed copy of the stylesheet.
Each save wrote a fresh, uncompressed copy of the app's stylesheet into the
file, which the next save then copied again — a deck saved ten times carried
ten of them and had put on a megabyte for nothing. The stylesheet belongs in
the compressed runtime payload, where it takes 27 KB and is written exactly
once; a file that already accumulated copies drops all of them the next time
you save it. -
Fix: the cartesian grid reserves room for the legend's real height.
Charts that don't set their own margins now leave room for the legend at
whatever size it's set to, instead of assuming the default one. -
Fix: starter-deck axis labels back above the WCAG AA contrast floor.
They were being drawn half-transparent against a dark panel. -
Fix: the About dialog's update section no longer overlaps the controls
below. Once an update was found, the extra heading and buttons collapsed
into a sliver and drew on top of the auto-check and offline switches. It now
takes the room it needs and the dialog scrolls.
bento/slides v1.0.10
Download the single file below and open it in any modern browser — it's the document, the viewer and the editor in one. Shipped files self-update through the signed release channel.
-
Table defaults can follow the deck theme. A deck may now define table
colours, typography, spacing, borders, and corner radius intheme.table.
Tables inserted from the toolbar inherit those defaults, and switching back
from the Minimal preset restores the themed header treatment. Existing decks
without table defaults keep the same built-in appearance. -
Fix: deleting a slide could empty the deck entirely. The "a deck needs at
least one slide" guard counted the slides you had rather than the ones that
would be left — and deleting a slide also deletes its interactive states. So
a deck holding one slide plus one state of it passed the check, lost both,
and left the editor with nothing to show. Deletion then appeared stuck. The
guard now checks what survives. -
Fix: setting a morph id by hand did nothing. Pairing two elements across
slides via the Morph panel silently failed — the element matched up but never
animated, so morphing only worked through the duplicate-a-slide route. Both
ways work now. -
Photos and video now work in live collaboration. This finishes what
1.0.9 could only warn you about: previously anything past about half a
megabyte was simply too big to send to your collaborators. Now a large image
is uploaded once, encrypted, and everyone else pulls it down in the
background — so you can drop a full-resolution photo into a shared deck the
same way you would in a deck you're editing alone. A 3MB photo used to
produce a message the relay refused outright; it now travels as a reference
of about a hundred bytes.As always the server never sees the picture: it is encrypted before it
leaves your machine, and the relay stores bytes it cannot read. Collaborators
on the same computer don't involve the relay at all. Small images are still
carried inside the document exactly as before, so nothing changes for
ordinary decks, and a self-hosted relay without blob storage keeps working —
it just falls back to the old inline-only behaviour.
bento/slides v1.0.9
Download the single file below and open it in any modern browser — it's the document, the viewer and the editor in one. Shipped files self-update through the signed release channel.
Fixed
- Large text could silently kill live collaboration. A text box of ~200KB or more crashed the change-differ, and because that runs on every edit, nothing synced afterwards — on any slide, with no error shown. Collaboration simply stopped.
- A failed diff can no longer wedge a session. It now recovers by sending a full snapshot, so a future bug of that shape degrades instead of silently breaking.
- Adding a large image while collaborating failed silently. Images over ~½ MB were dropped on the way to collaborators — they saw a broken picture while your editor retried forever. Bento now tells you when something is too large to share live, once, instead of looping. The limit itself roughly doubled.
Changed
- The wordmark is lowercase —
bento/slides, matching what the file has always called itself internally. The website now uses thebento/.platform mark. - Relay hardening: per-room storage caps and byte-based rate limits, and refusals now say why instead of dropping frames silently.
Under the hood
Shared machinery — saving, encryption, auto-save, updates, animation, charts, translations — moved into a common kernel, so the apps coming next use exactly the same document lifecycle as slides. No behaviour change.
Known limitation: media larger than ~1MB still can't be added during a live session. Media already in the file works normally. The fix needs content-addressed blob storage and is next up.