Releases: AndreaBozzo/Ceres
Releases · AndreaBozzo/Ceres
v0.1.1
Re-release because ceres-cli apparently is already taken on Crates.io (naming conflict).
CLI package is now named ceres-search.
What's New in v0.1.1
Changed
- Renamed CLI crate from
ceres-clitoceres-search(name conflict on crates.io)
What Was in v0.1.0 (re-ported)
Note: v0.1.0 was delisted due to the ceres-cli ( doesn't belong or connected in any way to this project ) naming conflict on Crates.io. Those features are now included here.
Added
- Multi-portal batch harvesting via
portals.tomlconfiguration file - Delta harvesting with content hash tracking for incremental updates
- Migration tracking to prevent re-execution of applied migrations
- Structured error handling for Gemini API with detailed error information
GeminiErrorKindenum for type-safe error classification (Authentication, RateLimit, QuotaExceeded, ServerError, NetworkError, Unknown)GeminiErrorDetailsstruct with error kind, message, and HTTP status codeclassify_gemini_error()helper function for centralized error classification- Sync service layer for cleaner code organization
- Improved test coverage for sync and config modules
Changed
- Refactored Gemini error handling to use structured types instead of strings
- Replaced
AppError::GeminiError(String)withAppError::GeminiError(GeminiErrorDetails) - Extracted sync logic into dedicated service layer
- Updated Gemini API request to include API key in headers
- Replaced string parsing in
user_message()with pattern matching - Updated
is_retryable()to intelligently handle different Gemini error types
Fixed
- Gemini API key now passed in headers per Google API documentation
Full Changelog: v0.0.1...v0.1.1
Ceres v0.0.1 - Initial Release
🌾 Ceres v0.0.1
Semantic search engine for open data portals
Features
- CKAN Harvester — Fetch datasets from any CKAN-compatible portal with concurrent processing
- Semantic Search — Find datasets by meaning using Google Gemini embeddings (text-embedding-004)
- Multi-format Export — Export to JSON, JSON Lines, or CSV
- Database Statistics — Monitor indexed datasets and portals
Tech Stack
| Component | Technology |
|---|---|
| Language | Rust 1.85+ (async with Tokio) |
| Database | PostgreSQL 16+ with pgvector |
| Embeddings | Google Gemini text-embedding-004 (768 dims) |
| Portal Protocol | CKAN API v3 |
Quick Start
# Start PostgreSQL with pgvector
docker-compose up -d
# Run migrations
psql $DATABASE_URL -f migrations/202511290001_init.sql
# Configure
cp .env.example .env
# Add your GEMINI_API_KEY
# Build & run
cargo build --release
./target/release/ceres harvest https://dati.comune.milano.it
./target/release/ceres search "trasporto pubblico"Requirements
- Rust 1.85+
- Docker & Docker Compose
- Google Gemini API key (get one free)
Full Changelog to come soon.
First release! 🎉