- Switch urllib to curl subprocess to bypass Cloudflare Error 1010
- Add _fetch_s3_json() for gzipped content from signed S3 URLs
- Fix list endpoint key: data_file_list (not data)
- Fix detail endpoint title field: file_name (not filename)
- Fix token key: support both token and accessToken in config
- Add _format_transcript() with speaker grouping
- plaud_get_transcript: fetch from content_list S3 URLs (transaction_polish → transaction)
- plaud_get_summary: fetch outline from S3
- plaud_get_notes: fetch all non-transcript content_list items from S3
- plaud_get_recording_detail: derive has_transcript from content_types list