# fix\(popup\): preserve hidden preferences with escaped provider IDs \(\#500\) · lucenx/codexbar-plasma

[View on GitCafe](https://git.cafe/lucenx/codexbar-plasma/commit/5342cd7ce1387ec7fc79c7ac40e6aa8a7dc6d6cf)

Repository: [lucenx/codexbar-plasma](https://git.cafe/lucenx/codexbar-plasma)

Visibility: public

Requested revision: 5342cd7ce1387ec7fc79c7ac40e6aa8a7dc6d6cf

Requested commit: 5342cd7ce1387ec7fc79c7ac40e6aa8a7dc6d6cf

Commit: 5342cd7ce1387ec7fc79c7ac40e6aa8a7dc6d6cf

Tree: e30c4b86f54d6713c96c2ce3371853966366ad26

Author: Simone

Committer: GitHub

## Message

```
fix(popup): preserve hidden preferences with escaped provider IDs (#500)

* fix(popup): preserve hidden preferences with escaped provider IDs

The hidden-preference readers rejected JSON above 16384 UTF-16 code units even though 64 validated entries could serialize beyond that limit. Allow bounded 32768-unit input so saving another valid choice cannot clear the existing list.

Cover escaped provider IDs, exact reader bounds, and the production applet save/reparse/restore path. Update Unreleased, usage, and development guidance; TODO parity work and CLI contracts are unaffected.

* fix(popup): account for six-unit JSON escapes

The 32768-unit guard still dropped valid stored preferences when accepted 128-unit provider IDs used six-character Unicode escapes. Raise both bounded readers to 65536 units, above the validated worst-case row and section payloads.

Replay escaped high and low lone-surrogate IDs independently of the Qt serializer, verify native serialization too, and retain exact-boundary and over-limit checks. Update the development bound; Unreleased and usage guidance already cover the final behavior. TODO parity scope and CLI contracts remain unchanged.
```

## Parents

- [f3b3daef8d10c4679241b2aa19952154288f24ea](https://git.cafe/lucenx/codexbar-plasma/commit/f3b3daef8d10c4679241b2aa19952154288f24ea?format=markdown)

[Source at this commit](https://git.cafe/lucenx/codexbar-plasma/tree/5342cd7ce1387ec7fc79c7ac40e6aa8a7dc6d6cf?format=markdown)
