Bridge Control

by studentepercaso
5
4
3
2
1
Score: 46/100

Description

Obsidian companion for configuring read/write access used by Obsidian Bridge.

Reviews

No reviews yet.

Stats

0
stars
338
downloads
0
forks
67
days
17
days
63
days
20
total PRs
6
open PRs
2
closed PRs
12
merged PRs
0
total issues
0
open issues
0
closed issues
21
commits

Latest Version

2 months ago

Changelog

Bridge Control 0.5.8

English

Bridge Control 0.5.8 is a coordinated metadata and documentation release for Obsidian Bridge 0.5.8. The matching Windows setup corrects discovery of the bundled Codex marketplace from a completely extracted installer package. Its guided interface now uses an adaptive WPF layout with grid-based automatic sizing and a scrollable content area, keeping text sharp at high DPI and the primary action reachable on constrained displays. A real Windows UI smoke test opens and closes the packaged installer without performing an installation.

This standalone companion release changes no Bridge Control runtime source, bundled main.js behavior, shared-settings schema, permission, management operation, command-protocol field, network behavior, direct filesystem note-write surface, or permanent-deletion capability. Install the matching 0.5.8 bridge and companion, reload Obsidian, refresh the Codex plugin, and start a new task before testing. Existing Protected, Autonomous, and Full management choices are preserved during the update.

Italiano

Bridge Control 0.5.8 è una release coordinata di metadati e documentazione per Obsidian Bridge 0.5.8. Il pacchetto Windows corrispondente corregge il rilevamento del marketplace Codex incluso quando l’installer è stato estratto completamente. L’interfaccia guidata usa ora un layout WPF adattivo con griglia a dimensionamento automatico e area di contenuto scorrevole, mantenendo il testo nitido ad alta risoluzione e l’azione principale raggiungibile sugli schermi con spazio limitato. Uno smoke test reale su Windows apre e chiude l’installer confezionato senza eseguire alcuna installazione.

Questa release autonoma non modifica il sorgente runtime di Bridge Control, il comportamento del bundle main.js, lo schema delle impostazioni condivise, i permessi, le operazioni gestite, i campi del protocollo dei comandi, il comportamento di rete, la superficie di scrittura diretta delle note via filesystem o la possibilità di cancellazione permanente. Installa bridge e companion 0.5.8 corrispondenti, ricarica Obsidian, aggiorna il plugin Codex e avvia una nuova attività prima della prova. Le scelte esistenti Accesso protetto, Accesso autonomo e Gestione completa vengono conservate durante l’aggiornamento.

README file from

Github

Bridge Control

English · Italiano

Bridge Control is the desktop-only Obsidian companion for Obsidian Bridge. Version 0.5.8 aligns the companion with the corrected self-contained Windows setup, including its bundled Codex marketplace and adaptive WPF installer interface for sharp high-DPI rendering, while preserving the synchronized-file fix, the review-hardened companion, the explicit Full management, Protected, and Autonomous profiles, and the existing permission boundaries.

Default behavior

On first run:

  • access is bound to the current vault's stable identity and local path;
  • reading remains off until the user selects folders or the whole eligible vault;
  • writing and every management permission are off;
  • the initial profile is Protected access;
  • no folder is preselected and no update silently increases access.

The panel includes a searchable visual folder picker, separate Read and Write checkboxes, verified access-mode controls, non-executing Obsidian CLI candidate diagnostics, and a Recent problems view. The picker uses the vault's actual Vault.configDir instead of assuming that the configuration folder is named .obsidian.

Access profiles

  • Protected access keeps reading and guarded create/append operations inside the folders selected by the user. Each protected write still requires a preview and explicit confirmation.
  • Autonomous access allows read, create, and append across the eligible vault without per-change confirmation. It does not grant in-place replacement, frontmatter editing, rename, move, or trash.
  • Full management is a separate, explicitly confirmed profile. The user chooses the exact capabilities to grant: Edit notes and frontmatter, Rename and move, and Move to Obsidian trash.

Full management applies only while the profile and the corresponding capability remain enabled. Bridge Control checks the authoritative shared settings again immediately before a mutation. Returning to Protected or Autonomous access removes all management grants.

Managed operations

Obsidian Bridge prepares a bounded preview and a short-lived, one-time request. Bridge Control consumes that request through the public Obsidian CLI handler bridge-control:commit, authenticates its opaque ID and token, rechecks the vault, permission, path, expiry, and source hash, then performs the operation inside Obsidian using public APIs:

  • Vault.process() for atomic note replacement;
  • Vault.process() plus Obsidian's public YAML helpers for an atomic, hash-checked frontmatter change;
  • Vault.rename() for rename/move without silently rewriting other notes or expanding the Move grant into Edit;
  • FileManager.trashFile() for recoverable deletion.

The matching 0.5.8 bridge verifies synchronized notes with repeated byte-identical reads and a bounded quiet metadata window. Metadata-only ctime changes can settle without becoming false content conflicts, while identity, size, mtime, path, truncation, growth, or byte changes still fail closed. The snapshot path remains read-only; create/append mutation remains on the allowlisted official Obsidian CLI. Each create/append proposal accepts at most 64 KiB of UTF-8 content, its complete preview is bounded to 192 KiB, and long content remains split into complete CLI frames of at most 3072 UTF-8 bytes. Environment-only create/append requires migration to Bridge Control, the resulting appended document remains bounded to 1 MiB, and create requires an existing parent folder. Version 0.5.8 changes neither the companion command protocol nor managed mutation code.

Before mutation, the handler stores a local recovery backup. It verifies the result, records metadata in the shared audit log, and attempts a bounded rollback when a partially applied operation does not meet its postcondition. Requests are serialized and consumed once.

The external create/append writer does not attempt destructive automatic CLI rollback after a post-mutation failure. It keeps the exact backup and audit evidence, leaves the observed note untouched, and reports manual_recovery_required=true; a partial create remains delete_disabled. This is not an atomic rollback claim and does not change the companion handler.

There is deliberately no permanent-delete operation, JavaScript evaluation, shell access, child-process launch, arbitrary Obsidian command execution, plugin management, or direct filesystem access to note paths. Full management is not an eval or terminal capability.

Shared settings

Bridge Control 0.5.8 atomically maintains strict shared-settings version 5:

  • Windows: %LOCALAPPDATA%\ObsidianBridge\settings.json
  • macOS: ~/Library/Application Support/ObsidianBridge/settings.json
  • Linux: $XDG_CONFIG_HOME/ObsidianBridge/settings.json or ~/.config/ObsidianBridge/settings.json

Version-2 settings migrate to Protected access. Version-3 Full access remains Autonomous access and receives no management permission. Existing version-4 entries retain their explicit choices, but remain deny-all until that exact vault opens and Bridge Control records its real Vault.configDir; any saved folder scope that intersects the configuration directory is removed during migration. Version 5 rejects invalid management combinations and treats an unknown configuration directory as deny-all. Missing, malformed, stale, or unverifiable settings fail closed; the per-vault plugin cache cannot restore an elevated profile.

The shared file stores the stable vault ID, normalized local path, actual configuration directory, access mode, authorized relative folders, and the three management booleans. It does not store note bodies.

Administrators may explicitly redirect the shared settings file with the OBSIDIAN_BRIDGE_SETTINGS_PATH environment variable before starting Obsidian. Bridge Control never accepts that path from vault plugin data.

Paths must be normalized Markdown paths relative to the vault. Absolute paths, traversal, ., .., backslash paths, and hidden locations such as .obsidian and .trash are rejected.

Privacy and security

  • No network requests or telemetry.
  • The settings panel enumerates folders but does not scan note bodies. The management handler reads only the note involved in an authenticated request.
  • A short-lived replacement request can contain the proposed new note body. Its local request file is claimed once and removed before mutation; it is never sent over the network.
  • Recovery backups contain the affected pre-change note body and share the deterministic local Obsidian Bridge directory's newest-20 JSON pool. They are never shown by Recent problems or returned by the metadata-only audit tool; keep an independent backup.
  • Audit records can contain paths, operation types, hashes, outcome, backup identifiers, recovery status, and bounded failure_stage and cause_code values, but never raw exception messages, CLI output, note text, proposed content, or backup bodies.
  • Node filesystem access is limited to the documented external stores: shared settings and their lock/quarantine state, the read-only size-bounded Obsidian registry, one-time management requests, recovery backups, and metadata-only audit records. Note content and note mutation use only public Obsidian APIs.
  • CLI diagnostics run only after an explicit click. They inspect an environment override or known installation paths, never the ambient PATH, and do not launch any executable. The external bridge performs the definitive CLI readiness check when a CLI-backed operation is requested.
  • The management channel accepts only bridge-control:commit with an exact one-time request ID and 256-bit token. It does not accept note content as a CLI argument.

Build

npm ci
npm run check

For manual testing, copy main.js, manifest.json, and styles.css to:

<vault>/.obsidian/plugins/bridge-control/

Then reload Obsidian and enable Bridge Control under Community plugins. Managed operations require Obsidian 1.12.7 or later, the official CLI enabled for the external bridge, and the matching Obsidian Bridge 0.5.8 release.

Tagged releases are built twice from the lockfile by GitHub Actions. The workflow requires byte-identical output, attests main.js, manifest.json, and styles.css, and uploads those exact assets to a draft release. See docs/RELEASE_WORKFLOW.md for verification and the fail-closed backfill procedure.

See the 0.5.8 bilingual release notes for the exact compatibility details.

This project is independent and is not affiliated with or endorsed by Obsidian.