Skip to content

Commit

Permalink
1.3.2-beta.1 (#1043)
Browse files Browse the repository at this point in the history
* chore: non-conflicting dependency updates (#1016)

* use package-lock to ensure devs are using the same versions of dependencies

* update sqlite

* update genius-lyrics

* update @googleapis/drive

* add prettier in dev deps so the config is actually used

* update @rollup/plugin-commonjs

* update @rollup/plugin-typescript

* update rollup

* 📄 Reverted sqlite3 version

* 🎤 Fixed microphone input doubled
- Gain control integrated into volume fader
- Fixed auto size on Jesus red words
- Fixed scripture reference doubled in some cases

* ✨ Set tags for multiple shows at once
- Fixed translation issue
- Translation resets to default textbox on remove

* ✔ Fixed project folder right click add not working in empty area
- Fixed custom verse reference align style
- Fixed align style preview incorrect sometimes
- Added toggle variable action to list
- Fixed freeze when applying REST action to slide

* Update snapcraft.yaml (#1031)

* Update snapcraft.yaml

* More cleanup, switch to core24, enable wayland support

* ✨ Set variable value from action
- Optimized transition delay when set to none

* ✨ Overlay preview
- Overlays can be added to the project
- Project templates

* 📱 Remote Enhancements (#1042)

* 📱 Remote updates

* 🖼 Play media from remote
- Slide overlay in edit preview

* ✏ Edit text in remote
- Change show layout from the remote
- Remote clear layers
- Text edit style is preserved
- Text edit textbox number added as group

* ✨ Rearrange groups from remote
- Remote UI updates
- Remote loading
- Controller clear slide

* 📖 Play local scriptures from remote

* 📄 Updated version

---------

Co-authored-by: Arun Philip <dacodedbeat@gmail.com>
Co-authored-by: Erich Eickmeyer <erich@ericheickmeyer.com>
  • Loading branch information
3 people authored Nov 21, 2024
1 parent 3b0affd commit 8ee66b7
Show file tree
Hide file tree
Showing 177 changed files with 14,192 additions and 2,801 deletions.
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
*.env

.DS_Store
package-lock.json

test-output/
test-results/
9,933 changes: 9,933 additions & 0 deletions package-lock.json

Large diffs are not rendered by default.

17 changes: 10 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "freeshow",
"version": "1.3.1",
"version": "1.3.2-beta.1",
"private": true,
"main": "build/electron/index.js",
"description": "Show song lyrics and more for free!",
Expand All @@ -23,7 +23,9 @@
"start:electron:dev": "npm-run-all -s build:electron:dev start:electron:script start:electron:run",
"start:electron:script": "node scripts/electronDevPostBuild.js",
"start:electron": "npm-run-all -p build:electron:dev:watch start:electron:dev",
"test": "npm-run-all -s build test:playwright",
"test": "npm-run-all -s build test:*",
"test:*": "npm-run-all -p test:prettier test:playwright",
"test:prettier": "npx prettier --check src scripts",
"test:playwright": "npx playwright test",
"postinstall": "electron-builder install-app-deps",
"prepack": "npm run build",
Expand Down Expand Up @@ -135,10 +137,10 @@
"devDependencies": {
"@electron/notarize": "^2.4.0",
"@playwright/test": "^1.40.1",
"@rollup/plugin-commonjs": "^25.0.7",
"@rollup/plugin-commonjs": "^28.0.1",
"@rollup/plugin-node-resolve": "^15.2.3",
"@rollup/plugin-terser": "^0.4.4",
"@rollup/plugin-typescript": "^11.1.5",
"@rollup/plugin-typescript": "^12.1.1",
"@tsconfig/svelte": "^2.0.0",
"@types/adm-zip": "^0.5.6",
"@types/exif": "^0.6.3",
Expand All @@ -150,7 +152,8 @@
"electron": "^32.1.2",
"electron-builder": "^24.13.3",
"playwright": "^1.40.1",
"rollup": "^4.6.1",
"prettier": "^3.3.3",
"rollup": "^4.26.0",
"rollup-plugin-copy": "^3.5.0",
"rollup-plugin-css-only": "^4.5.2",
"rollup-plugin-livereload": "^2.0.5",
Expand All @@ -164,7 +167,7 @@
"typescript": "^4.5.4"
},
"dependencies": {
"@googleapis/drive": "^6.0.0",
"@googleapis/drive": "^8.14.0",
"@mapbox/node-pre-gyp": "^1.0.11",
"@sveltejs/svelte-virtual-list": "^3.0.1",
"@vimeo/player": "^2.16.4",
Expand All @@ -178,7 +181,7 @@
"express": "^4.17.2",
"follow-redirects": "^1.15.2",
"font-list": "^1.4.5",
"genius-lyrics": "4.4.6",
"genius-lyrics": "^4.4.7",
"grandiose": "vassbo/grandiose#9857c8e",
"jzz": "^1.5.9",
"mp4box": "^0.5.2",
Expand Down
9 changes: 8 additions & 1 deletion public/lang/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,7 @@
"toggle_shuffle": "Toggle shuffle",
"next": "Next",
"previous": "Previous",
"play_no_audio": "Play without audio",
"play_no_filters": "Play without filters",
"favourite": "Favorite",
"pause": "Pause",
Expand Down Expand Up @@ -194,6 +195,8 @@
"playlist_settings": "Playlist settings",
"custom_output": "Custom audio output",
"mute_when_video_plays": "Mute when video plays",
"allow_gaining": "Allow gaining",
"allow_gaining_tip": "Allow setting volume above 100% (May cause distortion)",
"pre_fader_volume_meter": "Pre fader volume meter",
"mixer": "Mixer",
"metronome": "Metronome",
Expand Down Expand Up @@ -277,7 +280,7 @@
"composer": "Composer",
"publisher": "Publisher",
"copyright": "Copyright",
"CCLI": "License (CCLI)",
"CCLI": "Song ID (CCLI)",
"year": "Year",
"key": "Key",
"autofill": "Autofill",
Expand Down Expand Up @@ -553,6 +556,8 @@
"zoomIn": "Zoom In",
"zoomOut": "Zoom Out",
"reset": "Reset",
"create_template": "Create template",
"project_template_tip": "Create a new project from this template",
"convert_to_images": "Convert to images",
"converting": "Converting...",
"remove_template_from_show": "Remove template from show",
Expand Down Expand Up @@ -632,6 +637,7 @@
"next_after_media": "Next on media finished",
"remove_media": "Remove media",
"remove_layers": "Remove layers",
"toggle_checkbox_tip": "Action will toggle if checkbox is unchanged",
"start_recording": "Start recording",
"stop_recording": "Stop recording",
"export_recording": "Stop recording and export",
Expand Down Expand Up @@ -748,6 +754,7 @@
},
"context": {
"enabledTabs": "Toggle tabs",
"setTag": "Set tag",
"filterByTags": "Filter by tags",
"addToProject": "Add to project",
"add_to_show": "Add to show",
Expand Down
48 changes: 26 additions & 22 deletions snap/snapcraft.yaml
Original file line number Diff line number Diff line change
@@ -1,15 +1,24 @@
base: core22
name: freeshow
version: 1.3.1
title: FreeShow
summary: FreeShow
description: Show song lyrics and more for free!
platforms:
amd64:
build-on: amd64
build-for: amd64
base: core24
grade: stable
confinement: strict
plugs:
usr-share-alsa:
interface: system-files
read:
- /usr/share/alsa/alsa.conf
gnome-42-2204:
gnome-46-2404:
interface: content
target: $SNAP/gnome-platform
default-provider: gnome-46-2404
mesa-2404:
interface: content
target: $SNAP/gnome-platform
default-provider: gnome-42-2204
default-provider: mesa-2404
gtk-3-themes:
interface: content
target: $SNAP/data-dir/themes
Expand All @@ -22,19 +31,21 @@ plugs:
interface: content
target: $SNAP/data-dir/sounds
default-provider: gtk-common-themes
name: freeshow
version: 1.3.1-beta.1
title: FreeShow
summary: FreeShow
description: Show song lyrics and more for free!
architectures:
- amd64
layout:
/usr/share/alsa/alsa.conf:
bind-file: $SNAP_DATA/usr/share/alsa/alsa.conf
parts:
freeshow:
source: ./dist/linux-unpacked/
plugin: dump
stage-packages:
- libasound2t64
apps:
freeshow:
command: command.sh
extensions: [gnome]
plugs:
- alsa
- usr-share-alsa
- desktop
- desktop-legacy
- home
Expand All @@ -48,13 +59,6 @@ apps:
- pulseaudio
- opengl
environment:
DISABLE_WAYLAND: '1'
PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH
SNAP_DESKTOP_RUNTIME: $SNAP/gnome-platform
LD_LIBRARY_PATH: $SNAP_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu
parts:
freeshow:
source: ./dist/linux-unpacked/
plugin: dump
stage-packages:
- libasound2
13 changes: 8 additions & 5 deletions src/electron/data/downloadMedia.ts
Original file line number Diff line number Diff line change
Expand Up @@ -192,9 +192,12 @@ async function startDownload(downloading: any) {
next()
}

let timeout = setTimeout(() => {
fileStream.close()
console.error(`File timed out: ${file.name}`)
next()
}, 60 * 8 * 1000) // 8 minutes timeout
let timeout = setTimeout(
() => {
fileStream.close()
console.error(`File timed out: ${file.name}`)
next()
},
60 * 8 * 1000
) // 8 minutes timeout
}
2 changes: 1 addition & 1 deletion src/electron/data/store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ export function getStore(id: string, e: any = null) {
const portableData: any = {
synced_settings: { key: "SYNCED_SETTINGS", defaults: defaultSyncedSettings },
themes: { key: "THEMES", defaults: {} },
projects: { key: "PROJECTS", defaults: { projects: {}, folders: {} } },
projects: { key: "PROJECTS", defaults: { projects: {}, folders: {}, projectTemplates: {} } },
shows: { key: "SHOWS", defaults: {} },
stageShows: { key: "STAGE_SHOWS", defaults: {} },
overlays: { key: "OVERLAYS", defaults: {} },
Expand Down
1 change: 0 additions & 1 deletion src/electron/ndi/audio.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import { NdiSender } from "./NdiSender"
// const ebml = require("ebml")
// const Opus = require("@discordjs/opus")


// if (audio) captureAudio()

const audioChannelCount = 2
Expand Down
4 changes: 2 additions & 2 deletions src/electron/utils/shows.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,12 @@ export function trimShow(showCache: Show) {
// let hasContent = !!Object.values(show.slides).find((slide) => slide.items.find((item) => item.lines?.find((line) => line.text?.find((text) => text.value?.length))))

function showHasLayoutContent(show: Show) {
return !!Object.values(show.layouts).find((layout) => layout.slides.length)
return !!Object.values(show.layouts || {}).find((layout) => layout.slides.length)
}

export function getShowTextContent(show: Show) {
let textContent = ""
Object.values(show.slides).forEach((slide) => {
Object.values(show.slides || {}).forEach((slide) => {
slide.items.forEach((item) => {
item.lines?.forEach((line) => {
line.text?.forEach((text) => {
Expand Down
5 changes: 3 additions & 2 deletions src/frontend/classes/Show.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { get } from "svelte/store"
import { uid } from "uid"
import type { Show } from "../../types/Show"
import { _show } from "../components/helpers/shows"
import { dictionary, templates } from "../stores"
import { activeShow, dictionary, templates } from "../stores"

export class ShowObj implements Show {
name: string
Expand Down Expand Up @@ -30,7 +30,8 @@ export class ShowObj implements Show {

constructor(isPrivate: boolean = false, category: null | string = null, layoutId: string = uid(), created: number = new Date().getTime(), template: string | boolean = true) {
if (template !== false) {
if (typeof template !== "string") template = _show().get("settings.template") || null
// get template from active show (if it's not default with the "Header" template)
if (typeof template !== "string" && get(activeShow)?.id !== "default") template = _show().get("settings.template") || null
if (!template && get(templates).default) template = "default"
}

Expand Down
8 changes: 7 additions & 1 deletion src/frontend/components/actions/CreateAction.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,14 @@
"id_select_stage_layout",
"change_stage_output_layout",
"change_transition",
"change_variable",
"start_camera",
"run_action",
"toggle_action",
"send_rest_command",
]
// remove actions that are not fully implemented to CustomInput yet
const removeActions = ["change_transition", "change_variable"]
const removeActions = ["change_transition"]
if (list) removeActions.push(...removeFromSlideAction)
$: ACTIONS = [
Expand All @@ -66,6 +70,8 @@
return { id, name, icon, common }
})
.filter(({ id }) => {
// don't show actions with no custom data
if (!actionData[id]) return false
// show if it is the currently selected
if (id === actionId) return true
// don't display GET actions
Expand Down
12 changes: 8 additions & 4 deletions src/frontend/components/actions/CustomInput.svelte
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<script lang="ts">
import { createEventDispatcher, onMount } from "svelte"
import type { Option } from "../../../types/Main"
import { activePopup, audioPlaylists, audioStreams, dictionary, groups, midiIn, outputs, popupData, shows, stageShows, styles, timers, triggers } from "../../stores"
import { activePopup, audioPlaylists, audioStreams, dictionary, groups, midiIn, outputs, popupData, shows, stageShows, styles, timers, triggers, variables } from "../../stores"
import T from "../helpers/T.svelte"
import { keysToID, sortByName } from "../helpers/array"
import { _show } from "../helpers/shows"
Expand All @@ -15,6 +15,7 @@
import RestValues from "./RestValues.svelte"
import ChooseStyle from "./specific/ChooseStyle.svelte"
import MetronomeInputs from "../drawer/audio/MetronomeInputs.svelte"
import VariableInputs from "./specific/VariableInputs.svelte"
export let inputId: string
export let value
Expand Down Expand Up @@ -72,6 +73,7 @@
start_playlist: () => convertToOptions($audioPlaylists),
id_select_output_style: () => [{ id: null, name: "" }, ...convertToOptions($styles)],
id_start_timer: () => convertToOptions($timers),
variable: () => convertToOptions($variables), // .map((a) => ({...a, type: $variables[a.id]?.type}))
start_trigger: () => convertToOptions($triggers),
run_action: () => convertToOptions($midiIn).filter((a) => a.name && a.id !== mainId),
}
Expand Down Expand Up @@ -104,18 +106,20 @@
<div class="column">
<MetronomeInputs values={value || { tempo: 120, beats: 4 }} on:change={(e) => updateValue("", e)} volume={false} />
</div>
{:else if inputId === "variable"}
<VariableInputs {value} on:update={(e) => updateValue(e.detail?.key, e.detail?.value)} />
{:else if inputId === "toggle_action"}
<CombinedInput>
<Dropdown style="width: 100%;" activeId={value?.id} value={getOptions.run_action().find((a) => a.id === value?.id)?.name || value?.id || ""} options={getOptions.run_action()} on:click={(e) => updateValue("id", e.detail?.id)} />
</CombinedInput>
<CombinedInput>
{#if value?.value === undefined}<p style="opacity: 0.8;font-size: 0.8em;">Action will toggle if checkbox is unchanged</p>{/if}
{#if value?.value === undefined}<p style="opacity: 0.8;font-size: 0.8em;"><T id="actions.toggle_checkbox_tip" /></p>{/if}
<div class="alignRight" style="width: 100%;">
<Checkbox checked={value?.value} on:change={checkboxChanged} />
</div>
</CombinedInput>
{:else if inputId === "rest"}
<RestValues rest={value} on:change={(e) => updateValue("", e)} />
<RestValues rest={value || {}} on:change={(e) => updateValue("", e)} />
{:else}
<CombinedInput style={inputId === "midi" ? "flex-direction: column;" : ""}>
{#if inputId === "index"}
Expand All @@ -125,7 +129,7 @@
{:else if inputId === "strval"}
<TextInput value={value?.value || ""} placeholder={$dictionary.inputs?.name} on:change={(e) => updateValue("value", e)} />
{:else if inputId === "bolval"}
{#if actionId === "lock_output" && value?.value === undefined}<p style="opacity: 0.8;font-size: 0.8em;">Action will toggle if checkbox is unchanged</p>{/if}
{#if actionId === "lock_output" && value?.value === undefined}<p style="opacity: 0.8;font-size: 0.8em;"><T id="actions.toggle_checkbox_tip" /></p>{/if}
<div class="alignRight" style="width: 100%;">
<Checkbox checked={value?.value} on:change={checkboxChanged} />
</div>
Expand Down
Loading

0 comments on commit 8ee66b7

Please sign in to comment.