getPythonSyncPath() only searched __dirname-relative paths which don't
resolve correctly from the compiled binary. Added process.execPath-
relative candidates so it finds <pkg>/python from <pkg>/bin/tfcode.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The postinstall.mjs early-returned when the binary was already present,
skipping the app/ directory copy from the platform package entirely.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The web command crashed because postinstall scripts never copied the
app/dist directory from the platform package. Added copyAppDir() to
both postinstall scripts, multi-path resolution in findAppDir() and
server static serving, and updated branding to use local favicon.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Direct instruction in tool description: 'Do NOT ask for api_key, workspace_id, or region. These are automatically loaded from ~/.tfcode/credentials.json.'
- Remove api_key, workspace_id, region from required parameters
- Add note to tool description that credentials auto-load
- Add logging for credential auto-fill debugging
When api_key and workspace_id are not provided, ToothFairy MCP tools now
default to credentials stored in ~/.tfcode/credentials.json (from tfcode validate).