Commit graph

412 commits

Author SHA1 Message Date
Luis Novo
bbe06df7e4
Merge pull request #340 from lfnovo/fix/chat-model-selection
fix: chat model selection issues + Docker troubleshooting docs
2025-12-19 17:46:09 -03:00
LUIS NOVO
7f19c916ae feat: add View Source button to insight modal
- Add button to navigate from insight popup to its parent source
- Uses existing modal manager to open source detail view
- Shows button only when source_id is available
2025-12-19 17:10:55 -03:00
LUIS NOVO
a1d0a3a666 fix: allow model override before chat session exists
- Add pendingModelOverride state to useNotebookChat hook
- Store model selection when no session exists yet
- Apply pending model override when session is auto-created on first message
- Simplify ChatColumn by using new setModelOverride function
2025-12-19 16:55:26 -03:00
LUIS NOVO
e11f0a4db8 fix: resolve chat model selection and session display issues
- Add nullable_fields support to ObjectModel base class
- Configure ChatSession to allow model_override to be cleared to null
- Fix JSX conditional that rendered "0" when message_count was 0
- Display model name instead of raw ID in session manager

Fixes issues:
1. Switching to default model now persists correctly
2. Session list shows human-readable model names
3. Sessions with 0 messages no longer show "0" badge
2025-12-19 16:47:34 -03:00
LUIS NOVO
33b8f7a2b8 docs: add troubleshooting for common Docker installation issues
- Add fix for quotes in environment variables causing empty URL errors
- Add SurrealDB configuration section (single container includes DB, v2 only)
- Add network timeout fix for slow connections and Chinese users
- Update table of contents with new sections

Addresses feedback from issue #316
2025-12-19 16:30:55 -03:00
Luis Novo
65166d4d2a
Merge pull request #326 from lfnovo/fix-ollama-json
chore: bump esperanto to fix ollama json
2025-12-15 21:56:32 -03:00
LUIS NOVO
f98522606d chore: bump esperanto to fix ollama json 2025-12-15 21:55:28 -03:00
Luis Novo
040e7ccf42
Merge pull request #325 from lfnovo/feat/ui-improv
feat: UI improvements and bug fixes
2025-12-14 22:24:15 -03:00
LUIS NOVO
26e989fdbb fix: query key consistency and timeout configuration
- Use QUERY_KEYS.sourcesInfinite for infinite scroll query key
  Starting with ['sources', ...] ensures mutations that invalidate
  ['sources'] will also invalidate the infinite scroll cache

- Use httpx.Timeout for chat service with short connect (10s) and
  long read (600s) timeouts. Prevents 10 min wait on connection errors
2025-12-14 21:55:38 -03:00
LUIS NOVO
1be8ef1116 chore: bump to 1.2.4 2025-12-14 21:34:49 -03:00
LUIS NOVO
5eac002b91 bump: fix ssl issue with langchain - relates to #274 2025-12-14 21:33:31 -03:00
Luis Novo
8b37104040
Merge pull request #323 from talkenigs/fix/start-all-flow
fix(install): specify docker compose and port
2025-12-14 19:49:29 -03:00
talkenigs
5d9eb5284f fix: specifiy docker compose and add port 2025-12-14 19:14:11 +02:00
LUIS NOVO
6e8f46420a feat(ui): add markdown table rendering support
Added remark-gfm plugin to enable GitHub Flavored Markdown support,
which includes proper table rendering. Updated all ReactMarkdown
usages with table styling components:

- ChatPanel (source and notebook chat)
- StreamingResponse (search/ask results)
- SourceInsightDialog
- SourceDetailContent
- TransformationPlayground

Tables now render with proper borders, headers with background,
and horizontal scroll for wide tables.
2025-12-14 12:01:28 -03:00
LUIS NOVO
ef6274c83a Merge remote-tracking branch 'origin/main' into feat/ui-improv 2025-12-14 11:47:43 -03:00
LUIS NOVO
d0d5d97578 fix: wait for API to be ready before starting frontend
Users reported "Unable to Connect to API Server" errors on startup
because the frontend started before the API finished initialization
(database migrations, etc.).

- Add wait-for-api.sh script that polls /health endpoint
- Update supervisord configs to use wait script instead of sleep 5
- Waits up to 5 minutes for API to be ready before starting frontend
- Applies to both single-container and multi-container deployments

Fixes #315
2025-12-14 11:39:59 -03:00
LUIS NOVO
3001537aa7 fix: increase timeout for Ollama and local LLM operations
Users with Ollama reported timeout errors on notebook chat while the
backend was still processing. The answer would appear after refresh.

- Frontend axios timeout: 5 min → 10 min
- Backend chat service timeout: 2 min → 10 min

Local LLMs can take several minutes for complex questions with large
contexts, especially on slower hardware.
2025-12-14 11:31:03 -03:00
LUIS NOVO
e5eeb90341 feat(ui): add infinite scroll for notebook sources
Previously, notebook sources were limited to 50 items due to API default.
This adds pagination with infinite scroll to the sources column:

- Add useNotebookSources hook with useInfiniteQuery for paginated fetching
- Update SourcesColumn with scroll detection to load more sources
- Fetch 30 sources per page, loading more as user scrolls near bottom
2025-12-14 10:56:38 -03:00
Luis Novo
cba79e55bc
Merge pull request #321 from lfnovo/dependabot/npm_and_yarn/frontend/next-15.4.10
chore(deps): bump next from 15.4.9 to 15.4.10 in /frontend
2025-12-14 10:23:12 -03:00
dependabot[bot]
3b7d99a687
chore(deps): bump next from 15.4.9 to 15.4.10 in /frontend
Bumps [next](https://github.com/vercel/next.js) from 15.4.9 to 15.4.10.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v15.4.9...v15.4.10)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 15.4.10
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-14 13:11:44 +00:00
Luis Novo
bf438298bd
Merge pull request #317 from lfnovo/dependabot/npm_and_yarn/frontend/next-15.4.9
chore(deps): bump next from 15.4.8 to 15.4.9 in /frontend
2025-12-14 10:10:24 -03:00
dependabot[bot]
64212814cc
chore(deps): bump next from 15.4.8 to 15.4.9 in /frontend
Bumps [next](https://github.com/vercel/next.js) from 15.4.8 to 15.4.9.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v15.4.8...v15.4.9)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 15.4.9
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-12 00:44:15 +00:00
Luis Novo
8644e995f1
Merge pull request #290 from lfnovo/dependabot/npm_and_yarn/frontend/mdast-util-to-hast-13.2.1
chore(deps): bump mdast-util-to-hast from 13.2.0 to 13.2.1 in /frontend
2025-12-06 08:25:57 -03:00
Luis Novo
6ae5c11130
Merge pull request #295 from lfnovo/dependabot/npm_and_yarn/frontend/next-15.4.8
chore(deps): bump next from 15.4.7 to 15.4.8 in /frontend
2025-12-06 08:25:46 -03:00
Luis Novo
40c540cbf7
Merge pull request #296 from mgmanzella/fix/dev-docs-surreal-db-image
fix(docs) - Update documentation for surrealdb docker image from v1-latest to v2
2025-12-06 08:25:08 -03:00
Morisa Manzella
1dde858cfb Update surrealdb docker image from v1-latest to v2 in dev docs 2025-12-03 18:19:36 -05:00
dependabot[bot]
8ad38bf1b1
chore(deps): bump next from 15.4.7 to 15.4.8 in /frontend
Bumps [next](https://github.com/vercel/next.js) from 15.4.7 to 15.4.8.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v15.4.7...v15.4.8)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 15.4.8
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-03 20:45:51 +00:00
dependabot[bot]
647f60d197
chore(deps): bump mdast-util-to-hast from 13.2.0 to 13.2.1 in /frontend
Bumps [mdast-util-to-hast](https://github.com/syntax-tree/mdast-util-to-hast) from 13.2.0 to 13.2.1.
- [Release notes](https://github.com/syntax-tree/mdast-util-to-hast/releases)
- [Commits](https://github.com/syntax-tree/mdast-util-to-hast/compare/13.2.0...13.2.1)

---
updated-dependencies:
- dependency-name: mdast-util-to-hast
  dependency-version: 13.2.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-02 04:05:47 +00:00
Luis Novo
53cbea6809
Merge pull request #289 from lfnovo/fix/command-palette-search-navigation
fix(ui): handle URL params in search page for command palette navigation
2025-12-01 20:55:07 -03:00
LUIS NOVO
d8e61c6b5b fix(ui): address review feedback for URL param handling
- Fix race condition: only set hasAutoTriggeredRef after successful execution
- Add URL mode validation: ensure mode is either 'search' or 'ask'
2025-12-01 20:52:35 -03:00
LUIS NOVO
33be80ab7c fix(ui): handle URL params in search page for command palette navigation
The search page now reads `q` and `mode` query parameters from the URL,
enabling proper integration with the command palette's search/ask actions.

Changes:
- Read URL params using useSearchParams hook
- Initialize form fields and active tab from URL params
- Auto-trigger search/ask when arriving with URL params
- Handle subsequent navigations while on the search page
2025-12-01 20:46:49 -03:00
Luis Novo
728f036eeb
Merge pull request #281 from lfnovo/fix/ssl
docs: add SSL verification configuration for local providers
2025-12-01 15:05:40 -03:00
LUIS NOVO
92f3076b02 Merge remote-tracking branch 'origin/main' into fix/ssl
# Conflicts:
#	uv.lock
2025-12-01 15:05:17 -03:00
Bui Thanh Son
60566c9c4d
refactor: move environment variables loading to application entry point (#283) 2025-12-01 14:59:50 -03:00
Luis Novo
5d5b6bd035
feat(ui): add command palette for quick navigation and search (#288)
* feat(ui): add command palette for quick navigation and search

Replace top bar search with a command palette (⌘K / Ctrl+K) that provides:
- Quick navigation to all app sections
- Create shortcuts for sources, notebooks, and podcasts
- Theme switching (light/dark/system)
- Search and Ask functionality for non-matching queries

This approach saves screen real estate while providing faster access
to common actions through keyboard shortcuts.

Co-authored-by: EmbroiderSnow <1497411439@qq.com>

* chore: bump to 1.2.3

* feat(command-palette): add notebook quick navigation

Users can now type a notebook name in the command palette (⌘K) to
navigate directly to that notebook. Shows up to 8 most recent
notebooks, with cmdk filtering all notebooks when typing.

* fix(command-palette): address code review issues

- Skip ⌘K/Ctrl+K shortcut when focus is inside input, textarea, select,
  or contentEditable elements to preserve native keyboard handling
- Remove 8-item limit on notebooks so all notebooks are searchable
  via cmdk filtering

* perf(command-palette): memoize command matching and add platform shortcuts

- Memoize hasCommandMatch computation with useMemo to avoid
  recalculating on every render
- Show platform-specific keyboard shortcut in sidebar hint:
  ⌘K on macOS, Ctrl+K on Windows/Linux

* fix(command-palette): add spinner to notebooks loading state

Show a spinning Loader2 icon alongside the "Loading notebooks..." text
for clearer visual feedback when the command palette is fetching data.

---------

Co-authored-by: EmbroiderSnow <1497411439@qq.com>
2025-12-01 14:59:17 -03:00
LUIS NOVO
8622e47610 chore: bump to 1.2.3 2025-11-27 11:41:16 -03:00
LUIS NOVO
9c565aba96 Merge remote-tracking branch 'origin/main' into fix/ssl 2025-11-27 11:37:32 -03:00
dependabot[bot]
2084b04f4d
chore(deps-dev): bump js-yaml from 4.1.0 to 4.1.1 in /frontend (#263)
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.1.0 to 4.1.1.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/4.1.0...4.1.1)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 4.1.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-27 11:36:56 -03:00
LUIS NOVO
e334291bf0 fix: improve SSL handling fixes #274 2025-11-27 11:34:04 -03:00
Bui Thanh Son
55b8e6380c
fix: add UTF-8 encoding for async migrations file reading (#279)
Add UTF-8 encoding when opening migration files.
2025-11-27 09:59:47 -03:00
Luis Novo
45a99831a9
Hide sources notes (#273)
* fix: add missing overflow wrapper to notebooks list page

Adds flex-1 overflow-y-auto wrapper to enable proper scrolling
when notebook list exceeds viewport height. Matches the layout
pattern used by all other dashboard pages.

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: reorder transformation routes to prevent dynamic route interception

Moved static routes (/transformations/execute and /transformations/default-prompt)
before dynamic routes (/transformations/{transformation_id}) to ensure FastAPI
matches them correctly. Previously, requests to static routes were incorrectly
captured by the dynamic route handler.

Fixes #250

Co-Authored-By: Claude <noreply@anthropic.com>

* chore: bump to 1.2.1

* hide source and notes panel - fixes #193

* feat: improve layout for mobile views

* bump version to 1.2.2

* fix: address PR review feedback for collapsible columns

- Remove unused CollapseButton component from CollapsibleColumn.tsx
- Rename useCollapseButton to createCollapseButton (not a React hook)
- Move dialogs outside Card in SourcesColumn.tsx for consistency
- Add useMemo for collapseButton in both columns to prevent re-renders

* feat: support multiple sources

* fix: prevent ChatColumn double mounting on desktop

Add useIsDesktop hook to conditionally render mobile view only on
mobile screens. Previously, the mobile ChatColumn was hidden via CSS
on desktop but still mounted, causing duplicate hooks initialization
and redundant network requests.

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-11-25 16:59:26 -03:00
Luis Novo
b42cc06e65
fix: UI scrolling and API route ordering issues (#253)
* fix: add missing overflow wrapper to notebooks list page

Adds flex-1 overflow-y-auto wrapper to enable proper scrolling
when notebook list exceeds viewport height. Matches the layout
pattern used by all other dashboard pages.

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: reorder transformation routes to prevent dynamic route interception

Moved static routes (/transformations/execute and /transformations/default-prompt)
before dynamic routes (/transformations/{transformation_id}) to ensure FastAPI
matches them correctly. Previously, requests to static routes were incorrectly
captured by the dynamic route handler.

Fixes #250

Co-Authored-By: Claude <noreply@anthropic.com>

* chore: bump to 1.2.1

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-11-04 21:15:00 -03:00
Luis Novo
1331e0feec
docs: improve contribution workflow and project governance (#246)
* chore: bump esperanto for anthropic on langchain

* docs: improve contribution workflow and project governance

Implements a comprehensive contribution management system to maintain project quality and vision while welcoming community contributions.

Key Changes:
- Updated CONTRIBUTING.md with clear issue-first workflow
- Added "willing to contribute" checkbox to issue templates
- Created DESIGN_PRINCIPLES.md documenting project vision and principles
- Added comprehensive PR template with quality checklists
- Created MAINTAINER_GUIDE.md with review processes and templates
- Added .github/README.md explaining the contribution flow

Benefits:
- Prevents wasted effort on misaligned contributions
- Maintains architectural consistency
- Provides clear expectations for contributors
- Gives maintainers tools to manage contributions effectively
- Educates contributors on project goals and standards

Related to managing increased community contributions while maintaining project direction.
2025-11-01 16:34:28 -03:00
Luis Novo
6fe78a64f7
chore: bump esperanto for anthropic on langchain (#244) 2025-11-01 15:32:52 -03:00
Luis Novo
7197671279
feat: add Azure OpenAI modality-specific configuration support (#243)
* chore: improve podcast transcripts

* docs: update Azure OpenAI documentation to reflect STT and TTS support

Updated documentation to show that Azure OpenAI now supports all four
modalities (Language, Embedding, STT, TTS) with mode-specific configuration.

Changes:
- Updated Provider Support Matrix table to show Azure supports STT and TTS
- Added recommended STT and TTS models to Azure OpenAI section
- Added clarifying comment for STT and TTS environment variables

Related to modality-specific Azure configuration implementation.
2025-11-01 14:51:44 -03:00
Luis Novo
f79a9040ae
Release 1.2 (#242)
* chore: improve podcast transcripts

* fix: remove date from insight - fixes #241

* fix: improve scrolling on source and insights - fixes #237

* chore: update esperanto to fix: #234

* chore: update esperanto to fix #226

* fix: process vectorization as subcommands to handle larger documents more gracefully - fix: #229

* feat: enable background job retry capabilities

* feat: reenable content types that were disabled during alpha version

* fix: remove unnecessary model caching causing many issues.

* feat: support multiple azure endpoints and keys just like openai compatible. Fixes #215

* docs: update azure variables

* chore: bump and update dependencies
2025-11-01 14:40:00 -03:00
Luis Novo
bc35a95117
chore: improve podcast transcripts (#221) 2025-10-25 11:05:08 -03:00
Luis Novo
933de75b73
feat: implement compact chat references with numbered citations (#220)
Transform verbose inline references to compact footnote-style format:
- Replace [source:abc123] with numbered citations [1], [2], etc.
- Add "References:" section at bottom of messages
- Deduplicate references (same ID gets same number)
- Remove icons from citations for cleaner appearance
- Maintain click-to-open functionality for all reference types

Changes:
- Add convertReferencesToCompactMarkdown() function
- Add createCompactReferenceLinkComponent() function
- Update ChatPanel to use new compact reference functions
- Add ReferenceData interface for type safety

Improves readability by reducing visual clutter while preserving
all existing functionality. References restart numbering at 1 for
each message.
2025-10-25 10:26:21 -03:00
Luis Novo
a287d3b248
refactor: optimize duplicate model validation and improve error handling (#219)
* feat: prevent duplicate model names under same provider

Implement case-insensitive validation to prevent users from creating
duplicate model names under the same provider. This validation is
implemented both in the backend API and the frontend UI.

Changes:
- Backend: Add duplicate check in create_model endpoint (case-insensitive)
- Frontend: Add client-side validation in AddModelForm
- Frontend: Improve error message display from backend
- Tests: Add unit tests for duplicate model validation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: optimize duplicate model validation and improve error handling

- Replace O(n) model iteration with efficient SurrealDB query for duplicate check
- Improve error message to include model name and provider for better UX
- Remove frontend duplicate validation (backend-only enforcement)
- Fix test authentication by setting OPEN_NOTEBOOK_PASSWORD before imports
- Update test mocking to use repo_query instead of Model.get_all()
- Add pytest fixture for TestClient to ensure proper test isolation

All 11 tests passing.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* remove unnecessary package

* fix: replace any with unknown type in error handler

- Change error type from 'any' to 'unknown' to satisfy ESLint
- Add proper type assertion for error object structure
- Maintains same runtime behavior with better type safety

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-10-25 08:48:18 -03:00
Luis Novo
a0a2282bfa
Delete note functionality (#216)
* feat: Enable note deletion.

* enable dismissing the upgrade button

* delete notes

* fix chat session dialog error

* chore: bump

* chore: bump correctly
2025-10-24 18:27:02 -03:00