Tags: NetSendo/NetSendo
Tags
fix(mcp): repository URL case must match the provenance claim npm verifies the sigstore provenance bundle against package.json and rejects a publish when they disagree: 422 Error verifying sigstore provenance bundle: Failed to validate repository information: package.json: "repository.url" is "git+https://github.com/netsendo/netsendo.git", expected to match "https://github.com/NetSendo/NetSendo" from provenance The GitHub OIDC claim carries the repository in its real case and the comparison is case-sensitive, so the lowercase URL — harmless while the package was published by hand — blocks every publish from CI. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
feat: release 2.1.0 — webinars build-out, backup restore, email HTML … …wrapping & AI model refresh Cuts the 2.1.0 release: moves the [Unreleased] changelog section to ## [2.1.0] (release date 2026-07-10) and bumps VERSION, config/netsendo.php and the README badge to 2.1.0. Added - Webinars module build-out (#25): editable funnel pages (registration → thank-you → watch), add-to-calendar everywhere (Google/Outlook + downloadable .ics via webinar.calendar), muted-autoplay with one-tap unmute, clearer scheduling hints for hybrid/auto webinars. - Vimeo as a webinar video source for live/auto/hybrid, with attendance-tracking parity via a unified videoTracker abstraction. - Evergreen (schedule-synced) auto-webinar playback: late joiners resume at the correct offset, with end-of-recording detection and a shared "ended" partial. - Webinar replay page for native & Vimeo recordings (previously 500'd on a non-existent view). - Backup module completion (#26): non-blocking queued backups (RunBackupJob) with live progress feedback (backup_operations table + BackupOperation model), database restore with an automatic safety backup (RestoreBackupJob), and hardening (path-traversal guards, --only-db fix, concurrent-run lock). - Newer AI models + on-demand refresh (#28): refreshed built-in catalog (Claude Opus 4.8 / Sonnet 5 / Haiku 4.5 / Fable 5, Grok 4, GPT-5.2, Gemini 2.5 Flash-Lite), shared AiIntegration::availableModels(), dynamic model fetching enabled for Anthropic; ai_pricing.php updated to match. Fixed - Perplexity API key test failing with "max_tokens must be at least 16" (#27): probe now sends max_tokens: 16. - Automation "Add Tag" crashing with 1062 Duplicate entry (#24): Subscriber::addTag() is now idempotent via syncWithoutDetaching() with a race-safe fallback. - Missing <html>/<body> structure in outgoing e-mails (#22): new App\Helpers\EmailHtmlDocument::wrap() applied at every mail provider's send() (SMTP/Gmail/SendGrid/NMI), gated by email.wrap_html_document. Includes new backup.* / webinars.* translations (EN/PL/DE/ES), new routes (webinar.calendar, backup restore), and unit/feature test coverage. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
PreviousNext