import { VersionInfo } from '@start9labs/start-sdk' export const v_0_2_61 = VersionInfo.of({ version: '0.2.61:0', releaseNotes: { en_US: 'Two fixes. (1) Stitcher now clamps each section\'s endIndex to its source window\'s actual range. Symptom that prompted this: an analyze window of 18 minutes produced a section spanning 52 minutes in the final UI (e.g., "Developing Sovereign Network Infrastructure" 36:00 — 1:28:00). Root cause: the LLM occasionally emits a section with an inflated endIndex (e.g., 9999) that goes far past the window\'s transcript range. The stitcher computed globalEnd = window.startIdx + section.endIndex without bounds-checking, so the inflated value propagated all the way to the final stitched output. The Recap-app side\'s `Math.min(relayEntries.length - 1, s.endIndex)` clamp in index.js prevented total breakage but allowed the bogus extended range. Now: stitchAnalysisResults() applies Math.min(rawGlobalEnd, window.endIdx) when accepting each section, so a window\'s sections can never extend beyond the entries that window was given. Same clamp also applied to the per-window streaming callback so SSE clients rendering partials don\'t briefly show inflated bounds before the final stitch re-trims. (2) Discovery diagnostic strip now stashes the FULL raw /admin/jobs response sample (first 5 entries + envelope top-level keys) and exposes a 📋 Copy JSON button. Operators chasing "Discovery ON, found: 0 running but I just submitted a job" can copy the actual response payload and paste it into a bug report — definitively answers whether the relay\'s jobs map is empty, returning entries with field names we don\'t expect, etc.', }, migrations: { up: async ({ effects }) => {}, down: async ({ effects }) => {}, }, })