Skip to content

v0.4.0 — Full profile capture + side panel UI

Choose a tag to compare

@mrviduus mrviduus released this 27 May 02:39
· 108 commits to main since this release

Highlights

New

  • Full LinkedIn profile scraping into IndexedDB (userProfile store): experience, education, skills, certifications, languages, recent posts, recent comments. Issue #16.
  • Side panel UI — UI migrated from action popup to Chrome Side Panel API. Stays open across LinkedIn tab navigation; full height of the browser window.
  • Welcome onboarding on first install. Explicit consent before any scraping; clean opt-out via Skip.
  • Auto-open flow: first user gesture on a /in/<handle>/ page opens the side panel automatically (no extension-icon click).
  • Capture Hero card at top of side panel: stats grid (exp/edu/skl/pst/cmt), Refresh, Copy JSON to clipboard for data analysts.
  • SSI auto-capture triggered after profile capture so both visuals light up together.
  • System notification with capture summary when the side panel may not be focused.

Parsers (LinkedIn 2026 DOM)

  • Rewritten for current LinkedIn structure: <div componentkey="entity-collection-item-…"> + <p> lists instead of <li> (which LinkedIn 2026 dropped).
  • Authwall detection: capture fails loudly with "session expired" instead of silently saving empty arrays.
  • Aggressive scroll with progressive scrollIntoView to force SDUI hydration of lazy-loaded sections.

Performance & UX

  • Capture time ~50s → ~20s via target-aware scroll bail and <li>-hydration wait dropped (LinkedIn no longer uses <li>).
  • One-shot capture (no auto-refresh on subsequent panel opens; Refresh button only).
  • Tab-hijack guard: if the user manually navigates the LinkedIn tab during capture, the extension does NOT force-restore the URL.
  • Concurrency lock prevents racing captures from welcome + Hero + legacy button.

Privacy

  • captureFullProfile default is now off; only opted in via Welcome → "Open my LinkedIn and capture profile". Skip explicitly clears it.
  • All data stays local. No backend, no upload.

Bug fixes

  • Post-drafts modal hang fix (MV3 service worker eviction): sanitize stuck inFlight on panel open + watchdog timer.
  • parseEducation off-by-one stride.
  • parseTopcardMeta location regex no longer matches UI banners like "Open to work".
  • parseSkillsList rejects role-context strings like "Senior Software Engineer at Pinnacle".
  • IDB userProfile cache works even when the legacy chrome.storage ProfileContext is absent (no OpenAI key).

Install

Unzip and Load unpacked at chrome://extensions. Requires Chrome 116+ for Side Panel API.

What's Changed

  • feat: scrape full LinkedIn profile + activity to IndexedDB (#16) by @mrviduus in #21

Full Changelog: v0.3.1...v0.4.0