Skip to content
Rymflux Documentation
Esc
navigateopen⌘Jpreview
On this page

Tauri command surface

Tauri command surface

All commands are Rust #[tauri::command] functions. The frontend calls them via invoke().

Playback

play_track(source: PlaySource): Promise<void>
pause(): Promise<void>
resume(): Promise<void>
seek(position_secs: number): Promise<void>         // float, seconds from start
set_volume(level: number): Promise<void>            // 0.0–1.0
stop(): Promise<void>
advance_queue(): Promise<void>                      // skip to next track
get_playback_state(): Promise<PlaybackState>
interface PlaySource {
  plugin_id: string;
  content_id: string;
  metadata: TrackStub;    // pass metadata so engine can emit track_changed immediately
                          // without waiting for plugin round-trip
}

The engine resolves the stream URL via Plugin Runtime internally. The frontend never passes a raw URL directly.

Queue

queue_add(item: TrackStub, position?: number): Promise<void>
queue_remove(index: number): Promise<void>
queue_reorder(from: number, to: number): Promise<void>
queue_clear(): Promise<void>
queue_get(): Promise<QueueState>

Library

library_save_track(track: TrackStub, plugin_id: string, content_id: string): Promise<Track>
library_remove_track(id: string): Promise<void>
library_get_track(id: string): Promise<Track | null>
library_list_tracks(offset: number, limit: number): Promise<Track[]>
library_search(query: string): Promise<Track[]>

playlist_create(name: string, description?: string): Promise<Playlist>
playlist_delete(id: string): Promise<void>
playlist_add_track(playlist_id: string, track_id: string): Promise<void>
playlist_remove_track(playlist_id: string, track_id: string): Promise<void>
playlist_reorder(playlist_id: string, track_ids: string[]): Promise<void>
playlist_get(id: string): Promise<Playlist>
playlist_list(): Promise<Playlist[]>

history_get(limit: number): Promise<Track[]>
history_clear(): Promise<void>

favorites_add(track_id: string): Promise<void>
favorites_remove(track_id: string): Promise<void>
favorites_list(): Promise<Track[]>
start_search(query: string): Promise<string>       // returns query_id
cancel_search(): Promise<void>
set_search_config(config: SearchConfig): Promise<void>

Plugin management

get_plugins(): Promise<PluginInfo[]>
get_plugin_logs(plugin_id: string): Promise<string>   // last N lines

No enable/disable commands in v1 — no plugin settings UI (see ADR-007).

References

  • FR-CORE-1 (playback), FR-CORE-2 (queue), FR-CORE-3 (library), FR-CORE-4 (search)
  • ADR-007 (search manager), ADR-010 (queue management)

Was this page helpful?