Repository navigation
Releases: openlfcp/obsidian
Release list
Shared Tasks 0.5.2
Shared Tasks 0.5.2
Shared Tasks 0.5.2 answers the automated review of the Obsidian community
directory: the plugin's code now passes Obsidian's own lint rules without
warnings. For catalog users updating from 0.5.1; nothing changes in how you
share tasks.
Requires Obsidian 1.13.4 or later, as 0.5.1.
The Markdown format of your notes and the sync protocol are unchanged.
What changed since 0.5.1
- The command "Open Shared Tasks pane" has a new ID,
open-pane(it
wasopen-shared-tasks-pane), because the community review asks that a
command ID not repeat the plugin ID. The command name is the same. - Elements, timers and type checks work the Obsidian way. The plugin
builds its interface with Obsidian's own element helpers and uses the
window's timers, which is what pop-out windows expect. - A damaged section marker is marked with a solid warning underline
instead of a wavy one, in the same warning color. The line keeps its
height. - The developer pane prototype is removed. It never shipped in a
release build. An olddata.jsonthat still has the
developerPanePrototypekey is read as before and the key is ignored.
Install and upgrade
From Settings → Community plugins → Updates. Nothing to migrate: identity,
keys, shared sections and queued edits are kept.
If you set a hotkey on "Open Shared Tasks pane", set it again under
Settings → Hotkeys: a hotkey belongs to the command ID, and the ID changed.
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 |
e941dc3ac039f0f9c6b1ec8824b80a22042a4c04e63700fbcf171d97303942e3 |
manifest.json |
575f298213aa46c9d362cb516d187fb7cedae0dc8e98e1ae7679b326a037479a |
styles.css |
6e1f2f832739373f8b28237a53d4f9641eca3f69549039dc7ae738cdd43bab8a |
Built by CI from the commit the tag 0.5.2 points to; the release page
carries a build provenance attestation: gh attestation verify main.js --repo openlfcp/obsidian.
Rolling back to 0.5.1
Install 0.5.1 over 0.5.2 (BRAT: choose version 0.5.1 for
openlfcp/obsidian, or put 0.5.1's three files into the plugin folder).
The data format is the same; a hotkey set on the new command ID has to be
set again.
Known limits
As in 0.5.1.
Earlier notes: 0.5.1.
Shared Tasks 0.5.1
Shared Tasks 0.5.1
Shared Tasks 0.5.1 makes sharing a section with someone harder to get wrong:
the palette invites to the section you are in, a link of the wrong kind is
refused before it is used, every dead end says what to do next, and a
section marker damaged by a stray keystroke is repaired in one click. For
catalog users updating from 0.5.0.
Requires Obsidian 1.13.4 or later, as 0.5.0.
The Markdown format of your notes and the sync protocol are unchanged.
What changed since 0.5.0
- "Invite to this section…" (new command, ID
invite-to-section)
invites to the shared section at the cursor, as the pane does. With the
cursor outside every shared section it says so and opens no picker. - The older one-task-at-a-time collaborations step aside. Their
commands are named "Legacy: …" and appear only in a vault that already
holds such a collaboration; "Legacy: Join task collaboration" is always
there. "Legacy: Invite to task collaboration" (the old
invite-collaboratorID, so hotkeys keep working) lists only those
collaborations, never shared sections. Pickers that still list both kinds
say which is which. - A link of the wrong kind is refused before it is used. Joining from
the pane, or with a palette join, accepts shared sections only. A link to
an older task collaboration is refused before anything is claimed, says
what it is and asks you to request a section link; the link still works
with "Legacy: Join task collaboration". With shared sections off on the
device, joining from the pane works as before. - Dead ends say why and what next. "Already joined" for an older task
collaboration, an empty list of shared sections on a device that holds
only an older collaboration, and "Insert shared section…" with nothing to
insert yet now name the cause and the next step. - A damaged section marker is repaired in one click. When the start or
end line of a shared section was changed by a typo (up to two characters)
and exactly one section on this device matches, the pane shows one
problem, says that edits to the section are not sent until it is fixed,
and offers Restore, which rewrites only that line if the note has not
changed since. Otherwise Repair is offered as before. The section shows
"Damaged in this note" instead of "Not inserted yet", and the pane's main
action is the fix, never "Insert into a note…". - Section markers are protected in Live Preview. With sharing metadata
hidden, typing into a marker line is refused, with a short notice that
points to Source mode; indenting and deleting whole lines still work. A
damaged marker is hidden too, with a warning mark so you can find it.
Fixed
- A section whose start marker was changed by one character showed all its
markers in Live Preview, ignored "Show sharing metadata", and silently
stopped sending edits (#89).
Install and upgrade
From Settings → Community plugins → Updates. Nothing to migrate: identity,
keys, shared sections and queued edits are kept.
If you bound a hotkey to one of the older collaboration commands, it does
nothing in a vault that holds no such collaboration, because the command is
not there.
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 |
b5b3a3c386dd1f5521b0a497c2f05e49c62b9f2592d6d62828bbe4f076d99ee6 |
manifest.json |
a601f824640dc5f1c0752376aeb0f429d63f12dc32b62d2cdd387708989554d4 |
styles.css |
29713d1ed9fa11756ef8773cd36e59cab7dfd15d1b9db6b42c5ef76fb6cc06dc |
Built by CI from the commit the tag 0.5.1 points to; the release page
carries a build provenance attestation: gh attestation verify main.js --repo openlfcp/obsidian.
Rolling back to 0.5.0
Install 0.5.0 over 0.5.1 (BRAT: choose version 0.5.0 for
openlfcp/obsidian, or put 0.5.0's three files into the plugin folder).
The data format is the same; the old command names come back.
Known limits
As in 0.5.0, plus:
- Restore covers the start and end lines of a section. A damaged marker
under a single task (lfcp-ref) still goes through Repair. - Deleting a marker line with Backspace in Live Preview is not confirmed
separately; Undo brings it back. - With several cursors, a keystroke that would change a marker line is
refused for all of them. - The older collaboration commands appear when the plugin starts or after a
join; a collaboration that arrives another way shows them after a restart.
Earlier notes: 0.5.0.
Shared Tasks 0.5.0
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 ...
Shared Tasks 0.5.0-beta.2
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):
- Install and enable BRAT
from Settings → Community plugins. - 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). - Enable "Shared Tasks" in Settings → Community plugins and check that the
version listed is0.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.movecan 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...
Shared Tasks 0.5.0-beta.1
Shared Tasks 0.5.0-beta.1 (candidate)
Candidate, not published. These are the notes for the 0.5.0-beta.1
candidate (LFCP-03-027). 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.1: a pane that leads you through sharing a section,
inviting someone and joining, without needing the command palette. A
pre-release for a pilot with new users; install it with BRAT. Catalog users are
not updated.
Requires Obsidian 1.13.4 or later, as 0.4.x.
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. The
command palette commands keep their names and still work. - Share, then invite, in one place. The pane shows what a share will
publish (the lines, the sync server, how comments are handled) before you
confirm, 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 insert. "Join with a link…" takes a link
you paste, 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 work resumes after a restart. A share, an insert or a join
cut short by closing Obsidian continues under its own operation instead of
starting over. - A line Obsidian's merge dropped comes back. When Obsidian merges two
views of a note and a shared line goes missing, the status says the line
is missing and points to "Repair shared sections in this note", which
offers to put it back. Nothing in the pane or the status calls it lost any
more. - A second Share is not stuck. Sharing two sections quickly, or Share right
after the plugin loads, no longer leaves one "hosting pending" without a
message, and no longer creates the section's server record twice. - The first click on a pane button counts. "Join with a link…" after a
restart and "Remove access…" act on the first click. - An honest insert preview. The preview 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 from the vault for 30 days is cleaned up after the
notes are read and then daily. Your own text is never removed by that
cleanup. - 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 resumed edit is kept after a lost line. A batch of edits saved before
a restart, whose note was not written yet, is no longer sent twice when a
line it touched was lost in between. - Shared sections stay out of the 0.1 task pickers. The older shared-task
commands no longer offer a shared section as if it were a task
collaboration. - 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 on section surfaces. Texts about sections no longer
speak of "collaborations". - Faster pane. A cursor move redraws the pane at once; only the moves
right after it are grouped. - 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 (one commit
for an invitation's grant and Key Package; a failing listener no longer
interrupts a change). Specmvp-0.2-baseline.12; the project server runs
the reference server 0.3.2, unchanged.
Unchanged: the notes' Markdown format, the sync protocol and the sync data
format on this device (IndexedDB database version 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):
- Install and enable BRAT
from Settings → Community plugins. - 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). - Enable "Shared Tasks" in Settings → Community plugins and check that the
version listed is0.5.0-beta.1.
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 |
a0257e138f395f32940d3431f3e570d003b0a2c31b819a71748a39d74982a220 |
manifest.json |
c755e547b8916986031139c78341e10739e88436f2dbcac9a0c1279e29ae398f |
styles.css |
b8dd6c368d0c194d127bb85105a2bf3bbb5654ad0d945916d6f1d7ff52c6bb30 |
Built from 1eb1f28946f85110976651965ff1d28c15b50473 (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 3cd6969a96c54085b57b586e4c3daf3986e5663e. The tag
0.5.0-beta.1 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. Details:
candidate manifest.
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.4.x
Install the beta over 0.4.1 or 0.4.2 (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
update opens no tour and no dialog, and prints no "upgraded" notice, because
the sync data format is the same. The upgrade was rehearsed in real Obsidian
from 0.4.1 and 0.4.2 on macOS and Ubuntu with a queued edit and an unfinished
share (report).
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.4.2
To go back, install 0.4.2 over the beta (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 the beta wrote: the same identity and sections, queued
edits sent, an unfinished share finished, no "newer version" notice. This was
rehearsed (beta build, then 0.4.2, then the beta again). 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 in 0.4.2. 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.
Two things were not rehearsed. First, the rollback was tried without 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 after a rollback a kept copy
of a deleted note may not show in the card. The text is not deleted. Second, if you cancel a share and
a crash cuts the cleanup before you roll back, 0.4.2 can list the section
that was never hosted as an ordinary one; no data is lost
(#53).
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 39185482345, macOS CI runner, Obsidian 1.14.4) p95 was 107.6 to
118.1 ms in all six series, within 150 ms; another machine can come out
slower. - Pilot first. No real people have used the pane yet. Whether new users
find sharing without knowing a command is what the pilot of this beta
checks, so expect rough edges in the wording. - 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 w...
Shared Tasks 0.4.2
Shared Tasks 0.4.2: a fix for a Task edit in a shared section that could be
lost without a warning. Update soon.
Requires Obsidian 1.13.4 or later, as 0.4.1.
Fixes
- A Task edited in a copy of a shared section could be silently lost.
When a shared section was copied into another note, or a note was
opened without its sync record on this device, a change made there to a
Task alone (its title, its checkbox, a date) was taken as the shared
version.
The next sync then wrote the shared Task back over the line: the edit
disappeared and nothing was sent. 0.4.2 compares each Task's fields too.
When they differ, your text stays as it is and the section waits for your
choice; when the note shows the shared version (only the formatting
differs), it syncs as before. - Repair lists every section that waits for a choice. "Repair shared
sections in this note" now lists such a section and shows both versions.
"Share my version" sends the note's Task fields; "Use the shared version"
shows the shared one and keeps your text as a recovery copy on this
device. If a Task in the section is still loading, is not a valid task in
the shared version, or was deleted there, Repair says so, and "Share my
version" keeps your text as it is without guessing.
Known limits
- A Task or a paragraph pasted into a section that already syncs, where
this device's sync record does not know that line yet, can still be
replaced by the shared version on the next sync. This is rare (for
example, pasting a line copied from another note of the same section);
a fix is planned for 0.5.0
(#41).
Under the hood
- The TypeScript SDK stays
@openlfcp/*0.2.1; specmvp-0.2-baseline.12;
the project server runs the reference server 0.3.2, unchanged by this
release. - Unit tests cover each Task field, a copied section, a Task not loaded
yet, a conflicted title and a formatting-only difference; a live test with
the plugin on the reference server keeps a Task title edited in a copied
section across a restart.
Install and upgrade
From Community plugins (Settings → Community plugins → Updates), with BRAT
(openlfcp/obsidian), or by hand: put main.js, manifest.json and
styles.css from the release page into
<vault>/.obsidian/plugins/shared-tasks/. Your identity, collaborations and
settings are kept.
Shared Tasks 0.4.1
Shared Tasks 0.4.1: a fix for edits to shared sections that could be lost.
Update soon.
Requires Obsidian 1.13.4 or later, as 0.4.0.
Fixes
- An edit to a shared section could be silently lost after a restart.
When Obsidian started (or Shared Tasks was re-enabled), the same shared
section could be opened twice at once. Your edits then went to a copy
that nothing read: the section showed as current, your change (for
example a task renamed while offline) disappeared from the note, and
your collaborators' later changes never appeared. 0.4.1 opens a section
only once, however many parts of the plugin ask for it at the same time.
The same fix applies to collaborations of tasks (from 0.3). - An edit could be undone on your device after it was saved. If
sending a saved change failed (for example the connection dropped at
that moment), the change could be taken back out of the section on your
device while it still went out to your collaborators. SDK 0.2.1 keeps a
change once it is saved. - A section given up while it was opening is closed. A section whose
creation was given up while it was still opening no longer stays open
in the background. - Nothing keeps running after Shared Tasks is disabled. Disabling the
plugin while it was still opening its sections at start could leave a
connection behind; it no longer does.
Under the hood
- The TypeScript SDK is
@openlfcp/*0.2.1 (exact versions, from npm with
provenance): a section batch the durable store has committed is not
rolled back when a step after the commit throws. - Spec
mvp-0.2-baseline.12; the project server runs the reference server
0.3.2, unchanged by this release. - A live test with two plugins on the reference server covers an edit kept
across a restart and the server's absence, and a send that fails after
the commit.
Install and upgrade
From Community plugins (Settings → Community plugins → Updates), with BRAT
(openlfcp/obsidian), or by hand: put main.js, manifest.json and
styles.css from the release page into
<vault>/.obsidian/plugins/shared-tasks/. Your identity, collaborations and
settings are kept.
Shared Tasks 0.4.0
Shared Tasks 0.4.0: share a whole section of a note.
Requires Obsidian 1.13.4 or later, as 0.3.2 did.
New: shared sections
- "Share section…". Put the cursor on a heading, or under it, and share
the heading with everything under it: tasks, subtasks, paragraphs and
lists, in order, down to the next heading of the same or a higher level.- A preview shows exactly what will be shared, and what under the
heading stays private on your device. - Each section is a collaboration of its own, with its own key and its
own invitation. - Whatever is added inside the section later is shared too.
- A preview shows exactly what will be shared, and what under the
- Joining. Your collaborator runs "Join collaboration" with the
one-time link, then "Insert shared section…" in any note of theirs. Their
other text stays private. - Status marks. A double tick (✓✓) after a shared heading means
"shared". A separate icon shows sync progress, for example "Saved
locally; waiting to sync", "Offline; local updates will wait" or "Needs
your attention". Click it, or run "Open shared section details", to see
the details: the status, what is shared, and who has access, as last
verified with the server. - Conflicts. A task moved to two places, or a field changed on both
sides, shows as "Needs your attention". "Go to next shared section
problem" finds it; "Review conflicts…" in the details lets you choose.
Nothing is lost while a choice is open. - Removing access. "Remove access…" in the details removes someone's
future access and gives the section a new key. Copies they already
received cannot be erased, and the confirmation says so. On their side,
the section says the sync server no longer accepts their changes; their
new edits stay on their device. - Detach this section. Stops sharing a section in one note and keeps its
text as your own. The shared section, your other notes and your
collaborators are unchanged. - Copying. "Copy readable text (without sharing metadata)" copies the
text without the section's markers. "Copy shared section" copies it with
them: pasted into another note, it is another copy of the same section,
and it gives nobody access. - Repair. "Repair shared sections in this note" puts a damaged boundary
back, points to lines it cannot match, and lets you choose between your
version and the shared one. - Moving 0.3 shared tasks into a section is an explicit copy offered by
"Share section…". "Restore note before section import" undoes it in the
note.
In the note, a section carries one comment after its heading, one at its
end and one beside each item. Live Preview hides them; Source mode, or
"Show or hide sharing metadata", shows them.
Shared sections are on in 0.4.0 and in its betas: nothing to turn on.
- The 0.3 preview setting is gone.
"sectionsPreview"in the plugin's
data.jsonno longer does anything, whethertrueorfalse; the next
save of the settings drops it. - To turn shared sections off, quit Obsidian, add
"sectionsDisabled": trueto.obsidian/plugins/shared-tasks/data.json,
and start it again. Shared tasks (0.3) work as before either way.
Also new
- "Export diagnostics…" prepares a report of versions, states and error
codes, and shows it to you in full first. It holds no note text, names,
paths, keys or invitation links. You copy it or save it as a file;
nothing is sent. - Local sync data is encrypted at rest on each device, under a key kept
on that device. "Rotate key" (Settings → Shared Tasks → "Local
encryption") replaces it. - New members catch up faster. The owner's plugin publishes Snapshots,
so a new member loads one plus the latest changes, not the whole history. - After a server restore, a member the server had forgotten gets back in
by themselves.
Limits
- Size. A section of about 200 tasks with their notes is the qualified
size. A much larger one (2,000 tasks) works, but each edit blocks the
editor for seconds. - Long history. After many thousands of edits, a section becomes slower
(about half a second per edit). The details show how large its history
is; past about 200,000 characters they suggest starting a new section for
new material. Nothing happens automatically; compacting a section's
history is planned after this release. - Project server quotas. The project server (sync.openlfcp.org)
currently lets one identity host up to 200 collaborations (each shared
section is one), up to 50 new ones a day from one network, 256 MiB of
stored data per identity and 128 MiB per collaboration (the server holds
3 GiB in all). Past a limit, the action is refused with "quota
exceeded"; nothing already shared is lost.
These values may change, and the server's operator can set other limits
for an identity. A server you run yourself sets its own. - Mobile. Sections are read-only on mobile: they arrive and are shown,
and your edits there stay on your device. "Share section…", inviting and
removing access are not offered. Shared tasks work there as before. - No headings inside a section. Sharing offers to split it into
sections. - Local tokens. Some Tasks-plugin tokens stay local to your note (🔁 🛫
➕ ❌ 🔼). The preview shows them. - Desktop platforms. Windows and macOS are checked by an automated
smoke test in CI on each release. The plugin has not been tried by hand
on Windows, nor with an input method (IME) for languages such as
Chinese, Japanese or Korean. - A pilot with users follows this release. 0.4.0 was tested by the
project; feedback from the first users may bring 0.4.x fixes.
Updating from 0.3
Updating to 0.4. Your shared tasks keep working as before. Shared
Tasks upgrades its sync data on this device the first time 0.4 starts: it
is encrypted at rest, and earlier versions can no longer open it.Going back. After updating to 0.4, Shared Tasks cannot go back to
0.3.x on this device: its local sync data is upgraded and encrypted.
Downgrade only to 0.4.x or later. Your notes are not affected. If a 0.3.x
plugin shows "Shared Tasks could not start: VersionError", that is why:
install 0.4.x again, and its data is intact.
A collaborator still on 0.3.x cannot join a shared section: their plugin
says a newer version is needed, without using up the link.
Since the last betas (0.4.0-beta.16 to 0.4.0-beta.20)
For testers on the betas:
- Updating from Shared Tasks 0.3.4 now always starts syncing. Updated
in the same Obsidian window (as Obsidian's own plugin update and BRAT
do), the new version could find the old one's data still in use and fail
to start: nothing synced, sections stayed on "Loading shared section",
and nothing said why until Obsidian was restarted. It now waits for the
old version to finish and tries again for a few seconds. If the vault
really is open in another Obsidian window, it says so once and starts by
itself when that window closes. - A start that fails says so. For any other reason, one notice says
"Shared Tasks could not start: …" and what to do (restart Obsidian; your
notes are not affected), instead of staying silent. - A note open only in Reading view shows a collaborator's changes. If
a note with a shared section was open only in Reading view, a
collaborator's changes never appeared in it, although the section said
it was up to date, and switching back to editing lost them from your
note. They now show in Reading view and stay when you switch back; the
collaborator's change is never undone. - A section stays fast as its history grows. In a section where tasks
had been deleted, each change took longer the more the section had been
edited: after a few thousand changes, a second or more. It now stays
about as fast as in a new section, and its memory stays flat however
long its history is. A two-hour soak with three editors kept a change's
typical time at about 100 ms through about 5,000 changes. - A new member who can't insert a section yet is told what to do.
"Insert shared section…" said only that the section "cannot be shown
here yet". It now says the section has a conflict to resolve first: ask
a member who already has it in a note to open its details and choose
"Review conflicts…", then insert it again. - New tasks next to an unresolved conflict are saved. While a conflict
waited for "Review conflicts…", new tasks typed next to it could fail
with "Local save failed", and every task typed after them too. They are
now placed next to the nearest task that can take them, and saved. - Moving a task by cut and paste keeps it whole. Cut with Shift+↓ from
the start of a task's line when the next task is nested, the nested task
now keeps its place and indentation, and the pasted task does not push
the one it lands on under it. A task's whole line selected with the
mouse and cut now takes its hidden link line along, so the paste restores
the same task; deleted with Backspace or Delete, the task is removed for
your collaborators too. - Tested before release: installing and updating on Obsidian 1.13.4
and 1.14.4: a fresh install, an update from 0.3.4 and from
0.4.0-beta.15, turning the plugin off and on, and reinstalling it. The
details are in the
support matrix. - Tested before release: themes, views and copying on Obsidian 1.13.4
and 1.14.4, with a collaborator editing: light and dark theme in Source,
Live Preview and Reading view, split view, the Tasks plugin on and off,
and tasks copied into a note outside any section. Also in the
support matrix.
Under the hood
- The TypeScript SDK is
@openlfcp/*0.2.0 (exact versions, from npm with
provenance). - Spec
mvp-0.2-baseline.12; the project server runs the reference server
0.3.2, unchanged by this release. - On start, Share...
Shared Tasks 0.4.0-beta.20
Shared Tasks 0.4.0-beta.20: the twentieth beta with shared sections, and
the candidate for 0.4.0.
A pre-release for testers through BRAT: the community directory and
Obsidian's own updates keep offering 0.3.x.
New since 0.4.0-beta.19
Moving a task by cut and paste keeps it whole. A task moved by cut
and paste could lose the hidden line that links it to the shared section
(in Source view, the <!-- lfcp-ref … --> line under it): the section
then said "A binding line of the section is damaged", and the move was not
sent. Two ways to cut it no longer do that:
- with Shift+↓ from the start of a task's line when the next task is
nested (in Live Preview the selection ends after that task's
indentation): the nested task keeps its place, and the pasted task does
not push the one it lands on under it; - with the mouse, selecting exactly the task's line from its end to its
start (or start to end): the cut takes its hidden link line along, so the
paste restores the same task where you put it.
Deleting a selected task line removes the task cleanly. Selecting a
task's whole line and pressing Backspace or Delete removed only its text
and left the hidden link line behind ("binding line damaged"). The task is
now deleted, for your collaborators too.
Tested before release. The full native suite on Obsidian 1.13.4 and
1.14.4, including two new checks with a real keyboard and mouse: moving a
task with Shift+↓ next to a nested task while a collaborator nests it, and
moving and deleting a task line selected with the mouse. Before these
fixes both checks showed the damaged binding line; now they pass, with the
other cut, paste and move checks.
A two-hour soak of 0.4.0-beta.19 (three editors, offline periods,
server restarts, a member removed and a new one invited) kept a change's
typical time flat at about 100 ms through about 5,000 changes (0.4.0-beta.18:
over a second after 3,300), and every reconnect under 13 seconds.
Requires Obsidian 1.13.4 or later.
What it is
The features of 0.4.0, described in 0.4.0.md: share a whole
section of a note ("Share section…"), with its tasks, paragraphs and lists,
end-to-end encrypted, each section its own collaboration. Shared sections
are on in this beta: there is nothing to turn on.
Before you install
No way back to 0.3.x on this device. The first start of 0.4 upgrades
Shared Tasks' sync data on the device and encrypts it at rest. A 0.3.x
plugin can no longer open it ("Shared Tasks could not start:
VersionError"); install 0.4.x again and the data is intact. Your notes are
not affected.
- Try it in a test vault first, or keep a copy of your vault.
- A collaborator still on 0.3.x cannot join a shared section; their shared
tasks keep working with yours. - Collaborators on a shared section should all update to this beta. A
member on a beta before 0.4.0-beta.14 can keep undoing the others' edits
while their note is open, and a member on a beta before 0.4.0-beta.4
keeps seeing "Needs your attention" after someone else chose Keep it
deleted.
Install with BRAT
- Install BRAT from the community plugins.
- Run "BRAT: Add a beta plugin for testing" with
openlfcp/obsidian. In
the version field choose Latest version: a specific version stays
installed, and BRAT will not update it. - Enable Shared Tasks. Settings → Community plugins lists it as
version 0.4.0-beta.20. If it lists an earlier version, see below.
If an earlier 0.4.0 beta is installed, BRAT updates it ("BRAT: Check for
updates to all beta plugins"); your identity, collaborations and settings
are kept.
Stuck on an older beta? In BRAT's settings, find openlfcp/obsidian in
the beta plugin list. If it shows a version, it is pinned there: edit it and
choose Latest version (or remove it and add it again with Latest
version), then run "BRAT: Check for updates to all beta plugins". BRAT's
setting "Select latest plugin version by default" saves choosing.
To turn shared sections off, quit Obsidian, add "sectionsDisabled": true
to .obsidian/plugins/shared-tasks/data.json, and start it again.
What to report
"Export diagnostics…" prepares a report without note text, names, paths,
keys or links, and shows it to you first. Attach it to an issue at
https://github.com/openlfcp/obsidian/issues with what you did and what you
saw.
Known limits
The limits of 0.4.0.md apply: about 200 tasks per
section is the qualified size, sections are read-only on mobile, and there
are no headings inside a section.
- Rejoining a section you were removed from isn't supported yet. Your
local copy stays on your device. - Project server quotas. The project server (sync.openlfcp.org)
currently lets one identity host up to 200 collaborations (each shared
section is one), up to 50 new ones a day from one network, 256 MiB of
stored data in all and 128 MiB per collaboration. Past a limit, the
action is refused with "quota exceeded"; nothing already shared is lost.
These values may change, and the server's operator can set other limits
for an identity. A server you run yourself sets its own.
Under the hood
- In a section, a cut that ends inside the next line's leading
indentation ends at that line's start, and a paste at a line's start
leaves out the indentation its text ends with (cutKeepsIndent,
pasteWithoutTrailingIndent). - A range from a line's start to the end of a bound Task's line (with or
without its line break) takes that Task's own binding lines, never the
lines under it (withBindingLines): a cut widens its selection before
the editor copies it (acutDOM handler), a delete widens the range it
removes. - New native specs
section-shift-down-cutandsection-whole-line-cut
(real keys and mouse in Live Preview): before the fixes they show the
owner's damaged bindings, with them every binding keeps its line. - Unchanged:
@openlfcp/*0.2.0-beta.10, specmvp-0.2-baseline.12, the
reference server at138030a, 49 fixtures.
Shared Tasks 0.4.0-beta.19
Shared Tasks 0.4.0-beta.19: the nineteenth beta with shared sections, and
the candidate for 0.4.0. (0.4.0-beta.18 was never released: everything in
it is here.)
A pre-release for testers through BRAT: the community directory and
Obsidian's own updates keep offering 0.3.x.
New since 0.4.0-beta.17
A section after a collaborator was removed loads for newcomers. When
someone's access to a section was removed, a collaborator invited
afterwards could stay at "no shared section on this device yet" for good,
in a section where nobody edited since. The section now loads for them
within seconds.
A new member who can't insert a section yet because of an unresolved
conflict is told what to do. "Insert shared section…" said only that the
section "cannot be shown here yet". It now says that the section has a
conflict to resolve first: ask a member who already has it in a note to
open its details and choose "Review conflicts…", then insert it again.
"1 local update waiting" no longer stays after everything was sent.
After going offline or a server restart, a section could keep saying an
update was waiting although it had been sent and accepted. It now says the
section is up to date.
Reconnecting within 15 seconds. After the sync server or the network
was unreachable for a few minutes, Shared Tasks could take up to a minute
to reconnect after it came back. It now tries again at most every 15
seconds, and at once when you switch back to Obsidian's window.
Moving a task by cut and paste no longer deletes it for collaborators
when Obsidian is busy. If you cut a task and pasted it elsewhere in the
section while Shared Tasks was still writing a change into the note, the
task could be deleted for your collaborators while your note still showed
it, and the section said it needed attention. The paste now always moves
the task.
New tasks next to an unresolved conflict are saved. While a conflict
in a section waited for "Review conflicts…", new tasks you typed next to
it could fail with "Local save failed", and every task typed after them
too. They are now placed next to the nearest task that can take them, and
saved.
No false "needs attention" after a collaborator deletes a task. When a
collaborator deleted a task, your section could say it differs from the
shared version, and "Review conflicts" offered to restore a task your note
no longer showed, until you next typed in that note. The task is now
removed and the section is up to date.
Review conflicts no longer offers a place it cannot apply. When a task
was moved by one collaborator while another deleted the task it was moved
under, "Review conflicts" offered to put it under the deleted task;
choosing that said it could not be applied, and the question stayed. Only
places that can be applied are offered now, and the top of the section
when no other is left.
A copy that differs says so when the shared version hides a task. A
task your note showed under another task that the shared version no
longer shows could stay in your note while your collaborators did not
have it, and the section said it was up to date. It now says your note
differs from the shared version.
No "Server confirmation unavailable" for changes that were saved.
After a long pause in Obsidian, a section could say "Server confirmation
unavailable" for changes the server had saved. It now says they are
confirmed.
A section with deleted tasks stays fast as its history grows. In a
section where tasks had been deleted, each change took longer the more
the section had been edited: after a few thousand changes, a second or
more, and the status could lag for several seconds. It now stays about
as fast as in a new section.
Memory stays flat as a section's history grows. A section's memory
grew with every change (in long sessions, hundreds of megabytes), and
editing slowed down with it. It now stays the same however long the
section's history is.
Tested before release. The full native suite on Obsidian 1.13.4 and
1.14.4 with a collaborator: sharing, joining, editing on both sides,
offline work and restarts, conflicts, removing someone and inviting
someone new, cut and paste, undo, the Reading view and the desktop
matrix (themes, views, split view, the Tasks plugin, copying).
Requires Obsidian 1.13.4 or later.
What it is
The features of 0.4.0, described in 0.4.0.md: share a whole
section of a note ("Share section…"), with its tasks, paragraphs and lists,
end-to-end encrypted, each section its own collaboration. Shared sections
are on in this beta: there is nothing to turn on.
Before you install
No way back to 0.3.x on this device. The first start of 0.4 upgrades
Shared Tasks' sync data on the device and encrypts it at rest. A 0.3.x
plugin can no longer open it ("Shared Tasks could not start:
VersionError"); install 0.4.x again and the data is intact. Your notes are
not affected.
- Try it in a test vault first, or keep a copy of your vault.
- A collaborator still on 0.3.x cannot join a shared section; their shared
tasks keep working with yours. - Collaborators on a shared section should all update to this beta. A
member on a beta before 0.4.0-beta.14 can keep undoing the others' edits
while their note is open, and a member on a beta before 0.4.0-beta.4
keeps seeing "Needs your attention" after someone else chose Keep it
deleted.
Install with BRAT
- Install BRAT from the community plugins.
- Run "BRAT: Add a beta plugin for testing" with
openlfcp/obsidian. In
the version field choose Latest version: a specific version stays
installed, and BRAT will not update it. - Enable Shared Tasks. Settings → Community plugins lists it as
version 0.4.0-beta.19. If it lists an earlier version, see below.
If an earlier 0.4.0 beta is installed, BRAT updates it ("BRAT: Check for
updates to all beta plugins"); your identity, collaborations and settings
are kept.
Stuck on an older beta? In BRAT's settings, find openlfcp/obsidian in
the beta plugin list. If it shows a version, it is pinned there: edit it and
choose Latest version (or remove it and add it again with Latest
version), then run "BRAT: Check for updates to all beta plugins". BRAT's
setting "Select latest plugin version by default" saves choosing.
To turn shared sections off, quit Obsidian, add "sectionsDisabled": true
to .obsidian/plugins/shared-tasks/data.json, and start it again.
What to report
"Export diagnostics…" prepares a report without note text, names, paths,
keys or links, and shows it to you first. Attach it to an issue at
https://github.com/openlfcp/obsidian/issues with what you did and what you
saw.
Known limits
The limits of 0.4.0.md apply: about 200 tasks per
section is the qualified size, sections are read-only on mobile, and there
are no headings inside a section.
- Rejoining a section you were removed from isn't supported yet. Your
local copy stays on your device. - Project server quotas. The project server (sync.openlfcp.org)
currently lets one identity host up to 200 collaborations (each shared
section is one), up to 50 new ones a day from one network, 256 MiB of
stored data in all and 128 MiB per collaboration. Past a limit, the
action is refused with "quota exceeded"; nothing already shared is lost.
These values may change, and the server's operator can set other limits
for an identity. A server you run yourself sets its own.
Under the hood
- A member who may publish Snapshots publishes one as soon as the current
Data Epoch (past 0) has none on this device, checked every 10 s: a
member who joins after a removal receives only the new epoch's key and
loads the history from that Snapshot. An invitation waits until the
server has it. - The SDK status the host keeps (SdkStatusTracker) checks a batch in
storage after each receipt release and each report that is not final: a
batch the SDK no longer holds leaves the pending ones. - The reconnect policy waits 1 s, doubling, at most 15 s, each wait
within ±20 %; focusing the window connects at once. - A pass's result describes the note as written: a node its remote patch
removes is not reported shown again. A pass that wrote a collaborator's
change and still reports the note as differing is followed by exactly
one more pass, never a loop. - A paste made while a pass is still writing is not dropped: the source
coordinator counts each route's changes, and a pass's write keeps a
source that changed since the pass started, so the next pass sees the
paste with its hints (soak finding #9). - The refusals of "Insert shared section…" come from one function
(insertRefusalMessage); a section with a conflict says who can resolve it
and how (LFCP-02-123 lifts the refusal itself). - A commit refused as INVALID_PREDECESSOR is planned again after the
nearest earlier sibling the SDK may accept, or first, at most four times
per pass (soak finding #12); other refusals are kept as before. - Review conflicts offers no placement under a deleted node.
- A node active in the model but hidden, still shown in the note, counts
as a divergence. @openlfcp/*0.2.0-beta.10: whether an edit was concurrent with a
deletion is decided with vector clocks, the decoded history is reused
between revisions, and the tree and snapshot are derived once per
revision (a pass at 6,000 changes with 300 deleted tasks: 200 ms against
746 ms, and the status read no longer derives the tree again).@openlfcp/*0.2.0-beta.9: an acknowledgement that arrives after a
long pause is recorded as the server's confirmation; and a section's replica no longer keeps an old
copy of the document per unchanged task (Automerge memory flat as the
history grows: 10 MiB at 2,000 changes with 170 tasks, against 1.6 GiB).- New native spec
section-remove-invite: remove someone, invite someone
new, the newcomer l...