Skip to content

Releases: kimpearce888/local-notes-web-archive

v1.0.12

Choose a tag to compare

@kimpearce888 kimpearce888 released this 15 Oct 10:33

Local Notes & Web Archive v1.0.12

Local-first, offline-first Chrome (Manifest V3) extension: rich-text notes,
web page archiving (MHTML + full-page PNG + extracted text), reminders and
optional local LM Studio AI. No cloud services, no accounts, no telemetry,
no remote code.

Install (no build steps)

  1. Download local-notes-web-archive-1.0.12.zip below.
  2. Extract the ZIP anywhere.
  3. Open chrome://extensions, enable Developer mode.
  4. Click Load unpacked and select the extracted folder.
  5. Use the extension — the toolbar action opens the notes dashboard.

Chrome 120+ required. Everything stays on your device.

Verification

  • Full gate matrix and measured numbers: docs/RELEASE_VERIFICATION.md
  • File inventory: RELEASE_MANIFEST.txt below (byte-for-byte with the zip contents)
  • Integrity: local-notes-web-archive-1.0.12.zip.sha256 below
  • Automated acceptance: unit 970/970, Playwright E2E 86/86 over the real
    unpacked build, including a dedicated extract-zip-and-load acceptance suite
    (the artifact in this release is the exact folder layout that was tested)

What's new in v1.0.12 — card colors + a cleaner card layout

A maintainer request: it should be easy to spot a special note on the
dashboard, and every fact on a card should read as its own block.
v1.0.12 delivers exactly that — every note can now carry its own card
background and text color, chosen from a curated palette (or any custom
color), and the card layout separates every metadata fact. No existing
behavior changes; notes without a chosen color look exactly as before.

  • Every card can have its own colors: open a note in the editor and
    use the new Card color button — pick a background from the curated
    palette or any custom color. Default keeps the standard look; the
    curated palette was chosen so text always reads at AA-level contrast
  • Text adapts automatically: when you set a background but no text
    color, the text (and the subtitle, dates, tags, categories and
    reminder chips) re-derive from the background so everything stays
    clearly visible — an overdue reminder even inverts for maximum
    visibility. Set an explicit text color and it is honored exactly
  • Created date, modified date, tags, categories and reminders each
    on their own block
    : nothing is inline anymore — the old single
    "Created X · Modified Y" line is now two separate rows, and the
    reminder chip moved to its own row below the link indicators
  • Colors survive everything: they are durable note data — they
    persist across reloads, ride along when a note is duplicated, and
    round-trip through backup/restore

What's new in v1.0.11 — one scrollbar in the Settings pop-up

A user reported it right after v1.0.10 with a screenshot: the Settings
pop-up still rendered two nested vertical scrollbars — the dialog's
own scrollbar next to the settings list's, where the outer one ate
layout space, pushed the content box off-center and, when dragged,
scrolled the pinned heading and the Save/Reset/Close actions out of
view to reveal phantom empty space. v1.0.11 fixes exactly that — a
Chromium UA rule gives every modal dialog its own scrollability, and
the settings panel's layout extent leaked into the dialog's scroll
region — with pixel-level regression tests behind each behavior. No
features were added or removed.

  • Exactly one scrollbar per dialog: the Settings, Diagnostics and
    restore-review dialogs are now fixed sheets — the heading and the
    action row stay pinned in place and only the settings list itself
    scrolls, with its own single scrollbar
  • More settings visible at once: dropping the old height caps, the
    visible settings area grew (451 -> 562px at the reporting user's
    window size) — the list now uses the space the double scrollbar and
    the phantom region used to waste
  • Bug fixes while fixing the bug: a closed dialog now provably
    hides (the new sheet layout could defeat the browser's closed-state
    rule) and the Diagnostics dialog got the same single-scrollbar
    guarantee before any user could hit it there

What's new in v1.0.10 — every option reads as one left-aligned column

A user reported it right after v1.0.9 with two screenshots: in the
Settings pop-up, actions like Test connection and Show the
introduction again
stretched across the whole dialog with centered
labels, and in the sidebar the action buttons (Import note…,
Settings, Diagnostics) sat centered while the smart lists above
them read left-aligned. v1.0.10 fixes exactly that — a CSS cascade bug
(the generic button rule's justify-content: center silently overrode
the sidebar's left-align intent) — with pixel-level regression tests
behind each behavior. No features were added or removed.

  • Sidebar actions align left like everything else: New Note, Save a
    web page…, Import note…, Settings and Diagnostics now sit flush-left
    in one column with the smart lists — at every width, including the
    collapsed icon rail and the narrow top strip
  • Settings and Diagnostics pop-ups align left: full-width centered
    buttons are gone — Test connection, Show the introduction again and
    Rebuild search index shrink to their content and align left like
    every sibling control
  • Rail mode no longer clips "Save a web page…": when the sidebar
    collapses to its icon rail, that button's label stayed visible and
    clipped inside the 59px rail button — it now hides its label exactly
    like every other rail button

What's new in v1.0.9 — New Note finally takes you to the new note

A user reported it right after v1.0.8: activating New Note while you
are already editing something (or while doing anything else in the app)
created the note silently in the background — the app stayed wherever it
was, nothing navigated, and because nothing happened on screen you could
keep clicking and stack an unlimited pile of empty "Untitled" notes
without ever seeing them being born. v1.0.9 fixes exactly that, with a
regression test behind each behavior. No features were added or removed.

  • Creating a note now lands you in it: every New Note entry point
    (sidebar button, empty-library button, onboarding primary action,
    command palette, Alt+Shift+C) navigates straight into the fresh note so
    you can start typing immediately — the note you were editing before is
    safely flushed by autosave on the way in, nothing is lost
  • Rapid clicking can no longer stack background notes: while a
    creation is in flight, further activations of New Note are ignored —
    one click means one note, spamming the button (or the keyboard
    shortcut) produces a single fresh note, not a pile of them
  • Honest save indicator when switching notes: the header's save-state
    used to keep showing the previous note's "Saved" after you opened
    another note; it now resets honestly while the newly opened note loads

What's new in v1.0.8 — the human-QA program (9 defects fixed)

A full human-behavior QA program (206 individual actions, 22 complete
workflows, 15 interaction combinations, edge/visual sweeps — every one
driven through the real UI with screenshots, session videos and logs on
file in the repo under artifacts/human-qa/)
found nine defects. All nine are fixed in this release, each with a
regression test and real-UI re-verification. No features were added or
removed — v1.0.8 is purely the repaired v1.0.7.

  • Find & Replace no longer destroys rich notes (critical): Replace all
    rebuilt the entire note as plain paragraphs — every heading, list, table
    and code block was silently flattened and images were deleted outright,
    then autosaved. Replacements now edit text in place inside the document
    structure; a single Ctrl+Z still restores everything (one transaction)
  • Exclusion-only searches returned nothing: -sourdough (documented
    "everything except" syntax) silently emptied the list instead of showing
    the notes that do not match; and invalid syntax like is:zebra now
    surfaces an inline explanation instead of a bare "no matching notes"
  • Saved settings now apply without a reload: toolbar-group
    preferences set in Settings previously needed a page reload before new
    editor sessions picked them up
  • Image dialog honors text typed after picking the file: alt text and
    captions filled in after choosing an image were silently dropped; the
    dialog now stages the file with a real Insert button
  • Save-a-web-page and context-menu captures actually run: saves from
    the dialog left links parked as "detected" forever while reporting
    success; they now queue and complete the capture
  • The permission flow is reachable: captures on un-granted sites now
    show a Grant access button in the snapshots panel that requests the
    permission and resumes the capture
  • Failed captures are retryable: the card tooltip always said "open
    the note to retry from its snapshots panel" — the panel had no retry
    button. It has one now, and it works
  • Compare snapshots is finally reachable: re-capturing a captured link
    (for a second revision to compare) had no UI entry point, making the
    Compare dialog permanently unreachable; captured links now offer
    "Capture fresh copy" and the chain builds revisions you can diff

What's new in v1.0.7 — the lost-user register (17 UX findings fixed)

A maintainer-reported UX audit ("a lot of areas where a person does not any
clue what they are supposed to do or use that feature") produced a complete
lost-user register: every disclosure surface, every file-picker flow, every
piece of developer jargon in user-facing copy, every discoverability gap —
17 findings (8 severe), each verified live against the shipped build. This
release fixes all 16 actionable findings (the 17th, diagnostics vocabulary,
was accepted as-is: that page's audience opts in).

  • **Every popped-out b...
Read more

v1.0.11

Choose a tag to compare

@kimpearce888 kimpearce888 released this 15 Oct 09:23

Local Notes & Web Archive v1.0.11

Local-first, offline-first Chrome (Manifest V3) extension: rich-text notes,
web page archiving (MHTML + full-page PNG + extracted text), reminders and
optional local LM Studio AI. No cloud services, no accounts, no telemetry,
no remote code.

Install (no build steps)

  1. Download local-notes-web-archive-1.0.11.zip below.
  2. Extract the ZIP anywhere.
  3. Open chrome://extensions, enable Developer mode.
  4. Click Load unpacked and select the extracted folder.
  5. Use the extension — the toolbar action opens the notes dashboard.

Chrome 120+ required. Everything stays on your device.

Verification

  • Full gate matrix and measured numbers: docs/RELEASE_VERIFICATION.md
  • File inventory: RELEASE_MANIFEST.txt below (byte-for-byte with the zip contents)
  • Integrity: local-notes-web-archive-1.0.11.zip.sha256 below
  • Automated acceptance: unit 932/932, Playwright E2E 84/84 over the real
    unpacked build, including a dedicated extract-zip-and-load acceptance suite
    (the artifact in this release is the exact folder layout that was tested)

What's new in v1.0.11 — one scrollbar in the Settings pop-up

A user reported it right after v1.0.10 with a screenshot: the Settings
pop-up still rendered two nested vertical scrollbars — the dialog's
own scrollbar next to the settings list's, where the outer one ate
layout space, pushed the content box off-center and, when dragged,
scrolled the pinned heading and the Save/Reset/Close actions out of
view to reveal phantom empty space. v1.0.11 fixes exactly that — a
Chromium UA rule gives every modal dialog its own scrollability, and
the settings panel's layout extent leaked into the dialog's scroll
region — with pixel-level regression tests behind each behavior. No
features were added or removed.

  • Exactly one scrollbar per dialog: the Settings, Diagnostics and
    restore-review dialogs are now fixed sheets — the heading and the
    action row stay pinned in place and only the settings list itself
    scrolls, with its own single scrollbar
  • More settings visible at once: dropping the old height caps, the
    visible settings area grew (451 -> 562px at the reporting user's
    window size) — the list now uses the space the double scrollbar and
    the phantom region used to waste
  • Bug fixes while fixing the bug: a closed dialog now provably
    hides (the new sheet layout could defeat the browser's closed-state
    rule) and the Diagnostics dialog got the same single-scrollbar
    guarantee before any user could hit it there

What's new in v1.0.10 — every option reads as one left-aligned column

A user reported it right after v1.0.9 with two screenshots: in the
Settings pop-up, actions like Test connection and Show the
introduction again
stretched across the whole dialog with centered
labels, and in the sidebar the action buttons (Import note…,
Settings, Diagnostics) sat centered while the smart lists above
them read left-aligned. v1.0.10 fixes exactly that — a CSS cascade bug
(the generic button rule's justify-content: center silently overrode
the sidebar's left-align intent) — with pixel-level regression tests
behind each behavior. No features were added or removed.

  • Sidebar actions align left like everything else: New Note, Save a
    web page…, Import note…, Settings and Diagnostics now sit flush-left
    in one column with the smart lists — at every width, including the
    collapsed icon rail and the narrow top strip
  • Settings and Diagnostics pop-ups align left: full-width centered
    buttons are gone — Test connection, Show the introduction again and
    Rebuild search index shrink to their content and align left like
    every sibling control
  • Rail mode no longer clips "Save a web page…": when the sidebar
    collapses to its icon rail, that button's label stayed visible and
    clipped inside the 59px rail button — it now hides its label exactly
    like every other rail button

What's new in v1.0.9 — New Note finally takes you to the new note

A user reported it right after v1.0.8: activating New Note while you
are already editing something (or while doing anything else in the app)
created the note silently in the background — the app stayed wherever it
was, nothing navigated, and because nothing happened on screen you could
keep clicking and stack an unlimited pile of empty "Untitled" notes
without ever seeing them being born. v1.0.9 fixes exactly that, with a
regression test behind each behavior. No features were added or removed.

  • Creating a note now lands you in it: every New Note entry point
    (sidebar button, empty-library button, onboarding primary action,
    command palette, Alt+Shift+C) navigates straight into the fresh note so
    you can start typing immediately — the note you were editing before is
    safely flushed by autosave on the way in, nothing is lost
  • Rapid clicking can no longer stack background notes: while a
    creation is in flight, further activations of New Note are ignored —
    one click means one note, spamming the button (or the keyboard
    shortcut) produces a single fresh note, not a pile of them
  • Honest save indicator when switching notes: the header's save-state
    used to keep showing the previous note's "Saved" after you opened
    another note; it now resets honestly while the newly opened note loads

What's new in v1.0.8 — the human-QA program (9 defects fixed)

A full human-behavior QA program (206 individual actions, 22 complete
workflows, 15 interaction combinations, edge/visual sweeps — every one
driven through the real UI with screenshots, session videos and logs on
file in the repo under artifacts/human-qa/)
found nine defects. All nine are fixed in this release, each with a
regression test and real-UI re-verification. No features were added or
removed — v1.0.8 is purely the repaired v1.0.7.

  • Find & Replace no longer destroys rich notes (critical): Replace all
    rebuilt the entire note as plain paragraphs — every heading, list, table
    and code block was silently flattened and images were deleted outright,
    then autosaved. Replacements now edit text in place inside the document
    structure; a single Ctrl+Z still restores everything (one transaction)
  • Exclusion-only searches returned nothing: -sourdough (documented
    "everything except" syntax) silently emptied the list instead of showing
    the notes that do not match; and invalid syntax like is:zebra now
    surfaces an inline explanation instead of a bare "no matching notes"
  • Saved settings now apply without a reload: toolbar-group
    preferences set in Settings previously needed a page reload before new
    editor sessions picked them up
  • Image dialog honors text typed after picking the file: alt text and
    captions filled in after choosing an image were silently dropped; the
    dialog now stages the file with a real Insert button
  • Save-a-web-page and context-menu captures actually run: saves from
    the dialog left links parked as "detected" forever while reporting
    success; they now queue and complete the capture
  • The permission flow is reachable: captures on un-granted sites now
    show a Grant access button in the snapshots panel that requests the
    permission and resumes the capture
  • Failed captures are retryable: the card tooltip always said "open
    the note to retry from its snapshots panel" — the panel had no retry
    button. It has one now, and it works
  • Compare snapshots is finally reachable: re-capturing a captured link
    (for a second revision to compare) had no UI entry point, making the
    Compare dialog permanently unreachable; captured links now offer
    "Capture fresh copy" and the chain builds revisions you can diff

What's new in v1.0.7 — the lost-user register (17 UX findings fixed)

A maintainer-reported UX audit ("a lot of areas where a person does not any
clue what they are supposed to do or use that feature") produced a complete
lost-user register: every disclosure surface, every file-picker flow, every
piece of developer jargon in user-facing copy, every discoverability gap —
17 findings (8 severe), each verified live against the shipped build. This
release fixes all 16 actionable findings (the 17th, diagnostics vocabulary,
was accepted as-is: that page's audience opts in).

  • Every popped-out bar now carries its own Close control: the
    attachments, snapshots, reminders and AI bars previously opened with no
    close button, no Escape, no click-outside — the only dismissal was knowing
    to re-click the small toolbar toggle. Every bar has an in-surface Close,
    Escape unwinds them (while no modal dialog is open), the Filters bar
    additionally closes on Apply, and Revisions now honors Escape too
  • iPhone photos (HEIC) insert from your PC: the image picker admitted
    no HEIC/HEIF, so the most common photo format was greyed out in the OS
    picker. Inserting now decodes HEIC locally to displayable JPEG through a
    pinned libheif decoder compiled without dynamic evaluation (the strict
    extension CSP is untouched; nothing uploads; decode runs in a dedicated
    worker). Undecodable files stay as attachments with a truthful message.
    The dialog also stopped asking for data:image "blobs" — it now teaches
    drag-and-drop and Ctrl+V paste instead
  • Tags and categories are editable in the note itself: previously the
    ONLY path was list → checkboxes → bulk bar. The editor now has a metadata
    bar under the subtitle: removable chips, an add field with suggestions,
    applied immediately like attachments
  • Saving a web page has a visible entry point: capture was reachable
    only by pasting a URL into a note (feedback: a transient toast). A
    "Save a web page…" action now sits in the sidebar next to New Note (and
    in the command palette) — paste a link, a note is created and the
    capture queued through th...
Read more

v1.0.10

Choose a tag to compare

@kimpearce888 kimpearce888 released this 15 Oct 07:44

Local Notes & Web Archive v1.0.10

Local-first, offline-first Chrome (Manifest V3) extension: rich-text notes,
web page archiving (MHTML + full-page PNG + extracted text), reminders and
optional local LM Studio AI. No cloud services, no accounts, no telemetry,
no remote code.

Install (no build steps)

  1. Download local-notes-web-archive-1.0.10.zip below.
  2. Extract the ZIP anywhere.
  3. Open chrome://extensions, enable Developer mode.
  4. Click Load unpacked and select the extracted folder.
  5. Use the extension — the toolbar action opens the notes dashboard.

Chrome 120+ required. Everything stays on your device.

Verification

  • Full gate matrix and measured numbers: docs/RELEASE_VERIFICATION.md
  • File inventory: RELEASE_MANIFEST.txt below (byte-for-byte with the zip contents)
  • Integrity: local-notes-web-archive-1.0.10.zip.sha256 below
  • Automated acceptance: unit 924/924, Playwright E2E 82/82 over the real
    unpacked build, including a dedicated extract-zip-and-load acceptance suite
    (the artifact in this release is the exact folder layout that was tested)

What's new in v1.0.10 — every option reads as one left-aligned column

A user reported it right after v1.0.9 with two screenshots: in the
Settings pop-up, actions like Test connection and Show the
introduction again
stretched across the whole dialog with centered
labels, and in the sidebar the action buttons (Import note…,
Settings, Diagnostics) sat centered while the smart lists above
them read left-aligned. v1.0.10 fixes exactly that — a CSS cascade bug
(the generic button rule's justify-content: center silently overrode
the sidebar's left-align intent) — with pixel-level regression tests
behind each behavior. No features were added or removed.

  • Sidebar actions align left like everything else: New Note, Save a
    web page…, Import note…, Settings and Diagnostics now sit flush-left
    in one column with the smart lists — at every width, including the
    collapsed icon rail and the narrow top strip
  • Settings and Diagnostics pop-ups align left: full-width centered
    buttons are gone — Test connection, Show the introduction again and
    Rebuild search index shrink to their content and align left like
    every sibling control
  • Rail mode no longer clips "Save a web page…": when the sidebar
    collapses to its icon rail, that button's label stayed visible and
    clipped inside the 59px rail button — it now hides its label exactly
    like every other rail button

What's new in v1.0.9 — New Note finally takes you to the new note

A user reported it right after v1.0.8: activating New Note while you
are already editing something (or while doing anything else in the app)
created the note silently in the background — the app stayed wherever it
was, nothing navigated, and because nothing happened on screen you could
keep clicking and stack an unlimited pile of empty "Untitled" notes
without ever seeing them being born. v1.0.9 fixes exactly that, with a
regression test behind each behavior. No features were added or removed.

  • Creating a note now lands you in it: every New Note entry point
    (sidebar button, empty-library button, onboarding primary action,
    command palette, Alt+Shift+C) navigates straight into the fresh note so
    you can start typing immediately — the note you were editing before is
    safely flushed by autosave on the way in, nothing is lost
  • Rapid clicking can no longer stack background notes: while a
    creation is in flight, further activations of New Note are ignored —
    one click means one note, spamming the button (or the keyboard
    shortcut) produces a single fresh note, not a pile of them
  • Honest save indicator when switching notes: the header's save-state
    used to keep showing the previous note's "Saved" after you opened
    another note; it now resets honestly while the newly opened note loads

What's new in v1.0.8 — the human-QA program (9 defects fixed)

A full human-behavior QA program (206 individual actions, 22 complete
workflows, 15 interaction combinations, edge/visual sweeps — every one
driven through the real UI with screenshots, session videos and logs on
file in the repo under artifacts/human-qa/)
found nine defects. All nine are fixed in this release, each with a
regression test and real-UI re-verification. No features were added or
removed — v1.0.8 is purely the repaired v1.0.7.

  • Find & Replace no longer destroys rich notes (critical): Replace all
    rebuilt the entire note as plain paragraphs — every heading, list, table
    and code block was silently flattened and images were deleted outright,
    then autosaved. Replacements now edit text in place inside the document
    structure; a single Ctrl+Z still restores everything (one transaction)
  • Exclusion-only searches returned nothing: -sourdough (documented
    "everything except" syntax) silently emptied the list instead of showing
    the notes that do not match; and invalid syntax like is:zebra now
    surfaces an inline explanation instead of a bare "no matching notes"
  • Saved settings now apply without a reload: toolbar-group
    preferences set in Settings previously needed a page reload before new
    editor sessions picked them up
  • Image dialog honors text typed after picking the file: alt text and
    captions filled in after choosing an image were silently dropped; the
    dialog now stages the file with a real Insert button
  • Save-a-web-page and context-menu captures actually run: saves from
    the dialog left links parked as "detected" forever while reporting
    success; they now queue and complete the capture
  • The permission flow is reachable: captures on un-granted sites now
    show a Grant access button in the snapshots panel that requests the
    permission and resumes the capture
  • Failed captures are retryable: the card tooltip always said "open
    the note to retry from its snapshots panel" — the panel had no retry
    button. It has one now, and it works
  • Compare snapshots is finally reachable: re-capturing a captured link
    (for a second revision to compare) had no UI entry point, making the
    Compare dialog permanently unreachable; captured links now offer
    "Capture fresh copy" and the chain builds revisions you can diff

What's new in v1.0.7 — the lost-user register (17 UX findings fixed)

A maintainer-reported UX audit ("a lot of areas where a person does not any
clue what they are supposed to do or use that feature") produced a complete
lost-user register: every disclosure surface, every file-picker flow, every
piece of developer jargon in user-facing copy, every discoverability gap —
17 findings (8 severe), each verified live against the shipped build. This
release fixes all 16 actionable findings (the 17th, diagnostics vocabulary,
was accepted as-is: that page's audience opts in).

  • Every popped-out bar now carries its own Close control: the
    attachments, snapshots, reminders and AI bars previously opened with no
    close button, no Escape, no click-outside — the only dismissal was knowing
    to re-click the small toolbar toggle. Every bar has an in-surface Close,
    Escape unwinds them (while no modal dialog is open), the Filters bar
    additionally closes on Apply, and Revisions now honors Escape too
  • iPhone photos (HEIC) insert from your PC: the image picker admitted
    no HEIC/HEIF, so the most common photo format was greyed out in the OS
    picker. Inserting now decodes HEIC locally to displayable JPEG through a
    pinned libheif decoder compiled without dynamic evaluation (the strict
    extension CSP is untouched; nothing uploads; decode runs in a dedicated
    worker). Undecodable files stay as attachments with a truthful message.
    The dialog also stopped asking for data:image "blobs" — it now teaches
    drag-and-drop and Ctrl+V paste instead
  • Tags and categories are editable in the note itself: previously the
    ONLY path was list → checkboxes → bulk bar. The editor now has a metadata
    bar under the subtitle: removable chips, an add field with suggestions,
    applied immediately like attachments
  • Saving a web page has a visible entry point: capture was reachable
    only by pasting a URL into a note (feedback: a transient toast). A
    "Save a web page…" action now sits in the sidebar next to New Note (and
    in the command palette) — paste a link, a note is created and the
    capture queued through the same pipeline the context menu uses
  • Onboarding teaches the product: the five privacy points are now led
    by three concrete first actions, and the primary button IS the first step
    ("Create my first note"); the empty library offers an inline create button
  • Plain language everywhere: attachment rows say "PNG image", not
    image/png; snapshot copy says "complete saved copy of the page", not
    raw MHTML vocabulary; the AI panel's MCP disclosure moved into a collapsed
    "Technical details"

What's new in v1.0.6 — full QA & release validation program

A second external QA protocol (zero-trust validation: DISCOVER -> TEST ->
BREAK -> FIX -> RETEST -> REGRESSION -> VALIDATE) re-verified the entire
application from scratch: all 60 PRD requirements, 27 UI surfaces, 138
controls, 34+ end-to-end workflows, security (XSS/sanitization/permissions/
secrets), performance and memory, data integrity across reloads/restarts/
upgrades/rollbacks, accessibility, and dependencies. Two defects were found
and fixed with dedicated regression coverage; two consecutive independent
verification passes then ran completely clean.

  • Search results can no longer be overwritten by stale background
    refreshes
    : rapid note creation left earlier search queries resolving
    out of order, so an older unfiltered result could replace the newer
    view while the search box still held your query. Requests are now
    strictly sequenced — only the lates...
Read more

v1.0.9

Choose a tag to compare

@kimpearce888 kimpearce888 released this 15 Oct 05:50

Local Notes & Web Archive v1.0.9

Local-first, offline-first Chrome (Manifest V3) extension: rich-text notes,
web page archiving (MHTML + full-page PNG + extracted text), reminders and
optional local LM Studio AI. No cloud services, no accounts, no telemetry,
no remote code.

Install (no build steps)

  1. Download local-notes-web-archive-1.0.9.zip below.
  2. Extract the ZIP anywhere.
  3. Open chrome://extensions, enable Developer mode.
  4. Click Load unpacked and select the extracted folder.
  5. Use the extension — the toolbar action opens the notes dashboard.

Chrome 120+ required. Everything stays on your device.

Verification

  • Full gate matrix and measured numbers: docs/RELEASE_VERIFICATION.md
  • File inventory: RELEASE_MANIFEST.txt below (byte-for-byte with the zip contents)
  • Integrity: local-notes-web-archive-1.0.9.zip.sha256 below
  • Automated acceptance: unit 917/917, Playwright E2E 78/78 over the real
    unpacked build, including a dedicated extract-zip-and-load acceptance suite
    (the artifact in this release is the exact folder layout that was tested)

What's new in v1.0.9 — New Note finally takes you to the new note

A user reported it right after v1.0.8: activating New Note while you
are already editing something (or while doing anything else in the app)
created the note silently in the background — the app stayed wherever it
was, nothing navigated, and because nothing happened on screen you could
keep clicking and stack an unlimited pile of empty "Untitled" notes
without ever seeing them being born. v1.0.9 fixes exactly that, with a
regression test behind each behavior. No features were added or removed.

  • Creating a note now lands you in it: every New Note entry point
    (sidebar button, empty-library button, onboarding primary action,
    command palette, Alt+Shift+C) navigates straight into the fresh note so
    you can start typing immediately — the note you were editing before is
    safely flushed by autosave on the way in, nothing is lost
  • Rapid clicking can no longer stack background notes: while a
    creation is in flight, further activations of New Note are ignored —
    one click means one note, spamming the button (or the keyboard
    shortcut) produces a single fresh note, not a pile of them
  • Honest save indicator when switching notes: the header's save-state
    used to keep showing the previous note's "Saved" after you opened
    another note; it now resets honestly while the newly opened note loads

What's new in v1.0.8 — the human-QA program (9 defects fixed)

A full human-behavior QA program (206 individual actions, 22 complete
workflows, 15 interaction combinations, edge/visual sweeps — every one
driven through the real UI with screenshots, session videos and logs on
file in the repo under artifacts/human-qa/)
found nine defects. All nine are fixed in this release, each with a
regression test and real-UI re-verification. No features were added or
removed — v1.0.8 is purely the repaired v1.0.7.

  • Find & Replace no longer destroys rich notes (critical): Replace all
    rebuilt the entire note as plain paragraphs — every heading, list, table
    and code block was silently flattened and images were deleted outright,
    then autosaved. Replacements now edit text in place inside the document
    structure; a single Ctrl+Z still restores everything (one transaction)
  • Exclusion-only searches returned nothing: -sourdough (documented
    "everything except" syntax) silently emptied the list instead of showing
    the notes that do not match; and invalid syntax like is:zebra now
    surfaces an inline explanation instead of a bare "no matching notes"
  • Saved settings now apply without a reload: toolbar-group
    preferences set in Settings previously needed a page reload before new
    editor sessions picked them up
  • Image dialog honors text typed after picking the file: alt text and
    captions filled in after choosing an image were silently dropped; the
    dialog now stages the file with a real Insert button
  • Save-a-web-page and context-menu captures actually run: saves from
    the dialog left links parked as "detected" forever while reporting
    success; they now queue and complete the capture
  • The permission flow is reachable: captures on un-granted sites now
    show a Grant access button in the snapshots panel that requests the
    permission and resumes the capture
  • Failed captures are retryable: the card tooltip always said "open
    the note to retry from its snapshots panel" — the panel had no retry
    button. It has one now, and it works
  • Compare snapshots is finally reachable: re-capturing a captured link
    (for a second revision to compare) had no UI entry point, making the
    Compare dialog permanently unreachable; captured links now offer
    "Capture fresh copy" and the chain builds revisions you can diff

What's new in v1.0.7 — the lost-user register (17 UX findings fixed)

A maintainer-reported UX audit ("a lot of areas where a person does not any
clue what they are supposed to do or use that feature") produced a complete
lost-user register: every disclosure surface, every file-picker flow, every
piece of developer jargon in user-facing copy, every discoverability gap —
17 findings (8 severe), each verified live against the shipped build. This
release fixes all 16 actionable findings (the 17th, diagnostics vocabulary,
was accepted as-is: that page's audience opts in).

  • Every popped-out bar now carries its own Close control: the
    attachments, snapshots, reminders and AI bars previously opened with no
    close button, no Escape, no click-outside — the only dismissal was knowing
    to re-click the small toolbar toggle. Every bar has an in-surface Close,
    Escape unwinds them (while no modal dialog is open), the Filters bar
    additionally closes on Apply, and Revisions now honors Escape too
  • iPhone photos (HEIC) insert from your PC: the image picker admitted
    no HEIC/HEIF, so the most common photo format was greyed out in the OS
    picker. Inserting now decodes HEIC locally to displayable JPEG through a
    pinned libheif decoder compiled without dynamic evaluation (the strict
    extension CSP is untouched; nothing uploads; decode runs in a dedicated
    worker). Undecodable files stay as attachments with a truthful message.
    The dialog also stopped asking for data:image "blobs" — it now teaches
    drag-and-drop and Ctrl+V paste instead
  • Tags and categories are editable in the note itself: previously the
    ONLY path was list → checkboxes → bulk bar. The editor now has a metadata
    bar under the subtitle: removable chips, an add field with suggestions,
    applied immediately like attachments
  • Saving a web page has a visible entry point: capture was reachable
    only by pasting a URL into a note (feedback: a transient toast). A
    "Save a web page…" action now sits in the sidebar next to New Note (and
    in the command palette) — paste a link, a note is created and the
    capture queued through the same pipeline the context menu uses
  • Onboarding teaches the product: the five privacy points are now led
    by three concrete first actions, and the primary button IS the first step
    ("Create my first note"); the empty library offers an inline create button
  • Plain language everywhere: attachment rows say "PNG image", not
    image/png; snapshot copy says "complete saved copy of the page", not
    raw MHTML vocabulary; the AI panel's MCP disclosure moved into a collapsed
    "Technical details"

What's new in v1.0.6 — full QA & release validation program

A second external QA protocol (zero-trust validation: DISCOVER -> TEST ->
BREAK -> FIX -> RETEST -> REGRESSION -> VALIDATE) re-verified the entire
application from scratch: all 60 PRD requirements, 27 UI surfaces, 138
controls, 34+ end-to-end workflows, security (XSS/sanitization/permissions/
secrets), performance and memory, data integrity across reloads/restarts/
upgrades/rollbacks, accessibility, and dependencies. Two defects were found
and fixed with dedicated regression coverage; two consecutive independent
verification passes then ran completely clean.

  • Search results can no longer be overwritten by stale background
    refreshes
    : rapid note creation left earlier search queries resolving
    out of order, so an older unfiltered result could replace the newer
    view while the search box still held your query. Requests are now
    strictly sequenced — only the latest query can update the list
    (verified with a creation-storm regression test).
  • Card timestamps now meet WCAG AA contrast in both themes: the
    "Created / Modified" meta text on note cards was 3.3:1 (light) and
    ~3.5-4:1 (dark) against its background — now 5.7:1 / 5.0+, locked by
    per-surface contrast tests.
  • QA evidence on file: 22 screenshots, a full video walkthrough,
    coverage matrix (every discovered screen has direct test evidence),
    performance measurements (load 207 ms, search 47 ms at 121 notes,
    p95 120-126 ms at 10k), memory-leak loops (bounded heap, net listener
    cleanup), upgrade v1.0.4->v1.0.6 and rollback validation with real
    data, npm audit 0 vulnerabilities.

What's new in v1.0.5 — QA-audit defect fixes

A full external human-behavior QA audit of v1.0.4 (7 defects, 34 workflows
verified, evidence on file) drove this release. All seven findings are fixed;
no feature was removed or changed beyond the fixes.

  • Attachments and backups work again (critical): chrome.runtime.sendMessage
    JSON-serializes message values, which silently turned every attached file and
    every backup archive into an empty object on the wire — attachments failed
    with "data must be a Blob", backup export failed at createObjectURL, and
    restore could never read the archive. Binary data now travels as base64
    envelopes at the channel boundary and is rebuilt into real Blobs;...
Read more

v1.0.8

Choose a tag to compare

@kimpearce888 kimpearce888 released this 15 Oct 02:25

Local Notes & Web Archive v1.0.8

Local-first, offline-first Chrome (Manifest V3) extension: rich-text notes,
web page archiving (MHTML + full-page PNG + extracted text), reminders and
optional local LM Studio AI. No cloud services, no accounts, no telemetry,
no remote code.

Install (no build steps)

  1. Download local-notes-web-archive-1.0.8.zip below.
  2. Extract the ZIP anywhere.
  3. Open chrome://extensions, enable Developer mode.
  4. Click Load unpacked and select the extracted folder.
  5. Use the extension — the toolbar action opens the notes dashboard.

Chrome 120+ required. Everything stays on your device.

Verification

  • Full gate matrix and measured numbers: docs/RELEASE_VERIFICATION.md
  • File inventory: RELEASE_MANIFEST.txt below (byte-for-byte with the zip contents)
  • Integrity: local-notes-web-archive-1.0.8.zip.sha256 below
  • Automated acceptance: unit 913/913, Playwright E2E 77/77 over the real
    unpacked build, including a dedicated extract-zip-and-load acceptance suite
    (the artifact in this release is the exact folder layout that was tested)

What's new in v1.0.8 — the human-QA program (9 defects fixed)

A full human-behavior QA program (206 individual actions, 22 complete
workflows, 15 interaction combinations, edge/visual sweeps — every one
driven through the real UI with screenshots, session videos and logs on
file in the repo under artifacts/human-qa/)
found nine defects. All nine are fixed in this release, each with a
regression test and real-UI re-verification. No features were added or
removed — v1.0.8 is purely the repaired v1.0.7.

  • Find & Replace no longer destroys rich notes (critical): Replace all
    rebuilt the entire note as plain paragraphs — every heading, list, table
    and code block was silently flattened and images were deleted outright,
    then autosaved. Replacements now edit text in place inside the document
    structure; a single Ctrl+Z still restores everything (one transaction)
  • Exclusion-only searches returned nothing: -sourdough (documented
    "everything except" syntax) silently emptied the list instead of showing
    the notes that do not match; and invalid syntax like is:zebra now
    surfaces an inline explanation instead of a bare "no matching notes"
  • Saved settings now apply without a reload: toolbar-group
    preferences set in Settings previously needed a page reload before new
    editor sessions picked them up
  • Image dialog honors text typed after picking the file: alt text and
    captions filled in after choosing an image were silently dropped; the
    dialog now stages the file with a real Insert button
  • Save-a-web-page and context-menu captures actually run: saves from
    the dialog left links parked as "detected" forever while reporting
    success; they now queue and complete the capture
  • The permission flow is reachable: captures on un-granted sites now
    show a Grant access button in the snapshots panel that requests the
    permission and resumes the capture
  • Failed captures are retryable: the card tooltip always said "open
    the note to retry from its snapshots panel" — the panel had no retry
    button. It has one now, and it works
  • Compare snapshots is finally reachable: re-capturing a captured link
    (for a second revision to compare) had no UI entry point, making the
    Compare dialog permanently unreachable; captured links now offer
    "Capture fresh copy" and the chain builds revisions you can diff

What's new in v1.0.7 — the lost-user register (17 UX findings fixed)

A maintainer-reported UX audit ("a lot of areas where a person does not any
clue what they are supposed to do or use that feature") produced a complete
lost-user register: every disclosure surface, every file-picker flow, every
piece of developer jargon in user-facing copy, every discoverability gap —
17 findings (8 severe), each verified live against the shipped build. This
release fixes all 16 actionable findings (the 17th, diagnostics vocabulary,
was accepted as-is: that page's audience opts in).

  • Every popped-out bar now carries its own Close control: the
    attachments, snapshots, reminders and AI bars previously opened with no
    close button, no Escape, no click-outside — the only dismissal was knowing
    to re-click the small toolbar toggle. Every bar has an in-surface Close,
    Escape unwinds them (while no modal dialog is open), the Filters bar
    additionally closes on Apply, and Revisions now honors Escape too
  • iPhone photos (HEIC) insert from your PC: the image picker admitted
    no HEIC/HEIF, so the most common photo format was greyed out in the OS
    picker. Inserting now decodes HEIC locally to displayable JPEG through a
    pinned libheif decoder compiled without dynamic evaluation (the strict
    extension CSP is untouched; nothing uploads; decode runs in a dedicated
    worker). Undecodable files stay as attachments with a truthful message.
    The dialog also stopped asking for data:image "blobs" — it now teaches
    drag-and-drop and Ctrl+V paste instead
  • Tags and categories are editable in the note itself: previously the
    ONLY path was list → checkboxes → bulk bar. The editor now has a metadata
    bar under the subtitle: removable chips, an add field with suggestions,
    applied immediately like attachments
  • Saving a web page has a visible entry point: capture was reachable
    only by pasting a URL into a note (feedback: a transient toast). A
    "Save a web page…" action now sits in the sidebar next to New Note (and
    in the command palette) — paste a link, a note is created and the
    capture queued through the same pipeline the context menu uses
  • Onboarding teaches the product: the five privacy points are now led
    by three concrete first actions, and the primary button IS the first step
    ("Create my first note"); the empty library offers an inline create button
  • Plain language everywhere: attachment rows say "PNG image", not
    image/png; snapshot copy says "complete saved copy of the page", not
    raw MHTML vocabulary; the AI panel's MCP disclosure moved into a collapsed
    "Technical details"

What's new in v1.0.6 — full QA & release validation program

A second external QA protocol (zero-trust validation: DISCOVER -> TEST ->
BREAK -> FIX -> RETEST -> REGRESSION -> VALIDATE) re-verified the entire
application from scratch: all 60 PRD requirements, 27 UI surfaces, 138
controls, 34+ end-to-end workflows, security (XSS/sanitization/permissions/
secrets), performance and memory, data integrity across reloads/restarts/
upgrades/rollbacks, accessibility, and dependencies. Two defects were found
and fixed with dedicated regression coverage; two consecutive independent
verification passes then ran completely clean.

  • Search results can no longer be overwritten by stale background
    refreshes
    : rapid note creation left earlier search queries resolving
    out of order, so an older unfiltered result could replace the newer
    view while the search box still held your query. Requests are now
    strictly sequenced — only the latest query can update the list
    (verified with a creation-storm regression test).
  • Card timestamps now meet WCAG AA contrast in both themes: the
    "Created / Modified" meta text on note cards was 3.3:1 (light) and
    ~3.5-4:1 (dark) against its background — now 5.7:1 / 5.0+, locked by
    per-surface contrast tests.
  • QA evidence on file: 22 screenshots, a full video walkthrough,
    coverage matrix (every discovered screen has direct test evidence),
    performance measurements (load 207 ms, search 47 ms at 121 notes,
    p95 120-126 ms at 10k), memory-leak loops (bounded heap, net listener
    cleanup), upgrade v1.0.4->v1.0.6 and rollback validation with real
    data, npm audit 0 vulnerabilities.

What's new in v1.0.5 — QA-audit defect fixes

A full external human-behavior QA audit of v1.0.4 (7 defects, 34 workflows
verified, evidence on file) drove this release. All seven findings are fixed;
no feature was removed or changed beyond the fixes.

  • Attachments and backups work again (critical): chrome.runtime.sendMessage
    JSON-serializes message values, which silently turned every attached file and
    every backup archive into an empty object on the wire — attachments failed
    with "data must be a Blob", backup export failed at createObjectURL, and
    restore could never read the archive. Binary data now travels as base64
    envelopes at the channel boundary and is rebuilt into real Blobs; the
    attachments panel's "Attach files…" button also finally opens the picker it
    always promised
  • Favorites are reachable: the favorite flag had no user interface anywhere
    — the Favorites smart list was permanently empty. It now has bulk-bar
    actions and an editor-header toggle (mirroring Pin)
  • The Filters panel exists: the topbar Filters button opened an empty
    region. It now holds the full FR-SEARCH-03 control set (date ranges, tags,
    categories, state, reminder and snapshot filters, pinned/favorites/links/
    attachments, capture date, source domain) with removable active-filter chips
    and combinable saved named views that persist across restarts
  • Sort direction control: sorting was hard-coded descending with no
    ascending control anywhere. The toolbar now offers ascending/descending
    (hidden for relevance, where direction is meaningless) and the persisted
    default sort finally seeds new sessions
  • Re-shown onboarding can be completed: Settings → "Show the introduction
    again" presented a permanently disabled Get-started button (Escape was the
    only way out). The button now resets on every presentation
  • Rapid creation keeps the page honest: creating notes quickly beyond the
    page size rendered 52 cards on "Page 1 of 2" until reload; the paginated
    window now keeps its size invariant at every step

What's new in v1.0.4 — post-re...

Read more

v1.0.7

Choose a tag to compare

@kimpearce888 kimpearce888 released this 14 Oct 08:32

Local Notes & Web Archive v1.0.7

Local-first, offline-first Chrome (Manifest V3) extension: rich-text notes,
web page archiving (MHTML + full-page PNG + extracted text), reminders and
optional local LM Studio AI. No cloud services, no accounts, no telemetry,
no remote code.

Install (no build steps)

  1. Download local-notes-web-archive-1.0.7.zip below.
  2. Extract the ZIP anywhere.
  3. Open chrome://extensions, enable Developer mode.
  4. Click Load unpacked and select the extracted folder.
  5. Use the extension — the toolbar action opens the notes dashboard.

Chrome 120+ required. Everything stays on your device.

Verification

  • Full gate matrix and measured numbers: docs/RELEASE_VERIFICATION.md
  • File inventory: RELEASE_MANIFEST.txt below (byte-for-byte with the zip contents)
  • Integrity: local-notes-web-archive-1.0.7.zip.sha256 below
  • Automated acceptance: unit 896/896, Playwright E2E 77/77 over the real
    unpacked build, including a dedicated extract-zip-and-load acceptance suite
    (the artifact in this release is the exact folder layout that was tested)

What's new in v1.0.7 — the lost-user register (17 UX findings fixed)

A maintainer-reported UX audit ("a lot of areas where a person does not any
clue what they are supposed to do or use that feature") produced a complete
lost-user register: every disclosure surface, every file-picker flow, every
piece of developer jargon in user-facing copy, every discoverability gap —
17 findings (8 severe), each verified live against the shipped build. This
release fixes all 16 actionable findings (the 17th, diagnostics vocabulary,
was accepted as-is: that page's audience opts in).

  • Every popped-out bar now carries its own Close control: the
    attachments, snapshots, reminders and AI bars previously opened with no
    close button, no Escape, no click-outside — the only dismissal was knowing
    to re-click the small toolbar toggle. Every bar has an in-surface Close,
    Escape unwinds them (while no modal dialog is open), the Filters bar
    additionally closes on Apply, and Revisions now honors Escape too
  • iPhone photos (HEIC) insert from your PC: the image picker admitted
    no HEIC/HEIF, so the most common photo format was greyed out in the OS
    picker. Inserting now decodes HEIC locally to displayable JPEG through a
    pinned libheif decoder compiled without dynamic evaluation (the strict
    extension CSP is untouched; nothing uploads; decode runs in a dedicated
    worker). Undecodable files stay as attachments with a truthful message.
    The dialog also stopped asking for data:image "blobs" — it now teaches
    drag-and-drop and Ctrl+V paste instead
  • Tags and categories are editable in the note itself: previously the
    ONLY path was list → checkboxes → bulk bar. The editor now has a metadata
    bar under the subtitle: removable chips, an add field with suggestions,
    applied immediately like attachments
  • Saving a web page has a visible entry point: capture was reachable
    only by pasting a URL into a note (feedback: a transient toast). A
    "Save a web page…" action now sits in the sidebar next to New Note (and
    in the command palette) — paste a link, a note is created and the
    capture queued through the same pipeline the context menu uses
  • Onboarding teaches the product: the five privacy points are now led
    by three concrete first actions, and the primary button IS the first step
    ("Create my first note"); the empty library offers an inline create button
  • Plain language everywhere: attachment rows say "PNG image", not
    image/png; snapshot copy says "complete saved copy of the page", not
    raw MHTML vocabulary; the AI panel's MCP disclosure moved into a collapsed
    "Technical details"

What's new in v1.0.6 — full QA & release validation program

A second external QA protocol (zero-trust validation: DISCOVER -> TEST ->
BREAK -> FIX -> RETEST -> REGRESSION -> VALIDATE) re-verified the entire
application from scratch: all 60 PRD requirements, 27 UI surfaces, 138
controls, 34+ end-to-end workflows, security (XSS/sanitization/permissions/
secrets), performance and memory, data integrity across reloads/restarts/
upgrades/rollbacks, accessibility, and dependencies. Two defects were found
and fixed with dedicated regression coverage; two consecutive independent
verification passes then ran completely clean.

  • Search results can no longer be overwritten by stale background
    refreshes
    : rapid note creation left earlier search queries resolving
    out of order, so an older unfiltered result could replace the newer
    view while the search box still held your query. Requests are now
    strictly sequenced — only the latest query can update the list
    (verified with a creation-storm regression test).
  • Card timestamps now meet WCAG AA contrast in both themes: the
    "Created / Modified" meta text on note cards was 3.3:1 (light) and
    ~3.5-4:1 (dark) against its background — now 5.7:1 / 5.0+, locked by
    per-surface contrast tests.
  • QA evidence on file: 22 screenshots, a full video walkthrough,
    coverage matrix (every discovered screen has direct test evidence),
    performance measurements (load 207 ms, search 47 ms at 121 notes,
    p95 120-126 ms at 10k), memory-leak loops (bounded heap, net listener
    cleanup), upgrade v1.0.4->v1.0.6 and rollback validation with real
    data, npm audit 0 vulnerabilities.

What's new in v1.0.5 — QA-audit defect fixes

A full external human-behavior QA audit of v1.0.4 (7 defects, 34 workflows
verified, evidence on file) drove this release. All seven findings are fixed;
no feature was removed or changed beyond the fixes.

  • Attachments and backups work again (critical): chrome.runtime.sendMessage
    JSON-serializes message values, which silently turned every attached file and
    every backup archive into an empty object on the wire — attachments failed
    with "data must be a Blob", backup export failed at createObjectURL, and
    restore could never read the archive. Binary data now travels as base64
    envelopes at the channel boundary and is rebuilt into real Blobs; the
    attachments panel's "Attach files…" button also finally opens the picker it
    always promised
  • Favorites are reachable: the favorite flag had no user interface anywhere
    — the Favorites smart list was permanently empty. It now has bulk-bar
    actions and an editor-header toggle (mirroring Pin)
  • The Filters panel exists: the topbar Filters button opened an empty
    region. It now holds the full FR-SEARCH-03 control set (date ranges, tags,
    categories, state, reminder and snapshot filters, pinned/favorites/links/
    attachments, capture date, source domain) with removable active-filter chips
    and combinable saved named views that persist across restarts
  • Sort direction control: sorting was hard-coded descending with no
    ascending control anywhere. The toolbar now offers ascending/descending
    (hidden for relevance, where direction is meaningless) and the persisted
    default sort finally seeds new sessions
  • Re-shown onboarding can be completed: Settings → "Show the introduction
    again" presented a permanently disabled Get-started button (Escape was the
    only way out). The button now resets on every presentation
  • Rapid creation keeps the page honest: creating notes quickly beyond the
    page size rendered 52 cards on "Page 1 of 2" until reload; the paginated
    window now keeps its size invariant at every step

What's new in v1.0.4 — post-redesign fixes

Two defects reported against the v1.0.3 redesign are fixed. No other
changes — 100% feature parity with v1.0.3.

  • Sidebar "All notes" button invisible: under the default System
    appearance preference with a light OS, the active smart-list pill painted
    the dark-theme navy behind near-black text (~1.2:1 contrast). The dark
    active-nav override now applies only to the explicit dark theme (and
    system + dark OS); system + light renders the light accent-soft pill
    (~13:1 contrast)
  • Note cards read body-first with jumbled chips: cards now read
    title → subtitle → body preview → tags row → categories row →
    link/reminder indicators → dates, with tags and categories on separate
    rows and empty rows omitted entirely

What's new in v1.0.3 — redesigned UI/UX

The whole interface was redesigned ("a local-first Obsidian alternative
with Linear's polish and Arc's modern feel") with 100% feature parity:
no change to business logic, data structures, storage, APIs, permissions,
search/AI/reminder/archive logic or import/export behavior.

  • Persistent sidebar layout (brand, New Note, smart lists, secondary
    actions) with a sticky search topbar and a command-center content column
  • New command palette (Ctrl+K): keyboard-first launcher over existing
    actions — new note, import, smart-list navigation, settings, diagnostics,
    theme preference
  • Refined dark-first design language (deep neutral palette, indigo accent,
    hairline borders, subtle motion) with light and system themes kept in
    WCAG-AA parity
  • Editor: document-grade title, calm prose typography, grouped session
    header with icons, sticky formatting toolbar
  • Uniform dialog rhythm, unified editor sub-panels, small-caps settings and
    diagnostics sections, floating bulk action bar, responsive sidebar
    collapse (icon rail -> top strip)

Checksum

bfb88efebe1e1d622ad2654302f1783723802a722b6dcf70810945e962db28fd  local-notes-web-archive-1.0.7.zip

v1.0.6

Choose a tag to compare

@kimpearce888 kimpearce888 released this 14 Oct 03:26

Local Notes & Web Archive v1.0.6

Local-first, offline-first Chrome (Manifest V3) extension: rich-text notes,
web page archiving (MHTML + full-page PNG + extracted text), reminders and
optional local LM Studio AI. No cloud services, no accounts, no telemetry,
no remote code.

Install (no build steps)

  1. Download local-notes-web-archive-1.0.6.zip below.
  2. Extract the ZIP anywhere.
  3. Open chrome://extensions, enable Developer mode.
  4. Click Load unpacked and select the extracted folder.
  5. Use the extension — the toolbar action opens the notes dashboard.

Chrome 120+ required. Everything stays on your device.

Verification

  • Full gate matrix and measured numbers: docs/RELEASE_VERIFICATION.md
  • File inventory: RELEASE_MANIFEST.txt below (byte-for-byte with the zip contents)
  • Integrity: local-notes-web-archive-1.0.6.zip.sha256 below
  • Automated acceptance: unit 840/840, Playwright E2E 67/67 over the real
    unpacked build, including a dedicated extract-zip-and-load acceptance suite
    (the artifact in this release is the exact folder layout that was tested)

What's new in v1.0.6 — full QA & release validation program

A second external QA protocol (zero-trust validation: DISCOVER -> TEST ->
BREAK -> FIX -> RETEST -> REGRESSION -> VALIDATE) re-verified the entire
application from scratch: all 60 PRD requirements, 27 UI surfaces, 138
controls, 34+ end-to-end workflows, security (XSS/sanitization/permissions/
secrets), performance and memory, data integrity across reloads/restarts/
upgrades/rollbacks, accessibility, and dependencies. Two defects were found
and fixed with dedicated regression coverage; two consecutive independent
verification passes then ran completely clean.

  • Search results can no longer be overwritten by stale background
    refreshes
    : rapid note creation left earlier search queries resolving
    out of order, so an older unfiltered result could replace the newer
    view while the search box still held your query. Requests are now
    strictly sequenced — only the latest query can update the list
    (verified with a creation-storm regression test).
  • Card timestamps now meet WCAG AA contrast in both themes: the
    "Created / Modified" meta text on note cards was 3.3:1 (light) and
    ~3.5-4:1 (dark) against its background — now 5.7:1 / 5.0+, locked by
    per-surface contrast tests.
  • QA evidence on file: 22 screenshots, a full video walkthrough,
    coverage matrix (every discovered screen has direct test evidence),
    performance measurements (load 207 ms, search 47 ms at 121 notes,
    p95 120-126 ms at 10k), memory-leak loops (bounded heap, net listener
    cleanup), upgrade v1.0.4->v1.0.6 and rollback validation with real
    data, npm audit 0 vulnerabilities.

What's new in v1.0.5 — QA-audit defect fixes

A full external human-behavior QA audit of v1.0.4 (7 defects, 34 workflows
verified, evidence on file) drove this release. All seven findings are fixed;
no feature was removed or changed beyond the fixes.

  • Attachments and backups work again (critical): chrome.runtime.sendMessage
    JSON-serializes message values, which silently turned every attached file and
    every backup archive into an empty object on the wire — attachments failed
    with "data must be a Blob", backup export failed at createObjectURL, and
    restore could never read the archive. Binary data now travels as base64
    envelopes at the channel boundary and is rebuilt into real Blobs; the
    attachments panel's "Attach files…" button also finally opens the picker it
    always promised
  • Favorites are reachable: the favorite flag had no user interface anywhere
    — the Favorites smart list was permanently empty. It now has bulk-bar
    actions and an editor-header toggle (mirroring Pin)
  • The Filters panel exists: the topbar Filters button opened an empty
    region. It now holds the full FR-SEARCH-03 control set (date ranges, tags,
    categories, state, reminder and snapshot filters, pinned/favorites/links/
    attachments, capture date, source domain) with removable active-filter chips
    and combinable saved named views that persist across restarts
  • Sort direction control: sorting was hard-coded descending with no
    ascending control anywhere. The toolbar now offers ascending/descending
    (hidden for relevance, where direction is meaningless) and the persisted
    default sort finally seeds new sessions
  • Re-shown onboarding can be completed: Settings → "Show the introduction
    again" presented a permanently disabled Get-started button (Escape was the
    only way out). The button now resets on every presentation
  • Rapid creation keeps the page honest: creating notes quickly beyond the
    page size rendered 52 cards on "Page 1 of 2" until reload; the paginated
    window now keeps its size invariant at every step

What's new in v1.0.4 — post-redesign fixes

Two defects reported against the v1.0.3 redesign are fixed. No other
changes — 100% feature parity with v1.0.3.

  • Sidebar "All notes" button invisible: under the default System
    appearance preference with a light OS, the active smart-list pill painted
    the dark-theme navy behind near-black text (~1.2:1 contrast). The dark
    active-nav override now applies only to the explicit dark theme (and
    system + dark OS); system + light renders the light accent-soft pill
    (~13:1 contrast)
  • Note cards read body-first with jumbled chips: cards now read
    title → subtitle → body preview → tags row → categories row →
    link/reminder indicators → dates, with tags and categories on separate
    rows and empty rows omitted entirely

What's new in v1.0.3 — redesigned UI/UX

The whole interface was redesigned ("a local-first Obsidian alternative
with Linear's polish and Arc's modern feel") with 100% feature parity:
no change to business logic, data structures, storage, APIs, permissions,
search/AI/reminder/archive logic or import/export behavior.

  • Persistent sidebar layout (brand, New Note, smart lists, secondary
    actions) with a sticky search topbar and a command-center content column
  • New command palette (Ctrl+K): keyboard-first launcher over existing
    actions — new note, import, smart-list navigation, settings, diagnostics,
    theme preference
  • Refined dark-first design language (deep neutral palette, indigo accent,
    hairline borders, subtle motion) with light and system themes kept in
    WCAG-AA parity
  • Editor: document-grade title, calm prose typography, grouped session
    header with icons, sticky formatting toolbar
  • Uniform dialog rhythm, unified editor sub-panels, small-caps settings and
    diagnostics sections, floating bulk action bar, responsive sidebar
    collapse (icon rail -> top strip)

Checksum

38d89dfc4d2957aa3c76587aac73feac90cbbf88ad0b76957f5583dc541f3e69  local-notes-web-archive-1.0.6.zip

v1.0.5

Choose a tag to compare

@kimpearce888 kimpearce888 released this 13 Oct 23:31

Local Notes & Web Archive v1.0.5

Local-first, offline-first Chrome (Manifest V3) extension: rich-text notes,
web page archiving (MHTML + full-page PNG + extracted text), reminders and
optional local LM Studio AI. No cloud services, no accounts, no telemetry,
no remote code.

Install (no build steps)

  1. Download local-notes-web-archive-1.0.5.zip below.
  2. Extract the ZIP anywhere.
  3. Open chrome://extensions, enable Developer mode.
  4. Click Load unpacked and select the extracted folder.
  5. Use the extension — the toolbar action opens the notes dashboard.

Chrome 120+ required. Everything stays on your device.

Verification

  • Full gate matrix and measured numbers: docs/RELEASE_VERIFICATION.md
  • File inventory: RELEASE_MANIFEST.txt below (byte-for-byte with the zip contents)
  • Integrity: local-notes-web-archive-1.0.5.zip.sha256 below
  • Automated acceptance: unit 835/835, Playwright E2E 66/66 over the real
    unpacked build, including a dedicated extract-zip-and-load acceptance suite
    (the artifact in this release is the exact folder layout that was tested)

What's new in v1.0.5 — QA-audit defect fixes

A full external human-behavior QA audit of v1.0.4 (7 defects, 34 workflows
verified, evidence on file) drove this release. All seven findings are fixed;
no feature was removed or changed beyond the fixes.

  • Attachments and backups work again (critical): chrome.runtime.sendMessage
    JSON-serializes message values, which silently turned every attached file and
    every backup archive into an empty object on the wire — attachments failed
    with "data must be a Blob", backup export failed at createObjectURL, and
    restore could never read the archive. Binary data now travels as base64
    envelopes at the channel boundary and is rebuilt into real Blobs; the
    attachments panel's "Attach files…" button also finally opens the picker it
    always promised
  • Favorites are reachable: the favorite flag had no user interface anywhere
    — the Favorites smart list was permanently empty. It now has bulk-bar
    actions and an editor-header toggle (mirroring Pin)
  • The Filters panel exists: the topbar Filters button opened an empty
    region. It now holds the full FR-SEARCH-03 control set (date ranges, tags,
    categories, state, reminder and snapshot filters, pinned/favorites/links/
    attachments, capture date, source domain) with removable active-filter chips
    and combinable saved named views that persist across restarts
  • Sort direction control: sorting was hard-coded descending with no
    ascending control anywhere. The toolbar now offers ascending/descending
    (hidden for relevance, where direction is meaningless) and the persisted
    default sort finally seeds new sessions
  • Re-shown onboarding can be completed: Settings → "Show the introduction
    again" presented a permanently disabled Get-started button (Escape was the
    only way out). The button now resets on every presentation
  • Rapid creation keeps the page honest: creating notes quickly beyond the
    page size rendered 52 cards on "Page 1 of 2" until reload; the paginated
    window now keeps its size invariant at every step

What's new in v1.0.4 — post-redesign fixes

Two defects reported against the v1.0.3 redesign are fixed. No other
changes — 100% feature parity with v1.0.3.

  • Sidebar "All notes" button invisible: under the default System
    appearance preference with a light OS, the active smart-list pill painted
    the dark-theme navy behind near-black text (~1.2:1 contrast). The dark
    active-nav override now applies only to the explicit dark theme (and
    system + dark OS); system + light renders the light accent-soft pill
    (~13:1 contrast)
  • Note cards read body-first with jumbled chips: cards now read
    title → subtitle → body preview → tags row → categories row →
    link/reminder indicators → dates, with tags and categories on separate
    rows and empty rows omitted entirely

What's new in v1.0.3 — redesigned UI/UX

The whole interface was redesigned ("a local-first Obsidian alternative
with Linear's polish and Arc's modern feel") with 100% feature parity:
no change to business logic, data structures, storage, APIs, permissions,
search/AI/reminder/archive logic or import/export behavior.

  • Persistent sidebar layout (brand, New Note, smart lists, secondary
    actions) with a sticky search topbar and a command-center content column
  • New command palette (Ctrl+K): keyboard-first launcher over existing
    actions — new note, import, smart-list navigation, settings, diagnostics,
    theme preference
  • Refined dark-first design language (deep neutral palette, indigo accent,
    hairline borders, subtle motion) with light and system themes kept in
    WCAG-AA parity
  • Editor: document-grade title, calm prose typography, grouped session
    header with icons, sticky formatting toolbar
  • Uniform dialog rhythm, unified editor sub-panels, small-caps settings and
    diagnostics sections, floating bulk action bar, responsive sidebar
    collapse (icon rail -> top strip)

Checksum

ead1a27de5ee06bc332efadeea92efd87fc77bd618b9c5fc9fe79a88527c54f8  local-notes-web-archive-1.0.5.zip

v1.0.4

Choose a tag to compare

@kimpearce888 kimpearce888 released this 13 Oct 11:27

Local Notes & Web Archive v1.0.4

Local-first, offline-first Chrome (Manifest V3) extension: rich-text notes,
web page archiving (MHTML + full-page PNG + extracted text), reminders and
optional local LM Studio AI. No cloud services, no accounts, no telemetry,
no remote code.

Install (no build steps)

  1. Download local-notes-web-archive-1.0.4.zip below.
  2. Extract the ZIP anywhere.
  3. Open chrome://extensions, enable Developer mode.
  4. Click Load unpacked and select the extracted folder.
  5. Use the extension — the toolbar action opens the notes dashboard.

Chrome 120+ required. Everything stays on your device.

Verification

  • Full gate matrix and measured numbers: docs/RELEASE_VERIFICATION.md
  • File inventory: RELEASE_MANIFEST.txt below (byte-for-byte with the zip contents)
  • Integrity: local-notes-web-archive-1.0.4.zip.sha256 below
  • Automated acceptance: unit 797/797, Playwright E2E 58/58 over the real
    unpacked build, including a dedicated extract-zip-and-load acceptance suite
    (the artifact in this release is the exact folder layout that was tested)

What's new in v1.0.4 — post-redesign fixes

Two defects reported against the v1.0.3 redesign are fixed. No other
changes — 100% feature parity with v1.0.3.

  • Sidebar "All notes" button invisible: under the default System
    appearance preference with a light OS, the active smart-list pill painted
    the dark-theme navy behind near-black text (~1.2:1 contrast). The dark
    active-nav override now applies only to the explicit dark theme (and
    system + dark OS); system + light renders the light accent-soft pill
    (~13:1 contrast)
  • Note cards read body-first with jumbled chips: cards now read
    title → subtitle → body preview → tags row → categories row →
    link/reminder indicators → dates, with tags and categories on separate
    rows and empty rows omitted entirely

What's new in v1.0.3 — redesigned UI/UX

The whole interface was redesigned ("a local-first Obsidian alternative
with Linear's polish and Arc's modern feel") with 100% feature parity:
no change to business logic, data structures, storage, APIs, permissions,
search/AI/reminder/archive logic or import/export behavior.

  • Persistent sidebar layout (brand, New Note, smart lists, secondary
    actions) with a sticky search topbar and a command-center content column
  • New command palette (Ctrl+K): keyboard-first launcher over existing
    actions — new note, import, smart-list navigation, settings, diagnostics,
    theme preference
  • Refined dark-first design language (deep neutral palette, indigo accent,
    hairline borders, subtle motion) with light and system themes kept in
    WCAG-AA parity
  • Editor: document-grade title, calm prose typography, grouped session
    header with icons, sticky formatting toolbar
  • Uniform dialog rhythm, unified editor sub-panels, small-caps settings and
    diagnostics sections, floating bulk action bar, responsive sidebar
    collapse (icon rail -> top strip)

Checksum

8c8650d6ad539518f8d650a135cf6e8815d9dd6288bda8695aa1b1b91fdebe22  local-notes-web-archive-1.0.4.zip

v1.0.3

Choose a tag to compare

@kimpearce888 kimpearce888 released this 13 Oct 10:23

Local Notes & Web Archive v1.0.3

Local-first, offline-first Chrome (Manifest V3) extension: rich-text notes,
web page archiving (MHTML + full-page PNG + extracted text), reminders and
optional local LM Studio AI. No cloud services, no accounts, no telemetry,
no remote code.

Install (no build steps)

  1. Download local-notes-web-archive-1.0.3.zip below.
  2. Extract the ZIP anywhere.
  3. Open chrome://extensions, enable Developer mode.
  4. Click Load unpacked and select the extracted folder.
  5. Use the extension — the toolbar action opens the notes dashboard.

Chrome 120+ required. Everything stays on your device.

Verification

  • Full gate matrix and measured numbers: docs/RELEASE_VERIFICATION.md
  • File inventory: RELEASE_MANIFEST.txt below (byte-for-byte with the zip contents)
  • Integrity: local-notes-web-archive-1.0.3.zip.sha256 below
  • Automated acceptance: unit 791/791, Playwright E2E 56/56 over the real
    unpacked build, including a dedicated extract-zip-and-load acceptance suite
    (the artifact in this release is the exact folder layout that was tested)

What's new in v1.0.3 — redesigned UI/UX

The whole interface was redesigned ("a local-first Obsidian alternative
with Linear's polish and Arc's modern feel") with 100% feature parity:
no change to business logic, data structures, storage, APIs, permissions,
search/AI/reminder/archive logic or import/export behavior.

  • Persistent sidebar layout (brand, New Note, smart lists, secondary
    actions) with a sticky search topbar and a command-center content column
  • New command palette (Ctrl+K): keyboard-first launcher over existing
    actions — new note, import, smart-list navigation, settings, diagnostics,
    theme preference
  • Refined dark-first design language (deep neutral palette, indigo accent,
    hairline borders, subtle motion) with light and system themes kept in
    WCAG-AA parity
  • Editor: document-grade title, calm prose typography, grouped session
    header with icons, sticky formatting toolbar
  • Uniform dialog rhythm, unified editor sub-panels, small-caps settings and
    diagnostics sections, floating bulk action bar, responsive sidebar
    collapse (icon rail -> top strip)

Checksum

2cb3d6131c99a054fd0f4ec6f54c35a2683fa6f3595174ec589ade104be9181c  local-notes-web-archive-1.0.3.zip