This week brought major expansions to Notra's platform: we released a public Chats API, launched a structured 3-step onboarding flow, added database persistence for chat sessions, and made integration logs fully searchable. We also extracted the chat system into a shared package so both the dashboard and API use the same core, and landed several quality-of-life fixes that make the platform easier to work with.
Highlights
Public Chats API
The new Chats API lets you access Notra's AI chat from any client. Four routes cover the essentials: list chats, get a specific chat with its message history, start a new conversation with streaming, and post follow-up messages. The API returns chat IDs via response headers and works seamlessly with Upstash workflow streaming for real-time delivery. #319
3-step structured onboarding
New users now walk through workspace setup, social account connection, and pricing in sequence instead of hitting a paywall upfront. The flow lets you configure your brand identity and import tweets into Notra's reference database before committing to a plan. #310
Logs page gets search and filters
The integration activity feed now supports search by title or error message, filtering by source (GitHub, Linear, Webhook, etc.), and status (Success, Failed, Pending). Filter state lives in the URL so you can share filtered views directly. #316
Chat sessions backed by PostgreSQL
Chat histories now persist in a dedicated database table instead of living only in Redis. The system handles concurrent deletes safely and streams persist correctly even if the chat gets deleted mid-request. #306 (commit: bdd16b12)
CLI auth at the dashboard
A new /dashboard page lets you authorize the Notra CLI for a specific organization in three steps: pick an org, click authorize, and scan for the Unkey API key via a simple polling flow. Keys are scoped to the org and last 90 days. [commit: 492a6c56]
More Updates
Features & Enhancements
- Chat backend extracted into @notra/ai #318 - The chat history, schemas, constants, and streaming logic moved into the shared package so both dashboard and API reuse the same code with no duplication. (Author: @mezotv)
- Chat made available to everyone commit: 4e31cafb - Dropped the ai-chat-experiment feature flag so all users can access the chat interface from the sidebar and content editor.
- Scope chat attachments to organization #306 - Chat uploads now require an active org and live under organization-specific storage paths. The auto-delete retention setting was removed entirely in favor of org-scoped management.
- Allow editing owner and repo after rename #315 - GitHub integrations now support editing owner/repo names in the dialog when a repository gets renamed on GitHub. The system validates the new pair and rejects duplicates. (Author: @mezotv)
- Prevent chat skeleton flash on URL sync commit: 9563f264 - Fixed a timing issue where switching between chats would briefly show a loading state before the UI hydrated.
- Preserve attachments when editing chat messages commit: 0ce457d4 - Editing or retrying a message now keeps image and PDF attachments instead of stripping them.
Performance Improvements
- Collapse chat history in browser back stack commit: a559085e - Switching between chats no longer pushes every intermediate URL onto the history stack, so the back button returns to the dashboard instead of walking through prior conversations.
- Unblock onboarding by deferring brand analysis commit: 3c4ee1e6 - The onboarding flow creates the brand identity row synchronously so the next page can read it, while Redis and QStash work happens in the background via next/server after().
- Debounce log search to reduce Redis hits #316 - Log search input now debounces at 150ms to avoid firing a Redis fetch on every keystroke.
Website & Documentation
- SEO fixes across robots, sitemap, and structured data #312 - Unblocked Googlebot from crawling JS chunks, added stable lastModified dates, created a real /features HTML page, fixed heading hierarchy, and added Product/Offer/BreadcrumbList JSON-LD to /pricing.
- Blog posts now emit Article and FAQ JSON-LD #311 - Blog posts include Article schema with author/publisher/dates and about entities derived from H2 headings. Posts with an FAQ section also emit FAQPage schema for better AI tool extraction.
- Add RSS 2.0 feed for blog commit: 64840aed - Readers can now subscribe to new blog posts via RSS with autodiscovery support.
- Docs restructuring and navigation overhaul commit: 5d0b379a - Reorganized API/SDK tab into API Reference, added Guides group, rewrote overview as a full welcome page with how-it-works and feature sections, added quickstart guide.
Bug Fixes
- Refresh credits on workspace switch commit: d655a009 - Switching organizations now immediately updates the credits display.
- Fix responsive topbar for tablet and mobile commit: 098f9661 - Feedback and Book a Call collapse into an overflow menu on narrow screens, Credits moves into the same dropdown below small screens.
- Focus chat input on typing #308 - The chat input now auto-focuses when you start typing, improving the user experience for quick interactions.
- Improve command palette chat navigation #307 - Fixed command palette keybindings for switching between chats.
Internal Changes
- Remove em dashes from all docs commit: 56bedbee - Cleaned up documentation files to remove em dashes for consistency.
- Promote contributors page and update partner logos #309 - Updated testimonials, replaced Consent with Inth logo, improved contributors grid UI.
- Canonicalize site URL to www.usenotra.com commit: 1776de87 - Enforced www prefix across RSS feeds and redirects for consistent canonical handling.
- Track footer summarize-with-ai button clicks commit: 7c3ebcef - Added Databuddy event tracking for AI summary button clicks (ChatGPT, Perplexity, Claude, Gemini).