Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,18 @@
# Changelog
## v0.12.8 - 2026-04-28
### 🐞 Fixes
- [Patch] Updated script to follow engine dependency tag version (761dc47…)
- [Patch] make app bundle script copy 'usdz-untold' script (0df0207…)
- [Patch] added support to export tile scenes (943c3e8…)
- [Patch] Added support for astc and lz4 optimization. (8a403a3…)
- [Patch] Added post fx preset to Effects View (7beb4ff…)
## v0.12.8 - 2026-04-28
### 🐞 Fixes
- [Patch] Updated script to follow engine dependency tag version (761dc47…)
- [Patch] make app bundle script copy 'usdz-untold' script (0df0207…)
- [Patch] added support to export tile scenes (943c3e8…)
- [Patch] Added support for astc and lz4 optimization. (8a403a3…)
- [Patch] Added post fx preset to Effects View (7beb4ff…)
## v0.12.7 - 2026-04-25
### 🐞 Fixes
- [Patch] AssetBrowserView now accepts untold files (f972fa2…)
Expand Down
2 changes: 1 addition & 1 deletion Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ let package = Package(
// Use a branch during active development:
// .package(url: "https://github.com/untoldengine/UntoldEngine.git", branch: "develop"),
// Or pin to a release:
.package(url: "https://github.com/untoldengine/UntoldEngine.git", exact: "0.12.7"),
.package(url: "https://github.com/untoldengine/UntoldEngine.git", exact: "0.12.8"),
],
targets: [
.executableTarget(
Expand Down
529 changes: 510 additions & 19 deletions Sources/UntoldEditor/Editor/AssetBrowserView.swift

Large diffs are not rendered by default.

39 changes: 39 additions & 0 deletions Sources/UntoldEditor/Editor/EnvironmentView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,30 @@ struct SSAOEditorView: View {
}

struct PostProcessingEditorView: View {
private enum PresetOption: String, CaseIterable, Identifiable {
case neutral = "Neutral"
case cinematic = "Cinematic"
case highContrast = "High Contrast"
case softAO = "Soft AO"
case archviz = "Archviz"

var id: String {
rawValue
}

var enginePreset: PostFXPreset {
switch self {
case .neutral: return .neutral
case .cinematic: return .cinematic
case .highContrast: return .highContrast
case .softAO: return .softAO
case .archviz: return .archviz
}
}
}

@State private var showPresets = true
@State private var selectedPreset: PresetOption = .neutral
@State private var showToneMapping = false
@State private var showWhiteBalance = false
@State private var showColorGrading = false
Expand All @@ -340,6 +364,21 @@ struct PostProcessingEditorView: View {
var body: some View {
ScrollView {
VStack(alignment: .leading, spacing: 16) {
DisclosureGroup("Presets", isExpanded: $showPresets) {
VStack(alignment: .leading, spacing: 8) {
Picker("Preset", selection: $selectedPreset) {
ForEach(PresetOption.allCases) { preset in
Text(preset.rawValue).tag(preset)
}
}
.pickerStyle(.menu)
.onChange(of: selectedPreset) { _, newValue in
PostFX.apply(newValue.enginePreset)
}
}
.padding()
}

DisclosureGroup("Depth of Field", isExpanded: $showDoF) {
DepthOfFieldEditorView()
}
Expand Down
2 changes: 1 addition & 1 deletion Sources/UntoldEditor/Editor/ToolbarView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
struct ToolbarView: View {
@ObservedObject var selectionManager: SelectionManager
@ObservedObject var editorBasePath = EditorAssetBasePath.shared
private let editorVersionLabel = "v0.12.7"
private let editorVersionLabel = "v0.12.8"

var onSave: () -> Void
var onSaveAs: () -> Void
Expand Down
4 changes: 2 additions & 2 deletions Sources/UntoldEditor/main.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
var window: NSWindow!

func applicationDidFinishLaunching(_: Notification) {
Logger.log(message: "Launching Untold Engine Editor v0.12.7")
Logger.log(message: "Launching Untold Engine Editor v0.12.8")

// Step 1. Create and configure the window
window = NSWindow(
Expand All @@ -27,7 +27,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
defer: false
)

window.title = "Untold Engine Editor v0.12.7"
window.title = "Untold Engine Editor v0.12.8"
window.center()

let hostingView = NSHostingView(rootView: EditorView())
Expand Down
14 changes: 14 additions & 0 deletions create_app_bundle.sh
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,20 @@ if [ -f "Resources/AppIcon.icns" ]; then
cp "Resources/AppIcon.icns" "$APP_BUNDLE/Contents/Resources/"
fi

# Copy exporter scripts
SCRIPTS_SRC=".build/checkouts/UntoldEngine/scripts"
if [ -d "$SCRIPTS_SRC" ]; then
echo "📜 Copying exporter scripts..."
mkdir -p "$APP_BUNDLE/Contents/Resources/scripts"
cp "$SCRIPTS_SRC/export-untold" "$APP_BUNDLE/Contents/Resources/scripts/"
cp "$SCRIPTS_SRC/export-untold-tiles" "$APP_BUNDLE/Contents/Resources/scripts/"
cp "$SCRIPTS_SRC/texbake.py" "$APP_BUNDLE/Contents/Resources/scripts/"
chmod +x "$APP_BUNDLE/Contents/Resources/scripts/export-untold"
chmod +x "$APP_BUNDLE/Contents/Resources/scripts/export-untold-tiles"
else
echo "⚠️ Warning: Exporter scripts not found at $SCRIPTS_SRC — run 'swift build' first to populate checkouts"
fi

# Create Info.plist
echo "📝 Creating Info.plist..."

Expand Down
116 changes: 41 additions & 75 deletions scripts/next-version.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,38 +4,29 @@
# next-version.sh
# -------------------------------------------------------------
# Description:
# Determines the next semantic version of the Untold Engine
# by comparing the current base ref (release/x.y.z branch or vX.Y.Z tag)
# against the latest commits in develop.
# Determines the current version of the Untold Editor by
# reading the UntoldEngine dependency pin in Package.swift.
#
# The script scans commit messages between the release branch
# and develop for keywords that indicate the bump level:
# [API Change] → major
# [Feature] → minor
# [Patch]/[Bugfix] → patch
#
# It then prints the next version number (e.g. 0.3.1),
# optionally prefixed with "v" if the --with-v flag is used.
# The editor version always mirrors the engine version, so
# no commit-log scanning or bump calculation is needed.
#
# Optional Flags:
# --with-v : Print version with 'v' prefix (e.g. v0.3.1)
# --cliff : Run git-cliff to prepend a changelog section
# for the new version based on recent commits
# --with-v : Print version with 'v' prefix (e.g. v0.12.7)
# --cliff : Run git-cliff to prepend a changelog section,
# then update version strings in main.swift and ToolbarView.swift
# --docs : Run Docusaurus docs:version command to
# snapshot documentation for the new release
#
# Usage Examples:
# ./scripts/next-version.sh # auto-picks latest vX.Y.Z tag from develop
# ./scripts/next-version.sh # prints current engine-pinned version
# ./scripts/next-version.sh --with-v
# ./scripts/next-version.sh release/0.3.0 --cliff
# ./scripts/next-version.sh v0.3.0 --cliff --docs
# ./scripts/next-version.sh --cliff
# ./scripts/next-version.sh --cliff --docs
#
# Notes:
# - Must be executed from the repository root.
# - Base ref can be a release/x.y.z branch or vX.Y.Z tag.
# - Designed to simplify the Untold Engine release flow by
# automating version calculation, changelog generation, and
# docs versioning in a single step.
# - Requires Package.swift to pin UntoldEngine with exact: "x.y.z".
# - To change the editor version, update the engine pin in Package.swift first.
#
# -------------------------------------------------------------

Expand All @@ -44,79 +35,54 @@ set -euo pipefail
WITH_V="false"
DO_CLIFF="false"
DO_DOCS="false"
BASE_REF=""

for arg in "$@"; do
case "$arg" in
--with-v) WITH_V="true" ;;
--cliff) DO_CLIFF="true" ;;
--docs) DO_DOCS="true" ;;
release/*) BASE_REF="$arg" ;;
v[0-9]*|[0-9]*.[0-9]*.[0-9]*) BASE_REF="$arg" ;; # allow tags like v0.3.0 or 0.3.0
*) echo "Unknown argument: $arg" >&2; exit 2 ;;
esac
done

# Auto-pick latest reachable tag (vX.Y.Z) from develop if none provided
if [[ -z "${BASE_REF}" ]]; then
BASE_REF="$(git describe --tags --match 'v[0-9]*' --abbrev=0 develop 2>/dev/null || true)"
fi
[[ -n "${BASE_REF}" ]] || { echo "No base ref found. Pass a release branch (release/x.y.z) or tag (vX.Y.Z)." >&2; exit 1; }

# Parse base version from branch or tag name
if [[ "${BASE_REF}" =~ ^release/([0-9]+)\.([0-9]+)\.([0-9]+)$ ]]; then
BASE_MAJOR="${BASH_REMATCH[1]}"
BASE_MINOR="${BASH_REMATCH[2]}"
BASE_PATCH="${BASH_REMATCH[3]}"
elif [[ "${BASE_REF}" =~ ^v?([0-9]+)\.([0-9]+)\.([0-9]+)$ ]]; then
BASE_MAJOR="${BASH_REMATCH[1]}"
BASE_MINOR="${BASH_REMATCH[2]}"
BASE_PATCH="${BASH_REMATCH[3]}"
else
echo "Base ref must look like release/x.y.z or vX.Y.Z (got: ${BASE_REF})" >&2
# Read version from UntoldEngine dependency pin in Package.swift
NEXT="$(grep -oE 'exact: "[0-9]+\.[0-9]+\.[0-9]+"' Package.swift | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1)"
[[ -n "${NEXT}" ]] || {
echo "Could not read engine version from Package.swift." >&2
echo "Make sure UntoldEngine is pinned with: exact: \"x.y.z\"" >&2
exit 1
fi

# Ensure develop exists locally
git rev-parse --verify develop >/dev/null 2>&1 || { echo "Local branch 'develop' not found." >&2; exit 1; }
}

# Collect commit messages BASE..develop (local)
LOG="$(git log --pretty=%B "${BASE_REF}..develop" || true)"

# Highest bump wins
if echo "$LOG" | grep -q "\[API Change\]"; then
LEVEL="major"
elif echo "$LOG" | grep -q "\[Feature\]"; then
LEVEL="minor"
elif echo "$LOG" | grep -q "\[Patch\]"; then
LEVEL="patch"
elif echo "$LOG" | grep -q "\[Bugfix\]"; then
LEVEL="patch"
else
LEVEL="patch"
fi

# Compute NEXT from BASE + bump
case "$LEVEL" in
major) NEXT="$((BASE_MAJOR+1)).0.0" ;;
minor) NEXT="${BASE_MAJOR}.$((BASE_MINOR+1)).0" ;;
patch) NEXT="${BASE_MAJOR}.${BASE_MINOR}.$((BASE_PATCH+1))" ;;
*) echo "Unknown bump level: $LEVEL" >&2; exit 1 ;;
esac

# Print next version (default behavior)
# Print version (default behavior)
if [[ "${WITH_V}" == "true" ]]; then
echo "v${NEXT}"
else
echo "${NEXT}"
fi

# Optionally run git-cliff to prepend changelog for BASE..HEAD
# Optionally run git-cliff to prepend changelog for <last-tag>..HEAD
if [[ "${DO_CLIFF}" == "true" ]]; then
command -v git-cliff >/dev/null 2>&1 || { echo "git-cliff not found. Install it first." >&2; exit 1; }
TAG="v${NEXT}"
RANGE="${BASE_REF}..HEAD"
BASE_REF="$(git describe --tags --match 'v[0-9]*' --abbrev=0 HEAD 2>/dev/null || true)"
if [[ -n "${BASE_REF}" ]]; then
RANGE="${BASE_REF}..HEAD"
else
RANGE="HEAD"
fi
git cliff "${RANGE}" --tag "${TAG}" --prepend CHANGELOG.md

# Update version strings in main.swift
sed -i '' 's/Logger\.log(message: "Launching Untold Engine Editor v[^"]*")/Logger.log(message: "Launching Untold Engine Editor v'"${NEXT}"'")/' \
Sources/UntoldEditor/main.swift
sed -i '' 's/window\.title = "Untold Engine Editor v[^"]*"/window.title = "Untold Engine Editor v'"${NEXT}"'"/' \
Sources/UntoldEditor/main.swift
echo "Updated version to ${NEXT} in UntoldEditor/main.swift."

# Update editorVersionLabel in ToolbarView.swift
sed -i '' 's/private let editorVersionLabel = "v[^"]*"/private let editorVersionLabel = "v'"${NEXT}"'"/' \
Sources/UntoldEditor/Editor/ToolbarView.swift
echo "Updated editorVersionLabel to v${NEXT} in ToolbarView.swift."
fi

# Optionally run Docusaurus docs:version
Expand All @@ -125,15 +91,15 @@ if [[ "${DO_DOCS}" == "true" ]]; then

DOCS_DIR="website"
if [[ -d "${DOCS_DIR}" && -f "${DOCS_DIR}/package.json" ]]; then
echo "🧭 Running Docusaurus versioning for ${NEXT} (in ${DOCS_DIR})..."
echo "Running Docusaurus versioning for ${NEXT} (in ${DOCS_DIR})..."
(
cd "${DOCS_DIR}"
npm run docusaurus docs:version "${NEXT}"
)
else
echo "🧭 Running Docusaurus versioning for ${NEXT} (current directory)..."
echo "Running Docusaurus versioning for ${NEXT} (current directory)..."
npm run docusaurus docs:version "${NEXT}"
fi

echo "Docusaurus version ${NEXT} created."
echo "Docusaurus version ${NEXT} created."
fi
Loading