Commit graph

478 commits

Author SHA1 Message Date
Luis Novo
aef8a0850e
Merge pull request #414 from Nayrode/main
feat: improve dockerfile to support offline deployments
2026-01-13 19:38:45 -03:00
Luis Novo
f47b139328
Merge pull request #417 from lfnovo/fix/claude-workflow-conditional-runs
fix: prevent duplicate Claude Code workflow runs
2026-01-13 19:38:29 -03:00
LUIS NOVO
03eb9b3555 fix: prevent duplicate workflow runs for PRs
Add conditional logic to ensure only one workflow runs per PR:
- pull_request_target: Only for fork PRs (external contributors)
- pull_request: Only for same-repo PRs (internal branches)

This prevents both triggers from firing simultaneously and causing
conflicts or duplicate reviews.
2026-01-13 19:05:16 -03:00
Luis Novo
dfc7235064
Merge pull request #416 from lfnovo/fix/claude-workflow-fork-prs
fix: allow claude code review workflow to run on PRs from forks
2026-01-13 18:48:56 -03:00
LUIS NOVO
21b6809277 security: add persist-credentials false to checkout step
Prevent GITHUB_TOKEN from being stored in .git/config when
checking out PR code in pull_request_target workflows. This
is a security best practice to prevent untrusted code from
potentially accessing stored credentials.

While the Claude Code action doesn't execute arbitrary PR code,
this follows defense-in-depth security principles to minimize
attack surface when handling untrusted code from forks.
2026-01-13 18:47:36 -03:00
LUIS NOVO
faa652dce7 fix: add pull_request trigger alongside pull_request_target
Add both pull_request and pull_request_target triggers to support:
- pull_request: Same-repo PRs (works immediately with changed workflow)
- pull_request_target: Fork PRs (provides OIDC tokens)

This resolves the chicken-and-egg problem where pull_request_target
uses the base branch's workflow file, preventing the workflow from
running when the workflow file itself is changed in the PR.
2026-01-13 18:44:23 -03:00
LUIS NOVO
9ce3cf55fc fix: allow claude code review workflow to run on PRs from forks
Switch from pull_request to pull_request_target event to enable
OIDC token access for external contributor PRs. This allows the
Claude Code action to authenticate properly when reviewing PRs
from forks.

Also added explicit PR head SHA ref to checkout to ensure we
review the correct code.

Fixes workflow failure: Unable to get ACTIONS_ID_TOKEN_REQUEST_URL
2026-01-13 18:40:18 -03:00
Dorian TETU
dcf7f4f2cf feat: improve dockerfile to support offline deployments 2026-01-13 08:55:01 +01:00
Luis Novo
959eef5e91
Merge pull request #407 from lfnovo/ci/remove-single-build-from-dev
ci: remove single-container build from dev workflow
2026-01-09 20:54:19 -03:00
LUIS NOVO
fc872ff6e3 ci: remove single-container build from dev workflow
Reduces CI time by only building the multi-container Dockerfile
during pull requests. The single-container build is still available
in the production build-and-release workflow.
2026-01-09 20:53:32 -03:00
Luis Novo
478ca299d1
Merge pull request #406 from lfnovo/fix/next-config-typescript-types
fix: add type assertion for experimental proxyClientMaxBodySize config
2026-01-09 20:50:56 -03:00
LUIS NOVO
cb525148e3 fix: add type assertion for experimental proxyClientMaxBodySize config
Next.js 15 accepts proxyClientMaxBodySize at runtime but TypeScript types
for ExperimentalConfig don't include it yet, causing build failures.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 20:44:43 -03:00
Luis Novo
8d6d615f2f
Merge pull request #405 from lfnovo/fix/nextjs-proxy-body-size-limit
fix: increase Next.js proxy body size limit for file uploads
2026-01-09 20:24:46 -03:00
LUIS NOVO
6593ab561a fix: increase Next.js proxy body size limit for file uploads
Increase the proxyClientMaxBodySize from 10MB (default) to 100MB to allow
larger files to be uploaded through the /api/* rewrite proxy to FastAPI.

Fixes #361
2026-01-09 20:18:06 -03:00
Luis Novo
24730cf757
Merge pull request #403 from lfnovo/add-claude-github-actions-1767999881072
Add Claude Code GitHub Workflow
2026-01-09 20:09:32 -03:00
Luis Novo
bdfdc9eecd
Merge pull request #404 from lfnovo/fix/cors-headers-on-error-responses
fix: add CORS headers to error responses and document file upload limits
2026-01-09 20:09:04 -03:00
LUIS NOVO
52177f7546 fix: add CORS headers to error responses and document file upload limits
- Added custom exception handler to ensure CORS headers are included in
  all HTTP error responses from the API
- Added documentation for 413 (Payload Too Large) errors when behind
  reverse proxies (nginx, traefik, kubernetes ingress)
- Added client_max_body_size to nginx configuration examples
- Documented how to configure CORS headers for proxy-level error responses

Fixes #401
2026-01-09 20:08:13 -03:00
Luis Novo
b045694992
Merge pull request #400 from lfnovo/fix/surrealdb-persistent-storage
fix: use persistent rocksdb storage instead of memory in docker-compose docs
2026-01-09 20:06:16 -03:00
Luis Novo
62730a9486
Merge pull request #402 from lfnovo/fix/model-duplicate-check-include-type
fix: include type in model duplicate check
2026-01-09 20:05:12 -03:00
Luis Novo
c22ef5a6e1 "Update Claude Code Review workflow" 2026-01-09 20:04:43 -03:00
Luis Novo
f8fcffa4b6 "Update Claude PR Assistant workflow" 2026-01-09 20:04:42 -03:00
LUIS NOVO
3c053c6eed fix: include type in model duplicate check
The model uniqueness constraint now considers (provider, name, type)
instead of just (provider, name). This allows users to add the same
model name for different purposes (e.g., language vs embedding).

Fixes #391
2026-01-09 20:00:20 -03:00
LUIS NOVO
fd03122aa3 fix: use persistent rocksdb storage instead of memory in docker-compose docs
Changed SurrealDB configuration from in-memory storage to RocksDB with
bind mounts for data persistence. Users' data will now survive container
restarts.

Fixes #398
2026-01-09 19:47:47 -03:00
Luis Novo
b8203db380
Merge pull request #396 from lfnovo/pr-346-mcp-integration
feat: add MCP integration documentation
2026-01-09 08:17:27 -03:00
Piotr Mrzygłowski
879e41a180 feat: add MCP integration documentation to README and create dedicated MCP integration guide 2026-01-09 08:14:39 -03:00
Luis Novo
76827af53f
Merge pull request #395 from lfnovo/docs/add-pull-policy-always
docs: add pull_policy always to docker-compose examples
2026-01-09 08:00:20 -03:00
LUIS NOVO
fb6dd01111 docs: add pull_policy always to docker-compose examples
Add pull_policy: always to all open_notebook service definitions
in docker-compose examples across documentation. This ensures
Docker always checks for and pulls newer images when running
docker compose up.

Closes #393
2026-01-09 07:57:25 -03:00
Luis Novo
2f98665676
Merge pull request #386 from jonigl/docs/fix-readme-assets
docs: fix removed assets in PR #379 affecting README.md
2026-01-09 07:54:34 -03:00
Luis Novo
6e5a856c99
Merge pull request #387 from M-Amrollahi/main
Update Doc for docker compose
2026-01-09 07:53:41 -03:00
Luis Novo
06b07df684
Merge pull request #394 from lfnovo/chore/remove-unused-addbutton
chore: remove unused AddButton component
2026-01-08 16:07:56 -03:00
LUIS NOVO
c15a563f26 chore: remove outdated new_docs folder
The new_docs folder contained stale documentation that was superseded
by the updated docs/ folder. The docs/ version has:
- LM Studio alternative instructions
- Updated architecture (single container, port 8502)
2026-01-08 16:02:52 -03:00
LUIS NOVO
a41703fbac chore: remove unused AddButton component
The AddButton component was never imported or used anywhere in the
application. Notebook creation is already implemented and working via:
- "New Notebook" button on the notebooks page
- "Create" button in the sidebar
- "Create Notebook" command in the command palette

Closes #390
2026-01-08 15:56:26 -03:00
Mahdi Amrollahi
31d4a0c84f
Merge pull request #1 from M-Amrollahi/M-Amrollahi-patch-1
Clarify Ollama API base URL in docker-compose.md
2026-01-06 20:48:43 -05:00
Mahdi Amrollahi
7a4ade612a
Clarify Ollama API base URL in docker-compose.md
Updated references to Ollama API base URL in documentation.
2026-01-06 17:21:40 -05:00
Jonathan Gastón Löwenstern
7252c05d33 docs: fix removed assets in https://github.com/lfnovo/open-notebook/pull/379 affecting README.md 2026-01-06 15:07:58 +01:00
Luis Novo
e69485bb72
Merge pull request #382 from thesohamdatta/fix/remove-debug-logging-prefixes
Remove debug prefixes from production error logging
2026-01-05 17:14:57 -03:00
Luis Novo
3695d6d475
Merge pull request #380 from lfnovo/fix/reduce-retry-log-noise
fix: reduce retry log noise during concurrent chunk processing
2026-01-05 17:14:25 -03:00
Soham Datta
ddfb754b48 Remove debug prefixes from production error logging 2026-01-05 22:22:34 +05:30
LUIS NOVO
48e2800211 fix: reduce retry log noise during concurrent chunk processing
Addresses issue #362 - users were seeing hundreds of ERROR/WARNING logs
when processing large documents due to SurrealDB v2 transaction conflicts
during concurrent chunk embedding operations.

Changes:
- Upgraded to surreal-commands v1.3.0 which includes retry_log_level feature
- Increased retry attempts from 5 to 15 with max wait time 120s (from 30s)
  to handle deep queues during concurrent processing
- Set retry_log_level to "debug" in embed_chunk and process_source commands
- Changed repository.py RuntimeError logging from ERROR to DEBUG level
- Updated command exception handlers to log retries at DEBUG level
- Updated documentation to reflect retry strategy

This is a temporary workaround for SurrealDB v2.x transaction conflict
issues with SEARCH indexes. Settings can be reduced after migrating to
SurrealDB v3 which fixes the underlying concurrency issue.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-05 11:30:55 -03:00
Luis Novo
b76af505b2
Merge pull request #379 from lfnovo/refactor/folder-reorg
refactor: Major codebase reorganization and documentation overhaul
2026-01-05 08:38:34 -03:00
LUIS NOVO
b1bd522c5c feat: improve dev commands, update all langchain dependencies to their latest major versions 2026-01-05 08:22:41 -03:00
LUIS NOVO
77feff344f chore: bump 2026-01-04 11:44:58 -03:00
LUIS NOVO
472d0e47c3 docs: Lots of documentation improvements 2026-01-04 11:42:13 -03:00
LUIS NOVO
ea7a41077b docs: update all database examples for more clarity and better database names. 2026-01-04 09:23:15 -03:00
LUIS NOVO
655d164fa0 docs: update quick start guides and core concepts for clarity and accuracy 2026-01-04 09:09:20 -03:00
LUIS NOVO
e13e4a2d8b docs: restructure documentation with new organized layout
- Replace old docs structure with new comprehensive documentation
- Organize into 8 major sections (0-START-HERE through 7-DEVELOPMENT)
- Convert CONFIGURATION.md, CONTRIBUTING.md, MAINTAINER_GUIDE.md to redirects
- Remove outdated MIGRATION.md and DESIGN_PRINCIPLES.md
- Fix all internal documentation links and cross-references
- Add progressive disclosure paths for different user types
- Include 44 focused guides covering all features
- Update README.md to remove v1.0 breaking changes notice
2026-01-03 20:10:24 -03:00
LUIS NOVO
71b8d13b24 docs: generate comprehensive CLAUDE.md reference documentation across codebase
Create a hierarchical CLAUDE.md documentation system for the entire Open Notebook
codebase with focus on concise, pattern-driven reference cards rather than
comprehensive tutorials.

## Changes

### Core Documentation System
- Updated `.claude/commands/build-claude-md.md` to distinguish between leaf and
  parent modules, with special handling for prompt/template modules
- Established clear patterns:
  * Leaf modules (40-70 lines): Components, hooks, API clients
  * Parent modules (50-150 lines): Architecture, cross-layer patterns, data flows
  * Template modules: Pattern focus, not catalog listings

### Generated Documentation
Created 15 CLAUDE.md reference files across the project:

**Frontend (React/Next.js)**
- frontend/src/CLAUDE.md: Architecture overview, data flow, three-tier design
- frontend/src/lib/hooks/CLAUDE.md: React Query patterns, state management
- frontend/src/lib/api/CLAUDE.md: Axios client, FormData handling, interceptors
- frontend/src/lib/stores/CLAUDE.md: Zustand state persistence, auth patterns
- frontend/src/components/ui/CLAUDE.md: Radix UI primitives, CVA styling

**Backend (Python/FastAPI)**
- open_notebook/CLAUDE.md: System architecture, layer interactions
- open_notebook/ai/CLAUDE.md: Model provisioning, Esperanto integration
- open_notebook/domain/CLAUDE.md: Data models, ObjectModel/RecordModel patterns
- open_notebook/database/CLAUDE.md: Repository pattern, async migrations
- open_notebook/graphs/CLAUDE.md: LangGraph workflows, async orchestration
- open_notebook/utils/CLAUDE.md: Cross-cutting utilities, context building
- open_notebook/podcasts/CLAUDE.md: Episode/speaker profiles, job tracking

**API & Other**
- api/CLAUDE.md: REST layer, service architecture
- commands/CLAUDE.md: Async command handlers, job queue patterns
- prompts/CLAUDE.md: Jinja2 templates, prompt engineering patterns (refactored)

**Project Root**
- CLAUDE.md: Project overview, three-tier architecture, tech stack, getting started

### Key Features
- Zero duplication: Parent modules reference child CLAUDE.md files, don't repeat them
- Pattern-focused: Emphasizes how components work together, not component catalogs
- Scannable: Short bullets, code examples only when necessary (1-2 per file)
- Practical: "How to extend" guides, quirks/gotchas for each module
- Navigation: Root CLAUDE.md acts as hub pointing to specialized documentation

### Cleanup
- Removed unused `batch_fix_services.py`
- Removed deprecated `open_notebook/plugins/podcasts.py`
- Updated .gitignore for documentation consistency

## Impact
New contributors can now:
1. Read root CLAUDE.md for system architecture (5 min)
2. Jump to specific layer documentation (frontend, api, open_notebook)
3. Dive into module-specific patterns in child CLAUDE.md files (1 min per module)
All documentation is lean, reference-focused, and avoids duplication.
2026-01-03 16:27:52 -03:00
LUIS NOVO
ab5560c9a2 refactor: reorganize folder structure for better maintainability
Changes:
- Move migrations/ under open_notebook/database/migrations/
- Extract AI models to open_notebook/ai/ (Model, ModelManager, provision)
- Extract podcasts to open_notebook/podcasts/ (EpisodeProfile, SpeakerProfile, PodcastEpisode)
- Reorganize prompts to mirror graphs structure (chat/, source_chat/)

This improves code organization by:
- Consolidating database concerns (migrations now with database code)
- Separating AI infrastructure from domain entities
- Isolating podcast feature into its own module
- Creating consistent prompt/graph naming conventions

All 52 tests pass.
2026-01-03 14:04:27 -03:00
Luis Novo
93cda6c42a
Merge pull request #304 from xeader/fix/issue-271.2-ui-not-responsive
feat(notebooks): improve layout responsiveness
2025-12-20 10:18:22 -03:00
Luis Novo
040cfbad88
Merge pull request #343 from lfnovo/fix/note-editor-fullscreen-observer-optimization
fix(ui): optimize MutationObserver in NoteEditorDialog
2025-12-20 10:16:49 -03:00