Skip to content
Descoped Source Code Portalv2.2.13
PollingSign in

Releases

49 releases kept
Up to date
  1. v0.3.3 Release v0.3.3

    descoped/fastapi-testingGitHuboranheim

    Maintenance & Dependency Release

    Release notes

    Maintenance & Dependency Release

    The library API is unchanged from v0.3.2 — src/fastapi_testing is byte-identical. This release modernizes dependencies (security fixes + latest compatible versions) and CI tooling.

    Dependencies

    • Security updates: starlette, pygments, and pytest moved to patched releases.
    • Minimums raised to the latest releases that still support Python ≥ 3.11:
      • Runtime: fastapi>=0.137.2, starlette>=1.3.1, uvicorn>=0.49.0, websockets>=16.0
      • Dev/build: pytest>=9.1.0, pytest-asyncio>=1.4.0, pytest-cov>=7.1.0, pydantic>=2.13.4, ruff>=0.15.17, hatchling>=1.30.1

    Note for consumers: installing fastapi-testing 0.3.3 now pulls in the newer FastAPI / Starlette / Uvicorn minimums listed above.

    CI / Tooling

    • GitHub Actions upgraded to current majors: checkout v7, setup-python v6, setup-uv v8.2.0, codecov-action v7, attest-build-provenance v4.
    • Fixed the pinned uv version in CI (0.5.11 → 0.11.13) so it can parse the current revision = 3 lockfile.
    • "Build and Test" now runs on pull requests.

    Compatibility

    • Python 3.11–3.13. No public API changes; no migration required.

    Full Changelog: https://github.com/descoped/fastapi-testing/compare/v0.3.2...v0.3.3

  2. v0.3.2

    descoped/dddnsGitHubgithub-actions[bot] (automation)

    dddns v0.3.2 (2026-04-19T00:40:29Z)

    Release notes

    dddns v0.3.2 (2026-04-19T00:40:29Z)

    Changelog

    Features

    • 96260aa143a5d86ab1ed6b3e77b5e5e2dacf9c05 feat(aws-lambda): add ?dry-run=true query param + fix aws v6 deprecations

    Installation

    Ubiquiti Dream Machine (UDM/UDR)

    curl -fsL https://raw.githubusercontent.com/descoped/dddns/main/scripts/install-on-unifi-os.sh | bash -s
    

    macOS

    brew tap descoped/tap
    brew install dddns
    

    Manual

    Download the appropriate binary from the assets below.

  3. v0.3.1 Release v0.3.1

    descoped/psycopg-toolkitGitHuboranheim

    🎯 Simplified pgvector Support

    Release notes

    🎯 Simplified pgvector Support

    This release simplifies pgvector integration by removing the pgvector-python library dependency and using native JSON parsing instead. This results in zero external dependencies, better Pydantic compatibility, and simpler code.

    ✨ What's Changed

    Removed Dependencies

    • Removed pgvector-python dependency - No longer required for vector support
    • Removed numpy dependency - Vector data returned as native Python list[float]

    Simplified Implementation

    • PostgreSQL returns vectors as strings like '[0.1,0.2,0.3]'
    • Automatically parsed to list[float] using built-in JSON parsing
    • Removed 28 lines of adapter registration complexity
    • No async adapter registration needed

    Performance

    • Negligible overhead: <0.1ms per vector for JSON parsing
    • For 1000 vectors: ~10-100ms difference vs adapter (1-10% overhead)
    • Completely acceptable for typical LLM embedding use cases

    🚀 Key Benefits

    ✅ Zero External Dependencies - No pgvector-python, no numpy required ✅ Simpler Code - Removed async adapter registration logic ✅ Perfect Pydantic Compatibility - Returns list[float], not numpy.ndarray ✅ No Breaking Changes - Same public API, drop-in upgrade ✅ All Tests Passing - 227 tests with zero regressions

    📦 Installation

    pip install psycopg-toolkit==0.3.1
    

    💻 Usage Example

    from pydantic import BaseModel
    from psycopg_toolkit import BaseRepository
    from uuid import UUID
    
    class DocumentEmbedding(BaseModel):
        id: UUID
        document_id: UUID
        embedding: list[float]  # Auto-detected as vector field
        metadata: dict[str, Any] | None = None
    
    class EmbeddingRepository(BaseRepository[DocumentEmbedding, UUID]):
        def __init__(self, db_connection):
            super().__init__(
                db_connection=db_connection,
                table_name="embeddings",
                model_class=DocumentEmbedding,
                primary_key="id",
                auto_detect_vector=True,  # Automatically detects list[float]
            )
    
    # Usage - works seamlessly with PostgreSQL pgvector extension
    embedding_vector = [0.1] * 384  # 384-dimensional vector
    doc = DocumentEmbedding(
        id=uuid4(),
        document_id=uuid4(),
        embedding=embedding_vector,
        metadata={"model": "all-MiniLM-L6-v2"}
    )
    
    created = await repo.create(doc)
    assert isinstance(created.embedding, list)  # Returns list[float]!
    

    🔧 Technical Details

    Before (v0.3.0):

    • Required pgvector-python>=0.4.1 dependency
    • Used register_vector_async() adapter registration
    • Returned vectors as numpy.ndarray
    • Required numpy as transitive dependency

    After (v0.3.1):

    • No external dependencies needed
    • Simple JSON parsing with JSONHandler.deserialize()
    • Returns vectors as native Python list[float]
    • Direct Pydantic compatibility

    📝 Full Changelog

    Commits:

    • 82ad82a - refactor: Remove pgvector-python dependency, use JSON parsing for vectors
    • Updated documentation in .claude/CLAUDE.md
    • Removed adapter registration from BaseRepository
    • Added vector field parsing in _postprocess_data()

    Files Changed: 4 files (+37, -152 lines)

    • pyproject.toml - Removed pgvector dependency
    • src/psycopg_toolkit/repositories/base.py - Simplified vector handling
    • .claude/CLAUDE.md - Updated documentation
    • uv.lock - Dependency updates

    🧪 Testing

    All 227 tests passing:

    • 12 vector field unit tests
    • 4 pgvector integration tests
    • 211 other tests (JSONB, arrays, dates, transactions, etc.)
    • Zero regressions

    ⚠️ Breaking Changes

    None - This is a drop-in replacement for v0.3.0. The public API remains identical.


    Full Changelog: https://github.com/descoped/psycopg-toolkit/compare/v0.3.0...v0.3.1

  4. v0.1.1 Release v0.1.1 - Performance & SQLite Optimization

    descoped/mcp-pkg-localGitHuboranheim

    🚀 Major Performance Improvements

    Release notes

    🚀 Major Performance Improvements

    High-Performance SQLite Cache

    • 40x faster validity checks (0.03ms vs 1.2ms)
    • WAL mode for optimized concurrent access
    • Prepared statements for efficient queries
    • MessagePack serialization for binary data storage
    • Response times: ~150ms scan, ~10ms read, ~5ms cache hits

    Token Efficiency Optimizations

    • 90% token reduction for scan-packages (20K → 2K tokens)
    • 99% reduction with summary mode (20K → 200 tokens)
    • 94% reduction with lazy loading (5K → 300 tokens)
    • Smart limits: Default 50 packages for optimal LLM performance

    ✨ New Features

    Advanced Filtering System

    • 📊 Summary Mode: Ultra-efficient package counts only
    • 🔍 Regex Filtering: Pattern-based package selection
    • 📦 Category Filtering: Production vs development dependencies
    • 🏷️ Group Filtering: Pre-defined groups (testing, linting, building, etc.)
    • 🚫 Type Exclusion: Optionally exclude @types packages

    Enhanced Package Intelligence

    • 📈 Relevance Scoring: Prioritizes direct dependencies over transitive
    • 🎯 Smart Prioritization: Project dependencies ranked higher
    • 🌲 Lazy Loading: File trees loaded on-demand for faster navigation
    • 🔄 Package Scoring: Popular packages get higher relevance scores

    Developer Experience

    • 🛠️ TypeScript 5.9+: Strict mode with full type safety
    • 📦 ES Modules: Modern import maps (#utils, #tools, etc.)
    • 🧪 Comprehensive Testing: 59 tests with 100% pass rate
    • 🔧 Better Error Handling: Actionable error messages with suggestions

    🏗️ Architecture Improvements

    Simplified Caching

    • Removed 350+ lines of dead JSON fallback code
    • SQLite-only implementation (no unnecessary fallbacks)
    • 87% code reduction in cache.ts (407 → 53 lines)
    • Synchronous operations for better performance

    Test Infrastructure

    • Sequential test execution to prevent SQLite database locking
    • Directory-based cache naming for proper test isolation
    • 100% reliable test suite (54/54 tests pass consistently)
    • 60-second timeout for performance-heavy operations

    Code Quality

    • 0 ESLint errors/warnings
    • 0 TypeScript errors
    • Safer null handling with nullish coalescing (??)
    • Proper type definitions eliminating any types

    📊 Statistics

    Metric Value
    Files changed 53
    Insertions +8,140
    Deletions -2,464
    Net change +5,676 lines
    Test coverage 59 tests (100% pass rate)
    Dependencies 420 packages (0 vulnerabilities)
    Build time ~2s (clean environment)

    🐛 Bug Fixes

    • Fixed SQLite database locking in concurrent test execution
    • Resolved test robustness with better package detection
    • Fixed TypeScript path mapping for #utils/sqlite-cache
    • Improved cache sharing between scan and read operations
    • Enhanced error handling and validation across all tools

    🔧 Technical Changes

    Cache System

    • UnifiedCache now SQLite-only (removed PartitionedCache, IndexCache)
    • Cache stored in .pkg-local-cache/cache.db (or test-specific variants)
    • Automatic WAL mode for concurrent access
    • Directory-based naming for test isolation
    • 1-hour TTL with smart invalidation

    Test Infrastructure

    • vitest.config.ts: Sequential execution with pool: 'forks', singleFork: true
    • Test timeout: Increased to 60s for performance benchmarks
    • Cache isolation: Directory-based DB naming prevents conflicts
    • 100% reliability: No more SQLite locking errors

    API Consistency

    • All cache methods now synchronous
    • Improved type safety across all modules
    • Better error messages with actionable suggestions
    • Consistent logging and debugging output

    🏃♂️ Performance Benchmarks

    Operation v0.1.0 v0.1.1 Improvement
    Cache validity check 1.2ms 0.03ms 40x faster
    Full scan tokens 20,000 2,000 90% reduction
    Summary mode tokens N/A 200 99% reduction
    Lazy loading tokens 5,000 300 94% reduction
    Cache hit response 50ms 5ms 10x faster
    Test suite reliability 85% 100% Consistent

    Full Changelog: v0.1.0...v0.1.1

  5. v1.0.0 Release v1.0.0

    descoped/mcp-web-scraperGitHuboranheim

    Features**

    Release notes

    Features

    🍪 Advanced Cookie Consent Handling

    • 30+ Languages: Norwegian, English, German, French, Spanish, Italian, and more
    • 25+ Frameworks: OneTrust, Quantcast, Cookiebot, TrustArc, and others
    • 100% Success Rate: Tested on major European and American news sites
    • Sub-second Performance: <1000ms average consent handling

    🔌 MCP Protocol Compliance

    • Perfect 10/10 Score: Full MCP 2024-11-05 specification compliance
    • Real-time Progress: 5-stage workflow tracking with SSE notifications
    • Content Streaming: Live content delivery during extraction
    • TypeScript Native: Complete type safety and IntelliSense support

    🏆 Complete Browser Automation (29 Tools)

    • 100% Microsoft Playwright MCP Parity: All 29 tools implemented
    • Core Interactions: Navigation, clicking, typing, form handling, dialogs
    • Advanced Features: PDF generation, console monitoring, accessibility testing
    • Session Management: Tab management, history navigation, network monitoring
    • AI-Powered Vision: Element finding, page annotation, JavaScript execution
    • Session Persistence: Maintain browser state across tool calls
    • Cookie Consent: Superior handling that Microsoft's implementation lacks
  6. v0.4.4 Release v0.4.4

    descoped/async-task-workerGitHuboranheim

    Release Notes v0.4.4

    Release notes

    Release Notes v0.4.4

    🚀 New Features

    Cache Metadata Tracking

    • Added from_cache metadata field to all task responses and status objects
    • Tasks now indicate whether their results were served from cache (true) or freshly computed (false)
    • Available in all API endpoints: /api/v1/tasks, /api/v1/tasks/{task_id}, and task listings

    Enhanced Completion Callbacks

    • Updated completion callback signature to include cache metadata: (task_id, result, from_cache)
    • Backward compatibility maintained - existing callbacks without the from_cache parameter continue to work
    • Cache hits and fresh computations are now distinguishable in callback handlers

    🔧 Improvements

    API Enhancements

    • All task response models now include the from_cache boolean field
    • Task serialization (.to_dict()) includes cache metadata
    • Consistent cache metadata across all task management operations

    Testing

    • Added comprehensive test coverage for cache metadata functionality
    • Tests verify cache metadata in both direct task execution and API responses
    • Ensures cache metadata is properly serialized and deserialized

    📦 Dependencies

    • Updated redis: 6.1.0 → 6.2.0

    🔄 Breaking Changes

    None - This release maintains full backward compatibility with existing code.

    💡 Usage Examples

    Checking if a result came from cache:

    task_info = await worker.get_task_info(task_id)
    if task_info.from_cache:
        print("Result was served from cache")
    else:
        print("Result was freshly computed")
    

    Using the enhanced completion callback:

    async def on_task_complete(task_id: str, result: Any, from_cache: bool):
        if from_cache:
            logger.info(f"Cache hit for task {task_id}")
        else:
            logger.info(f"Fresh computation for task {task_id}")
    
    # Old callbacks still work:
    async def legacy_callback(task_id: str, result: Any):
        logger.info(f"Task {task_id} completed")
    

    API Response Example:

    {
      "id": "task-123",
      "status": "completed",
      "result": {"value": "computed_result"},
      "from_cache": true,
      "progress": 1.0,
      "metadata": {}
    }
    

    This release enhances observability and debugging capabilities while maintaining full backward compatibility with existing applications.

  7. v0.1.3 Release v0.1.3

    descoped/aippGitHuboranheim

    Implemented PromptBuilder with composable TextProcessors.

    Release notes

    Implemented PromptBuilder with composable TextProcessors.

    Created a modular system for AI prompt engineering with a fluent interface.

    Key components:

    • PromptBuilder with method chaining for prompt construction
    • TextProcessor protocol for composable transformations
    • Built-in processors for common patterns: variables, JSON, step-by-step, chain-of-thought, few-shot examples, structured output, etc.
    • Support for custom processors via lambda functions
  8. 2.0.1 io.descoped.secrets:secrets-provider-safe-configuration

    descoped/secrets-provider-safe-configurationMaven

  9. 2.0.1 io.descoped.secrets:secrets-provider-google-secret-manager

    descoped/secrets-provider-google-secret-managerMaven

  10. 2.0.1 io.descoped.secrets:secrets-provider-dynamic-configuration

    descoped/secrets-provider-dynamic-configurationMaven

  11. 2.0.3 io.descoped.secrets:secrets-client-api

    descoped/secrets-client-apiMaven

  12. 2.0.1 io.descoped.encryption:encryption-util

    descoped/encryption-utilMaven

  13. 2.0.0 io.descoped.config:dynamic-configuration

    descoped/dynamic-configurationMaven

  14. 2.0.1 io.descoped.spi:service-provider-api

    descoped/service-provider-apiMaven