[{"data":1,"prerenderedAt":1162},["ShallowReactive",2],{"navigation":3,"\u002Fchangelog":116,"\u002Fchangelog-surround":1159},[4,27,61,82,112],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":26},"Getting started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,14,18,22],{"title":11,"path":12,"stem":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":15,"path":16,"stem":17},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":19,"path":20,"stem":21},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start",{"title":23,"path":24,"stem":25},"Development","\u002Fgetting-started\u002Fdevelopment","1.getting-started\u002F4.development",false,{"title":28,"icon":29,"path":30,"stem":31,"children":32,"page":26},"Guides","i-lucide-book-open","\u002Fguides","2.guides",[33,37,41,45,49,53,57],{"title":34,"path":35,"stem":36},"Sessions and store","\u002Fguides\u002Fsessions","2.guides\u002F1.sessions",{"title":38,"path":39,"stem":40},"Vault and procedures","\u002Fguides\u002Fvault","2.guides\u002F2.vault",{"title":42,"path":43,"stem":44},"Password accounts","\u002Fguides\u002Fpasswords","2.guides\u002F3.passwords",{"title":46,"path":47,"stem":48},"Rust backend","\u002Fguides\u002Frust","2.guides\u002F4.rust",{"title":50,"path":51,"stem":52},"Security notes","\u002Fguides\u002Fsecurity","2.guides\u002F5.security",{"title":54,"path":55,"stem":56},"Permissions","\u002Fguides\u002Fpermissions","2.guides\u002F6.permissions",{"title":58,"path":59,"stem":60},"Coming from Stronghold","\u002Fguides\u002Fstronghold","2.guides\u002F7.stronghold",{"title":62,"icon":63,"path":64,"stem":65,"children":66,"page":26},"API reference","i-lucide-file-code","\u002Freference","3.reference",[67,71,75,79],{"title":68,"path":69,"stem":70},"JavaScript API","\u002Freference\u002Fjavascript-api","3.reference\u002F1.javascript-api",{"title":72,"path":73,"stem":74},"Types","\u002Freference\u002Ftypes","3.reference\u002F2.types",{"title":76,"path":77,"stem":78},"Tauri commands","\u002Freference\u002Fcommands","3.reference\u002F3.commands",{"title":54,"path":80,"stem":81},"\u002Freference\u002Fpermissions","3.reference\u002F4.permissions",{"title":83,"icon":84,"path":85,"stem":86,"children":87,"page":26},"Platforms","i-lucide-monitor-smartphone","\u002Fplatforms","4.platforms",[88,92,96,100,104,108],{"title":89,"path":90,"stem":91},"Overview","\u002Fplatforms\u002Foverview","4.platforms\u002F1.overview",{"title":93,"path":94,"stem":95},"macOS","\u002Fplatforms\u002Fmacos","4.platforms\u002F2.macos",{"title":97,"path":98,"stem":99},"Windows","\u002Fplatforms\u002Fwindows","4.platforms\u002F3.windows",{"title":101,"path":102,"stem":103},"Linux","\u002Fplatforms\u002Flinux","4.platforms\u002F4.linux",{"title":105,"path":106,"stem":107},"Android","\u002Fplatforms\u002Fandroid","4.platforms\u002F5.android",{"title":109,"path":110,"stem":111},"iOS","\u002Fplatforms\u002Fios","4.platforms\u002F6.ios",{"title":113,"path":114,"stem":115},"Changelog","\u002Fchangelog","9.changelog",{"id":117,"title":113,"body":118,"description":1152,"extension":1153,"generated":1154,"links":1155,"meta":1156,"navigation":1154,"path":114,"seo":1157,"stem":115,"__hash__":1158},"docs\u002F9.changelog.md",{"type":119,"value":120,"toc":1098},"minimark",[121,125,142,151,154,159,193,197,213,220,223,227,246,249,273,277,297,300,322,328,331,420,423,480,484,570,577,580,668,671,703,707,730,737,740,768,774,777,817,823,826,859,865,868,899,905,908,922,928,931,972,975],[122,123,124],"p",{},"All notable changes to this project will be documented in this file.",[122,126,127,128,135,136,141],{},"The format is based on ",[129,130,134],"a",{"href":131,"rel":132},"https:\u002F\u002Fkeepachangelog.com\u002Fen\u002F1.1.0\u002F",[133],"nofollow","Keep a Changelog",",\nand this project adheres to ",[129,137,140],{"href":138,"rel":139},"https:\u002F\u002Fsemver.org\u002Fspec\u002Fv2.0.0.html",[133],"Semantic Versioning",".",[143,144,146,150],"h2",{"id":145},"_032-2026-11-09",[147,148,149],"span",{},"0.3.2"," - 2026-11-09",[122,152,153],{},"No behaviour changes.",[155,156,158],"h3",{"id":157},"documentation","Documentation",[160,161,162,171,179],"ul",{},[163,164,165,166,170],"li",{},"Documentation site at ",[129,167,168],{"href":168,"rel":169},"https:\u002F\u002Fs00d.github.io\u002Ftauri-plugin-keyring-store\u002F",[133]," (guides, platforms, security notes, generated API \u002F command \u002F permission reference). The README is now a short overview.",[163,172,173,174,178],{},"JSDoc for every ",[175,176,177],"code",{},"tauri-plugin-keyring-store-api"," export (shows up in editor hints) and doc comments for every Tauri command.",[163,180,181,184,185,188,189,192],{},[175,182,183],{},"homepage"," in ",[175,186,187],{},"Cargo.toml"," and ",[175,190,191],{},"package.json"," points to the site.",[155,194,196],{"id":195},"fixed","Fixed",[160,198,199],{},[163,200,201,204,205,208,209,212],{},[175,202,203],{},"split_prefixed"," error message: missing ",[175,206,207],{},";"," in \"only one separator allowed; use nested naming in the app layer\" (now the same text as ",[175,210,211],{},"splitKeyPrefix"," in JS).",[143,214,216,219],{"id":215},"_031-2026-11-08",[147,217,218],{},"0.3.1"," - 2026-11-08",[122,221,222],{},"No API changes.",[155,224,226],{"id":225},"security","Security",[160,228,229],{},[163,230,231,238,239,241,242,245],{},[232,233,234,237],"strong",{},[175,235,236],{},"kp:"," guard ignores case."," The password commands rejected only lowercase ",[175,240,236],{}," accounts. Windows credential names are case-insensitive, so ",[175,243,244],{},"KP:…"," reached session store records and vault keys there. Now any letter case is rejected.",[155,247,196],{"id":248},"fixed-1",[160,250,251,257],{},[163,252,253,256],{},[232,254,255],{},"Backend init is retried."," A failed keyring backend start (e.g. no D-Bus session yet) was cached for the life of the process. Now only success is cached; after a failure the next call tries again after a 2-second pause.",[163,258,259,264,265,268,269,272],{},[232,260,261],{},[175,262,263],{},"KeyringVault.remove(location)"," deleted from the vault the ",[175,266,267],{},"KeyringVault"," was opened for and ignored the vault in ",[175,270,271],{},"location",". It now uses the location's vault.",[155,274,276],{"id":275},"added","Added",[160,278,279],{},[163,280,281,284,285,288,289,292,293,296],{},[175,282,283],{},"KeyringStore::with_store(...)",": use any ",[175,286,287],{},"keyring-core"," store (e.g. ",[175,290,291],{},"linux-keyutils-keyring-store",") for one handle; ",[175,294,295],{},"init()"," is unchanged.",[155,298,158],{"id":299},"documentation-1",[160,301,302,305,308,311],{},[163,303,304],{},"Linux without a desktop session: a Secret Service unlock prompt can block a call for a very long time.",[163,306,307],{},"The session password is not verified.",[163,309,310],{},"Windows: real limit for store records and vault secrets is about 960 bytes (Base64, then UTF-16 in a 2560-byte blob).",[163,312,313,314,317,318,321],{},"Counter location ",[175,315,316],{},"7"," and generic record ",[175,319,320],{},"\"7\""," are the same record.",[143,323,325,219],{"id":324},"_030-2026-11-08",[147,326,327],{},"0.3.0",[155,329,226],{"id":330},"security-1",[160,332,333,350,371,377,397,412],{},[163,334,335,338,339,188,342,345,346,349],{},[232,336,337],{},"Vault procedures no longer return private keys to the webview."," ",[175,340,341],{},"SLIP10Generate",[175,343,344],{},"BIP39Recover"," returned the 65-byte extended private key, ",[175,347,348],{},"SLIP10Derive"," the derived private key. They now return nothing \u002F the chain code, as Stronghold does.",[163,351,352,358,359,362,363,366,367,370],{},[232,353,354,355,357],{},"Password commands reject ",[175,356,236],{}," accounts."," Vault keys and store records live under ",[175,360,361],{},"kp:v1:…"," accounts in the same service, so ",[175,364,365],{},"getPasswords"," could read vault key material directly and ",[175,368,369],{},"setPasswords"," could overwrite it.",[163,372,373,376],{},[232,374,375],{},"No mnemonic words in errors."," An invalid BIP39 mnemonic produced an error that named the unknown word (sent to JS and easy to log). Crypto errors now use fixed messages.",[163,378,379,338,386,389,390,188,393,396],{},[232,380,381,382,385],{},"No secrets in ",[175,383,384],{},"Debug"," output.",[175,387,388],{},"PasswordEntryDto",", ",[175,391,392],{},"PasswordBackupEntryDto",[175,394,395],{},"ProcedureDto"," redact secrets, mnemonics and passphrases.",[163,398,399,400,403,404,407,408,411],{},"Secrets, passphrases, decrypted backups, derived keys and seed buffers are wiped after use (",[175,401,402],{},"zeroize",", also enabled in ",[175,405,406],{},"argon2"," \u002F ",[175,409,410],{},"chacha20poly1305",").",[163,413,414,338,416,419],{},[175,415,341],{},[175,417,418],{},"sizeBytes"," must be within 16..=64 (any size was allocated before).",[155,421,196],{"id":422},"fixed-2",[160,424,425,434,449,459,471,474],{},[163,426,427,433],{},[232,428,429,432],{},[175,430,431],{},"generateBIP39"," returned key bytes instead of the mnemonic",", so the generated phrase could never be backed up. It now returns the 24-word mnemonic (UTF-8 bytes) and writes the master key to the output location.",[163,435,436,338,439,407,442,445,446,448],{},[232,437,438],{},"Binary ids were broken in guest-js.",[175,440,441],{},"Uint8Array",[175,443,444],{},"ArrayBuffer"," \u002F iterable client, vault, record and store keys were serialized as JSON objects and rejected by Rust; they are now sent as byte arrays. Values accept ",[175,447,441],{}," too.",[163,450,451,454,455,458],{},[232,452,453],{},"Byte store keys"," (",[175,456,457],{},"StoreKey"," allowed them in TS) failed because Rust expected a string; a byte key now addresses the same record as the equal UTF-8 text key.",[163,460,461,338,464,407,467,470],{},[232,462,463],{},"Imports were partial on error.",[175,465,466],{},"import_passwords_plain",[175,468,469],{},"import_passwords_encrypted"," wrote rows until the first invalid one and had no item limit; the whole backup is now validated first (max 256 rows).",[163,472,473],{},"Keyring I\u002FO ran on async worker threads and could stall the runtime while the OS showed a keychain prompt or unlocked a collection; it now runs on blocking threads.",[163,475,476,479],{},[175,477,478],{},"save"," now requires a loaded session, like Stronghold.",[155,481,483],{"id":482},"changed","Changed",[160,485,486,507,539,553,560,563],{},[163,487,488,491,492,495,496,499,500,503,504,141],{},[232,489,490],{},"Breaking:"," procedure return values above; ",[175,493,494],{},"Error"," is ",[175,497,498],{},"#[non_exhaustive]","; ",[175,501,502],{},"KeyringStore::account_store_key"," takes ",[175,505,506],{},"impl AsRef\u003C[u8]>",[163,508,509,510,513,514,517,518,520,521,523,524,527,528,389,531,534,535,538],{},"Edition 2024, MSRV 1.88. ",[175,511,512],{},"KeyringStore"," errors on entry creation (including iOS write modifiers) go through the same mapping, so a locked store reports ",[175,515,516],{},"KeychainLocked"," there too. ",[175,519,406],{}," 0.6, ",[175,522,410],{}," 0.11 (encrypted backups from 0.1.x still decrypt), ",[175,525,526],{},"base64"," 0.23; removed unused ",[175,529,530],{},"log",[175,532,533],{},"rand"," and the ",[175,536,537],{},"generic-array"," pin.",[163,540,541,542,545,546,389,549,552],{},"guest-js built with Vite 8 (ESM + CJS), TypeScript 6, Vitest 5; separate ",[175,543,544],{},"index.d.cts",", nested ",[175,547,548],{},"exports",[175,550,551],{},"sideEffects: false","; dist checked with publint, attw and an export smoke test. Rollup and tslib removed.",[163,554,555,556,559],{},"Tests: IPC tests through ",[175,557,558],{},"tauri::test",", procedure tests on the keyring-core mock store, and a live write\u002Fread\u002Fdelete test against the real OS store.",[163,561,562],{},"CI on Linux (gnome-keyring), macOS and Windows plus Android and iOS builds. Windows test binaries embed the Common-Controls v6 manifest.",[163,564,565,566,569],{},"Example: tauri 2.12, password API from JS, vault demo, log rendered as text (it used ",[175,567,568],{},"v-html"," with secret values), autocorrect \u002F autocapitalize off.",[143,571,573,576],{"id":572},"_020-2026-05-22",[147,574,575],{},"0.2.0"," - 2026-05-22",[155,578,276],{"id":579},"added-1",[160,581,582,606,614,630,643],{},[163,583,584,589,590,595,596,599,600,407,603,141],{},[232,585,586],{},[175,587,588],{},"WriteAccessibility"," (iOS\u002FmacOS): configure Data Protection for new writes; default on iOS is ",[232,591,592],{},[175,593,594],{},"AfterFirstUnlock"," via ",[175,597,598],{},"access-policy"," modifiers on ",[175,601,602],{},"set_password",[175,604,605],{},"set_bytes",[163,607,608,613],{},[232,609,610],{},[175,611,612],{},"Builder::ios_write_accessibility"," to set the write policy at plugin init.",[163,615,616,621,622,625,626,629],{},[232,617,618],{},[175,619,620],{},"Error::KeychainLocked",": distinct from generic ",[175,623,624],{},"Keyring(String)"," when the protected store is unavailable (device locked, ",[175,627,628],{},"errSecNotAvailable",", etc.).",[163,631,632,188,637,642],{},[232,633,634],{},[175,635,636],{},"KeyringAvailability",[232,638,639],{},[175,640,641],{},"KeyringStore::availability()"," — probe-read without UIKit in the host app.",[163,644,645,648,649,389,652,389,655,658,659,407,662,665,666,141],{},[232,646,647],{},"Background helpers",": ",[175,650,651],{},"get_password_for_background",[175,653,654],{},"get_bytes_for_background",[175,656,657],{},"exists_nonempty_for_background"," return ",[175,660,661],{},"None",[175,663,664],{},"false"," when locked instead of surfacing ",[175,667,516],{},[155,669,483],{"id":670},"changed-1",[160,672,673,688],{},[163,674,675,676,679,680,683,684,687],{},"iOS writes use ",[175,677,678],{},"Entry::new_with_modifiers"," with ",[175,681,682],{},"after-first-unlock"," by default; reads still use ",[175,685,686],{},"Entry::new"," (same service\u002Faccount).",[163,689,690,338,693,699,700,702],{},[232,691,692],{},"npm",[129,694,697],{"href":695,"rel":696},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Ftauri-plugin-keyring-store-api",[133],[175,698,177],{}," bumped to ",[232,701,575],{}," (aligned with the Rust crate; guest-js API unchanged).",[155,704,706],{"id":705},"notes","Notes",[160,708,709,717],{},[163,710,711,712,407,714,716],{},"Credentials written before 0.2.0 keep their previous accessibility until re-saved (",[175,713,602],{},[175,715,605],{},"). No automatic migration command in this release.",[163,718,719,720,723,724,726,727,729],{},"Downstream apps with exhaustive ",[175,721,722],{},"match"," on ",[175,725,494],{}," must handle ",[175,728,516],{}," (minor breaking within 0.x).",[143,731,733,736],{"id":732},"_015-2026-05-13",[147,734,735],{},"0.1.5"," - 2026-05-13",[155,738,483],{"id":739},"changed-2",[160,741,742],{},[163,743,744,747,748,751,752,755,756,759,760,763,764,767],{},[232,745,746],{},"README:"," Recommend ",[175,749,750],{},"pnpm run tauri add keyring-store"," (and npm\u002Fyarn\u002Fcargo equivalents) instead of a bare ",[175,753,754],{},"cargo add"," “automatic” block; clarify ",[232,757,758],{},"snapshot path"," for all OSes; document guest-js API with examples for ",[175,761,762],{},"ping",", session\u002Fclient\u002Fstore\u002Fvault, ",[175,765,766],{},"Location",", naming helpers, and direct account backup helpers.",[143,769,771,736],{"id":770},"_014-2026-05-13",[147,772,773],{},"0.1.4",[155,775,196],{"id":776},"fixed-3",[160,778,779],{},[163,780,781,784,785,338,788,791,792,797,798,184,803,188,805,808,809,812,813,816],{},[232,782,783],{},"docs.rs:"," Drop ",[175,786,787],{},"package.metadata.docs.rs",[175,789,790],{},"rustc-args = [\"--cfg\", \"docsrs\"]",". That flag was applied to the whole dependency graph and broke serde \u002F serde_json \u002F derives on nightly (see ",[129,793,796],{"href":794,"rel":795},"https:\u002F\u002Fgithub.com\u002Fserde-rs\u002Fserde\u002Fissues\u002F2994",[133],"serde-rs\u002Fserde#2994","). Skip the Linux D-Bus dependency using ",[232,799,800],{},[175,801,802],{},"cfg(doc)",[175,804,187],{},[175,806,807],{},"backend.rs"," instead of ",[175,810,811],{},"cfg(docsrs)",", so normal builds still link dbus while ",[175,814,815],{},"cargo rustdoc"," \u002F docs.rs do not.",[143,818,820,736],{"id":819},"_013-2026-05-13",[147,821,822],{},"0.1.3",[155,824,196],{"id":825},"fixed-4",[160,827,828],{},[163,829,830,832,833,835,836,839,840,842,843,846,847,850,851,854,855,858],{},[232,831,783],{}," Pin ",[175,834,537],{}," to ",[232,837,838],{},"0.14.9"," so ",[175,841,815],{}," under nightly ",[175,844,845],{},"--cfg docsrs"," does not compile ",[232,848,849],{},"0.14.7"," (still uses removed ",[175,852,853],{},"doc_auto_cfg","). Keeps ",[175,856,857],{},"default-target = \"x86_64-apple-darwin\""," from 0.1.2.",[143,860,862,736],{"id":861},"_012-2026-05-13",[147,863,864],{},"0.1.2",[155,866,196],{"id":867},"fixed-5",[160,869,870],{},[163,871,872,874,875,338,877,879,880,883,884,887,888,890,891,894,895,898],{},[232,873,783],{}," Set ",[175,876,787],{},[175,878,857],{}," so documentation builds do not use the default Linux graph (GTK\u002FWebKit → old ",[175,881,882],{},"winnow","\u002F",[175,885,886],{},"toml"," crates failing under nightly ",[175,889,845],{},"). Linux dbus stub + ",[175,892,893],{},"not(docsrs)"," deps remain for developers running ",[175,896,897],{},"cargo doc"," on Linux.",[143,900,902,736],{"id":901},"_011-2026-05-13",[147,903,904],{},"0.1.1",[155,906,196],{"id":907},"fixed-6",[160,909,910],{},[163,911,912,914,915,918,919,921],{},[232,913,783],{}," Skip linking ",[175,916,917],{},"dbus-secret-service-keyring-store"," when ",[175,920,811],{}," so documentation builds on Linux without host GLib\u002Fpkg-config (0.1.0 rustdoc build failed for this reason).",[143,923,925,736],{"id":924},"_010-2026-05-13",[147,926,927],{},"0.1.0",[155,929,483],{"id":930},"changed-3",[160,932,933],{},[163,934,935,937,938,943,944,947,948,952,953,958,959,962,963,968,969,411],{},[232,936,490],{}," Renamed distribution packages to avoid collisions on crates.io\u002Fnpm: Rust crate ",[232,939,940],{},[175,941,942],{},"tauri-plugin-keyring-store"," (import ",[175,945,946],{},"tauri_plugin_keyring_store","), npm ",[232,949,950],{},[175,951,177],{},". Tauri plugin id is ",[232,954,955],{},[175,956,957],{},"keyring-store"," — IPC ",[175,960,961],{},"plugin:keyring-store|\u003Ccommand>",", capability prefix ",[232,964,965],{},[175,966,967],{},"keyring-store:"," (e.g. ",[175,970,971],{},"keyring-store:default",[155,973,276],{"id":974},"added-2",[160,976,977,983,990,1000,1006,1016,1019,1035,1044,1052,1073],{},[163,978,979,980,982],{},"Initial release: OS keyring backend (",[175,981,287],{}," + platform stores).",[163,984,985,986,989],{},"Stronghold-shaped IPC and guest-js API (",[175,987,988],{},"KeyringSession",", store, vault).",[163,991,992,993,996,997,141],{},"Optional ",[175,994,995],{},"crypto"," feature: SLIP10 \u002F BIP39 \u002F Ed25519 procedures via ",[175,998,999],{},"iota-crypto",[163,1001,1002,1003,1005],{},"Encrypted backup (Argon2id + ChaCha20-Poly1305) is always available; it does not depend on the ",[175,1004,995],{}," feature.",[163,1007,1008,1009,407,1012,1015],{},"Rust ",[175,1010,1011],{},"KeyringExt",[175,1013,1014],{},"KeyringPlugin"," for direct store access from backend code.",[163,1017,1018],{},"Permissions autogeneration and default capability set.",[163,1020,1021,1022,389,1025,389,1028,389,1031,1034],{},"Direct account IPC: ",[175,1023,1024],{},"get_passwords",[175,1026,1027],{},"set_passwords",[175,1029,1030],{},"delete_passwords",[175,1032,1033],{},"password_exists"," (max 256 items per bulk call).",[163,1036,1037,1038,407,1041,1043],{},"Plaintext backup: ",[175,1039,1040],{},"export_passwords_plain",[175,1042,466],{}," (secrets cross IPC in the clear — see README).",[163,1045,1046,1047,407,1050,141],{},"Encrypted backup: ",[175,1048,1049],{},"export_passwords_encrypted",[175,1051,469],{},[163,1053,1008,1054,1061,1062,389,1065,1067,1068,407,1071,141],{},[129,1055,1058],{"href":1056,"rel":1057},"https:\u002F\u002Fdocs.rs\u002Ftauri-plugin-keyring-store\u002Flatest\u002Ftauri_plugin_keyring_store\u002Fnaming\u002Findex.html",[133],[175,1059,1060],{},"naming"," helpers (",[175,1063,1064],{},"join_prefix",[175,1066,203],{},") and guest-js ",[175,1069,1070],{},"joinKeyPrefix",[175,1072,211],{},[163,1074,1075,1076,389,1078,389,1080,389,1083,389,1086,389,1089,389,1092,389,1095,141],{},"Guest-js: ",[175,1077,365],{},[175,1079,369],{},[175,1081,1082],{},"deletePasswords",[175,1084,1085],{},"passwordExists",[175,1087,1088],{},"exportPasswordsPlain",[175,1090,1091],{},"importPasswordsPlain",[175,1093,1094],{},"exportPasswordsEncrypted",[175,1096,1097],{},"importPasswordsEncrypted",{"title":1099,"searchDepth":1100,"depth":1101,"links":1102},"",2,3,[1103,1108,1115,1121,1127,1131,1135,1139,1143,1147],{"id":145,"depth":1100,"text":1104,"children":1105},"0.3.2 - 2026-11-09",[1106,1107],{"id":157,"depth":1101,"text":158},{"id":195,"depth":1101,"text":196},{"id":215,"depth":1100,"text":1109,"children":1110},"0.3.1 - 2026-11-08",[1111,1112,1113,1114],{"id":225,"depth":1101,"text":226},{"id":248,"depth":1101,"text":196},{"id":275,"depth":1101,"text":276},{"id":299,"depth":1101,"text":158},{"id":324,"depth":1100,"text":1116,"children":1117},"0.3.0 - 2026-11-08",[1118,1119,1120],{"id":330,"depth":1101,"text":226},{"id":422,"depth":1101,"text":196},{"id":482,"depth":1101,"text":483},{"id":572,"depth":1100,"text":1122,"children":1123},"0.2.0 - 2026-05-22",[1124,1125,1126],{"id":579,"depth":1101,"text":276},{"id":670,"depth":1101,"text":483},{"id":705,"depth":1101,"text":706},{"id":732,"depth":1100,"text":1128,"children":1129},"0.1.5 - 2026-05-13",[1130],{"id":739,"depth":1101,"text":483},{"id":770,"depth":1100,"text":1132,"children":1133},"0.1.4 - 2026-05-13",[1134],{"id":776,"depth":1101,"text":196},{"id":819,"depth":1100,"text":1136,"children":1137},"0.1.3 - 2026-05-13",[1138],{"id":825,"depth":1101,"text":196},{"id":861,"depth":1100,"text":1140,"children":1141},"0.1.2 - 2026-05-13",[1142],{"id":867,"depth":1101,"text":196},{"id":901,"depth":1100,"text":1144,"children":1145},"0.1.1 - 2026-05-13",[1146],{"id":907,"depth":1101,"text":196},{"id":924,"depth":1100,"text":1148,"children":1149},"0.1.0 - 2026-05-13",[1150,1151],{"id":930,"depth":1101,"text":483},{"id":974,"depth":1101,"text":276},"All notable changes to tauri-plugin-keyring-store and tauri-plugin-keyring-store-api.","md",true,null,{},{"title":113,"description":1152},"G6LK1oarZc9-HpmBBS3n19MXO3wlzTxCXWvyxcUgoi8",[1160,1155],{"title":109,"path":110,"stem":111,"description":1161,"children":-1},"Data-protection keychain, signing, the write policy, and reading secrets while the device is locked.",1794215488499]