Changelog

Notable changes to the Disclarion SDK, dashboard, and API.

v0.8

2026-10

Disclosure render/acknowledge confirmation

  • track() now returns ack_token in disclarion_meta whenever a disclosure is owed, a short-lived, single-use token for confirming it was actually shown
  • The reference widget reports rendered/acknowledged events back automatically, fire-and-forget, never blocking your chat UI on failure
  • New dc.record_disclosure_event() for backends that confirm the event server-side instead of from the browser
  • The dashboard's Logs table and Compliance Report now show the confirmed status (acknowledged, rendered, not confirmed, predates confirmation, or not required) as its own column, separate from the self-reported disclosure_shown field
  • disclosure_shown in the REST API and n8n node is unchanged but now explicitly labeled self-reported, not verified, everywhere it's shown

v0.5

2026-09

Badges link to a public verification page, not just the homepage

  • track_content()'s "Labeled by Disclarion" credit now links to https://www.disclarion.com/verify/{id} — a public page confirming that exact record is real (timestamp, provider, content type, disclosure status), never the content itself or which account it belongs to
  • The record's id is generated client-side before the log request is sent, so the badge returned synchronously already has the correct link, including when the write falls back to the background retry queue
  • New GET /public/verify/{token} backend endpoint, public and rate-limited, returning only non-identifying metadata

v0.4

2026-09

Standard content labels: real watermarks and positioned badges

  • dc.track_content() now accepts image=<raw bytes> and returns watermarked_image: a fixed, non-customizable "AI-generated"/"AI-assisted" badge baked into the image's own pixels (PNG/JPEG/WebP) rather than only logged as metadata
  • Every track_content() call also returns badge_html, a fixed HTML/CSS snippet for text and article content with a real, clickable "Labeled by Disclarion" link — drop it in a position: relative container and it's placed
  • A very small image (shorter side under ~320px) skips the watermark rather than shrinking it into unreadability, and reports watermark_skipped instead
  • content_labeled, already shown in the dashboard's Logs table, now reflects whether a label was actually applied to that specific piece of content, instead of always reading true
  • Dashboard: a new coverage-gap view on the compliance report shows which jurisdiction/interaction-type combinations are being logged with no matching obligation rule, and which configured rules have never fired

v0.3.2

2026-09

track_content() for non-chat content

  • New dc.track_content(provider, model_name, session_id, ...) for logging AI-generated images, video, audio, or text when you don't have one of track()'s three supported chat response types
  • New optional content_type field (free text: "image", "video", "audio", "text", ...) recorded on interaction_logs for future obligation and reporting use
  • n8n node: Content Type field added under Additional Fields, matching content_type

v0.3

2026-09

Obligation Engine: jurisdiction-aware compliance rules

  • dc.track() and the n8n node now take jurisdiction and interaction_type, which decide which obligations (disclosure modal, audit log, content label) apply to a given interaction — defaults match prior behavior exactly, so nothing changes for existing callers
  • New interaction_type="generated_content": label non-chat AI-generated content (product descriptions, social posts, articles) with a content_label_required signal, independent of the chatbot disclosure UX
  • An inactive or lapsed subscription now raises SubscriptionInactiveError immediately instead of silently failing open — closes a gap where logs could go missing with no visible symptom
  • n8n node: Jurisdiction and Interaction Type fields added under Additional Fields, mirroring the SDK

v0.2

2026-09

Disclosure UX: modal-once + persistent badge

  • SDK default changed from inline disclosure text to a modal_once mode: dc.track() no longer rewrites the assistant's reply, it reports is_first_message instead
  • New reference widget (React and vanilla JS) for a one-time disclosure modal plus a small persistent badge
  • disclosure_mode is now configurable per client: modal_once (default), inline_every_message (legacy), or off
  • Dashboard: per-project disclosure mode setting with a matching SDK code snippet

v0.1

2026-09

Initial release

  • Python SDK with OpenAI, Anthropic, and Gemini support
  • Dashboard: projects, API keys, and interaction logs
  • Usage-based Stripe billing

This is an AI-powered assistant.