Skip to content

Commit af28062

Browse files
AnkushMalaker01PrathamSthestumonkey0xrushi
authored
Release v0.1.0 (#234)
* audio upload extension with gdrive credentials * FIX: API parameters * UPDATE: tmp files cleanup n code refactored as per review * REFACTOR: minor refactor as per review * REFACTOR: minor update as per review * UPDATE: gdrive sync logic * REFACTOR: code update as per gdrive and update credential client * REFACTOR: validation updated - as per review from CR * UPDATE: code has been refactore for UUID for diffrent audio upload sources * REFACTOR: updated code as per review * Update documentation and configuration to reflect the transition from 'friend-backend' to 'chronicle-backend' across various files, including setup instructions, Docker configurations, and service logs. * Update test script to use docker-compose-test.yml for all test-related operations * Added standard MIT license * Fix/cleanup model (#219) * refactor memory * add config * docstring * more cleanup * code quality * code quality * unused return * DOTTED GET * Refactor Docker and CI configurations - Removed the creation of `memory_config.yaml` from the CI workflow to streamline the process. - Updated Docker Compose files to mount `config.yml` for model registry and memory settings in both services. - Added new dependencies for Google API clients in `uv.lock` to support upcoming features. * Update configuration files for model providers and Docker setup - Changed LLM, embedding, and STT providers in `config.yml` to OpenAI and Deepgram. - Removed read-only flag from `config.yml` in Docker Compose files to allow UI configuration saving. - Updated memory configuration endpoint to accept plain text for YAML input. * Update transcription job handling to format speaker IDs - Changed variable name from `speaker_name` to `speaker_id` for clarity. - Added logic to convert integer speaker IDs from Deepgram to string format for consistent speaker labeling. * Remove loading of backend .env file in test environment setup - Eliminated the code that loads the .env file from the backends/advanced directory, simplifying the environment configuration for tests. * Enhance configuration management and setup wizard - Updated README to reflect the new setup wizard process. - Added functionality to load and save `config.yml` in the setup wizard, including default configurations for LLM and memory providers. - Improved user feedback during configuration updates, including success messages for configuration file updates. - Enabled backup of existing `config.yml` before saving changes. * Enhance HTTPS configuration in setup wizard - Added functionality to check for existing SERVER_IP in the environment file and prompt the user to reuse or enter a new IP for SSL certificates. - Improved user prompts for server IP/domain input during HTTPS setup. - Updated default behavior to use existing IP or localhost based on user input. - Changed RECORD_ONLY_ENROLLED_SPEAKERS setting in the .env template to false for broader access. * Add source parameter to audio file writing in websocket controller - Included a new `source` parameter with the value "websocket" in the `_process_batch_audio_complete` function to enhance audio file context tracking. --------- Co-authored-by: 0xrushi <[email protected]> * fix/broken-tests (#230) * refactor memory * add config * docstring * more cleanup * code quality * code quality * unused return * DOTTED GET * Refactor Docker and CI configurations - Removed the creation of `memory_config.yaml` from the CI workflow to streamline the process. - Updated Docker Compose files to mount `config.yml` for model registry and memory settings in both services. - Added new dependencies for Google API clients in `uv.lock` to support upcoming features. * Update configuration files for model providers and Docker setup - Changed LLM, embedding, and STT providers in `config.yml` to OpenAI and Deepgram. - Removed read-only flag from `config.yml` in Docker Compose files to allow UI configuration saving. - Updated memory configuration endpoint to accept plain text for YAML input. * Update transcription job handling to format speaker IDs - Changed variable name from `speaker_name` to `speaker_id` for clarity. - Added logic to convert integer speaker IDs from Deepgram to string format for consistent speaker labeling. * Remove loading of backend .env file in test environment setup - Eliminated the code that loads the .env file from the backends/advanced directory, simplifying the environment configuration for tests. * Enhance configuration management and setup wizard - Updated README to reflect the new setup wizard process. - Added functionality to load and save `config.yml` in the setup wizard, including default configurations for LLM and memory providers. - Improved user feedback during configuration updates, including success messages for configuration file updates. - Enabled backup of existing `config.yml` before saving changes. * Enhance HTTPS configuration in setup wizard - Added functionality to check for existing SERVER_IP in the environment file and prompt the user to reuse or enter a new IP for SSL certificates. - Improved user prompts for server IP/domain input during HTTPS setup. - Updated default behavior to use existing IP or localhost based on user input. - Changed RECORD_ONLY_ENROLLED_SPEAKERS setting in the .env template to false for broader access. * Add source parameter to audio file writing in websocket controller - Included a new `source` parameter with the value "websocket" in the `_process_batch_audio_complete` function to enhance audio file context tracking. * Refactor error handling in system controller and update memory config routes - Replaced ValueError with HTTPException for better error handling in `save_diarization_settings` and `validate_memory_config` functions. - Introduced a new Pydantic model, `MemoryConfigRequest`, for validating memory configuration requests in the system routes. - Updated the `validate_memory_config` endpoint to accept the new request model, improving input handling and validation. --------- Co-authored-by: 0xrushi <[email protected]> * Feat/add obsidian 3 (#233) * obsidian support * neo4j comment * cleanup code * unused line * unused line * Fix MemoryEntry object usage in chat service * comment * feat(obsidian): add obsidian memory search integration to chat * unit test * use rq * neo4j service * typefix * test fix * cleanup * cleanup * version changes * profile * remove unused imports * Refactor memory configuration validation endpoints - Removed the deprecated `validate_memory_config_raw` endpoint and replaced it with a new endpoint that accepts plain text for validation. - Updated the existing `validate_memory_config` endpoint to clarify that it now accepts JSON input. - Adjusted the API call in the frontend to point to the new validation endpoint. * Refactor health check model configuration loading - Updated the health check function to load model configuration from the models registry instead of the root config. - Improved error handling by logging warnings when model configuration loading fails. --------- Co-authored-by: 0xrushi <[email protected]> * Update .gitignore to exclude all files in app/ios and app/android directories (#238) * fix: Copy full source code in speaker-recognition Dockerfile (#243) Adds COPY src/ src/ step after dependency installation to ensure all source files are available in the Docker image. This improves build caching while ensuring complete source code is present. * Enhance configuration management and add new setup scripts (#235) * Enhance configuration management and add new setup scripts - Updated .gitignore to include config.yml and its template. - Added config.yml.template for default configuration settings. - Introduced restart.sh script for service management. - Enhanced services.py to load config.yml and check for Obsidian/Neo4j integration. - Updated wizard.py to prompt for Obsidian/Neo4j configuration during setup and create config.yml from template if it doesn't exist. * Refactor transcription providers and enhance configuration management - Updated Docker Compose files to include the new Neo4j service configuration. - Added support for Obsidian/Neo4j integration in the setup process. - Refactored transcription providers to utilize a registry-driven approach for Deepgram and Parakeet. - Enhanced error handling and logging in transcription processes. - Improved environment variable management in test scripts to prioritize command-line overrides. - Removed deprecated Parakeet provider implementation and streamlined audio stream workers. * Update configuration management and enhance file structure, add test-matrix (#237) * Update configuration management and enhance file structure - Refactored configuration file paths to use a dedicated `config/` directory, including updates to `config.yml` and its template. - Modified service scripts to load the new configuration path for `config.yml`. - Enhanced `.gitignore` to include the new configuration files and templates. - Updated documentation to reflect changes in configuration file locations and usage. - Improved setup scripts to ensure proper creation and management of configuration files. - Added new test configurations for various provider combinations to streamline testing processes. * Add test requirements and clean up imports in wizard.py - Introduced a new `test-requirements.txt` file to manage testing dependencies. - Removed redundant import of `shutil` in `wizard.py` to improve code clarity. * Add ConfigManager for unified configuration management - Introduced a new `config_manager.py` module to handle reading and writing configurations from `config.yml` and `.env` files, ensuring backward compatibility. - Refactored `ChronicleSetup` in `backends/advanced/init.py` to utilize `ConfigManager` for loading and updating configurations, simplifying the setup process. - Removed redundant methods for loading and saving `config.yml` directly in `ChronicleSetup`, as these are now managed by `ConfigManager`. - Enhanced user feedback during configuration updates, including success messages for changes made to configuration files. * Refactor transcription provider configuration and enhance setup process - Updated `.env.template` to clarify speech-to-text configuration and removed deprecated options for Mistral. - Modified `docker-compose.yml` to streamline environment variable management by removing unused Mistral keys. - Enhanced `ChronicleSetup` in `init.py` to provide clearer user feedback and updated the transcription provider selection process to rely on `config.yml`. - Improved error handling in the websocket controller to determine the transcription provider from the model registry instead of environment variables. - Updated health check routes to reflect the new method of retrieving the transcription provider from `config.yml`. - Adjusted `config.yml.template` to include comments on transcription provider options for better user guidance. * Enhance ConfigManager with deep merge functionality - Updated the `update_memory_config` method to perform a deep merge of updates into the memory configuration, ensuring nested dictionaries are merged correctly. - Added a new `_deep_merge` method to handle recursive merging of dictionaries, improving configuration management capabilities. * Refactor run-test.sh and enhance memory extraction tests - Removed deprecated environment variable handling for TRANSCRIPTION_PROVIDER in `run-test.sh`, streamlining the configuration process. - Introduced a new `run-custom.sh` script for executing Robot tests with custom configurations, improving test flexibility. - Enhanced memory extraction tests in `audio_keywords.robot` and `memory_keywords.robot` to include detailed assertions and result handling. - Updated `queue_keywords.robot` to fail fast if a job is in a 'failed' state when expecting 'completed', improving error handling. - Refactored `test_env.py` to load environment variables with correct precedence, ensuring better configuration management. * unify tests to robot test, add some more clean up * Update health check configuration in docker-compose-test.yml (#241) - Increased the number of retries from 5 to 10 for improved resilience during service readiness checks. - Extended the start period from 30s to 60s to allow more time for services to initialize before health checks commence. * Add step to create test configuration file in robot-tests.yml - Introduced a new step in the GitHub Actions workflow to copy the test configuration file from tests/configs/deepgram-openai.yml to a new config/config.yml. - Added logging to confirm the creation of the test config file, improving visibility during the test setup process. * remove cache step since not required * coderabbit comments * Refactor ConfigManager error handling for configuration file loading - Updated the ConfigManager to raise RuntimeError exceptions when the configuration file is not found or is invalid, improving error visibility and user guidance. - Removed fallback behavior that previously returned the current directory, ensuring users are explicitly informed about missing or invalid configuration files. * Refactor _find_repo_root method in ConfigManager - Updated the _find_repo_root method to locate the repository root using the __file__ location instead of searching for config/config.yml, simplifying the logic and improving reliability. - Removed the previous error handling that raised a RuntimeError if the configuration file was not found, as the new approach assumes config_manager.py is always at the repo root. * Enhance speaker recognition service integration and error handling (#245) * Enhance speaker recognition service integration and error handling - Updated `docker-compose-test.yml` to enable speaker recognition in the test environment and added a new `speaker-service-test` service for testing purposes. - Refactored `run-test.sh` to improve the execution of Robot Framework tests from the repository root. - Enhanced error handling in `speaker_recognition_client.py` to return detailed error messages for connection issues. - Improved error logging in `speaker_jobs.py` to handle and report errors from the speaker recognition service more effectively. - Updated `Dockerfile` to copy the full source code after dependencies are cached, ensuring all necessary files are included in the image. * Remove integration tests workflow and enhance robot tests with HF_TOKEN verification - Deleted the `integration-tests.yml` workflow file to streamline CI processes. - Updated `robot-tests.yml` to include verification for the new `HF_TOKEN` secret, ensuring all required secrets are checked before running tests. * Fix key access in system admin tests to use string indexing for speakers data * Refactor Robot Framework tests and enhance error handling in memory services - Removed the creation of the test environment file from the GitHub Actions workflow to streamline setup. - Updated the Robot Framework tests to utilize a unified test script for improved consistency. - Enhanced error messages in the MemoryService class to provide more context on connection failures for LLM and vector store providers. - Added critical checks for API key presence in the OpenAIProvider class to ensure valid credentials are provided before proceeding. - Adjusted various test setup scripts to use a centralized BACKEND_DIR variable for better maintainability and clarity. * Refactor test container cleanup in run-robot-tests.sh - Updated the script to dynamically construct container names from docker-compose services, improving maintainability and reducing hardcoded values. - Enhanced the cleanup process for stuck test containers by utilizing the COMPOSE_PROJECT_NAME variable. * Enhance run-robot-tests.sh for improved logging and cleanup - Set absolute paths for consistent directory references to simplify navigation. - Capture container logs, status, and resource usage for better debugging. - Refactor cleanup process to utilize dynamic backend directory references, improving maintainability. - Ensure proper navigation back to the tests directory after operations. * Add speaker recognition configuration and update test script defaults - Introduced speaker recognition settings in config.yml.template, allowing for easy enable/disable and service URL configuration. - Updated run-robot-tests.sh to use a test-specific configuration file that disables speaker recognition for improved CI performance. - Modified deepgram-openai.yml to disable speaker recognition during CI tests to enhance execution speed. * Refactor speaker recognition configuration management - Updated docker-compose-test.yml to clarify speaker recognition settings, now controlled via config.yml for improved CI performance. - Enhanced model_registry.py to include a dedicated speaker_recognition field for better configuration handling. - Modified speaker_recognition_client.py to load configuration from config.yml, allowing for dynamic enabling/disabling of the speaker recognition service based on the configuration. * Add minimum worker count verification to infrastructure tests - Introduced a new keyword to verify that the minimum number of workers are registered, enhancing the robustness of health checks. - Updated the worker count validation test to include a wait mechanism for worker registration, improving test reliability. - Clarified comments regarding expected worker counts to reflect the distinction between RQ and audio stream workers. * Update configuration management and enhance model handling - Added OBSIDIAN_ENABLED configuration to ChronicleSetup for improved feature toggling. - Introduced speaker_recognition configuration handling in model_registry.py to streamline model loading. - Refactored imports in deepgram.py to improve clarity and reduce redundancy. * Refactor configuration management in wizard and ChronicleSetup (#246) * Refactor configuration management in wizard and ChronicleSetup - Updated wizard.py to read Obsidian/Neo4j configuration from config.yml, enhancing flexibility and error handling. - Refactored ChronicleSetup to utilize ConfigManager for loading and verifying config.yml, ensuring a single source of truth. - Improved user feedback for missing configuration files and streamlined the setup process for memory and transcription providers. * Fix string formatting for error message in ChronicleSetup --------- Co-authored-by: 01PrathamS <[email protected]> Co-authored-by: Stu Alexandere <[email protected]> Co-authored-by: Stuart Alexander <[email protected]> Co-authored-by: 0xrushi <[email protected]>
1 parent 8f22daf commit af28062

File tree

119 files changed

+8090
-5999
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

119 files changed

+8090
-5999
lines changed

.github/workflows/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,6 @@ uv sync --dev
8686
cp .env.template .env.test
8787
# Add your API keys to .env.test
8888

89-
# Run test (modify CACHED_MODE in test_integration.py if needed)
90-
uv run pytest test_integration.py::test_full_pipeline_integration -v -s
89+
# Run Robot Framework integration tests
90+
uv run robot --outputdir test-results --loglevel INFO tests/integration/integration_test.robot
9191
```

.github/workflows/integration-tests.yml

Lines changed: 0 additions & 83 deletions
This file was deleted.

.github/workflows/robot-tests.yml

Lines changed: 19 additions & 137 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ jobs:
2828
env:
2929
DEEPGRAM_API_KEY: ${{ secrets.DEEPGRAM_API_KEY }}
3030
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
31+
HF_TOKEN: ${{ secrets.HF_TOKEN }}
3132
run: |
3233
echo "Verifying required secrets..."
3334
if [ -z "$DEEPGRAM_API_KEY" ]; then
@@ -38,8 +39,13 @@ jobs:
3839
echo "❌ ERROR: OPENAI_API_KEY secret is not set"
3940
exit 1
4041
fi
42+
if [ -z "$HF_TOKEN" ]; then
43+
echo "❌ ERROR: HF_TOKEN secret is not set"
44+
exit 1
45+
fi
4146
echo "✓ DEEPGRAM_API_KEY is set (length: ${#DEEPGRAM_API_KEY})"
4247
echo "✓ OPENAI_API_KEY is set (length: ${#OPENAI_API_KEY})"
48+
echo "✓ HF_TOKEN is set (length: ${#HF_TOKEN})"
4349
echo "✓ All required secrets verified"
4450
4551
- name: Set up Docker Buildx
@@ -61,7 +67,6 @@ jobs:
6167
uses: actions/setup-python@v5
6268
with:
6369
python-version: "3.12"
64-
cache: 'pip'
6570

6671
- name: Install uv
6772
uses: astral-sh/setup-uv@v4
@@ -72,148 +77,25 @@ jobs:
7277
run: |
7378
uv pip install --system robotframework robotframework-requests python-dotenv websockets
7479
75-
- name: Create test environment file
76-
working-directory: tests/setup
77-
run: |
78-
cat > .env.test << EOF
79-
# API URLs
80-
API_URL=http://localhost:8001
81-
BACKEND_URL=http://localhost:8001
82-
FRONTEND_URL=http://localhost:3001
83-
84-
# Test Admin Credentials
85-
86-
ADMIN_PASSWORD=test-admin-password-123
87-
88-
# API Keys (from GitHub secrets)
89-
OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}
90-
DEEPGRAM_API_KEY=${{ secrets.DEEPGRAM_API_KEY }}
91-
92-
# Test Configuration
93-
TEST_TIMEOUT=120
94-
TEST_DEVICE_NAME=robot-test
95-
EOF
96-
97-
- name: Start test environment
98-
working-directory: backends/advanced
99-
env:
100-
DEEPGRAM_API_KEY: ${{ secrets.DEEPGRAM_API_KEY }}
101-
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
102-
LLM_PROVIDER: openai
103-
TRANSCRIPTION_PROVIDER: deepgram
104-
MEMORY_PROVIDER: friend_lite
105-
run: |
106-
# Debug: Check if secrets are available
107-
echo "Checking environment variables..."
108-
echo "DEEPGRAM_API_KEY is set: $([ -n "$DEEPGRAM_API_KEY" ] && echo 'YES' || echo 'NO')"
109-
echo "OPENAI_API_KEY is set: $([ -n "$OPENAI_API_KEY" ] && echo 'YES' || echo 'NO')"
110-
echo "LLM_PROVIDER: $LLM_PROVIDER"
111-
echo "TRANSCRIPTION_PROVIDER: $TRANSCRIPTION_PROVIDER"
112-
113-
# Create memory_config.yaml from template (file is gitignored)
114-
echo "Creating memory_config.yaml from template..."
115-
cp memory_config.yaml.template memory_config.yaml
116-
117-
# Clean any existing test containers for fresh start
118-
echo "Cleaning up any existing test containers..."
119-
docker compose -f docker-compose-test.yml down -v || true
120-
121-
# Start ALL services in parallel - Docker Compose handles dependencies via healthchecks
122-
echo "Starting all services in parallel (docker-compose-test.yml)..."
123-
echo "Note: Using test compose file with source mounts for faster startup"
124-
125-
# Export API keys so docker-compose can use them
126-
export DEEPGRAM_API_KEY
127-
export OPENAI_API_KEY
128-
export LLM_PROVIDER
129-
export TRANSCRIPTION_PROVIDER
130-
export MEMORY_PROVIDER
131-
132-
DOCKER_BUILDKIT=0 docker compose -f docker-compose-test.yml up -d
133-
134-
# Show container status
135-
echo "Container status:"
136-
docker compose -f docker-compose-test.yml ps
137-
138-
# Single wait for backend readiness (backend depends_on ensures infra is ready)
139-
echo "Waiting for backend readiness (up to 120s)..."
140-
for i in {1..40}; do
141-
if curl -s http://localhost:8001/readiness > /dev/null 2>&1; then
142-
echo "✓ Backend is ready (all dependencies satisfied)"
143-
break
144-
fi
145-
# Show logs every 10 attempts to help debug
146-
if [ $((i % 10)) -eq 0 ]; then
147-
echo "Still waiting... showing recent logs:"
148-
docker compose -f docker-compose-test.yml logs --tail=20 friend-backend-test
149-
fi
150-
if [ $i -eq 40 ]; then
151-
echo "✗ Backend failed to start - showing full logs:"
152-
docker compose -f docker-compose-test.yml logs
153-
exit 1
154-
fi
155-
echo "Attempt $i/40..."
156-
sleep 3
157-
done
158-
159-
echo "✓ Backend is ready!"
160-
161-
# Verify workers are registered with Redis (Robot tests need stable workers)
162-
echo "Waiting for workers to register with Redis (up to 60s)..."
163-
for i in {1..30}; do
164-
WORKER_COUNT=$(docker compose -f docker-compose-test.yml exec -T workers-test uv run python -c 'from rq import Worker; from redis import Redis; import os; r = Redis.from_url(os.getenv("REDIS_URL", "redis://redis-test:6379/0")); print(len(Worker.all(connection=r)))' 2>/dev/null || echo "0")
165-
166-
if [ "$WORKER_COUNT" -ge 6 ]; then
167-
echo "✓ Found $WORKER_COUNT workers registered"
168-
# Show worker details
169-
docker compose -f docker-compose-test.yml exec -T workers-test uv run python -c 'from rq import Worker; from redis import Redis; import os; r = Redis.from_url(os.getenv("REDIS_URL", "redis://redis-test:6379/0")); workers = Worker.all(connection=r); print(f"Total registered workers: {len(workers)}"); [print(f" - {w.name}: queues={w.queue_names()}, state={w.get_state()}") for w in workers]'
170-
break
171-
fi
172-
173-
if [ $i -eq 30 ]; then
174-
echo "✗ Workers failed to register after 60s"
175-
echo "Showing worker logs:"
176-
docker compose -f docker-compose-test.yml logs --tail=50 workers-test
177-
exit 1
178-
fi
179-
180-
echo "Attempt $i/30: $WORKER_COUNT workers registered (waiting for 6+)..."
181-
sleep 2
182-
done
183-
184-
echo "✓ All services ready!"
185-
186-
- name: Verify checked out code
187-
working-directory: tests
188-
run: |
189-
echo "Current git commit:"
190-
git log -1 --oneline
191-
echo ""
192-
echo "Test files in current checkout:"
193-
find . -name "*.robot" -type f | head -10
194-
echo ""
195-
echo "Sample of tags in test files:"
196-
grep -h "\[Tags\]" endpoints/*.robot infrastructure/*.robot integration/*.robot 2>/dev/null | head -20 || echo "No tag files found"
197-
198-
- name: Clean previous test results
199-
working-directory: tests
80+
- name: Create test config.yml
20081
run: |
201-
echo "Cleaning any previous test results..."
202-
rm -rf results
203-
mkdir -p results
204-
echo "✓ Fresh results directory created"
82+
echo "Copying test configuration file..."
83+
mkdir -p config
84+
cp tests/configs/deepgram-openai.yml config/config.yml
85+
echo "✓ Test config.yml created from tests/configs/deepgram-openai.yml"
86+
ls -lh config/config.yml
20587
20688
- name: Run Robot Framework tests
20789
working-directory: tests
20890
env:
209-
# Required for backend imports in test libraries
210-
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
211-
OPENAI_BASE_URL: https://api.openai.com/v1
212-
OPENAI_MODEL: gpt-4o-mini
91+
# Required for test runner script
21392
DEEPGRAM_API_KEY: ${{ secrets.DEEPGRAM_API_KEY }}
93+
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
94+
HF_TOKEN: ${{ secrets.HF_TOKEN }}
95+
CLEANUP_CONTAINERS: "false" # Don't cleanup in CI - handled by workflow
21496
run: |
215-
# Run all tests (don't fail workflow to allow artifact upload)
216-
make all OUTPUTDIR=results
97+
# Use the unified test script that mirrors local development
98+
./run-robot-tests.sh
21799
TEST_EXIT_CODE=$?
218100
echo "test_exit_code=$TEST_EXIT_CODE" >> $GITHUB_ENV
219101
exit 0 # Don't fail here, we'll fail at the end after uploading artifacts
@@ -223,7 +105,7 @@ jobs:
223105
working-directory: backends/advanced
224106
run: |
225107
echo "=== Backend Logs (last 50 lines) ==="
226-
docker compose -f docker-compose-test.yml logs --tail=50 friend-backend-test
108+
docker compose -f docker-compose-test.yml logs --tail=50 chronicle-backend-test
227109
echo ""
228110
echo "=== Worker Logs (last 50 lines) ==="
229111
docker compose -f docker-compose-test.yml logs --tail=50 workers-test

.gitignore

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,16 @@
44
!**/.env.template
55
**/memory_config.yaml
66
!**/memory_config.yaml.template
7+
tests/setup/.env.test
8+
9+
# Main config (user-specific)
10+
config/config.yml
11+
!config/config.yml.template
12+
13+
# Config backups
14+
config/*.backup.*
15+
config/*.backup*
16+
717
example/*
818
**/node_modules/*
919
**/ollama-data/*
@@ -76,7 +86,8 @@ extras/openmemory-mcp/data/*
7686
backends/advanced/nginx.conf
7787
backends/advanced/Caddyfile
7888

79-
app/ios/Pods
89+
app/ios/*
90+
app/android/*
8091
results
8192
log.html
8293
output.xml

CLAUDE.md

Lines changed: 46 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,49 @@ This supports a comprehensive web dashboard for management.
1313

1414
**❌ No Backward Compatibility**: Do NOT add backward compatibility code unless explicitly requested. This includes fallback logic, legacy field support, or compatibility layers. Always ask before adding backward compatibility - in most cases the answer is no during active development.
1515

16+
## Initial Setup & Configuration
17+
18+
Chronicle includes an **interactive setup wizard** for easy configuration. The wizard guides you through:
19+
- Service selection (backend + optional services)
20+
- Authentication setup (admin account, JWT secrets)
21+
- Transcription provider configuration (Deepgram, Mistral, or offline ASR)
22+
- LLM provider setup (OpenAI or Ollama)
23+
- Memory provider selection (Chronicle Native with Qdrant or OpenMemory MCP)
24+
- Network configuration and HTTPS setup
25+
- Optional services (speaker recognition, Parakeet ASR)
26+
27+
### Quick Start
28+
```bash
29+
# Run the interactive setup wizard from project root
30+
uv run python wizard.py
31+
32+
# Or use the quickstart guide for step-by-step instructions
33+
# See quickstart.md for detailed walkthrough
34+
```
35+
36+
### Setup Documentation
37+
For detailed setup instructions and troubleshooting, see:
38+
- **[@quickstart.md](quickstart.md)**: Beginner-friendly step-by-step setup guide
39+
- **[@Docs/init-system.md](Docs/init-system.md)**: Complete initialization system architecture and design
40+
- **[@Docs/getting-started.md](Docs/getting-started.md)**: Technical quickstart with advanced configuration
41+
- **[@backends/advanced/SETUP_SCRIPTS.md](backends/advanced/SETUP_SCRIPTS.md)**: Setup scripts reference and usage examples
42+
- **[@backends/advanced/Docs/quickstart.md](backends/advanced/Docs/quickstart.md)**: Backend-specific setup guide
43+
44+
### Wizard Architecture
45+
The initialization system uses a **root orchestrator pattern**:
46+
- **`wizard.py`**: Root setup orchestrator for service selection and delegation
47+
- **`backends/advanced/init.py`**: Backend configuration wizard
48+
- **`extras/speaker-recognition/init.py`**: Speaker recognition setup
49+
- **Service setup scripts**: Individual setup for ASR services and OpenMemory MCP
50+
51+
Key features:
52+
- Interactive prompts with validation
53+
- API key masking and secure credential handling
54+
- Environment file generation with placeholders
55+
- HTTPS configuration with SSL certificate generation
56+
- Service status display and health checks
57+
- Automatic backup of existing configurations
58+
1659
## Development Commands
1760

1861
### Backend Development (Advanced Backend - Primary)
@@ -73,11 +116,11 @@ cp .env.template .env # Configure API keys
73116

74117
# Manual test execution (for debugging)
75118
source .env && export DEEPGRAM_API_KEY && export OPENAI_API_KEY
76-
uv run pytest tests/test_integration.py::test_full_pipeline_integration -v -s
119+
uv run robot --outputdir test-results --loglevel INFO ../../tests/integration/integration_test.robot
77120

78121
# Leave test containers running for debugging (don't auto-cleanup)
79122
CLEANUP_CONTAINERS=false source .env && export DEEPGRAM_API_KEY && export OPENAI_API_KEY
80-
uv run pytest tests/test_integration.py::test_full_pipeline_integration -v -s
123+
uv run robot --outputdir test-results --loglevel INFO ../../tests/integration/integration_test.robot
81124

82125
# Manual cleanup when needed
83126
docker compose -f docker-compose-test.yml down -v
@@ -347,7 +390,7 @@ docker compose up --build -d
347390

348391
### Testing Strategy
349392
- **Local Test Scripts**: Simplified scripts (`./run-test.sh`) mirror CI workflows for local development
350-
- **End-to-End Integration**: `test_integration.py` validates complete audio processing pipeline
393+
- **End-to-End Integration**: Robot Framework tests (`tests/integration/integration_test.robot`) validate complete audio processing pipeline
351394
- **Speaker Recognition Tests**: `test_speaker_service_integration.py` validates speaker identification
352395
- **Environment Flexibility**: Tests work with both local .env files and CI environment variables
353396
- **Automated Cleanup**: Test containers are automatically removed after execution

0 commit comments

Comments
 (0)