Releases: gabrielrubens/pensio-obsidian-sync
Release list
0.5.0: See where your vault is in the analysis queue
0.5.0 — See where your vault is in the analysis queue
Nothing to re-pair, and no change to how syncing works. This release answers a question the plugin used to leave hanging: you sync a few hundred notes, every one succeeds, and then nothing seems to happen for a long time.
Here is why. Syncing is instant and unlimited. The emotion and theme analysis that powers Pensio's insights is what runs on a daily allowance — 10 notes a day on the free plan, unlimited on Pro. So a 600-note vault finishes syncing in minutes but keeps analyzing for a few weeks. That was always how it worked; the plugin simply never said so, which made a healthy import look stuck.
Now it tells you:
- A short note when the day's allowance runs out — how many were analyzed, how many are still waiting, and roughly how long the rest will take. Click it to see the plan options.
- A status line in the plugin settings, with an upgrade button when the allowance is spent.
- "Check sync status" now shows the analysis queue alongside your entry counts.
Deliberately quiet: the note appears at most once a day, not on every sync.
Your notes are never held back. Everything you sync is saved in Pensio and readable right away — it is only the emotional analysis that queues up.
If you point the plugin at your own Pensio server, this stays hidden until that server reports queue information.
0.4.4: Type-safety pass for Community Plugins review
0.4.4 — Type-safety pass for the Community Plugins review
No behavior changes, nothing to re-pair. Clears the remaining type-safety warnings from the review tooling.
- Modernized the TypeScript config (target/lib → ES2018) to match what the plugin actually builds to, so modern APIs (
Object.entries,crypto, typed arrays) are fully typed. - Made a few hashing / device-id / state-restore expressions explicitly typed so no checker can infer
any.
Under the hood only — your setup, tokens, and sync history are untouched.
0.4.3: Code-quality pass for Community Plugins review
0.4.3 — Code-quality pass for the Community Plugins review
No behavior changes and nothing to re-pair. This release addresses the automated review feedback from the Obsidian Community Plugins submission.
- Type-safe error handling throughout — every network/error path is now strictly typed (no
any), with a small shared error helper - Popout-window compatibility — all timers use
window.setTimeout/setIntervalas Obsidian recommends - Promise safety — background tasks are explicitly handled (no floating/misused promises)
- Tooling — migrated to ESLint flat config with the official
eslint-plugin-obsidianmdruleset (now enforced in CI), replaced thebuiltin-modulesdependency with Node's built-in list - README — clarified the wiki-link example formatting
Under the hood only — your setup, tokens, and sync history are untouched.
0.4.2: Renamed to Pensio Journaling Sync
0.4.2 — Renamed to "Pensio Journaling Sync"
The plugin is now Pensio Journaling Sync (was "Pensio Sync"). Metadata-only release — no behavior changes, and nothing to re-pair. The rename makes the plugin easier to find in the Obsidian Community Plugins search and reads more clearly in the directory.
- Display name → Pensio Journaling Sync
- Sharper description: sync your journal to Pensio for AI-powered journaling insights — emotion and mood tracking, relationship mapping, and weekly reflections
- The in-app settings entry now reads "Pensio Journaling Sync"; the setup instructions on the Pensio web app were updated to match
Installing via BRAT? This updates in place — the plugin id is unchanged, so your connection and settings are preserved.
0.4.1: Community Plugins submission prep + beta labeling
0.4.1 — Community Plugins submission prep + beta labeling
Metadata-only release, no behavior changes.
- Plugin description and author link updated for the Obsidian Community Plugins directory submission
- Beta badge in the settings header and a beta note in the README — Pensio Sync is in open beta while the directory listing is under review; BRAT is the recommended install until then
- More precise token-storage wording: Obsidian SecretStorage is backed by the OS keychain on desktop and app-local storage on mobile — tokens never live inside your vault files either way
0.4.0: Reliable authentication + setup-code pairing
0.4.0 — Reliable authentication + setup-code pairing
The connection to Pensio now survives long gaps, force-quits, and server deploys — and pairing takes one short code instead of two pasted tokens.
Connect with a setup code
- In Pensio, open Settings → API tokens → Connect Obsidian to generate a one-time 8-character code, then enter it in the plugin settings and click Connect.
- Every pairing gets its own per-device credentials, so connecting a second device can never break the first.
- Manual access/refresh token entry moved under Advanced (for self-hosted servers).
Authentication that doesn't die
- No more "Session expired" after leaving Obsidian closed for a few days — token renewal is now forgiving by design (the server keeps the previous refresh token valid until it naturally expires).
- Temporary problems (offline, server errors, deploys) retry with backoff and never log you out; the plugin never deletes tokens on failure — wiping is for explicit logout only.
- If a session is genuinely revoked, the status bar shows Reconnect Pensio and settings ask for a new setup code. Your notes and sync history are untouched.
- Token writes to Obsidian's encrypted SecretStorage are verified by read-back, with a final flush on plugin unload.
- Each install now generates a stable device ID (fixes refresh failures on fresh installs).
Polish
- Status bar uses proper icons instead of emoji.
- Removed the "Pensio plugin loaded" startup notice.
- 22 new authentication tests (suite: 120 tests).
Full docs: see TOKEN_REFRESH.md in the repo for the complete auth architecture.
0.3.0
0.3.0: Security hardening & token reliability - Parse JWT exp claim for token expiry (instead of hardcoded 24h) - Reduce refresh buffer from 1 hour to 2 minutes - HTML sanitization (nh3) to prevent stored XSS - Settings GUI redesign with Pensio branding - Mirror delete safety with source filtering - Simplified entry types (default to daily_journal) - Fix npm flatted DoS vulnerability
0.2.0: Plugin release readiness
0.2.0: Plugin release readiness
0.1.7: Account Guard + Token Rotation Fix
What's New
Account Guard System
- Pre-sync identity verification — the plugin now calls
/api/v1/auth/me/before every sync to confirm you're connected to the right account - Account switch detection — if you change credentials, the plugin detects the account mismatch and blocks sync until you confirm
- Sync state reset on credential change — changing tokens automatically clears sync state so entries aren't incorrectly marked as "already synced"
- Connected account display — settings page shows which account you're connected to
Token Rotation Fix
- Refresh token rotation now works correctly — previously, rotated refresh tokens weren't captured, causing tokens to expire after extended inactivity
- Plugin now sends
device_idin refresh requests and captures rotated refresh tokens from the response
Backend (requires server update)
- New
/api/v1/auth/me/endpoint - Fixed
TokenRefreshSerializerto implement proper token rotation (blacklist old, return new)
0.1.6: Security — Dependency Update
Security
- Upgraded
minimatchto 10.2.4 to fix two high-severity ReDoS vulnerabilities (GHSA-7r86-cg39-jmmj, GHSA-23c5-xmqv-rm74)
No user-facing changes.