Fix grow to fit, and stage output auto-size#2712
Conversation
… itemFontSize > 100
Fixed multiple issues causing text to display at 800px before autosizing: 1. STAGE now ignores item.autoFontSize (computed for OUTPUT dimensions) and always starts at fontSize=0 to compute its own size 2. Added stageAutoSize to hideUntilAutosized conditions so STAGE properly hides content during autosize calculation 3. Strip font-size from Stagebox container style for autosize items to prevent CSS inheritance of 800px MAX_FONT_SIZE 4. Disabled Stagebox's updateAutoSize for slide_text items since Textbox handles its own autosize; fixed retry counter to reset on slide changes Debug logging has been commented out but preserved for future troubleshooting if needed.
- Fixed thumbnail preview giant text by preventing autosize recalculation for preview context - Fixed OUTPUT giant text by: 1. Starting at fontSize=0 when cache is invalid (hideUntilAutosized=true) 2. Adding OUTPUT container dimensions to cache signature for proper invalidation - Thumbnails now only use cached OUTPUT fontSize values - OUTPUT recalculates only when dimensions change or cache is invalid - Maintains existing STAGE autosize behavior (independent calculation)
Recording.2026-01-22.121903.1.mp4Hello! I watched the video you sent from #2709 and you fixed it already. I checked it from Freeshow today and still doesn't change. Do we need to update our software or do we need to do something to make the "Grow to Fix" bug fix work? thanks! |
|
@issachaaar you have to wait for the next version to be released, and then update to it. |
|
Thank you so much for the updates! Big help!!!! |
|
@yurividal If you convert a scripture to a show, the preview is messed up, but the actual output is fine: |
oh man, here we go again. lol. Ok, i think i know what i missed (again)... |
|
So many test cases... i didn't catch this because my scripture template doesn't use grow to fit. |
|
@vassbo the problem is that the thumbnails currently don't have any auto-size calculations of their own. they just rely on the output auto-size, and scale it down. so, with my recent changes, since the output didn't have its sizes calculated by the time we show the thumbnails, they were defaulting to 800px. I'll submit a patch soon, and you can let me know your thoughts... |
|
Sounds good to me. :) |
|
Here's another one for you, sorry. Using "Grow to fit" on any item with the "List" turned on makes the text super small. |
* Catch bad file names in sync * Updated languages * Fixed "Add folder" missing #2701 * Fixed Scripture freeze #2707 * Fixed Scripture freeze #2707 * Notes links are clickable #2708 * Updates * Fixed stage display next scripture text not working #2636 * Fixed indicator * Fix grow to fit, and stage output auto-size (#2712) * Fix grow to fit not working - maxFontSize should only be limited when itemFontSize > 100 * Fix stage autosize giant text bug Fixed multiple issues causing text to display at 800px before autosizing: 1. STAGE now ignores item.autoFontSize (computed for OUTPUT dimensions) and always starts at fontSize=0 to compute its own size 2. Added stageAutoSize to hideUntilAutosized conditions so STAGE properly hides content during autosize calculation 3. Strip font-size from Stagebox container style for autosize items to prevent CSS inheritance of 800px MAX_FONT_SIZE 4. Disabled Stagebox's updateAutoSize for slide_text items since Textbox handles its own autosize; fixed retry counter to reset on slide changes Debug logging has been commented out but preserved for future troubleshooting if needed. * remove remaining debug lines * Fix thumbnail and OUTPUT giant text on first render - Fixed thumbnail preview giant text by preventing autosize recalculation for preview context - Fixed OUTPUT giant text by: 1. Starting at fontSize=0 when cache is invalid (hideUntilAutosized=true) 2. Adding OUTPUT container dimensions to cache signature for proper invalidation - Thumbnails now only use cached OUTPUT fontSize values - OUTPUT recalculates only when dimensions change or cache is invalid - Maintains existing STAGE autosize behavior (independent calculation) * Fixed freeze * NDI 6.3.0 * Fixed scripture loading * Profile selector updates * Template items auto removed if added from a template #2700 * Copy/paste indicators * Grouped Context UI (#2715) * Grouped Context Menu UI * Add to project on right click * Fix autosize: enable independent thumbnail calculations with separate previewAutoFontSize cache (#2714) - Remove preview blocking - all contexts (OUTPUT, STAGE, PREVIEW) now calculate independently - Add previewAutoFontSize field to store thumbnail-specific autosize values separate from OUTPUT - Thumbnails initialize from their own cache, fallback to OUTPUT cache, then 100px default - Fix OUTPUT autosize storage blocking - only block temp drawer previews (showId=temp), not OUTPUT Fixes: - Stage giant text on first render - OUTPUT giant text with invalid cache - Scripture show thumbnail giant text - Thumbnails now calculate using their actual container dimensions for accurate sizing * Updated menus * Fix: Merge styles properly for split verse text with template overrides (#2718) - Replace simple string concatenation with proper CSS property merging - Parse both base segment style and template style into objects - Merge properties with template overriding base - Remove font-size from merged result (handled separately by fontSizePart) - Add !important to color, font-style, font-weight to ensure overrides apply - Fixes issue where split verses lost line-height and other base properties * Updated context menus * Better delete group context menu * Template enhancements #2717 - Tweaks * Group template link in editor * Fixed audio outline - Context tweaks * Less frequent EQ updates * Fix list autosize shrink-to-fit generating tiny text (#2721) - Add isList parameter to autosize function Options type - Remove font-size from .break divs in virtual measurement clone for lists - Prevents double font-size application that caused incorrect measurements - Fixes shrink-to-fit calculating extremely small font sizes for list items - Fixes grow-to-fit not properly filling space for list items * Added &forceLogin=1 to B1 login * Updates * Fix/autosize font loading race condition (#2736) * Fix autosize race condition with font loading Root cause: Browser's 'slow network' intervention causes text to render with fallback fonts (Arial) before custom fonts (CMGSans) finish loading. Autosize measured dimensions with wrong font, resulting in incorrect font sizes on first load. Solution: - Added await document.fonts.ready before measuring dimensions - Added dimension stability check with adaptive timing (100-150ms initial wait, then 20-50ms intervals) - Different timing for output window vs preview (output needs 150ms, preview 100ms) - Early exit when dimensions stabilize (no unnecessary waiting) This ensures all rendering contexts (preview, output, stage) measure with the actual custom fonts loaded, not fallback fonts. Fixes first-load autosize issues where text displays at wrong size. * Fix shrinkToFit regression - respect user's chosen font size - Fix font-size property key from ' font-size' to 'font-size' (removed leading space) - Pass isList parameter to autosize function when item.list.enabled is true - Ensures shrinkToFit uses user's template font size as maximum instead of always defaulting to 100px - Fixes list items reverting to tiny text (10px) caused by double font-size application - Combines fix for both regular text and list item autosize behavior * Restore missing list adjustment and cache logic - Re-add 0.9x font size adjustment for list items - Restore cache writing for slide_tracker and regular items - Restore item.autoFontSize and item.previewAutoFontSize assignment * fix wrong Item ordering on unchanged items (#2749) * Fix z-index layering bug for unchanged items in slide transitions - Items with unchanged content now maintain correct z-order when transitioning between slides - Replace persistent/transitioning split with boolean array tracking - Apply explicit z-index based on item index to preserve theme-defined layering - Unchanged items still render outside {#key} block to prevent flashing * Fix z-index layering for unchanged items while preserving animations - Render all items in single loop in original order to maintain z-index - Persistent items (unchanged) render without {#key} wrapper to prevent flashing - Transitioning items render with {#key} wrapper for proper animations - Fixes issue where unchanged items would appear behind changed items * Fixed extra spacing * Timeline & Timecode (#2753) * Timeline * Timeline updates * Timeline updates * Updates - Slide recordings converted * Add actions * Audio waveform * Timeline updates * Timeline updates * Removed old Recording - Synced with outputted slides * Finalizing timeline * Project timeline * Fixes * LTC Timecode * MIDI Timecode * Fixes * Temp removed forceLogin * Fixed connection issue #2741 * Add audio files to sync folder #2738 - Find missing audio files * Locate media checks for matching parent folder first #2730 * Version update --------- Co-authored-by: Yuri Vidal <yurividal@users.noreply.github.com> Co-authored-by: Jeremy Zongker <jeremy@zongker.net>
|
Hello! I'm just wondering if you have a new updated version of Freeshow? Just out of curiosity, no pressures! Thank you! |
Did you try the 1.5.7 beta 1? |
|
Yes! Big help btw. Just excited for the full release after the BETA version. |

This fixes the regression introduced on 1.5.6 (#2709) that broke the grow to fit if font-size was bigger than 100.
Root Cause:
In Textbox.svelte when textFit === "growToFit" was set for text items, the code was always setting maxFontSize = itemFontSize (which defaults to 100px). This caused the binary search algorithm to only search between 10px-100px, preventing text from growing larger.
The second commit has further auto-size fixes, that affected stage outputs:
Multiple issues causing text to display at 800px before autosizing, after our previous fix for "grow to fit".
STAGE now ignores item.autoFontSize (computed for OUTPUT dimensions)
and always starts at fontSize=0 to compute its own size
Added stageAutoSize to hideUntilAutosized conditions so STAGE
properly hides content during autosize calculation
Strip font-size from Stagebox container style for autosize items
to prevent CSS inheritance of 800px MAX_FONT_SIZE
Disabled Stagebox's updateAutoSize for slide_text items since
Textbox handles its own autosize; fixed retry counter to reset
on slide changes