Readme

Technical documentation for developers and power users.

Ultrathink

Cloud-based knowledge capture and organization system.

Components

  • Browser Extension - Capture URLs, text, screenshots from any page
  • Web App - React frontend at https://tryultrathink.com
  • Desktop Widget - Electron app for quick captures (Windows/Mac)

Quick Start

  1. Install extension from Chrome Web Store (or load unpacked from ultrathink-extension/)
  2. Visit https://tryultrathink.com and sign up
  3. Go to Settings → Generate Device Key
  4. Right-click extension → Options → Paste device key

Features

  • One-click capture with auto-save timer (3 seconds)
  • Smart type detection (AI chats, Office docs, videos, etc.)
  • AI-powered summarization and classification
  • Kanban board for task management
  • Work Plan canvas for visual planning
  • AI Canvas for multi-modal AI prompts

Architecture

┌─────────────────────────────────────────────────────────────┐
│                      Firebase Project                        │
│                    ultrathink-50f7f                          │
├─────────────────────────────────────────────────────────────┤
│  Firestore         Cloud Functions       Firebase Hosting   │
│  ├─ entries        ├─ saveEntry          React App          │
│  ├─ users          ├─ processEntry       ultrathink.web.app │
│  ├─ deviceKeys     ├─ searchKB                              │
│  └─ workplanState  └─ aiCanvasCompose                       │
└─────────────────────────────────────────────────────────────┘
         ▲                    ▲                    ▲
         │                    │                    │
    ┌────┴────┐          ┌────┴────┐          ┌────┴────┐
    │ Chrome  │          │ Electron │          │  React  │
    │Extension│          │  Widget  │          │   App   │
    └─────────┘          └──────────┘          └─────────┘

Development

| Component | Location | Tech Stack | |-----------|----------|------------| | Extension | ultrathink-extension/ | Vanilla JS, Manifest V3 | | Web App | kb-viewer-react/ | React 19, Vite, Firebase, Tailwind | | Widget | ultrathink-electron/ | Electron 28, React 18, TipTap |

Local Development

# Web App
cd kb-viewer-react
npm install
npm run dev

# Electron Widget
cd ultrathink-electron
npm install
npm run build    # Build the app
npm run dev      # Run in development mode (with DevTools)

# Extension
# Load unpacked in chrome://extensions
# Point to ultrathink-extension/ folder

Electron Widget

The desktop widget allows quick capture of notes, files, screenshots, and audio.

Core Features (Working):

  • Drop files (PDF, Word, images, etc.) → auto-upload to Firebase
  • Auto-save with 3-second countdown
  • Expanded mode (380x480) for longer notes with rich text formatting
  • Always-on-top desktop presence
  • Device key authentication (same as extension)
  • Screenshot capture (click for region, double-click for full screen)
  • Mic/system audio recording

Development:

cd ultrathink-electron
npm install          # Install dependencies
npm run build        # Build TypeScript + bundle
npm run dev          # Start with DevTools attached

Production Build:

npm run build        # Creates dist/main/ and dist/renderer/

Widget requires device key - get it from Settings in the web app.

File Structure

ultrathink/
├── ultrathink-extension/     # Chrome/Edge extension
│   ├── manifest.json         # Extension config (MV3)
│   ├── background.js         # Service worker
│   ├── popup.html/js         # Capture popup
│   ├── options.html/js       # Settings (device key)
│   └── firebase-config.js    # Cloud save functions
├── kb-viewer-react/          # React web app
│   ├── src/                  # React source
│   ├── functions/            # Cloud Functions
│   └── firebase.json         # Firebase config
└── ultrathink-electron/      # Desktop widget
    ├── src/main/             # Electron main process
    └── src/renderer/         # React UI

Deployment

# Web App
cd kb-viewer-react
npm run build
firebase deploy --only hosting
# URL: https://tryultrathink.com

# Firestore Rules
firebase deploy --only firestore:rules

# Cloud Functions (from Google Cloud Shell)
firebase deploy --only functions --project ultrathink-50f7f
# URL: https://saveentry-kvfxttwv6a-uc.a.run.app

# Extension
# Reload in chrome://extensions after changes

Claude Code SEO Skills

Custom /seo command for keyword research, Google indexing, and blog synopsis generation.

# Research keywords for a topic
/seo keyword personal knowledge management

# Submit URL to Google for indexing
/seo gi https://tryultrathink.com/blog/second-brain-apps

# Auto-detect latest blog post and submit
/seo gi

# Generate blog synopsis with competitor research
/seo synop "personal knowledge management"

| Sub-command | Description | |-------------|-------------| | /seo keyword <topic> | DataForSEO API - volume, competition, CPC, difficulty | | /seo gi [url] | Google Indexing API - submit for crawling | | /seo synop <keyword> | Competitor research + blog outline → /content/blog/drafts/ |

Setup: Skill file at ~/.claude/commands/seo.md. Requires DataForSEO account and Google Cloud auth with indexing scope.

Security & Multi-Org

Data Isolation

  • Between organizations: Complete isolation via Firestore security rules. Org A cannot access any data from Org B.
  • Within organizations: Private by default. Users can optionally share entries with their org.
  • Entry visibility: private (default) or org (shared with organization members)

Encryption

UltraThink uses server-side encryption (same model as Asana, Notion, Slack):

| Layer | Protection | Handled By | |-------|------------|------------| | At rest | AES-256 encryption | Firestore (automatic) | | In transit | TLS 1.2+ | Firebase (automatic) |

This protects against physical theft, unauthorized infrastructure access, and network interception while allowing full AI functionality on the server.

Organization Features

  • Org-shared entries: Toggle visibility in entry detail panel
  • AI search: Includes both personal and org-shared entries
  • AI processing: Relationships/similarity consider org-shared entries
  • Member management: Invite codes, role hierarchy (owner > admin > member)

Firestore Collections

entries/{entryId}           - Knowledge base entries
                              Fields: userId, orgId, visibility ('private'|'org')
workplanState/{userId}      - Work Plan canvas state per user
deviceKeys/{keyId}          - Device keys for extension/widget auth
prompts/{promptKey}         - Master AI prompts
users/{userId}              - User profiles (includes orgId)
  /data/topics              - User's topics list
  /data/people              - User's people list
  /prompts/{promptKey}      - User's custom prompts
  /kanbanColumns/{colId}    - User's kanban columns
organizations/{orgId}       - Organizations
  /members/{memberId}       - Org membership
invites/{inviteCode}        - Invite codes for signup

Content Types

The extension auto-detects these content types:

| Type | Description | Example URLs | |------|-------------|--------------| | link | Standard web pages | Any URL | | screenshot | Captured images | Ctrl+Shift+5 | | snippet | Selected text | Highlighted text | | chatgpt, claude, perplexity | AI conversations | chat.openai.com, claude.ai | | ms-word, ms-excel, ms-powerpoint | Office documents | SharePoint, OneDrive | | notion | Notion pages | notion.so | | video | Video content | YouTube, Vimeo | | audio | Audio recordings | Widget mic capture |

Keyboard Shortcuts

  • Ctrl+Shift+4 (Mac: Cmd+Shift+4) - Open capture popup
  • Ctrl+Shift+5 (Mac: Cmd+Shift+5) - Screenshot capture

Screenshot Capture Notes

The screenshot feature uses chrome.action.openPopup() which requires Chrome 127+. If screenshots aren't working:

  1. Check Chrome version - Must be Chrome 127 or later
  2. Focus matters - Must be focused on a browser tab (not DevTools or extension pages)
  3. Reload extension - After any code changes, reload in chrome://extensions
  4. Check shortcuts - Verify mapping in chrome://extensions/shortcuts

Technical details:

  • chrome.action.openPopup() only works in Chrome 127+ for all extensions (Chrome docs)
  • Earlier versions (118-126) required policy-installed extensions
  • The API returns undefined on success (not an error)

Version History

Major Releases

  • v3.58.5 - Frontend polish: add ErrorBoundary, extract shared useDocSearch hook, remove firebase-admin from frontend deps, delete stale DetailPanel backup.
  • v3.58.4 - Data integrity: validate invite code in Firestore rules for org join, block useCount increment on revoked invites, add Storage rules for user-uploads path with size/type restrictions, fix user deletion to clean up all subcollections, invites, and Storage files.
  • v3.58.3 - AI pipeline fixes: wrap classification in try/catch, use Promise.allSettled for prompts, add title step and retry button to AIProgressPanel, fix reprocessEntry to use Cloud Function.
  • v3.58.2 - Security hardening: disable hardcoded agent key endpoint, fail-closed rate limiters, restrict CORS to known origins, add auth to textCorrection and recordAuthSuccess, fix spelling correction for paid users via planHelper.
  • v3.58.1 - Fix user profile overwrite bug: use merge write in fetchUserProfile fallback to prevent wiping orgId, role, and createdAt when Firestore read transiently fails.
  • v3.58.0 - Web App Quick Capture: Add slide-in panel from right edge for capturing content directly in the web app. Features include mic recording (getUserMedia), screen capture (getDisplayMedia), file drag-and-drop, paste images (Ctrl+V), entry type selection (note/link/idea), and 3-second auto-save countdown.
  • v3.57.2 - iPhone Quick Capture: Use white background for media preview, add dedicated paste screen (works better on iOS).
  • v3.57.1 - iPhone Quick Capture: Redesign menu with modern UI (duotone icons, descriptions, gradient audio button), fix Firebase undefined field error on text/paste saves, fix drawing canvas passive event listener warnings.
  • v3.57.0 - Fix AI documentation search for authenticated users (accept Firebase Auth token as alternative to reCAPTCHA). Fix DocSource type mismatch. Add 110+ documentation pages covering all features, platforms, integrations, security, organizations, and use cases.
  • v3.56.1 - Admin Users: Redesign action buttons (icon-only delete/block, grouped grant buttons), remove redundant Close button. Improve error logging in deleteUser function.
  • v3.56.0 - Improve Core Web Vitals (FCP/LCP): Split public/protected routes to avoid blocking on settings, preload critical fonts, add loading skeleton.
  • v3.55.1 - Hide completed/overdue stats in Kanban toolbar on iPad (use 2xl breakpoint instead of xl).
  • v3.55.0 - Add comprehensive documentation suite: public docs pages (/docs, /docs/:slug) with AI-powered search, in-app help panel with Ask/Browse/Use Cases tabs, use case taxonomy for scenario-based discovery.
  • v3.54.1 - Apply SEO fixes to 26 blog posts: add images, generate FAQs, optimize meta descriptions, add internal links. Fix OpenAI strict mode JSON schema in HowTo detection.
  • v3.54.0 - Add password reset functionality to login page. Users can request a password reset email via "Forgot password?" link.
  • v3.53.0 - Add external REST API for AI tool integrations (ChatGPT, Claude, custom). Device keys now support API access toggle, permissions (read/write), and descriptions. Pro feature with OpenAPI spec for easy integration.
  • v3.52.5 - Add auto-correct for titles, notes, and comments (fixes typos, spelling, grammar). Restyle toast messages to be more subtle.
  • v3.52.4 - Fix slow "sort cards by due date" - run updates in parallel instead of sequentially.
  • v3.52.2 - Clean up detail panel header: remove separator line, streamline badges and task/project controls flow.
  • v3.52.1 - AI processing UI now subtle footer at bottom of detail panel (removed collapsible section and background).
  • v3.52.0 - Add AI titles settings UI in Detail Panel settings. Extend AI title generation to support screenshots and images (uses aiSummary as content source).
  • v3.51.9 - PageSpeed SEO optimizations: Convert images to WebP (98% smaller), add lazy loading, implement route code splitting, preload fonts, add ARIA labels.
  • v3.51.8 - Restore AIProgressPanel in detail view (was disconnected during refactor).
  • v3.51.7 - Add system prompt for AI summarization. Update image prompt to simpler format with description field.
  • v3.51.6 - Add admin function to fix invalid lastActiveAt dates (one-off migration). Button on Users admin page.
  • v3.51.5 - Expand quick search to include URL and people fields in AllEntries and Tasks (Kanban) views.
  • v3.51.4 - Add whitespace between settings menu section headers for better visual separation.
  • v3.51.3 - Fix "Invalid Date" display for last active date on admin users page when date value exists but is invalid.
  • v3.51.2 - Fix search input typing lag by adding 150ms debounce. Add search bar to Kanban view with quick filter and AI search support (matching grid view functionality).
  • v3.51.1 - Add markdown formatting to item comments (bold, italic, bullets, numbered lists, inline code). Fix extension popup.html missing utils/ path prefix.
  • v3.51.0 - Workplan interaction refactor: Extract useCanvasInteraction hook (handles panning, dragging, resizing, drawing, lasso selection, zoom). WorkplanCanvas reduced from 557 to 210 lines.
  • v3.50.0 - Workplan hooks extraction: Extract useSyncStarredEntries and useAutoSaveWorkplan hooks from WorkplanCanvas component (reduces component size by ~65 lines). Fix unused imports in workplanStore.ts that were causing build failures. New hooks.ts file in workplan feature folder.
  • v3.49.0 - Workplan code refactoring: Extract grid positioning utilities (eliminated 130+ lines of duplicated code), add missing constants (GRID_CANVAS_WIDTH, CONNECTOR_NODE_OFFSET, DUPLICATE_ID_PREFIX), fix memory leak in wheel event listener, add useMemo for visible entries filtering, extract resetInteractionState function (DRY fix), mode toggle factory in toolbar, fix hardcoded connector color.
  • v3.48.0 - Workplan major update: Lasso selection tool to select multiple cards and move them together, blurred background overlay when detail panel is open. Pen thickness options (S/M/L), highlighter tool that draws over cards, improved board tab drag-and-drop with smooth animations and drag handles. Fix card menu appearing off-screen when near bottom of viewport.
  • v3.46.0 - Workplan duplicate detection: prompt when adding items already on other boards. Kanban due date improvements: 4-tier colored borders (today/1-2 days/3-5 days/5+ days) only shown when Overdue filter active, "Due today" text shows in green, overdue text shows "Was due X days ago".
  • v3.45.0 - Kanban UX improvements: Left-align toolbar filters, add Status filter dropdown, enhanced column modal with 20 colors + picker + emoji icons, reset columns confirmation modal that moves tasks to Not started, remove Work/Personal category from kanban.
  • v3.44.5 - Add "Sort by date" button to kanban toolbar to reset card order by due date.
  • v3.44.4 - Fix kanban column drag-and-drop when "hide completed" is enabled.
  • v3.44.3 - Add kanban column width setting (narrow, medium, wide). Medium is 30% wider than previous default.
  • v3.44.1 - SEO batch fix optimization: Skip regenerating internal links and external links if content already contains them. Reduces processing time and prevents duplicate link insertion.
  • v3.44.0 - Detail panel display improvements: New EmailCard, ChatCard, and ProfileCard components for better display of Outlook emails, AI conversations (ChatGPT, Claude, Perplexity), and social profiles (LinkedIn, X, GitHub). New prompt architecture with type-specific prompts for each content type. Section behaviour changes: Screenshot and Conversation sections now open by default, Page Info defaults to closed and hidden for Notion entries.
  • v3.43.5 - Decouple task status from kanban column dropdown in detail panel.
  • v3.43.4 - Fix blog related posts not scrolling to top when navigating to new post.
  • v3.43.3 - Add "show no due date" filter to Tasks view (kanban and list). Filter button uses CalendarBlank icon, defaults to off.
  • v3.43.2 - Kanban board titles now always display on one line (no wrapping), allowing boards to be wider as needed.
  • v3.43.1 - Fix entry update race condition: Replace polling with Firestore real-time subscription in useEntries hook. Eliminates stale data overwriting updates caused by Firestore replication lag during polling.
  • v3.43.0 - Profile capture feature: Auto-detect and extract profile data from LinkedIn, Twitter/X, GitHub, and generic profile pages. Extracts name, title, company, bio, and profile photo. New Profile section in Detail Panel displays extracted profile info with photo. Profile type auto-detected from URL patterns (linkedin.com/in/, x.com/, github.com/).
  • v3.42.0 - Work Plan duplicate cards: Add "Duplicate" option in card menu to create workplan-only copies of cards that don't appear in grid view. Duplicates show a small icon in bottom-left corner. Fixed connector line double-click deletion by expanding SVG hit area. Fixed sticky notes not being editable when no cards on board (empty state overlay was blocking pointer events).
  • v3.41.17 - Fix starred items not appearing on first board: Use first board's hideCompleted setting when syncing newly starred entries, instead of active board's setting.
  • v3.41.16 - Fix Edge scroll bug: Move overscroll-behavior: none from html, body to #root to fix mouse wheel/trackpad scrolling in Microsoft Edge.
  • v3.41.15 - Admin delete user also deletes Firebase Auth: Added Cloud Function adminDeleteAuthUser to properly delete Firebase Auth user records when admin deletes a user, preventing orphaned Auth accounts.
  • v3.41.14 - Fix alternating row colors and page refresh: Row colors now follow visual sort order (not original data index), page refresh no longer redirects to homepage (routes wait for settings to load before rendering).
  • v3.41.10 - Fix entry update race condition: Use useIsMutating to pause polling during mutations, preventing stale poll responses from overwriting cache after successful updates.
  • v3.41.9 - Lighter emergency edit deploy workflow: New GitHub Actions workflow for emergency blog edits that skips widget downloads (~2 min faster). Full deploy workflow now excludes emergency edit commits.
  • v3.41.8 - Fix Kanban due date race condition: Cancel pending query refetches during mutations to prevent stale data from overwriting optimistic updates. Adds proper onMutate/onSettled handlers to useUpdateEntry hook.
  • v3.41.7 - Google Index status tracking: Add googleIndex submission status to SEO checklist widget (shows submission date), workflow now fails if Google Index submission fails (instead of warning), cleaned up unused blog images.
  • v3.41.6 - SEO workflow fixes: Fix broken image extension in PKM post, add image validation to prevent race conditions with compression, increase seo-fix timeout to 8 minutes, GitHub Actions continues on per-file errors, deployed Firebase function with 9-min timeout.
  • v3.41.5 - Blog image unification: Hero image now uses 16:9 aspect ratio, image compression center-crops to 1200x675, simple 3-line blog template format supported (keyword, image, -, content).
  • v3.41.1 - Work Plan board improvements: Cards always added to first board, left/right arrows on cards to move between boards, unstarring removes from any board. Toolbar reorganized with add buttons centered and view controls on right.
  • v3.41.0 - Work Plan multi-board support: Create and manage multiple boards with tabbed interface. Double-click tab name to rename, click + to add new board. Reorganized toolbar with visual separators.
  • v3.40.5 - SEO improvements: BlogPosting schema with wordCount/keywords/inLanguage/isPartOf, remove Speakable schema, drop meta name="title", fix robots tag, improve FAQ prompt (less promo), improve external links prompt (more selective).
  • v3.40.4 - Fix TOC highlighting with scroll-based tracking instead of IntersectionObserver.
  • v3.40.3 - SEO HTML quality fixes: absolute image URLs in schema, twitter:url meta tag, robots meta tag, faq-answer class for speakable schema, meta name="title" alignment, FAQ regeneration if < 4 items.
  • v3.40.2 - Fix TOC highlighting: defer IntersectionObserver setup until heading elements exist in DOM.
  • v3.40.1 - SEO bug fixes: Fixed YAML array parsing for FAQs (all items now display), fixed Vision API format for image alt text generation, FAQ component now renders at original section location via placeholder system.
  • v3.40.0 - SEO Auto-Fix improvements: Vision API for image alt text (analyzes actual image content), external links generation to authoritative sources, file rename to keyword-based slug, improved em-dash detection. New collapsible FAQ component with accordion behavior. SEO checklist shows accordion-style categories, removed manual placeholder checks, added last updated display on blog posts.
  • v3.39.1 - SEO Auto-Fix bug fixes: Fix YAML double-quote serialization, add defaults for missing blog fields, handle invalid dates gracefully, deploy workflow now triggers after SEO workflow completes.
  • v3.39.0 - SEO Auto-Fix: Firebase Function to automatically fix SEO issues when publishing blog posts. Includes deterministic fixes (UK spelling, em dashes, sentence case headers, metadata defaults) and AI-powered fixes (meta description, title optimization, FAQ generation, CTA generation, internal links, keyword density). SEO checklist widget now has tabs showing Checks and Fixes Applied.
  • v3.38.16 - Blog TOC: Use fixed positioning like Security page - actually works now.
  • v3.38.15 - Blog: Transform relative image paths in markdown to /blog/images/.
  • v3.38.14 - Blog CTA: 3 text variations, Ultrathink logo, gradient background.
  • v3.38.13 - Blog: Remove "Back to blog" link from blog post header.
  • v3.38.12 - Blog TOC: Remove self-start from aside so it stretches, allowing sticky to work.
  • v3.38.11 - Blog TOC: Fix sticky by changing lg:static to lg:relative.
  • v3.38.10 - Blog: Indent bullet points with left margin.
  • v3.38.9 - Blog fixes: Removed FAQ section, hero image max 200px, fixed sticky TOC with self-start.
  • v3.38.8 - Blog TOC: Fixed sticky TOC not scrolling with page on desktop.
  • v3.38.7 - Blog fixes: Fixed broken hero images on blog posts, removed duplicate FAQ and CTA from ai-knowledge-management-guide post.
  • v3.38.6 - Blog share buttons: Moved share icons to header meta row (compact, icon-only), removed from bottom of article.
  • v3.38.5 - Blog typography: Removed divider lines under h2 headers in blog posts.
  • v3.38.4 - Blog TOC styling: Added background color and border to desktop TOC for better visibility. TOC is sticky and scrolls with page.
  • v3.38.3 - Blog header alignment: Fixed blog post header (title, date, author) to align with article content below instead of being centered separately.
  • v3.38.2 - Search results icons: Search results now display entity-specific icons (Folder for projects, Checkbox for tasks, Book for knowledge) with their associated colors instead of generic file icons.
  • v3.38.1 - Fix section color consistency: Topic and People pills now use the configured section color from Detail Panel settings instead of hardcoded blue/orange.
  • v3.38.0 - Blog enhancements: Social sharing buttons (X, LinkedIn, Copy link), related posts section with keyword matching, RSS feed generation (/feed.xml), blog pagination (9 posts per page), syntax highlighting for code blocks (Dracula theme).
  • v3.37.0 - Grid settings enhancements: Hide refresh button option, hide item count option, bigger rows now offers 10%/25%/40% height options, alternate row colours now allows custom colour selection (default grey).
  • v3.36.0 - AI Search scoped by entity: When using AI search on Projects, Tasks, or Knowledge pages, only entries of that entity type are searched. Improves search relevance and performance.
  • v3.35.0 - Blog UX improvements: TOC moved to left side with sticky scroll, card titles truncated to one line, external links open in new tab, dark CTA block with orange icon. Removed broken image references. MarketingHeader shows "Open app" for logged-in users. Fixed SEO panel accessibility for platform owners viewing blog while logged in.
  • v3.34.0 - Navigation customization system: Full drag-and-drop nav customizer in Settings allowing users to reorder sections, reorder items within/between sections, create/rename/delete custom sections, show/hide items, toggle badges, and reset to defaults. Home deduplication: when startup page is set to a specific page (e.g., Search, Tasks), that page no longer appears twice in nav - badge transfers to Home. Admin section remains fixed at bottom.
  • v3.33.0 - Blog with SEO system: Added /blog page with markdown posts, comprehensive SEO analysis checklist (32 checks for keywords, content, meta tags, links), auto-generated Open Graph/Twitter Card/schema markup, table of contents, UK spelling checker. SEO panel visible only to platform owner. Switched to BrowserRouter for proper SEO URLs.
  • v3.32.0 - Startup page navigation fix: Settings "Startup page" now works correctly - redirects to chosen page on login and House icon navigates to startup page. Added "All items" to Explore section nav. Renamed "Home" to "All items" in settings dropdown.
  • v3.31.0 - Settings deep linking: Navigate directly to tabs via URL (e.g., /settings?tab=billing), ProGate now links to Billing tab, Pro plan shows "Using managed API" badge in Integrations.
  • v3.30.0 - Homepage copy updates: expanded stats labels, updated testimonials (Katie Powell), pricing now £9.99/month from Stripe, added Android mention.
  • v3.29.0 - Billing page redesign: Moved billing to Settings page as dedicated tab, new side-by-side Free vs Pro plan comparison cards, fixed password field DOM warning, fixed Stripe 500 error (API version compatibility).
  • v3.28.0 - iPhone PWA improvements: Redesigned menu with logo at top and version at bottom, combined Photo/Image/File into single Media button with file preview and note input, unified X (top-right) and countdown (top-left) positioning across all modes, added paste feedback, enhanced audio recording with duration display and note input before save.
  • v3.27.1 - Onboarding download UX: Added visual feedback (spinner, "Downloading..." text, green checkmark) and double-click prevention to all download buttons. Prevents frustrated users clicking multiple times when downloads appear slow to start.
  • v3.27.0 - Enhanced first-user onboarding: Sidebar shows "Onboarding" link for users who dismiss (up to 3 times), "Skip" replaced with "Go back" button, OS detection for widget downloads, auto-generates device key during onboarding with copy functionality, updated extension/widget/AI screen text with clearer instructions and upgrade links.
  • v3.26.0 - Admin users dashboard: Platform owners can view all users, monitor activity stats (total/active users, entries), search/sort/filter users, view user details with entry breakdowns, and block/unblock users. Blocked users are automatically signed out.
  • v3.25.7 - Security hardening for HN launch: Fixed XSS vulnerability in notes rendering (DOMPurify sanitization), rate limiting now fails closed, updated privacy policy with accurate permissions and GDPR/CCPA compliance, removed debug console.logs from Cloud Functions.
  • v3.25.6 - Onboarding improvements: Added Device Key and Security/Privacy screens, updated Chrome extension download with GitHub link and unpacked install guide, Mac app uses .zip format, updated AI key screen text, added cursor pointers throughout. Custom Firebase auth action page with branded styling for email verification. Fixed cursor pointers on email verification screen.
  • v3.25.5 - Widget improvements: Multi-monitor screenshot support (region capture on correct display), system audio platform detection (warns on macOS/Linux), settings store moved to local AppData (avoids OneDrive sync issues), Vite hot reload dev mode, security hardening (selection overlay uses context isolation). CI/CD: Auto-publish GitHub Releases when widget builds complete.
  • v3.25.4 - Remove unused alarms permission (Chrome Web Store rejection fix).
  • v3.25.3 - Landing page refresh: New hero headline, updated copy for features/how-it-works sections, reordered feature cards, updated testimonials.
  • v3.25.2 - Fix signup permission error: Added Firestore rule to allow users to create their own org member document during signup (before user profile exists).
  • v3.25.1 - Content page styling: Modern, polished CSS for marketing/content pages (Security, Privacy, Terms, etc.) with on-brand typography, spacing, and visual hierarchy.
  • v3.25.0 - Kanban stability: Migrated from @dnd-kit to @hello-pangea/dnd (battle-tested kanban library), fixed card duplication bug when moving between columns, fixed broken card reordering within columns, combined mutations into single atomic update with proper optimistic updates, fixed sort dropdown positioning and sizing.
  • v3.24.0 - Kanban improvements: Empty column delete button (no confirmation needed), inline column scrolling with sticky headers (Asana-style), sort dropdown for kanban and grid views (Manual/Date/Title/etc), manual card reordering within columns with persistent order, sort toggle in Settings.
  • v3.23.0 - Multi-org sharing: Entries can be shared with organization members via visibility toggle. AI search and processing include org-shared entries. Teammate entries show user icon in list. Security rules enforce org isolation. Added Security & Multi-Org documentation.
  • v3.22.0 - Electron widget: file drop upload, auto-focus after capture, simplified recording UI, web app audio playback fix
  • v3.21.0 - Settings improvements: reusable ColorPicker, auto-save animation, Display tab (Grid+Kanban), task status drag-and-drop, Appearance tab (theme/font/density), Detail Panel descriptions, Canvas settings
  • v3.20.3 - Bug fixes: Widget shows device key status indicator, AI preserves HTML formatting in notes, AI summary expandable sections visual polish, grid strips HTML tags for clean preview.
  • v3.20.2 - Screenshot capture fixes: added detailed logging, fallback tab query (lastFocusedWindow), debounce guard to prevent double-triggers, ESC cancellation handling. Requires Chrome 127+.
  • v3.20.1 - Fix AI Processing panel styling to match other detail pane sections
  • v3.20.0 - Cleanup: removed old vanilla JS viewer, Python cache, backup directories (~2.6 GB freed)
  • v3.19.0 - Removed PyQt widget and all native messaging code (cloud-only)
  • v3.18.3 - AI Canvas uses Cloud Function, image attachments, UUID for bit IDs, AI Search entry limit setting, notes field standardization
  • v3.18.2 - Settings redesign: page headers, AI prompts split into dedicated tabs, User profile management
  • v3.18.1 - Fix screenshot images (base64 support), AI spinner in grid, AI error display
  • v3.18.0 - Cloud migration cleanup, removed native messaging fallback
  • v3.17.0 - Centralized AI prompts in Firestore
  • v3.16.0 - AI Cloud Functions (processEntry, searchKB, aiCanvasCompose)
  • v3.15.0 - Settings page redesign, Topics/People/Workplan in Firestore
  • v3.14.0 - Device key auth, extension saves to Firebase
  • v3.13.0 - Organization invites, Firebase auth
  • v3.0.0 - Major UI redesign (Dashboard, Dark mode, Command palette)

See version history in git commits for detailed changes.

License

Proprietary - Fifty-Five-and-Five.