refactor(lib,playback,whatsNew): home waveform→lib, timeline utils→playback, releaseNotes+changelog→whatsNew

This commit is contained in:
Psychotoxical
2026-06-30 20:26:34 +02:00
parent 695462ed87
commit aea8b7750b
37 changed files with 52 additions and 52 deletions
@@ -88,7 +88,7 @@ import {
getSeekTargetSetAt,
} from '@/features/playback/store/seekTargetState';
import { refreshWaveformForTrack } from '@/features/playback/store/waveformRefresh';
import { analyzeBoundary, computeWaveformSilence } from '@/utils/waveform/waveformSilence';
import { analyzeBoundary, computeWaveformSilence } from '@/lib/waveform/waveformSilence';
import { autodjMaxOverlapCapSec } from '@/utils/playback/autodjOverlapCap';
import {
autodjJsTriggerAtSec,
@@ -1,7 +1,7 @@
import { invoke } from '@tauri-apps/api/core';
import { useAuthStore } from '@/store/authStore';
import { autodjMaxOverlapCapSec } from '@/utils/playback/autodjOverlapCap';
import { computeWaveformSilence, planCrossfadeTransition } from '@/utils/waveform/waveformSilence';
import { computeWaveformSilence, planCrossfadeTransition } from '@/lib/waveform/waveformSilence';
import { findLocalPlaybackUrl } from '@/store/localPlaybackResolve';
import { playbackCacheKeyForRef } from '@/features/playback/utils/playback/playbackServer';
import { resolvePlaybackUrl } from '@/features/playback/utils/playback/resolvePlaybackUrl';
@@ -10,9 +10,9 @@
* Kept out of the persisted Zustand store on purpose: this is ephemeral,
* per-transition playback data, not user state.
*/
import type { CrossfadeTransitionPlan } from '@/utils/waveform/waveformSilence';
import type { CrossfadeTransitionPlan } from '@/lib/waveform/waveformSilence';
export type { CrossfadeTransitionPlan } from '@/utils/waveform/waveformSilence';
export type { CrossfadeTransitionPlan } from '@/lib/waveform/waveformSilence';
/** trackId → planned transition for when this track starts under crossfade. */
const planByTrackId = new Map<string, CrossfadeTransitionPlan>();
@@ -8,7 +8,7 @@ import {
computeAutodjManualBlendPlan,
shouldAutodjInterruptBlend,
} from '@/features/playback/utils/playback/autodjManualBlend';
import type { CrossfadeTransitionPlan } from '@/utils/waveform/waveformSilence';
import type { CrossfadeTransitionPlan } from '@/lib/waveform/waveformSilence';
import {
armInterruptHandoff,
clearInterruptHandoff,
@@ -16,7 +16,7 @@ import {
shouldDeferInterruptHandoffUi,
} from '@/features/playback/utils/playback/autodjInterruptPrep';
import { isCrossfadeNextReady } from '@/features/playback/store/crossfadePreload';
import { STANDARD_BLEND_SEC } from '@/utils/waveform/waveformSilence';
import { STANDARD_BLEND_SEC } from '@/lib/waveform/waveformSilence';
import { armAutodjMixing, clearAutodjTransitionUi } from '@/features/playback/store/autodjTransitionUi';
import {
bindQueueServerForTracks,
@@ -22,7 +22,7 @@ const hoisted = vi.hoisted(() => ({
}));
vi.mock('@tauri-apps/api/core', () => ({ invoke: hoisted.invokeMock }));
vi.mock('@/utils/waveform/waveformParse', () => ({ coerceWaveformBins: hoisted.coerceWaveformBinsMock }));
vi.mock('@/lib/waveform/waveformParse', () => ({ coerceWaveformBins: hoisted.coerceWaveformBinsMock }));
vi.mock('@/features/playback/store/playerStore', () => ({
usePlayerStore: {
getState: () => hoisted.playerSnapshot,
@@ -1,5 +1,5 @@
import { invoke } from '@tauri-apps/api/core';
import { coerceWaveformBins } from '@/utils/waveform/waveformParse';
import { coerceWaveformBins } from '@/lib/waveform/waveformParse';
import { getPlaybackIndexKey } from '@/features/playback/utils/playback/playbackServer';
import { usePlayerStore } from '@/features/playback/store/playerStore';
import { getWaveformRefreshGen } from '@/features/playback/store/waveformRefreshGen';