Skip to content

Releases: codewithelvin/confluence-for-obsidian

0.0.5

Choose a tag to compare

@github-actions github-actions released this 14 Aug 03:27

Full Changelog: 0.0.4...0.0.5

0.0.4

Choose a tag to compare

@github-actions github-actions released this 12 Aug 17:31

Fixed

  • minAppVersion is now 1.7.2, the version the plugin actually needs. It claimed
    1.5.3 while calling four APIs added later — Vault.getFileByPath and
    Vault.getFolderByPath (1.5.7), FileManager.trashFile (1.6.6) and
    Workspace.revealLeaf (1.7.2) — because the obsidian typings are pinned at 1.13.1,
    so the calls typechecked against a floor that does not have them. versions.json is
    corrected for the earlier releases too: they have the same floor, and an install on
    1.5.3 would otherwise be offered a build that fails on its first vault read.
  • Timers start through window.setTimeout, so a timer belongs to the window that
    started it rather than possibly to the main one — the case that matters in a popout.

Added

  • Release assets carry signed build provenance, so anyone can verify a download was
    built by the release workflow from this repository rather than uploaded by hand:
    gh attestation verify main.js --repo codewithelvin/confluence-for-obsidian.

Changed

  • Diagnostic logging uses the console's debug channel instead of log, so normal
    operation leaves the console quiet while warnings and errors still show.
  • Sentence case for UI text: "Personal access token", and the Root page ID field's
    placeholder.

0.0.3

Choose a tag to compare

@github-actions github-actions released this 12 Aug 16:48

Fixed

  • The release is published as a normal release rather than a GitHub prerelease, so
    Obsidian can find and distribute it. A prerelease is omitted from
    /releases/latest, which answered 404 while two releases were published, and the
    plugin directory rejected the submission with "No release matches your manifest
    version" even though the manifest, the tag and the assets all agreed. Only a tag
    carrying a suffix, such as 0.1.0-beta, is a prerelease now.

0.0.2

0.0.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Aug 16:40

Changed

  • Renamed to Confluence DC Connector. Obsidian's plugin directory does not
    accept a name containing "Obsidian", so the previous name could not be
    submitted at all. The plugin id is unchanged, so an existing installation
    keeps its settings, its token and its mirror — nothing needs re-pulling.

v0.0.1-beta

v0.0.1-beta Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Aug 16:23

First public build, released as a prerelease: every milestone is present, and the
write paths have been exercised against one Confluence Data Center 7.19.6 server
in one space. Treat it as a beta until a second server has confirmed them.

Added

  • Project skeleton: TypeScript strict build via esbuild, ESLint with enforced
    layer boundaries, Prettier, Vitest with coverage gates, and CI/release
    workflows.
  • Plugin lifecycle with settings persistence, validation of untrusted
    data.json contents, and a settings tab.
  • Logging with mandatory secret redaction, covering both pattern-matched
    credentials and registered live tokens.
  • Confluence Data Center gateway: REST v1 client with bearer authentication,
    pagination, bounded concurrency, and retry with full-jitter backoff that
    honours Retry-After.
  • Personal Access Token storage encrypted through the operating system
    keychain, degrading to memory-only rather than plaintext when unavailable.
  • Server version detection with an ordered fallback chain, treating an
    undetectable version as unknown rather than unsupported.
  • Connection management, connection testing, and a searchable space browser.
  • npm run lint:boundaries, which proves the architecture rules reject
    violations instead of merely being configured to.
  • Storage-format ↔ Markdown converter: headings, inline marks, lists, tables,
    links, code macros, info/note/warning/tip panels, expand macros and task
    lists, with everything else preserved verbatim as an opaque placeholder.
  • Both fidelity checks: pull-time certification decides whether a page can ever
    be pushed safely, and push-time verification decides whether a specific edit
    can. Neither ever guesses.
  • Golden corpus of 60 fixtures asserting 100% idempotence plus lossless
    round-tripping wherever claimed, regenerated with npm run test:bless.
  • Confluence labels are merged into a note's tags, and tag changes are pushed
    back as label add and remove calls. Only the labels the plugin itself wrote are
    ever removed, and a tag Confluence cannot store as a label is reported rather
    than dropped.
  • Page comments are pulled into a collapsed block at the end of each note,
    switchable per subscription and per note (confluenceComments: false). The
    block is regenerated on every pull and is never pushed back.
  • Files a note embeds but the page does not have are uploaded on push, after
    every gate has passed: an attachment cannot be un-sent, so nothing is uploaded
    for a page that turns out not to be writable.
  • A push whose body is already byte-identical to the page no longer writes a
    version, so changing only a tag leaves no empty entry in the page's history.
  • Subscriptions: a space or any page subtree of it mirrors into a mount folder,
    with a page-count warning before a large first sync.
  • Read-only sync: the full subtree is enumerated each run and only pages whose
    version moved are fetched, so a re-sync of a thousand pages costs a handful of
    requests. Moves and renames made in Confluence move the local files with them.
  • Folder-note layout: a page with children is stored as Page/Page.md, and the
    subscription's root page collapses into the mount folder itself.
  • The sync panel: per-subscription status, pending local changes, conflicts,
    orphans, untracked candidates, conflict copies and errors, with a status-bar
    item beside it.
  • Attachments are downloaded beside the pages that reference them, skipped over a
    configurable size limit, and re-fetched only when their remote version moves.
  • The write path: push with four gates — certified page, fragments present,
    round-trip verification, and a re-read of the remote version immediately before
    writing — plus a conflict modal offering Keep Local, Keep Remote and Save Both,
    and a backup before every destructive local write.
  • Force push, off by default, behind a setting and a typed confirmation per use.
  • Structure: create, publish, delete, move and rename, each previewed and
    confirmed before anything is sent. Deleting a note locally produces an orphan
    that is reported, never a remote deletion.
  • Tidy folder notes performs §6.5.4's bulk demotion on request: folder notes
    whose page no longer has children move back out of their folders, and one whose
    folder still holds anything else is reported rather than moved.
  • Inline placeholders now render as a pill in Live Preview as well as Reading
    View, so a mirrored page never shows a reader a raw {cf:…} sentinel.
  • A comment added to an otherwise unchanged page now reaches the mirror. One CQL
    query per subscription per sync names the pages whose comments moved, and they
    are pulled again; a note with local edits is left alone.
  • A batch push reports progress, hands the UI thread back between pages, and can
    be stopped with Stop the push in progress.
  • A write whose path would exceed the 240-character budget is refused with a typed
    PATH_TOO_LONG error naming the remedy, rather than failing with the operating
    system's own unreadable error.
  • Draw.io diagrams appear in the note as the picture Confluence shows. The macro
    holds only a name, so the diagram is found as the page attachment that backs its
    preview. Editing one is refused rather than deferred: the drawing itself lives in
    the app, and a push from here would leave every Confluence reader on a stale
    image.
  • Emoticons become their Unicode character instead of an opaque placeholder, over
    the 16 names that have an honest glyph.
  • A table too complex to become Markdown is preserved as HTML, and the images and
    attachment links inside it now render there too, in both editing modes, rather
    than being reduced to placeholders with the rest of the table.
  • The children and toc macros are rebuilt from the vault when the note is
    displayed, so the navigation Confluence generates is present and its links go to
    the mirrored notes. Only the parameterless form is rebuilt; anything naming
    another page stays a placeholder.
  • An include macro becomes an embed of the note it names, so the included page's
    content is visible in place, as it is in Confluence.