Skip to content

Releases: drbinsaad/obsidian-clinical-workspace

0.6.1

Choose a tag to compare

@github-actions github-actions released this 13 Aug 08:22
86dbf4c

Fast-follow to 0.6.0.

Changed

  • The what's-new window now appears as soon as the updated plugin loads (at layout-ready), instead of waiting until the workspace is next opened. It still shows once per version per synced device set.
  • Whole-folder record reads are served from a path-keyed index that is trusted until Obsidian reports a change for that path, so a workflow action no longer re-reads every record note. On large caseloads this removes the dominant per-action cost on phones; a file's existence is always re-checked before an entry is served, and write verification updates the index authoritatively.

Added

  • A property harness for the sync-safety state machine: seeded random sequences of restarts, folder renames, record deletions, and data.json deliveries assert after every event that a clinical write is accepted only against a root holding the trusted record count — and that the trusted baseline only ratchets upward.

Full Changelog: 0.6.0...0.6.1

0.6.0

Choose a tag to compare

@github-actions github-actions released this 13 Aug 07:54
89eeae2

Review-and-roadmap release: a full independent review of 0.5.0 with every
confirmed finding fixed under regression coverage (tests/ultra-review-remediation.test.ts),
plus the first block of workflow features (tests/roadmap-features.test.ts,
tests/interleaving.test.ts). The suite grows from 219 to 245 tests.

Fixed

  • Replacing an episode's next action can no longer cancel the wrong task: every idempotency-key match now also compares the underlying task text and due date, so a hand-edited or re-worded task is never mistaken for the one the plan raised.
  • Records missing while Obsidian was closed now fail closed at load exactly like a live deletion: the on-disk count is checked against the persisted baseline, the recovery inventory only ratchets forward (never rebasing from a depleted root), and a momentary zero count can no longer disarm the deletion detector.
  • A crash between closing a task and updating its episode is now repaired by the retry instead of being permanently stuck; the duplicate-episode path repairs a missing first task but never supersedes live work; and episode updates validate every field before the first write.
  • The automatic patient archive is skipped while any episode note is unreadable, since invisible notes may still be active care.
  • YAML 1.1 date objects keep their calendar day in every timezone (UTC-midnight dates read as UTC, local moments as local).
  • Sync-recovery hardening: baseline adoption and the body-migration command re-check for a migration marker or armed barrier at decision time, not just before their confirmation opened; a record-free synced folder move stays pending until the destination folder actually arrives; CRLF-normalized legacy patient bodies are recognised by the identifier-removal command; and concurrent first-use entry points share one initialization run.
  • Interface correctness: background refreshes keep the scroll position; arrow-key tab switching keeps keyboard focus; modals lock while a clinical write is in flight, refuse saves over records that changed after the form opened, and fold invalid frontmatter enums to the value actually displayed; the missing-file notice no longer embeds a potentially patient-named path; and the surgery logbook lists only genuinely completed procedures.
  • Integrity coverage: corrupted MRNs (non-digits) are reported, non-boolean follow-up flags are flagged instead of silently suppressing the contradiction check, event notes pass field validation, and closed records whose audit trail lacks its closure entry are reported (missing-transition-event).
  • Normalization: zero-width characters (ZWSP, word joiner, BOM) are stripped from matching keys so visually identical names cannot split one patient into two; phone numbers keep "+" only as the international prefix. ZWNJ/ZWJ remain preserved.
  • The repository refuses to adopt a different record occupying a managed path as an idempotent retry; an episode created without a next action no longer stores a phantom due date; install-to-vault resolves dist/ from the repository rather than the caller's working directory; and release verification now scans the shipped stylesheet for identifier-shaped literals and remote url() references.
  • The destructive "Move records" migration now requires a typed MOVE confirmation showing the plan, matching its own description.

Added

  • Task templates: a Templates-folder note with clinical_template: task-bundle frontmatter becomes an applyable bundle ("Tonsillectomy: consent → book OR → post-op review"). Applying is explicit and previewed; identical open tasks are kept, never duplicated. See the data model reference.
  • Recurring follow-ups: a task can repeat (weekly to yearly). Completing it raises the next occurrence before the completion is written, so a crash between the two converges on retry; cancelling ends the series.
  • Reschedule and reopen: open tasks move to a new date in one step (the idempotency key follows the fields it hashes), and a mis-tapped completion can be reopened from the patient view — audited, and blocked while the episode is archived.
  • Ward handover note: one command writes an end-of-day summary of inpatients and overdue/due-today work into the Documents folder. It contains identifiers by design, stays inside the clinical folder, and says so.
  • Search: one box across patients, MRNs, cases, tasks, and procedures, from the header or the command palette.
  • Patient view: episodes, open and recently closed work, procedures, and audit history on one screen, with reopen for closed tasks.
  • Episode history: the existing audit Events shown per episode, newest first.
  • Today view: a ward-round list of inpatients in priority order, a "Next 7 days" section, and overdue badges that show the age ("Overdue 12 days") instead of a bare flag.
  • Tasks view: filter chips by priority and task type.
  • Surgery view: logbook summary (total, this month, as primary, awaiting OR) and a per-procedure breakdown table (total / as primary / this year) for training portfolios.
  • Forms: date fields carry +1w/+2w/+1m/+3m quick chips.
  • Integrity report: a selectable identifier-free summary (issue codes and counts only) for usable bug reports. Shown as text to copy manually — programmatic clipboard access stays banned by the community preflight.
  • Development-only scale benchmark command; a data model reference (docs/data-model.md); seeded random-interleaving tests over the workflow.

Changed

  • Task transition table: completed → open is now legal, exclusively for the audited reopen path.

Full Changelog: 0.5.0...0.6.0

Clinical Workspace 0.5.0 — Reliability

Choose a tag to compare

@github-actions github-actions released this 12 Aug 11:35
f0ed17a

This release implements the accepted findings of an independent review of 0.4.1, together with the 0.4.1 stacked-pane and iPhone-keyboard work. Every fix carries regression coverage in tests/reliability.test.ts.

Highlights

  • Safe procedure retries. A retry that carries different follow-up details than an earlier attempt already saved is refused with a clear message instead of silently mixing the two states. A matching retry resumes from the saved record, and a lost procedure audit event is settled on retry instead of disappearing forever.
  • Dates validated before anything is written. Impossible calendar dates and follow-up dates before the procedure date are rejected while the vault is still untouched.
  • A more truthful integrity check. Coverage now includes schema versions, task types, procedure statuses, timestamps, missing idempotency keys, duplicate internal ids, follow-up contradictions, next actions no open task tracks, ready-to-close episodes with open work, and audit-trail gaps. The clean result now reads "Configured checks passed" with its scope, and the scan stays fast on large caseloads.
  • Stronger Sync recovery. Fail-closed recovery now verifies the actual parsed records (per-entity counts plus a checksum of the opaque record ids — no patient information) instead of a raw file count. A new command, Confirm current records as the recovery baseline, provides a deliberate exit after an intentional deletion or accepted Sync outcome.
  • Identifier hygiene. Generated note bodies no longer duplicate names, MRNs, or phone numbers; a previewed command cleans up bodies written by older versions without touching anything you have edited. Audit summaries and error messages no longer carry user text or vault paths. The CSV logbook export strips directionality control characters.
  • Right-to-left, accessibility, and layout. Arabic layouts mirror correctly (floating button, header, date fields, arrow keys); every card action has a per-record screen-reader name; form controls meet the 44 px touch minimum; the workspace adapts to narrow stacked panes, and clinical forms stay inside the visible iPhone viewport with the keyboard open.
  • What's new window. After an update, the first workspace open shows a short summary like this one with a link to the release notes — once per version, no network request, never on a fresh install.

Verification

  • 219 automated tests passed, including the new reliability regression suite.
  • TypeScript, lint, production build, release verification, Community preflight, and public-asset verification passed.
  • Dependency audit reports 0 vulnerabilities.
  • The release workflow rebuilt and attested the three distributable assets.

Physical-device status

The automated mobile checks passed and the plugin declares desktop and mobile support. The repository's physical-iPhone checklist remains intentionally unsigned; this release does not claim that physical-iPhone validation has been completed. Use synthetic data when completing the checklist after installation.

Install or update

Update through Obsidian Community Plugins when 0.5.0 is offered to your device, or use BRAT/GitHub with the release below. Restart or reload Obsidian after updating if the new commands do not appear immediately.

Full changelog: 0.4.0...0.5.0

Clinical Workspace 0.4.0 — Safe Quick Entry

Choose a tag to compare

@github-actions github-actions released this 10 Aug 11:37
a2a5ee2

Highlights

Clinical Workspace 0.4.0 adds a privacy-conscious Quick Entry system for faster clinical workflow capture on desktop and mobile.

  • Quick Entry hub for choosing the next action from one compact interface.
  • Dedicated Obsidian commands for new patient/Episode, task or follow-up, procedure, and Today.
  • No default keyboard shortcuts, so every user can choose conflict-free hotkeys in Obsidian settings.
  • Touch-friendly workspace and Open-menu entry points, with support for adding commands to Obsidian's mobile toolbar.
  • Fixed, action-only Obsidian links for Apple Shortcuts. Patient identifiers and clinical details are never accepted in the URL.
  • Task and procedure entry require a visible Episode choice and confirmation; procedure choices remain limited to active OR-booking Episodes.
  • Stronger concurrency protection across patient identity, MRN, Episode, task, procedure, archive, restore, and merge operations. Stale context fails closed instead of writing to the wrong relationship.

Quick Entry links for Apple Shortcuts

These links open the corresponding in-plugin form. Enter all sensitive information inside Clinical Workspace only.

  • obsidian://clinical-workspace-quick-entry
  • obsidian://clinical-workspace-new-patient-episode
  • obsidian://clinical-workspace-add-task-follow-up
  • obsidian://clinical-workspace-record-procedure
  • obsidian://clinical-workspace-today

Any query parameter causes the invocation to be rejected. Do not place names, MRNs, diagnoses, notes, or other clinical information in an Obsidian URL or Apple Shortcut.

Verification

  • 203 automated tests passed.
  • TypeScript, lint, production build, release verification, Community preflight, and public-asset verification passed.
  • Dependency audit reports 0 vulnerabilities.
  • The release workflow rebuilt and attested the three distributable assets.

Physical-device status

The automated mobile checks passed and the plugin declares desktop and mobile support. The repository's physical-iPhone checklist remains intentionally unsigned; this release does not claim that physical-iPhone validation has been completed. Use synthetic data when completing the checklist after installation.

Install or update

Update through Obsidian Community Plugins when 0.4.0 is offered to your device, or use BRAT/GitHub with the release below. Restart or reload Obsidian after updating if the new commands do not appear immediately.

Full changelog: 0.3.7...0.4.0

Clinical Workspace 0.3.7

Choose a tag to compare

@github-actions github-actions released this 10 Aug 10:15
cece5d5

Clinical Workspace 0.3.7

This patch release improves the public project experience and closes a defence-in-depth gap in the separate surgery-logbook exporter.

What changed

  • Rebuilt the project documentation around Community installation, a synthetic first-use walkthrough, the clinical safety boundary, folder migration, and logbook export.
  • Added clearly labelled abstract artwork and a real Clinical Workspace screenshot captured from a disposable vault containing synthetic records only.
  • Added support, conduct, contribution, feature-request, and pull-request guidance, plus Dependabot configuration.
  • The repository-only Node.js logbook exporter now rejects every destination inside this public source checkout, including relative paths and symlink-disguised parents. It already rejected destinations inside the source vault.
  • Added CI protection for public text and visual assets: reviewed image checksums, rejection of EXIF/text metadata, and broader identifier-shaped-value scanning.
  • Clarified that default CSV exports are pseudonymized and confidential—not anonymous or de-identified—and that identified exports require explicit authorization and --identifiers.

The exporter remains a desktop, repository-only utility. It is not bundled into the Community plugin and cannot run on iPhone or iPad. The installed plugin's clinical record schema and workflow are unchanged in this patch.

Validation

  • 177/177 tests passed, including 26 exporter tests.
  • Typecheck, zero-warning lint, production build, release verification, Community preflight, and public-asset verification passed.
  • npm audit reports zero vulnerabilities.
  • Release provenance attestations were produced for all three plugin assets.

Install or update

Update through Obsidian → Settings → Community plugins → Check for updates, or install the three matching assets below together. Requires Obsidian 1.13.0 or newer.

Full changelog: 0.3.6...0.3.7

0.3.6

Choose a tag to compare

@github-actions github-actions released this 10 Aug 09:06
2ba8a08

Clinical Workspace 0.3.6

Important upgrade step

Existing workspaces open read-only once after upgrading. Let Obsidian Sync finish, confirm that the visible managed-record count is complete, then run Clinical Workspace: Initialize new workspace and choose Adopt current workspace. Cancel if any records may still be in transit.

What changed

  • Fail-closed recovery for incomplete Sync delivery, missing managed folders, and interrupted folder migrations.
  • A two-phase, path-free baseline-adoption flow for existing and new workspaces.
  • Bounded mobile list pagination with focus and scroll preservation.
  • Privacy-safe migration and integrity errors that avoid patient identifiers and sensitive paths.
  • A repository-only desktop surgery-logbook CSV exporter with strict relationship validation, atomic owner-only output, overwrite protection, and spreadsheet-formula neutralization.

Export privacy boundary

The default CSV is pseudonymized and still confidential. It is not anonymous or de-identified. Exact dates, procedure context, and user-authored indication/outcome text may permit re-identification and may contain identifiers. The default mode does not read the Patients folder. The explicit --identifiers option additionally includes MRN and patient name and must be used only through an institutionally approved workflow.

The exporter is a Node.js utility in the source repository. It is not included in the installed Obsidian plugin and cannot run on iPhone or iPad.

See the README, security policy, and full changelog.

Clinical Workspace 0.3.5

Choose a tag to compare

@github-actions github-actions released this 07 Aug 20:25
463b747

What's Changed

Full Changelog: 0.3.4...0.3.5

0.3.4

Choose a tag to compare

@github-actions github-actions released this 07 Aug 17:04
0471bb8

What's Changed

  • Remediate independent Clinical Workspace review by @drbinsaad in #4

Full Changelog: 0.3.3...0.3.4

0.3.3

Choose a tag to compare

@github-actions github-actions released this 07 Aug 14:14
63cc43b

What's Changed

Full Changelog: 0.3.2...0.3.3

0.3.2

Choose a tag to compare

@github-actions github-actions released this 07 Aug 14:10
7d76134

What's Changed

  • Attest Clinical Workspace release assets by @drbinsaad in #2

Full Changelog: 0.3.1...0.3.2