Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
88 commits
Select commit Hold shift + click to select a range
3670e52
feat: complete development environment setup with Supabase and Celery
amostt Oct 23, 2025
c7b3b9d
docs: add infrastructure documentation and PRD files
amostt Oct 24, 2025
0f06285
feat(backend): implement PDF upload API endpoint with Supabase Storage
amostt Oct 25, 2025
be68275
fix(ci): fix all GitHub Actions workflow failures
amostt Oct 25, 2025
fd20f5f
fix(ci): properly configure uv environment for lint script
amostt Oct 25, 2025
c85a0d0
fix(ci): add missing required env vars to generate-client workflow
amostt Oct 25, 2025
f877e3f
fix(ci): use correct psycopg driver URL in generate-client
amostt Oct 25, 2025
f781312
fix(ci): add required env vars to lint-backend workflow
amostt Oct 25, 2025
c18128c
fix(ci): run lint commands directly with uv run instead of bash script
amostt Oct 25, 2025
22ab98a
fix(ci): install dev dependency group for linting tools
amostt Oct 25, 2025
070a2eb
fix(ci): use --dev flag instead of --group dev for uv sync
amostt Oct 25, 2025
d997dc9
fix(ci): upgrade uv from 0.4.15 to 0.9.5 for dependency-groups support
amostt Oct 25, 2025
e33a784
fix(backend): resolve mypy type errors and ruff formatting issues
amostt Oct 25, 2025
1ade304
fix(ci): add required environment variables for docker-compose in tes…
amostt Oct 25, 2025
23d8c60
fix(ci): add missing environment variables to test-docker-compose
amostt Oct 25, 2025
4800d9f
fix(frontend): remove unused FiBriefcase import from SidebarItems
amostt Oct 25, 2025
a999637
fix(ci): add optional env vars and create dummy .env file for docker-…
amostt Oct 25, 2025
a0e7f96
fix(ci): simplify test-docker-compose to only verify builds
amostt Oct 25, 2025
50f9ad9
fix(ci): add optional env vars and .env file to test-backend workflow
amostt Oct 25, 2025
92c2db6
fix(ci): add PROJECT_NAME and fix DATABASE_URL validation in test-bac…
amostt Oct 25, 2025
559f260
docs(testing): optimize strategy with 2025 AI/ML best practices
amostt Oct 25, 2025
cb1d639
fix(ci): enable SQLite for fast test execution in CI
amostt Oct 25, 2025
ac88fb4
refactor(ci): switch to PostgreSQL for production-parity testing
amostt Oct 25, 2025
12897a5
fix(tests): commit superuser to database in test fixtures
amostt Oct 25, 2025
c46fe15
fix(tests): use separate sessions for db init and testing
amostt Oct 25, 2025
69c5b1b
fix(tests): implement official SQLModel testing pattern with dependen…
amostt Oct 25, 2025
8278cdf
fix(tests): add proper type annotations to test fixtures
amostt Oct 25, 2025
6c16c10
fix(tests): change fixture scope from function to module
amostt Oct 25, 2025
bb46376
fix(tests): use official FastAPI template pattern without dependency …
amostt Oct 25, 2025
70b94a9
style(config): auto-format with ruff for lint compliance
amostt Oct 25, 2025
691c8b1
fix(tests): separate init session from test session for PostgreSQL is…
amostt Oct 25, 2025
c5cd471
fix(tests): align test configuration for PostgreSQL testing
amostt Oct 25, 2025
8b0dcc5
ci(tests): add EMAILS_FROM_EMAIL to test environment
amostt Oct 25, 2025
63048da
ci(tests): align frontend E2E testing with backend PostgreSQL setup
amostt Oct 25, 2025
c58eb97
Merge pull request #1 from amostt/feature/CUR-29-backend-upload-api-e…
amostt Oct 25, 2025
7a68daa
feat(storage): enhance Supabase Storage service with security and obs…
amostt Oct 25, 2025
229429c
feat(ci): add PR auto-labeling skill and check-labels workflow
amostt Oct 25, 2025
762a433
style(storage): auto-format storage.py for lint compliance
amostt Oct 25, 2025
b5b9b6c
Merge pull request #2 from amostt/feature/CUR-30-supabase-storage-int…
amostt Oct 25, 2025
881e80d
feat(database): add extractions table with enum, indexes, and trigger
amostt Oct 25, 2025
8ef347d
docs(data): add Ingestion model documentation to data models
amostt Oct 25, 2025
eee919a
ci(workflows): remove duplicate label workflow and document PR labeling
amostt Oct 25, 2025
a4e54d7
refactor(skills): simplify pr-labeling skill for proactive activation
amostt Oct 25, 2025
25b5728
Merge pull request #3 from amostt/feature/cur-31-database-schema-and-…
amostt Oct 25, 2025
7c65416
feat(frontend): add PDF upload form with drag-and-drop and validation
amostt Oct 25, 2025
d295793
docs(testing): add comprehensive Vitest unit testing documentation
amostt Oct 25, 2025
7bdfbcd
ci(frontend): split test workflow into unit and E2E jobs
amostt Oct 25, 2025
c4be392
fix(frontend): add @vitest/coverage-v8 dependency for CI coverage
amostt Oct 25, 2025
c3b27ec
Merge pull request #4 from amostt/feature/cur-32-frontend-upload-form…
amostt Oct 25, 2025
8177f90
feat(frontend): add upload progress tracking with throttling
amostt Oct 25, 2025
04cc17a
docs(prd): mark epic CUR-28 document upload & storage as complete
amostt Oct 26, 2025
cef626c
fix(build): exclude test files from production TypeScript build
amostt Oct 26, 2025
58724a7
Merge pull request #5 from amostt/feature/cur-33-upload-progress-trac…
amostt Oct 26, 2025
422f9be
fix(db): remove duplicate extractions migration
amostt Oct 28, 2025
148c614
Merge pull request #7 from amostt/fix/remove-duplicate-extraction-mig…
amostt Oct 28, 2025
f66860a
docs(testing): add comprehensive database migration testing guidance
amostt Oct 28, 2025
edd5d4d
fix(upload): resolve file upload 413 and 401 errors
amostt Oct 28, 2025
9be380a
feat(frontend): set up PDF.js worker and react-pdf dependencies
amostt Oct 29, 2025
c3bd0eb
fix(frontend): remove unused ts-expect-error directive in test route
amostt Oct 29, 2025
23345ea
Merge pull request #8 from amostt/feature/cur-36-set-up-pdf-viewer-de…
amostt Oct 29, 2025
5ac6f48
feat(pdf-viewer): implement PDF navigation hook with comprehensive tests
amostt Oct 29, 2025
6c9c846
fix(test): resolve TypeScript errors in useFileUpload tests
amostt Oct 29, 2025
439bacd
Merge pull request #9 from amostt/feature/cur-37-implement-pdf-naviga…
amostt Oct 29, 2025
bf22c73
feat(pdf-viewer): implement PDFViewer component with pagination and zoom
amostt Oct 29, 2025
c8faeab
fix(tests): resolve TypeScript error and fix PDFViewer test suite
amostt Oct 29, 2025
37d0156
Merge pull request #10 from amostt/feature/cur-38-build-pdf-viewer-co…
amostt Oct 29, 2025
7b6fd04
feat(nav): add ingestions sidebar navigation item
amostt Oct 29, 2025
a662808
Merge pull request #11 from amostt/feature/cur-42-add-ingestions-side…
amostt Oct 29, 2025
8229e10
feat(ingestions): add list endpoint and frontend page with pagination
amostt Oct 29, 2025
a03d529
fix(ci): resolve lint-backend mypy and build errors
amostt Oct 29, 2025
415e406
docs(data): update models.md with verified database state
amostt Oct 29, 2025
4cc4de1
style(backend): apply ruff formatting to crud.py
amostt Oct 29, 2025
ec3fde9
feat(ingestions): add upload button to ingestions list page
amostt Oct 29, 2025
17ff761
Merge pull request #12 from amostt/feature/cur-43-build-ingestions-li…
amostt Oct 29, 2025
6626009
feat(ingestions): add PDF review route with TanStack Query integration
amostt Oct 29, 2025
9d5abf6
fix(ingestions): add missing endpoint and fix navigation types
amostt Oct 29, 2025
80a9254
fix(backend): correct ingestions table name in models
amostt Oct 29, 2025
4f70cce
feat(ocr): implement Mistral OCR integration with Celery task
amostt Oct 30, 2025
9742738
chore(config): configure Mistral API key and enable OCR task registra…
amostt Oct 30, 2025
ef5b282
feat(ocr): add semantic block extraction for question segmentation
amostt Oct 30, 2025
cef46a4
chore(migrations): add comprehensive migration safety infrastructure
amostt Oct 30, 2025
a0585ba
✨ Autogenerate frontend client
invalid-email-address Oct 30, 2025
b544da7
docs(models): update data models documentation with OCR fields
amostt Oct 30, 2025
8e460b0
docs(architecture): update architecture and API docs with OCR impleme…
amostt Oct 30, 2025
2d8e6b3
ci(workflows): fix Redis hostname and baseline migration
amostt Oct 30, 2025
3302263
ci(test-backend): use Redis service container instead of docker compose
amostt Oct 30, 2025
cbade4e
fix(test-backend): set REDIS_PASSWORD for Settings validation
amostt Oct 30, 2025
d62845e
feat(ocr): implement error handling and retry logic with rate limiting
amostt Oct 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .DS_Store
Binary file not shown.
122 changes: 122 additions & 0 deletions .claude/skills/pr-labeling/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
---
name: pr-labeling
description: MUST activate whenever creating a pull request. Automatically applies labels based on conventional commit types to pass check-labels workflow. Use proactively - do not wait for user to ask.
allowed-tools: Bash, Read, Grep
---

# Pull Request Auto-Labeling

## Activation

**MANDATORY activation whenever:**
- Creating a pull request (gh pr create, any PR creation)
- User says "create pr", "open pr", "make a pull request"
- Discussing or reviewing pull requests
- After pushing commits when PR creation is next step

**Proactive**: Apply labels automatically without waiting for user to ask.

## Core Function

1. **Detect commit type** from PR title, branch name, or commits
2. **Map to label** using table below
3. **Apply label** via `gh pr create --label` or `gh pr edit --add-label`

## Label Mapping

| Commit Type | Label | Notes |
|-------------|-------|-------|
| `feat` | `feature` | New features |
| `fix` | `bug` | Bug fixes |
| `docs` | `docs` | Documentation |
| `refactor` | `refactor` | Code refactoring |
| `perf` | `enhancement` | Performance |
| `test` | `feature` | Tests |
| `chore` | `internal` | Maintenance |
| `ci` | `internal` | CI/CD |
| `style` | `internal` | Formatting |
| `build` | `internal` | Build system |
| `feat!` / `fix!` | `feature` / `bug` + `breaking` | Breaking changes |

**Special labels** (add when applicable):
- `security` - Security-related changes
- `upgrade` - Dependency upgrades
- `breaking` - Breaking changes (feat!, fix!, or BREAKING CHANGE in body)

## Detection Priority

1. PR title (e.g., `feat(auth): add OAuth2`)
2. Branch name (e.g., `feature/CUR-30-description`)
3. Dominant commit type in branch

## Commands

**Create PR with label:**
```bash
gh pr create --label "feature" --title "..." --body "..."
```

**Add label to existing PR:**
```bash
gh pr edit <pr-number> --add-label "feature"
```

**Multiple labels:**
```bash
gh pr create --label "feature" --label "breaking" ...
gh pr edit <pr-number> --add-label "feature,breaking"
```

**Verify labels:**
```bash
gh pr view <pr-number> --json labels --jq '.labels[].name'
```

## Workflow

**When creating PR:**
1. Analyze PR title for conventional commit type
2. Determine primary label from mapping table
3. Check for breaking changes (add `breaking` if found)
4. Check for security keywords (add `security` if found)
5. Apply labels: `gh pr create --label "primary" [--label "secondary"] ...`

**For existing unlabeled PR:**
1. Fetch PR details: `gh pr view <pr-number>`
2. Analyze title and commits
3. Apply labels: `gh pr edit <pr-number> --add-label "primary[,secondary]"`

## Requirements

- At least **one type label** required (check-labels workflow enforces this)
- Labels must exist in repository (verify with `gh label list`)
- Use lowercase label names
- Multiple labels OK when PR spans types

## Examples

```bash
# Feature PR
Title: "feat(storage): enhance Supabase Storage"
→ gh pr create --label "feature" ...

# Bug fix PR
Title: "fix(api): resolve timeout issues"
→ gh pr create --label "bug" ...

# Breaking change
Title: "feat!: redesign auth API"
→ gh pr create --label "feature" --label "breaking" ...

# Documentation
Title: "docs(readme): update setup guide"
→ gh pr create --label "docs" ...

# Internal maintenance
Title: "chore(deps): upgrade FastAPI"
→ gh pr create --label "internal" --label "upgrade" ...
```

---

<!-- Version: v2 - Simplified: 2025-10-25 -->
1 change: 0 additions & 1 deletion .copier/.copier-answers.yml.jinja

This file was deleted.

26 changes: 0 additions & 26 deletions .copier/update_dotenv.py

This file was deleted.

31 changes: 31 additions & 0 deletions .cursorignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Cursor ignore file
# Files and directories to exclude from Cursor's context

# Dependencies
node_modules/
.venv/
__pycache__/
*.pyc

# Build outputs
dist/
build/
*.egg-info/

# Test outputs
.pytest_cache/
.coverage
htmlcov/
/test-results/
/playwright-report/
/blob-report/
/playwright/.cache/

# Large files
*.log
*.sqlite
*.db

# Note: .env is NOT ignored - Cursor can read it
# This is helpful for development but be careful not to expose secrets

45 changes: 0 additions & 45 deletions .env

This file was deleted.

Loading
Loading