All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
venerelabs branding after
venerelabs.com expired (not renewed). Example company data uses
Example S.r.l.; package __author__ is Gianluca Mazza; landing-page
copyright is © 2024–2026 Gianluca Mazza (info@gianlucamazza.it).
PlatformDirs still uses the historical venerelabs appauthor so
Windows data/config paths stay put.create_nota_credito_from_fattura application command for creating credit notes from invoicesopenfatture fattura create-credit-note --from-invoice <id>DatiFattureCollegate XML element for linking credit notes to original invoicesfattura_originale_id, fattura_originale_numero, fattura_originale_data columns for document linkageopenfatture fattura generate-xml command now actually generates FatturaPA XML:
InvoiceService.generate_xml() and FatturaPA XML builder (no stubs, no mocks)--output for custom XML file path--dry-run to display XML without writing to diskTable.split() supportopenfatture cliente command group (list, show, create)openfatture fattura command group (list, show, create, add-line, generate-pdf, generate-xml, set-status)natura field on line items (N1-N7 codes for zero-rated, exempt, out-of-scope VAT)DatiCassaPrevidenziale model for social security contributions (TC01-TC22 codes)docs/SDI_TRANSPORT_READINESS.md (implementation guide, no live SDI emit)openfatture.lightning, extra
lightning, config flags, lifespan hook, tests). LND gRPC was never
product-complete. Docs archived under docs/history/lightning/.Settings.app_version tracks package __version__; bumpversion
pin aligned; technical debt docs updated for LangGraph default.platform.assistant_backends;
package __version__ is re-exported by subpackages; AISettings hydrates
credentials from platform AI_* (init/docs) with OPENFATTURE_AI_*
override precedence; coverage fail_under=49 in pyproject.ai, rag, ml only (all no longer includes lightning).langgraph_tool_loop).docs/releases/v2.1.0.md.assistant_backend / ASSISTANT_BACKEND: chat → langgraph.ChatAgent slimmed: single tool-loop via GraphAssistantBackend; keeps
structured-output and shared prompt helpers. Rollback path: ASSISTANT_BACKEND=chat.AssistantRuntime constructs only the selected backend (no always-on dual init).core_ready, assistant_ready, checks, and next_steps
(human table + --json)./help, /exit, /session, /clear.chat_agent_tool_loop).ai.tools.registry is a package (core + defaults) with stable public imports..env overwrite; post-setup messaging is honesty-first.openfatture.ai.runtime.AssistantRuntime) as the
only product entry for CLI and interactive mode.billing.application,
payment.application, sdi.application, and pdf.tool_ops.ai.runtime.graph).--session resume.lightning_allow_mock (default false), RAG reindex callback
required, MissingExtraError for optional stacks.ai, rag, ml, lightning, all.ARCHITECTURE.md, CORE_VS_EXTENSIONS.md, redesign notes.billing, events, hooks, platform, pdf replace
core, utils, and services.pdf.noqa / type: ignore / pragma: no cover suppressions.See docs/releases/v2.0.0.md for migration details.
1.3.0 codebase.pyproject.toml and made type checking blocking in CI.Event System & Audit Trail:
EventLog database model for complete event audit trail with UUID, timestamps, and entity trackingEventPersistenceListener (priority -100, error isolation)Event Repository:
Event Analytics Service:
CLI Event Commands (openfatture events):
list - List events with rich filtering (type, entity, date range, limit)show <event-id> - Detailed event view with JSON-formatted data and metadatastats [--last-days N] - Statistics summary with event type and entity breakdownstimeline <entity-type> <entity-id> - Entity event timeline with tree-style visualizationsearch <query> [--limit N] - Full-text search with result snippetstypes - List all event types with countsdashboard [--days N] - Comprehensive analytics dashboard with:
trends [--days N] [--type TYPE] - Time-based activity trends with bar chartsVisualizations:
openfatture payment import-statement command alias in favour of openfatture payment import.Payment Tracking Module - Enterprise-grade bank reconciliation system:
Domain Models:
BankAccount: Multi-account support with IBAN validationBankTransaction: Full transaction lifecycle (UNMATCHED MATCHED IGNORED)PaymentReminder: Automated payment tracking with configurable strategiesMatchResult, ReconciliationResult for type-safe operationsTransactionStatus, MatchType, ReminderStatus, ReminderStrategyApplication Services:
MatchingService: Intelligent payment matching with pluggable algorithms (Facade pattern)ReconciliationService: Saga-based workflow for multi-step reconciliationReminderScheduler: Automated payment reminder system with escalation strategiesMatching Strategies (Strategy pattern):
ExactAmountMatcher: Amount + date window matching (configurable tolerance)FuzzyDescriptionMatcher: NLP-based description matching with Levenshtein distanceIBANMatcher: Direct IBAN/BIC validation for wire transfersDateWindowMatcher: Flexible date range matchingCompositeMatcher: Weighted combination of multiple strategiesImport Infrastructure:
Notification System (Strategy + Composite patterns):
EmailNotifier: SMTP with Jinja2 templates (HTML + text fallback)ConsoleNotifier: Development/testing outputCompositeNotifier: Multi-channel notifications (email + SMS + webhook)Reminder Strategies:
DEFAULT: Single reminder at due datePROGRESSIVE: Escalating reminders (-7, -3, 0, +3, +7 days)AGGRESSIVE: Frequent follow-ups for high-risk clientsCUSTOM: User-defined reminder schedulesCLI Interface (openfatture payment):
import: Bulk transaction import with progress trackinglist-transactions: Paginated transaction browser with filtersreconcile: Interactive matching with confidence scoresreview: Review queue for medium-confidence matchesbatch-reconcile: Automated high-confidence reconciliationignore/reset: Transaction state managementreminders: Schedule and manage payment remindersTesting & Quality:
Architecture:
Pagamento model with stato tracking and data_pagamentoCore Invoicing:
Interactive CLI:
AI-Powered Workflows (CLI stubs - implementation planned for Phase 4):
ai describe, ai suggest-vat, ai forecast, ai check)Email System:
Batch Operations:
Developer Experience:
Autocomplete & Data:
Configuration: