Skip to content
Closed
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
30 changes: 19 additions & 11 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ jobs:
release/*.dmg
release/*.zip
release/*.blockmap
release/latest-mac.yml
release/*-mac.yml
if-no-files-found: error

build-macos-arm64:
Expand Down Expand Up @@ -229,7 +229,7 @@ jobs:
release/*.dmg
release/*.zip
release/*.blockmap
release/latest-mac.yml
release/*-mac.yml
if-no-files-found: error

merge-macos-update-metadata:
Expand Down Expand Up @@ -260,17 +260,25 @@ jobs:
- name: Install PyYAML
run: python -m pip install pyyaml

- name: Merge latest-mac.yml
- name: Merge mac update metadata
shell: bash
run: |
set -euo pipefail
mkdir -p release-assets/merged
python <<'PY'
from pathlib import Path
import glob
import yaml

x64_info = yaml.safe_load(Path('release-assets/macos-x64/latest-mac.yml').read_text())
arm64_info = yaml.safe_load(Path('release-assets/macos-arm64/latest-mac.yml').read_text())
x64_files = glob.glob('release-assets/macos-x64/*-mac.yml')
arm64_files = glob.glob('release-assets/macos-arm64/*-mac.yml')
if not x64_files or not arm64_files:
raise SystemExit('Could not find macOS update metadata files.')
# Use the filename from x64 (e.g. latest-mac.yml or beta-mac.yml)
channel_filename = Path(x64_files[0]).name

x64_info = yaml.safe_load(Path(x64_files[0]).read_text())
arm64_info = yaml.safe_load(Path(arm64_files[0]).read_text())

merged_files = []
seen_urls = set()
Expand All @@ -292,7 +300,7 @@ jobs:
if not merged.get('releaseDate') and arm64_info.get('releaseDate'):
merged['releaseDate'] = arm64_info['releaseDate']

Path('release-assets/merged/latest-mac.yml').write_text(
Path(f'release-assets/merged/{channel_filename}').write_text(
yaml.safe_dump(merged, sort_keys=False)
)
PY
Expand Down Expand Up @@ -372,7 +380,7 @@ jobs:
path: |
release/*.exe
release/*.blockmap
release/latest*.yml
release/*.yml
if-no-files-found: error

build-linux-x64:
Expand Down Expand Up @@ -427,7 +435,7 @@ jobs:
path: |
release/*.AppImage
release/*.blockmap
release/latest-linux.yml
release/*-linux.yml
if-no-files-found: error

publish-release-assets:
Expand Down Expand Up @@ -484,13 +492,13 @@ jobs:
release-assets/macos-arm64/*.dmg
release-assets/macos-arm64/*.zip
release-assets/macos-arm64/*.blockmap
release-assets/macos-merged/latest-mac.yml
release-assets/macos-merged/*.yml
release-assets/windows-x64/*.exe
release-assets/windows-x64/*.blockmap
release-assets/windows-x64/latest*.yml
release-assets/windows-x64/*.yml
release-assets/linux-x64/*.AppImage
release-assets/linux-x64/*.blockmap
release-assets/linux-x64/latest-linux.yml
release-assets/linux-x64/*.yml
)

if [ ${#assets[@]} -eq 0 ]; then
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
"url": "https://github.com/webadderall/Recordly/issues"
},
"private": true,
"version": "1.1.23",
"version": "1.2.0-beta.1",
"type": "module",
"scripts": {
"dev": "vite",
Expand Down
90 changes: 1 addition & 89 deletions src/components/video-editor/SettingsPanel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import {
} from "@/components/ui/select";
import { Switch } from "@/components/ui/switch";
import { ToggleGroup, ToggleGroupItem } from "@/components/ui/toggle-group";
import { useTheme } from "@/contexts/ThemeContext";
import { getAssetPath, getRenderableAssetUrl, getWallpaperThumbnailUrl } from "@/lib/assetPath";
import type { ExtensionSettingField } from "@/lib/extensions";
import { extensionHost, type FrameInstance } from "@/lib/extensions";
Expand All @@ -28,7 +29,6 @@ import tahoeCursorUrl from "../../assets/cursors/Cursor=Default.svg";
import { useI18n, useScopedT } from "../../contexts/I18nContext";
import type { AppLocale } from "../../i18n/config";
import { SUPPORTED_LOCALES } from "../../i18n/config";
import { useTheme } from "@/contexts/ThemeContext";
import { AnnotationSettingsPanel } from "./AnnotationSettingsPanel";
import { loadEditorPreferences, saveEditorPreferences } from "./editorPreferences";
import { SliderControl } from "./SliderControl";
Expand All @@ -43,7 +43,6 @@ import type {
CursorStyle,
EditorEffectSection,
FigureData,
PlaybackSpeed,
WebcamOverlaySettings,
WebcamPositionPreset,
ZoomDepth,
Expand All @@ -69,7 +68,6 @@ import {
DEFAULT_WEBCAM_SHADOW,
DEFAULT_WEBCAM_SIZE,
DEFAULT_ZOOM_MOTION_BLUR,
SPEED_OPTIONS,
} from "./types";
import { fromCursorSwaySliderValue, toCursorSwaySliderValue } from "./videoPlayback/cursorSway";
import {
Expand Down Expand Up @@ -332,8 +330,6 @@ interface SettingsPanelProps {
selectedZoomMode?: ZoomMode | null;
onZoomModeChange?: (mode: ZoomMode) => void;
onZoomDelete?: (id: string) => void;
selectedTrimId?: string | null;
onTrimDelete?: (id: string) => void;
selectedClipId?: string | null;
selectedClipSpeed?: number | null;
selectedClipMuted?: boolean | null;
Expand Down Expand Up @@ -425,10 +421,6 @@ interface SettingsPanelProps {
onClearAutoCaptions?: () => void;
onDownloadWhisperSmallModel?: () => void;
onDeleteWhisperSmallModel?: () => void;
selectedSpeedId?: string | null;
selectedSpeedValue?: PlaybackSpeed | null;
onSpeedChange?: (speed: PlaybackSpeed) => void;
onSpeedDelete?: (id: string) => void;
}

const ZOOM_DEPTH_OPTIONS: Array<{ depth: ZoomDepth; label: string }> = [
Expand Down Expand Up @@ -687,8 +679,6 @@ export function SettingsPanel({
selectedZoomMode,
onZoomModeChange,
onZoomDelete,
selectedTrimId,
onTrimDelete,
selectedClipId,
selectedClipSpeed,
selectedClipMuted,
Expand Down Expand Up @@ -762,10 +752,6 @@ export function SettingsPanel({
onClearAutoCaptions,
onDownloadWhisperSmallModel,
onDeleteWhisperSmallModel,
selectedSpeedId,
selectedSpeedValue,
onSpeedChange,
onSpeedDelete,
}: SettingsPanelProps) {
const tSettings = useScopedT("settings");
const { locale, setLocale, t } = useI18n();
Expand Down Expand Up @@ -1216,12 +1202,6 @@ export function SettingsPanel({
</div>
);

const handleTrimDeleteClick = () => {
if (selectedTrimId && onTrimDelete) {
onTrimDelete(selectedTrimId);
}
};

const crop = cropRegion ?? {
x: 0,
y: 0,
Expand Down Expand Up @@ -2891,74 +2871,6 @@ export function SettingsPanel({
</motion.div>
</AnimatePresence>
</div>

<div
className={cn(
"flex-shrink-0 border-t border-foreground/10 bg-editor-header p-4 pt-3",
!selectedTrimId && !selectedSpeedId && "hidden",
)}
>
{selectedTrimId && (
<div className="mb-4">
<Button
onClick={handleTrimDeleteClick}
variant="destructive"
size="sm"
className="mt-2 h-8 w-full gap-2 border border-red-500/20 bg-red-500/10 text-xs text-red-400 transition-all hover:border-red-500/30 hover:bg-red-500/20"
>
<Trash2 className="h-3 w-3" />
{tSettings("trim.deleteRegion")}
</Button>
</div>
)}

{selectedSpeedId && (
<div>
<div className="mb-3 flex items-center justify-between">
<span className="text-sm font-medium text-foreground">
{tSettings("speed.playbackSpeed")}
</span>
{selectedSpeedValue && (
<span className="rounded-full bg-[#d97706]/10 px-2 py-0.5 text-[10px] font-medium uppercase tracking-wider text-[#d97706]">
{SPEED_OPTIONS.find((o) => o.speed === selectedSpeedValue)
?.label ?? `${selectedSpeedValue}×`}
</span>
)}
</div>
<div className="grid grid-cols-7 gap-1.5">
{SPEED_OPTIONS.map((option) => {
const isActive = selectedSpeedValue === option.speed;
return (
<Button
key={option.speed}
type="button"
onClick={() => onSpeedChange?.(option.speed)}
className={cn(
"h-auto w-full rounded-lg border px-1 py-2 text-center shadow-sm transition-all duration-200 ease-out cursor-pointer",
isActive
? "border-[#d97706] bg-[#d97706] text-white"
: "border-foreground/5 bg-foreground/5 text-muted-foreground hover:bg-foreground/10 hover:border-foreground/10 hover:text-foreground",
)}
>
<span className="text-xs font-semibold">
{option.label}
</span>
</Button>
);
})}
</div>
<Button
onClick={() => selectedSpeedId && onSpeedDelete?.(selectedSpeedId)}
variant="destructive"
size="sm"
className="mt-2 h-8 w-full gap-2 border border-red-500/20 bg-red-500/10 text-xs text-red-400 transition-all hover:border-red-500/30 hover:bg-red-500/20"
>
<Trash2 className="h-3 w-3" />
{tSettings("speed.deleteRegion")}
</Button>
</div>
)}
</div>
</div>
);
}
Loading