# Changelog

All notable changes to Forji will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.6] - 2026-06-15

### Added

- Shorten the Pull Requests tab to PRs in repository detail (#59)
- Show the overview filter summary only when filters are active (#60)
- Compact notification rows (#55)
- Display and upload image attachments in issues, PRs, and comments

### Changed

- Add a CHANGELOG.md file

### Fixed

- Refresh the merged notifications list when a push notification is opened (#71)
- Render 3-digit shorthand label colors instead of falling back to gray
- Show graceful empty state when repository has issues turned off
- Show graceful empty state when repository has issues turned off
- De-duplicate involved-scope results across pages in single-instance overviews (#70)
- Show graceful empty state when repository has pull requests turned off (#77)
- Make issue/PR description editable in edit form (#80) (#81)
- Clearer login error for security-key (passkey) accounts (#82)

## [1.5] - 2026-06-04

### Added

- VoiceOver accessibility labels for icon-only buttons (#49).
- Tappable diff lines now act as buttons for VoiceOver (#61).
- `CONTRIBUTING.md` (#42).
- `just sim-update` command for updating the simulator.

### Changed

- Updated ForgejoKit dependency from 0.6.0 to 0.7.0 (via 0.6.1).
- Refactored error handling to use ForgejoKit error categories (#31).
- Fixed a typo in the README App Store line (#43).

### Removed

- Redundant notification "Dismiss" swipe action (#46).

### Fixed

- Crash in merged overviews when two accounts shared the same `sourceKey` (#39).
- Merged pagination now settles correctly and no longer shows duplicate rows (#47).
- Merged issue/PR overview now refreshes after a mutation (#56).
- App icon badge now updates in multi-instance mode (#58).
- Multi-instance fallback is now keyed by account (#29).
- Removing an account now deletes the API token, not just the password (#40).
- Instance removal is now persisted before deleting the keychain on logout (#48).
- Added a guard that prevents editing an account into a duplicate of an existing one.
- Token restore error context is now preserved (#30).
- Issue/PR detail now refreshes after a partial edit failure (#50).
- No longer opens a duplicate PR when the reviewer request fails (#53).
- Background notification poll no longer crashes on an invalid instance URL (#54).
- Messages that were not marked as read are now handled correctly.
