Skip to content

Commit f191003

Browse files
vassboyurividaljzongker
authored
1.5.7-beta.1 (#2755)
* 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>
1 parent 3803e71 commit f191003

File tree

101 files changed

+5090
-1387
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

101 files changed

+5090
-1387
lines changed

package-lock.json

Lines changed: 11 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "freeshow",
3-
"version": "1.5.6",
3+
"version": "1.5.7-beta.1",
44
"private": true,
55
"main": "build/electron/index.js",
66
"description": "Show song lyrics and more for free!",
@@ -122,9 +122,10 @@
122122
"express": "^4.21.2",
123123
"follow-redirects": "^1.15.11",
124124
"genius-lyrics": "^4.4.7",
125-
"grandiose": "github:ChurchApps/grandiose#611789c",
125+
"grandiose": "github:ChurchApps/grandiose#b1649cd",
126126
"json-bible": "^1.1.3",
127127
"jzz": "^1.9.5",
128+
"libltc-wrapper": "github:bitfocus/libltc-wrapper#9637e39",
128129
"libreoffice-convert": "^1.6.1",
129130
"mdb-reader": "^1.2.1",
130131
"mp4box": "^0.6.5",

public/global.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ body {
9999

100100
::-webkit-scrollbar-thumb {
101101
background: rgb(255 255 255 / 0.3);
102+
border-radius: 6px;
102103
}
103104

104105
::-webkit-scrollbar-thumb:hover {

public/lang/en.json

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -505,6 +505,8 @@
505505
"manage_tags": "Manage tags",
506506
"sync_categories": "Sync categories",
507507
"effect_items": "Effect items",
508+
"timeline": "Timeline",
509+
"timecode": "Timecode",
508510
"initialize": "Welcome to FreeShow",
509511
"unsaved": "Are you sure you want to quit?",
510512
"cancel": "Cancel",
@@ -612,6 +614,7 @@
612614
"recolor": "Change color",
613615
"remove": "Remove",
614616
"remove_group": "Remove group from layout",
617+
"remove_group_short": "Remove group",
615618
"choose_group": "Choose group",
616619
"goto_group": "Go to group",
617620
"active_outputs": "Active outputs",
@@ -625,7 +628,9 @@
625628
"import_calendar": "Import calendar",
626629
"imported": "Imported!",
627630
"duplicate": "Duplicate",
631+
"duplicated": "Duplicated",
628632
"delete": "Delete",
633+
"delete_slide_short": "Delete slide",
629634
"delete_slide": "Delete slide from show",
630635
"delete_group": "Delete group",
631636
"delete_all": "Delete all",
@@ -836,15 +841,9 @@
836841
"seconds": "seconds",
837842
"empty": "empty"
838843
},
839-
"recording": {
840-
"remove": "Remove recording",
841-
"tip": "Record and replay the timings of slides. Sync with an audio track on the first slide.",
842-
"layout_changed": "Layout has changed since last recording!",
843-
"audio_synced": "Synced with audio!",
844-
"start": "Start slide recording",
845-
"action_play": "Play slide recording",
846-
"use_duration": "Use duration time",
847-
"use_duration_tip": "Use duration time instead of timestamp time"
844+
"timeline": {
845+
"toggle_timeline": "Toggle timeline",
846+
"start_time": "Start time"
848847
},
849848
"animate": {
850849
"change": "Change",

public/lang/es.json

Lines changed: 32 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,18 @@
7575
"slide": "Editar diapositiva actual.",
7676
"filters": "Cambiar la apariencia del elemento seleccionado.",
7777
"options": "Más opciones.",
78-
"scripture": "Mantener presionada la tecla Ctrl/Cmd o Shift para seleccionar varios versículos."
78+
"scripture": "Mantener presionada la tecla Ctrl/Cmd o Shift para seleccionar varios versículos.",
79+
"context_cut_in_half": "Dividir el primer cuadro de texto en dos diapositivas.",
80+
"context_merge": "Fusionar las diapositivas seleccionadas en una sola.",
81+
"context_capitalize": "Convertir la primera letra de cada línea en mayúscula.",
82+
"context_trim": "Eliminar espacios en blanco y signos de puntuación del principio y final de cada línea, y eliminar los espacios dobles."
7983
},
8084
"tips": {
8185
"trigger": "Los disparadores se utilizan comúnmente para enviar una solicitud HTTP a fin de cambiar el preajuste de las cámaras.",
82-
"global_options": "Estas opciones son aplicadas globalmente."
86+
"global_options": "Estas opciones son aplicadas globalmente.",
87+
"consider_templates": "Se ha realizado los mismos cambios en varias diapositivas. Considerar la posibilidad de usar una plantilla.",
88+
"style_template_active": "Se ha configurado un estilo en la salida para anular la plantilla de visualización.",
89+
"group_numbers": "Los números se asignan automáticamente, por lo que no es necesario añadir números a los nombres de los grupos."
8390
},
8491
"setup": {
8592
"good_luck": "Esperamos que encuentres útil este software. ¡Buena suerte con las presentaciones! :)",
@@ -205,14 +212,19 @@
205212
"blur_fill": "Relleno Difuminado",
206213
"cover": "Cubrir",
207214
"online": "En línea",
215+
"downloading": "Descargando",
208216
"recommended": "Recomendado",
217+
"media_sync_folder": "Carpeta de sincronización de multimedia",
218+
"media_sync_folder_tip": "Copiar continuamente todos los archivos multimedia utilizados en una carpeta compartida. Cualquier proveedor de sincronización personalizado puede configurarse para que acceda a esa carpeta.",
209219
"bundle_media_files": "Agrupar todos los archivos multimedia",
210-
"bundle_media_files_tip": "Copiar los archivos multimedia de todas las presentaciones en una carpeta"
220+
"bundle_media_files_tip": "Copiar los archivos multimedia de todas las presentaciones y proyectos en una sola carpeta."
211221
},
212222
"audio": {
213223
"settings": "Configuración de Audio",
214224
"playlists": "Listas de Reproducción",
215225
"playlist_settings": "Ajuste de Lista de Reproducción",
226+
"open_audio_folder": "Abrir la carpeta de audio relacionada",
227+
"create_audio_folder": "Crear carpeta de audio",
216228
"custom_output": "Salida de audio personalizada",
217229
"mute_when_video_plays": "Silenciar cuando un video se reproduce",
218230
"allow_gaining": "Permitir ganancia",
@@ -316,7 +328,6 @@
316328
"autofill": "Autocompletar",
317329
"message": "Mensaje",
318330
"message_tip": "Mostrar algo en todas las diapositivas",
319-
"auto_media": "Obtener metadatos del contenido multimedia",
320331
"override_output": "Anular el estilo de salida",
321332
"display_metadata": "Visualizar metadatos",
322333
"meta_template": "Metadata template",
@@ -479,6 +490,7 @@
479490
"slide_midi": "Entrada MIDI de diapositiva",
480491
"user_data_overwrite": "Se encontraron datos existentes",
481492
"connect": "Conectar",
493+
"cloud_sync": "Sincronización de la nube",
482494
"cloud_update": "Sincronizando con la nube",
483495
"cloud_method": "Ubicación de Datos",
484496
"shortcuts": "Atajos",
@@ -642,6 +654,7 @@
642654
"reset": "Reiniciar",
643655
"create_template": "Crear Plantilla",
644656
"project_template_tip": "Crear un nuevo proyecto a partir esta plantilla",
657+
"import_project_file": "Se ha encontrado un nuevo archivo de proyecto. ¿Desea importarlo?",
645658
"pdf_single_page": "Renderizar como un solo documento",
646659
"convert_to_images": "Convertir a imágenes",
647660
"converting": "Convirtiendo...",
@@ -790,6 +803,7 @@
790803
"override_category_action": "Anular acción de categoría",
791804
"activate_on_startup": "Activar al iniciar la aplicación",
792805
"activate_save": "Activar al guardar",
806+
"activate_output_changed": "Activar cuando cambie la salida.",
793807
"activate_slide_clicked": "Activar al hacer clic en la diapositiva",
794808
"activate_group_start": "Activar al iniciar el grupo",
795809
"activate_video_starting": "Activar al iniciar el video",
@@ -842,22 +856,20 @@
842856
"seconds": "segundos"
843857
},
844858
"cloud": {
845-
"info": "Sincronizar archivos con Google Drive para realizar copias de seguridad o si se trabaja en varias computadoras.",
846-
"tip_api": "Se debe proporcionar una clave personal de API de Google gratuita para que la aplicación pueda cargar archivos automáticamente a su Google Drive.",
847-
"tip_how": "¿No sabe cómo conseguir una?",
848-
"tip_guide": "Hacer clic aquí para ver una guía.",
859+
"info": "Sincronizar archivos con la nube para realizar copias de seguridad o para acceder a ellos desde varios ordenadores.",
849860
"enable": "Sincronización automática al iniciar y cerrar",
850-
"disable_upload": "Deshabilitar la subida de datos",
851-
"media_id": "ID de ruta de multimedia",
852-
"google_drive_api": "Clave de cuenta del servicio de API de Google",
853-
"select_key": "Importar archivo de claves",
854-
"update_key": "Actualizar archivo de claves",
855-
"enable_custom_folder_id": "Usar ID de carpeta personalizada",
856-
"main_folder": "Establecer carpeta principal manualmente",
861+
"read_only": "Sólo Lectura",
857862
"media_folder": "Carpeta de multimedia en la nube",
858863
"reconnect": "Reconectar",
859864
"sync": "Sincronizar ahora",
860-
"choose_method_tip": "Hay datos existentes en la nube. Eligir cargarlos desde la ubicación local o descargarlos desde la nube. La otra ubicación se sobrescribirá.",
865+
"change_team": "Cambiar de equipo",
866+
"choose_method_tip": "Ya existen datos en la nube. ¿Qué desea hacer?",
867+
"merge_tip": "Conservar los últimos cambios tanto de los datos locales como de los datos en la nube.",
868+
"readonly_tip": "Combinar los datos de la nube con los datos locales, pero nunca cargar los cambios locales.",
869+
"upload": "Subir",
870+
"upload_tip": "Inicialmente, sustituir los datos de la nube por datos locales y, posteriormente, realizar la fusión de forma normal.",
871+
"replace": "Descargar",
872+
"replace_tip": "Inicialmente, reemplazar los datos locales con los datos de la nube y, posteriormente, realizar la fusión de forma normal.",
861873
"local": "Local",
862874
"syncing": "Sincronizando con la nube",
863875
"sync_complete": "Sincronización completada"
@@ -1124,10 +1136,10 @@
11241136
"seconds": "Segundos",
11251137
"from": "Desde",
11261138
"to": "Hacia",
1139+
"warn_early": "Advertencia temprana",
1140+
"warn_offset": "Segundos antes del final",
11271141
"overflow": "Desbordamiento cuando llega al final",
1128-
"overflow_color": "Color de desbordamiento",
1129-
"overflow_blink": "Parpadear cuando se desborda",
1130-
"overflow_blink_offset": "Empieza a parpadear temprano",
1142+
"flash": "Destello",
11311143
"preview": "Vista previa",
11321144
"clock": "Reloj",
11331145
"event": "Nuevo evento",
@@ -1277,6 +1289,7 @@
12771289
"auto_group_numbers": "Asignar automáticamente números de grupo",
12781290
"shortcuts_on_slides": "Mostrar atajos en las diapositivas",
12791291
"transparent_slides": "Vista previa de diapositiva transparente",
1292+
"style_template_preview": "Utilizar la plantilla de estilo como vista previa de la diapositiva.",
12801293
"full_colors": "Grupo de colores de alto contraste",
12811294
"next_item_on_last_slide": "Flecha izquierda/derecha cambia el elemento del proyecto en la primera/última diapositiva",
12821295
"slide_number_keys": "Reproducir diapositivas con las teclas numéricas",

0 commit comments

Comments
 (0)