Skip to content

Shared Tasks 0.5.0-beta.2

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 19 Oct 09:09
· 85 commits to main since this release

Shared Tasks 0.5.0-beta.2 (candidate)

Candidate, not published. These are the notes for the 0.5.0-beta.2
candidate (LFCP-03-067). The files, their checksums and the commit they were
built from are fixed below. No tag and no release page exist yet: the
owner creates them. Nothing here says a release exists.

Shared Tasks 0.5.0-beta.2: the second pre-release of the 0.5 line, to be
checked before the stable 0.5.0 (no pilot). It keeps everything of
0.5.0-beta.1 (the Shared Tasks pane, share, invite and
join in one place) and fixes four things found since. Install it with BRAT.
Catalog users are not updated.

Requires Obsidian 1.13.4 or later, as 0.4.x.

New since 0.5.0-beta.1

  • A line you delete while a section is waiting is not forgotten. When a
    section is suspended (for example after a lost binding), a line you delete
    is kept and sent once the section resumes. Before, it could read as a lost
    binding on later passes until you ran "Repair shared sections in this
    note". No data was lost
    (#57). See Known limits
    for three edges.
  • The notice that syncing stopped names the section. When your access to
    a section is removed, the notice uses the section's shared title (folded to
    one line and cut at 80 characters) instead of "a shared section", and no
    longer prints the server address; the address stays in "Resource status".
  • One "Review conflicts…" button for one conflict. With a single conflict
    the pane drew the same button twice. With several conflicts each row still
    opens its own item.
  • No status pass after the plugin is unloaded. Disabling or reloading the
    plugin cancels a pending status refresh
    (#78).
  • Checked, no change needed: a Task completed with the Tasks plugin keeps
    its ref line hidden and bound. The screenshot that suggested otherwise shows
    the caret on the ref line, which reveals it by design
    (#68, C-7).

Unchanged from beta.1: the notes' Markdown format, the sync protocol, the sync
data format on this device (IndexedDB database version 2), @openlfcp/*
0.2.2, spec mvp-0.2-baseline.12, the reference server 0.3.2.

Install

Needs Obsidian 1.13.4 or later. Desktop first: this beta is tested by hand
only on desktop (see Known limits).

With BRAT (the way to try this beta):

  1. Install and enable BRAT
    from Settings → Community plugins.
  2. Run "BRAT: Add a beta plugin for testing", enter openlfcp/obsidian, and
    choose Latest version (a specific version is pinned and BRAT will not
    update it).
  3. Enable "Shared Tasks" in Settings → Community plugins and check that the
    version listed is 0.5.0-beta.2.

By hand: from the release page, download main.js, manifest.json and
styles.css into a new folder <vault>/.obsidian/plugins/shared-tasks/, then
enable the plugin. Compare the files with the checksums below before you
enable it.

File SHA-256
main.js 2292fd62bb68fbd03e2af1a6b3178a82db3a4199cbb4637de013af9104b369af
manifest.json 5c6136abd4c20b829b40d379634bcf13f0ae055a2158a2f89f177fa297ab8f74
styles.css b8dd6c368d0c194d127bb85105a2bf3bbb5654ad0d945916d6f1d7ff52c6bb30

Built from 0d69b98 (full SHA in the
candidate manifest; a branch
commit: the repository merges by rebase, so the tag commit has a new SHA but
the same src/, lockfile and styles, and the checksums are re-verified at
release). Its source is that of main 75cad16. The tag 0.5.0-beta.2 and
the release page will be created by the owner. @openlfcp/* 0.2.2, spec
mvp-0.2-baseline.12, server lock 138030a. The manifest.json asset is the
file manifest-beta.json.

The default server is the project server wss://sync.openlfcp.org/v1/ws; see
Choosing a sync server before you use it.

Upgrading

From 0.5.0-beta.1: BRAT's update check ("BRAT: Check for updates to all
beta plugins") installs it over the beta; with "Latest version" chosen it
arrives by itself. Nothing is migrated: the sync data format is the same, no
tour or dialog opens. The new field a suspended section may now keep for a
pending deletion is optional.

From 0.4.1 or 0.4.2: install the beta over it (BRAT does this when you add
it). Your identity, keys, shared sections, queued edits and unfinished
operations are kept; an unfinished share or insert is finished under its own
operation. The upgrade from 0.4.1 and 0.4.2 was rehearsed in real Obsidian on
this build (see Under the hood) and, with a queued edit and an unfinished
share, in the
report of beta.1.

Going from 0.3.x straight to this build is as for 0.4: 0.4 upgrades the sync
data once, and 0.3.x cannot open it afterwards
(details).

Rolling back

To 0.5.0-beta.1 or to 0.4.2: install that version over the beta (BRAT:
choose the version for openlfcp/obsidian, or put its three files into the
plugin folder). It starts on the data this beta wrote. A deletion this beta
was still holding for a suspended section is lost on the way back; the line
then reads as lost, as before the fix, and "Repair shared sections in this
note" puts it right. To 0.4.2, what you lose: the hidden tips come back if
0.4.2 saves its settings; the pane is a 0.5 feature and is not there. Roll back
to 0.4.2, not 0.4.1, which lacks the 0.4.2 fix for Task edits in copied
sections. Not supported: going to 0.3.x.

Not rehearsed: the rollback with the kept copies of a deleted note's text
that this beta keeps by section (the 048 change): 0.4.2 reads them by its
older rule, so a kept copy may not show in the card; the text is not deleted.
Nor a crashed share discard followed by a rollback: 0.4.2 can list a section
that was never hosted as an ordinary one; no data is lost
(#53). The rollback to
beta.1 was not rehearsed in real Obsidian; it reads the same data format.

Known limits

  • Pane timing. The pane's redraw after a cursor move was measured at
    p95 127 to 161 ms on a CI runner against a 150 ms goal before the redraw
    was made immediate (three of six series over). After that fix
    (#54) two runs on a
    macOS CI runner (runs 39063168092 and 39063609331, 200-task section, on a
    temporary branch with the same pane code) gave p95 119.0 to 136.5 ms, all
    six series within 150 ms, with a small margin. On the exact beta files
    (run 39215444645, macOS CI runner, Obsidian 1.14.4) p95 was 108.7 to
    123.3 ms in all six series, within 150 ms; another machine can come out
    slower.
  • Not tried by new users yet. The pane has been checked by automated
    tests in real Obsidian and by the maintainers, not in a study with new
    users; expect rough edges and report them in the
    issues.
  • Not tested by hand: a physical desktop other than CI runners, Windows
    or Linux by hand, an input method (IME), or mobile. Shared sections are
    read-only on mobile and nothing about them was tried on a real device.
  • A deletion made while a section is suspended. A line you delete while
    a section is waiting (for example after a lost binding) is now kept and sent
    once the section resumes
    (#57); it no longer
    reads as a lost binding. Three edges remain. The deletion goes out without
    a check of the line's revision: if a collaborator edited or moved that line
    during the wait, your deletion wins and Repair is not offered. If a change
    of yours is held back (a pasted line waiting for your choice, or an update
    not taken), the kept deletions are forgotten, the line reads as lost again
    and the section stays waiting until "Repair shared sections in this note".
    No data is lost. A crash between sending the deletion and saving that it was
    sent was not tested; the deletion may be sent twice.
  • Put back after a lost marker and an edit. If a line lost its marker and
    its text was changed in the same place, "Put back" can add a second copy of
    the line. Check the line after Repair.
  • A section damaged by the double creation of 0.4.x. Share right after
    the plugin loaded could create the server record twice in 0.4.1 and 0.4.2.
    This beta cannot do it again, and it repairs a section already damaged
    (#72): every save said
    "the DEK is not the one committed for epoch 0" and "Check the result"
    answered "not known". Run "Check the result", then "Share again"; the text
    of your note stays. 0.4.1 and 0.4.2 stay as they are: no 0.4.3 patch is
    planned.
  • Smaller known issues of the pane. A second node.move can be sent for
    one move (about one run in 40 on Windows), and a few smaller notes of the
    review remain
    (#68). The text of the
    stopped-syncing notice and the double "Review conflicts…" button are fixed
    in this beta.
  • Recurring Tasks. The recurrence of a Task (the 🔁 rule) is not shared:
    collaborators get the Task without it (by design; Shared Tasks flags it with
    a warning). Completing a recurring Task still gives you the
    next occurrence on your side.
  • 0.4.x. 0.4.1 and 0.4.2 have the double-creation race above and lack
    the fix for a newcomer who joins just after the inviter restarted: the
    invitation waits for the epoch's snapshot only in this beta
    (#73). The newcomer then
    cannot load the section until the inviter retries; no access is leaked. A 0.4.3
    patch is not planned; report it if you meet it.
  • Rolling back after a crashed discard. If you cancel a share and a crash
    cuts the cleanup, then roll back to 0.4.2, 0.4.2 can list a section that was
    never hosted as an ordinary one. No data is lost; the beta finishes the
    cleanup when it runs again
    (#53).
  • Project server quotas. The server accepts 24 open connections in all
    and 8 per network address, 200 collaborations per identity, 50 new ones a
    day from one address. Several people on one network share the per-address
    limit; past a limit the action is refused with "quota exceeded" and nothing
    already shared is lost.
  • No notion of "seen". A ✓✓ on a section means it is shared; it does not
    mean anyone has read it. There are no read receipts, no delivery state of
    an invitation, no inbox of incoming invitations, and no way to cancel an
    unused invitation or give it an expiry. An invitation link works once, for
    whoever opens it first.
  • Everything else from 0.4: section size (about 200 tasks is the qualified
    size), no headings inside a section, local-only Tasks tokens, one server
    per collaboration, data on the public server can be lost. See the
    0.4.0 notes and the README's Limitations.

Under the hood

  • Native evidence (real Obsidian, with the reference server): the full native
    set on the exact beta main.js (release_build; two real Obsidian apps,
    and the upgrade and rollback specs against 0.4.2): run 39215441248, Ubuntu, macOS and Windows with Obsidian
    1.13.4 and 1.14.4, 51 specs, 6 of 6 jobs passed. One job (Ubuntu, Obsidian
    1.13.4) failed at the first attempt in pane-access-copy-detach (a dialog
    the spec waited for did not open) and passed when rerun once (the same spec failed in earlier matrix runs: F7 in
    the native matrix report,
    "product defect or click race, not settled"); the other
    five passed at the first attempt
  • Pane performance: run 39215444645, macOS, Obsidian 1.14.4: B1 p95 108.7 to 123.3 ms
    in six series (budget 150 ms)
  • Smoke of the exact files: the native and performance runs built main.js
    and styles.css with the checksums above (printed in their summaries). The
    manifest.json asset differs from the file those runs used only in its
    version field (they used the catalog manifest.json); see the
    candidate manifest.