Repository navigation
Releases: femboypuppy/Tessera-Notes
Release list
Tessera v0.1.3
Tessera Notes 0.1.3 makes deleting a page for good hold on every device, makes exports work in the desktop app, and opens large workspaces faster. It's the first release the desktop app can install by itself: 0.1.2 finds it with Check for updates… and asks before installing it. Your data and settings carry over unchanged. Upgrading is recommended.
Highlights
- Pages deleted for good stay deleted everywhere.
- A page you delete permanently on one device no longer lingers on another device that was offline at the time: that device drops its copy the next time it syncs.
- Relations that pointed to a deleted page are cleaned up by whichever device opens the workspace next, even when the tab that deleted the page closed right away. Workspaces that already have such leftovers are cleaned up the same way.
- Exports work in the desktop app. Exporting pages, the JSON backup in Settings and a database's CSV export open your system's save dialog and tell you where the file went; Save as… saves another copy. PDF export prints through the app. Before, these did nothing in the desktop app.
- Large workspaces open faster. Opening a workspace with 5,000 imported notes blocked the app for up to 470 ms; now the longest pause is about 200 ms. Large documents are merged in the background, and they're kept compact after a big import.
- The graph pans smoothly without a graphics card. On a computer without a usable GPU, dragging a graph of thousands of pages now follows the pointer (frames about 33 ms instead of 200–270 ms), and the graph redraws once you let go.
- Escape closes one thing at a time. Pressing Escape while a menu or popover is still closing no longer closes the dialog behind it as well.
- Callout titles keep their line breaks when you export to markdown and import it again.
Also: the Docker image's arm64 build now runs natively instead of under emulation, where it could hang for an hour; four security alerts in build and documentation dependencies are fixed; and contributors on Windows get instructions for cloning into deep folders.
Closed issues
- #7 Relation cleanup can leave dangling IDs if the tab closes right after a permanent delete
- #8 Escape during a popover's exit animation needs a second press
- #10 Orphaned local docs after a permanent delete on another device
- #11 Windows: long fixture paths need
core.longpathsto clone into deep folders - #30 Desktop: export downloads and printing in the webview
- #33 CI: nightly performance and load jobs
- #35 Drop Firefox's COOP preference when upgrading to Playwright 1.64
- #55 Labeler and Dependabot: the first runs
- #56 Docker: the arm64 build can hang under emulation until the job's 60-minute timeout
- #66 Opening a large workspace blocks the main thread while its workspace doc loads
- #87 Markdown: a line break in a callout's title moves the rest out of the title
- #96 Graph: panning 10,000 nodes without a GPU takes 200 ms per frame (p95)
Upgrade
- Desktop 0.1.2: choose Check for updates… (Help menu; the Tessera menu on macOS), or wait for the app to offer 0.1.3, and install it; the app restarts on 0.1.3.
- Desktop 0.1.0 or 0.1.1: download the file for your system below and install it over your version. From then on the app updates itself.
- Docker:
docker pull ghcr.io/femboypuppy/tessera:0.1.3, then recreate the container with the same volume; your data stays.latestpoints to 0.1.3 too. - In the browser: once your server runs 0.1.3, reload Tessera.
- Plugins: nothing changed for plugins; plugins made for 0.1.2 keep working.
| System | File |
|---|---|
| macOS (Apple silicon) | Tessera_0.1.3_aarch64.dmg |
| macOS (Intel) | Tessera_0.1.3_x64.dmg |
| Windows | Tessera_0.1.3_x64-setup.exe or Tessera_0.1.3_x64_en-US.msi |
| Linux | Tessera_0.1.3_amd64.AppImage, .deb or .rpm |
SHA256SUMS.txt lists every file's checksum. The desktop apps aren't signed with a developer certificate yet, so the first launch asks for your permission: on macOS, choose Open Anyway in System Settings → Privacy & Security; on Windows, More info → Run anyway.
Features
- web: add collapse all action to pages section (#79) (
d7913b9) - web: add sorting to Trash (#77) (
904b0c7) - editor: add date slash command (#78) (
9e1c13a)
Bug fixes
- memory: take every soak sample on the same page (#102) (
7ef7955) - search: pan large graphs without a GPU by moving the drawn image (#99) (
5f904aa) - deps: patched source-map-js and DOMPurify for four Dependabot alerts (#94) (
8c33cac) - desktop: save exports through the native save dialog, and print through the webview (#90) (
8d747b8) - markdown: keep line breaks in callout titles (#88) (
1cace94) - sync: drop local copies of pages deleted for good on another device (#86) (
c0d2d40) - ui: Escape during a popover's exit animation closes the layer under it (#85) (
fbdc7da) - databases: any client finishes removing deleted pages from relations, at startup too (#83) (
b67324c)
Performance
Documentation
- readme: add a downloads badge (#105) (
6a4a8c5) - contributing: clone on Windows with long paths, and keep tracked paths short (#92) (
107ee2f) - release: one line per paragraph and list item in the release notes (
bc500ff)
Maintenance (7)
- release: version 0.1.3 (#104) (
0e2d7c9) - nightly: run the load test, the benchmarks, the search perf specs and the memory soak (#95) (
ab7fdf5) - e2e: upgrade Playwright to 1.64 and drop Firefox's COOP preference (#91) (
09244b4) - docker: build arm64 natively, with step timeouts, instead of under QEMU (#84) (
9c6f5ab) - deps: Bump thiserror (#71) (
b03bbc2) - deps: Bump base64 in /apps/desktop/src-tauri (#73) (
8f68f3a) - deps: Bump the production group across 14 directories with 4 updates (#75) (
e327aa0)
Full changelog: v0.1.2...v0.1.3
Tessera v0.1.2
Tessera Notes 0.1.2 makes the plugin browser work, fixes the editor's rough edges when several people type at once, and makes large workspaces faster. It also brings a new logo and the new name: the project is now Tessera Notes, at github.com/femboypuppy/Tessera-Notes (old links redirect). Your data and settings carry over unchanged. Upgrading is recommended.
Highlights
- The plugin browser works. Settings → Plugins → Browse lists the example plugins and installs them in one click. In 0.1.1 it pointed at a registry that was never published, so it only said “Couldn’t load the plugin registry”. The registry is now published with the documentation site, and each plugin is installed only if its download matches the registry's SHA-256 checksum.
- Writing together is reliable.
- Undo and redo no longer knock the editor out of step with the shared document, and a collaborator's keystroke right after your undo no longer lands where your caret used to be.
- Two people typing the same letter at the same spot keep their own words.
- Your caret stays where you're typing when someone else's edits arrive, even when they add or move blocks at the same time.
- Faster with large workspaces.
- A keystroke on a long page costs the same as on a short one; typing in Firefox no longer slows down as a page grows.
- Creating, renaming or moving a page redraws only what shows that page, not the whole sidebar and every open database. Imports stay smoother too.
- Another open tab shows your edit right away instead of waiting for it to be saved to disk.
- With Keep a markdown copy on, the desktop app rewrites only the pages that changed.
- Plugins can't freeze the app. A plugin's panel or block that runs in an endless loop is stopped after two seconds, and the app keeps working. The Mermaid plugin loads once and draws every diagram block through a shared renderer: 9 KB per block instead of 5.2 MB. (Plugins can use renderers too: plugin API version 2.)
- The desktop app updates itself. From 0.1.2 on, it checks GitHub Releases, verifies each update's signature, and asks before installing it. Check for updates… (Help menu; the Tessera menu on macOS) or the command palette checks right away.
- Search keeps up with renames. Pages that link to a renamed page are found by its new title right away, not after their next edit.
- A new logo: a leaf made of four mosaic tiles, in the app, the desktop icons, the favicon and the docs.
Also fixed: a link that GitHub-flavored markdown finds in plain text (like +@.a) no longer gains another pair of angle brackets each time the page is saved.
Closed issues
- #1 Firefox typing latency grows with page size (y-tiptap selection mapping)
- #2 Undo or redo can desync ProseMirror and Yjs (
@tiptap/y-tiptap3.0.9) - #4 Two people typing the same character at the same spot at the same instant can swap those characters
- #6 A loop in a plugin's panel or block freezes the app in Firefox and headless Chromium
- #9 Search: linked titles in page text catch up only on the next edit
- #12 Measure first-open indexing of a large workspace in the real app
- #13 Every page change re-renders every
usePages()subscriber - #14 The Mermaid plugin loads 5.2 MB per block frame
- #15 Cross-tab sync waits for the durable IndexedDB commit
- #16 Desktop: the markdown copy re-exports the whole workspace after edits
- #50 CodeQL fails on every push: code scanning is not enabled
- #51 Docs deploy fails: GitHub Pages is not enabled
- #52 Desktop builds: the first run of
desktop.yml - #53 Docker image: the first run of
docker.yml(arm64 never built) - #54 Release workflow: the first tagged release
Upgrade
- Desktop: download the file for your system below and install it over 0.1.1. This is the last time: 0.1.2 is the first release with signed update files, so from now on the app finds new versions itself and asks before installing them (0.1.0 and 0.1.1 can't).
- Docker:
docker pull ghcr.io/femboypuppy/tessera:0.1.2, then recreate the container with the same volume; your data stays. The image keeps its name, andlatestpoints to 0.1.2 too. - In the browser: once your server runs 0.1.2, reload Tessera.
- Plugins: plugins made for 0.1.1 keep working. A plugin that declares plugin API version 2 (a renderer) needs 0.1.2.
| System | File |
|---|---|
| macOS (Apple silicon) | Tessera_0.1.2_aarch64.dmg |
| macOS (Intel) | Tessera_0.1.2_x64.dmg |
| Windows | Tessera_0.1.2_x64-setup.exe or Tessera_0.1.2_x64_en-US.msi |
| Linux | Tessera_0.1.2_amd64.AppImage, .deb or .rpm |
SHA256SUMS.txt lists every file's checksum. The desktop apps aren't signed with a developer certificate yet, so the first launch asks for your permission: on macOS, choose Open Anyway in System Settings → Privacy & Security; on Windows, More info → Run anyway.
Features
- brand: a leaf of four mosaic tiles replaces the T logo (#60) (
f952233) - plugins: generate the default registry from the example plugins (
ac7c63c) - plugins: the default registry's plugins install only with a matching SHA-256 (
6a2f4a2)
Bug fixes
- editor: a caret after someone else's change lands where Yjs puts it, or back in its moved block (#69) (
6ddc0a0) - editor: a character typed next to an identical one stays with its typist (#68) (
a1564a0) - plugins: load Mermaid once in a shared renderer, not in every block frame (#62) (
93c2862) - search: pages show a renamed link target's new title in search (#61) (
a50c8e0) - plugins: stop a loop in a panel or block instead of freezing the app (#59) (
2797fbc) - editor: an undo step's saved caret no longer reaches the next change (#58) (
22501cc) - markdown: a link GFM finds in looser text no longer gains brackets on every save (
9106583)
Performance
- editor: a keystroke on a long page no longer costs work in proportion to it (#64) (
b6d89cb) - desktop: the markdown copy writes only the pages that changed (#65) (
0b26089) - sync: other tabs see an edit before its IndexedDB commit finishes (#63) (
33dc11a) - re-render page consumers only when the pages they show change (#57) (
f20237c)
Documentation
- readme: re-record the demo and retake the showcase screenshots for 0.1.2 (
b94f1a0) - plugin screenshots load on the site, and the home page's title says Tessera Notes (
4a76081) - claude: day-to-day rules instead of the parallel-build ones (
c4419ea)
Maintenance (9)
- release: write latest.json once from the signed bundles, and check the app has the key (
6b28ff9) - release: version 0.1.2 (
37efbe8) - bench: measure the first open of 5,000 notes from IndexedDB (#67) (
f11c721) - docs: publish the plugin registry with the site, and check it after each deploy (
2b2f02b) - plugins: browse and install from the published registry, and refuse a tampered zip ([
c5ee436](https://github.com/fe...
Tessera v0.1.1
Tessera 0.1.1 fixes the problems a code scan found in 0.1.0. A few checks that read text
worked harder the longer the text got, so a single crafted cell, title or query of a few tens of
thousands of characters could keep Tessera busy for seconds or even minutes. Everything else is
unchanged, including your data and settings. Upgrading is recommended.
Fixes
- Long, crafted text no longer freezes the app. These now take milliseconds, with the same
results as before:- number, date, URL and email cells when you import a CSV file or filter a database;
- a very long query pasted into search;
- exporting a page whose title is a long run of dots and spaces;
- reading HTML and markdown when the full markdown engine isn't available.
- Server setup codes are drawn with
crypto.randomInt, which keeps every character equally
likely whatever characters the code uses. (0.1.0's codes were already uniform; this keeps them
so.)
Upgrade
- Desktop: download the file for your system below and install it over 0.1.0. (0.1.0 doesn't
update itself.) - Docker:
docker pull ghcr.io/femboypuppy/tessera:0.1.1, then recreate the container with the
same volume; your data stays.latestpoints to 0.1.1 too. - In the browser: once your server runs 0.1.1, reload Tessera.
| System | File |
|---|---|
| macOS (Apple silicon) | Tessera_0.1.1_aarch64.dmg |
| macOS (Intel) | Tessera_0.1.1_x64.dmg |
| Windows | Tessera_0.1.1_x64-setup.exe or Tessera_0.1.1_x64_en-US.msi |
| Linux | Tessera_0.1.1_amd64.AppImage, .deb or .rpm |
SHA256SUMS.txt lists every file's checksum. The desktop apps aren't signed with a developer
certificate yet, so the first launch asks for your permission: on macOS, choose Open Anyway in
System Settings → Privacy & Security; on Windows, More info → Run anyway.
Bug fixes
- search: tokenize queries with a forward scan instead of one regex (
0342bf5) - server: draw setup code characters with crypto.randomInt (
08fa1ee) - core: file names and the fallback markdown codec in linear time (
ac1fc7d) - search: tokenize pasted queries in linear time (
3c18a3d) - importers: reject a long, hostile CSV number cell in linear time (
d40059b) - db-views: read numbers, dates, emails and URLs in cells in linear time (
4a427db)
Documentation
- changelog: list every 0.1.1 change (
b008be4) - the desktop app updates itself only from releases with signed update files (
19ef694)
Maintenance (2)
Full changelog: v0.1.0...v0.1.1
Tessera v0.1.0
Tessera 0.1.0 is the first release. Tessera is an open-source, local-first knowledge app:
Notion-style blocks and databases, Obsidian-style [[links]] and a graph, real-time
collaboration and sandboxed plugins, on your own device and, if you want one, your own server.
Everything works offline; the server only syncs.
Highlights
- Write in blocks. A slash menu, markdown shortcuts, drag handles, tables, callouts, toggles,
code with syntax highlighting, images and embeds.[[Links]]follow renames,#tagssearch,
and copy and paste keep their formatting. - Databases with real views. Table, board, calendar, gallery and list views over typed
properties (select, date, number, relation, formula and more), with filters, sorts, grouping,
summaries, row templates, CSV import and export, and databases inside any page. - Links and a graph. Backlinks with the sentence around each link, unlinked mentions that
become links in one click, and a global and a local graph. - Find anything. Ctrl/⌘+K searches pages, full text, tags and
commands, offline, in a worker. - Your device first, your server if you like. Every edit is saved on your device before
anything else. Connect a server (one container with SQLite) to sync devices and write together
with live cursors, roles and version history; offline edits merge without conflicts. - Plugins in a sandbox. Commands, panels and custom blocks run in sandboxed frames with the
permissions you approve. Five example plugins, a typed SDK andpnpm create tessera-plugin. - Move in, move out. Import a Notion export, an Obsidian vault or a markdown folder; export
Obsidian-compatible markdown, HTML, PDF or a full JSON backup at any time. - Desktop apps for macOS, Windows and Linux keep each workspace in a folder you choose, with
quick capture from anywhere.
Get started
- Try it: choose Open the demo workspace on the first screen: a project board, a
reading list, meeting notes and a small knowledge garden about space exploration. - Self-host:
docker run -d -p 8787:8787 -v tessera-data:/data ghcr.io/femboypuppy/tessera:0.1.0,
then openhttp://localhost:8787. The self-hosting guide
covers HTTPS, settings and backups. - Desktop: download the file for your system below.
| System | File |
|---|---|
| macOS (Apple silicon) | Tessera_0.1.0_aarch64.dmg |
| macOS (Intel) | Tessera_0.1.0_x64.dmg |
| Windows | Tessera_0.1.0_x64-setup.exe or Tessera_0.1.0_x64_en-US.msi |
| Linux | Tessera_0.1.0_amd64.AppImage, .deb or .rpm |
SHA256SUMS.txt lists every file's checksum. The desktop apps aren't signed with a developer
certificate in this release, so the first launch asks for your permission: on macOS, choose
Open Anyway in System Settings → Privacy & Security; on Windows, More info → Run
anyway.
Good to know
This is an early release: keep a backup of anything important (Settings → Import & export →
Download backup), and please tell us what breaks.
Known issues are labeled bug;
the main ones: typing on pages of thousands of blocks is slower in Firefox than in Chromium, a
plugin panel stuck in a loop can freeze the app in Firefox, and the phone layout is a web page,
not a native app.
Thank you for trying Tessera. If it's useful to you, a ⭐ helps other people find it.
Features
- scripts: record the README demo, and put it at the top of the README (
3115275) - web: report a crash on GitHub from the error screens (
9e2e5cf) - importers: the demo opens at the top level on a project board (
b741607) - web: the app starts offline after one visit (service worker) (
47b76f8) - integration: editor previews, live collaboration journey, literal links (
fc13acb) - core: apply the approved contract change requests (
a4624f7) - docs: demo workspace and checks for docs, forms and brand (
62cd8f7) - docs: VitePress docs site and community files (
248c7a7) - docs: brand assets rendered from tokens with Playwright (
628fc98) - importers: single-page markdown download, screenshots and handoff (
cafbe79) - importers: import and export dialogs, print view, settings and onboarding (
226bb7f) - importers: markdown zip, HTML and JSON backup exporters with restore (
cdedd54) - importers: Notion, Obsidian and markdown importers with a worker planner (
2200b3a) - markdown: remark codec with Obsidian syntax, HTML paste and property tests (
d7f0b11) - desktop: runtime registration, package styles, keychain credential store, screenshots (
f3e8ff0) - deploy: Docker image, Compose with Caddy, deploy guides and smoke test (
4422c94) - desktop: real-app smoke test, env overrides for data folders, calmer quick capture (
fc63d21) - desktop: Tauri 2 app with folder workspaces on SQLite (
a3f479e) - plugins: README on the About tab, and Restart from the crash notification (
9bf9441) - plugins: create-tessera-plugin scaffolder and the plugin template (
a64595a) - plugins: five example plugins, their build tooling and the example registry (
7804b16) - plugins: sandboxed plugin host with validated RPC, permissions, watchdog and settings UI (
061f56a) - plugin-api: typed plugin SDK, row query engine and a test harness with a mocked API (
58e5f8f) - databases: formula properties with an editor, previews and live errors (
47b377d) - databases: formula engine with a real parser and evaluator (
2bbbc5d) - databases: screenshots, unit tests for views and CSV, calmer table focus (
8d524bb) - databases: table, board, calendar, gallery and list views (
dd6d49f) - databases: pure query engine with filters, sorting, grouping and summaries (
028adb4) - graph: a Graph view entry in the sidebar (
8bc165f) - graph: global and local graph views with sigma.js (
02ee7e4) - backlinks: backlinks panel, unlinked mentions and optional footer (
c7343c5) - search: command palette, search page and test hooks (
f9a8355) - search: MiniSearch and graph link indexes in a persisted worker (
e0cfa1c) - editor: remote cursors, selection toolbar and reliable undo (
4729a24) - editor: copy as HTML and markdown, paste through the markdown codec ([
233f002](https://github.com/femboypuppy/Tessera-Notes/commit/...
