# Changelog — v0.4.3 → v0.4.5

## Features

- **Chat attachments** — image and text-file attachments via click, drag-and-drop, and paste; arbitrary file attachments via path references _([@pmos69](https://github.com/pmos69))_
- **Session deletion** — delete sessions from the Sessions screen _([@leedusty91-prog](https://github.com/leedusty91-prog), [@fathah](https://github.com/fathah))_
- **OpenAI Codex provider** — setup card for CLI/OAuth-based Codex plan (no API key required) _([@leejamesss](https://github.com/leejamesss))_
- **Models: provider auto-detect** — auto-detects provider from Base URL in Add/Edit dialog _([@andreab67](https://github.com/andreab67))_
- **Kanban in SSH tunnel mode** — Kanban board now works when connected via SSH tunnel _([@andreab67](https://github.com/andreab67))_
- **Office: remote Claw3D auto-detect** — detects and connects to remote Claw3D instance in SSH tunnel mode _([@andreab67](https://github.com/andreab67))_
- **Providers expanded** — added NVIDIA NIM, Gemini CLI, MiniMax OAuth, and more OpenAI-compatible endpoints _([@pmos69](https://github.com/pmos69))_
- **Settings: API key mask** — key mask sized to match the actual stored key length _([@pmos69](https://github.com/pmos69))_
- **i18n: European Portuguese (pt-PT)** — new locale with native-speaker review _([@pmos69](https://github.com/pmos69))_
- **i18n: Traditional Chinese (zh-TW)** — new locale _([@hansai-art](https://github.com/hansai-art))_
- **Persist interface locale** — language selection now survives app restarts _([@ASTairov](https://github.com/ASTairov))_

## Security

- **Remote API keys kept in main process** — keys no longer exposed to the renderer process _([@ASTairov](https://github.com/ASTairov))_

## Bug Fixes

### Chat & Models

- Remote mode URL doubling + local-spawn process leak _([@pmos69](https://github.com/pmos69))_
- Remote API key wiped when only the URL is edited _([@pmos69](https://github.com/pmos69))_
- URL normalization in health probe and API key lookup _([@pmos69](https://github.com/pmos69))_
- Stale `base_url` not cleared when switching named providers _([@pmos69](https://github.com/pmos69))_
- Stale `baseUrl` when selecting a named-provider model from the model picker _([@pmos69](https://github.com/pmos69))_
- Models: entries not reloading when tab becomes visible _([@pmos69](https://github.com/pmos69))_
- Models: intermediate/debounced writes to model library _([@pmos69](https://github.com/pmos69))_
- Models: Add/Remove/Update not routed through SSH in tunnel mode _([@andreab67](https://github.com/andreab67))_

### Install Gate & Providers

- OAuth-backed active profiles not recognized by install gate _([@pmos69](https://github.com/pmos69))_
- Install gate not recognizing all known providers in `.env` _([@pmos69](https://github.com/pmos69))_
- Providers: API keys not persisted on change (only on blur) _([@pmos69](https://github.com/pmos69))_

### Config

- Nested YAML paths not supported in `getConfigValue` _([@andreab67](https://github.com/andreab67))_
- Model fields reading/writing outside the `model:` block scope _([@pmos69](https://github.com/pmos69))_
- Dotted YAML paths in `getConfig` / `setConfig` _([@pmos69](https://github.com/pmos69))_
- Empty env var values rejected in `readEnv` _([@ytfh44](https://github.com/ytfh44))_
- SSH config helpers not supporting dotted YAML paths _([@pmos69](https://github.com/pmos69))_

### SSH & Gateway

- Tunnel state reset when ControlMaster takes over SSH process _([@arronLuo](https://github.com/arronLuo))_
- `sudo-wrapper` bypass missing for non-mutating commands (doctor/update/dump/version) _([@andreab67](https://github.com/andreab67))_
- Gateway: platform enabled state not detected from env vars on Windows _([@pmos69](https://github.com/pmos69))_
- Gateway: `EPERM` not treated as alive + Python image verification on Windows _([@pmos69](https://github.com/pmos69))_
- SSH tunnel multiplexing disabled for tunnel processes _([@andreab67](https://github.com/andreab67))_

### Installer & Windows

- `%LOCALAPPDATA%` not matched correctly on Windows _([@pmos69](https://github.com/pmos69))_
- Office stack start reliability on Windows _([@ASTairov](https://github.com/ASTairov))_

### Session & Database

- Session cache: `messageCount` stale for old sessions on sync _([@pmos69](https://github.com/pmos69))_
- `deleteSession` using a read-only DB connection (fixed to use writable) _([@ytfh44](https://github.com/ytfh44))_

### Other

- API auth not sent correctly for desktop chat in server mode _([@pmos69](https://github.com/pmos69))_
- Interface locale not persisted across restarts _([@ASTairov](https://github.com/ASTairov))_
