// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-3.0-or-later
// @source: https://gitlab.com/soapbox-pub/ditto/-/tree/f0a3877c
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{At as t,Ft as n,Jt as r,mt as i,qi as a,rn as o,sr as s,xt as c,yi as l}from"./lucide-icons-BdRF0moN.js";import{t as u}from"./jsx-runtime-By8HlURe.js";import{t as d}from"./useAppContext-Ughdk2-Z.js";import{t as f}from"./skeleton-CVls4GW9.js";import{i as p,n as m,t as h}from"./tooltip-Ba63GpbC.js";import{c as g}from"./LayoutContext-CjQBLGO-.js";import{T as _,w as v}from"./index-CYEZWNq6.js";import{t as y}from"./PageHeader-CMi4aeE4.js";var b=e(a(),1),x=u(),S=`https://gitlab.com/soapbox-pub/ditto`,C={Added:{icon:n,colorClass:`text-emerald-600 dark:text-emerald-400`},Changed:{icon:t,colorClass:`text-blue-600 dark:text-blue-400`},Deprecated:{icon:r,colorClass:`text-orange-600 dark:text-orange-400`},Removed:{icon:o,colorClass:`text-red-600 dark:text-red-400`},Fixed:{icon:l,colorClass:`text-amber-600 dark:text-amber-400`},Security:{icon:i,colorClass:`text-purple-600 dark:text-purple-400`}};function w(e){let t=new Date(e+`T00:00:00`);return isNaN(t.getTime())?e:t.toLocaleDateString(void 0,{year:`numeric`,month:`long`,day:`numeric`})}var T=`f0a3877c`,E=`2026-09-17T19:17:00.826Z`;function D(){let{config:e}=d(),[t,n]=(0,b.useState)(null),[r,i]=(0,b.useState)(!1);g({}),v({title:`Changelog | ${e.appName}`,description:`What's new in ${e.appName}`}),(0,b.useEffect)(()=>{fetch(`/CHANGELOG.md`).then(e=>{if(!e.ok)throw Error(e.statusText);return e.text()}).then(n).catch(()=>i(!0))},[]);let a=(0,b.useMemo)(()=>t?_(t):[],[t]),o=a[0]?.version;return(0,x.jsxs)(`main`,{className:`min-h-screen pb-16 sidebar:pb-0`,children:[(0,x.jsx)(y,{title:`Changelog`,icon:(0,x.jsx)(c,{className:`size-5`}),backTo:`/settings`}),(0,x.jsx)(`div`,{className:`px-4 pt-3 pb-8 space-y-4`,children:r?(0,x.jsx)(`p`,{className:`text-sm text-muted-foreground pt-4`,children:`Failed to load changelog.`}):t===null?(0,x.jsx)(M,{}):a.length===0?(0,x.jsx)(`p`,{className:`text-sm text-muted-foreground pt-4`,children:`No releases yet.`}):(0,x.jsxs)(x.Fragment,{children:[o&&(0,x.jsx)(j,{latestVersion:o}),(0,x.jsx)(O,{entry:a[0]}),a.length>1&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-3 pt-4 pb-1`,children:[(0,x.jsx)(`div`,{className:`h-px flex-1 bg-border`}),(0,x.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground uppercase tracking-wider`,children:`Past releases`}),(0,x.jsx)(`div`,{className:`h-px flex-1 bg-border`})]}),a.slice(1).map(e=>(0,x.jsx)(A,{entry:e},e.version))]})]})})]})}function O({entry:e}){let t=(0,b.useRef)(null),[n,r]=(0,b.useState)(!1),[i,a]=(0,b.useState)(!1),o=(0,b.useCallback)(()=>{let e=t.current;e&&r(e.scrollHeight>k)},[]);return(0,b.useEffect)(()=>(o(),window.addEventListener(`resize`,o),()=>window.removeEventListener(`resize`,o)),[o]),(0,x.jsxs)(`div`,{className:`pt-2 pb-1 px-4`,children:[(0,x.jsxs)(`a`,{href:`${S}/-/releases/v${e.version}`,target:`_blank`,rel:`noopener noreferrer`,className:`block text-center text-2xl font-bold tracking-tight hover:underline`,children:[`v`,e.version]}),(0,x.jsx)(`a`,{href:`${S}/-/releases/v${e.version}`,target:`_blank`,rel:`noopener noreferrer`,className:`flex items-center justify-center gap-1.5 text-xs text-muted-foreground hover:text-foreground transition-colors mt-1`,children:w(e.date)}),(0,x.jsxs)(`div`,{className:`relative mt-4`,children:[(0,x.jsxs)(`ul`,{ref:t,style:!i&&n?{maxHeight:k,overflow:`hidden`}:void 0,className:`space-y-2.5`,children:[e.summary&&(0,x.jsx)(`li`,{className:`text-base text-foreground/90 leading-relaxed`,children:e.summary}),e.sections.flatMap(e=>{let t=C[e.category]??C.Changed,n=t.icon;return e.items.map((r,i)=>(0,x.jsxs)(`li`,{className:`flex gap-2 text-base text-foreground/90`,children:[(0,x.jsxs)(h,{children:[(0,x.jsx)(p,{asChild:!0,children:(0,x.jsx)(n,{className:`size-4 shrink-0 mt-1 cursor-default ${t.colorClass}`})}),(0,x.jsx)(m,{side:`left`,children:e.category})]}),(0,x.jsx)(`span`,{children:r})]},`${e.category}-${i}`))})]}),!i&&n&&(0,x.jsx)(`div`,{className:`absolute bottom-0 left-0 right-0 h-16 bg-gradient-to-t from-background to-transparent pointer-events-none`})]}),n&&(0,x.jsx)(`button`,{className:`w-full text-sm text-primary hover:underline mt-1`,onClick:()=>a(e=>!e),children:i?`Show less`:`Read more`})]})}var k=240;function A({entry:e}){let t=(0,b.useRef)(null),[n,r]=(0,b.useState)(!1),[i,a]=(0,b.useState)(!1),o=(0,b.useCallback)(()=>{let e=t.current;e&&r(e.scrollHeight>k)},[]);return(0,b.useEffect)(()=>(o(),window.addEventListener(`resize`,o),()=>window.removeEventListener(`resize`,o)),[o]),(0,x.jsxs)(`div`,{className:`rounded-2xl border border-border overflow-hidden`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-3 px-4 py-3`,children:[(0,x.jsxs)(`a`,{href:`${S}/-/releases/v${e.version}`,target:`_blank`,rel:`noopener noreferrer`,className:`font-semibold text-sm hover:underline`,children:[`v`,e.version]}),(0,x.jsx)(`a`,{href:`${S}/-/releases/v${e.version}`,target:`_blank`,rel:`noopener noreferrer`,className:`flex items-center gap-1.5 text-xs text-muted-foreground hover:text-foreground transition-colors ml-auto`,children:(0,x.jsx)(`span`,{children:w(e.date)})})]}),(0,x.jsxs)(`div`,{className:`relative`,children:[(0,x.jsxs)(`ul`,{ref:t,style:!i&&n?{maxHeight:k,overflow:`hidden`}:void 0,className:`px-4 py-3 space-y-2.5`,children:[e.summary&&(0,x.jsx)(`li`,{className:`text-sm text-foreground/90 leading-relaxed`,children:e.summary}),e.sections.flatMap(e=>{let t=C[e.category]??C.Changed,n=t.icon;return e.items.map((r,i)=>(0,x.jsxs)(`li`,{className:`flex gap-2 text-sm text-foreground/90`,children:[(0,x.jsxs)(h,{children:[(0,x.jsx)(p,{asChild:!0,children:(0,x.jsx)(n,{className:`size-3.5 shrink-0 mt-[3px] cursor-default ${t.colorClass}`})}),(0,x.jsx)(m,{side:`left`,children:e.category})]}),(0,x.jsx)(`span`,{children:r})]},`${e.category}-${i}`))})]}),!i&&n&&(0,x.jsx)(`div`,{className:`absolute bottom-0 left-0 right-0 h-16 bg-gradient-to-t from-background to-transparent pointer-events-none`})]}),n&&(0,x.jsx)(`button`,{className:`w-full text-sm text-primary hover:underline py-2`,onClick:()=>a(e=>!e),children:i?`Show less`:`Read more`})]})}function j({latestVersion:e}){return(0,x.jsxs)(`div`,{className:`rounded-2xl border border-dashed border-amber-500/50 bg-amber-50/50 dark:bg-amber-950/20 px-4 py-3 space-y-1.5`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,x.jsx)(s,{className:`size-4 text-amber-600 dark:text-amber-400 shrink-0`}),(0,x.jsx)(`span`,{className:`text-sm font-medium text-amber-800 dark:text-amber-300`,children:`Pre-release build`}),(0,x.jsx)(`a`,{href:`${S}/-/commit/${T}`,target:`_blank`,rel:`noopener noreferrer`,className:`ml-auto text-[11px] text-amber-600/70 dark:text-amber-400/70 hover:text-amber-800 dark:hover:text-amber-300 transition-colors`,children:w(E.split(`T`)[0])})]}),(0,x.jsxs)(`p`,{className:`text-xs text-amber-700/80 dark:text-amber-400/70`,children:[`This build contains changes not yet included in a release.`,` `,(0,x.jsx)(`a`,{href:`${S}/-/compare/v${e}...${T}`,target:`_blank`,rel:`noopener noreferrer`,className:`underline underline-offset-2 hover:text-amber-900 dark:hover:text-amber-200 transition-colors`,children:`View unreleased changes`})]})]})}function M(){return(0,x.jsx)(`div`,{className:`space-y-4 pt-1`,children:[1,2].map(e=>(0,x.jsxs)(`div`,{className:`rounded-2xl border border-border overflow-hidden`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-3 px-4 py-3`,children:[(0,x.jsx)(f,{className:`size-4 rounded`}),(0,x.jsx)(f,{className:`h-4 w-16`}),(0,x.jsxs)(`div`,{className:`ml-auto flex items-center gap-1.5`,children:[(0,x.jsx)(f,{className:`size-3.5 rounded`}),(0,x.jsx)(f,{className:`h-3 w-24`})]})]}),(0,x.jsxs)(`div`,{className:`px-4 py-3 space-y-2`,children:[(0,x.jsx)(f,{className:`h-4 w-16 rounded-full`}),(0,x.jsx)(f,{className:`h-4 w-full ml-3`}),(0,x.jsx)(f,{className:`h-4 w-4/5 ml-3`}),(0,x.jsx)(f,{className:`h-4 w-3/5 ml-3`})]})]},e))})}export{D as ChangelogPage};
// @license-end
