<?xml version="1.0" encoding="UTF-8"?>
## 2026.11.06.01
- Publish to Factory: the editor is now available via the Community Applications plugin index.
<VERSION version="2026.11.06.01" date="2026-11-06">
<CHANGE>Publish to Factory: the editor is now available via the Community Applications plugin index.</CHANGE>
</VERSION>
<VERSION version="2026.07.11.11" date="2026-07-11">
<CHANGE>Fix: the standalone editor tab closes correctly when opened as a full-page tab.</CHANGE>
</VERSION>
<VERSION version="2026.07.11.10" date="2026-07-11">
<CHANGE>Feature: open the editor in a separate full-page tab instead of overlaying the Browse view.</CHANGE>
</VERSION>
<VERSION version="2026.07.11.09" date="2026-07-11">
<CHANGE>Fix: code editors fill the modal to the right edge instead of collapsing on narrow screens.</CHANGE>
</VERSION>
<VERSION version="2026.07.11.08" date="2026-07-11">
<CHANGE>Fix: non-preview languages render in a dedicated full-width workspace rather than stacking.</CHANGE>
</VERSION>
<VERSION version="2026.07.11.07" date="2026-07-11">
<CHANGE>Fix: the full-width code editor layout stabilises at larger screen widths.</CHANGE>
</VERSION>
<VERSION version="2026.07.11.06" date="2026-07-11">
<CHANGE>Feature: syntax highlighting through the full CodeMirror language catalog instead of a hand-picked set of extensions.</CHANGE>
</VERSION>
<VERSION version="2026.07.11.05" date="2026-07-11">
<CHANGE>First public release: adds Markdown and HTML source editing with live previews to Shares > Browse.</CHANGE>
</VERSION>
<VERSION version="2026.07.11.04" date="2026-07-11">
<CHANGE>Removes the redundant top-bar editor icon while retaining the global Browse integration.</CHANGE>
</VERSION>
<VERSION version="2026.07.11.03" date="2026-07-11">
<CHANGE>Adds a distraction-free full-page mode for Markdown and HTML editing and preview.</CHANGE>
</VERSION>
<VERSION version="2026.07.11.02" date="2026-07-11">
<CHANGE>Enables JavaScript in HTML previews while retaining opaque-origin sandbox isolation.</CHANGE>
</VERSION>
<VERSION version="2026.07.11.01" date="2026-07-11">
<CHANGE>Adds HTML and HTM source editing with a sandboxed live preview.</CHANGE>
<CHANGE>Uses CodeMirror HTML language support with edit, split, and preview modes.</CHANGE>
</VERSION>
<VERSION version="2026.07.10.01" date="2026-07-10">
<CHANGE>Initial Markdown editor extension for the built-in Unraid Shares file browser.</CHANGE>
<CHANGE>Adds a React and CodeMirror editor with split preview, CSRF validation, path allowlisting, and atomic saves.</CHANGE>
</VERSION>
https://raw.githubusercontent.com/johnpwhite/unraid-plg-file_editor_extentions/main/src.tar.gz
a19bd810abede340d72182044ca08b06dbd0b769d966880588b9cabf894f8c58
#!/bin/bash
set -e
NAME="unraid-file-editor-extensions"
VERSION="2026.11.06.01"
EMHTTP_DEST="/usr/local/emhttp/plugins/unraid-file-editor-extensions"
CONFIG_DIR="/boot/config/plugins/unraid-file-editor-extensions"
LOCAL_SRC="$CONFIG_DIR"
ARCHIVE="$LOCAL_SRC/src-$VERSION.tar.gz"
SRC_TAR="$ARCHIVE"
LOG_FILE="$CONFIG_DIR/install.log"
exec 4>&1
exec 3>&1
get_ts() { date '+%Y-%m-%d %H:%M:%S'; }
log_status() {
echo "$1" >&4 2>/dev/null || true
echo "[$(get_ts)] [FileEditorExtensions] $1" >> "$LOG_FILE" 2>/dev/null || true
}
log_progress() {
echo "PROGRESS: $1" >&3 2>/dev/null || true
}
mkdir -p "$CONFIG_DIR" "$EMHTTP_DEST"
echo "[$(get_ts)] [FileEditorExtensions] Installing v$VERSION" > "$LOG_FILE"
log_progress "10% [[Preparing install directories]]"
rm -rf "$EMHTTP_DEST/src" "$EMHTTP_DEST/assets"
mkdir -p "$EMHTTP_DEST"
log_progress "35% [[Extracting plugin payload]]"
if [ ! -s "$SRC_TAR" ]; then
log_status "Payload archive missing: $ARCHIVE"
exit 1
fi
tar -xzf "$SRC_TAR" -C "$EMHTTP_DEST"
log_progress "65% [[Installing web entry points]]"
cp "$EMHTTP_DEST/src/FileEditorExtensions.page" "$EMHTTP_DEST/FileEditorExtensions.page"
cp "$EMHTTP_DEST/src/FileEditorExtensions.php" "$EMHTTP_DEST/FileEditorExtensions.php"
cp "$EMHTTP_DEST/src/README.md" "$EMHTTP_DEST/README.md"
cp -R "$EMHTTP_DEST/src/assets" "$EMHTTP_DEST/assets"
log_progress "80% [[Registering editable extensions]]"
if [ -f /boot/config/editor.cfg ]; then
grep -qxF md /boot/config/editor.cfg || echo md >> /boot/config/editor.cfg
grep -qxF markdown /boot/config/editor.cfg || echo markdown >> /boot/config/editor.cfg
grep -qxF html /boot/config/editor.cfg || echo html >> /boot/config/editor.cfg
grep -qxF htm /boot/config/editor.cfg || echo htm >> /boot/config/editor.cfg
fi
log_progress "90% [[Setting permissions]]"
find "$EMHTTP_DEST" -type d -exec chmod 0755 {} +
find "$EMHTTP_DEST" -type f -exec chmod 0644 {} +
find "$EMHTTP_DEST/src/scripts" -type f -name "*.sh" -exec chmod 0755 {} + 2>/dev/null || true
# Clean up old versioned source archives
find "$LOCAL_SRC" -maxdepth 1 -name "src-*.tar.gz" ! -name "src-$VERSION.tar.gz" -delete 2>/dev/null || true
log_status "Installed $NAME v$VERSION"
log_progress "100% [[File Editor Extensions installed]]"
#!/bin/bash
set -e
NAME="unraid-file-editor-extensions"
EMHTTP_DEST="/usr/local/emhttp/plugins/unraid-file-editor-extensions"
CONFIG_DIR="/boot/config/plugins/unraid-file-editor-extensions"
LOG_FILE="$CONFIG_DIR/uninstall.log"
mkdir -p "$CONFIG_DIR"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [FileEditorExtensions] Uninstalling $NAME" > "$LOG_FILE"
rm -rf "$EMHTTP_DEST"
rm -rf "$LOCAL_SRC"/src-*.tar.gz 2>/dev/null || true
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [FileEditorExtensions] Runtime files removed; config preserved at $CONFIG_DIR" >> "$LOG_FILE"