Skip to content

Shared Tasks 0.5.0

Choose a tag to compare

@github-actions github-actions released this 19 Oct 11:05
· 66 commits to main since this release

Shared Tasks 0.5.0

Shared Tasks 0.5.0: collaboration you can do without learning the commands. A
visible pane and a card on the section lead you through sharing, inviting and
joining, show what needs attention with a direct way to fix it, and pick up
unfinished work after a restart. For catalog users updating from 0.4.2.

Requires Obsidian 1.13.4 or later, as 0.4.x.

The Markdown format of your notes and the sync protocol are unchanged. The
command palette commands keep their names and still work; everything about
sections is also in the pane and the card, and single tasks are still shared
with commands.

What is new since 0.4.2

  • The Shared Tasks pane. One pane per workspace, opened from the ribbon
    icon ("Open Shared Tasks pane"), the command of the same name, the section
    card, or the editor's context menu. It follows the note you are in and
    offers the next step for the cursor: "Share section…" on a heading,
    "Invite collaborator…" on a shared section, "Insert into a note…" for a
    section you joined and have not placed yet. It lists the shared sections
    this device knows, where each is used, and what needs attention.
  • Share, then invite, in one place. Before you confirm, the pane shows
    what a share will publish (the lines, the sync server, how comments are
    handled). It says whether the section is on its server yet and offers the
    invitation only when it is ready. An invitation says "One-time link, does
    not expire; whoever opens it first joins." and you choose Read or
    Read + write each time. "Link copied" means the link is on the clipboard:
    Shared Tasks does not send it.
  • Join with a pasted link, then choose where it goes. "Join with a
    link…" shows each step (the server accepted the claim, your access, the
    section loaded), then inserts the section into a note you choose, with a
    readable preview. A join you give up on, or one whose answer was lost, can
    be checked again; it is never started a second time.
  • Problems with a direct way to each fix. A problem hub lists what needs
    attention and opens the matching conflict dialog or "Repair shared sections
    in this note". Local text that has not been sent is told apart from what
    the server has accepted and from an empty queue.
  • Unfinished steps stay in view. A share cut short by closing Obsidian
    resumes by itself after the restart. An unfinished insert or join is
    listed in the pane, where you continue it or check the result.
  • Tips on demand. Short tips explain an action when it is offered. "Hide
    tip" hides one in this vault; "Show tips again" brings them back. No tour
    opens on install or update.
  • Neutral wording. Texts about sections no longer speak of
    "collaborations"; the older shared-task commands no longer offer a shared
    section as if it were a task collaboration.
  • Faster pane. A cursor move redraws the pane at once.
  • From the keyboard. The pane and its dialogs work from the keyboard:
    opening the pane puts focus on it, Tab reaches its buttons, Enter activates
    them, Esc cancels joining, and focus stays inside a dialog and returns to
    the button that opened it. Commands have no default hotkeys; assign them in
    Obsidian's Hotkeys settings.

Fixed since 0.4.2

  • Pasted lines are not overwritten. A Task or paragraph pasted into a
    section that already syncs, which this device's sync record did not know,
    is held for your choice instead of being replaced by the shared version.
    This closes the known limit of 0.4.2
    (#41). "Repair shared
    sections in this note" shows both versions.
  • A line Obsidian's merge dropped comes back. The status says the line is
    missing and points to "Repair shared sections in this note", which offers
    to put it back.
  • A second Share is not stuck. Sharing two sections quickly, or Share
    right after the plugin loads, no longer leaves a section "hosting pending"
    without a message, and no longer creates its server record twice. A
    section already damaged this way is repaired
    (#72).
  • A deletion made while a section is suspended is kept. It is sent when
    the section resumes and no longer reads as a lost binding
    (#57).
  • A resumed edit is kept after a lost line. A batch of edits saved before
    a restart is no longer sent twice when a line it touched was lost in
    between.
  • The first click on a pane button counts ("Join with a link…" after a
    restart, "Remove access…").
  • An honest insert preview. It no longer says "Not inserted in any note
    yet" for the note the section came from.
  • Notes you delete. The local record of a deleted note is forgotten, a
    copy of its text you did not resolve is kept until you discard it, and a
    record of a note missing for 30 days is cleaned up. Your own text is never
    removed by that cleanup.
  • A clearer stopped-syncing notice. It names the section and says "the
    sync server" instead of printing the server address (the address stays in
    "Resource status"). A single conflict shows one "Review conflicts" button.
  • No work after unload. A pending status pass no longer runs after the
    plugin is unloaded.
  • Dialogs no longer overlap. In the insert dialog "Choose another
    note…" has a row of its own under the sentence; in "Repair shared sections
    in this note" and in the recovery dialog the Apply button sits below the
    choices instead of on top of their text.
  • "Link copied" is a short confirmation. It disappears a few seconds
    after the copy and after the invitation dialog closes, instead of staying
    in the pane.
  • Fewer races. Saving a note's sync record and its journal no longer
    interleave when two passes overlap.
  • Under the hood. The TypeScript SDK is @openlfcp/* 0.2.2; spec
    mvp-0.2-baseline.12; the project server runs the reference server 0.3.2,
    unchanged.

Install and upgrade

From Settings → Community plugins → Updates. Your identity, keys, shared
sections, queued edits and unfinished operations are kept. The update opens
no tour and no dialog, because the sync data format is the same (IndexedDB
database version 2). The upgrade from 0.4.1 and 0.4.2 was rehearsed in real
Obsidian (report).

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

By hand: put main.js, manifest.json and styles.css from the release
page into <vault>/.obsidian/plugins/shared-tasks/ and compare them with
these checksums.

File SHA-256
main.js 35fb226f28ddb6378ef85a425014873dbc96a63b0e6dcf348e8ed932ab9bae31
manifest.json 5500adc55a32565311a9ad93745946540501045bf2c1eb6715ab84eed9139667
styles.css 373028272ef8c3ed42c2c6b3b3c45ffaec3d030ee3ddd6b6163366d5f91a67c1

Built by CI from the commit the tag 0.5.0 points to (the release workflow
runs scripts/release-assets.mjs); the build was rehearsed on branch
mvp03/073-release-0.5.0 and gave these checksums in the native, performance
and release dry runs (candidate manifest).
@openlfcp/* 0.2.2, spec mvp-0.2-baseline.12, server lock 138030a. The
release page also carries a build provenance attestation: gh attestation verify main.js --repo openlfcp/obsidian.

Rolling back to 0.4.2

Install 0.4.2 over 0.5.0 (BRAT: choose version 0.4.2 for openlfcp/obsidian,
or put 0.4.2's three files into the plugin folder). It starts on the data
0.5.0 wrote: the same identity and sections, queued edits sent, an
unfinished share finished. The pane is a 0.5 feature and is not in 0.4.2;
hidden tips come back. Roll back to 0.4.2, not 0.4.1, which lacks the 0.4.2
fix for Task edits in copied sections. Going to 0.3.x is not supported.

Not rehearsed: after a rollback, a kept copy of a deleted note's text may not
show in the card (the text is not deleted); and if a crash cuts the cleanup
of a cancelled share before you roll back, 0.4.2 can list the section that
was never hosted as an ordinary one, with no data lost
(#53).

Known limits

  • Desktop first. Tested by hand on desktop only; automated runs use real
    Obsidian 1.13.4 and 1.14.4 on Linux, macOS and Windows runners. Not tested
    by hand: Windows or Linux desktops, an input method (IME), mobile. Shared
    sections are read-only on mobile and nothing about them was tried on a
    real device.
  • Wording of the pane was not checked with people before this release;
    expect rough edges.
  • A late move can be sent twice (#68).
  • Pane timing. Pane updates measured at p95 108.1–146.5 ms on a macOS CI
    runner for this build (goal 150 ms; the slowest case is the active note with
    Tasks on); slower machines may take longer.
  • Repeat signs do not sync. The recurrence of a Task (🔁) stays on the
    device that has it, by design, so two notes can show different titles of a
    repeating Task. The date and the done state sync.
  • Put back after a lost marker and an edit. If a line lost its marker and
    was edited in the same place, "Put back" can add a second copy. Check the
    line after Repair.
  • 0.4.1 and 0.4.2 keep the double-creation race and lack the fix for a
    newcomer who joins just after the inviter restarted; no 0.4.3 is planned.
  • Project server quotas. 24 open connections in all and 8 per network
    address, 200 collaborations per identity, 50 new ones a day from one
    address; past a limit an action is refused with "quota exceeded" and
    nothing already shared is lost.
  • No notion of "seen". A ✓✓ means shared, not read. There are no read
    receipts, no state of an invitation, no inbox, and no way to cancel an
    unused invitation or give it an expiry. A link works once, for whoever
    opens it first.
  • Beta software; not for data you need to protect. Data on the public
    server can be lost.
  • From 0.4: about 200 tasks is the qualified size of a section, no headings
    inside a section, one server per collaboration. See the
    0.4.0 notes and the README's Limitations.

Earlier notes: 0.5.0-beta.2, 0.5.0-beta.1, 0.4.2.