<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>MSPercury Patchnotes</title><description>Release notes for the MSPercury platform — features, fixes, security updates, and developer notes from the team.</description><link>https://mspercury.com/</link><language>en-us</language><item><title>Three tiers · 30-day Pro trial for every signup · Founders Program</title><link>https://mspercury.com/changelog#2026-05-22/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-22/</guid><description>✨ Added — New Pro tier at $99/€99/£84/CA$134/MX$1849 per month. Same single-user feature set as Solo with 4× the Bob token allowance (8M/month). Sits between Solo and Team for…
🔧 Changed — Sign-up now starts a 30-day Pro trial automatically — no card, full Pro feature access including Bob. After 30 days you pick Solo, Pro, or Team. The &quot;free for the first…
✨ Added — Founders Program at /founders. Apply if you&apos;re still building your MSP — get a 90-day Pro trial (instead of 30) and an optional &quot;free until your first paying customer&quot;…
✨ Added — Trial-end emails. We send a heads-up 7 days before, 1 day before, and on the day your trial expires — each with the link to pick a plan. The workspace flips to…
🔧 Changed — /pricing rebuilt as a three-card grid (Solo / Pro / Team) with Founders Program and Founding Members (50% lifetime discount for the first 100 paid signups) cards below…
🔧 Changed — /billing upgrade picker shows three cards instead of two; active-tier banner now recognises Pro alongside Solo and Team.
✨ Added — Landing page got two new sections — three short &quot;Bob does X&quot; use-case cards (quick invoice, customer lookup, assessment-to-quote) and a three-step &quot;how it works&quot;…</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Team time-sheet · /assistant is one page now</title><link>https://mspercury.com/changelog#2026-05-21/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-21/</guid><description>✨ Added — Team time-sheet at /time. Log billable hours per project — type them in yourself, or ask Bob (&quot;log 2h on Acme for cabling&quot;). Each entry carries date, hours, hourly rate…
🔧 Changed — /assistant is one page now. Pick a conversation from the sidebar and it opens in the right rail — no more full-page reload between conversation switches. Old…</description><pubDate>Thu, 21 May 2026 00:00:00 GMT</pubDate></item><item><title>Invoices, workspace timezone, Network → Pro · big quality pass</title><link>https://mspercury.com/changelog#2026-05-19/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-19/</guid><description>✨ Added — Invoices. Accept a quote, hit &quot;Create invoice&quot;, get a numbered invoice ready to send. Gap-free numbering (RE-YYYY-NNNN), DIN-5008 layout, per-period VAT block…
✨ Added — Workspace timezone setting. Workspace owners can pick the org&apos;s IANA zone in Settings → Workspace; the date on outgoing quote PDFs now pins to it, so a quote issued at…
🔧 Changed — Partner Network is a Pro feature now. A Free workspace clicking &quot;Network&quot; lands on /billing with a short explanation; Solo and Team get the directory + lead-forward flow…
🔧 Changed — Free tier is now capped at 3 quotes per month — Solo and Team stay unlimited. A small counter on the quote list shows what you&apos;ve used, and the wall enforces at every…
🐛 Fixed — Big sweep — roughly 70 fixes across the app. Highlights: the customer portal no longer crashes on a project with task comments; the iOS app no longer hits a redirect…
🐛 Fixed — Checkup-derived quotes (the ones without a linked project) now show up everywhere they should — operator quote list, customer portal, share link, PDF and CSV export…
🐛 Fixed — PDF and portal dates render the right calendar day across timezones now. Audit dates on Checkup reports stay anchored to the day you picked in the date input, regardless…
➕ …and 1 more change — read the full notes.</description><pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate></item><item><title>Settings rebuilt — collapsible sections, mobile &amp; iOS-app polish</title><link>https://mspercury.com/changelog#2026-05-16/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-16/</guid><description>✨ Added — Settings is now organised into collapsible sections — tap one to open it instead of scrolling a single long page. On desktop the sidebar still jumps straight to any…
🔧 Changed — Settings got a mobile and iOS-app pass: bigger tap targets, no zoom-jump when you focus a field, safe-area spacing, a haptic tap when a change saves, and fields that…</description><pubDate>Sat, 16 May 2026 00:00:00 GMT</pubDate></item><item><title>Fixes — square app icon, cleaner changelog feed</title><link>https://mspercury.com/changelog#2026-05-16/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-16/</guid><description>🐛 Fixed — The PWA / home-screen / taskbar icon showed the wide MSP banner shrunk onto a white square, so it read as a tiny floating logo. It&apos;s now a proper square app icon — a…
🔧 Changed — Each change in the /changelog RSS feed is now its own line with a kind marker (added / changed / fixed …) instead of one run-on paragraph — so Discord&apos;s feed embed and…</description><pubDate>Sat, 16 May 2026 00:00:00 GMT</pubDate></item><item><title>Customer support overhaul · ticket system v1 · in-app chat widget · /help hub</title><link>https://mspercury.com/changelog#2026-05-15/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-15/</guid><description>✨ Added — Help &amp; Support hub at /help — single discoverable entry point for docs, changelog, feedback, Discord community, and direct support. Replaces four separate AppNav entries…
✨ Added — Sticky support-chat widget in the bottom-right corner of every authenticated page. Click the bubble, write a subject + message, pick a category (Support / Billing /…
✨ Added — Customer-facing ticket views at /help/tickets (list of your own threads, sorted by last activity) and /help/tickets/[id] (full conversation with inline reply composer +…
✨ Added — Built-in support ticket system in /superadmin/tickets. A background worker polls support@, billing@ and privacy@ inboxes every 60 seconds, ingests new mail as tickets…
✨ Added — Operator reply path supports both web and Outlook: the inline composer on /superadmin/tickets/[id] sends a threaded reply through noreply@mspercury.com (RFC 5322…
🔧 Changed — Customer-facing email Reply-To moved from the operator personal inbox to support@mspercury.com. The mailbox forwards onward to the operator at the provider level, so the…
✨ Added — Reply-blocklist for send-only / loop-prone addresses (noreply@, support@, billing@, privacy@). The reply UI shows a warning banner instead of accepting a reply that…</description><pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate></item><item><title>Dark-mode color-safety audit · automated check + token rules</title><link>https://mspercury.com/changelog#2026-05-15/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-15/</guid><description>✨ Added — Dark-mode color-safety audit script (`npm run check:darkmode`). Scans every .astro/.tsx/.ts file for stock Tailwind palette uses (stone-, gray-, emerald-, rose- etc.)…
✨ Added — Color-token rules documented as a tall comment block at the top of src/styles/global.css — the six rules covering surfaces, text, borders, inverted buttons, accent, and…
🐛 Fixed — Ticket system pages (/superadmin/tickets list + detail, /help/tickets list + thread, support FAB dialog) render correctly in dark mode — conversation bubbles, status…</description><pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate></item><item><title>Tiered pricing · Solo €29/mo · Team €49/mo · Mexican peso support</title><link>https://mspercury.com/changelog#2026-05-15/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-15/</guid><description>✨ Added — New &quot;Solo&quot; tier at €29/$29/CA$39/MX$549 per month, unlocking every Pro feature for single-operator MSPs (CRM, marketplace, branding, advanced reporting, AI with BYO key…
✨ Added — &quot;Team&quot; tier at €49/$49/CA$65/MX$929 per month — everything in Solo plus multi-user workspace (additional admin + member seats). Existing Pro subscribers at €49 are…
✨ Added — Mexican peso (MXN) added as a supported billing currency across /pricing, /billing, and the Stripe checkout flow. Locale + CF-IPCountry pick MXN by default for Mexican…
🔧 Changed — /pricing rebuilt as a three-card layout (Free / Solo / Team) with a central currency switcher above the cards so a single click re-prices both paid tiers. FAQ updated to…
🔧 Changed — /billing rebuilt: shows the active tier (Free / Solo / Team) with a status pill, two side-by-side upgrade cards for unsubscribed workspaces, and a &quot;Manage subscription&quot;…
🔧 Changed — Plan-gating helpers (`isPro` / `getPlan` / `getLimits` / `requirePro`) updated to recognise three tiers. `isPro` stays true for Solo + Team (so every pre-existing…
🔧 Changed — Stripe webhook now decodes the active price ID into a tier (Solo / Team) on every subscription event and writes it to `organizations.subscription_tier`. Tier changes via…</description><pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate></item><item><title>Public IT Assessment asks for phone too · stale items pruned from roadmap + known-issues</title><link>https://mspercury.com/changelog#2026-05-15/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-15/</guid><description>🔧 Changed — Public IT Assessment contact form (DE/EN/ES) now requires a phone number alongside email. Operator feedback was that email-only leads were too easy to ignore on the…
🗑 Removed — Stale entries pruned from /docs known-issues (DE/EN/ES): &quot;5 MB iOS photo cap&quot; (actual cap is 8 MB), &quot;custom footer not in PDF yet&quot; (renders since the May 2026 quote-PDF…
🔧 Changed — Roadmap (DE/EN/ES) refreshed: Stripe direct-key integration moved from &quot;Now (in flight)&quot; to &quot;Already shipped&quot; — that one already lives at /settings/integrations. Public…</description><pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate></item><item><title>Inline-expand forms moved into modals — no more layout-sprenger when adding contacts, catalogs, tasks</title><link>https://mspercury.com/changelog#2026-05-12/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-12/</guid><description>✨ Added — New reusable `&lt;FormModal&gt;` component (same `&lt;dialog&gt;`-based pattern as the existing EmailSendModal / OnboardingWizardModal / PdfModal). Trigger button + native modal…
🔧 Changed — Customer detail (/customers/[id]): &quot;Add contact&quot; + per-row &quot;Edit contact&quot; no longer expand inline and rip the card header apart. Both now open a proper modal. Same field…
🔧 Changed — Settings → IT Assessments (/settings/checkups): &quot;New question set&quot;, &quot;New landing&quot;, &quot;Edit landing&quot;, &quot;New question&quot; (per category), &quot;Edit question&quot; (per row), &quot;Rename…
🔧 Changed — Project detail (/projects/[id]): &quot;Add task&quot;, &quot;New service report&quot;, &quot;Edit service report (draft)&quot;, &quot;Propose maintenance window&quot;, &quot;Edit maintenance window&quot; all moved into…
🔧 Changed — Settings → Integrations: Stripe key rotation moved into a modal.</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate></item><item><title>Public pages default to English · redesigned changelog layout</title><link>https://mspercury.com/changelog#2026-05-12/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-12/</guid><description>🔧 Changed — Every public surface (landing, /imprint, /legal/*, /pricing, /blog, /docs, /changelog, /feedback) now defaults to English when the visitor isn&apos;t signed in. The…
🔧 Changed — /changelog layout reworked for both desktop and mobile. Desktop gets a wider canvas (~1152 px), a sticky year-jump rail on the left, and a year-header rhythm above the…</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate></item><item><title>Signup is open · branded error pages · welcome tour · multi-admin lead alerts · per-invite question set</title><link>https://mspercury.com/changelog#2026-05-12/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-12/</guid><description>🗑 Removed — Workspace-signup invite codes are gone. Anyone can create a workspace at /signup with email + PIN, no code required. The old gate was broken anyway — codes were never…
✨ Added — Welcome modal on first signup now shows a 4-card feature tour (Public IT Assessment, IT Assessment wizard, Service catalog, Quotes + PDFs) above the setup form, each…
✨ Added — Branded English error pages for /check/{slug}/* and /self-check/{token} when the link is dead or revoked. Replaces the bare-text &quot;Diese Seite ist nicht verfügbar.&quot; 404…
🐛 Fixed — Lead-alert emails (DE/EN/ES) now fan out to every admin in a multi-admin workspace, not just one inbox. Each admin&apos;s subject + body is rendered in their own…
🐛 Fixed — Customer self-check is now pinned to a specific question set at invite-time (DE/EN/ES). If you flip your default catalog after sending an invitation, the customer still…
🐛 Fixed — Operator flash messages + AI quote-draft titles localised across the leads, customers, customer-contacts, and AI surfaces (DE/EN/ES). Removed the leftover German strings…
🐛 Fixed — Post-signup redirect chain collapsed: /signup/complete now lands directly on /dashboard?welcome=signup instead of bouncing through /onboarding?welcome=1. One redirect…
➕ …and 1 more change — read the full notes.</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate></item><item><title>Hotfix: industry-template questions showed up as raw keys in the lead transcript + PDF</title><link>https://mspercury.com/changelog#2026-05-11/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-11/</guid><description>🐛 Fixed — Questions from the Healthcare / Law / Tax / Finance industry templates (DE/EN/ES) rendered as their internal keys — e.g. `patient_record_access_hc`, `bea_active_law`…
🐛 Fixed — Fix applies to all three locales (DE/EN/ES) at once — the resolver returns the full translation triple for every key and the call-site picks the active locale. English…
🐛 Fixed — Prospect-facing surfaces verified clean: the /check/{slug}/questions form (both standalone and embed variants) and the customer self-check at /self-check/{token} were…</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate></item><item><title>Industry templates for the public IT Assessment — law, tax, finance, healthcare</title><link>https://mspercury.com/changelog#2026-05-11/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-11/</guid><description>✨ Added — Four ready-to-use question sets when you create a new public-IT Assessment catalog: Healthcare (medical practice / MVZ), Law firm, Tax / Accounting firm, Financial…
✨ Added — Pick the workspace language on signup. The email step now has a DE / EN / ES flag picker; whichever you choose sets the workspace language and seeds the default IT…
🐛 Fixed — Creating a second question set silently 403&apos;d for early-access workspaces — the form redirected to the Landings tab and the catalog never appeared. Plan-cap check now…</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate></item><item><title>IT Assessment settings unified, formal Sie in German, multiple question sets per workspace</title><link>https://mspercury.com/changelog#2026-05-10/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-10/</guid><description>✨ Added — One home for all IT Assessment settings at /settings/checkups with three tabs: Public landings, Question sets, Findings library. Replaces the scattered surfaces that…
✨ Added — Multiple question sets per workspace (Pro). Name a catalog (&quot;Healthcare campaign&quot;, &quot;Retail audit&quot;), assign it to one or more public-IT Assessment URLs. Each URL can run…
✨ Added — Clone a public-IT Assessment landing in one click. The landings table now has a copy action that duplicates the slug + intro text + audience label + question-set…
✨ Added — Leads count in the sidebar. The Leads nav item now shows the same red badge as Customers / Quotes, so unread leads are visible without opening the page.
🔧 Changed — Public IT Assessment wording (DE only) switched from informal &quot;du&quot; to formal &quot;Sie&quot; across all 63 default questions and tooltips. Existing prospect-facing copy on…
🔧 Changed — Self-IT Assessment result page polish: the score number and the maturity badge no longer crowd each other on narrow screens (they stack on mobile, sit side-by-side on…
🐛 Fixed — Active MSPs counter on the admin dashboard was over-counting — ghost organisations that never finished signup were being tallied. Counter now matches the actual…
➕ …and 1 more change — read the full notes.</description><pubDate>Sun, 10 May 2026 00:00:00 GMT</pubDate></item><item><title>Signup friction crushed: email + PIN, done — workspace/password/2FA move into the wizard. Plus PIN login, passkey nudge, PIN-gated account deletion, tenant-branded public IT Assessment, OG image + SEO overhaul</title><link>https://mspercury.com/changelog#2026-05-09/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-09/</guid><description>🔧 Changed — Signup collapsed from three pages to two. Was: /signup (email) → /signup/verify (PIN) → /signup/complete (workspace + name + password + password-confirm + 2 consent…
✨ Added — Passwordless login on /login: new &quot;Email me a sign-in code — no password needed&quot; button next to the classic password form. The button posts to `startEmailVerification`…
🔧 Changed — Onboarding wizard is now a popup modal on the dashboard instead of a hard middleware redirect. The `enforceOnboarding` middleware is neutered (no-op); new…
✨ Added — Password card at the top of /settings/security — single form, branched server-side on hasPassword. With `passwordHash=null` the UI shows &quot;Set a password&quot; with just New…
✨ Added — Passkey-recommendation banner on the dashboard — small accent-tinted card pitching Touch ID / Windows Hello / Yubikey. Renders only when the user has 0 passkeys AND…
✨ Added — PIN-gated account deletion for passwordless accounts. /settings/account/delete now detects whether the user has a password set. If not, the password field is replaced…
🔧 Changed — Public IT Assessment /check/{slug}/* (standalone variant) now shows ONLY the MSP&apos;s branding, not MSPercury&apos;s. Before, the three pages (index/questions/result) wrapped…
➕ …and 3 more changes — read the full notes.</description><pubDate>Sat, 09 May 2026 00:00:00 GMT</pubDate></item><item><title>Changelog now multilingual, sidebar scroll v2 (outer scroll), PWA push diagnostics on macOS</title><link>https://mspercury.com/changelog#2026-05-07/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-07/</guid><description>✨ Added — Changelog entries can now ship locale-keyed text. The ChangelogEntry interface accepts either a string (legacy, shown to every visitor) or a `{ de, en, es }` object for…
🐛 Fixed — Sidebar scroll on 13″ displays — second pass. The first round with min-h-0 + overscroll-contain on the inner nav wasn&apos;t enough: in macOS PWA standalone mode the inner…
✨ Added — PWA push diagnostics for macOS in /settings/notifications. When the operator opens the settings page in a regular Safari tab instead of the Dock-installed PWA, an extra…</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate></item><item><title>IT Assessment detail page: full-width + customer comms thread (mirrored in portal)</title><link>https://mspercury.com/changelog#2026-05-07/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-07/</guid><description>🔧 Changed — IT Assessment detail page (/checkups/[id]) now uses `full` instead of `wide` on BaseLayout — no more 1280px cap on &gt;1080p displays. Score card and comms card sit in the…
✨ Added — Customer communication thread on finalized IT Assessments. New card right below the maturity score on the operator side: heading, hint that the conversation is mirrored…
✨ Added — New portal detail page /portal/[token]/checkups/[id] for the customer. Mirrors the operator surfaces: hero with audit date + maturity score, dedicated score card with…
✨ Added — Portal home listings (overview tab + reports tab) now link finalized IT Assessment rows to the new detail page — clicking the title or the Open CTA opens…
✨ Added — New `checkup_comments` table (migration 0006_checkup_comments.sql, additive-only) with the same columns + indexes as `service_report_comments`: org_id, checkup_id…</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate></item><item><title>Hotfix: projects-500 gone, wide-screen for data pages, navbar scroll, IT Assessment score card, docs banner</title><link>https://mspercury.com/changelog#2026-05-07/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-07/</guid><description>🐛 Fixed — CRITICAL: opening /projects/[id] threw HTTP 500 (ReferenceError: user is not defined). The page referenced `user.id` for the time-tracking query, but the requireUser…
🐛 Fixed — Wide-screen layout for data pages now also applies to /customers, /quotes, /projects. The BaseLayout wrappers had no `full` attribute, so the listings kept running…
🐛 Fixed — Sidebar scroll on 13″ displays didn&apos;t work. On a MacBook Air 13″ the bottom half of the sidebar (help group, user block) was unreachable: the overflow-y-auto inner nav…
✨ Added — Maturity score card on /checkups/[id] for finalized IT Assessments. Once an IT Assessment&apos;s status flips to `finalized`, a compact card appears at the top of the detail…
🐛 Fixed — docs.mspercury.com header banner didn&apos;t load. Brand.astro emits &lt;img src=&quot;/brand/banner.svg&quot;&gt; — but on the docs subdomain nginx rewrites every path to /site-docs/&lt;slug&gt;…</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate></item><item><title>Conversion tracking, pricing snapshot on the landing, DACH Accept-Language, new favicon PNGs</title><link>https://mspercury.com/changelog#2026-05-07/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-07/</guid><description>✨ Added — Google Ads conversion tracking on signup success. When a freshly-registered MSP lands on /dashboard?welcome=signup, the WelcomeDiscord modal fires two consent-gated gtag…
✨ Added — Pricing snapshot right on the landing. Between the AI band and the Discord community section there&apos;s now a Free-vs-Pro comparison card with real €-amounts: Free €0/mo…
✨ Added — Accept-Language detection in the locale hydrator. The hydrateLocale middleware now has a sixth resolution step: for anonymous first-time visitors WITHOUT a locale…
🔧 Changed — New favicon generation from the updated MSPercury M-mark. public/icons/icon.svg replaced with the two-tone green M glyph (#009057 + #25c17e) on a white rounded-square…</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate></item><item><title>Service-Katalog + Packages aus dem Pro-Gating raus — sind jetzt Free-Basisfunktionalität</title><link>https://mspercury.com/changelog#2026-05-07/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-07/</guid><description>🐛 Fixed — Logikfehler im Pricing-Modell behoben: Service-Katalog, Packages und Custom-Pricing waren als Pro-Features gegated, dabei sind sie der Quoting-Kern — ein Free-User…
🔧 Changed — Pricing-Page Free-Liste erweitert: Service-Katalog &amp; Packages — vollständig, Angebots-Editor mit Custom-Pricing, Public IT Assessment-Page (1 URL), Kundenliste mit…
🔧 Changed — Welcome-Email-Template (Free-Founder-Variante) listet den vollständigen Free-Umfang inkl. Service-Katalog, Packages, Custom-Pricing und PDF-Angebote. Optionale-Pro-Liste…
✨ Added — Code-Comment-Discipline: in plan.ts steht jetzt ein expliziter Hinweis dass serviceCatalog + customPricing auf BEIDEN Tiers true sein MÜSSEN, damit Quoting funktioniert…</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate></item><item><title>Neues MSPercury-Logo + Wordmark-Banner überall im Header ersetzt</title><link>https://mspercury.com/changelog#2026-05-07/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-07/</guid><description>🔧 Changed — Brand-Mark und Wordmark in allen Headern ausgetauscht. Das alte rounded-square Emerald-Gradient-Logo (das stilisierte Quotation-Mark-Glyph) ist durch den neuen…
✨ Added — Zwei neue statische Brand-Assets unter /brand/: logo.svg (1081×1081 viewBox, nur der M-Mark, transparente Background, two-tone green) und banner.svg (cropped 1530×340…
✨ Added — Neue Brand.astro-Komponente neben der bestehenden Logo.astro. Brand rendert den vollen Wordmark-Banner über Height-Prop (Width auto-berechnet aus Aspect Ratio), Logo…
🔧 Changed — Headers in MarketingLayout, AuthLayout, DocsLayout, AppNav (Mobile-Top-Bar, Desktop-Sidebar, Side-Drawer) sowie der Onboarding-Page nutzen jetzt &lt;Brand height={N} /&gt;…
🔧 Changed — PDF-Templates (quote, agreement, checkup-report, summary) bekamen ihre eigenen inline LOGO_SVG-Strings ersetzt durch import { mspercuryLogoSvg } from ~/lib/pdf/brand-svg…</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate></item><item><title>Superadmin-Notification bei MSP-Signup, Wide-Screen-Layouts, Landing-Page Conversion-Audit</title><link>https://mspercury.com/changelog#2026-05-07/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-07/</guid><description>✨ Added — Superadmin-Notification bei neuer MSP-Registrierung. Sobald ein neuer Workspace angelegt wird (nicht beim Join via Team-Invite), feuern wir parallel: (a)…
🔧 Changed — Wide-Screen-Layout für Datenseiten. Customers, Agreements, Network (overview/inbox/sent/graph), Leads, Checkups, Quotes, Projects laufen jetzt mit full=true im…
🔧 Changed — Landing-Page Conversion-Audit nach 150 Google-Ads-Clicks ohne Signup. Ergebnis-Driven Fixes deployed: (1) Beide mailto:info@it-flores.de-CTAs ersetzt durch…
✨ Added — Push-Surface superadminSignup zum PUSH_SURFACES-Enum ergänzt mit Locale-aware Labels in /settings/notifications. Per-User opt-in/out wie alle anderen Push-Surfaces. Fire…</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate></item><item><title>Mehrere Ansprechpartner pro Kunde + Self-Check-Einladung per Token an einzelne Kontakte</title><link>https://mspercury.com/changelog#2026-05-07/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-07/</guid><description>✨ Added — Mehrere Ansprechpartner pro Kunde. Statt einem Single-Contact-Feld auf der customers-Row (contactPerson + email) gibt es jetzt eine eigene customer_contacts-Tabelle mit…
✨ Added — Token-gegate Self-Check-Einladung. Pro Ansprechpartner mit E-Mail-Adresse zeigt die Kontakt-Liste einen ✉ Self-Check senden-Button. Klick erzeugt einen 30-Tage-gültigen…
✨ Added — Public-Page /self-check/{token} drei-stufig: Welcome (zeigt Customer-Name + Operator-Intro + Start-Button) → Questions (das simplified question-set, vor-Pop-up keine…
✨ Added — Submit-Action submitSelfAssessment validiert Token (Existence + nicht-Completed + nicht-Expired), parst die Antworten, lädt das Frage-Set des owning Workspaces, filtert…
✨ Added — Invite-History-Block auf der Kunden-Detailseite (kollabierbar, nur sichtbar wenn ≥1 Invite versendet). Pro Eintrag: E-Mail, Versanddatum, Status (offen / abgelaufen /…
✨ Added — Drizzle-Migration 0005_customer_contacts_and_self_assessment.sql legt zwei neue Tabellen an: customer_contacts (id / org_id / customer_id / name / email / phone / role /…</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate></item><item><title>Mehrere maßgeschneiderte Public IT Assessment-Landingpages pro Workspace (Pro-Feature) mit per-Slug Frage-Filter und Lead-Attribution</title><link>https://mspercury.com/changelog#2026-05-07/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-07/</guid><description>✨ Added — Pro-User können jetzt mehrere /check/-URLs pro Workspace betreiben — eine pro Zielgruppe. Schema: .unique() auf public_checkup_slugs.organization_id gedroppt, drei neue…
✨ Added — Plan-Limits: Free behält den Cap auf 1 Slug pro Workspace; Pro hat unlimited. Ein neues publicCheckupCustomQuestionSet-Flag erlaubt Pro zusätzlich pro Slug ein…
✨ Added — Settings → Public IT Assessment komplett umgebaut: statt einem Single-Slug-Editor jetzt eine Liste aller Slugs als Cards mit Link, iframe-Snippet und kollabierbarem…
✨ Added — Lead-Attribution: jeder neue Lead trägt jetzt die source_slug_id der Landingpage, über die er reingekommen ist. Damit kannst du im /leads-Inbox nach Kampagne filtern…
✨ Added — Question-Set-Sicherheit: bei einem aktiven Filter pro Slug werden Submit-Antworten server-side auf die im Filter erlaubten Keys reduziert + die Score-Berechnung läuft…
🔧 Changed — Pricing-Page: Pro-Feature-Liste erweitert um &quot;Mehrere Public IT Assessment URLs pro Workspace — eine pro Zielgruppe (Healthcare / Retail / Legal …) mit eigener…
🔧 Changed — Features-Doku auf docs.mspercury.com (DE/EN/ES) bekommt einen neuen Abschnitt &quot;Mehrere Public IT Assessment URLs pro Workspace · Pro&quot; direkt unter dem Standard-Public IT…</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate></item><item><title>Stripe-KB-Artikel + AGB komplett überarbeitet (monatlich kündbar, kein Mindestlauf, Beta-Schutzklauseln) + Datenschutz mit allen Sub-Auftragsverarbeitern (Hetzner / Stripe / NinjaOne / BYO-AI / Apple / Google), alles trilingual</title><link>https://mspercury.com/changelog#2026-05-07/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-07/</guid><description>✨ Added — Neuer Knowledgebase-Artikel „Stripe-Integration &amp; Kundenabrechnung&quot; auf docs.mspercury.com (DE/EN/ES, order=3.7). Zehn Abschnitte mit Hints + Tooltips: Stripe-Konto…
🔧 Changed — AGB komplett überarbeitet auf das aktuelle Free+Pro-Pricing-Modell. Pro €49 / $49 / CA$65 monatlich — explizit „keine Mindestlaufzeit, monatlich kündbar zum Ende des…
🔧 Changed — Datenschutzerklärung um alle aktuellen Sub-Auftragsverarbeiter erweitert: Hetzner mit detailliertem Zweck (VPS + Postgres + SMTP-Relay über mail.your-server.de +…
✨ Added — Neuer Sub-Abschnitt 5a „Datenfluss bei BYO-AI-Funktionen&quot; in der Datenschutzerklärung, der pro AI-Feature transparent macht welche Felder an den konfigurierten…</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate></item><item><title>Cohorts-500 gefixt + Country-aware VAT/USt-IdNr/EIN/GST-HST in Angeboten, Rechnungen und Stripe-Push</title><link>https://mspercury.com/changelog#2026-05-07/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-07/</guid><description>🐛 Fixed — /superadmin/cohorts warf 500. Ursache: postgres.js kann ein JS-`Date` nicht direkt durch ein raw `sql\`...\``-Template-Literal serialisieren — der Drizzle-typed…
✨ Added — Country-aware Tax-ID-Handling für Angebote + Rechnungen. Kunde + Workspace haben jetzt je `country` (ISO-3166-1 alpha-2) und `tax_id_type` (Stripe-aligned…
✨ Added — Quote-PDF zeigt die Kunden-Steuer-ID jetzt in der Bezugszeichenzeile (DIN 5008-konform), die Workspace-Steuer-ID weiterhin im Page-Footer — beides mit dem gleichen…
✨ Added — Stripe-Push (`createStripeInvoiceFromQuote`) hängt Adresse + `tax_id_data` an die Stripe-Customer-Erstellung. Damit kann Stripe-Tax die richtige Jurisdiktion auflösen…
✨ Added — Customer-Edit + -Create-Form bekommen Country-Dropdown (DACH + US/CA + UK gepinnt oben, Rest A-Z) und Tax-ID-Type-Dropdown. JS auto-fillt den Type wenn das Land geändert…</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate></item><item><title>Stripe-Architektur korrigiert: direkter API-Key statt „on-behalf-of&quot; Connect, end-to-end Quote→Invoice</title><link>https://mspercury.com/changelog#2026-05-07/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-07/</guid><description>🔧 Changed — Stripe-Integration komplett neu gedacht. Statt Stripe Connect Express („MSPercury rechnet on-behalf des MSP ab&quot;) läuft jetzt der saubere Direct-API-Key-Pfad: der MSP…
✨ Added — End-to-End Quote→Stripe-Invoice live. Auf jedem akzeptierten Angebot taucht jetzt — sofern Stripe verbunden ist — ein violetter Block „Stripe-Rechnung erstellen&quot; auf…
✨ Added — Verbindungsverwaltung in `/settings/integrations`: Restricted-Key-Empfehlung mit Scope-Hinweis (Customers Write + Invoices Write), automatische Erkennung von…
🗑 Removed — Alte Stripe-Connect-Foundation entfernt: `src/actions/stripe-connect.ts`, `/api/stripe/connect/return.ts`, der `account.updated`-Webhook-Handler und die…</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate></item><item><title>i18n-Audit: Findings-Library, IT Assessment-Wizard, PDF-Report — keine deutschen Enum-Werte mehr für EN/ES-Tenants</title><link>https://mspercury.com/changelog#2026-05-07/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-07/</guid><description>🐛 Fixed — Findings-Library-Editor zeigte für EN- und ES-Workspaces die Priority/Effort-Dropdowns mit deutschen Werten („hoch / mittel / niedrig&quot;) an, obwohl alle Labels und…
🐛 Fixed — Gleicher Bug auf der Findings-Library-Listenseite — Filter-Pills und Item-Chips zeigten rohe deutsche Kategorie-Strings („Sicherheit&quot;, „Berechtigungen&quot;, „Sonstiges&quot;) und…
🐛 Fixed — IT Assessment-PDF-Report (kundenseitiges PDF!) leakte deutsche Priority/Effort-Werte in den Findings-by-Category-Listen, Risiko-Matrix-Achsenbeschriftungen und im…
🐛 Fixed — Inline-IT Assessment-Findings-Form (`CheckupFindingsForm.astro`) — Vanilla-JS-Island, das Card-für-Card die Findings rendert — hatte die gleichen rohen deutschen Werte…
🐛 Fixed — AI-generierte Tasks (Tier-1G-IT Assessment-zu-Tasks) zeigten ihre `priority`-Property im Operator-UI als rohe englische Werte „high / medium / low&quot; — auch im…</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate></item><item><title>Stripe Connect-Foundation, Roadmap-Refresh, Lexware/Polar/sevDesk-Pipeline</title><link>https://mspercury.com/changelog#2026-05-07/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-07/</guid><description>✨ Added — Stripe Connect (Phase 1) — Schema, Actions, Webhook-Hook und Settings-Seite stehen. Unter Einstellungen → Integrationen können Pro-Workspaces ihr eigenes Stripe-Konto…
✨ Added — Roadmap auf docs.mspercury.com (DE/EN/ES) komplett refresht. „Jetzt&quot; ist jetzt Public Read API + API-Keys, Stripe Connect, Webhooks, native iOS App. „Nächst&quot; ist…
🔧 Changed — Settings-Sidebar hat einen neuen Eintrag „Integrationen&quot; zwischen „Specialty-Profil&quot; und Superadmin-Block. Sub-Label „Stripe Connect · API&quot; macht klar wo&apos;s hingeht…
✨ Added — Drizzle-Migration `0001_add_stripe_connect.sql` committed: zwei neue Spalten auf `organizations` (`stripe_connect_account_id`, `stripe_connect_charges_enabled`)…</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate></item><item><title>Public IT Assessment ohne PIN-Gate, AI-Features mit BYO-Key, Beta-Hinweis, Cohort-Heatmap</title><link>https://mspercury.com/changelog#2026-05-06/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-06/</guid><description>🔧 Changed — Public IT Assessment-Funnel: das PIN-Eingabe-Schritt nach der E-Mail ist weg. Lead tippt Adresse, klickt „IT Assessment starten&quot;, landet direkt bei den Fragen — keine…
✨ Added — AI-Features dokumentieren ihren Bring-your-own-Key-Ansatz jetzt prominent auf der Landingpage. Anthropic, OpenAI oder beliebiger OpenAI-kompatibler Endpoint (Ollama…
✨ Added — Beta-Hinweis-Banner auf /login und Dashboard: erinnert dezent daran, dass wir während der Beta fast täglich kleine Fixes shippen — kurze Unterbrechungen können…
🔧 Changed — Partner-Netzwerk und Lead-Marktplatz sind jetzt klar als künftige Pro-Features markiert (Sidebar-Tag „Bald · Soon&quot;, Banner oben in /network/*, Tag in der Marktplatz-Card…
✨ Added — Superadmin → Cohorts ist nicht mehr „Coming Soon&quot;: Retention-Heatmap pro Signup-Kohorte (12 Wochen × 12 Offset-Wochen) mit Week-0-Activation und Week-4-Retention KPIs…
🗑 Removed — Pricing-Modell-Migration ist fertig: PWYW („pay what you want&quot;)-Reste sind aus dem User-facing Surface raus. /superadmin/pwyw bleibt für historische Pledges erreichbar…
✨ Added — Multi-Region-Hreflang: Marketing-Layout liefert jetzt zusätzlich zu en/de/es auch en-US, en-CA, de-DE, es-ES und es-MX an die Suchmaschinen aus — eigene SERPs für die…</description><pubDate>Wed, 06 May 2026 00:00:00 GMT</pubDate></item><item><title>Public IT Assessment-Embed-Bugfixes, Bell auch auf Mobile + Lead-Stream, neue Push-Surface „newLead&quot;, iframe-Snippet auf /leads, Embed-Quelle automatisch getaggt</title><link>https://mspercury.com/changelog#2026-05-05/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-05/</guid><description>🐛 Fixed — Public IT Assessment-Iframe lief in einer Endlosschleife: nach Email + PIN landete der Besucher wieder auf dem Email-Step. Ursache war doppelt: (1) der signierte…
🐛 Fixed — PIN-Eingabe im Iframe-Embed wurde mit „Bitte halten Sie sich an das vorgegebene Format&quot; abgewiesen, sobald iOS-Autofill oder Copy-Paste ein Leerzeichen mitbrachte. Das…
🐛 Fixed — Notification-Bell auf iOS-PWA war nicht antippbar. Drei kombinierte Ursachen: (1) der `&lt;script is:inline&gt;`-Block in `NotificationBell.astro` wurde pro Bell-Instanz…
🐛 Fixed — Push-Aktivierungs-Button in `/settings/notifications` hatte keine Funktion — der zentrale `&lt;Button&gt;`-Component reichte `data-*`-Attribute nicht ans `&lt;button&gt;`-Element…
🐛 Fixed — Notification-Center-Panel rutschte auf Mobile komplett aus dem sichtbaren Bereich nach links. Ursache: der Bell-Button steht auf Mobile in der Mitte der Button-Reihe…
🐛 Fixed — Lead-Karte zeigte „(direkt)&quot; als Quelle, sobald der Besucher den Iframe auf einer Site mit `Referrer-Policy: no-referrer` gesehen hat — dann fehlt sowohl Referer-Header…
✨ Added — Notification-Bell ist jetzt auch in der mobilen Top-Bar verfügbar (vorher nur auf md+ sichtbar) — der Bell-Aggregator wurde in `lib/notifications/bell-feed.ts`…
➕ …and 8 more changes — read the full notes.</description><pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate></item><item><title>KI-Tier-1C/1D/1E, Lead-Source-Tracking + UI, Stundensatz, MRR pro Kunde, Embed-Snippet, Web Push live, PDF DIN 5008 fix</title><link>https://mspercury.com/changelog#2026-05-04/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-04/</guid><description>✨ Added — KI-Meilenstein-Generator (Tier-1C) — auf jedem Projekt im Status-Tab aufklappbar als „✨ KI-Meilenstein-Entwurf&quot;. Sie tippen das Projektziel in 1–2 Sätzen ein („50…
✨ Added — Meilenstein-Reorder per Tastendruck — bei Hover über einen Meilenstein erscheinen rechts ↑/↓-Pfeile, die ihn um eine Position nach oben oder unten schieben. Die…
✨ Added — KI-Antwortvorschlag im Quote-Thread (Tier-1D) — direkt unter dem Antwort-Textfeld auf jeder Angebots-Detailseite ein neuer Button „✨ Antwort entwerfen&quot;. Klick liest die…
✨ Added — Service-Bericht → Status-Post Brücke (Tier-1E). Auf jedem versendeten oder bestätigten Service-Bericht steht jetzt ein „✨ Auch als Status posten&quot;-Button. Klick…
✨ Added — Stundensatz wird pro Workspace gespeichert. Unter Einstellungen → Finanzen gibt es ein neues Feld „Standard-Stundensatz&quot; — einmal setzen, dann bei jedem…
✨ Added — Kunden-MRR jetzt direkt sichtbar in der Kundenliste UND auf der Detailseite. Auf der Listenseite eine neue Spalte „MRR&quot; rechts mit dem effektiven Wert pro Kunde + einem…
✨ Added — Lead-Quellen-Attribution für den öffentlichen IT Assessment. Jeder neue Lead trägt jetzt die volle First-Touch-Attribution: Source-URL (mit Query-String), Referrer-Host…
➕ …and 10 more changes — read the full notes.</description><pubDate>Mon, 04 May 2026 00:00:00 GMT</pubDate></item><item><title>Customer-Communication-Hub: Service-Berichte, Wartungsfenster, Status-Stream + Diskussion</title><link>https://mspercury.com/changelog#2026-05-03/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-03/</guid><description>✨ Added — Status-Stream pro Projekt — kurze Updates an Ihre Kunden ohne den Umweg über E-Mail-Texte. Auf jedem Projekt gibt es einen neuen Reiter „Status &amp; Meilensteine&quot;. Sie…
✨ Added — Meilenstein-Tracker pro Projekt — die „Pizza-Tracker&quot;-Variante für IT-Projekte. Sie definieren die linearen Stufen Ihres Projekts (z. B. „Vertrag unterzeichnet →…
✨ Added — Service-Berichte — der digitale Servicebericht ersetzt den Zettel nach dem Vor-Ort-Termin. Sie tippen nach einem Einsatz Titel, Einsatzdatum, Aufwand in Stunden und…
✨ Added — Diskussion direkt am Service-Bericht. Wenn Ihr Kunde nach dem Lesen eine Rückfrage hat („War die SSD im Server 1 oder 2?&quot;, „Können wir die nächsten Reboots auf abends…
✨ Added — Wartungsfenster-Workflow — geplante Wartung mit Kunden-Bestätigung. Auf jedem Projekt gibt es einen neuen Reiter „Wartung&quot;. Sie schlagen einen Termin vor (Titel, Start…
✨ Added — Diskussion direkt am Status-Update. Genauso wie bei Service-Berichten kann Ihr Kunde jetzt auch unter jedem Status-Stream-Eintrag eine Rückfrage hinterlegen — kein extra…
✨ Added — Persönlicher Ansprechpartner pro Kunde. Auf der Kunden-Detail-Seite gibt es ein neues Dropdown unter den Kontaktdaten („Ansprechpartner (MSP-Seite)&quot;), in dem Sie aus den…
➕ …and 5 more changes — read the full notes.</description><pubDate>Sun, 03 May 2026 00:00:00 GMT</pubDate></item><item><title>Sign-flow + signed-PDF fixes, customer status auto-promotion, maintenance banner</title><link>https://mspercury.com/changelog#2026-05-01/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-05-01/</guid><description>✨ Added — Customer pipeline status now updates itself when reality moves the deal forward. First quote that goes out to a customer with no classification yet → Warm prospect…
✨ Added — Maintenance banner. Configurable via three env vars on the systemd unit — MAINTENANCE_BANNER_TEXT for the message, MAINTENANCE_BANNER_UNTIL for an optional ISO timestamp…
🐛 Fixed — Customers were getting &quot;Link not found&quot; after successfully signing an agreement. The DB row was correctly flipped to status=signed and the signed-PDF email actually went…
🐛 Fixed — Submit button on the public agreement-sign page was rendering white-on-white and effectively invisible. Cause: the button used `background: var(--sign-accent)` which…
🐛 Fixed — Signed-agreement PDF metadata block was laying out wrong: &quot;Datum 30. April 2026 um 21:49&quot; was wrapping into a tall column, &quot;Kunde ACME GmbH&quot; was running into &quot;IP-Adresse…
🐛 Fixed — Signing email&apos;s sign-link was pointing at http://127.0.0.1:4327. The detail page was building the URL from `Astro.url.origin`, which behind nginx is the upstream Node…
🐛 Fixed — Agreement emails arrived as plain text in some inboxes. Cause: the body was wrapped in raw `&lt;p&gt;` tags but had no full HTML document — Outlook (and a few others) fell…</description><pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate></item><item><title>Notification dismiss, customer pipeline status, internal team notes, branded agreement emails</title><link>https://mspercury.com/changelog#2026-04-30/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-04-30/</guid><description>✨ Added — Notification bell can be cleared without opening every quote. Each item in the dropdown has a small × button on hover that marks just that one as read; the header gained…
✨ Added — Customer pipeline status. Customers now carry an optional classification — Cold prospect, Warm prospect, Hot prospect, Active customer, Archived — surfaced as a coloured…
✨ Added — Internal notes thread on the customer detail page. Operator-only — no public surface, no email dispatch — meant for the team&apos;s running conversation about the…
✨ Added — MSPercury-branded HTML template for agreement emails. The DPA-sign invite + the signed-PDF confirmation now go through the same renderTransactional shell quote-thread…
✨ Added — Auto-linkification in transactional email bodies. The plain-text-to-HTML helper (used by every operator-authored email — quote sends, agreement sends, customer thread…
🐛 Fixed — Agreement sign-link in outgoing emails was pointing at http://127.0.0.1:4327. The agreement detail page built the sign URL from Astro.url.origin, which behind nginx is…
🐛 Fixed — Agreement sign emails arrived as plain text in some inboxes. Cause: the body was wrapped in raw &lt;p&gt; tags but had no full HTML document — Outlook (and a few others) fell…</description><pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate></item><item><title>IT Assessment wizard, customer language, AI summary controls, sender branding, PDF page breaks</title><link>https://mspercury.com/changelog#2026-04-28/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-04-28/</guid><description>✨ Added — &quot;Nicht zutreffend&quot; on every IT Assessment wizard question. Skip is no longer gated by a per-question flag — any question (Firewall on a solo-self-employed customer…
✨ Added — Score badge in the /checkups list. Finalised IT Assessments now show a coloured score pill (0–100 %) right next to the status badge, using the same emerald → amber →…
✨ Added — Customer-level preferred language. Customer create/edit form has a new &quot;Preferred language&quot; picker (Org default · Deutsch · English · Español). When set, it overrides…
✨ Added — Language picker in the email-send modal. Above subject + body, a small DE/EN/ES tab row lets you swap the entire draft to a different language with one click…
✨ Added — Sender branding: &quot;&lt;Your name&gt; via MSPercury&quot;. Customer-facing emails (quote PDF, quote share link, IT Assessment report) now arrive with the From-display-name set to the…
✨ Added — AI executive summary modal with language + detail-level controls. The old one-click button is gone, replaced by a proper modal: pick the output language (defaults to…
✨ Added — Standalone executive-summary PDF — accompanies the full IT Assessment report. New endpoint at /checkups/{id}/summary.pdf renders a single-page A4 with letterhead…
➕ …and 13 more changes — read the full notes.</description><pubDate>Tue, 28 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Account security overhaul: forgot-password, sessions, trusted devices, sign-in alerts</title><link>https://mspercury.com/changelog#2026-04-25/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-04-25/</guid><description>✨ Added — Forgot password? — finally. /login has a &apos;Forgot password?&apos; link that sends a single-use reset link by email. After you choose a new password, every existing session and…
✨ Added — Active sessions panel on Settings → Security. Every device that&apos;s currently signed in to your account is listed with the browser, IP and last-active time. Sign out a…
✨ Added — Trusted devices for 2FA. On the /login/2fa prompt you can tick &apos;Trust this browser for 30 days&apos; — that browser then skips the code on every sign-in for the next month…
✨ Added — New-device sign-in alert email. Whenever someone signs in to your account from a browser/IP combination we&apos;ve never seen, we send you an email with the device, IP, time…
✨ Added — Recent activity feed on Settings → Security shows the last 10 security events on your account: sign-ins, 2FA changes, passkey changes, password resets, support resets…
✨ Added — Support-reset hatch for lost 2FA. If a customer loses both their authenticator app AND all backup codes, we (operator) can now reset their 2FA from /superadmin/users…
✨ Added — Settings → Security link in the /settings sidebar. The page existed but wasn&apos;t reachable from anywhere — fixed.
➕ …and 14 more changes — read the full notes.</description><pubDate>Sat, 25 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Quote wizard, PDF viewer with progress bar, per-customer report export</title><link>https://mspercury.com/changelog#2026-04-23/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-04-23/</guid><description>✨ Added — Creating a new quote is now a clear 3-step wizard at /quotes/new/wizard: pick customer → pick project → build quote. If either doesn&apos;t exist yet, the &apos;New customer&apos; or…
✨ Added — PDFs now open inside the app in a centered modal instead of a new browser tab. The modal has a Download button, a close ✕, and an escape hatch to open in a new tab if…
✨ Added — Progress bar while the server renders a PDF. Instead of a blank white iframe that feels like the app froze, you see &apos;Gathering findings → Laying out → Rendering pages →…
✨ Added — Data-export ZIP now groups reports by customer. Each customer gets a customers/&lt;name&gt;/ folder containing their IT Assessment PDFs, quote PDFs and master record. The flat…
✨ Added — Package-editor live preview: type hypothetical workstation / server / user counts and instantly see how many units each package line would bill for that project — e.g…
✨ Added — Australian Dollar and Canadian Dollar added to the currency picker. The full list is now maintained in one place so Settings, onboarding and validation stay in sync.
🐛 Fixed — Amounts on the quote detail page and the quote list showed € everywhere, even when the quote was in USD, GBP, AUD etc. Every amount now displays in the quote&apos;s actual…
➕ …and 8 more changes — read the full notes.</description><pubDate>Thu, 23 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Security audit + hardening, docs site, SEO pass</title><link>https://mspercury.com/changelog#2026-04-22/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-04-22/</guid><description>🔒 Security — Fixed an open-redirect on login. A crafted link like /login?next=https://evil.example would send the user to the attacker&apos;s site after they signed in. Only same-origin…
🔒 Security — Signup no longer leaks which emails are customers. Trying to register an existing email used to return a visible &apos;409: account exists&apos; error; now the response looks…
🔒 Security — Login now rotates the session cookie. Any leftover session token is invalidated before a fresh one is issued, neutralising a narrow &apos;pre-plant a cookie in the victim&apos;s…
🔒 Security — Superadmin DPA flow could be abused, in the worst case, to delete arbitrary files on the server via a malicious path value. The field now only accepts a safe filename…
🔒 Security — SQLite database file permissions tightened from 644 to 600 (owner-only). Legacy TLS 1.0/1.1 lines removed from the main nginx config (the stricter TLS 1.2/1.3-only…
🔒 Security — Independent code-level security audit run across the whole app: session handling, multi-tenant isolation, Stripe webhook signature validation, PDF template XSS escaping…
✨ Added — NinjaOne monitoring and patch-management agent installed on the VPS. Reports to the EU datacenter; no application data leaves the server.
➕ …and 3 more changes — read the full notes.</description><pubDate>Wed, 22 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Feedback form, superadmin overview, cookie notice, signup consent</title><link>https://mspercury.com/changelog#2026-04-21/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-04-21/</guid><description>✨ Added — In-app feedback form at /feedback. Pick Bug / Feature request / Other, write a message, send. It lands in the superadmin dashboard and fires an email to the operator…
✨ Added — Superadmin dashboard at /settings/admin with a cross-tenant overview: stat cards for Tenants / Users / IT Assessments / Quotes / Pay-what-you-want / Feedback…
✨ Added — Cookie notice banner on every page. MSPercury only sets strictly-necessary cookies (session + language + banner acknowledgement) — the banner is transparency, not a…
✨ Added — GDPR-required explicit consent on signup: two separate checkboxes for Terms of Service and Privacy Policy, both mandatory, both open the policy in a new tab. Acceptance…
✨ Added — Starter IT Assessment findings library: 43 ready-made finding templates covering Security / Updates / Backup / Network / Compliance / Hardware / Permissions / Other…
🔧 Changed — Catalog seed is now locale-aware. When you click &apos;Load sample data&apos;, service names, descriptions and the default package name are picked in your workspace&apos;s language.
🔧 Changed — English is now the default language for unauthenticated visitors, regardless of their browser&apos;s Accept-Language header. Logged-in users still get their saved language…
➕ …and 4 more changes — read the full notes.</description><pubDate>Tue, 21 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Production deployment package + codebase audit</title><link>https://mspercury.com/changelog#2026-04-20/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-04-20/</guid><description>✨ Added — deploy/ folder with complete go-live package: README, DEPLOY master guide, ENVIRONMENT reference (20+ env vars), M365_SSO walkthrough (Entra app registration +…
✨ Added — deploy/nginx/mspercury.conf — reverse proxy with security headers, HSTS, gzip, long-cache for fonts + _astro assets, upstream timeouts tuned for WeasyPrint PDF rendering
✨ Added — deploy/systemd/mspercury.service — sandboxed unit running dist/server/entry.mjs as the mspercury user, strict NoNewPrivileges + ProtectSystem + ReadWritePaths limited to…
✨ Added — deploy/scripts: deploy.sh (pull/build/migrate/restart with health check), backup-sqlite.sh (nightly SQLite .backup + tgz of uploads/attachments/dpa-signed → Hetzner…
✨ Added — deploy/.env.production.template — sanitised env file with every variable documented inline, grouped by required / optional / third-party
🔧 Changed — package.json: added start:prod running node ./dist/server/entry.mjs for production (existing start is dev-only)
✨ Added — Full codebase audit: no dead links, no orphan actions, all action imports verified in src/actions/index.ts, every href traced to an existing page, API endpoints…</description><pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate></item><item><title>DSGVO launch-readiness: self-hosted fonts, rewritten privacy policy, Art. 28 DPA + download flow</title><link>https://mspercury.com/changelog#2026-04-19/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-04-19/</guid><description>🗑 Removed — Google Fonts / Gstatic completely eliminated. Every &lt;link rel=&apos;preconnect|stylesheet&apos;&gt; that pointed at fonts.googleapis.com or fonts.gstatic.com is gone — BaseLayout…
✨ Added — Self-hosted Geist variable woff2 under /public/fonts/ (plus a Mono variant for &lt;code&gt;) with one @font-face declaration in global.css and a font-display: swap. Each…
✨ Added — Privacy policy fully rewritten (DE + EN, same-file bilingual). 11 numbered sections with stable #anchor ids — Verantwortlicher, Datenschutzbeauftragter, Zwecke +…
✨ Added — Auftragsverarbeitungsvertrag (AVV) / DPA at /legal/dpa — full Art. 28 Abs. 3 DSGVO coverage: Parteien, Gegenstand + Dauer, Weisungsrecht, Pflichten…
✨ Added — GET /legal/dpa.pdf?lang=de|en — WeasyPrint-rendered PDF via the same pipeline as IT Assessment / quote reports, with ?controller=&lt;tenant&gt; pre-filling the controller line…
✨ Added — Settings card &apos;Datenschutz &amp; Auftragsverarbeitung&apos; — two download buttons (AVV Deutsch / DPA English), Upload-signed-PDF dropzone that stores the countersigned file…
✨ Added — Superadmin-only /settings/dpa-admin — table of every tenant with DPA status (not_signed / sent / signed), download + signing timestamps, and a &apos;Mark signed&apos; shortcut for…
➕ …and 3 more changes — read the full notes.</description><pubDate>Sun, 19 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Health score, infrastructure wizard step, PDF photos, OS-scoped quote engine</title><link>https://mspercury.com/changelog#2026-04-18/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-04-18/</guid><description>✨ Added — 0–100 % health score on every IT Assessment — shared helper drives an SVG ring hero on both the HTML report and the WeasyPrint PDF. Weights: −8 per high, −4 per medium…
✨ Added — Wizard infrastructure step at /checkups/wizard/{id}/infrastructure — captures per-OS workstation counts (Windows / macOS / Linux / ChromeOS / Other), server breakdown…
✨ Added — OS-scoped quantity types on the quote engine: per_windows_ws, per_macos_ws, per_linux_ws, per_chromeos_ws, per_windows_srv, per_linux_srv. buildQuoteFromCheckup resolves…
✨ Added — PDF report now embeds all attached photos as base64 data URLs in a dedicated &quot;Photo appendix&quot; section — 2-up grid, captioned with the question scope (infrastructure vs…
✨ Added — Report HTML redesigned mobile-first: class-based responsive CSS, meta grid collapses 4→2 columns under 640 px, action bar stacks on mobile and sits row-wise on desktop…
✨ Added — Wizard desktop layout: sticky top progress row, question content, and fixed bottom action bar share a consistent max-w-3xl inner column; fixed bottom bar gets md:left-60…
🐛 Fixed — Image upload 400 error — null-tolerant schemas (questionId / caption) let multipart photo uploads succeed again. Verified end-to-end with a 631-byte test JPEG
➕ …and 1 more change — read the full notes.</description><pubDate>Sat, 18 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Guided IT Assessment wizard with adaptive questions, photos, EN/DE/ES i18n</title><link>https://mspercury.com/changelog#2026-04-17/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-04-17/</guid><description>✨ Added — Prominent &apos;Start a new IT Assessment&apos; CTA card at the top of the dashboard — one tap kicks off the guided wizard
✨ Added — /checkups/wizard/{id}/step/{n} — mobile-first step page with sticky progress bar, type-aware inputs (yesno / single / multi / scale / text), keyboard shortcuts (Enter…
✨ Added — Adaptive conditional routing: questions with unmet `showIf` clauses are skipped server-side, so step numbers always point to the next visible question
✨ Added — Auto finding-rule engine: answers trigger deterministic findings (description + priority + effort + optional linked service code), tagged with sourceQuestionId so…
✨ Added — /checkups/wizard/{id}/review — collapsible category groups, editable executive summary (auto-drafted from top-3 findings), add/remove findings, one-click Finalize, and…
✨ Added — 30 default questions across all 7 categories (Sicherheit / Updates / Backup / Netzwerk / Compliance / Hardware / Berechtigungen) — every prompt, context, option label…
✨ Added — /api/checkup-attachments/{id} streams uploaded photos with auth + org-ownership checks; uploads land under data/checkup-attachments/{orgId}/ and keep EXIF-stripped…
➕ …and 1 more change — read the full notes.</description><pubDate>Fri, 17 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Pay-what-you-want, setup wizard, breadcrumbs, backup disclosure</title><link>https://mspercury.com/changelog#2026-04-16/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-04-16/</guid><description>🔧 Changed — Rebranded away from &apos;closed beta&apos;: product is now Free + Pay-what-you-want, forever. No trial, no gated plans, no upgrade nags — voluntary contributions only
✨ Added — Pay-what-you-want form (Settings → Billing + public /pay): set a net amount, pick one-time / monthly / yearly, live 19 % VAT calc + gross total, collapsible…
✨ Added — Two PWYW submit paths: email inquiry (from noreply@mspercury.com → info@it-flores.de for manual arrangement) + Stripe Checkout with custom-amount price_data + Stripe Tax…
✨ Added — Setup wizard at /onboarding — new workspaces are gated here until they confirm workspace name, language, currency, VAT rate and optional brand color
✨ Added — Breadcrumb navigation on every menu-driven page (Dashboard → Customers → Acme GmbH etc.) — auto-derived from route, with per-page tail overrides for detail entities…
✨ Added — Terms of Service &amp; DPA now explicitly disclose the backup policy: daily full-server backups DO happen; per-tenant snapshots / workspace restore points DO NOT EXIST YET…
🐛 Fixed — PWYW form: amount input and interval select are now baseline-aligned on desktop (long label no longer wraps and pushes the input below its neighbour)
➕ …and 2 more changes — read the full notes.</description><pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Docs + Changelog nav, SW dev-unregister, Post-Redirect-Get polish</title><link>https://mspercury.com/changelog#2026-04-15/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-04-15/</guid><description>✨ Added — Sidebar links to /docs and /changelog under a new Help section
✨ Added — /changelog page with date-grouped collapsible entries
🐛 Fixed — Service worker is now disabled in dev mode and actively unregistered — stale caches no longer hide form-submit redirects
🐛 Fixed — Settings actions (language, finance, branding, profile, AI) self-redirect after save so the page re-renders with fresh middleware locals, not stale ones
🐛 Fixed — Primary buttons (New quote / New customer / New project / New IT Assessment) get a dark-mode-aware accent variant so they&apos;re readable after theme inversion</description><pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Dark mode, Cmd+K search, AI integration, CSV + ZIP exports, /docs</title><link>https://mspercury.com/changelog#2026-04-14/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-04-14/</guid><description>✨ Added — Three-state theme toggle (system / light / dark) in the top header, no-flash-on-load
✨ Added — Global command palette via Cmd/Ctrl+K — searches customers, projects, IT Assessments, quotes, finding templates, services, packages
✨ Added — Desktop top header with search trigger + theme toggle; mobile top bar gets matching icons
✨ Added — AI integration: Anthropic (Claude) + OpenAI (GPT) providers, AES-GCM-encrypted API keys, &quot;Generate executive summary&quot; button on IT Assessment editor, auto-embedded into…
✨ Added — CSV export per entity (/api/export/&lt;entity&gt;.csv) for customers, projects, quotes, IT Assessments, findings, services, packages
✨ Added — Workspace ZIP export (GDPR Art. 20) — full workspace or per-customer, streamed via archiver, contains JSON + CSV + uploaded logo
✨ Added — /docs page with 12-section feature walkthrough in English
➕ …and 3 more changes — read the full notes.</description><pubDate>Tue, 14 Apr 2026 00:00:00 GMT</pubDate></item><item><title>IT Assessment module, WeasyPrint PDF reports, invite-only beta</title><link>https://mspercury.com/changelog#2026-04-13/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-04-13/</guid><description>✨ Added — IT Assessment audit module: finding templates library, priority + effort grading, quote generation from mapped findings, immutable snapshots on finalize
✨ Added — WeasyPrint-rendered PDF reports for IT Assessments (cover + TOC + risk matrix + findings by category + methodology + appendix) and quotes (letterhead + line items per…
✨ Added — Invite-only beta signup gate: superadmin issues codes, signup requires ?invite=CODE, invited workspaces are flagged is_beta_account and exempt from Stripe lockout
✨ Added — Custom confirm modal replacing browser confirm() dialogs (mobile-first bottom-sheet, safe-area-insets)
✨ Added — PWA manifest + service worker + offline fallback + installable icons
🔧 Changed — Pricing model paused during closed beta — free for beta participants, Stripe code retained for later activation</description><pubDate>Mon, 13 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Mobile-first redesign, i18n, marketing + legal pages</title><link>https://mspercury.com/changelog#2026-04-12/</link><guid isPermaLink="true">https://mspercury.com/changelog#2026-04-12/</guid><description>✨ Added — Mobile-first nav: desktop sidebar + mobile top bar with drawer + bottom tab bar
✨ Added — EN/DE translation system with per-user preferredLanguage and Accept-Language fallback
✨ Added — Public marketing pages: landing, pricing, imprint, terms, privacy, DPA, cookies (EN + DE)
✨ Added — Design tokens: Geist font, warm stone-neutral ink scale, emerald accent, motion easing, shadow scale
✨ Added — Microsoft 365 OAuth login flow (multi-tenant, optional Graph organization read for auto-named workspace)
✨ Added — Hetzner SMTP mailer abstraction with EN/DE transactional templates (welcome, trial-ending, seat invite, payment receipt)
✨ Added — Stripe billing scaffolding: seat-based subscription, Customer Portal, Tax, webhook handler, trial lifecycle</description><pubDate>Sun, 12 Apr 2026 00:00:00 GMT</pubDate></item></channel></rss>