Knowmarks Changelog

What changed in Knowmarks.

New features, improvements, and fixes from the private alpha. Short on ceremony, long enough to know what is worth trying next.

Added

  • Add a saved item to spaces right inside the ⌘K palette — no separate popup. Open the command palette while reading a saved item, type "add to space", and press Enter: the palette becomes your space list on the spot, with the spaces you've added to most recently right at the top. Arrow to a space and press Enter to add it, or press Space to check several and Enter to confirm — the sidebar and the item's spaces update immediately. Start typing a new name and a "create space" option waits at the bottom of the list, so you never make one by accident while you're still searching.

Improved

  • Your Home page now leads with what changed. Home opens with a scannable "this week" dispatch: the new things you saved (tap any one to open it), spaces Knowmarks is suggesting — with keep and dismiss right there on the row — how your knowledge gaps moved, each with a thumbs-up or thumbs-down, and one clear next step. A quiet week collapses to a single honest line instead of a wall of text. Keeping or dismissing a suggested space, or thumbing a gap, happens in place — the row updates on the spot, no reload and no jumping around.

Fixed

  • Saved Reddit posts read cleanly, and image posts show their picture. A saved Reddit item could open with a stray "Imported data from Reddit Saved" heading sitting on top of the post, and image posts showed only the caption with no picture. Now the import label is gone, the post text reads plainly, and an image post leads with the image itself.
  • A connector no longer looks like one of your spaces. When you read an item that came in through a connector (like Reddit Saved), the connector was listed right alongside the spaces you'd organized it into — which made it look like a space you'd chosen. The connector now shows as "Synced from …" under the item's source, where it belongs, and the Spaces list shows only the spaces you filed it into.

Added

  • Import and sync your Raindrop.io bookmarks. You can now import and sync your Raindrop.io bookmarks with km import raindrop.

Fixed

  • "Don't poll" now actually stops a connector from polling. When you added a connector with the schedule set to skip automatic syncing, it could quietly keep syncing on the default interval anyway. Choosing not to poll now sticks for every connector type, and paused connectors read as manual in km connector list.
  • Saved pages keep their shape in the reader. Pages you capture with the browser extension or the iOS share sheet were sometimes rendering as one run-together wall of text — headings, numbered steps, lists, quotes, and code all fused together. Captured pages now preserve their structure: headings stay headings, lists stay lists, code blocks stay intact, and line breaks survive.
  • No accidental "delete" on items that aren't duplicates. When two saves looked similar but were actually different — like two code repositories that just share a name under different owners — the duplicate review could still pre-select one for deletion. It no longer puts a destructive default on a pair it can tell apart; those stay side by side for you to decide.
  • Recent items show their images again. Some items in the recent view were appearing without their source image; the picture now shows where it had been blank.
  • km doctor stops crying wolf about your AI provider. The health check was flagging your language-model and embedding provider as "unreachable" even when the connection was perfectly fine — a false alarm from a bug inside the check itself, not your setup. It now reports the true status.

Improved

  • The Brief is shorter and leads with what changed. Instead of two or three dense paragraphs, the Brief now opens with a one- or two-sentence take and a scannable change-list — the new saves this window, any spaces newly worth keeping, how your knowledge gaps moved, and one clear next step. It also scales to the moment: a quiet stretch collapses to a single line instead of padding itself out, and it won't re-narrate what the last Brief already told you.
  • Pins hold through a re-scan. An item you placed in a project by hand could quietly get downgraded to an automatic suggestion the next time Knowmarks re-evaluated the project. Your manual placements now stick.
  • Search stays accurate while your library re-indexes. During an upgrade to a new similarity model, search now favors the freshly-indexed items instead of mixing in stale ones, so results don't drift during the transition.
  • You can thumb a knowledge gap up or down. A thumbs-down stops similar gaps coming back — it dismisses the one you're looking at and quietly holds back the whole category, so you won't keep seeing the same "you might be missing…" prompt reworded. A thumbs-up does the opposite: it keeps that gap in front of you and protects it from ageing out, so a gap you care about sticks around until you fill it.
  • Your Brief now flags what needs attention. The Brief now surfaces notes you're overdue to review and documents that are aging past their freshness point — but only when they're worth raising. They earn a spot on a quiet window and stay out of the way on a busy one, and a note or document already flagged in your last Brief won't nag you again until something changes.

Improved

  • Sharper project and collection recommendations. After a recent upgrade to how Knowmarks measures similarity, the rules that decide what belongs in a project or collection had become too cautious and good matches were getting left out. They're retuned to the new scale, so the items suggested for a project or gathered into a collection land closer to what you'd pick yourself, with fewer near-misses.
  • More of your library gets organized into clusters. Clustering had been grouping only a small slice of what you'd saved. It now recognizes far more of your collection as related, so the auto-organized themes reflect your whole library instead of a fraction of it.
  • Search surfaces more of what you mean. Strong matches on meaning were slipping just under the cutoff and being dropped from results. Those come through now, so a search returns the related items it had been quietly hiding.
  • Smarter duplicate detection. Knowmarks is better at telling a true duplicate from two items that merely look similar, so it flags the real repeats without false alarms — and it will never fold away something you've pinned or kept.
  • Your keep, pin, and thumbs-up signals count for more. The items you've endorsed now carry weight across freshness, clustering, recommendations, and search ranking, so the things you've told Knowmarks matter are treated as more important everywhere they show up.

Fixed

  • Items you've kept or thumbed-up are no longer flagged as stale. Once you've endorsed an item it stays protected from the "needs attention" and superseded prompts, instead of nagging you to revisit something you've already said you want.
  • Removing an item from a space now sticks. An item you took out of a space could quietly reappear the next time that space rebuilt. It stays gone.
  • Duplicate cleanup can't delete a pinned item. Automatic duplicate merging now always protects anything you've pinned, so tidying up repeats can never remove an item you've deliberately kept on your sidebar.
  • The dashboard no longer freezes while preparing your "needs attention" list. On a large library, opening the app could lock up the whole dashboard for up to a couple of minutes — every view unresponsive — while it waited on a slow step behind the scenes. That work now runs in the background, so the app stays responsive and everything else keeps working while the list loads.
  • Asking the Companion or refreshing your Brief no longer freezes the app. The same slowdown affected a few more places that wait on the AI — a Companion answer and a Brief refresh would lock up the whole dashboard until they finished. They now run in the background, so the rest of the app stays responsive while you wait.
  • A saved page with several images now shows one of them on its card. Save a page that has a set of images (a product page, say) and it no longer sits there with a blank card — the first image becomes its thumbnail across your library, the reader, and Pulse. A page's own preview image still wins when it has one.
  • The image gallery on a saved page lays out cleanly. The "images from this page" strip in the reader used to leave big gaps and strand the last image; it now flows into balanced columns. And when you click an image to zoom, the ← / → arrow keys step to the previous / next image without leaving the view.

Fixed

  • Gallery pages show their image count in the Library. A page you saved with a group of images now shows an "N images" badge in the Library list (and in search and spaces) — including the relevance-sorted cluster view — so you can tell at a glance which items carry a gallery.

Improved

  • Project suggestions now learn from what you dismiss. For a project where you've actively kept some items and dismissed others, the "relevant recent saves" and the items auto-filed into it are now ranked by how they compare to *both* your kept and your dismissed items — not just how close they look to the project's description. In practice that means far fewer near-miss suggestions: the things that look on-topic but you've already said don't belong stop coming back. Projects you haven't taught yet (too few keeps or dismissals) behave exactly as before.
  • The browser extension is updated — re-download it to get image saving. If you installed the Knowmarks extension earlier, grab the latest version from the extension download and reload it. The new build adds picking several images from a page and saving them as one page with a gallery (the dashboard already had the rest of the recent updates; the extension just needed to catch up).

Added

  • Save several images from a page — kept together as a gallery. When you pick multiple images from a page in the browser extension, they now save as one item — the page itself — with the images shown as a gallery on that page, rather than scattering into a separate entry per image. Open the page and the images appear as a grid you can click to view full-size in place. Saving more images from the same page adds them to the same gallery, and the pictures are kept so the gallery still works if the original page changes.

Improved

  • One list view everywhere, now with bulk actions. Your Library, your Spaces, and search results now share the same list: every row leads with a thumbnail, and you can select several items and act on them at once. In the Library you can multi-select to add items to a space or delete them; in a space, multi-select drives keep / remove and thumbs as before. List, grid, and mood board are still one click apart. (Previously the Library and Space lists looked and behaved differently, and the Library had no way to act on several items at once.)

Added

  • A collection that finds nothing now tells you so. When a space or collection is seeded from keywords that don't match anything you've saved yet, it explains itself — "No saved items match these keywords yet" — and offers your next move (broaden the keywords, or add items by hand) instead of dropping you on a blank page. It fills in on its own as you save matching content, and if a brand-new collection would start empty, you're asked to confirm or adjust the keywords first.
  • Jump straight to a section from the document outline. In the document reader, the outline in the side panel is now clickable — pick a heading and the page scrolls right to it. It handles repeated section titles and headings in any language, not just English.
  • Report a display problem in one click. If something renders wrong while you're reading, the reader now has a "Report a display issue" action that captures what's needed to reproduce it — the item, its type, and a snapshot of the page — and sends it with your note. You stay in control: the snapshot is clearly disclosed, you can preview exactly what will be attached, and you can uncheck it to send only the technical details.
  • See your library as a mood board. Your Library and search results now have a third view, next to list and grid: a mood board — an image-led wall that leads with each item's picture at its natural shape, so a collection of visual saves finally reads as images instead of text rows. Items without a picture keep a quiet favicon tile so nothing disappears, images load lazily as you scroll, and clicking a tile opens it in the reader. Your choice of view is remembered.
  • Make a space visual and it leads with pictures. You can now mark a space as *visual* (Display style: Visual when you create or edit it), and its page opens as a mood board — an image-led wall — instead of a text list. Your editorial spaces stay text-led as before. Each space remembers how you like to see it, and you can still switch any space between list, grid, and mood board by hand. When you're saving an image, your visual spaces move toward the top of the suggested places to put it.
  • Pick several images off a page and save them together. The browser extension has a new image mode: open it and you get a grid of the pictures on the page, already filtered to skip trackers and tiny icons. Tick the ones you want (or Select all), choose which spaces they go to, and save them in one step — each saved image keeps a link back to the page you found it on.

Improved

  • Search leans on titles and means it when you exclude a topic. Results now give extra weight to an item whose title matches your words, so a short, on-point title isn't buried under a long body. And a minus term (like -blockchain) now also drops results that are *about* that topic even when they don't contain the exact word — excluding a subject actually excludes it.
  • Add a save to your Spaces without touching the mouse. The "Add to Space" picker is now fully keyboard-operable: arrow up and down to move the highlight through the list, press Enter or Space to toggle a space on or off (toggle as many as you like — it stays open until you're done), type a new name and press Enter on the create row to make a fresh space, and press Esc to close. Focus stays inside the dialog the whole time.
  • Uploaded images get a real title, not a camera filename. Save an image whose name is just a camera, screenshot, or clipboard default — IMG_1234.jpg, Screenshot 2026-…, a pasted-image or random-looking name — and the title now describes what the picture actually shows, drawn from the text and caption the image was already read for. A name you chose yourself (like q3-revenue-chart) is always kept, and an image saved with nothing to read keeps its filename. There's also a one-time cleanup you can run to give the same treatment to images you saved earlier.

Fixed

  • Saving several images at once no longer times out or freezes the app. When you pick multiple images from a page in the extension and save them, they now save right away and fill in — picture, title, and details — in the background. A large selection can't tie up the app while it works, and it no longer stalls on slow images.

Added

  • Turn source images off for a cleaner, text-only view. Settings now has a "Show source images" toggle. Leave it on (the default) for the visual library and reader, or switch it off to hide hero images across your cards, reader, and search results — handy if you prefer a denser, text-first layout.

Added

  • Saved items now lead with their source image. Pages, articles, and repos you save show the source's own hero image by default, so your library and the reader are more visual the moment you open them.
  • GitHub repositories show their social card. When you save a GitHub repo, Knowmarks now captures the repository's social-preview image as its hero — and only ever for public repos, so a private repo's name is never exposed.
  • Exclude terms from search and collections with -term. You can now subtract keywords from any search or collection — for example vintage ring -repos keeps the jewelry results and drops code repositories. Put a minus sign in front of any word (or a content kind like -repos, -video, -pdf) to leave it out, in both the search box and a collection's keywords.
  • Titles count for more in relevance. When your search words appear in an item's title, it now ranks higher than an item that only mentions them deep in the body — so the most on-topic results rise to the top, in both search and keyword collections.

Improved

  • Empty searches suggest topics you actually have. When a search comes up empty, the suggested topics now reflect both what you searched for and what's in your library — no more bare website names — and a filter that's narrowing your results to nothing is now one click to clear.
  • Keyword collections fill up the way you'd expect. A collection seeded from keywords no longer comes back empty when you genuinely have matching saves — the matching now reliably keeps your closest items instead of occasionally cutting all of them when their scores cluster together.
  • Exact-phrase search is actually exact. Searching for a phrase now favors the words appearing together, rather than quietly treating any item that contains those words scattered apart as an exact match — precise searches stay precise, and you still get the broader keyword matches below them.

Fixed

  • Saving and editing stay reliable when things get busy. Saves, edits, and other changes now ride through brief moments of database contention automatically instead of occasionally failing.
  • Deletes and edits no longer hang in long sessions. A long-running session could previously leave the database locked, making deletes or edits stall for minutes; the app now detects that state and clears it on its own.
  • Commands that fail now say so. Import, feed-removal, and citation commands in the km tool now exit with an error when they actually fail, instead of printing the error but reporting success — so scripts and scheduled jobs can tell the difference.
  • Removing a feed by a partial name can't hit the wrong one. Removing a feed or changing its schedule now requires an unambiguous match and treats your text literally, so a partial name can never unsubscribe or reschedule a different feed.
  • Thumbs only shape the space you're in. A thumbs-up or thumbs-down now counts only for an item that's actually in that space, so your feedback never trains a space on something that isn't a member.
  • Search stays up during an embedding change. Searching no longer fails when a collection holds a mix of old and new passage embeddings — for example partway through switching embedding models — stale entries are skipped instead of stopping the search.

Fixed

  • A failed re-upload no longer pretends it worked. If you re-upload a document and the new file can't be read — missing, unsupported, or empty — Knowmarks now keeps your existing document and clearly tells you the re-upload failed, instead of silently reporting success.
  • A failed refresh can't wipe what you saved. If re-fetching or re-processing a saved item runs into a temporary failure, your already-saved content and passages stay intact — a hiccup never replaces good content with nothing, and the item never quietly disappears from your library.
  • Connecting your own AI stays safely scoped to your account. When you use your own AI assistant with Knowmarks in the hosted service, a rare hiccup opening your private library now safely refuses the request rather than risk ever touching anyone else's data.
  • Server-side folder reading is turned off in the hosted service. A handful of features that read project notes from folders on the machine running Knowmarks — scanning a directory, discovering project specs, syncing the project registry, and refreshing a project from its source file — no longer run in the hosted, multi-user service. They work exactly as before when you run Knowmarks on your own machine.
  • Deleting a conversation cleans up after itself right away. Removing a conversation now immediately clears any throwaway citations it created, instead of leaving them around until a later cleanup pass.
  • Re-saving an item can't leave it half-updated. When something is re-saved or re-processed, its passages are now swapped out all at once, so an interruption mid-update can no longer leave an item with missing passages or broken citation anchors.
  • Cleaning up duplicate Reddit links leaves your pins alone. Deduplicating Reddit links no longer adds them to your pinned sidebar — your pins stay exactly as you set them.
  • Searching with a page size of zero no longer strands you. A search request with a page size of zero (or a negative one) used to leave you stuck on the same empty page; those requests are now cleanly rejected.
  • The Companion adds observations gently, not in a burst. When the Companion looks for something worth mentioning, it now queues just one note per cycle instead of several at once, so your rail no longer fills with a flurry of observations.
  • Items you remove from a space stay removed. When you open a space, anything you've dismissed from it no longer slips back into the list — reading a space now shows only what you actually kept there.
  • Freshness signals reach your auto-grouped topics. The "this may have been superseded" and aging hints now work across the topics Knowmarks groups for you automatically, not just your pinned ones — and an item you've removed from a topic no longer triggers a false "there's a newer version" nudge for the rest of that topic.
  • Searching your saved passages handles unusual characters. A passage search containing quotes or other punctuation no longer errors out; those queries are now cleaned the same way the main search already handles them.
  • Signing in now confirms who you are before starting a session. On the hosted alpha, sign-in is tied to the identity you already verified at the door, so a session is only ever created for you — not for anyone else's account. If you're new, redeem your invite to get started.

Improved

  • Imports from your connected sources are more reliable. When you sync a connected source — Readwise, RSS feeds, GitHub stars, and others — a temporary problem with a single item no longer skips it permanently, gets stuck reprocessing it forever, or quietly drops it. Failed items are held and retried on the next sync; items that genuinely can't be read are accepted so the sync keeps moving. Recovered highlights now make it into search, too.

Added

  • Saved images now open as images. An image you drop in or upload is a first-class item now: the reader leads with the picture itself, the extracted text sits beneath it, and the image shows on its card across the Library, search, and your recent saves — not just a generic file row. (Builds on the image reading below.)
  • **Saving an image *link* now reads it too.** Previously only uploaded image files got read for their content; a saved image URL (e.g. an imgur or Reddit image link) was just a placeholder. Now the image behind the link is fetched and read the same way — searchable, with the picture shown — and it's kept with your data like an upload. (The fetch is hardened so a malicious link can't make the server reach anything it shouldn't.)
  • Images you save are now read for their content. Drop in or upload an image — a screenshot, a diagram, a quote card — and Knowmarks now extracts the text and describes what's in it, so the image becomes searchable and readable alongside everything else instead of landing as dead weight. Where an AI vision model isn't available it falls back to local text recognition, and an image it can't read is left as-is rather than stored as garbage.
  • Finish your pending saves in one click. Some saves need a real browser to pull their content — pages that only fill in after you sign in, or that build themselves with JavaScript a server-side fetch never sees. The browser extension now shows how many of your saves are waiting on a browser visit and adds a Catch up button that walks through them for you: it opens each one, captures what your browser sees, and re-saves it, so you stop revisiting pages one at a time. The first run asks your permission to read those pages; it's opt-in, asked only there, and you can take it back any time. Anything still behind a sign-in wall is flagged so you can sign in and run it again.
  • Hard-to-read pages can now be rescued with a screenshot. When a page resists normal extraction (heavily scripted, paywalled, anti-bot) and the browser extension's article capture comes back empty, saving it now sends a screenshot of what you actually saw, and Knowmarks reads the text out of that to finish the save. It only kicks in as a last resort after the cheaper paths fail, and the capture is explicit — it happens because you hit save on that page.

Improved

  • Search tells you how much it found. Results — whether in the app or through an AI assistant connected over the Knowmarks integration — now report the total number of matches and whether there are more pages, so a first page never reads as "that's everything" when it isn't. There's also an opt-in deeper-recall mode for when you want to cast the widest net rather than the most precise few.
  • Uploaded images travel with your export. Images you upload are now kept as part of your data, so they're included when you export everything and can be re-processed later — the same as your saved documents.

Fixed

  • A login or paywall screen no longer gets saved in place of the article. Some pages show a "sign in to continue", "subscribe to read", or "verify you're human" screen instead of their content. When that screen was captured for a save that was waiting on a browser visit, it used to get stored as the article and quietly disappear from your queue. Now Knowmarks recognizes those screens, turns them away, and keeps the save waiting — so once you sign in (or the page loads for real), the next capture picks up the actual content. Genuine articles that simply mention signing in or subscribing are left alone.
  • Finishing a page that was "waiting for a browser visit" now reads as done. When you re-opened a page that still needed a browser visit to finish extracting and saved it again, the extension said "Already saved" and the item stayed stuck — even though the save had actually completed the extraction. It now reports "Extraction finished" and the item clears, and the capture-queue notice reads as one panel when you expand it.
  • Opening a result in the reader no longer leaves a stray gap or a lingering selection bar. If you opened an item in the reader while you had things selected, the reader showed extra space at the bottom and the floating selection bar stayed on top of it. The reader is clean now, and your selection is still there when you go back.

Fixed

  • Saving and creating stay reliable even when a stray background connection jams the database. A recent fix made the app reclaim its write-ahead log on a schedule, but a forgotten connection (for example, an AI assistant that was connected and then went away) could still hold that log open and let it grow until writes — saving a page, creating a Space or collection — failed with a "database is locked" error. The app now notices when the log is stuck and growing, clears the stale connection that's holding it, and recovers on its own, so you shouldn't hit those intermittent failures anymore.
  • Error notifications read like sentences again, not [object Object]. When something failed — for example creating a Space while the database was briefly busy — the pop-up sometimes showed a cryptic [object Object] instead of the reason. Notifications across the app now show the real message.
  • The bulk action bar no longer covers "Load more." With items selected, the floating action bar used to sit on top of the "Load more" button, so you couldn't load the next page while a selection was active. The list now reserves room for the bar.
  • Search keeps its full quality on every item. A few items with incomplete saved data could quietly drop a search back to basic keyword-only matching for that query. Those items are now handled gracefully, so search keeps using its full hybrid ranking.

Improved

  • "New space from selection" handles a name clash gracefully. If you bulk- select items and try to create a Space whose name already exists, instead of a dead end you're now offered to add the selected items to the existing Space in one click.
  • Your place in a list survives opening an item. Run a search, load more results, select some items, open one to read, then go Back — your query, the results you'd loaded, your selection, and your scroll position are all restored instead of starting from scratch. (Delete an item while reading and the list refreshes so it doesn't reappear.)

Added

  • Report a problem without leaving the app. A new feedback option sends your note straight to the team as a tracked report, quietly attaching a little diagnostic context so issues are easier to reproduce — no screenshots or email needed. If the reporting channel is ever unavailable, it falls back to opening a pre-filled report you can submit yourself.

Fixed

  • Fixed a problem where saving or creating things could start failing after the app had been running for a long stretch. On a long-lived instance, the database's write-ahead log file could grow without bound until new writes — saving a page, creating a collection, adding a Space — began failing with a "database is locked" error. Background work now reclaims that file regularly, so the app keeps writing reliably no matter how long it has been up.
  • The keyword filter now returns keyword matches. Filtering search by keyword had been quietly falling back to semantic matches in some cases; it now matches the keyword you asked for.
  • Collections you seed with keywords pull in more of the right items. Each seed keyword is now matched on its own, so a collection built from several keywords recalls items that match any of them — not just the blended whole.
  • Adding to a Space no longer lists your connected-source Spaces. When you file an item into a Space, the picker now hides Spaces that come from a connected source (like a synced bookmarks service) — those stay up to date on their own, so they're out of the way when you're organizing by hand.
  • You can't accidentally create two Spaces with the same name anymore. Every path that makes a Space — the dashboard, the command line, and the API — now rejects a name you've already used, so duplicates don't pile up.
  • Adding an item to a Space from its header updates the side panel right away. The Space memberships shown beside an item now refresh immediately instead of waiting for a reload.
  • Creating a brand-new Space from the "Add to Space" picker no longer fails. Typing a new name and creating it on the spot could return an error when the app couldn't reach the service that suggests members for the new Space. Your Space is now created right away, and its suggested members fill in on their own once that service is reachable again.

Improved

  • The reader's item actions now live in the side rail. Add to Space, save as a note, ask about the item, re-pull it from its source, reclassify, or delete — every action for whatever you're reading is gathered in one place beside the article instead of behind a separate pop-out window, which is gone. On a phone, the same actions sit behind a "⋯" menu in the reader's top bar.
  • The reader now matches the rest of the app's palette. The article view used to sit on a warmer paper tone; it now reads on the same calm, neutral surface as everywhere else, so moving between your library and an article feels like one continuous space. Source images, favicons, and kind labels are unchanged.
  • Your Brief reads tighter. It now leads with what changed and why it matters and ends with concrete next steps, in a couple of dense paragraphs instead of a longer, looser write-up — more signal, less padding.
  • Projects you seed with keywords pull in more of the right items. Each seed keyword is now matched on its own, so a Project built from several keywords recalls items that match any of them — the same fix already in place for collections. (Creating a keyword Project from the command line now applies your keywords correctly, too.)

Fixed

  • Reddit posts and comments with special characters read cleanly again. A post or comment that contained an ampersand, an angle bracket, or an apostrophe used to show the raw code for it — "&" instead of "&", for example — when you opened the thread in the reader. Those characters now display exactly as written.
  • Search suggestions, filters, and the revoke-token button no longer break on an apostrophe. A suggested topic or filter whose name included an apostrophe (think "O'Reilly"), or an access token you'd named with one, would quietly do nothing when clicked. They now work whatever characters are in the name.
  • Saving some store and catalog pages no longer pulls in the site's menu instead of the actual content. On a handful of layouts — mostly storefronts and product catalogs — a save would grab the page's navigation bar (think "Open Menu Close Menu Home Shop") as the body, so opening it to read showed menu junk and nothing else. Now a stray "Skip to content" link at the very start is trimmed away, and a page that comes through as nothing but navigation is flagged as a poor capture so you can re-fetch it instead of it landing silently as menu text.
  • Creating a space with a name you already use now points you to the existing one instead of quietly making a duplicate. When you typed the name of a space you already had — even a suggested one or one you'd set aside, which the picker couldn't always see — it would make a second space with the same name. Now it recognizes the match (ignoring capitalization, accent spelling, and extra spaces) and selects the space you already have, so you don't end up with two spaces that look identical.
  • Links between your notes and spaces now work while you’re reading a note, not just while editing it. A [[link]] you write in a note used to come alive only in the editor — when you opened the note to read it, the link sat there dead. Now those links resolve as you read: a link that points to a real note or space lights up and takes you there on click, and a link that doesn’t match anything stays quietly inert instead of doing anything unexpected.
  • Asking your AI for a quick orientation no longer errors out. When a connected AI requested the compact overview of your collection, the request could fail and come back empty. It now returns the same orientation as the full view, including a clear duplicates count.
  • Recent saves on Home show the right icon for each kind. In the “New on the shelf” shelf, an uploaded reference or a note you wrote used to share a generic plate; now a reference leads with a book icon and a note with its note icon, while saved repositories keep their source logo.
  • A collection you create no longer disappears from your Spaces list. When a new collection looked similar to ones the system had suggested, it could get folded out of view. Collections you make by hand now always show as their own entry; only the system’s own near-duplicate suggestions get grouped.
  • Code repository READMEs read cleanly — no more stray <!-- --> markers or <br> tags. Some project pages tuck layout notes and line breaks into their README as raw markup, and they used to show through as literal <!-- LOGO --> or <br> text in the reader. Those are now cleared away, so the README reads as intended.
  • The hover actions in the Spaces list line up with each row. When you switch Spaces to the list view and hover a row, the pin / keep / dismiss buttons now sit centered in the row instead of riding high near the top edge.
  • Source images now appear for saves whose image address leaves off the "https" part. Many shopping and CDN pages give their cover image as a shortcut address that starts with // instead of the full https://. Those saves used to show no image at all, even with images turned on — now the cover picture shows up the way it does for every other source.
  • The note reader no longer shows misleading "Open original" and "Read the live page" links. A note you wrote has no external source, so those links pointed nowhere useful. They're now hidden when you open a note, while real saved web pages keep them.
  • Wide tables stay readable in the reader. A saved page or note with a table wider than the reading column used to get clipped at the edge — now it scrolls sideways within the column, so you can reach every cell on both desktop and your phone.
  • Hacker News, recipe, product, and video text renders cleanly. Some sources tucked raw formatting tags into their text, and they used to show through as literal <p> or <br> clutter. Comment threads, recipe ingredients and steps, product descriptions, and video descriptions now render as proper paragraphs, links, and lists.
  • PDFs now read cleanly — special characters like < and & no longer show up as raw codes. Some saved PDFs and documents were showing things like &lt; and &amp; in the middle of sentences instead of the real < and &. The reader now displays the actual characters, so passages like "kernel width k < n" read the way they were written.
  • Notes-list previews read as plain text. The short preview under each note title no longer shows raw markdown, link brackets, or [[wikilink]] syntax — it's a clean one-line excerpt. (Opening the note still shows it fully formatted, as before.)
  • Ask answers format correctly. Answers from Ask now show real bold text and proper line breaks instead of leaking literal asterisks, and a proactive note from your companion renders cleanly rather than showing stray formatting.
  • The reader's "share" link copies reliably. Copying a link from a thread or conversation page now works even when the source address contains an apostrophe.
  • Uploaded PDFs no longer show <!-- image --> clutter. When the extractor couldn't pull in a picture from a PDF, it left a placeholder that showed up as raw <!-- image --> text scattered through the page. Those placeholders are now removed, so the document reads cleanly start to finish.
  • Long document filenames no longer overflow the details panel. An uploaded file with a long, opaque name used to spill its filename across the labels next to it in the reader's details panel — the name now wraps neatly in its own column.
  • Re-pulling a page from its source gives an honest status. The action used to flash a contradictory "Re-fetch complete — pending"; it now says the re-pull has started and updates in the background, which is what actually happens.
  • Code repos land in the "repository" filter, not "products" or "tools". A GitHub or GitLab repo whose README reads like a product or app was sometimes filed under products or tools. Saved repos now consistently classify as repositories, and the ones already mis-filed have been corrected.

Added

  • Create a new space right from “Add to Space.” When you’re adding an item to a space and the one you want doesn’t exist yet, type its name and pick “Create …” — it makes the space, checks it, and adds your item when you hit Done, without leaving the picker.
  • Filter your Library down to documents. A new "documents" filter joins the kind filters above your Library, so one click narrows the view to everything you've uploaded — PDFs, Word docs, slide decks, and the like.
  • Browse a space or collection as cards, not just a list. Open any space or collection and switch between the dense list and a card grid with the toggle next to the sort control — handy when a collection of products, recipes, or repos is worth seeing by its images. Your choice is remembered.

Improved

  • You can create a new space from every "Add to Space" picker. Whether you're adding a saved item, choosing spaces for a note you're still writing, bulk-adding from a search, or importing links from a collection, typing a name that doesn't exist yet now offers to create it on the spot — no detour to the Spaces screen first. If a space by that name already exists, it's selected for you instead of erroring out.
  • Keep and Dismiss lead the way on a suggested space. When you open a space the system suggested, Keep and Dismiss now sit right in the header as buttons instead of hiding in the “⋯” menu — the decision a suggested space is asking for is one click away. Once you keep it, it drops out of your suggested list.
  • The “Add items” search is clearer. Searching to add items to a space now shows a “Searching…” cue while it works, hides items already in the space so every result is something you can actually add, and surfaces more matches.
  • Creating a collection drops you into it. After you name a new collection, it opens right away instead of leaving you on the previous screen.
  • Notes and uploaded files are easier to spot in your Library. A note you wrote now carries a distinct note icon and a clear "KM Note" label, and an uploaded file reads as "USER DOCUMENT" instead of the vague word "upload" — so a quick scan of a list tells you what each item is.
  • The document reader's header is cleaner. An uploaded document now shows its title at the same size as every other reader page, and the page count and format moved out of the top bar — they already sit in the details panel beside it — so the header no longer feels crowded.
  • Saved AI chats are clearer. A saved ChatGPT or Claude conversation now reads as "AI chat" (with its own chat icon) everywhere it appears — in your Library list, on cards, and as a one-click filter — instead of the vaguer "conversation".
  • Saved AI chats read like the original chat. When you open a saved AI chat, your messages now sit in bubbles on the right and the assistant's replies run down the left, the way the conversation looked where you had it — so it's easy to follow who said what.
  • File uploads show a progress bar. When you drop a document to save it, its card now fills a progress bar as the file uploads — so a large PDF on a slow connection shows real movement and a percentage instead of sitting silently on "Uploading…".

Added

  • Spaces pick a fitting icon on their own. When you create a Space — or tap "Suggest icon" on one — Knowmarks reads its name and topic and chooses a matching icon for you (a finance Space gets coins, a travel Space gets a ticket, a design Space gets a palette). It also offers a handful of close alternatives right there, so you can swap to a different one in a single click. You can still pick any icon by hand whenever you like.

Improved

  • The icon picker searches by meaning, and every icon shows up. Search now matches what an icon is *for*, not just its name — type "delete" and the trash icon appears, "buy" finds the cart. And any icon you choose now renders correctly everywhere it's shown; a few used to come up blank once picked.
  • Your Profile speaks to more than engineers. The example prompts under Professional Focus, Expertise Areas, and Learning Goals now span research, writing, analysis, and product work instead of assuming you write software.

Fixed

  • "Auto-Generate from Collection" now fills in your profile, or tells you why it can't. When you tap it, Knowmarks reads your collection and writes a draft straight into the Professional Focus, Expertise, Learning, and About fields — it no longer claims success while leaving everything blank. If it can't run, you get a clear reason instead of one vague message: when you have too few saves it tells you how many more you need, when your profile already has content it asks you to clear a field first, and when your LLM is unreachable it points you to Settings.
  • Hacker News discussions now read cleanly in the reader. Comments and posts that came in from older Hacker News saves used to show stray markup like <p> and <i> mixed into the text. They now render as proper prose — paragraphs break where they should, links and emphasis come through, and the tags are gone.
  • Search now reliably surfaces items that match your query strongly. When a result was the best match by meaning but didn't share the exact keywords — or the other way around — a flood of near-miss keyword hits could push it out of your results entirely. The strongest match in either direction now always shows up, so the most relevant item no longer goes missing.

Added

  • Save your private AI chats — not just shared links. The browser extension can now capture a ChatGPT or Claude conversation you're signed into and save the *actual* back-and-forth, laid out as a clean threaded chat in the reader and tagged with the model that wrote it. Until now only public share links worked; saving a private chat captured just the sign-in wall. Keep talking and save again — it updates the same item in place, appending the new turns instead of piling up duplicates. The personal-context layer a chat carries — your custom instructions, the system setup — is never captured.

Improved

  • Saves from the extension carry more of what a page knows about itself. Saving from the extension now reads the fully-rendered page — picking up the lead image, author, and date, and the page's own type — so a save from a signed-in or app-style site lands with the right look and a cover image even where a plain fetch would have come back thin.
  • The reader feels like part of the app, not a separate room. The reading view used to stand apart as its own warm-toned panel; now it shares the same surface tone as the sidebar and the rest of the dashboard, keeping just a faint warmth so it still reads as a calm place to read. Links inside an article now pick up the same accent color you see everywhere else. Works in both light and dark.

Added

  • Your saves now show the picture the page already advertises about itself. Most pages carry an image meant for link previews — an article's lead photo, a video's poster frame, a product shot. Knowmarks now keeps that image and shows it: as a thumbnail on cards and list rows, on the recent shelf, and as a full hero across the top of the reader. Pages without a usable image simply stay text-only, the way they were. Older saves get their image filled in over the next little while; everything you save from here on picks one up automatically.
  • Saved AI chats now read as the conversation, not a sign-in wall. When you save a shared ChatGPT conversation, Knowmarks pulls in the actual back-and-forth — your prompts and the assistant's answers — and lays it out as a clean threaded chat in the reader, tagged with the model that wrote it. Until now a shared chat link saved only the "Log in to see this" placeholder the page shows a logged-out visitor; now you get the exchange you actually had. The behind-the-scenes parts the share page itself hides — system instructions, tool steps, raw reasoning — stay hidden here too, so it reads the way it did when you had it.

Improved

  • The reader opens like a feature spread now — for every kind of save. A hero image sits across the top whether you're reading an article, a repo, a PDF, a video, or a thread.
  • Videos play right where you're reading. Click the poster and the video plays inline instead of bouncing you out to YouTube. Transcript and chapter timestamps jump the inline player to that moment rather than reopening the source in a new tab — and if a player ever can't load, the timestamp still opens the video at the right spot as before.
  • Small editorial flourishes in your Brief. The section ornaments now carry the house dusty-purple accent.

Fixed

  • Search no longer gets thrown off by a misfiring query helper. Before running a search, Knowmarks quietly expands your query with a few related terms to widen recall. On a meaningful slice of searches that step was silently producing empty or half-finished output and feeding it into the results — nudging the right item down the list or out of view. It now uses a steadier model with enough room to finish, and any expansion that comes back empty or cut off is discarded so your original search runs cleanly instead. You should notice expected items holding their place near the top more often.

Improved

  • Search finds more of what you meant. Three fixes to how queries are run: searches with punctuation in them — C++, C#, Node.js, anything with quotes or parentheses — used to quietly return nothing because of a query-syntax error; they now return real results. Multi-word searches no longer come up empty just because one of the words is rare. Short queries and acronyms like Go, AI, and ML are no longer dropped on the floor. And when an item's title is exactly what you typed, it now ranks at the top where you'd expect it. (The underlying ranking weights are unchanged — these are recall and precision fixes, not a re-tuning.)
  • km doctor tells worker-idle from worker-stuck at a glance. The Enrichment Health breakdown used to lump everything still being processed into one "awaiting flush" number. It now separates items waiting in the queue from items actively in flight (2 awaiting flush · 5 in flight), so when something's backed up you can see whether the worker is idle or stuck without dropping into the raw details.
  • Saved-product prices now read as money. When you open a saved product in the reader, the price shows with its currency symbol — $9.32 instead of the raw usd 9.32 some sites publish. Common currencies (USD, EUR, GBP, JPY) render as their symbol; anything else shows the currency code in capitals.
  • Library cards are cleaner and easier to read at a glance. Each card in the grid used to wear a raw "markdown" tag that competed with the title and meant nothing to a reader, a loud freshness badge, and several clusters of small print fighting for the footer. The bottom line is now a quiet pair of bookends: the source's little site mark leads on the left, the kind of thing it is shows as a small icon on the right (a repository, an article, a note, a document), and between them sits just the source and a plain "saved 3d ago" — no shouting word for the kind, no green badge. A small note appears only when a source is actually going stale, so a healthy card stays calm; the exact save date is on hover if you want it. Hovering a card shows its actions in a small panel anchored to the corner — they no longer overlap the title, spill onto the card next to it, or make the card feel like it jumps.
  • "Freshness" now reads in plain words instead of a mystery percentage. Saved items used to wear a bare "73% vitality" tag — a number with no explanation of what it measured or whether you should do anything about it. You now see a word that tells you the state of the source at a glance: Fresh ("still looks alive and current"), Aging ("still here, but it's been a while — worth a fresh look"), Likely stale ("may have moved on since you saved it"), or Looks gone ("we couldn't reach it the last time we checked"). The reader, your Library rows, the item detail panel, the Issues list, and km stale all read the same way, with the meaning spelled out right there. The raw number is still available on hover if you want it.
  • Saved pages now read their own structured data more reliably — author, date, and what the page actually is. Most modern sites publish a machine-readable description of themselves, but they wrap it in a structure Knowmarks wasn't unwrapping, so it often missed the author, publish date, and the page's real type and fell back to coarser guesses. It now unwraps that structure, and when a page describes itself as a recipe, a product, a video, an article, and so on, Knowmarks reads the *content* type instead of getting distracted by the site's navigation breadcrumbs. You'll see more accurate details on saved items, and it's the groundwork for showing each kind of thing the way it deserves.
  • Forum posts and videos now open in the right reader. A discussion or social post you saved from somewhere off the beaten path used to open as a plain article — no threaded comments, no conversation. Saved videos hosted outside the usual places had the same problem. Knowmarks now reads the structure a page publishes about itself, so those items open in the threaded reader or the video reader as you'd expect, without anyone having to teach it about each site one at a time. Posts and videos that already opened correctly are unchanged.
  • The reader stays quiet when a source loaded fine. A saved item used to wear a green "✓ verified source" badge just for having loaded successfully — which was nearly every item, so the badge told you nothing, and "verified" claimed more than it meant. The reader now only marks a source when there's something to know: a partial extract still flags when we couldn't capture the whole page, and a source that's drifted or gone is still surfaced the same way as everywhere else. When everything's fine, the header just shows the source, type, and date — no badge. ("Verified" now stays reserved for a citation that has actually been re-checked against its source.)
  • The marginalia in Notes & Queries now mixes its voice. The leading notes prefer different kinds of observation rather than stacking two of the same flavour, so the box reads as a varied margin rather than one note repeated.
  • "New on the Shelf" now leads with variety. After a burst of saves from one source — a bulk import, or a run of stars from a single site — the shelf used to open with a stack of near-identical cards. Now it caps any single site to two cards at the top and brings whatever other sources you saved up front, so the first thing you see is the span of what you've collected. The section still fills out: once the variety leads, the remaining slots fill with your next-most-recent saves, even when they're from the same site, so the shelf never looks half-empty on a one-source week. "Receipts" gets a stricter version of the same treatment: each highlight comes from a different source, so the picks always span your reading instead of stacking on whichever site you saved most.

Fixed

  • Asking Ask to do something open-ended no longer throws a raw error. When you asked the Ask tab to generate something from scratch — turn a transcript into a tutorial, draft a summary in your own words — the answer came back fine, but the "Save as note" button beneath it could fail with a cryptic error code because there were no saved items behind that kind of answer. The answer now renders cleanly and the Save-as-note button works regardless of whether the reply points at items in your collection. And if anything else goes wrong while answering, you now get a plain "Something went wrong answering that — try again, or for open-ended generation ask in your connected AI" instead of a developer error message.
  • PDFs you open now show a real title and read as properly formatted text. A saved PDF used to open under the wrong heading — often a date line lifted from the top of the page, or the raw file name — and its body arrived as one unbroken wall of text with the title, byline, and every paragraph run together. The reader now picks the document's actual title (and falls back to a tidied-up file name only when there genuinely isn't one), drops the running headers and page-number footers that were leaking into the body, and keeps the headings and paragraph breaks so the document reads the way it was written. A mangled opening word from a decorative drop-cap letter is repaired too. Saved items now carry the meaningful title in your Library and search, and PDFs you saved earlier pick up the same treatment the next time their content is refreshed.
  • The Brief's links now apply to the Brief you're already looking at, and stay correct over time. The link fix below used to only take effect the next time a Brief was written from scratch — your current Brief stayed as it was. Links are now worked out fresh each time the Brief is shown, so the improvement reaches the Brief on your screen right away, and a link keeps pointing at the right place even after you rename or remove the item it mentions.
  • The Brief now links the saved items it mentions, not just some of them. When the Brief named one of your saves, the name often wasn't clickable — especially repos and titles with hyphens. The write-up was quietly retyping those hyphens as a slightly different dash character, so the link-matcher no longer recognised the title and left it as plain text. Titles are now matched forgivingly (dash and spacing variants count as the same), so the references in the Brief reliably become links straight into the reader. On a recent Brief this took it from 2 working links to 6.
  • The open questions in Notes & Queries now read as complete thoughts instead of trailing off mid-sentence. A longer open question used to get cut off partway through, with no way to read the rest. Now each one is kept to a single, complete sentence when it's written, and the front page gives it enough room to land whole — so the question states itself and stops, rather than fading out behind an ellipsis.
  • Notes & Queries on the front page no longer repeats the same open question three times. When the system had several near-identical takes on one topic, all of them used to crowd into the box and read as broken. Now near-duplicate open questions collapse to a single representative before the box is filled, so you see distinct topics rather than the same thing reworded. The duplicates also stop re-accumulating at the source: a second open question in an area you're already tracking is recognised as a repeat and skipped.
  • Old, stale open questions now retire on their own. Open questions that sit untouched for over a month — nothing you saved ever spoke to them — used to linger on the front page indefinitely, so the marginalia could show questions raised six weeks ago. They now expire quietly once they go a month without a match, and the retirement runs on every refresh rather than waiting on background work that could stall — so the front page stays current on its own.
  • Background upkeep that quietly stalled now recovers on its own. If one of the routines that keeps your collection current — refreshing stale items, retiring old open questions, generating the Companion's notes — ever crashed partway through, it could get stuck and silently stop running, with nothing to tell you it had gone quiet. Knowmarks now notices a routine that's been stuck too long, clears it, and lets it start again on the next pass, so the front page and your governance signals keep moving without needing a restart.

Added

  • Code blocks in the reader now read like code. Open a README or a paper with embedded code and each fenced block gets proper treatment: the language is highlighted in the warm reading palette (it stays right in both light and dark), the language name sits quietly in the block's top corner, and a Copy button appears when you hover so you can lift a snippet in one click. Long lines scroll sideways inside the block on desktop so the reading column never stretches, and wrap on a phone where there's no room to scroll.
  • Receipts on the front page now show their verification state. When a source in the Brief's Receipts footer is backed by your saved citations, the entry carries a quiet mark beneath the domain: a filled green dot with VERIFIED when the cited passages still anchor cleanly, a yellow dot with DRIFTED when the source has changed under a citation. The marks only appear when real citations exist against the source — nothing is invented — and they reflect the current verification state each time you open Home, not the state when the Brief was written.

Improved

  • Issues, Trash, and Conversations now match the rest of the app. These three pages were the last still wearing the old card shapes. Now they read like Library and Search: the title leads, a quiet line explains what you're looking at, and the contents are the same dense rows you see everywhere else.
  • On Issues, each thing needing a decision — a failed extraction, a detected list, stale content, a near-duplicate — is now a single calm row with its status and a short why/what-next, instead of a heavy card. Each section keeps its own quiet Acknowledge / Retry / Delete actions, and the page still disappears from the sidebar entirely when nothing needs you.
  • Trash now opens like a filtered view of your Library, with a link back to it up top. Dead links are listed as rows showing why each failed; hover one to Restore it (queued for a fresh fetch) or delete it for good. Select several to restore or remove them together, or empty the whole trash from the top.
  • Conversations is now one clean list of your past Companion threads — newest activity first, with a filter box and a New chat button. Click a thread to pick it back up; hover to delete one. The old cards/table toggle is gone, in favor of a single readable list.
  • Loading placeholders now match what loads. While a page fetches, you see a quiet preview of its real shape — the Library and Search show a screenful of the same dense rows that arrive, Spaces shows space cards, Settings shows its cards under the real tabs, and Home shimmers in its own front-page register (masthead rules, headline, columns). No more flash of one layout swapping into another when the data lands. Notes and space pages, which used to sit on stale content while loading, now show the same honest preview.

Improved

  • Search results got the design pass — the last page in the set. Your query now leads the page as the title, with an honest line underneath: how many results, searched how ("hybrid search across everything saved"), and what you've filtered to. While the quick keyword pass paints first, the line says so — "running the semantic pass…" — until full results land.
  • Results are the same dense rows as the Library: source mark, title, a snippet that opens with how the item matched ("Semantic · …", "Keyword · …"), and the type, domain, and saved date in a quiet column on the right. The filter pills above — All, semantic, keyword, plus your content types with counts — double as the legend.
  • Paging through results is gone. The footer now tells you the truth — "Showing 30 of 32" — and Load more appends to the same list, so your selection survives as you go deeper.
  • Selecting results works like the rest of the app now: hover a row to reveal its checkbox, shift-click to select a range. The selection bar floats above the page with one Add to space picker — every space in one list, with New space from selection on top — replacing the old separate Project and Collection buttons.
  • Searches with no matches say so plainly, with related topics from your collection one click away.

Fixed

  • Opening an item from the front page now fills in the reader's Context rail. Before, clicking an item link on Home or in the Brief took you to the reader with the right rail missing entirely — the item's source, spaces, and metadata only showed up if you'd arrived from the Library. The rail now appears with the item's details no matter how you got there: Home, Brief, Library, search, or pasting a link directly.
  • Saving a Reddit thread no longer stores junk when Reddit blocks the usual data feed. Before, a blocked save could silently come through as a list of collapsed comment headers — usernames and point counts with no actual post or comments. The fallback now reads the full post body and comment thread directly from the page, and if an extraction still comes back as comment-header chrome with no real text, the save is marked failed so a retry can pick it up instead of keeping the junk.
  • The reader now shows which spaces an item belongs to. Open anything in the reader and the Context rail lists the spaces it's a member of, alongside its source and details — it had a place for this all along but was never filling it in.
  • Items that finished saving but never got a summary now heal themselves. Occasionally something would save cleanly — a PDF you uploaded, an article that came through fine — and then sit in your Library with no one-line synopsis underneath it, usually because the summarizer was briefly unreachable or the save was interrupted at the wrong moment. A quiet background pass now notices these and fills in the missing summary from the text already saved, so it shows up on its own without you having to do anything. For an uploaded file, this works even after the original file is long gone — it summarizes from the copy already stored, rather than trying (and failing) to re-read a file that no longer exists.

Improved

  • Settings got the design pass, on both tabs. The page now opens like every other page — title first, a quiet line underneath about what lives here — with the General / Connections tabs right below. General's cards are calmer and more consistent: sentence-case card titles, one short hint per card, and matching fields and buttons throughout. Your MCP endpoint sits in its own copyable box with a Copy endpoint button.
  • The Connections tab is now one grid of small cards — services and RSS feeds together, each with its source logo, name, and a single line of sync status (when it last synced, how often, how many items). Paused or stale connections show their status in a warm tone so they stand out without shouting. Every card has a sync-now button; RSS feeds reveal edit / pause / unsubscribe on hover.
  • Adding sources is one row of buttons under "Add a connection" — including a new RSS feed button that opens the subscribe form only when you want it. One-time browser imports (Chrome, Safari, Firefox) moved into their own clearly-labeled row.
  • The Connections subtitle now tells you how the pipeline is doing at a glance: "Six connections feeding the library · all healthy" — or how many are paused or stale when they are.

Improved

  • Notes got the design pass. The page is now a proper list — your notes as full-width rows with a title, a preview line, and the review cadence on the right ("Review in 12d", warming to "Review due" when it's time) over the edited date. One New note button up top, sort by recently edited / created / title, honest "Showing X of Y" once you have more than a pageful. Opening a note now gives the editor the whole page — same back- and-forth as reading anything else in your library — instead of squeezing it next to a second notes list. Search your notes from ⌘K.

Added

  • The reader's ⋯ menu gained Delete from library — the same confirmed, permanent delete you have on Library rows, now available while you're reading the thing you've decided not to keep. It returns you to wherever you came from.
  • Space pages now make triage legible. Suggested items wear a small warm "suggested" mark in the right-hand column — kept items stay unmarked, so the marks read as your to-triage backlog at a glance. Next to the Items heading, counted filters (All · suggested · kept) turn the list into a worklist: filter to suggested, thumbs your way through, and the counts tick down as you go. The filters only appear when a space actually has both kinds.

Added

  • You can now add items to a space right from its page: the new Add items button opens a quick search over your library, and one click drops a result into the space — the list and count update immediately.
  • Space pages now reach everything: large spaces load 100 items at a time, the footer counts honestly ("Showing 100 of 312"), and Load more keeps going until the whole space is on screen. Before, anything past the first 50 items was silently unreachable.
  • Thumbs up / thumbs down are back on suggested items, and they do what they say: thumbs up keeps the item in the space, thumbs down removes it and stops it being re-suggested. Both quietly train the space's sense of what belongs — and three thumbs-up makes the space keep itself.

Improved

  • Space pages got the same design treatment as the Library. The space's name leads in the reading face with its icon and kind tag beside it (suggested spaces keep their warm tone), and a quiet line underneath carries the item count plus where a synced space comes from. The item list is now the same dense two-line rows as the Library — source logo, title, summary, type and date on the right — instead of a spreadsheet-style table, and hovering a row reveals its actions (keep, open original, remove). Management actions (edit, suggest icon, keep, dismiss, delete) tucked into a single ⋯ menu up top, next to pin. Selecting items for bulk actions still works — hover a row and tick the checkbox that appears.
  • Spaces marked as kept now wear a small green Kept tag wherever they appear, so lifecycle protection reads at a glance.
  • Item descriptions on space pages get two lines instead of one, sort menus show a proper dropdown carat again, and the item count no longer appears twice in a row on the page.

Improved

  • The Spaces page got the same design treatment as the Library. The title now leads the page, with one New space button up top (it offers both kinds — a Project anchored to a goal, or a keyword-seeded Collection). Filters became counted pills below the title — All, projects, collections, suggested, connections — and switching them is instant. Each space card leads with its icon and name, carries its item count large and light in the corner, and wears a small uppercase tag for its kind — suggested spaces get a distinct warm tone so you can tell at a glance what the system proposed versus what you made. Pinned spaces show their pin right on the card.
  • The "Filter spaces…" text box is gone from the Spaces page — ⌘K reaches any space by name faster, and the filter pills cover browsing by kind.

Added

  • A new Library page in the sidebar — everything you've saved, browsable and filterable in one place. The content-type pills and sort options scope it, and Trash now lives here as a filter (the button at the top right) rather than taking up its own spot in the sidebar.
  • The Library got its full design the same day: a dense list where every item is two tidy lines — source logo, title, a one-line summary, and the type icon · site · date on the right (the type icons match the filter pills above, so the pills double as the key) — a screenful shows about twice as many items as before. Hovering a row reveals quick actions: thumbs up or down ("more/less like this" — it tunes what the system surfaces for you), add to a space, and open the original. GitHub items now wear the real GitHub mark, and items without a site icon get a small lettered tile instead, so rows always line up.
  • The Library now reaches everything: the footer shows "Showing 100 of 7,698" honestly, and Load more keeps going until you've seen it all — filters included in the count.

Improved

  • Card view (the grid toggle in the Library) now uses the same clean typeface as the rest of the working views, and cards in a row line up at equal heights.
  • Items imported through Readwise, Raindrop, and the other connectors now show the website's own icon instead of the import service's logo — an article is identified by where it's from, not how it arrived.
  • The reader's back button now says where it will actually take you — "Back to Library", "Back to Spaces" — instead of always "Back to Pulse".
  • The assistant rail starts closed. Opening an item still reveals its Context panel while you read, but heading back to a list closes it again — the rail only stays open when you opened it yourself.
  • Row actions are honest verbs now: add to a space, open the original, or delete — the thumbs buttons are gone from the Library (preference feedback belongs on suggestions, where it actually steers something).

Improved

  • The sidebar now reads in five words: Home, Library, Spaces, Notes, Settings. Pulse is now Home — same front page, clearer name. Connections moved inside Settings (a tab at the top, next to General). Issues only appears when something actually needs your attention, and disappears when nothing does. Old links keep working — /trash and /connectors take you to the right place.
  • The sidebar sits closer to the page: the dividing line between the sidebar and your content is gone (the subtle color shift carries the boundary), and the item you're on now glows with a soft accent tint instead of a gray bar.
  • Keyboard navigation grew with the rename: press G then H for Home, G then L for Library (S and N still go to Spaces and Notes; G-P still works if your fingers learned it as Pulse).
  • Searching for an icon (when editing a space) now searches the full 1,600+ icon library from the first keystroke — no more "load full library" detour when the suggested set doesn't have what you need.
  • The sidebar's bottom corner is tidier. Theme switching is now its own "Theme" row above Issues (click it to flip between light and dark), with Settings below them. The little line at the very bottom is just the search hint and the version number now — no more icons squeezed between them.
  • Home is now a clean edition, edge to edge. The assistant rail no longer appears on the front page — everything it offered there already lives on the page itself (your Brief is the lead story, observations have their own department). To ask a question from Home, open the command palette (⌘K) and type your question. Reading views keep the rail exactly as before, with your conversation intact.

Added

  • Connect your AI. Knowmarks now has a personal MCP endpoint you can paste into ChatGPT, Claude.ai, Claude Code, or Cursor — ask about your knowledge from the AI you already use, and every answer draws on your collection. A new "Connect your AI" card at the top of Settings shows your endpoint URL, step-by-step setup for each client, and a connection indicator that lights up once your AI has called in. Your Access Token (the same kind the browser extension uses) is the key — create one in Settings and paste it where the steps say.

Fixed

  • The sidebar no longer grows a scrollbar when you have lots of pinned spaces. Your pinned list scrolls on its own now, so the main navigation and the bottom entries (Theme, Issues, Settings, Trash) always stay put and visible.
  • Clicking "Retry" on the Ledger's awaiting-enrichment entry now responds: the entry shows "Retrying…" the moment you click, then tells you how many items restarted (with a small confirmation message). Before, the click worked but gave you no sign anything happened.
  • Code blocks in the reader render cleanly again — commands sit on consecutive lines instead of being spread apart, and the stray underlines and bracket-shaped marks around each line are gone.
  • Italic captions in GitHub READMEs now render as italics instead of showing raw <em> tags around the text.
  • Author names with apostrophes or other special characters now display correctly in the reader byline (previously you might see codes like &#x27; instead of the apostrophe). New saves store the clean name, and items you've already saved render correctly too.

Improved

  • Home is now a front page. Your dashboard opens as today's edition — a masthead with the date and edition number, your Brief as the lead story with a drop cap and pull quotes, recent saves set as a "New on the shelf" department, observations under "Notes & Queries," and housekeeping condensed into a single quiet ledger line. No more cards and banners — the page reads top to bottom like something written for you.
  • Reading got a magazine treatment. Articles, repos, videos, PDFs, and threads open as a feature spread: a serif title, a wider warm reading column, and source marks (little favicons) wherever a source is named. The context panel beside your reading now shares the same warm palette, so the whole item view feels like one surface.
  • The top bar is gone on desktop. Search lives in ⌘K, and feedback, notifications, and your account moved to the bottom of the sidebar — your content starts at the top of the window. (Mobile keeps its header.)
  • Both themes were designed for this, not inverted: dark reads like lamplight, light reads like warm paper.

Added

  • You can now export your entire library as a single archive from Settings. One click on "Export Everything" packages every save, space, note, citation, and automation rule into a zip of plain markdown and JSON files — open it in any file browser and your stuff is right there, readable. Your original uploaded files (PDFs and documents) come along too.
  • The archive is round-trippable: bring it into any Knowmarks instance with km import knowmarks <archive> and everything is restored — already-present items are skipped, so importing twice is safe. km export <path> does the same export from the command line.

Fixed

  • Item titles mentioned in your Brief are links again, and they open the in-app reader. The Brief's narrative had stopped linking the saves it talks about entirely — titles rendered as plain text; they now link straight to the same reader page the rest of the dashboard uses, and you can middle-click or open them in a new tab.
  • Bold emphasis in the Brief narrative now renders properly instead of showing literal asterisks around item names.

Added

  • Press ⌘K (Ctrl+K on Windows and Linux) anywhere in the dashboard to open the new command palette — one box that does three things. Type a few characters to search your saves and hit Enter to open the best match. Type > to run a command: create a note, save a link, import bookmarks, ask the Companion something, or jump to any screen. Paste a link and the palette offers to save it, with a Space picker right there so the save lands where you want it. It works on every screen, and the "Search or run…" row at the top of the sidebar opens it with a click or a tap — no keyboard shortcut needed.
  • A few quiet accelerators came along with the palette: press / to open it, paste a copied link on any screen (⌘V) to save it without opening anything first, and use two-key jumps — G then P for Pulse, G then S for Spaces, G then N for Notes.
  • Opening a saved item now takes you to a full reader view instead of a small pop-over. You get a clean reading layout tuned to what the item is: articles read like articles, GitHub repos show their README with stars and activity, YouTube videos surface chapters and a timestamped transcript, documents get an outline, and Reddit threads read as a conversation. The original page is still one click away from the reader's toolbar.
  • The right side of the dashboard is now one rail with two tabs: Context and Companion. While you're reading an item, the Context tab shows what it is — its source, the spaces it belongs to, its structure, and its details — and the Companion is one tab flip away. On list and home views the rail stays Companion-only. The rail still collapses to a thin strip, still toggles with ], and still remembers your choice.
  • The Companion now knows what you're reading. Flip to its tab while an item is open and you'll see a quiet "About this page" line with the item's title — ask "what's the key claim here?" and it answers about that page directly, no pasting or explaining needed. It's still one ongoing conversation: move to another item and keep talking.

Fixed

  • Tables in saved pages render as actual tables now — header row, aligned columns, clean row lines — instead of a wall of pipe characters. You'll notice it most on GitHub READMEs with command or feature tables.
  • Some older saved GitHub repos showed their README as a wall of plain text with the links stripped out. Cause: repos saved during big imports could exhaust GitHub's anonymous API limit and fall back to a lossy text extraction. Saving now uses your GitHub connector's token (much higher limit), the fallback keeps links and formatting, and the affected saves were re-fetched with their formatting restored.
  • Saved pages render their formatting properly in the reader: italic captions no longer show stray underscores, section headings underlined with dashes display as real headings instead of literal dash runs, quoted passages render as proper quote blocks (GitHub-style NOTE and CAUTION callouts get a labeled treatment), divider lines display as rules, and bare web addresses in the text are now clickable.
  • The forks and open-issues icons on repo pages render now (they were silently missing from the icon set, along with nine others across the app — all restored, with a test that keeps the set complete).
  • GitHub READMEs that open with raw HTML taglines no longer leak code fragments like </a> into the reading view — the text stays, the markup goes.
  • The source card no longer claims an item is "103% vitality" — scores cap at 100% everywhere, and existing items were healed automatically.
  • Reddit posts whose body was removed on Reddit now show a quiet "post body removed" note instead of the raw [removed] token, and pages that publish placeholder author names (like "Fallback-author") no longer show them in the byline.

Improved

  • GitHub repos in the reader match the design frame: the owner sits in a small line above the title with the GitHub mark (instead of a plain "github.com" chip), the big title is just the repo name, and the rail's Source card shows the same mark + owner/repo identity. README images referenced by relative paths now load instead of showing a broken-image placeholder.
  • The empty strip across the top of the content area is gone on desktop — your content starts at the top of the window now. In the reader, the Back row is the top bar, lined up with the rail's tabs, and the Back button says where it's taking you ("Back to Pulse", "Back to Spaces"). On phones nothing changes: the top bar stays, since it holds the menu and search.
  • The light/dark theme switch moved from that strip to the bottom of the sidebar, next to the version number — and it's in the ⌘K palette too ("Toggle light/dark theme"). The old sparkles button is gone: it predated the rail's Context · Companion tabs, which (along with the ] shortcut) are how you open the Companion now.
  • Reddit threads in the reader now show more of what you'd see on Reddit itself: when the post went up, the real total comment count (not just the comments captured with your save), the "% upvoted" ratio, and — on each comment — when it was written plus the commenter's flair. New saves pick these up automatically; already-saved threads fill in the next time the metadata backfill sweep runs.
  • The search bar at the top of the screen is gone on desktop — the palette replaces it. Everything the bar did still works and is faster to reach: searching and saving live in ⌘K (or the sidebar's "Search or run…" row), and your reading area gets the vertical space back. The theme and Companion-rail buttons stay in the top corner where they were. On phones and small windows nothing changes: the visible search bar stays, since there's no ⌘ key to lean on there.
  • The reading column in the reader got wider: item details moved out of an inline side panel and into the rail's Context tab, so the content gets the full width of the screen while the details stay one glance away.
  • READMEs and other markdown-heavy saves render cleanly in the reader: badge rows and leftover HTML scaffolding are filtered out, and images embedded in the content display as real images instead of raw markup.
  • The previous quick-view panel still appears where it makes sense — in Companion chat, duplicate review, and other in-flow checks — so those workflows keep their action buttons close at hand.
  • Your existing library got the reader treatment too: saved YouTube videos picked up their duration, chapters, and timestamped transcripts, and saved Reddit threads now read as real conversations with authors and scores — not just for new saves.
  • When a page can't be extracted cleanly (heavy scripts, login walls), Knowmarks no longer quietly gives up. It retries with progressively stronger extraction, and when only a real browser will do, the home screen shows which saves need a quick browser visit to finish — the browser extension capture completes them.
  • Health checks in km doctor now also cover stored page snapshots and the extraction retry pipeline, so you can see at a glance whether anything is stuck.

Fixed

  • Opening an item now opens the rail's Context tab even if you'd collapsed the rail earlier — your item's details were invisible until you manually expanded it. Collapsing still works; the rail just reopens when you start reading something new.
  • Documents look the way they should in the reader: the file name and page count moved into the reader's slim top bar, and the content starts right below it instead of after a stretch of empty space.
  • The item controls are back while you read: a new "**" menu in the reader's top bar carries add to a space, save as note, ask Companion, re-fetch content, reclassify, and a quick-view escape hatch to the full legacy panel. (They had been reachable only through ⌘K or the old pop-over since the reader took over.)
  • Reddit threads in the reader now show who posted (u/name), the post score, an OP badge on the author's own comments, and a "Voices" list in the rail — the top contributors in the saved conversation. The Back button got its arrow back, too.

Added

  • The Settings → Diagnostics card now shows Envelope Conformance, Document Extraction, and Telemetry — the Response Envelope Contract guards, Docling readiness + model-cache state, and Sentry/PostHog wiring that were previously only visible via km doctor. The dashboard finally has the full set of integrity checks the CLI does.
  • km doctor gains a new Radar Rules section reporting the RSSHub discovery-rules cache (domain count, size, freshness). The cache file has lived on disk for cycles, but only the JSON diagnostics endpoint surfaced it — now km doctor does too.

Added

  • The Settings → Diagnostics card now shows Spaces Integrity, Citations Integrity, and Notes Integrity alongside the existing sections. These checks have been in km doctor for a while; the dashboard finally has them too, so you can spot a missing note file, a citation pointing at a removed passage, or a Space-substrate drift without dropping to the terminal.
  • The Settings → Diagnostics card also picks up Pipeline Integrity, Onboarding Integrity, and Companion Integrity — the reconciler / inference-queue snapshot, the welcome-flow wiring guard, and the Companion §2.0g surface check that were previously only visible via km doctor.

Improved

  • km doctor and the Settings → Diagnostics card now report cause-tagged reasons when an enrichment job fails — you can tell at a glance whether a stuck save is waiting on a different model, needs a fetch retry, or is hitting a configuration problem, instead of seeing a generic "error" row.
  • The Settings → Diagnostics card runs the embedding and LLM reachability probes in parallel and reuses a single connection across them, so the panel loads faster when a provider is slow to respond. Each probe now has an explicit connect / read timeout split, so a slow redirect chain can't block the whole card.
  • The "Review due" row in Notes Integrity now renders the overdue count in yellow in km doctor again (it had briefly been showing as literal [yellow]…[/yellow] debug text — a rendering escape introduced during the doctor refactor and caught in the chunk-3 review).
  • Citations with the durable retention class that have drifted or broken are now treated as workflow signal, not a problem — the Settings → Diagnostics card no longer paints the Citations Integrity card yellow just because a re-verify pass is overdue. External health checks polling the dashboard JSON for extras.citations_integrity.status no longer flap on naturally aging citations.

Fixed

  • Citations Integrity no longer reports fake-clean zero counts when the citations table is missing from the database — it now surfaces a single "Check skipped: citations table not present" row so the schema gap is obvious instead of hidden.
  • Notes Integrity stops false-flagging files like mynote.md.md as orphans. Backup tools that append .md to filenames, or a Finder hide-extension save-as mistake, no longer turn the section red.

Fixed

  • A misconfigured LLM_BASE_URL (empty, or pointing at an obviously wrong host) no longer takes down the entire Diagnostics card. Each section reports its own outcome independently, so one bad provider can't blank the rest of the panel.

Added

  • The Knowmarks iOS app now syncs your saved links in the background. Anything you share from your iPhone reaches Knowmarks on its own once your server is reachable — you no longer have to reopen the app to flush the queue. Background sync is best-effort by design (iOS decides when to grant background time), so opening the app still triggers an immediate sync if you don't want to wait.

Added

  • Notes now have an optional review cadence. Set a review: field in the note's .md frontmatter — 90d, 6mo, 1y, or never — and Knowmarks surfaces the note in stale items when it's overdue. New notes default to 90 days; existing notes start at no cadence so nothing in your library gets flagged retroactively. Use km note review <id-or-slug> to mark a note reviewed without touching its body (the lifecycle counterpart to km save for URLs).
  • Documents (PDFs, Office files, anything you uploaded) can now be re-uploaded in place. km ingest <path> --replace <knowmark-id> (or the optional replace_knowmark_id field on the upload form) keeps the Knowmark id, preserves Space membership, re-extracts content, and re-verifies every citation pointing at the document. The revision counter on the document ticks up so you can see how many times you've refreshed it.
  • PDF citations now show the page number when the source PDF reports one. The "Anchor" line on km cite open and the MCP cite_open response read · Page N after the surrounding context, and the stored selectors carry W3C PageSelector + BoundingBoxSelector alongside the existing TextQuoteSelector and TextPositionSelector.
  • The Companion gained two proactive observation kinds. Note review due surfaces your top two or three notes overdue against their cadence; Document aged surfaces your top two or three uploaded documents whose publication date is older than the aged-document threshold (3 years by default, configurable via KNOWMARKS_AGED_DOCUMENT_YEARS).

Improved

  • Stale items now treat notes, URLs, and documents on their own terms. Notes are governed by review cadence, URLs by HTTP vitality, and documents by publication date — a note isn't flagged stale just for being old, and a PDF isn't run through a URL-vitality probe.
  • Editing a note re-runs every citation against its body through the existing four-state model. Quote anchors that still resolve stay valid; ones that don't drift to drifted cleanly, so a citation you made yesterday doesn't go silently wrong after you fix a typo.
  • Every saved item — link, note, or document — now runs through the same post-create enrichment pipeline (auto-summary, auto-connections, cluster refresh, curated-collection refresh, project-inbox routing, knowledge-gap check, rules). Notes pick up the same enrichment URLs have always had; the rules engine gained a kind condition so you can target rules at links, notes, or documents specifically.
  • Deleting a note from the dashboard, the API, or the MCP now also removes its .md file from disk in lockstep — no orphaned files left behind.

Fixed

  • Brief refreshes now track narrative retry and failure states more clearly, so Pulse can keep showing the last good narrative while making temporary summary generation problems easier to understand.

Fixed

  • Pulse now keeps the last successful narrative visible when a Brief refresh hits a transient LLM/provider failure, while making clear that the structured signals are current and the narrative will catch up on a later pass.

Fixed

  • Setlist-synced Projects now keep their visible metadata and recommendation context current when Setlist changes, including older local Projects that match Setlist by path, while preserving fields that were edited directly in Knowmarks after the last import.
  • Suggested Spaces no longer duplicate when overlapping cluster rebuilds are triggered close together.

Fixed

  • Projects, Spaces, Collections, and pinned Space lists now sort names case-insensitively, so lowercase names appear in the main alphabetical order instead of being separated from uppercase names.

Added

  • Dashboard URL saves can now optionally route the saved link into multiple selected Spaces or Projects at save time.
  • Chrome extension saves now show the same optional multi-select Space routing control, so a browser-toolbar save can land in the right Project, Collection, Suggested Space, or Connection while saving.
  • Settings now includes hosted-alpha client setup links under Access Tokens, with downloadable Chrome extension and Claude Desktop extension packages that use the alpha API URL and the tester's own Access Token.

Fixed

  • What Knowmarks Noticed cards now use current Brief support signals instead of repeating evergreen filler or echoing the Brief headline.

Added

  • Chrome extension saves can now send browser-captured Selection or Article text as source content, keeping user notes separate while making Medium, Reddit, X/Twitter, paywalled, logged-in, verification-wall, and JavaScript-heavy pages more reliably searchable.
  • iPhone share-sheet saves can now include selected or shared page text as source content when iOS provides it, while keeping the user's own note separate from captured text.
  • Stale GitHub Stars and Reddit saves in Issues can now use Unfavorite + Delete to remove selected links from Knowmarks while also queuing source-side cleanup, such as unstarring GitHub repos or unsaving Reddit posts.

Improved

  • Browser-captured extension saves now skip slow server-side extraction when the extension already has readable page text, and the popup reports a timeout instead of staying on Saving... indefinitely.
  • Extraction issues now explain why Knowmarks may not have readable content and what to try next, with cards sized more like the Stale Content list.
  • Firecrawl extraction now uses longer browser-render timeouts, lighter scrape options, rendered-HTML fallback, and clearer failure reasons when browser extraction still cannot produce readable content.
  • Extraction Issues now recommend Chrome extension browser capture for sites that likely need the user's rendered browser session, such as blocked, paywalled, verification, or empty browser-extraction pages.
  • Bulk unfavorite cleanup now removes selected rows from Issues immediately, keeps source cleanup running in small background batches, and shows progress at the top of the Issues page instead of making rejected rows reappear.
  • Pulse Recently Added cards now use cleaner text-first titles without repeated bookmark icons.

Fixed

  • iPhone settings now allow local/private Knowmarks servers to pass connection testing without an access token when the local API is running without API-key auth, while hosted alpha still requires token validation.
  • iPhone sync now coalesces overlapping foreground, network-restore, and manual retry triggers so the same pending share is not sent to the server more than once.
  • Stale Content now filters cached issue rows against the live Knowmarks row state, so items hidden for pending source cleanup do not reappear while Huey keeps trying to unstar or unsave them.
  • Source cleanup status now tracks older scheduled cleanup jobs and surfaces specific provider reasons, such as GitHub token permission issues, instead of collapsing them into a generic connector-credentials message.
  • Browser extension saves with meaningful captured content now heal older partial extraction rows instead of leaving them in Extraction Issues with a stale browser-capture recommendation.
  • Pulse now keeps Sources, Worth Opening First, and What Knowmarks Noticed in sync with the latest Brief, avoiding duplicate source picks and stale noticed cards after a refresh.

Added

  • Search result multi-select can now create a new Collection from the selected items, not just add items to an existing Collection.
  • Search now supports pruning terms with NOT:term or -term, plus Keyword and Semantic filter chips for narrowing result types.

Improved

  • AI-generated item summaries now lead with the saved item’s specific value instead of generic openers like “This GitHub repository,” making search results easier to scan.
  • The search multi-select Collection/Project picker now behaves like a normal menu: pressing Escape or clicking outside closes it without clearing the current selection.
  • Search result selections now persist while moving to the next or previous result page, so bulk actions can span more than one visible page.
  • Added an in-app Search operators reference so testers can see the available query syntax without leaving the dashboard.
  • Search relevance now gives more weight to exact and adjacent multi-word phrases while discounting broad corpus-wide terms, reducing noise for queries like “AI writing skills.”
  • Removed the old “All clusters” toolbar menu so search filters are limited to controls that clearly affect the current search results.

Fixed

  • The detail panel's Add to Space picker now uses the current Spaces labels and includes Connection spaces, instead of showing older Project/Topical/ Curated-only options.

Added

  • Added selectable table-style rows for Space detail views, making it easier to scan and act on grouped items.
  • Added clearer search result match labels so semantic matches and keyword matches are easier to understand at a glance.
  • Added Gmail-style search operators such as type:, format:, source:, space:, site:, after:, and before: so searches can be narrowed directly from the search box.
  • Added keyboard-friendly operator menus for bounded fields like type, format, source, and Space.
  • Added a running changelog so new features, improvements, and fixes have one durable place to land.
  • Added a marketing-site changelog page that publishes the tester-facing entries from this markdown file.

Improved

  • Search results now use the compact selectable table pattern, with tighter match pills and less visual clutter.
  • Detail pages now separate AI summaries, your own notes, captured source text, and related items more clearly.
  • Related-item "why" explanations are tighter and easier to scan.
  • Pulse, curated Spaces, and MCP tools got a round of polish so assistant-facing views line up better with the app.
  • Marketing screenshots behave better across smaller screens.
  • Updated the alpha weekly email workflow to point at this changelog when preparing tester updates.
  • GitHub Stars sync is now lighter during scheduled checks: recent stars can be picked up frequently while existing repo vitality is refreshed separately.
  • Stale content review now understands GitHub repo maintenance signals such as archived repos and long gaps since the last push.

Fixed

  • Permanent deletes now ask for confirmation in the frontend before removing items.
  • Sidebar pinning is now limited to Spaces and Notes, so ordinary saves no longer expose misleading pin controls.
  • Search match labels and pills were cleaned up after the table migration.

Added

  • Added a hosted alpha app tour to help new testers understand the shape of the product before they start saving.
  • Refreshed the alpha marketing site with current screenshots and clearer alpha positioning.

Improved

  • Cleaned up hosted alpha onboarding so setup points testers toward the right hosted flow instead of local/self-hosted assumptions.
  • Updated alpha docs and marketing copy for more accurate setup, privacy, and deployment language.
  • Prepared the alpha API and Space icon behavior for the hosted tester environment.

Fixed

  • Fixed the alpha worker healthcheck so the hosted worker reports health more reliably.
  • Fixed a Huey dispatcher issue that could break Sentry reporting for queued jobs.

Added

  • Added Knowmarks MCP Apps views so assistant clients can open richer Pulse and app-style surfaces.
  • Added an embedding bakeoff workflow, including redacted search-log evaluation export and a synthetic smoke run.
  • Added a dedicated LLM lane for Space title generation.

Improved

  • Matched the MCP Pulse app to the current Pulse view and removed duplicated brief prose.
  • Polished alpha frontend interactions, including content action wording and view-mode consistency.
  • Clarified Space membership and pin behavior across the app and APIs.
  • Improved markdown extraction and repair tooling for backfilled content.

Fixed

  • Fixed MCP Apps hydration in Claude Desktop.
  • Suppressed typo-driven query-gap noise so the app is less likely to overreact to simple misspellings.
  • Handled duplicate passage chunks during content processing.

Improved

  • Scheduled connector and governance refreshes now move through the Huey worker path more consistently.
  • Local Huey queue runtime behavior is more resilient during development and alpha operations.
  • GitHub connector failures now report more safely when an upstream request fails.

Fixed

  • Reduced noisy retry behavior for scheduled connector jobs.
  • Fixed command output wrapping for Huey dry-run commands.

Added

  • Added the Huey-backed job queue foundation for background Brief, connector, and governance work.
  • Added a combined local command that starts both the web app and worker for normal local use.
  • Added the LLM lane bakeoff harness and OpenRouter presets used to compare Brief, Pulse, and structured-output models.

Improved

  • Hardened Pulse brief generation and tightened the editorial layout.
  • Normalized search match explanations so keyword matches read more consistently.
  • Improved local server database handling to avoid WAL checkpoint stalls.

Fixed

  • Fixed intermittent dashboard search latency.
  • Fixed project dropdown line height.
  • Fixed CI failures around WAL handling and voice-guide changes.