# bimp-persona
`bimp-persona` defines browser persona configuration and resolved fingerprint
values used by Bimp runtimes.
It turns a compact JSON configuration into concrete values for browser identity,
network headers, JavaScript-visible navigator fields, locale/timezone, screen
and window geometry, CSS feature detection, WebGL, canvas, DOMRect, fonts,
media devices, battery, storage, and automation policy.
## Example
```rust
use bimp_persona::{PersonaConfig, Viewport};
let persona = PersonaConfig {
locale: Some("en-US".to_string()),
timezone: Some("America/Los_Angeles".to_string()),
viewport: Viewport {
width: 1710,
height: 896,
device_scale_factor: 2,
},
..PersonaConfig::default()
}
.resolve();
assert_eq!(persona.js.language, "en-US");
assert_eq!(persona.geo.timezone, "America/Los_Angeles");
assert_eq!(persona.viewport.device_scale_factor, 2);
```
## Loading persona.json
By default, `PersonaConfig::load_default_json()` reads `persona.json` from the
current working directory. Set `BIMP_PERSONA_JSON` to use another path.
```json
{
"locale": "en-US",
"timezone": "America/Los_Angeles",
"viewport": { "width": 1710, "height": 896, "device_scale_factor": 2 },
"css": { "moz_prefix_enabled": false, "webkit_prefix_enabled": true }
}
```
## Stability
`PersonaSeed` provides deterministic seeds for profile-stable fingerprint
values. Use explicit seeds for reproducible personas, or derive them from stable
inputs such as profile paths.