> ## Documentation Index
> Fetch the complete documentation index at: https://docs.modulex.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> Release notes for ModuleX and these docs, newest first. Each entry summarizes what changed, with breaking changes called out clearly. No entries yet — this page is populated at launch.

export const MediaEmbed = ({id, type = 'screenshot', caption = '', ext, ratio = '16 / 9'}) => {
  const isVideo = type === 'video' || type === 'app_video';
  const resolvedExt = ext || (isVideo ? 'mp4' : type === 'screenshot' ? 'webp' : 'svg');
  const src = 'https://media.modulex.dev/' + id + '.' + resolvedExt;
  const [status, setStatus] = useState('loading');
  const [isDev, setIsDev] = useState(false);
  const [inView, setInView] = useState(false);
  const boxRef = useRef(null);
  useEffect(() => {
    if (typeof window === 'undefined') return;
    const h = window.location.hostname;
    setIsDev(h === 'localhost' || h === '127.0.0.1' || h.endsWith('.mintlify.app'));
  }, []);
  useEffect(() => {
    if (inView) return;
    if (typeof IntersectionObserver === 'undefined') {
      setInView(true);
      return;
    }
    const el = boxRef.current;
    if (!el) return;
    const io = new IntersectionObserver(entries => {
      if (entries.some(e => e.isIntersecting)) {
        setInView(true);
        io.disconnect();
      }
    }, {
      rootMargin: '300px'
    });
    io.observe(el);
    return () => io.disconnect();
  }, [inView]);
  if (status === 'missing') {
    if (!isDev) return null;
    return <div style={{
      display: 'flex',
      flexDirection: 'column',
      justifyContent: 'center',
      gap: '0.4rem',
      padding: '1rem 1.25rem',
      margin: '1.25rem 0',
      width: '100%',
      aspectRatio: ratio,
      boxSizing: 'border-box',
      border: '1px dashed rgba(128,128,128,0.45)',
      borderRadius: '0.75rem',
      background: 'rgba(128,128,128,0.06)',
      color: 'currentColor',
      fontSize: '0.85rem',
      lineHeight: 1.45
    }}>
        <div style={{
      display: 'flex',
      alignItems: 'center',
      gap: '0.5rem',
      opacity: 0.75
    }}>
          <span aria-hidden="true">🎬</span>
          <code style={{
      fontSize: '0.75rem'
    }}>{id}</code>
          <span style={{
      fontSize: '0.65rem',
      textTransform: 'uppercase',
      letterSpacing: '0.04em',
      padding: '0.1rem 0.4rem',
      borderRadius: '0.4rem',
      background: 'rgba(128,128,128,0.18)'
    }}>
            {type}
          </span>
        </div>
        <div style={{
      opacity: 0.9
    }}>{caption || 'Media not uploaded yet.'}</div>
        <div style={{
      fontSize: '0.7rem',
      opacity: 0.5
    }}>
          Upload to R2 as <code>{id}.{resolvedExt}</code> — preview only, hidden in production.
        </div>
      </div>;
  }
  const mediaStyle = {
    display: status === 'loaded' ? 'block' : 'none',
    width: '100%',
    height: 'auto',
    borderRadius: '0.75rem'
  };
  const media = isVideo ? <video src={inView ? src : undefined} autoPlay loop muted playsInline preload="metadata" onLoadedData={() => setStatus('loaded')} onError={() => setStatus('missing')} style={mediaStyle} /> : <img src={inView ? src : undefined} alt={caption} onLoad={() => setStatus('loaded')} onError={() => setStatus('missing')} style={mediaStyle} />;
  return <figure style={{
    margin: '1.25rem 0'
  }}>
      <div ref={boxRef} style={status === 'loaded' ? {
    width: '100%'
  } : {
    width: '100%',
    aspectRatio: ratio,
    borderRadius: '0.75rem',
    background: 'rgba(128,128,128,0.06)'
  }}>
        {media}
      </div>
      {status === 'loaded' && caption ? <figcaption style={{
    marginTop: '0.5rem',
    textAlign: 'center',
    fontSize: '0.85rem',
    opacity: 0.7
  }}>
          {caption}
        </figcaption> : null}
    </figure>;
};

The changelog is where you find out what changed in ModuleX and when. Each entry is a short, dated summary of new features, improvements, and fixes — newest first — so you can scan recent updates in a minute and know whether anything affects how you work.

When a change could break an existing setup, you will see a clear breaking-change callout on that entry, with what changed and what to do about it.

<Note>
  **No entries yet — this page will be populated at launch.** ModuleX is in its documentation rebuild, and the public release history starts when the product goes live. There are no released changes to report here yet. Once releases begin, the newest entry will appear at the top of this page.
</Note>

## How to read this page

Entries are grouped by month and listed newest first. Every entry follows the same shape, so you always know where to look.

<CardGroup cols={2}>
  <Card title="Date and summary" icon="calendar">
    Each entry is dated and opens with a one-line summary of what shipped, so you can scan the list without reading every detail.
  </Card>

  <Card title="Change types" icon="tags">
    Changes are tagged so you can tell a new feature from a fix at a glance. The tags are listed below.
  </Card>

  <Card title="Breaking changes" icon="triangle-alert">
    When something changes in a way that can break an existing setup, it gets its own callout with what changed and the action to take.
  </Card>

  <Card title="Links to the docs" icon="book-open">
    Entries link to the relevant page so you can read the full details — for example, a new node type links to its reference page.
  </Card>
</CardGroup>

### Change types

Each entry is labeled with one or more of these tags.

| Tag          | What it means                                                         |
| ------------ | --------------------------------------------------------------------- |
| `Added`      | A new feature, integration, node, or capability.                      |
| `Changed`    | A change to existing behavior that is not breaking.                   |
| `Improved`   | A performance, reliability, or usability improvement.                 |
| `Fixed`      | A bug fix.                                                            |
| `Deprecated` | Something still works but is on its way out — start moving off it.    |
| `Removed`    | Something was taken out. Often paired with a breaking-change callout. |
| `Security`   | A security-related change or fix.                                     |

<Note>
  A **breaking change** is any change that can stop an existing workflow, integration, API call, or SDK version from working the way it did before. Breaking changes always get a dedicated callout — never just a tag — and explain the action you need to take.
</Note>

## Where entries will appear

Once releases begin, each release becomes a dated section at the top of this page. The structure below shows the shape every future entry will follow. It contains no real releases — it is a template, not a record of changes.

<Accordion title="Example of a future entry (template — not a real release)">
  This is an illustration of the format, using placeholder text. It does not describe anything that has shipped.

  **Month YYYY**

  `Added` A short, concrete description of a new capability, with a link to its page.

  `Improved` A short description of something that got faster or more reliable.

  `Fixed` A short description of a resolved issue.

  <Warning>
    **Breaking change — placeholder.** A one-line description of what changed in a way that can break an existing setup, followed by the exact action to take. Real breaking changes will name the affected surface and link to a migration note.
  </Warning>
</Accordion>

<MediaEmbed id="MX-MEDIA-4420" type="image" caption={"A simple timeline diagram showing how a changelog entry is laid out: date, summary, change-type tags, and a breaking-change callout."} />

## Stay up to date

<CardGroup cols={2}>
  <Card title="Read the blog" icon="newspaper" href="/resources/blog">
    The blog covers the why behind larger releases — deep dives, guides, and announcements. The changelog tells you what changed; the blog tells you the story.
  </Card>

  <Card title="Check system status" icon="activity" href="/reference/status">
    For live availability and incident history rather than feature changes, see system status and health.
  </Card>

  <Card title="Review known limitations" icon="circle-alert" href="/reference/known-limitations">
    Documented gaps and paths you should not rely on yet. Worth a look before you build on a newer feature.
  </Card>

  <Card title="Browse the glossary" icon="book-a" href="/reference/glossary">
    If an entry uses a term you do not recognize, the glossary is the canonical reference for ModuleX terminology.
  </Card>
</CardGroup>

<Note>
  Looking for changes to the API or SDKs specifically? Breaking changes to authenticated endpoints and the official SDKs will be called out here with a breaking-change callout and a link to the affected reference. Start from the [API overview](/api-reference/overview) and the [SDKs overview](/sdks/overview) for current behavior.
</Note>
