Compare commits
23 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
984a41b180 | ||
|
|
c8421d12b0 | ||
|
|
b5d38629d2 | ||
|
|
8f4adece49 | ||
|
|
cfebccc289 | ||
|
|
2613fd7acf | ||
|
|
bb10b9c15e | ||
|
|
a9ad8d65e4 | ||
|
|
e7232da38b | ||
|
|
53bd1d23c7 | ||
|
|
5643ebfd28 | ||
|
|
bed2fbaa76 | ||
|
|
05f64bc3d7 | ||
|
|
277433581c | ||
|
|
44f0b1cb38 | ||
|
|
d31dcbabdc | ||
|
|
4ed6509505 | ||
|
|
6427b8422a | ||
|
|
ebfbe1d563 | ||
|
|
67e5d8e4d2 | ||
|
|
d68ba7e846 | ||
|
|
0444cf333d | ||
|
|
10279e97d9 |
42
.github/workflows/release_automation.yml
vendored
42
.github/workflows/release_automation.yml
vendored
@@ -24,6 +24,8 @@ jobs:
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
fetch-depth: 0
|
||||
|
||||
|
||||
- name: Setup .NET
|
||||
uses: actions/setup-dotnet@v5
|
||||
@@ -94,16 +96,52 @@ jobs:
|
||||
commit_message: "Update manifest.json for release v${{ env.VERSION }} [skip ci]"
|
||||
file_pattern: manifest.json
|
||||
|
||||
- name: Generate Commit Log
|
||||
if: success()
|
||||
shell: bash
|
||||
run: |
|
||||
echo "Generating commit log since last tag..."
|
||||
|
||||
# Get the previous tag
|
||||
PREV_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
|
||||
|
||||
if [ -z "$PREV_TAG" ]; then
|
||||
echo "No previous tag found. Getting all commits."
|
||||
start_range=""
|
||||
else
|
||||
echo "Previous tag: $PREV_TAG"
|
||||
start_range="$PREV_TAG.."
|
||||
fi
|
||||
|
||||
echo "### What's Changed" > commit_log.md
|
||||
echo "" >> commit_log.md
|
||||
git log --pretty=format:"- %s (%h) by @%an" $start_range >> commit_log.md
|
||||
|
||||
# Combine Changelog from manifest (if exists) and commit log
|
||||
if [ -n "${{ env.CHANGELOG }}" ]; then
|
||||
echo "${{ env.CHANGELOG }}" > release_body.txt
|
||||
echo "" >> release_body.txt
|
||||
echo "" >> release_body.txt
|
||||
cat commit_log.md >> release_body.txt
|
||||
else
|
||||
cat commit_log.md > release_body.txt
|
||||
fi
|
||||
|
||||
# Debug output
|
||||
cat release_body.txt
|
||||
|
||||
- name: Create Release
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
tag_name: "v${{ env.VERSION }}"
|
||||
name: "v${{ env.VERSION }}"
|
||||
body: ${{ env.CHANGELOG }}
|
||||
# body: ${{ env.CHANGELOG }}
|
||||
files: ${{ env.ZIP_PATH }}
|
||||
draft: false
|
||||
prerelease: false
|
||||
generate_release_notes: true
|
||||
generate_release_notes: false
|
||||
body_path: release_body.txt
|
||||
|
||||
|
||||
# Update Message in Remote Repository
|
||||
- name: Checkout Central Manifest Repo
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<!-- <TreatWarningsAsErrors>false</TreatWarningsAsErrors> -->
|
||||
<Title>Jellyfin Media Bar Enhanced Plugin</Title>
|
||||
<Authors>CodeDevMLH</Authors>
|
||||
<Version>1.2.1.0</Version>
|
||||
<Version>1.2.3.7</Version>
|
||||
<RepositoryUrl>https://github.com/CodeDevMLH/jellyfin-plugin-media-bar-enhanced</RepositoryUrl>
|
||||
</PropertyGroup>
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Jellyfin Slideshow by M0RPH3US v3.0.8
|
||||
* Jellyfin Slideshow by M0RPH3US v3.0.9
|
||||
* Modified by CodeDevMLH v1.1.0.0
|
||||
*
|
||||
* New features:
|
||||
@@ -170,6 +170,12 @@
|
||||
height: 90%;
|
||||
overflow: hidden;
|
||||
margin: 0 auto;
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
#slides-container[style*="display: none"],
|
||||
#slides-container[style*="visibility: hidden"] {
|
||||
pointer-events: none !important;
|
||||
}
|
||||
|
||||
.arrow {
|
||||
@@ -784,6 +790,41 @@
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
@media (max-width: 400px) {
|
||||
.button-container {
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.play-button,
|
||||
.trailer-button {
|
||||
padding: 8px 14px;
|
||||
}
|
||||
|
||||
.misc-info {
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
gap: 0px 10px;
|
||||
}
|
||||
|
||||
.runTime {
|
||||
width: 100%;
|
||||
justify-content: center;
|
||||
margin-top: 0.5vh;
|
||||
}
|
||||
|
||||
.misc-info .separator-icon:last-of-type {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.genre {
|
||||
top: calc(50% + 16vh);
|
||||
}
|
||||
|
||||
.button-container {
|
||||
top: calc(50% + 27vh);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*Landscape Mode Phones*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Jellyfin Slideshow by M0RPH3US v3.0.8
|
||||
* Jellyfin Slideshow by M0RPH3US v3.0.9
|
||||
* Modified by CodeDevMLH v1.1.0.0
|
||||
*
|
||||
* New features:
|
||||
@@ -843,29 +843,64 @@ const LocalizationUtils = {
|
||||
throw new Error(`Failed to fetch translations: ${response.statusText}`);
|
||||
}
|
||||
|
||||
/**
|
||||
* @example
|
||||
* Standard version
|
||||
* ```js
|
||||
* "use strict";
|
||||
* (self.webpackChunk = self.webpackChunk || []).push([[62634], {
|
||||
* 30985: function(e) {
|
||||
* e.exports = JSON.parse('{"Absolute":"..."}')
|
||||
* }
|
||||
* }]);
|
||||
* ```
|
||||
*
|
||||
* Minified version
|
||||
* ```js
|
||||
* "use strict";(self.webpackChunk=self.webpackChunk||[]).push([[24072],{60715:function(e){e.exports=JSON.parse('{"Absolute":"..."}')}}]);
|
||||
* ```
|
||||
*/
|
||||
const chunkText = await response.text();
|
||||
|
||||
const replaceEscaped = (text) =>
|
||||
text.replace(/\\"/g, '"').replace(/\\n/g, '\n').replace(/\\\\/g, '\\').replace(/\\'/g, "'");
|
||||
|
||||
// 1. Try to remove start and end wrappers first
|
||||
try {
|
||||
// Matches from start of file to the beginning of JSON.parse('
|
||||
const START = /^(.*)JSON\.parse\(['"]/gms;
|
||||
// Matches from the end of the JSON string to the end of the file
|
||||
const END = /['"]?\)?\s*}?(\r\n|\r|\n)?}?]?\)?;(\r\n|\r|\n)?$/gms;
|
||||
|
||||
const jsonString = replaceEscaped(chunkText.replace(START, '').replace(END, ''));
|
||||
this.translations[locale] = JSON.parse(jsonString);
|
||||
return;
|
||||
} catch (e) {
|
||||
console.error('Failed to parse JSON from standard extraction.');
|
||||
// Try alternative extraction below
|
||||
}
|
||||
|
||||
// 2. Try to extract only the JSON string directly
|
||||
let jsonMatch = chunkText.match(/JSON\.parse\(['"](.*?)['"]\)/);
|
||||
if (jsonMatch) {
|
||||
let jsonString = jsonMatch[1]
|
||||
.replace(/\\"/g, '"')
|
||||
.replace(/\\n/g, '\n')
|
||||
.replace(/\\\\/g, '\\')
|
||||
.replace(/\\'/g, "'");
|
||||
try {
|
||||
const jsonString = replaceEscaped(jsonMatch[1]);
|
||||
this.translations[locale] = JSON.parse(jsonString);
|
||||
return;
|
||||
} catch (e) {
|
||||
console.error('Failed to parse JSON from direct extraction.');
|
||||
// Try direct extraction
|
||||
}
|
||||
}
|
||||
|
||||
// 3. Fallback: extract everything between the first { and the last }
|
||||
const jsonStart = chunkText.indexOf('{');
|
||||
const jsonEnd = chunkText.lastIndexOf('}') + 1;
|
||||
if (jsonStart !== -1 && jsonEnd > jsonStart) {
|
||||
const jsonString = chunkText.substring(jsonStart, jsonEnd);
|
||||
try {
|
||||
this.translations[locale] = JSON.parse(jsonString);
|
||||
return;
|
||||
} catch (e) {
|
||||
console.error("Failed to parse JSON from chunk:", e);
|
||||
}
|
||||
@@ -1275,9 +1310,12 @@ const VisibilityObserver = {
|
||||
const isVisible =
|
||||
(window.location.hash === "#/home.html" ||
|
||||
window.location.hash === "#/home") &&
|
||||
activeTab &&
|
||||
activeTab.getAttribute("data-index") === "0";
|
||||
|
||||
container.style.display = isVisible ? "block" : "none";
|
||||
container.style.visibility = isVisible ? "visible" : "hidden";
|
||||
container.style.pointerEvents = isVisible ? "auto" : "none";
|
||||
|
||||
if (isVisible) {
|
||||
if (STATE.slideshow.slideInterval && !STATE.slideshow.isPaused) {
|
||||
@@ -1296,11 +1334,11 @@ const VisibilityObserver = {
|
||||
* Initializes visibility observer
|
||||
*/
|
||||
init() {
|
||||
const observer = new MutationObserver(this.updateVisibility);
|
||||
const observer = new MutationObserver(() => this.updateVisibility());
|
||||
observer.observe(document.body, { childList: true, subtree: true });
|
||||
|
||||
document.body.addEventListener("click", this.updateVisibility);
|
||||
window.addEventListener("hashchange", this.updateVisibility);
|
||||
document.body.addEventListener("click", () => this.updateVisibility());
|
||||
window.addEventListener("hashchange", () => this.updateVisibility());
|
||||
|
||||
this.updateVisibility();
|
||||
},
|
||||
|
||||
@@ -27,7 +27,8 @@ Setzt deine Commits neu auf die Spitze eines anderen Branches. Die Commit-IDs we
|
||||
|
||||
```bash
|
||||
git checkout dev
|
||||
git rebase main
|
||||
git fetch origin
|
||||
git rebase origin/main
|
||||
```
|
||||
|
||||
| Details | |
|
||||
|
||||
@@ -8,6 +8,22 @@
|
||||
"category": "General",
|
||||
"imageUrl": "https://git.mahom03-spacecloud.de/CodeDevMLH/jellyfin-plugin-media-bar-enhanced/raw/branch/main/logo.png",
|
||||
"versions": [
|
||||
{
|
||||
"version": "1.2.3.7",
|
||||
"changelog": "- Fixes the issue where buttons were cut off on smaller screens such as on S24/S25.\n- Update mediaBarEnhanced.js and mediaBarEnhanced.css with version 3.0.9 from original repo",
|
||||
"targetAbi": "10.11.0.0",
|
||||
"sourceUrl": "https://git.mahom03-spacecloud.de/CodeDevMLH/jellyfin-plugin-media-bar-enhanced/releases/download/v1.2.3.7/Jellyfin.Plugin.MediaBarEnhanced.zip",
|
||||
"checksum": "fa1bf48cff159cc7dbf0aab48511a37c",
|
||||
"timestamp": "2026-01-28T22:39:54Z"
|
||||
},
|
||||
{
|
||||
"version": "1.2.2.0",
|
||||
"changelog": "- Fixes issues with persistent slides-container visibility",
|
||||
"targetAbi": "10.11.0.0",
|
||||
"sourceUrl": "https://git.mahom03-spacecloud.de/CodeDevMLH/jellyfin-plugin-media-bar-enhanced/releases/download/v1.2.2.0/Jellyfin.Plugin.MediaBarEnhanced.zip",
|
||||
"checksum": "3362f93815845c4e85b66b31bcd0f52c",
|
||||
"timestamp": "2026-01-24T22:53:55Z"
|
||||
},
|
||||
{
|
||||
"version": "1.2.1.0",
|
||||
"changelog": "- Update mediaBarEnhanced.js and mediaBarEnhanced.css with version 3.0.8 from original repo",
|
||||
|
||||
Reference in New Issue
Block a user