PageSourceSearch

https://bluelanternsecurity.io/ReleaseNotes-DjgEWzuQ.js

js bluelanternsecurity.io collected 2026-10-02 01:57:24 UTC 30,533 bytes, 170 lines download raw bytes

1import{u as O,a as P,r as h,j as e,P as L,X as D,M as C,S,C as N,b as z,L as j,A,c as I,d as B,e as H,f as M}from"./index-C86sjUM7.js";import{d as F,M as U,r as $,a as W}from"./docSeo-DrxvHMBd.js";import{S as V}from"./search-C0pTPwzI.js";import{F as G}from"./folder-open-CNAf24li.js";import{T}from"./tag-DioSd_47.js";const q=`# v1.5.0
2
3The platform grows past the inbox. This release retires the credit model in favor of a **Free Tier** and flat **Seat Licenses**, adds bring-your-own-EDR integrations for **CrowdStrike Falcon** and **Microsoft Defender**, introduces the **AI Exposure** scan, connects **personal Outlook.com mailboxes** with one click, and expands the attestation report.
4
5## Free Tier and Seat Licenses
6
7- **Credits are gone.** Every personal account now gets **30 free Scan Now runs a day** across the email, URL, and file analyzers, with full reports and no card required. Cached repeat submissions do not count.
8- **One flat price.** A Seat License ($15 per seat per month) covers one monitored person and unlocks everything that runs without you clicking: org-wide Gmail and Microsoft 365 integrations, device agents, browser and mail extensions, the forwarding mailbox, and API keys, with fair use up to 500 runs per seat per day. Shared organization accounts run on seats only.
9- **Clearer account pages.** The Account overview shows your plan, today's usage, and a subscription card with invoice history; the Tasks view badges which setup steps need a seat.
10
11## Bring your own EDR
12
13- **CrowdStrike Falcon.** Connect a read-only API client (Hosts: Read, User Management: Read, Alerts: Read) and every Falcon-protected device gets a daily health run: sensor online, sensor healthy, prevention policy assigned, and no active alerts. Runs appear beside agent scans in the Monitoring Hub and the attestation report.
14- **Microsoft Defender for Endpoint.** The same for Defender P2 and Defender for Business tenants, through a read-only Entra app registration, with a Defender-specific antivirus health check. Both integrations attribute devices to owners conservatively and never read host contents, vulnerabilities, or alert details.
15
16## AI Exposure
17
18- **Which AI tools can touch your data.** A new daily scan on the Google Workspace and Microsoft 365 integrations inventories third-party OAuth grants and flags AI tools that can reach mail, files, or calendars, plus unverified apps holding data scopes (the classic OAuth-phishing shape). It reads grant metadata only, never message or file content.
19- **New everywhere it matters.** AI Exposure is a monitor type in the hub, has its own report page, can be targeted by alert rules (a rule on Critical or At Risk fires when a new risky app appears after the first baseline scan), and adds an AI Exposure section to the attestation report.
20
21## Personal Outlook.com mailbox
22
23- **One-click monitoring for individuals.** Personal accounts can connect their own Outlook.com, Hotmail, Live, or MSN mailbox with a single Microsoft sign-in. New inbox mail is analyzed automatically, read-only and inbox only, and can be disconnected at any time.
24
25## Reports and monitoring hub
26
27- **URL Threat Analyzer.** The URL Detonation Engine is now the URL Threat Analyzer (same engine, friendlier name) at \`/url-analyzer\`; old links redirect.
28- **Analyze any link from an email report.** Every email report now lists all extracted links, not only the flagged ones, each with an Analyze button that sends it to the URL Threat Analyzer.
29- **Clearer URL report details.** Clean detail sections read "No results" instead of a field count, behaviour findings such as ClickFix clipboard lures are explained when detected, and check rows jump to their exact detail.
30- **Attestation report.** Gains the AI Exposure section, an AI-apps summary tile, and EDR-vendor-blind device checks.
31- **Product tour.** First-time personal accounts get a guided tour of the hub, integrations, account, organizations, and Scan Now, replayable from the Account page.
32
33## Other improvements
34
35- Landing page updated around the small-business positioning, with the coverage table covering AI exposure and EDR integrations.
36- Sales inquiry form replaces the mailto link on the Cyber Security Snapshot page.
37- Documentation pages added for the Monitoring Hub, the Security Attestation Report, and both EDR integrations.
38`,Y=`# v1.4.0
39
40Monitoring gets proactive. This release adds **Alerts** — scheduled rules that notify you by email or straight into your SIEM when runs match conditions you care about — plus **device monitoring** for macOS and Windows, and clearer monitor management.
41
42## Alerts
43
44- **A new Alerts view in the Monitoring Hub.** Define rules that check your completed runs on a schedule and deliver the matches — no more logging in just to see if something went wrong.
45- **Email or HTTP delivery.** Send alerts to any email address, or POST them as JSON to an https endpoint. Custom request headers let you authenticate to your tooling — including **Splunk HEC** (point a rule at your \`/services/collector/raw\` endpoint with a \`Splunk <token>\` Authorization header).
46- **Alert on what matters.** Trigger on a failed-checks threshold, on explicit verdicts (Malicious, Suspicious, Clean, plus the device verdicts Critical, At Risk, Healthy), on specific run types (URL, email, file, device), or any combination. Leave the filters empty to get everything.
47- **Immediate, hourly, or daily.** Choose per rule: **immediate** fires within seconds of each matching run (one alert per run — ideal for paging on Malicious or Critical verdicts), while **hourly/daily** rules send one batched digest per window covering all matches, with failed deliveries retried so nothing is lost. A digest lists up to 100 runs and covers up to 500 matches per window; pair an immediate rule with a digest for a guaranteed backstop.
48- **Test delivery instantly.** A "Send Test" action pushes a synthetic alert through the rule's channel right now, so you can confirm the recipient, webhook, and tokens work without waiting for the schedule. Delivery failures come back with the reason.
49- **Pause and resume.** Toggle any rule off without deleting it. Saved webhook header values (like tokens) are never echoed back by the API — they stay write-only.
50
51## Device monitoring
52
53- **Monitor the device itself.** A new Device Monitor type joins browser and mail monitors: a lightweight agent checks each machine's security posture about once an hour and reports the results — only pass/fail results leave the device.
54- **macOS Agent.** A signed and notarized installer, downloadable from the new macOS Agent page. Checks FileVault, System Integrity Protection, Gatekeeper, firewall, sharing services, automatic updates, and guest login. Enroll with one command.
55- **Windows Agent.** Checks BitLocker, Secure Boot, antivirus health, UAC, RDP, SMBv1, firewall, and automatic updates. The installer is signed with an EV code-signing certificate — SmartScreen may still flag a fresh release while the certificate builds reputation, so a SHA-256 checksum is shown next to the download.
56- **Posture verdicts and reports.** Device scans are scored Healthy, At Risk, or Critical, appear in the Monitoring Hub under the new Device filter, and open into a full device posture report showing every check with its severity and result.
57- **Seat-licensed only.** Device monitoring runs exclusively on seat licenses (no credit fallback) — assign the monitor to a seated member and all of their monitors share that seat's daily fair-use budget.
58
59## Clearer monitor management
60
61- **Name and seat assignment are now separate.** Every monitor (and API key) has a free-text display name and, separately, a seat assignment — the seated member's email its runs bill to and report as the submitter. No more overloading one field for both.
62- **Edit monitors in place.** Rename or reassign a monitor from the Monitors table without regenerating its key — extensions and agents keep working through the change.
63- **Guardrails on seat assignment.** Assignments must match an active seated member; the form suggests your seated members, warns before you submit a mismatch, and explains exactly how to fix a rejection.
64
65## Other improvements
66
67- **New Active Monitoring page** describing all five monitors — Chrome, Outlook, Gmail, macOS, and Windows — with setup links for each.
68- **SOC 2 badge across the product.** Our SOC 2 Type 1 attestation (Type 2 in progress) is now shown on the landing, pricing, and monitor setup pages, linking to the Trust Center.
69- **CSV export fix.** The Monitoring Hub export now correctly includes the Submitted By column.
70- **Report column clarity.** Runs without a report page no longer show a perpetual "Pending" state.
71`,K=`# v1.3.0
72
73Team collaboration comes to Blue Lantern. This release introduces **Organizations** — shared accounts with members, roles, and centralized visibility — and **seat pricing**, a flat monthly alternative to credits for continuous monitoring.
74
75## Organizations
76
77- **Bring your team onto one account.** Create a shared organization account with its own name, members, monitors, and single rolled-up bill — separate from your permanent personal account. You can create up to 20 and switch between them anytime from the account switcher on the Organization page.
78- **Members with roles.** Add **Admins** (can sign in and see all runs, members, and billing) and **Members** (monitor-only — granted monitor keys, but no login and no visibility). Change roles inline, and reinstate or remove people as your team changes.
79- **Centralized visibility.** Admins see every member's URL, email, and file scans across the whole organization in the Monitoring Hub, and can filter by submitter to zero in on one person or monitor. Members are automatically scoped to their own activity.
80- **Seats per member.** Toggle a seat on any member to put their monitor activity onto the flat seat license instead of your credit balance.
81
82## Seat pricing
83
84- **A flat monthly alternative to credits.** Active monitoring (browser, email, and device extensions and the phishing mailbox) can now be licensed per user at **$15 per seat per month**, so your cost is predictable instead of ticking down with every automated scan.
85- **Un-credited monitor runs, up to 500/day.** A seated user's monitor runs don't draw down credits, up to a fair-use cap of **500 runs per day** per seat. It's a soft cap — you're never charged overage.
86- **Seats tie to monitors by email.** A monitor is covered by a seat only when its submitter email exactly matches a seated member's email; otherwise its scans fall back to credits. The monitor-creation screen now spells this out.
87- **Buy the way that fits your account.** Personal accounts get a single seat license via direct checkout from the Pricing or Account page. Organizations set a total seat count from the Organization billing section — enter the new total (not a delta), prorated and adjustable anytime.
88- **Full billing control.** Cancel at the end of the billing period (seats keep working until the shown date, then runs fall back to credits), and use **Manage billing** to update your card, billing details, and invoices through the Stripe customer portal.
89
90## Documentation
91
92- **New guides.** Added **Organizations** and **Seat Licenses & Pricing** pages to the docs, covering account types, member management, centralized visibility, and how seat licenses are priced and tied to monitors.
93
94## Other improvements
95
96- **Clearer branding.** Renamed a few navigation labels for clarity — **Scan Now** (formerly SaaS Offerings), **Local Scanner** (formerly On-Prem Toolkit), and **Chrome Monitor** (formerly Browser Monitor) — across the app and docs.
97`,J=`# v1.2.0
98
99A release centered on the Monitoring Hub — a faster, filterable view of all your scan activity — plus a new way to manage scoped "monitor" keys for browser and email extensions, and clearer verdicts on every report.
100
101## Monitoring Hub
102
103- **All your scan activity in one place.** The Monitoring Hub brings your URL, email, and file scans together so you can hunt across everything at once. Filter by monitor type, status, time range, verdict, submitter, and check results, then jump straight to any report.
104- **Built for large volumes.** Filtering, sorting, and pagination now happen on the server, so the hub stays fast even across tens of thousands of runs. Results show a running total and page through your full history instead of a capped snapshot.
105- **Verdict and checks at a glance.** Every run shows our determination — Clean, Suspicious, or Malicious — alongside how many checks were flagged out of the total, so you can triage without opening each report.
106- **Export what you're viewing.** Download the currently filtered results as CSV (up to 1,000 runs), with verdict and check counts included.
107- **7-day report retention, made clear.** Report data is retained for 7 days. Older runs remain listed for reference, but their full reports can no longer be opened or exported — the hub now states this and disables the report link on expired runs so you don't hit a dead end.
108
109## Monitors
110
111- **A new Monitors page.** Switch to the Monitors view from within the Monitoring Hub to create and manage scoped keys for your browser and email extensions.
112- **Create a monitor in seconds.** Name the monitor, choose its type (Web Extension or Mail Extension), set an expiration date, then copy or download the generated key. The key is shown only once, so s
112ave it right away.
113- **Scoped by design.** A Web Extension monitor can only run URL detonations, and a Mail Extension monitor can only run email analyses. Neither can read the rest of your account data — an extension key stays limited to exactly what it needs.
114- **Manage them anytime.** Review and delete monitors from the Monitors page. They also appear in your Account's API Keys panel, clearly tagged as monitors, so nothing is hidden and account cleanup stays complete.
115
116## Determinations on every report
117
118- **Verdict summary up top.** URL Detonation, Email Analysis, and Static Malware Analysis reports now open with a clear summary: our determination (Clean, Suspicious, or Malicious), the number of failed checks, and the total number of checks run.
119- **Consistent everywhere.** The same determination and check counts now appear both on the reports themselves and throughout the Monitoring Hub.
120
121## Other improvements
122
123- **Consistent report headers.** The URL Detonation report now shows the analysis date, matching the Email and Malware reports.
124- **Cleaner report summaries.** Removed the duplicate "Total Checks" tile from report summary cards now that the verdict summary shows it at the top.
125- **Smoother navigation.** The top navigation bar now collapses more gracefully as the window narrows.
126`,Q=`# v1.1.0
127
128A release focused on API key management, giving teams more control over how they create, organize, and track programmatic access.
129
130## What's New
131
132- **Multiple API keys per account.** You can now create and hold more than one active API key at a time, so each user, service, or project can have its own credential instead of sharing a single key.
133- **Name your API keys.** When you create a key, you can give it a name and attribute it to a user or a project. The name makes it easy to tell your keys apart and to keep track of where each one is used.
134- **Manage keys from your account.** The Account page now opens a dedicated API Keys panel where you can review every active key, search by name or ID, and revoke individual keys without affecting the others. Keys open in a focused popup so a long list never crowds the page.
135- **Key attribution on reports.** The Reports page now shows which key a job was run with, so you can see at a glance who or what submitted each analysis. Jobs submitted directly from the website are shown under the submitter's name.
136
137## Notes
138
139- Deleting your account now requires revoking every active API key first, up from a single key previously.
140`,X=`# v1.0.2
141
142A security maintenance release that updates dependencies to address vulnerabilities flagged in our automated security monitoring.
143
144## Security
145
146- **Updated React Router to 7.17.0.** Resolves several disclosed vulnerabilities in the routing library (CVE-2026-33244, CVE-2026-33245, CVE-2026-34077, CVE-2026-40181, CVE-2026-42211, and CVE-2026-42342).
147- **Updated PostCSS to 8.5.15.** Resolves a vulnerability in the CSS build toolchain (CVE-2026-41305).
148
149There are no user facing changes in this release. We recommend no action on your part.
150`,Z=`# v1.0.1
151
152## What's New
153
154- **Product launch video on the landing page.** Our launch video is now featured on the homepage so new visitors can see the platform in action right away.
155- **Sign up button in the landing page body.** Added a sign up call to action within the body of the landing page, making it easier to get started without scrolling back to the top.
156
157## Fixes
158
159- **Python code scanner false positives (on prem).** Reduced false positives in the Python code scanner for on premises deployments so results are more accurate.
160`,ee=Object.assign({"/src/release-notes/0-v1.5.0.md":q,"/src/release-notes/1-v1.4.0.md":Y,"/src/release-notes/2-v1.3.0.md":K,"/src/release-notes/3-v1.2.0.md":J,"/src/release-notes/4-v1.1.0.md":Q,"/src/release-notes/5-v1.0.2.md":X,"/src/release-notes/6-v1.0.1.md":Z});function b(s){return s.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/(^-|-$)/g,"")}function te(s){const t=[],n=new Map;for(const[i,c]of Object.entries(s)){const l=i.replace("/src/release-notes/","").replace(/\.md$/,"").split("/");if(l.length===1){const r=l[0].replace(/^\d+-/,"");t.push({title:r,slug:b(r),content:c,group:null})}else{const r=l.slice(0,-1).map(m=>m.replace(/^\d+-/,"")).join("/"),u=l[l.length-1].replace(/^\d+-/,""),x=l.map(m=>m.replace(/^\d+-/,"")).map(b).join("/");n.has(r)||n.set(r,[]),n.get(r).push({title:u,slug:x,content:c,group:r})}}const o=[];t.length>0&&o.push({group:null,items:t});for(const[i,c]of n)o.push({group:i,items:c});return o}function R({children:s,className:t}){const[n,o]=h.useState(!1),i=t?.replace("language-","")||"",c=()=>{navigator.clipboard.writeText(String(s).trimEnd()),o(!0),setTimeout(()=>
160o(!1),2e3)};return e.jsxs("div",{className:"relative group my-4",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-2 bg-slate-950/80 border border-slate-700/50 rounded-t-xl border-b-0",children:[e.jsx("span",{className:"text-[10px] uppercase tracking-wider text-slate-500 font-semibold",children:i}),e.jsxs("button",{onClick:c,className:"text-xs flex items-center gap-1 text-slate-500 hover:text-white transition-colors",children:[n?e.jsx(B,{className:"w-3 h-3 text-emerald-400"}):e.jsx(H,{className:"w-3 h-3"}),n?"Copied":"Copy"]})]}),e.jsx("pre",{className:"bg-slate-950/60 border border-slate-700/50 rounded-b-xl p-4 overflow-x-auto text-sm text-cyan-300 font-mono leading-relaxed !mt-0",children:e.jsx("code",{children:s})})]})}R.propTypes={children:M.node,className:M.string};function k(s){return typeof s=="string"?s:typeof s=="number"?String(s):Array.isArray(s)?s.map(k).join(""):s?.props?.children?k(s.props.children):""}function ne(s){return{h1:({children:t})=>e.jsx("h1",{id:b(k(t)),className:"text-2xl sm:text-3xl font-bold text-cyan-400 mb-3 scroll-mt-28",children:t}),h2:({children:t})=>e.jsx("h2",{id:b(k(t)),className:"text-lg font-semibold text-white mt-8 mb-4 scroll-mt-28",children:t}),h3:({children:t})=>e.jsx("h3",{id:b(k(t)),className:"text-base font-semibold text-white mt-6 mb-3 scroll-mt-28",children:t}),p:({children:t})=>e.jsx("p",{className:"text-slate-300 leading-relaxed mb-4",children:t}),a:({href:t,children:n})=>{if(t?.startsWith("#")){const o=i=>{i.preventDefault();const c=t.slice(1),y=document.getElementById(c);if(!y)return;const l=y.getBoundingClientRect().top+window.scrollY-80,r=window.scrollY,u=l-r,x=2e3;let m=null;const f=g=>g<.5?4*g*g*g:1-Math.pow(-2*g+2,3)/2,p=g=>{m||(m=g);const w=Math.min((g-m)/x,1);window.scrollTo(0,r+u*f(w)),w<1&&requestAnimationFrame(p)};requestAnimationFrame(p),window.history.pushState(null,"",t)};return e.jsx("a",{href:t,onClick:o,className:"text-cyan-400 hover:text-cyan-300 transition-colors",children:n})}if(t?.startsWith("./")&&t.includes(".md")){const[o,i]=t.split("#"),c=o.replace("./","").replace(/\.md$/,""),y=b(c.replace(/^\d+-/,"")),l=s?s.split("/").map(b).join("/"):"",r=l?`/release-notes/${l}/${y}`:`/release-notes/${y}`,u=i?`${r}#${i}`:r;return e.jsx(j,{to:u,className:"text-cyan-400 hover:text-cyan-300 transition-colors",children:n})}return t?.startsWith("/")&&/\.\w+$/.test(t)?e.jsx("a",{href:t,download:!0,className:"text-cyan-400 hover:text-cyan-300 transition-colors",children:n}):t?.startsWith("/")?e.jsx(j,{to:t,className:"text-cyan-400 hover:text-cyan-300 transition-colors",children:n}):e.jsx("a",{href:t,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-400 hover:text-cyan-300 transition-colors",children:n})},ul:({children:t})=>e.jsx("ul",{className:"space-y-2 my-4 ml-1",children:t}),ol:({children:t})=>e.jsx("ol",{className:"space-y-3 my-4 ml-1 counter-reset-item",children:t}),li:({children:t,ordered:n,index:o})=>n?e.jsxs("li",{className:"flex gap-3",children:[e.jsx("span",{className:"flex-shrink-0 w-7 h-7 rounded-full bg-cyan-500/15 border border-cyan-500/30 flex items-center justify-center text-xs font-bold text-cyan-400",children:(o??0)+1}),e.jsx("div",{className:"pt-0.5 text-sm text-slate-300 leading-relaxed",children:t})]}):e.jsxs("li",{className:"flex items-start gap-2 text-sm text-slate-300 leading-relaxed",children:[e.jsx(N,{className:"w-4 h-4 text-cyan-500 mt-0.5 flex-shrink-0"}),e.jsx("div",{children:t})]}),blockquote:({children:t})=>e.jsx("div",{className:"rounded-xl border border-cyan-500/20 bg-cyan-500/5 p-5 my-4",children:e.jsx("div",{className:"text-sm text-slate-300 leading-relaxed [&>p]:mb-0",children:t})}),code:({children:t,className:n,...o})=>!n&&!o.node?.position?e.jsx("code",{className:"bg-slate-800 px-1.5 py-0.5 rounded text-xs text-cyan-300",children:t}):e.jsx("code",{className:n,children:t}),pre:({children:t})=>{const n=t?.props;return n?e.jsx(R,{className:n.className,children:n.children}):e.jsx("pre",{children:t})},table:({children:t})=>e.jsx("div",{className:"overflow-x-auto my-4",children:e.jsx("table",{className:"w-full text-sm border-collapse",children:t})}),thead:({children:t})=>e.jsx("thead",{children:e.jsx("tr",{className:"border-b border-slate-700",children:t?.props?.children})}),th:({children:t})=>e.jsx("th",{className:"text-left py-3 px-4 text-slate-400 font-medium",children:t}),tbody:({children:t})=>e.jsx("tbody",{className:"text-slate-300",children:t}),tr:({children:t})=>e.jsx("tr",{className:"border-b border-slate-800/50",children:t}),td:({children:t})=>e.jsx("td",{className:"py-3 px-4",children:t}),strong:({children:t})=>e.jsx("strong",{className:"text-white font-semibold",children:t}),hr:()=>e.jsx("div",{className:"my-12 h-px bg-slate-800"})}}function le(){const s=O(),t=P(),[n,o]=h.useState(!1),[i,c]=h.useState(""),[y,l]=h.useState({}),r=h.useRef(null),u=h.useMemo(()=>te(ee),[]),x=h.useMemo(()=>u.flatMap(a=>a.items),[u]),m=s.pathname.replace(/^\/release-notes\/?/,""),f=m||x[0]?.slug||"",p=x.find(a=>a.slug===f)||x[0],g=p?.title||"Release Notes";h.useEffect(()=>{!m&&x.length>0&&t(`/release-notes/${x[0].slug}`,{replace:!0})},[m,x,t]),h.useEffect(()=>{r.current?.scrollTo(0,0)},[f]);const w=h.useCallback(a=>{o(!1),t(`/release-notes/${a}`)},[t]),E=h.useCallback(a=>
160{l(d=>({...d,[a]:!d[a]}))},[]),_=h.useMemo(()=>{if(!i)return u;const a=i.toLowerCase();return u.map(d=>({...d,items:d.items.filter(v=>v.title.toLowerCase().includes(a)||v.content.toLowerCase().includes(a))})).filter(d=>d.items.length>0)},[u,i]);return e.jsxs("div",{className:"min-h-screen bg-slate-950 text-white pt-20",children:[e.jsx(L,{title:p?`${g} release notes | Blue Lantern Security`:"Release Notes | Blue Lantern Security",description:F(p?.content,"What's new in Blue Lantern Security: features, improvements, and fixes by version."),path:p?`/release-notes/${p.slug}`:"/release-notes"}),e.jsxs("button",{onClick:()=>o(!n),className:"fixed bottom-5 right-5 z-50 inline-flex items-center gap-2 rounded-full border border-cyan-400/20 bg-cyan-600 px-4 py-3 text-sm font-semibold text-white shadow-xl shadow-cyan-500/30 transition-all hover:shadow-cyan-500/50 lg:hidden","aria-label":"Toggle release notes menu",children:[n?e.jsx(D,{className:"w-5 h-5"}):e.jsx(C,{className:"w-5 h-5"}),e.jsx("span",{children:n?"Close":"Versions"})]}),e.jsxs("div",{className:"max-w-[90rem] mx-auto flex",children:[e.jsxs("aside",{className:`
161                    fixed lg:sticky top-20 z-40
162                    h-[calc(100vh-5rem)] w-72
163                    bg-slate-950/95 lg:bg-transparent
164                    backdrop-blur-xl lg:backdrop-blur-none
165                    border-r border-slate-800/50
166                    transition-transform duration-300
167                    ${n?"translate-x-0":"-translate-x-full lg:translate-x-0"}
168                    flex-shrink-0
169                    flex flex-col
170                `,children:[e.jsxs("div",{className:"p-6 flex-1 overflow-y-auto overscroll-contain scrollbar-thin scrollbar-thumb-slate-700 scrollbar-track-transparent",children:[e.jsxs("div",{className:"mb-6",children:[e.jsxs("h2",{className:"text-lg font-bold text-white flex items-center gap-2",children:[e.jsx(S,{className:"w-5 h-5 text-cyan-400"}),"Release Notes"]}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Blue Lantern Security"})]}),e.jsxs("div",{className:"relative mb-6",children:[e.jsx(V,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-slate-500"}),e.jsx("input",{type:"text",placeholder:"Search releases...",value:i,onChange:a=>c(a.target.value),className:"w-full pl-9 pr-3 py-2 bg-slate-800/50 border border-slate-700/50 rounded-lg text-sm text-white placeholder-slate-500 focus:outline-none focus:border-cyan-500/50 focus:ring-1 focus:ring-cyan-500/20 transition-all"})]}),e.jsx("nav",{className:"space-y-4",children:_.map(a=>e.jsxs("div",{children:[a.group&&e.jsxs("button",{onClick:()=>{E(a.group),y[a.group]&&a.items.length>0&&w(a.items[0].slug)},className:"flex items-center gap-1.5 w-full text-[10px] font-bold uppercase tracking-widest text-slate-500 mb-2 px-2 hover:text-slate-300 transition-colors",children:[y[a.group]?e.jsx(N,{className:"w-3 h-3"}):e.jsx(z,{className:"w-3 h-3"}),e.jsx(G,{className:"w-3 h-3"}),a.group]}),!y[a.group]&&e.jsx("div",{className:"space-y-0.5",children:a.items.map(d=>{const v=f===d.slug;return e.jsxs("button",{onClick:()=>w(d.slug),className:`w-full flex items-center gap-2.5 px-3 py-2 rounded-lg text-sm transition-all text-left ${a.group?"pl-7":""} ${v?"bg-cyan-500/10 text-cyan-400 border border-cyan-500/20":"text-slate-400 hover:text-white hover:bg-slate-800/50 border border-transparent"}`,children:[e.jsx(T,{className:"w-4 h-4 flex-shrink-0"}),e.jsx("span",{className:"truncate",children:d.title}),v&&e.jsx(N,{className:"w-3 h-3 ml-auto flex-shrink-0"})]},d.slug)})})]},a.group||"__root"))})]}),e.jsx("div",{className:"flex-shrink-0 p-6 pt-0",children:e.jsxs("div",{className:"pt-6 border-t border-slate-800/50 space-y-2",children:[e.jsxs(j,{to:"/documentation",className:"flex items-center gap-2 px-3 py-2 text-xs text-slate-500 hover:text-cyan-400 transition-colors rounded-lg hover:bg-slate-800/30",children:[e.jsx(A,{className:"w-3 h-3"}),"Go to Documentation"]}),e.jsxs("a",{href:"mailto:[email protected]?subject=Release%20Notes%20Feedback",className:"flex items-center gap-2 px-3 py-2 text-xs text-slate-500 hover:text-cyan-400 transition-colors rounded-lg hover:bg-slate-800/30",children:[e.jsx(A,{className:"w-3 h-3"}),"Send Feedback"]})]})})]}),n&&e.jsx("div",{className:"fixed inset-0 bg-black/50 z-30 lg:hidden",onClick:()=>o(!1)}),e.jsx("main",{ref:r,className:"flex-1 min-w-0 px-6 sm:px-10 lg:px-16 py-10 lg:py-12",children:e.jsxs("div",{className:"max-w-3xl",children:[e.jsx("div",{className:"mb-6 rounded-2xl border border-slate-800 bg-slate-900/70 p-4 lg:hidden",children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-[11px] font-semibold uppercase tracking-wider text-slate-500",children:"Current Release"}),e.jsx("p",{className:"mt-1 truncate text-sm font-medium text-white",children:g}),e.jsx("p",{className:"mt-1 text-sm text-slate-400",children:"Use Versions to switch between releases and search the changelog."})]}),e.jsxs("button",{onClick:()=>o(!0),className:"inline-flex shrink-0 items-center gap-2 rounded-xl border border-slate-700 bg-slate-950/60 px-3 py-2 text-sm font-medium text-slate-200 transition-colors hover:border-slate-600 hover:text-white",children:[e.jsx(C,{className:"h-4 w-4"}),"Versions"]})]})}),e.jsxs("div",{className:"mb-12",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 rounded-full bg-cyan-500/10 border border-cyan-500/20 text-cyan-400 text-xs font-medium mb-4",children:[e.jsx(S,{className:"w-3 h-3"}),"Release Notes"]}),e.jsx("p",{className:"text-3xl sm:text-4xl font-bold mb-3",children:e.jsx("span",{className:"text-white",children:"What's New"})}),e.jsx("p",{className:"text-slate-400 text-lg leading-relaxed",children:"Features, improvements, and fixes across every version of the Blue Lantern Security marketplace."})]}),p?e.jsx("article",{className:"doc-content",children:e.jsx(U,{remarkPlugins:[$,W],components:ne(p?.group),children:p.content})}):e.jsxs("div",{className:"text-center py-20 text-slate-500",children:[e.jsx(T,{className:"w-12 h-12 mx-auto mb-4 opacity-50"}),e.jsx("p",{className:"text-lg font-medium",children:"Release not found"}),e.jsx("p",{className:"text-sm mt-1",children:"The release notes you're looking for don't exist."})]}),e.jsxs("div",{className:"mt-16 mb-8 p-6 rounded-2xl bg-slate-900/50 border border-slate-700/30 text-center",children:[e.jsx("h3",{className:"text-lg font-semibold text-white mb-2",children:"Have feedback?"}),e.jsx("p",{className:"text-sm text-slate-400 mb-4",children:"Tell us what you'd like to see in an upcoming release and we'll take a look."}),e.jsxs("a",{href:"mailto:[email protected]",className:"inline-flex items-center gap-2 px-6 py-2.5 text-sm font-medium bg-cyan-600 rounded-xl hover:bg-cyan-500 transition-all shadow-lg shadow-cyan-500/20",children:[e.jsx(I,{className:"w-4 h-4"}),"Contact Us"]})]})]})})]})]})}export{le as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.