Skip to content

Local API for File Transcription and Backlog Management#179

Open
LagaV wants to merge 7 commits intoaltic-dev:mainfrom
LagaV:feature/local-api-clean
Open

Local API for File Transcription and Backlog Management#179
LagaV wants to merge 7 commits intoaltic-dev:mainfrom
LagaV:feature/local-api-clean

Conversation

@LagaV
Copy link

@LagaV LagaV commented Feb 21, 2026

Description

Complete Local API implementation with HTTP endpoints for automating file transcriptions and backlog management. Includes security features, VTT export, and comprehensive backlog UI.

Type of Change

  • 🐞 Bug fix (non-breaking change which fixes an issue)
  • ✨ New feature (non-breaking change which adds functionality)
  • 💥 Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • 📝 Documentation update

Related Issues

Closes #141

Testing

  • Tested on Apple Silicon Mac
  • Tested on macOS 14.0+ (Sonoma)
  • Ran linter locally: swiftlint --strict --config .swiftlint.yml
  • Ran formatter locally: swiftformat --config .swiftformat Sources

Features Included

Local API

  • HTTP Server: Local API server for automation
  • File Transcription: POST /transcribe endpoint for file uploads
  • Model Management: GET /models endpoint to list available models
  • Status Checking: GET /jobs/:id for transcription job status
  • Result Retrieval: GET /jobs/:id/result for completed transcriptions

Security

  • Localhost binding: API only accessible from local machine
  • Custom port: Configurable port (default: 9877)
  • No authentication required for local-only access

Backlog Management

  • Backlog UI: View and manage all transcription jobs
  • Job Status: Track pending, processing, completed, and failed jobs
  • Clear Options: Clear completed, failed, or all jobs
  • VTT Export: Export transcriptions as WebVTT subtitles

Technical Implementation

  • APIService: Core HTTP server with Swifter framework
  • BacklogManager: Job queue management and processing
  • Persistent storage: Jobs saved across app restarts
  • File logger integration: Debug logging for troubleshooting

Files Changed

  • New Files:

    • Sources/Fluid/Services/APIService.swift - HTTP server implementation
    • Sources/Fluid/Services/BacklogManager.swift - Job queue management
  • Modified Files:

    • ContentView.swift - Added backlog UI integration
    • SettingsStore.swift - API settings (port, enable/disable)
    • SettingsView.swift - API configuration UI
    • AppDelegate.swift - API server initialization
    • FileLogger.swift - Enhanced logging with print statement
    • Package.swift - Added Swifter dependency
    • Info.plist - Version bump to 1.6.0

Co-Authored-By: Warp agent@warp.dev

LagaV and others added 6 commits February 21, 2026 19:59
- Added 'id' support to /status, /result, and /backlog endpoints in APIService.swift
- Fixed bug in BacklogManager.swift where remote URLs were transcribed directly instead of local temp files
- Added HTTP status code validation to BacklogManager downloads
- Added com.apple.security.temporary-exception.files.absolute-path.read-only entitlement to fix error -54
- Updated API documentation
- Added integration test testAPIService_idBasedOperations
- Locked APIService to 127.0.0.1 (IPv4) to prevent external access
- Added 'APIPort' setting (default 7086) to SettingsStore
- Added 'Port' configuration field to SettingsView
- Updated API documentation with security details and port info
- Updated GET /models in APIService.swift to filter returned list by SettingsStore.SpeechModel.availableModels.filter { $0.isInstalled }
- Updated Documentation/API.md to reflect that only downloaded models are returned
Co-Authored-By: Warp <agent@warp.dev>
@LagaV LagaV changed the title Release v1.6.0: Local API for File Transcription and Backlog Management Local API for File Transcription and Backlog Management Feb 21, 2026
- Enhanced APIService with improved functionality
- Updated BacklogManager for API integration
- Refreshed API documentation
- Updated package dependencies

Co-Authored-By: Warp <agent@warp.dev>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant