# TODO

Known gaps from initial implementation. Functional for daily use — these are enhancements.

## UI Gaps

- [ ] **TaxonomyView: Categories tab** — Tags tab exists, Categories tab missing. Mirror the Tags tab structure (IT/EN pair table, orphan detection) for `categories` frontmatter key. Files: `ui/taxonomy_view.py`, `core/taxonomy.py`.

- [ ] **MissingTranslationView: Traduci button** — `translate_requested(str)` signal declared but no button wired to it. Add a per-row "Traduci" button that emits the signal with the article slug, then handle it in `main_window.py` to open the translation view for that article.

## Settings

- [ ] **Font size spinner in UI** — `font_size` is in config but only editable via `~/.config/my-publisher/config.toml`. Add a `QSpinBox` to `SetupDialog` (or a dedicated Settings dialog) so it's changeable without editing the file. Save via `Config.save()`, re-apply with `app.setFont()`. File: `ui/setup_dialog.py`.

## Autocomplete

- [ ] **FrontmatterEditor: multi-token tag autocomplete** — `QCompleter` only completes the first token in the tags field. Need a custom completer that splits on commas, completes the current token, and re-joins. Consider subclassing `QCompleter` or intercepting `textEdited` to extract the active token. File: `ui/frontmatter_editor.py`.

## Drafts

- [ ] Add visible hints to quickly identify articles with `draft = true` in frontmatter. The hints can be added to the list view as well as the single view as a badge, color difference, etc.

## Transart backend availability

- [ ] Using the `OLLAMA_HOST` variable in transart.py, validate if the backend is available or disable the "translate" button. Maybe add a popup message reminding to activate the runpod for the translation engine to be available.