unofficial-homestuck-collection: init at 2.7.2 (#395534)

This commit is contained in:
Fernando Rodrigues
2025-09-26 00:03:32 +00:00
committed by GitHub
6 changed files with 357 additions and 0 deletions
+8
View File
@@ -13332,6 +13332,14 @@
matrix = "@kenran_:matrix.org";
name = "Johannes Maier";
};
kenshineto = {
name = "Freya Murphy";
email = "contact@freyacat.org";
matrix = "@freya:freya.cat";
github = "kenshineto";
githubId = 28487599;
keys = [ { fingerprint = "D9AF 0A42 09B7 C2DE 11A8 84BF ACBC 5536 60D9 993D"; } ];
};
kentjames = {
email = "jameschristopherkent@gmail.com";
github = "KentJames";
@@ -0,0 +1,47 @@
From 9f69077286540c75a245b44f6fd7b7cd03da2d44 Mon Sep 17 00:00:00 2001
From: Freya Murphy <freya@freyacat.org>
Date: Sun, 20 Jul 2025 11:53:51 -0400
Subject: [PATCH 1/3] disable git rev check
---
vue.config.js | 21 +++------------------
1 file changed, 3 insertions(+), 18 deletions(-)
diff --git a/vue.config.js b/vue.config.js
index 04b61d3..559b119 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -1,27 +1,12 @@
const webpack = require('webpack')
const { execSync } = require('child_process')
-const git_branch = execSync('git rev-parse --abbrev-ref HEAD').toString()
-
var build_info = {
- 'process.env.BUILD_BRANCH': JSON.stringify(
- git_branch.trim()
- ),
+ 'process.env.BUILD_BRANCH': "@git_branch@",
'process.env.BUILD_DATE': JSON.stringify(new Date().toISOString()),
'process.env.BUILD_PLATFORM': JSON.stringify(process.platform),
- 'process.env.BUILD_GIT_REVISION': JSON.stringify(
- execSync('git rev-parse HEAD').toString().trim()
- )
-}
-
-try {
- const git_remote = execSync(`git config --get branch.${git_branch.trim()}.remote`).toString()
- const git_remote_url = execSync(`git config --get remote.${git_remote.trim()}.url`).toString()
-
- build_info['process.env.BUILD_GIT_REMOTE'] = JSON.stringify(git_remote_url.trim())
-} catch (e) {
- build_info['process.env.BUILD_GIT_REMOTE'] = JSON.stringify("(no remote)")
- console.warn("No git remote")
+ 'process.env.BUILD_GIT_REVISION': "@git_revision@",
+ 'process.env.BUILD_GIT_REMOTE': "@git_remote@",
}
module.exports = {
--
2.50.1
@@ -0,0 +1,63 @@
From 03ab3354eb9acb41c271238e7b9a5e77570809ae Mon Sep 17 00:00:00 2001
From: Freya Murphy <freya@freyacat.org>
Date: Sun, 20 Jul 2025 12:06:21 -0400
Subject: [PATCH 2/3] disable update check
---
src/components/SystemPages/Settings.vue | 15 +++++++++------
src/components/UIElements/Updater.vue | 13 +------------
2 files changed, 10 insertions(+), 18 deletions(-)
diff --git a/src/components/SystemPages/Settings.vue b/src/components/SystemPages/Settings.vue
index 3371358..47c5ea6 100644
--- a/src/components/SystemPages/Settings.vue
+++ b/src/components/SystemPages/Settings.vue
@@ -598,12 +598,15 @@ export default {
label: "Use system window decorations",
desc: "Use OS-native window decorations instead of the electron title bar. <strong>Will restart the application.</strong>",
platform_whitelist: ['electron']
- }, {
- model: "allowSysUpdateNotifs",
- label: "Update notifications",
- desc: "Unless this setting is disabled, the collection will check to see if there's a new version of the app available when it starts up and alert you if there is.",
- platform_whitelist: ['electron']
- }, {
+ },
+ // MOD: patch out update notifs
+ // {
+ // model: "allowSysUpdateNotifs",
+ // label: "Update notifications",
+ // desc: "Unless this setting is disabled, the collection will check to see if there's a new version of the app available when it starts up and alert you if there is.",
+ // platform_whitelist: ['electron']
+ // },
+ {
model: "useTabbedBrowsing",
label: "Tabbed Browsing",
desc: "By default, the web app only shows one page at a time, like a standard website. This setting re-enables the in-app tab bar, and the app will store your tabs in settings.",
diff --git a/src/components/UIElements/Updater.vue b/src/components/UIElements/Updater.vue
index 6b3f677..d9bae45 100644
--- a/src/components/UIElements/Updater.vue
+++ b/src/components/UIElements/Updater.vue
@@ -73,18 +73,7 @@ export default {
watch: {
},
mounted(){
- const is_flatpak = !!(process.env.container)
- if (this.$localData.settings.allowSysUpdateNotifs && !is_flatpak) {
- const now = new Date()
- const last_checked = new Date(this.$localData.settings.lastCheckedUpdate)
- const one_day = (12 * 60 * 60 * 1000)
- if (last_checked == "Invalid Date" || now - last_checked > one_day) {
- this.doUpdateCheck()
- this.$localData.settings.lastCheckedUpdate = now.toISOString()
- } else {
- this.$logger.info("Skipping update check, already checked", last_checked)
- }
- }
+ // MOD: patch out update check
}
}
</script>
--
2.50.1
@@ -0,0 +1,101 @@
From 6be6ba5922363b478eca447135cd2421f8c598ab Mon Sep 17 00:00:00 2001
From: Freya Murphy <freya@freyacat.org>
Date: Sun, 20 Jul 2025 12:01:12 -0400
Subject: [PATCH 3/3] make compatible with native electron
---
src/background.js | 15 +++++----------
src/components/SystemPages/Settings.vue | 12 +++++++-----
src/components/UIElements/MediaEmbed.vue | 20 ++------------------
3 files changed, 14 insertions(+), 33 deletions(-)
diff --git a/src/background.js b/src/background.js
index d75c5fc..6fa2256 100644
--- a/src/background.js
+++ b/src/background.js
@@ -314,16 +314,8 @@ if (assetDir === undefined) {
is_first_run = true
} else {
try {
- if (store.has('settings.ruffleFallback') && store.get('settings.ruffleFallback') === true) {
- logger.info("Ruffle fallback enabled, disabling ppapi-level flash player")
- } else {
- // Pick the appropriate flash plugin for the user's platform
- const flashPath = getFlashPath()
-
- if (fs.existsSync(flashPath)) {
- app.commandLine.appendSwitch('ppapi-flash-path', flashPath)
- } else throw Error(`Flash plugin not located at ${flashPath}`)
- }
+ // MOD: always use ruffle
+ logger.info("Ruffle fallback enabled, disabling ppapi-level flash player")
if (store.has('settings.smoothScrolling') && store.get('settings.smoothScrolling') === false)
app.commandLine.appendSwitch('disable-smooth-scrolling')
@@ -755,6 +747,9 @@ async function createWindow () {
autoHideMenuBar: true,
webPreferences: {
nodeIntegration: process.env.ELECTRON_NODE_INTEGRATION,
+ // MOD: disable isolation to get
+ // collection to work with electron 35
+ contextIsolation: false,
enableRemoteModule: true,
plugins: true,
webviewTag: true
diff --git a/src/components/SystemPages/Settings.vue b/src/components/SystemPages/Settings.vue
index 47c5ea6..5630625 100644
--- a/src/components/SystemPages/Settings.vue
+++ b/src/components/SystemPages/Settings.vue
@@ -619,11 +619,13 @@ export default {
label: "Reduce Motion",
desc: "Attempts to reduce the amount of automatic motion in the comic by replacing animated gifs with a manual scrubber, and requiring an explicit click before playing Flash animations.",
platform_whitelist: ['electron']
- }, {
- model: "ruffleFallback",
- label: "Ruffle flash emulation fallback",
- desc: "If the built-in flash player is non-functional, use the <a href='https://ruffle.rs/'>Ruffle</a> Flash emulator in place of Flash."
- }
+ },
+ // MOD: always use ruffle
+ // {
+ // model: "ruffleFallback",
+ // label: "Ruffle flash emulation fallback",
+ // desc: "If the built-in flash player is non-functional, use the <a href='https://ruffle.rs/'>Ruffle</a> Flash emulator in place of Flash."
+ // }
],
retconList: [
{
diff --git a/src/components/UIElements/MediaEmbed.vue b/src/components/UIElements/MediaEmbed.vue
index 760fec4..53f34ff 100644
--- a/src/components/UIElements/MediaEmbed.vue
+++ b/src/components/UIElements/MediaEmbed.vue
@@ -156,24 +156,8 @@ export default {
return ret
},
ruffleEmbed() {
- // At some point between 2025.3.14 and 2025.4.13 ruffle stopped supporting our old runtime. Damn. -->
- if (this.$localData.settings.ruffleFallback) {
- if (this.$isWebApp) {
- return '<script src="https://unpkg.com/@ruffle-rs/ruffle"><\/script>'
- } else {
- // 0.1.0-nightly.2024.04.13 OK
- // ...
- // 0.1.0-nightly.2024.07.19 OK
- // 0.1.0-nightly.2024.07.20 scale issue
- // ...
- // 0.1.0-nightly.2025.04.07 scale issue
- // 0.1.0-nightly.2025.04.13 syntax issue
- // return '<script src="https://unpkg.com/@ruffle-rs/ruffle@0.1.0-nightly.2024.7.19"><\/script>'
- return `<script src="${this.$getResourceURL("assets://js/ruffle/ruffle.js")}"><\/script>`
- }
- } else {
- return '<!-- Using real flash -->'
- }
+ // MOD: always use ruffle
+ return `<script src="${this.$getResourceURL("assets://js/ruffle/ruffle.js")}"><\/script>`
},
flashSrc() {
return `
--
2.50.1
@@ -0,0 +1,21 @@
directories:
output: dist_electron
buildResources: build
app: dist_electron/bundled
files:
- filter:
- '**'
extends: null
appId: com.bambosh.unofficialhomestuckcollection
productName: The Unofficial Homestuck Collection
copyright: Copyright © 2025 GiovanH
protocols:
name: Unofficial Homestuck Collection
role: Viewer
schemes:
- mspa
linux:
asarUnpack:
- '**/*.node'
maintainer: GiovanH <uhscollection@icloud.com>
category: game
@@ -0,0 +1,117 @@
{
lib,
stdenv,
electron,
fetchFromGitHub,
fetchurl,
fetchYarnDeps,
fixup-yarn-lock,
replaceVars,
writableTmpDirAsHomeHook,
makeWrapper,
nodejs,
yarn,
libglvnd,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "unofficial-homestuck-collection";
version = "2.7.2";
src = fetchFromGitHub {
owner = "GiovanH";
repo = "unofficial-homestuck-collection";
rev = "v${finalAttrs.version}";
hash = "sha256-0RPZfXdcdBo1OxJU3eSRF7fEO5EYMyJCcAZLEqzDMRk=";
};
patches = [
(replaceVars ./0001-disable-git-rev-check.patch {
git_branch = "'main'";
git_revision = "'${finalAttrs.src.rev}'";
git_remote = "'${finalAttrs.src.url}'";
})
./0002-disable-update-check.patch
./0003-make-compatible-with-native-electron.patch
];
offlineCache = fetchYarnDeps {
yarnLock = "${finalAttrs.src}/yarn.lock";
hash = "sha256-mo5Ir/pLoqc6K/0AOJqKC0yup7vx9UrNfQ+casIgBCo=";
};
nativeBuildInputs = [
fixup-yarn-lock
makeWrapper
nodejs
writableTmpDirAsHomeHook
yarn
];
configurePhase = ''
runHook preConfigure
# setup yarn
fixup-yarn-lock yarn.lock
yarn config --offline set ignore-engines true
yarn config --offline set yarn-offline-mirror $offlineCache
yarn install --offline --frozen-lockfile --ignore-scripts --no-progress
patchShebangs node_modules
# fixup node_modules
echo > node_modules/phantomjs-prebuilt/install.js
echo > node_modules/electron/index.js
runHook postConfigure
'';
buildPhase = ''
runHook preBuild
make src/imods.tar.gz
make src/js/crc_imods.json
env NODE_OPTIONS=--max_old_space_size=8192 \
yarn run vue-cli-service electron:build \
--dir \
-c.electronDist=${electron.dist} \
-c.electronVersion=${electron.version} \
--config ${./electron-builder.yml}
runHook postBuild
'';
installPhase = ''
runHook preInstall
for i in 16x16 24x24 48x48 64x64 128x128 256x256 512x512; do
install -Dm644 build/icons/$i.png $out/share/icons/hicolor/$i/apps/dev.bambosh.UnofficialHomestuckCollection.png
done
install -Dm644 build/dev.bambosh.UnofficialHomestuckCollection.metainfo.xml $out/share/metainfo/dev.bambosh.UnofficialHomestuckCollection.metainfo.xml
install -Dm644 build/dev.bambosh.UnofficialHomestuckCollection.desktop $out/share/applications/dev.bambosh.UnofficialHomestuckCollection.desktop
install -d $out/bin $out/share/unofficial-homestuck-collection
cp -r dist_electron/*-unpacked/{locales,resources{,.pak}} $out/share/unofficial-homestuck-collection
makeWrapper ${lib.getExe electron} $out/bin/unofficial-homestuck-collection \
--add-flags $out/share/unofficial-homestuck-collection/resources/app.asar \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \
--add-flags --no-sandbox \
--set LD_LIBRARY_PATH "${
lib.makeLibraryPath [
libglvnd
]
}" \
--inherit-argv0
runHook postInstall
'';
meta = {
description = "Offline collection of Homestuck and its related works (ruffle only)";
homepage = "https://homestuck.giovanh.com/unofficial-homestuck-collection/";
changelog = "https://github.com/GiovanH/unofficial-homestuck-collection/releases/tag/v${finalAttrs.version}";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [
kenshineto
];
mainProgram = "unofficial-homestuck-collection";
platforms = lib.platforms.linux;
};
})