Skip to content

Releases: fatihaydin9/folium-releases

Release list

Folium v0.2.0

Choose a tag to compare

@fatihaydin9 fatihaydin9 released this 04 Sep 22:21
42c1551

Added

  • BoJo Planner: a bullet-journal weekly spread as a black pinned tab —
    dated minimos land on their day and can be placed as time blocks on a
    05:00–24:00 ruled grid (15-minute snap, 30-minute ruled lines, 5-hour
    ceiling), with scrum effort points (1/2/3/5/8/13/21), an importance color
    (Oxford-style black/red/yellow edge band), and a per-block BoJo bullet
    list. Undated minimos wait in a right-hand INBOX rail (yellow cards,
    paged by tens with the ∧/∨ arrows) and are assigned to a day from the
    placement dialog — never dropped straight onto the grid. Blocks drag
    vertically and stretch from their bottom edge, snapped to the grid.
    Reverting a block sends inbox scraps back to the INBOX and pre-planned
    (dated-at-capture) scraps back to their day's unplaced queue. Deleting a
    minimo lives on the INBOX cards and the wall's post-its only, and always
    asks first. Time blocks persist one file per week in
    workspace/planner/<monday>.json (created for the current week before
    any plan exists; legacy workspace/planner.json is split into week files
    and moved to the vault trash on first launch), so weeks archive
    themselves and sync with the vault. On phones the planner is
    capture-and-peek: minimos can be added and deleted, and today's
    timesheet shows read-only.

  • Paid license ($29.90 once, no subscription) with a 14-day full-feature
    free trial
    : when the trial lapses without a license key, the vault
    becomes read-only through the app — creating, editing, moving, and
    deleting content are gated, while reading, searching, backup/export, and
    sync keep working (notes never lock). Licenses are Lemon Squeezy keys
    (per-key limit of 5 devices, 30-day offline grace after each validation);
    deactivating in Settings frees the server-side activation slot. Manage the
    key in Settings → License.

  • Marketing site: a dependency-free static landing page in landing/
    (hero artwork, interactive drawer demo, comparison table, pricing, FAQ,
    privacy/terms/licenses pages), deployed to GitHub Pages via
    .github/workflows/landing.yml.

  • Android share target: sharing text to Folium from any app stashes it
    and turns it into a Quicknote on next launch/resume.

  • Phone launch lands on Quicknotes: a phone is a capture device, so a
    cold start opens the fastest capture path. Resizing into the phone layout
    (e.g. iPad split-view) re-homes scenes the phone UI cannot reach.

  • Handwriting (ink) layer for Folios: pen/marker/eraser strokes with
    pressure sensitivity live in a sibling top-level ink key of the folio
    document (src/lib/folio-ink.ts), captured by a web engine (Pointer
    Events, coalesced samples, perfect-freehand outlines) on desktop and by
    native engines on mobile — PencilKit on iPad, Jetpack Ink on Android,
    with a reflection-gated BOOX/Onyx adapter — via the new
    tauri-plugin-folium-ink plugin (src-tauri/plugins/folium-ink/).

  • Content character limits: Minimo capture hard-caps at 70 chars;
    Octavo front/back at 190 each (labels renamed Question/Answer →
    Front/Back); Quarto content hard-stops at 900 with a fill-ring gauge on
    the counter — quiet below 700, yellow from 700, red at the cap.

Changed

  • Relicensed as proprietary commercial software: Folium is a paid
    product, not open source — LICENSE now grants use rights only through a
    purchased license key (or the trial), replacing the earlier MIT text.
    Bundled third-party components keep their own licenses
    (THIRD_PARTY_LICENSES.md).

  • Dialog chrome, unified: every dialog and popup sheet closes through
    the shared red round ×, and every action button in a dialog leads with an
    icon. The planner's minimo capture uses crisp fixed inputs (solid
    borders, native date picker — nothing resizes on focus), and minimo
    deletion (planner INBOX, Board wall) is a trash-icon button that always
    asks first.

  • Android sync token storage: the GitHub OAuth token moved out of the
    vault (.zettelkasten/sync-token) into the app-private config directory.
    Existing tokens migrate automatically on first use.

  • Excalidraw defaults and theme: new elements start small (S text,
    thin stroke) so the locked folio page keeps its drawing room, and the
    editor chrome wears the Folium palette and hand-drawn borders instead
    of the stock purple.

Removed

  • Excalidraw "Browse libraries" button: it fetches a CDN, which the
    app's CSP blocks and the local-first promise forbids — the button only
    ever opened an empty dialog. Personal (local) libraries keep working.

Added

  • Local logging: all backend activity and frontend IPC failures are
    written to a rotating local log file (folium.log). Settings → Logs
    shows the path and can reveal the file in the file manager.
  • Backup / restore: export the whole vault to a timestamped zip archive
    and restore it into a fresh folder (Settings → Backup). Internal state
    (.zettelkasten/, .git/) is excluded; restores are protected against
    non-empty targets and path-traversal entries.
  • Privacy Policy, Terms of Use, and third-party license overview ship
    with the repository.
  • Test coverage gates: ≥90% line coverage on both halves — vitest +
    coverage-v8 for src/lib/**, cargo-llvm-cov for the Rust crate; both are
    enforced in CI (.github/workflows/ci.yml).
  • Release pipeline: v* tags build installers for macOS (arm64),
    Windows (x64), and Linux (x64) via .github/workflows/release.yml.
  • In-app updates: tauri-plugin-updater checks for new releases in the
    background on desktop startup and installs them for the next launch
    (signed with a project minisign keypair; endpoint is the GitHub releases
    latest.json).
  • Vault format stamp: .zettelkasten/format_version records the on-disk
    format version; a vault written by a newer app version is refused instead
    of being silently misread.
  • Mobile readiness: the iOS scaffold now ships as Folium /
    com.folium.app with an app-store export configuration and a privacy
    manifest (PrivacyInfo.xcprivacy); Android release builds support keystore
    signing via keystore.properties and a CI-overridable versionCode
    (TAURI_ANDROID_VERSION_CODE). CI compiles the Rust crate for
    aarch64-apple-ios and aarch64-linux-android on every push.
  • MIT license (LICENSE).
  • Phone navigation guard: resizing to phone width (or iPad split-view)
    re-homes the user to an allowed scene instead of stranding them.

Changed

  • GitHub OAuth device flow is now the only sync authentication method.
    Personal access tokens (PAT) are no longer supported; connect via
    Settings → Sync → "Connect with GitHub". On Android the token is stored
    in .zettelkasten/sync-token.
  • Sync remote URLs are validated: only GitHub HTTPS URLs
    (https://github.com/<owner>/<repo>) are accepted.
  • Mermaid support removed. Excalidraw is the single drawing solution.
    Existing ```mermaid blocks render as plain code blocks — no
    content is lost.
  • The updater is desktop-only; mobile updates ship through the app
    stores. The Privacy Policy documents the desktop update-check request.
  • Card export buttons (PNG/PDF) are desktop-only; they no longer appear
    on tablets and phones where the platform cannot complete them.
  • Release notes are generated from this file: the release workflow
    injects the matching version section into the GitHub release body, and
    builds embed the real GitHub OAuth client ID from the
    FOLIUM_GITHUB_CLIENT_ID repo variable.
  • Safe-area aware layouts: notched devices get proper insets.
  • Dead code removed: the unused reference side-panel state and the
    ReferencePanel component were dropped; the Sources scene (one-hop
    reference graph) is the single reference view.

Fixed

  • Backend panics and unhandled frontend errors/rejections now land in the
    local log file (and the frontend shows an error toast) instead of
    vanishing into stderr.
  • Error toasts show plain-language copy (userMessage in
    src/lib/errors.ts); raw OS/database error text no longer reaches the UI.

Removed

  • PAT authentication mode (breaking change for sync setups created with
    0.1.0 — reconnect via GitHub OAuth).
  • The mermaid npm dependency.