Changelog
What's new in Keenpix
All notable changes, straight from the repository's changelog. Tagged builds are also published as GitHub releases.
v0.3.1
Changed
- Unified the platform apps, SDK, and framework packages on one release version and one repository tag.
- Package publication now runs only from a reviewed
vMAJOR.MINOR.PATCHtag. - GitHub publishes one release whose notes are grouped by platform component and public package instead of creating a release for every package.
Fixed
- Added deterministic, idempotent npm publishing without package-specific Git tags.
- Added repository metadata required for npm provenance across every public package.
v0.3.0
Added
- Bilingual English/Arabic blog routing, localized metadata, hreflang alternates, sitemap entries, and four paired production guides.
- Durable managed-delivery metering with settled hourly windows, Cloudflare capture coverage checks, deletion-safe billing attribution, and fail-closed reporting.
Changed
- Managed framework helpers, SDK configuration, onboarding, and docs now emit only
cdn.keenpix.com/p/<project>/img/<encoded-source>URLs. Public managed delivery is no longer accepted from the application hostname. - New checkout and every public pricing fallback now expose only standard $9/$29/$69 monthly plans; historical founding products remain auditable but unlisted until allocation can be made race-safe.
- Public-route bundles, accessibility landmarks, schema, comparison tables, security headers, email delivery validation, and production deployment guidance were hardened for launch.
Fixed
- Corrected signed-URL examples and encoding, draft indexability, Arabic document direction, trailing-slash/canonical behavior, 404 metadata, and sitemap localization.
- Corrected the container entrypoint's migration and seed invocations and kept BullMQ/SVGO runtime dependencies outside relocated server bundles so fresh four-service Docker deployments can start and answer health checks.
- Prevented usage watermarks from advancing across incomplete outbox drains, trial usage, missing edge coverage, or deleted-project attribution gaps.
v0.2.1
Added
- Founding-customer pricing and production catalog configuration.
- Project-attributed edge analytics, billing-period filters, platform finance reporting, and admin impersonation for customer support.
- A safe legacy edge-data backfill packaged with the production runtime.
Changed
- Pricing, cost projections, and production workflows now use the same founding-cohort assumptions and attributed delivery data.
- Cloud image delivery URLs are canonicalized consistently across application and edge reporting paths.
- Analytics delivery labels and finance telemetry now describe the reconciled edge, cache, and live-origin stages.
Fixed
- Tenant analytics no longer rely on shared edge placeholders or leak platform-level values into customer views.
- Platform costs, successful-delivery rankings, request-attempt totals, and founding-cohort projections now use reconciled inputs.
- Cloudflare account credentials are separated from project analytics credentials, and Analytics Engine queries use its supported SQL surface.
- Runtime startup no longer depends on dotenv, and production images include the edge backfill required by the deployed revision.
v0.2.0
Added
- Managed cloud mode with multi-tenant organizations, self-serve signup, email verification, Google OAuth support, and an operator console.
- Polar-backed trials, subscriptions, always-on usage metering, billing alerts, dunning handling, and organization-scoped billing recovery.
- Consent-aware GTM/GA4 funnel events, a cookie-choice surface, and Cloudflare Web Analytics RUM for page performance and Core Web Vitals.
- Public pricing, comparison, self-hosting, changelog, trust, security, status, support, author, and editorial-methodology pages.
- A 10-article blog with focused image-CDN guides, comparison research, dated primary-source disclosures, RSS, and required article-specific social images.
- A disclosed, code-backed JoodCMS integration case study with a generated 1600×900 WebP cover and 1200×630 JPEG Open Graph asset; no unsupported performance outcome is claimed.
- Opt-in HMAC-signed image URLs, cloud object caching, ClickHouse analytics, daily cloud database backups, and graceful deployment health handling.
- Cross-platform SEO drift checks for canonical, robots, schema, Open Graph, headings, snippets, and status regressions.
- Hourly Postgres analytics rollups with migration backfill and transactional updates when new request logs are written.
- Rollup-based analytics summaries, charts, top images, format/status/domain filters, and dashboard KPI deltas so normal dashboard queries no longer scan raw request logs.
- The overview dashboard now includes recent request activity and instance operations health alongside the analytics cards.
- Analytics and dashboard cards now reconcile Cloudflare edge delivery, Keenpix disk-cache delivery, and live origin processing into one source-split funnel.
- Analytics charts gained edge/origin lenses for funnel, comparison, and Cloudflare-only views.
Changed
- Relicensed the current self-host engine to AGPL-3.0-only; previously published v0.1.11 and older releases retain their original Apache-2.0 terms.
- Reworked the public experience for narrow mobile layouts, comfortable touch targets, better font discovery, factual metadata/schema, truthful sitemap dates, and canonical apex routing.
- Comparison and pricing copy now distinguishes sourced vendor facts, estimates, product limitations, customer-set caps, and self-host operational responsibility.
- Polar usage events use deterministic idempotency keys, plan changes use the billing portal, and portal sessions resolve from the organization billing customer.
- Postmark failures now log provider status/error codes without leaking recipient details.
- The dashboard and analytics pages now distinguish Cloudflare edge metrics from Keenpix origin-shield metrics so totals and trend badges do not mix incompatible sources.
- Coolify deployments default back to the public
ghcr.io/lord007tn/keenpix:latestimage unlessKEENPIX_IMAGEis set.
Fixed
- Corrected image analytics so failed responses no longer count as cache hits or optimized deliveries, cache-hit rates use successful deliveries consistently, and an exact rollup migration repairs existing counters.
- Made Postgres request-log and rollup writes atomic with transient retries, and ensured a batch queued during a long flush cannot remain stranded.
- Removed the duplicate first-party Web Vitals endpoint and browser package; Cloudflare RUM is now the single field-performance collector.
- Corrected misleading Vercel 402, Cloudinary quota, ImageKit custom-domain, migration-URL, and unsupported universal image-savings claims.
- Added missing Polar trial/uncancel webhook documentation and prevented duplicate checkout-based plan switches.
- Fixed public header overflow at 320–412px through compact navigation and intrinsic-width containment.
v0.1.7
Added
- Optional Cloudflare edge-cache analytics using the Cloudflare GraphQL Analytics API.
- A Settings -> CDN cache panel for storing an encrypted Cloudflare API token, Zone ID, and optional image hostname.
- Linked-entity JSON-LD, shared error pages, shared 404 handling, and documentation Open Graph image routes.
Changed
- Analytics can now show Cloudflare edge hit-rate, edge requests, bytes served from the edge, and hourly hit/miss split for
/img/*. - Edge analytics use a fixed last-24-hours window to match the Cloudflare adaptive dataset limit on non-enterprise plans.
v0.1.6
Added
- Project Settings gained richer pipeline, allowed-host, and operations configuration surfaces.
- Analytics gained source-domain capture, filtering, and per-project source-domain breakdowns.
- Operations now shows real cache hit-rate and reasserts persisted cache caps when loading health data.
- The user menu now surfaces the app version.
Changed
- Replaced the previous app sidebar with the current top-tab command-center navigation.
- Disk cache eviction now uses an index and directory sharding for faster large-cache maintenance.
- Runtime cache caps can be managed from the app instead of only through environment variables.
v0.1.5
Added
- IPX-style Sharp modifiers for geometry, color, effects, extra formats, and animation controls.
- SVG output optimization through SVGO with explicit
fmt=svgsupport. - SSE-backed live logs streamed from the server.
- Operations health for disk cache, memory cache, and transform queue pressure.
- Playwright smoke coverage and a fresh smoke dev-server flow.
- Expanded reference documentation for endpoint parameters, responses, SDK API, operations, and deployment presets.
Changed
- Improved image delivery p95 with disk-cache and transform-path performance work.
- SDK handlers and server modules were reorganized around clearer boundaries.
- Docker builds now use an Alpine image and improved layer caching.
- Release-note generation now uses changelogithub defaults and includes conventional commit categories.
Fixed
- SVGO runtime dependencies are kept external so optimized SVG handling works in production builds.
- SVG auto-format behavior is documented correctly:
fmt=autorasterizes, whilefmt=svgpreserves SVG output.
v0.1.4
Added
- Project-scoped analytics and per-domain breakdowns.
- GitHub release automation through changelogithub.
Changed
- Analytics aggregations were made faster for project-scoped views.
- Date handling now uses inline
dayjscalls and product code avoids trivial formatter/helper wrappers.
v0.1.3
Added
- Internal API keys are now created from a modal with a one-time key reveal instead of an inline form.
- SMTP settings gained a Test dialog for sending a test email to a chosen recipient.
- API key activity is recorded and shown under Workspace → API Keys (method, path, status, latency).
- The dashboard sidebar version links to the GitHub releases page.
Changed
- Analytics format and status filters now list only the values present in the selected window, matching Live Logs — no empty filter menus.
- Live Logs: Clear now also clears the path search, the path search has an inline clear button, and the request Path column is wider.
- Workspace tabs (Staff, Email, API Keys) now update the URL so links and refreshes keep the active tab.
- SMTP Save is enabled only when there are unsaved changes.
- Staff roles display human-readable labels (for example, "Super admin").
- Security and documentation copy now scopes "no API key" to transform URLs; internal API keys exist for the management API.
Fixed
- The mobile Staff layout no longer overflows horizontally.
v0.1.2
Added
- Added Better Auth API key support for trusted internal integrations.
- Added a super-admin Workspace → API Keys panel to create, copy, list, and disable internal API keys.
- Added
/api/sdk/*project management endpoints for listing, creating, reading, updating settings, and adding/removing allowed domains.
Changed
- Kept the public
/img/*transform endpoint headerless and allowlist-gated; internal API keys are only for product-management API calls.
v0.1.1
Changed
- Reorganized settings into clearer surfaces. Global workspace settings (staff management and email/SMTP) moved out of project Settings into a dedicated Workspace area reached from the user menu (super admins only).
- Project Settings is now scoped to a single project — General, Pipeline, and Security — in a tabbed layout.
- Consolidated SMTP configuration and the delivery check into one card: edit the connection, then save or send a test email from the same place.
- Trimmed the Account page to Profile and Appearance, removing the duplicated security and workspace cards.
v0.1.0
Initial public release for self-hosting.
Added
- Self-hostable image optimization service with PostgreSQL-backed projects, request logs, analytics, and admin settings.
- CDN-friendly image transform endpoint at
/img/<source-url>with width, quality, format, fit, and DPR parameters. - Cloudflare/self-hosting CDN documentation, including cache-rule guidance for Cloudflare and non-Cloudflare proxies.
- Docker image publishing through GHCR for
latest,v0.1, andv0.1.0tags. - Project configuration UI for allowed hosts, default quality, default format, and cache TTL.
- Admin SMTP and staff invitation management.
Changed
- Replaced the early
/api/keenpix?url=...optimizer endpoint with the cleaner/img/<source-url>path format. - Hardened form validation with shared schemas and clearer validation errors across project, auth, invite, and admin flows.
- Improved release automation so GitHub releases are created from this changelog.
Verified
- CI passes lint, typecheck, tests, and production build.
- Docker workflow builds and publishes the self-host image.