Skip to content

Releases: 7drbw7mdgf-lgtm/Pulse

Pulse 1.8.6 — Mendeley on any Mac with one click

Choose a tag to compare

@7drbw7mdgf-lgtm 7drbw7mdgf-lgtm released this 14 Oct 21:15

Pulse 1.8.6 — Mendeley works on any Mac with one click

  • Connect Mendeley with no setup. On any Mac, open Library connections → Connect Mendeley, sign in on Mendeley's page and approve. No developer application, client ID or secret is needed.
  • How it works. Pulse's free sign-in service (a Cloudflare Worker, auth-service/cloudflare) holds the one application secret Mendeley requires and only swaps sign-in codes for tokens. The tokens come back to your Mac, are stored encrypted with your other settings, and Pulse talks to Mendeley directly from then on. The service keeps no database, accounts or tokens. Each sign-in can only be completed by the copy of Pulse that started it (PKCE), and expires after ten minutes.
  • Your own application still works. If you entered your own Mendeley application in Settings → Mendeley & Zotero, Pulse keeps using it on that Mac.
  • Verified live: a fresh profile with no settings signed in through the service, synced a 347-record library over 4 pages, and refreshed its token through the service.

The Windows installer remains 1.8.0. The app is ad hoc signed and not Apple-notarized.

Pulse 1.8.5 — Mendeley sync fixed, Clear map and drag-to-focus

Choose a tag to compare

@7drbw7mdgf-lgtm 7drbw7mdgf-lgtm released this 14 Oct 19:50

Pulse 1.8.5 — Mendeley sync fixed, Clear map and drag-to-focus

Mendeley

  • Sign-in works again. Mendeley's servers rejected every request Pulse made, including the sign-in step, because Pulse used Python's default identification. That produced "Could not finish Mendeley sign-in". Pulse now identifies itself, and if sign-in still fails the message gives Mendeley's reason.
  • Library sync works end to end. Pulse now uses the profile and document formats Mendeley currently requires and follows its page links to the end of the library. On a 347-record library, every record was read; the 329 distinct papers were imported and the 18 duplicate copies inside Mendeley were merged.
  • Repeat syncs are quiet and safe. A sync now applies only what changed in Mendeley since the last sync. Pulse's own metadata corrections (for example a repaired DOI or title capitalisation) are no longer reported as "local edits" every time, and duplicate copies in Mendeley no longer re-link papers or create extra copies. Your edits still win when both sides changed the same field.
  • Connection settings are visible. If you use your own Mendeley application, enter its client ID, secret and redirect URL under Settings → Mendeley & Zotero or Connection settings in the Library connections dialog.

Map

  • Clear map: a new Clear button in the floating map controls unticks every paper on the current map. Papers stay in your Library and on other maps. For 10 seconds the button becomes Undo.
  • Drag to map, then focus: dragging a paper from the Library onto the map adds it to the current map, centres the map on it (as double-clicking a paper does) and opens its details. Dragging now works from the compact, expanded and table Library views.
  • Fixed two map crashes when papers were not on the active map: in the topic-cluster view after a large import, and in the force layout right after unticking a paper.

Not tested live: sending papers to Mendeley (it would write to a real account); its request format is unchanged apart from the new identification. The Windows installer remains 1.8.0. The app is ad hoc signed and not Apple-notarized.

Pulse 1.8.4 — faster first results and resilience to OpenAlex limits

Choose a tag to compare

@7drbw7mdgf-lgtm 7drbw7mdgf-lgtm released this 14 Oct 19:11

Pulse 1.8.4 — faster first results and resilience to OpenAlex limits

Faster searches

  • Results appear while sources are still answering. As soon as the citation searches finish, Pulse shows a preliminary ranking and keeps updating it as slower keyword sources arrive. Papers already on screen stay in the list. The final ranking is still computed once over the full pool, so final results are unchanged.
  • Early settling restored. Pulse stops waiting for slow long-tail sources once the citation-led top 50 is stable.
  • Pre-warm on selection. When a paper stays selected for 1.5 s, Pulse runs the search's own collection step in the background with your current options, then pre-computes the offline ranker's scores for the shortlist. A search started after it finishes is served from cache. It never runs during a search, runs at most 10 times an hour, and is skipped while OpenAlex is rate-limited or reports fewer than 300 requests left for the day.

Measured on the 5 benchmark seeds (Apple Silicon, empty profile, one run each):

First results visible Full search
Cold (nothing cached) 2.1–4.3 s (median 2.5) 7.8–13.5 s (median 9.8)
After pre-warm finished 0.0–2.0 s 2.2–3.8 s (median 2.9)

Must-find papers in the top 20 / 50 / 200 were 14 / 21 / 54 in every run, the same as 1.8.3. Pre-warm itself takes about 8–12 s, and a pre-warm followed by the search uses about 33 OpenAlex requests (a cold search alone uses about 17). The planned 20-seed timing run has not been done yet because of OpenAlex's daily limit.

When OpenAlex is limited

  • Longer cache for stable lookups: single papers, citing papers and reference lists are cached for 7 days; free-text searches stay at 15 minutes. The cache is compressed and stores no credentials.
  • Keyless citation fallbacks: when OpenAlex is paused, citation searches use Europe PMC, then NIH iCite, then OpenCitations, and record which provider found each paper.
  • Visible notice: the discovery view says when OpenAlex is limited and until what time; other sources continue.
  • Optional OpenAlex API key in Settings, stored encrypted like other keys. It is sent as OpenAlex expects (a query parameter) and is removed from cache keys and stored URLs. A contact email, if set, is sent for OpenAlex's polite pool.

The Windows installer remains 1.8.0. The Apple Silicon package keeps its macOS 11+ target, PDF support and persistent offline ranker. The main backend requires Python 3.10+. The app is ad hoc signed and not Apple-notarized.

Pulse 1.8.3 — box selection, drag to map and concept-based bridging

Choose a tag to compare

@7drbw7mdgf-lgtm 7drbw7mdgf-lgtm released this 13 Oct 08:54

Pulse 1.8.3 — box selection, drag to map and concept-based bridging

Map

  • Drag papers from the Library onto the map. Dropping a card adds the paper to the active map tab exactly where you drop it; dragging a paper that is already on the map moves it.
  • Pan or box-select. The floating map controls have a pan / box-select toggle. In box-select mode, drag a rectangle to select papers. In pan mode, Shift-drag also draws a box, and Shift- or ⌘-click adds or removes a single paper.
  • Selected papers become bridge seeds. Selected papers are outlined on the map and highlighted in the Library. A bar at the top of the map shows the count, with Find bridges (2–8 papers) and Clear.
  • Papers you place keep their position, including while a paper is centred, and dragging the map no longer closes the paper details.

Bridging searches

Bridge searches now look for what the selected papers share. Pulse identifies the shared concepts first, using the configured AI, and keeps a concept only when its words appear in at least two of the selected papers; without AI it uses phrases the papers share. Those concepts run as a concept search alongside the citation and bridge searches, are boosted in ranking, and become the ranking focus unless you type your own question. The results header names the bridged papers and shows the shared concepts.

Search bar

The Search papers button is gone; the search bar is wider and runs a concept search when you press Enter.

The Windows installer remains 1.8.0. The Apple Silicon package keeps its macOS 11+ target, PDF support and persistent offline ranker. The main backend requires Python 3.10+. The app is ad hoc signed and not Apple-notarized.

Pulse 1.8.2 — persistent offline ranker

Choose a tag to compare

@7drbw7mdgf-lgtm 7drbw7mdgf-lgtm released this 13 Oct 07:59

Pulse 1.8.2 — persistent offline ranker

  • The offline ranker stays running. The Mac app's cross-encoder is rebuilt with the persistent protocol introduced in 1.8.1, so it loads once (warmed up at launch) instead of starting for every search. In a local test the ranking step for 48 papers took 1.54 s instead of 2.05 s; later searches in the same session save about 0.4 s each.
  • Identical rankings. The rebuilt ranker gives bit-identical scores to the 1.8.1 ranker (checked on 100 papers, and on 48 papers through the packaged app). It is built with a standalone Python 3.11 targeting macOS 11, verified at build time for single-request and persistent modes.
  • Correction to earlier notes. Release notes since 1.7.12 described single-passage cross-encoder scoring. The Mac ranker shipped in 1.7.12–1.8.1 was frozen before that setting existed and always scored up to four passages per paper. 1.8.2 keeps the four-passage behaviour explicitly; switching to one passage is faster but changes rankings, so it awaits validation on labelled benchmarks.

Note on OpenAlex limits

OpenAlex now enforces a daily request allowance for free use. After heavy use, list queries such as citation lookups return HTTP 429 with a long retry time, and Pulse pauses OpenAlex for that period while other sources continue; results can be noticeably thinner until the allowance resets. The live five-seed benchmark was not re-run for this release for that reason; rankings are unchanged by construction.

The Windows installer remains 1.8.0. The Apple Silicon package keeps its macOS 11+ target and PDF support. The main backend requires Python 3.10+. The app is ad hoc signed and not Apple-notarized.

Pulse 1.8.1 — steadier search times, smaller cache, more reliable ranking

Choose a tag to compare

@7drbw7mdgf-lgtm 7drbw7mdgf-lgtm released this 13 Oct 07:39

Pulse 1.8.1 — steadier search times, smaller cache, more reliable ranking

Fixes and changes

  • Cross-encoder stall fixed. Background pre-scoring took the ranking lock and then waited for it again, so it never scored anything and could block the final ranking for up to 12 seconds. This caused occasional very slow searches in 1.7.12–1.8.0.
  • Background work targets the right papers. While sources are still answering, Pulse now embeds and pre-scores exactly the papers the final ranking will assess, refreshed as each citation source finishes. Background work only fills caches; the final ranking is computed once from the full pool and is unchanged (covered by an equivalence test).
  • Persistent ranker protocol. The cross-encoder can run as a long-lived worker (JSON lines with request ids, timeouts on every platform, restart on failure, warm-up at launch). The offline ranker bundled in this DMG is the same one shipped with 1.8.0, which predates the protocol, so it runs in single-shot mode; persistence applies to rankers built with the updated build script.
  • Citations: OpenAlex first. Semantic Scholar is used only when OpenAlex has nothing and is not rate-limited; OpenCitations is a keyless fallback. Seed papers are resolved once, in parallel.
  • Two-phase results. The text-and-citation order appears while AI ranking finishes. If you have started marking papers, your order is kept and Apply refined order is offered instead.
  • Pre-warm on selection starts after a paper stays selected for 1.5 seconds and is cancelled when a search starts.
  • Smaller cache. Cached responses are compressed; five searches now use about 18 MB instead of 107 MB, and the cap is 1 GB.
  • Allow helper fixed. Allow-Pulse-Tauri.command now accepts the version it ships with (it previously required 1.3.1).

Measured (five seed papers, 200 results, Apple Silicon Mac, fresh profile, one run each, run back to back with 1.8.0)

1.8.0 1.8.1
Cold search, median (max) 11.5 s (22.8 s) 11.5 s (12.7 s)
Ranking stage after collection 4.3–14.2 s 2.7–6.2 s
Search after selection pre-warm, median — 8.8 s
Repeat search, median (max) 2.5 s (10.9 s) 2.9 s (6.6 s)
Must-find papers in top 20 / 50 / 200 (of 75) 14 / 21 / 53 13 / 21 / 54
HTTP cache after five searches 107 MB 18 MB

Collection from public services (5–7.5 s) now dominates cold time, so the median did not fall; the 8-second cold target was not met. The must-find set rewards citation links and is partly circular with the citation bonus; quality differences of one paper are within run-to-run noise.

The Windows installer remains 1.8.0; these changes are in the Mac installer and in source. The Apple Silicon package keeps its macOS 11+ target, PDF support and self-contained offline cross-encoder. The main backend requires Python 3.10+. The app is ad hoc signed and not Apple-notarized.

Pulse 1.8.0 — discovery quality, direct-citation influence, persistent HTTP cache and arXiv

Choose a tag to compare

@7drbw7mdgf-lgtm 7drbw7mdgf-lgtm released this 13 Oct 00:19

Pulse 1.8.0 — discovery quality, direct-citation influence, persistent HTTP cache and arXiv

  • Direct-Citation Influence Bonus:
    • Elevates landmark direct-citation neighbours using citation velocity ($P(\text{velocity})$) gated by topic similarity ($\text{gate}(\text{topic})$), increasing top-20 discovery recall by over 3× on benchmark seeds without drifting off-topic.
    • Bonus is factored into preliminary candidate scoring for neural shortlists so high-velocity direct citations reach the cross-encoder for pairwise verification.
    • Explainable scoring: recorded in scoreBreakdown.citationLinkBonus with user-facing insight: "Directly linked to your seed and widely cited".
  • Search Speed and Persistent HTTP Cache:
    • Over 3× faster warm search times (reducing 200-result searches from ~14 s to ~4 s).
    • Persistent SQLite HTTP cache (http-cache.sqlite3, 200 MB LRU, credentials excluded) with 24-hour TTL for works and citation graphs, 15-minute TTL for keyword searches.
    • Automatic Accept-Encoding: gzip compression and streaming decompression across all external provider requests.
    • OpenAlex select= field projection across citation graph, co-citation, paper metrics, metadata resolution, and reference lookup queries to eliminate unnecessary network transfer.
  • Keyless Public Literature Search:
    • Integrated public arXiv search alongside Europe PMC and OpenAlex for instant, keyless discovery out-of-the-box.
    • Default search sources set to zero-configuration public APIs (europePmc: true, arxiv: true, openalex: true).

See citation bonus details and the ranking benchmark. The Apple Silicon package retains its macOS 11+ target and self-contained offline cross-encoder. The main backend requires Python 3.10+. The app is ad hoc signed and not Apple-notarized.

Windows package

The Windows x64 installer is now published alongside the Mac DMG, using the same 1.8.0 frontend and discovery backend. It includes its own Python backend, PDF reader, English OCR data and portable ONNX search ranker with the pinned MiniLM model. Ollama report and embedding models remain separate. The Windows installer is unsigned.

Native Windows CI installed a temporary copy and verified scanned-PDF OCR, offline pairwise ranking, the native window, library persistence, full-text passages, authenticated APIs and backend shutdown. Synthetic checks establish packaging behavior rather than live search quality. Windows packaging source: f3de4cc66f8200e8a83742ed956c937ffdf68218; Mac package source remains f256e461865c772b12e3c4ecea7e2d810de7fa1b.

The release includes a separate Windows SHA-256 file and verification report. See Windows installation details.

Pulse 1.7.12 — faster discovery, map tabs and calibrated citation evidence

Choose a tag to compare

@7drbw7mdgf-lgtm 7drbw7mdgf-lgtm released this 12 Oct 23:03

Pulse 1.7.12 — ribbon map tabs, blank maps, and retrieval performance

  • Ribbon map tabs allow managing multiple independent maps within a workspace, including dedicated blank maps (+ New map). Each map tab maintains its own active paper nodes and links while sharing the unified workspace library.
  • When multiple map tabs are present, library cards (compact cards, expanded cards, and the library table view) display map tab selectors to assign papers to specific maps, all maps, or none. The library bulk action bar includes an "Add to map…" tool to assign multiple selected papers to a chosen map tab in one step.
  • Map layout (force, radial, cluster) and SVG graph rendering strictly display the papers and linkages corresponding to the currently active map tab, with responsive empty-state guidance on blank maps. Map tab state and paper memberships persist cleanly across save, export, restore, and workspace recovery.
  • Retrieval performance optimizations:
    • Parallelized DBEF pivot searches with OpenAlex field projection (select=) to reduce payload overhead and latency.
    • Reusable HTTP connection pooling across repeated OpenAlex and citation discovery requests.
    • Background pre-warming of reference networks and DBEF pivots upon paper selection or addition to the library.
    • Early settling detection in long-tail candidate discovery.
    • Bounded cross-encoder text scoring windows and persistence of cross-encoder embeddings.

Also first packaged in this installer

These changes were previously available from source only:

  • Concept search: type a concept or research question into Find papers without a seed paper. AI-extracted keywords and synonyms broaden retrieval; the original phrase always remains a query, with phrase-only fallback when AI is unavailable.
  • Calibrated DBEF evidence: seed-derived saturation replaces batch-max normalisation; assessed overlap, assessed zero and unavailable graph evidence are recorded separately, and missing graph support is imputed conservatively.
  • Co-citation restored as its own eight-second branch beside direct citations and bibliographic coupling.
  • Research quality: question-specific relevance feedback, column-aware reference extraction with local OCR for scanned PDFs, stricter DOI verification, and preprint/version grouping with correction and retraction notices.
  • Neural shortlists: 96 papers for embeddings and 48 single-excerpt cross-encoder scores, with score caching.

Live timing check

Five seed papers (bacterial outer-membrane vesicles), 200 results, Apple Silicon Mac, packaged backend with external runtimes hidden, one run per seed:

1.7.11 1.7.12
Time per search 21.7–30.6 s 12.5–15.4 s
Collection 12.7–21.3 s 6.1–8.0 s
Must-find papers in top 50 (of 75) 13 15
Must-find papers in top 200 (of 75) 51 43

Must-find papers are each seed’s 10 most-cited citing works and 5 most-cited references (OpenAlex), fixed before testing. Early settling trims some long-tail results. This is a small single-field check with live provider variability, not a general guarantee.

See reliability details and the ranking benchmark. The Apple Silicon package retains its macOS 11+ target and self-contained offline cross-encoder. The main backend requires Python 3.10+. The app is ad hoc signed and not Apple-notarized.

Pulse 1.7.11 — verified citations and progressive discovery

Choose a tag to compare

@7drbw7mdgf-lgtm 7drbw7mdgf-lgtm released this 12 Oct 16:02

Pulse 1.7.11 — citation verification and progressive discovery

  • Author–year citations check the selected paper's retained bibliography before online search. Explicit a/b year suffixes are matched to the actual reference. Long PDF reference tails and provenance survive import, duplicate-paper merging and workspace recovery.
  • A chosen citation fetches and validates its DOI record before import. Titles (including Crossref subtitles), named authors and print/online publication dates must agree. Available registry fields fill the citation; failed checks leave the library unchanged, and missing fields are never invented. Exports recheck DOI records that have not passed identity verification while protecting local corrections.
  • Rate limits and repeated server/connection faults trigger session-local backoff per credential scope. Cached successes and other sources continue. Search details report provider contributions and retry times; local deadlines/cancellation are excluded from outage counts.
  • Large discoveries render in batches of 100, with throttled intermediate ranking. Incoming results and final ranking preserve selected papers, filters, preview position, visible scroll anchors and unchanged rows. Show next appends further batches; bulk actions use the complete available result set.
  • The repository includes a reproducible DBEF on/off ranking benchmark with 24 declared known papers, 23 resolved records and three frozen candidate pools. Results are mixed: known-paper hits in the top 20 improve, top-10 nDCG falls slightly, and top-50 recall/landmark coverage are unchanged. Timings, per-paper misses and coverage limits are recorded. No general quality or full-search latency claim is made.

See reliability details and the ranking benchmark. The Apple Silicon package retains its macOS 11+ target and self-contained offline cross-encoder. The main backend requires Python 3.10+. The app is ad hoc signed and not Apple-notarized. The published Windows installer linked from the README remains 1.7.6; current source continues to build in CI.

Pulse 1.7.10 — DBEF discovery and citation lookup

Choose a tag to compare

@7drbw7mdgf-lgtm 7drbw7mdgf-lgtm released this 12 Oct 12:53

Pulse 1.7.10 — DBEF discovery and in-text citation lookup

The supplied content-aware DBEF scorer is built into Pulse. It replaces the legacy co-citation network pass and the bibliographic search that used only the first four seed references. The DBEF search control finds shared-reference neighbours using pivots weighted by specificity and title/abstract relevance, then ranks them with bibliography-length saturation, content similarity and recent citation velocity.

  • Direct citations, semantic recommendations, searches across selected literature indexes and optional full-text retrieval remain complementary. Equivalent provider query strings execute once, and concurrent identical cached metadata GETs share their network request.
  • DBEF uses sparse standard-library TF-IDF rather than adding NumPy/scikit-learn or another model download to the app. The supplied scoring equations, tokenizer and content floors are retained. Missing reference counts are neutralized with the observed median for internal weighting; reported unknown citation counts remain unknown.
  • Collection is capped at 12 seconds, respects shorter parent budgets and preserves collected results. Metadata lookups are batched, and weighted pivots are balanced across seeds. DBEF contributes one retrieval channel, avoiding duplicate votes from multiple reference pivots, and its candidates receive no second generic citation-velocity bonus.
  • Results explain their shared references, supply weighted evidence for multi-seed bridges and retain DBEF provenance when added to the library. The old citationNetwork API/workspace key remains compatible. Citation-depth controls apply only when direct citation discovery is enabled.

Paste an author–year citation into Add paper to search Crossref and OpenAlex for possible papers and their indexed DOIs. The picker checks first-author surname and publication year, supports accented/compound surnames, named coauthors, grouped citations and year suffixes, and requires selecting a title before adding it. Optional title words narrow the online search. Ambiguous or failed lookups preserve the library without importing placeholders.

The previous 200-result default is removed. New and migrated 200-result workspaces default to 500, with choices up to 1,000 and 2,000. Europe PMC uses cursor pagination with at most 1,000 records per request; Semantic Scholar's single-response recommendations and citation calls retain their supported 500-record cap. Search text pagination and combined results can exceed 500. Collection deadlines and neural shortlists remain unchanged, so requesting 2,000 does not guarantee a provider finds that many within its budget.

See the implementation guide for the equations, assumptions and limits. Six synthetic comparisons with the supplied NumPy scorer returned identical top-20 lists, with a maximum score difference of about 3.6e-15. A live check on a public open-access research paper collected 131 candidates and returned 20 DBEF-ranked results in one sample of about 8.2 seconds. These checks validate integration and scoring math, not general retrieval quality or latency.

The Apple Silicon package retains its macOS 11+ target and self-contained offline cross-encoder. The main backend still needs Python 3.10+; Ollama and optional local embedding/report models remain separate. No personal library, credentials or new runtime dependencies are packaged. The app is ad hoc signed and is not Apple-notarized. The linked published Windows installer remains 1.7.6; current Windows source continues to build in CI.

Download the DMG and verify its checksum using the attached SHA256 file. The verification report records the source commit, CI result and packaged runtime checks.