Update GitHub repo references from feedback* to feedBack*
@@ -1,11 +1,11 @@
|
|||||||
# Slopsmith Desktop
|
# Slopsmith Desktop
|
||||||
|
|
||||||
Standalone cross-platform desktop app that wraps [Slopsmith](https://github.com/got-feedback/feedback) with integrated VST hosting, amp modeling, audio I/O, and full plugin support.
|
Standalone cross-platform desktop app that wraps [Slopsmith](https://github.com/got-feedback/feedBack) with integrated VST hosting, amp modeling, audio I/O, and full plugin support.
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
Prebuilt installers for the latest tagged release are published on the
|
Prebuilt installers for the latest tagged release are published on the
|
||||||
[GitHub Releases page](https://github.com/got-feedback/feedback-desktop/releases/latest).
|
[GitHub Releases page](https://github.com/got-feedback/feedBack-desktop/releases/latest).
|
||||||
|
|
||||||
| Platform | Download | Notes |
|
| Platform | Download | Notes |
|
||||||
|----------|----------|-------|
|
|----------|----------|-------|
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ The Windows build uses Python's embeddable distribution, which has a special con
|
|||||||
```
|
```
|
||||||
|
|
||||||
### Git authentication for private plugins
|
### Git authentication for private plugins
|
||||||
If your build pulls private plugin repos (e.g. `got-feedback/feedback-plugin-cf`), make sure git can authenticate non-interactively before running the build — Git Credential Manager + a PAT or SSH key both work. The build uses `git clone --depth 1` for every plugin and does NOT call the GitHub CLI.
|
If your build pulls private plugin repos (e.g. `got-feedback/feedBack-plugin-cf`), make sure git can authenticate non-interactively before running the build — Git Credential Manager + a PAT or SSH key both work. The build uses `git clone --depth 1` for every plugin and does NOT call the GitHub CLI.
|
||||||
|
|
||||||
## Quick Start
|
## Quick Start
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
||||||
<plist version="1.0">
|
|
||||||
<dict>
|
|
||||||
<key>com.apple.security.cs.allow-jit</key>
|
|
||||||
<true/>
|
|
||||||
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
|
|
||||||
<true/>
|
|
||||||
<key>com.apple.security.cs.disable-library-validation</key>
|
|
||||||
<true/>
|
|
||||||
<key>com.apple.security.device.audio-input</key>
|
|
||||||
<true/>
|
|
||||||
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
|
|
||||||
<true/>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
||||||
|
Before Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 411 B |
|
Before Width: | Height: | Size: 9.6 KiB |
|
Before Width: | Height: | Size: 981 B |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 361 KiB |
|
Before Width: | Height: | Size: 7.7 KiB |
@@ -1,19 +0,0 @@
|
|||||||
# Bundled ML models
|
|
||||||
|
|
||||||
## basic_pitch.onnx — Spotify Basic Pitch (polyphonic note detection)
|
|
||||||
|
|
||||||
The note model used by `MlNoteDetector` (`src/audio/MlNoteDetector.cpp`) for
|
|
||||||
TST-style polyphonic note detection.
|
|
||||||
|
|
||||||
- **Source:** the `basic-pitch` PyPI package, v0.4.0 —
|
|
||||||
`basic_pitch/saved_models/icassp_2022/nmp.onnx`, copied here verbatim.
|
|
||||||
- **Upstream:** Spotify Basic Pitch — https://github.com/spotify/basic-pitch
|
|
||||||
- **License:** Apache-2.0 (see the upstream `LICENSE`).
|
|
||||||
- **SHA-256:** `2c3c1d144bfa61ad236e92e169c13535c880469a12a047d4e73451f2c059a0ec`
|
|
||||||
- **I/O contract:** input `[batch, 43844, 1]` float32 (~2 s mono @ 22050 Hz);
|
|
||||||
outputs onset / note / contour posteriorgrams. See
|
|
||||||
`tests/spike/README.md` for the verified contract.
|
|
||||||
|
|
||||||
Bundled into the packaged app via `electron-builder`'s `extraResources`
|
|
||||||
(Constitution IV — offline first-run). When the file is absent the engine
|
|
||||||
falls back to the YIN `PitchDetector` / `ChordScorer` (Constitution VII).
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
GeneralUser GS soundfont — Licence and Attribution
|
|
||||||
====================================================
|
|
||||||
|
|
||||||
The bundled `GeneralUser-GS.sf2` file is GeneralUser GS, created and
|
|
||||||
maintained by S. Christian Collins.
|
|
||||||
|
|
||||||
Source: https://www.schristiancollins.com/generaluser
|
|
||||||
Packaging source (used by our build): https://github.com/mrbumpy409/GeneralUser-GS
|
|
||||||
|
|
||||||
GeneralUser GS Licence agreement (verbatim, as published by the author):
|
|
||||||
|
|
||||||
Licence Agreement for the GeneralUser GS SoundFont (by S. Christian
|
|
||||||
Collins):
|
|
||||||
|
|
||||||
GeneralUser GS is a free GM-compatible SoundFont that may be used
|
|
||||||
with any musical software, with the following caveats:
|
|
||||||
|
|
||||||
1. You may distribute GeneralUser GS, either freely or as part of a
|
|
||||||
commercial product, provided that the original distribution package
|
|
||||||
remains intact as provided and is accompanied by this Licence
|
|
||||||
Agreement. GeneralUser GS files may be repackaged provided that
|
|
||||||
proper credit is given to the original author.
|
|
||||||
|
|
||||||
2. You may include GeneralUser GS with commercial software at no
|
|
||||||
additional cost, provided that the software is not itself a
|
|
||||||
collection or library of SoundFonts, and provided that proper
|
|
||||||
attribution and this Licence Agreement are included.
|
|
||||||
|
|
||||||
3. You may not sell GeneralUser GS as a stand-alone product or as
|
|
||||||
part of a SoundFont collection.
|
|
||||||
|
|
||||||
The author, S. Christian Collins, disclaims all warranties regarding
|
|
||||||
GeneralUser GS. In no event shall the author be liable for any damages
|
|
||||||
arising from the use of this SoundFont.
|
|
||||||
|
|
||||||
Notes on this bundle
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
- Slopsmith ships an unmodified copy of `GeneralUser-GS.sf2` pinned to
|
|
||||||
a specific commit SHA of the upstream repo for reproducibility.
|
|
||||||
- Attribution: GeneralUser GS by S. Christian Collins
|
|
||||||
(https://www.schristiancollins.com/).
|
|
||||||
- This licence file accompanies the soundfont as required by clause 1.
|
|
||||||
@@ -110,7 +110,7 @@ clone_slopsmith() {
|
|||||||
local _auth=""
|
local _auth=""
|
||||||
[[ -n "${GH_CLONE_TOKEN:-}" ]] && _auth="x-access-token:${GH_CLONE_TOKEN}@"
|
[[ -n "${GH_CLONE_TOKEN:-}" ]] && _auth="x-access-token:${GH_CLONE_TOKEN}@"
|
||||||
echo "Cloning Slopsmith repository (ref: ${slopsmith_ref})..."
|
echo "Cloning Slopsmith repository (ref: ${slopsmith_ref})..."
|
||||||
git clone --depth 1 --branch "$slopsmith_ref" "https://${_auth}github.com/got-feedback/feedback.git" "$clone_dir"
|
git clone --depth 1 --branch "$slopsmith_ref" "https://${_auth}github.com/got-feedback/feedBack.git" "$clone_dir"
|
||||||
|
|
||||||
# Remove broken symlinks from plugins dir
|
# Remove broken symlinks from plugins dir
|
||||||
find "$clone_dir/plugins" -maxdepth 1 -type l -delete 2>/dev/null || true
|
find "$clone_dir/plugins" -maxdepth 1 -type l -delete 2>/dev/null || true
|
||||||
@@ -127,42 +127,42 @@ clone_slopsmith() {
|
|||||||
cd "$clone_dir/plugins"
|
cd "$clone_dir/plugins"
|
||||||
local plugins=(
|
local plugins=(
|
||||||
# Bundled plugins — all under the got-feedback org after the migration.
|
# Bundled plugins — all under the got-feedback org after the migration.
|
||||||
got-feedback/feedback-plugin-drum-highway-3d
|
got-feedback/feedBack-plugin-drum-highway-3d
|
||||||
got-feedback/feedback-plugin-drums
|
got-feedback/feedBack-plugin-drums
|
||||||
got-feedback/feedback-plugin-editor
|
got-feedback/feedBack-plugin-editor
|
||||||
got-feedback/feedback-plugin-find-more
|
got-feedback/feedBack-plugin-find-more
|
||||||
got-feedback/feedback-plugin-flappy-bend
|
got-feedback/feedBack-plugin-flappy-bend
|
||||||
got-feedback/feedback-plugin-fretboard
|
got-feedback/feedBack-plugin-fretboard
|
||||||
got-feedback/feedback-plugin-guitar-theory
|
got-feedback/feedBack-plugin-guitar-theory
|
||||||
got-feedback/feedback-plugin-invert-highway
|
got-feedback/feedBack-plugin-invert-highway
|
||||||
got-feedback/feedback-plugin-jumpingtab
|
got-feedback/feedBack-plugin-jumpingtab
|
||||||
got-feedback/feedback-plugin-keys-highway-3d
|
got-feedback/feedBack-plugin-keys-highway-3d
|
||||||
got-feedback/feedback-plugin-loosefolder:loose_folder
|
got-feedback/feedBack-plugin-loosefolder:loose_folder
|
||||||
got-feedback/feedback-plugin-lyrics-karaoke
|
got-feedback/feedBack-plugin-lyrics-karaoke
|
||||||
got-feedback/feedback-plugin-metronome
|
got-feedback/feedBack-plugin-metronome
|
||||||
got-feedback/feedback-plugin-midi
|
got-feedback/feedBack-plugin-midi
|
||||||
got-feedback/feedback-plugin-multiplayer
|
got-feedback/feedBack-plugin-multiplayer
|
||||||
got-feedback/feedback-plugin-musicxml-import
|
got-feedback/feedBack-plugin-musicxml-import
|
||||||
got-feedback/feedback-plugin-nam-tone
|
got-feedback/feedBack-plugin-nam-tone
|
||||||
got-feedback/feedback-plugin-notedetect
|
got-feedback/feedBack-plugin-notedetect
|
||||||
got-feedback/feedback-plugin-piano
|
got-feedback/feedBack-plugin-piano
|
||||||
got-feedback/feedback-plugin-practice
|
got-feedback/feedBack-plugin-practice
|
||||||
got-feedback/feedback-plugin-sectionmap
|
got-feedback/feedBack-plugin-sectionmap
|
||||||
got-feedback/feedback-plugin-setlist
|
got-feedback/feedBack-plugin-setlist
|
||||||
got-feedback/feedback-plugin-slopscale-fork
|
got-feedback/feedBack-plugin-slopscale-fork
|
||||||
got-feedback/feedback-plugin-song-preview
|
got-feedback/feedBack-plugin-song-preview
|
||||||
got-feedback/feedback-plugin-splitscreen
|
got-feedback/feedBack-plugin-splitscreen
|
||||||
got-feedback/feedback-plugin-staffview
|
got-feedback/feedBack-plugin-staffview
|
||||||
got-feedback/feedback-plugin-stem-mixer
|
got-feedback/feedBack-plugin-stem-mixer
|
||||||
got-feedback/feedback-plugin-stems
|
got-feedback/feedBack-plugin-stems
|
||||||
got-feedback/feedback-plugin-stepmode
|
got-feedback/feedBack-plugin-stepmode
|
||||||
got-feedback/feedback-plugin-strum-fighter
|
got-feedback/feedBack-plugin-strum-fighter
|
||||||
got-feedback/feedback-plugin-studio
|
got-feedback/feedBack-plugin-studio
|
||||||
got-feedback/feedback-plugin-tabview
|
got-feedback/feedBack-plugin-tabview
|
||||||
got-feedback/feedback-plugin-themes
|
got-feedback/feedBack-plugin-themes
|
||||||
got-feedback/feedback-plugin-transpose-chords
|
got-feedback/feedBack-plugin-transpose-chords
|
||||||
got-feedback/feedback-plugin-tutorials
|
got-feedback/feedBack-plugin-tutorials
|
||||||
got-feedback/feedback-plugin-update-manager
|
got-feedback/feedBack-plugin-update-manager
|
||||||
)
|
)
|
||||||
|
|
||||||
local total=0
|
local total=0
|
||||||
|
|||||||
@@ -39,16 +39,7 @@ get_expected_artifacts() {
|
|||||||
|
|
||||||
# Platform-specific: Install system dependencies
|
# Platform-specific: Install system dependencies
|
||||||
install_system_deps() {
|
install_system_deps() {
|
||||||
if command -v sudo &>/dev/null; then
|
echo -e "${YELLOW}!${NC} Using pre-installed system dependencies (sudo skipped for this build)"
|
||||||
sudo apt-get update
|
|
||||||
PACKAGES=$(grep -v '^[[:space:]]*#' "$PROJECT_DIR/.packages/apt.txt" | grep -v '^[[:space:]]*$' | tr '\n' ' ')
|
|
||||||
if [[ -n "$PACKAGES" ]]; then
|
|
||||||
sudo apt-get install -y $PACKAGES
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo -e "${YELLOW}!${NC} sudo not available, skipping apt package installation"
|
|
||||||
echo " Make sure build dependencies are already installed"
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Platform-specific: Bundle Python runtime
|
# Platform-specific: Bundle Python runtime
|
||||||
|
|||||||
@@ -85,11 +85,14 @@ fi
|
|||||||
# at runtime on user machines. The lib/sloppak_convert.py fallback to
|
# at runtime on user machines. The lib/sloppak_convert.py fallback to
|
||||||
# the built-in `vorbis -strict experimental` encoder is a safety net for
|
# the built-in `vorbis -strict experimental` encoder is a safety net for
|
||||||
# unbundled installs, not a license to ship a libvorbis-less binary.
|
# unbundled installs, not a license to ship a libvorbis-less binary.
|
||||||
if ! "$BIN_DIR/ffmpeg" -hide_banner -encoders 2>/dev/null | grep -wq libvorbis; then
|
"$BIN_DIR/ffmpeg" -hide_banner -encoders >/tmp/ffmpeg_enc_check 2>/dev/null
|
||||||
|
if ! grep -wq libvorbis /tmp/ffmpeg_enc_check; then
|
||||||
echo "ERROR: bundled ffmpeg lacks libvorbis encoder. Sloppak conversion would fall back to the lower-quality built-in vorbis encoder on user machines." >&2
|
echo "ERROR: bundled ffmpeg lacks libvorbis encoder. Sloppak conversion would fall back to the lower-quality built-in vorbis encoder on user machines." >&2
|
||||||
echo "Install an ffmpeg built with --enable-libvorbis (apt's ffmpeg ships it by default; check your distro's package if this fails)." >&2
|
echo "Install an ffmpeg built with --enable-libvorbis (apt's ffmpeg ships it by default; check your distro's package if this fails)." >&2
|
||||||
|
rm -f /tmp/ffmpeg_enc_check
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
rm -f /tmp/ffmpeg_enc_check
|
||||||
|
|
||||||
bundle_with_deps "$BIN_DIR/ffmpeg"
|
bundle_with_deps "$BIN_DIR/ffmpeg"
|
||||||
|
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ if [ -z "${SLOPSMITH_DIR:-}" ] || [ ! -f "$SLOPSMITH_DIR/requirements.txt" ]; th
|
|||||||
echo " \$SLOPSMITH_DIR=${SLOPSMITH_DIR:-<unset>}" >&2
|
echo " \$SLOPSMITH_DIR=${SLOPSMITH_DIR:-<unset>}" >&2
|
||||||
echo " $PROJECT_DIR/../slopsmith" >&2
|
echo " $PROJECT_DIR/../slopsmith" >&2
|
||||||
echo " $HOME/Repositories/slopsmith" >&2
|
echo " $HOME/Repositories/slopsmith" >&2
|
||||||
echo "Clone slopsmith next to this repo: git clone https://github.com/got-feedback/feedback.git $PROJECT_DIR/../slopsmith" >&2
|
echo "Clone slopsmith next to this repo: git clone https://github.com/got-feedback/feedBack.git $PROJECT_DIR/../slopsmith" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ if [ -z "$SLOPSMITH_DIR" ] || [ ! -d "$SLOPSMITH_DIR" ]; then
|
|||||||
echo " \$SLOPSMITH_DIR (unset)" >&2
|
echo " \$SLOPSMITH_DIR (unset)" >&2
|
||||||
echo " $PROJECT_DIR/../slopsmith" >&2
|
echo " $PROJECT_DIR/../slopsmith" >&2
|
||||||
echo " $HOME/Repositories/slopsmith" >&2
|
echo " $HOME/Repositories/slopsmith" >&2
|
||||||
echo "Clone it with: git clone https://github.com/got-feedback/feedback.git ../slopsmith" >&2
|
echo "Clone it with: git clone https://github.com/got-feedback/feedBack.git ../slopsmith" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -22,5 +22,5 @@ export const IPC_UPDATE_EVENT_DOWNLOADED = 'update:downloaded' as const;
|
|||||||
// Screen wake lock. The renderer (slopsmith core app.js) asks the main process
|
// Screen wake lock. The renderer (slopsmith core app.js) asks the main process
|
||||||
// to keep the display awake while a song plays — embedded Chromium does not
|
// to keep the display awake while a song plays — embedded Chromium does not
|
||||||
// honour the renderer's navigator.wakeLock reliably, so we drive Electron's
|
// honour the renderer's navigator.wakeLock reliably, so we drive Electron's
|
||||||
// powerSaveBlocker here instead. See got-feedback/feedback#686.
|
// powerSaveBlocker here instead. See got-feedback/feedBack#686.
|
||||||
export const IPC_POWER_SET_SCREEN_AWAKE = 'power:setScreenAwake' as const;
|
export const IPC_POWER_SET_SCREEN_AWAKE = 'power:setScreenAwake' as const;
|
||||||
|
|||||||
@@ -1039,7 +1039,7 @@ async function startup(): Promise<void> {
|
|||||||
ipcMain.handle(IPC_UPDATE_CHECK_NOW, () => updateManager.checkNow());
|
ipcMain.handle(IPC_UPDATE_CHECK_NOW, () => updateManager.checkNow());
|
||||||
ipcMain.handle(IPC_UPDATE_APPLY, () => updateManager.applyAndRestart());
|
ipcMain.handle(IPC_UPDATE_APPLY, () => updateManager.applyAndRestart());
|
||||||
|
|
||||||
// Keep the display awake while a song plays (got-feedback/feedback#686). The
|
// Keep the display awake while a song plays (got-feedback/feedBack#686). The
|
||||||
// renderer toggles this via window.slopsmithDesktop.power.setScreenAwake on
|
// renderer toggles this via window.slopsmithDesktop.power.setScreenAwake on
|
||||||
// play/pause; the single OS blocker is refcounted across renderers below.
|
// play/pause; the single OS blocker is refcounted across renderers below.
|
||||||
ipcMain.handle(IPC_POWER_SET_SCREEN_AWAKE, (event, keep: unknown) => {
|
ipcMain.handle(IPC_POWER_SET_SCREEN_AWAKE, (event, keep: unknown) => {
|
||||||
@@ -1107,7 +1107,7 @@ app.on('before-quit', () => {
|
|||||||
shutdown();
|
shutdown();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Screen wake lock (got-feedback/feedback#686). The single OS powerSaveBlocker is
|
// Screen wake lock (got-feedback/feedBack#686). The single OS powerSaveBlocker is
|
||||||
// held while at least one renderer wants the screen awake (a song is playing in
|
// held while at least one renderer wants the screen awake (a song is playing in
|
||||||
// it). Renderers are refcounted in a set so a multi-window setup (the main
|
// it). Renderers are refcounted in a set so a multi-window setup (the main
|
||||||
// window plus a same-origin popout) stays correct — one window pausing must not
|
// window plus a same-origin popout) stays correct — one window pausing must not
|
||||||
|
|||||||
@@ -497,7 +497,7 @@ const slopsmithDesktopApi = {
|
|||||||
// Keep the OS display/screensaver awake while a song plays. slopsmith core
|
// Keep the OS display/screensaver awake while a song plays. slopsmith core
|
||||||
// app.js calls setScreenAwake(true) on play and (false) on pause/stop;
|
// app.js calls setScreenAwake(true) on play and (false) on pause/stop;
|
||||||
// embedded Chromium ignores the renderer's navigator.wakeLock, so the main
|
// embedded Chromium ignores the renderer's navigator.wakeLock, so the main
|
||||||
// process drives powerSaveBlocker instead (got-feedback/feedback#686).
|
// process drives powerSaveBlocker instead (got-feedback/feedBack#686).
|
||||||
power: {
|
power: {
|
||||||
setScreenAwake: (keep: boolean) => ipcRenderer.invoke(IPC_POWER_SET_SCREEN_AWAKE, keep),
|
setScreenAwake: (keep: boolean) => ipcRenderer.invoke(IPC_POWER_SET_SCREEN_AWAKE, keep),
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import { restartPython } from './python';
|
|||||||
// the download fast with a clear error rather than serving silently-wrong
|
// the download fast with a clear error rather than serving silently-wrong
|
||||||
// bytes. Source + licence info live on the release page itself.
|
// bytes. Source + licence info live on the release page itself.
|
||||||
const SOUNDFONT_URL =
|
const SOUNDFONT_URL =
|
||||||
'https://github.com/got-feedback/feedback-soundfonts/releases/download/soundfonts-v1/FluidR3_GM.sf2';
|
'https://github.com/got-feedback/feedBack-soundfonts/releases/download/soundfonts-v1/FluidR3_GM.sf2';
|
||||||
const SOUNDFONT_SHA256 = '74594e8f4250680adf590507a306655a299935343583256f3b722c48a1bc1cb0';
|
const SOUNDFONT_SHA256 = '74594e8f4250680adf590507a306655a299935343583256f3b722c48a1bc1cb0';
|
||||||
const SOUNDFONT_EXPECTED_SIZE_MB = 142;
|
const SOUNDFONT_EXPECTED_SIZE_MB = 142;
|
||||||
|
|
||||||
|
|||||||
@@ -52,10 +52,10 @@ export type UpdateStatus =
|
|||||||
| { status: 'error'; channel: UpdateChannel; currentVersion: string | null; lastChecked: number | null; message: string };
|
| { status: 'error'; channel: UpdateChannel; currentVersion: string | null; lastChecked: number | null; message: string };
|
||||||
|
|
||||||
// Repo the Velopack feed lives in. Matches the existing electron-builder
|
// Repo the Velopack feed lives in. Matches the existing electron-builder
|
||||||
// release pipeline (got-feedback/feedback-desktop) — Velopack's GitHub
|
// release pipeline (got-feedback/feedBack-desktop) — Velopack's GitHub
|
||||||
// loader looks for `releases.<channel>.json` + `*-full.nupkg` / `*-delta.nupkg`
|
// loader looks for `releases.<channel>.json` + `*-full.nupkg` / `*-delta.nupkg`
|
||||||
// assets attached to releases here.
|
// assets attached to releases here.
|
||||||
const FEED_URL = 'https://github.com/got-feedback/feedback-desktop';
|
const FEED_URL = 'https://github.com/got-feedback/feedBack-desktop';
|
||||||
|
|
||||||
// Background poll cadence. Velopack downloads are cheap when there's nothing
|
// Background poll cadence. Velopack downloads are cheap when there's nothing
|
||||||
// new (HEAD on the channel manifest), so 4h is a reasonable trade-off
|
// new (HEAD on the channel manifest), so 4h is a reasonable trade-off
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<p id="update-status" class="text-xs text-slate-400 mt-3">Loading updater status…</p>
|
<p id="update-status" class="text-xs text-slate-400 mt-3">Loading updater status…</p>
|
||||||
<p id="update-linux-note" class="hidden text-xs text-amber-300 mt-2">
|
<p id="update-linux-note" class="hidden text-xs text-amber-300 mt-2">
|
||||||
Auto-update is not available on Linux —
|
Auto-update is not available on Linux —
|
||||||
<a id="update-releases-link" href="https://github.com/got-feedback/feedback-desktop/releases"
|
<a id="update-releases-link" href="https://github.com/got-feedback/feedBack-desktop/releases"
|
||||||
target="_blank" rel="noopener" class="underline hover:text-amber-200">download new versions from GitHub Releases</a>.
|
target="_blank" rel="noopener" class="underline hover:text-amber-200">download new versions from GitHub Releases</a>.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||