[{"data":1,"prerenderedAt":2463},["ShallowReactive",2],{"page-/post/.obsidian/plugins/zzhub-ob-wxpublish/node_modules/obsidian/changelog":3,"pages-grouped-only":1978,"surrounding-page":2458},{"id":4,"title":5,"author":6,"body":7,"date":6,"description":17,"extension":1971,"group":6,"lastmod":6,"meta":1972,"navigation":174,"path":1973,"rawbody":1974,"seo":1975,"showTitle":6,"sort":6,"stem":1976,"tags":6,"versions":6,"__hash__":1977},"content/post/.obsidian/plugins/zzhub-ob-wxpublish/node_modules/obsidian/CHANGELOG.md","Changelog",null,{"type":8,"value":9,"toc":1934},"minimark",[10,14,18,30,35,74,78,92,110,217,221,236,240,256,260,288,292,298,305,315,340,347,358,365,368,374,381,385,392,405,409,432,438,442,465,469,472,1379,1383,1392,1415,1422,1491,1503,1553,1557,1565,1569,1572,1702,1705,1766,1769,1773,1826,1830,1838,1842,1854,1858,1867,1871,1881,1884,1903,1906,1930],[11,12,5],"h1",{"id":13},"changelog",[15,16,17],"p",{},"This CHANGELOG details any breaking changes to the API or new additions that require additional context. The versions listed below correspond to the versions of the Obsidian app. There may not be a corresponding package version for the version listed below.",[19,20,22,29],"h2",{"id":21},"v172-insider",[23,24,28],"a",{"href":25,"rel":26},"https://github.com/obsidianmd/obsidian-api/commit/6933c6227617897e031f30c734f61167cedafb7d",[27],"nofollow","v1.7.2"," (Insider)",[31,32,34],"h3",{"id":33},"workspace-changes","Workspace changes",[36,37,38,51,57],"ul",{},[39,40,41,42,46,47,50],"li",{},"New function ",[43,44,45],"code",{},"Plugin#onUserEnable"," gives you a place to performance one-time initialize after the user installs and enables your plugin. If your plugin has a custom view, this is a good place to initialize it rather than recreating the view in ",[43,48,49],{},"Plugin#onload",".",[39,52,53,56],{},[43,54,55],{},"Workspace#ensureSideLeaf"," is now public. This function is a shorthand way to create a leaf in the sidebar if one does not already exist.",[39,58,59,60,63,64,67,68,73],{},"Added ",[43,61,62],{},"WorkspaceLeaf#isDeferred"," and ",[43,65,66],{},"WorkspaceLeaf#loadIfDeferred",". As of Obsidian v1.7.2, Obsidian will now defer tabs by default. We published ",[23,69,72],{"href":70,"rel":71},"https://docs.obsidian.md/Plugins/Guides/Understanding+deferred+views",[27],"a guide on how to handle deferred views"," in the developer docs.",[31,75,77],{"id":76},"housekeeping","Housekeeping",[15,79,80,81,84,85,88,89,91],{},"We've updated the API to prefer ",[43,82,83],{},"unknown"," to ",[43,86,87],{},"any",". Using ",[43,90,87],{}," causes Typescript to disable typechecking entirely on the returned value, so this change could uncover some hidden typing issues.",[15,93,94,95,98,99,102,103,106,107,50],{},"We also removed ",[43,96,97],{},"prepareQuery",", ",[43,100,101],{},"fuzzySearch",", and ",[43,104,105],{},"PreparedQuery"," from the API. If your plugin is using one of these functions, you should migrate to ",[43,108,109],{},"prepareFuzzySearch",[111,112,117],"pre",{"className":113,"code":114,"language":115,"meta":116,"style":116},"language-ts shiki shiki-themes github-light","// Old\nlet pq: PreparedQuery = prepareQuery(q);\n...\nfuzzySearch(pq, text);\n\n\n// New\nlet fuzzy = prepareFuzzySearch(q);\n...\nfuzzy(text);\n","ts","",[43,118,119,128,155,161,169,176,181,187,203,208],{"__ignoreMap":116},[120,121,124],"span",{"class":122,"line":123},"line",1,[120,125,127],{"class":126},"sAwPA","// Old\n",[120,129,131,135,139,142,146,149,152],{"class":122,"line":130},2,[120,132,134],{"class":133},"sD7c4","let",[120,136,138],{"class":137},"sgsFI"," pq",[120,140,141],{"class":133},":",[120,143,145],{"class":144},"s7eDp"," PreparedQuery",[120,147,148],{"class":133}," =",[120,150,151],{"class":144}," prepareQuery",[120,153,154],{"class":137},"(q);\n",[120,156,158],{"class":122,"line":157},3,[120,159,160],{"class":133},"...\n",[120,162,164,166],{"class":122,"line":163},4,[120,165,101],{"class":144},[120,167,168],{"class":137},"(pq, text);\n",[120,170,172],{"class":122,"line":171},5,[120,173,175],{"emptyLinePlaceholder":174},true,"\n",[120,177,179],{"class":122,"line":178},6,[120,180,175],{"emptyLinePlaceholder":174},[120,182,184],{"class":122,"line":183},7,[120,185,186],{"class":126},"// New\n",[120,188,190,192,195,198,201],{"class":122,"line":189},8,[120,191,134],{"class":133},[120,193,194],{"class":137}," fuzzy ",[120,196,197],{"class":133},"=",[120,199,200],{"class":144}," prepareFuzzySearch",[120,202,154],{"class":137},[120,204,206],{"class":122,"line":205},9,[120,207,160],{"class":133},[120,209,211,214],{"class":122,"line":210},10,[120,212,213],{"class":144},"fuzzy",[120,215,216],{"class":137},"(text);\n",[31,218,220],{"id":219},"misc","Misc",[36,222,223,230],{},[39,224,225,226,229],{},"New ",[43,227,228],{},"Plugin#removeCommand"," is now available if your plugin needs to dynamically remove commands (for example, if your plugin allows for user-created commands).",[39,231,232,235],{},[43,233,234],{},"SuggestModal#selectActiveSuggestion"," is now public. This is useful to provide an alternative hotkey to your SuggestModal that still triggers the selected item.",[19,237,239],{"id":238},"v170-insider","v1.7.0 (Insider)",[36,241,242,249],{},[39,243,244,245,248],{},"Fixed ",[43,246,247],{},"FileSystemAdapter#rmdir(dirPath, false)"," always throwing an error when attempting to delete an empty directory.",[39,250,251,252,255],{},"Added a ",[43,253,254],{},"data-type"," to the Markdown embed container using subpath type.",[19,257,259],{"id":258},"v1511","v1.5.11",[36,261,262,268],{},[39,263,244,264,267],{},[43,265,266],{},"revealLeaf"," failing to focus the correct window.",[39,269,270,271,274,275,278,279,283,284,287],{},"If you are using the ",[43,272,273],{},"SliderComponent"," in your app, be aware, the behavior of the component has changed in 1.5.9. Now, instead of updating the value when the slider is dragged, it will only update the value when the slider is released. If your plugin was relying on the old behavior, you will need to update your plugin code to call ",[43,276,277],{},".setInstant(true)"," on the slider.\n",[280,281,282],"strong",{},"Note:"," Because ",[43,285,286],{},"setInstant"," is a new function, you'll also need to check to see if the function exists before calling it. This will ensure your plugin maintains backwards compatibility when being run on older versions of Obsidian.",[19,289,291],{"id":290},"v157","v1.5.7",[31,293,295],{"id":294},"pluginonexternalsettingschange",[43,296,297],{},"Plugin#onExternalSettingsChange",[15,299,300,301,304],{},"There's a new callback function for plugins to react to when plugin settings (",[43,302,303],{},"data.json",") get changed on disk. This callback can be used to reload settings when they are updated by an external application or when the settings get synced using a file syncing service like Obsidian Sync.",[31,306,225,308,63,311,314],{"id":307},"new-vaultgetfilebypath-and-vaultgetfolderbypath-utility-functions",[43,309,310],{},"Vault#getFileByPath",[43,312,313],{},"Vault#getFolderByPath"," utility functions",[15,316,317,318,321,322,324,325,328,329,332,333,328,336,339],{},"The ",[43,319,320],{},"getAbstractFileByPath"," has long been a point of confusion with plugin developers. More often than not,\nyou are looking for either a file or a folder. And you know which you want at call-time. Instead of using\n",[43,323,320],{}," then checking if the result is an instance of ",[43,326,327],{},"TFile"," or ",[43,330,331],{},"TFolder",", now you can just\nuse ",[43,334,335],{},"getFileByPath",[43,337,338],{},"getFolderByPath"," to automatically do this check.",[31,341,343,346],{"id":342},"viewscope-is-now-public",[43,344,345],{},"View.scope"," is now public",[15,348,349,350,353,354,357],{},"Finally ",[43,351,352],{},"scope"," is made public on the ",[43,355,356],{},"View"," class. This means you can assign hotkeys for when your view is\nactive and focused.",[31,359,225,361,364],{"id":360},"new-getfrontmatterinfo-utility",[43,362,363],{},"getFrontMatterInfo"," utility",[15,366,367],{},"There is now a canonical way to find the offsets of where the frontmatter ends and where the content starts in a file.",[31,369,371],{"id":370},"filemanagergetavailablepathforattachment",[43,372,373],{},"FileManager#getAvailablePathForAttachment",[15,375,376,377,380],{},"If your plugin saves attachments to the vault, you should be using ",[43,378,379],{},"getAvailablePathForAttachment",". It will generate a safe path for you to use that respects the user's settings for file attachments.",[19,382,384],{"id":383},"v144","v1.4.4",[15,386,387,388,391],{},"We've exposed our helper function for setting tooltips on elements (",[43,389,390],{},"setTooltip",") as well as added a new progress bar component.",[15,393,317,394,397,398,63,401,404],{},[43,395,396],{},"FileManager#processFrontMatter"," function now also exposes the DataWriteOptions argument to be consistent with the other ",[43,399,400],{},"process",[43,402,403],{},"write"," functions.",[19,406,408],{"id":407},"v140","v1.4.0",[15,410,411,412,415,416,419,420,423,424,427,428,50],{},"We've made some changes to ",[43,413,414],{},"CachedMetadata"," to support ",[280,417,418],{},"Properties",". ",[43,421,422],{},"FrontMatterCache"," is now no longer a ",[43,425,426],{},"CacheItem","—meaning that it doesn't have a position. Instead, is it a ",[429,430,431],"em",{},"Reference",[15,433,434,435,50],{},"Another big change in v.1.4 is that frontmatter now supports wikilinks. If a value in the frontmatter can be interpreted as a link, it will be cached inside ",[43,436,437],{},"CachedMetadata.frontmatterLinks",[19,439,441],{"id":440},"v113","v1.1.3",[36,443,444],{},[39,445,446,447,452,453,461,464],{},"Updated the ",[23,448,451],{"href":449,"rel":450},"https://github.com/obsidianmd/obsidian-api/blob/master/canvas.d.ts",[27],"Canvas spec"," to indicate that colors can be stored in 1 or 2 formats:",[36,454,455,458],{},[39,456,457],{},"as a hex string (i.e. \"#FFFFFF\")",[39,459,460],{},"as a number \"1\", \"2\", etc.",[462,463],"br",{},"If it's a number, this refers to the palette position. It can be themed via CSS variables.",[31,466,468],{"id":467},"theme-changes","Theme Changes",[15,470,471],{},"There are some new CSS variables related to canvas and callouts in 1.1.3+. All the extended palette colors now have an RGB variant that is used for callouts and canvas colors. The hex values are primarily used for syntax highlighting.",[111,473,477],{"className":474,"code":475,"language":476,"meta":116,"style":116},"language-css shiki shiki-themes github-light","body {\n    --callout-bug: var(--color-red-rgb);\n    --callout-default: var(--color-blue-rgb);\n    --callout-error: var(--color-red-rgb);\n    --callout-example: var(--color-purple-rgb);\n    --callout-fail: var(--color-red-rgb);\n    --callout-important: var(--color-cyan-rgb);\n    --callout-info: var(--color-blue-rgb);\n    --callout-question: var(--color-yellow-rgb);\n    --callout-success: var(--color-green-rgb);\n    --callout-summary: var(--color-cyan-rgb);\n    --callout-tip: var(--color-cyan-rgb);\n    --callout-todo: var(--color-blue-rgb);\n    --callout-warning: var(--color-orange-rgb);\n    --callout-quote: 158, 158, 158;\n}\n.theme-light {\n    --color-red-rgb: 228, 55, 75;\n    --color-red: #E4374B;\n\n    --color-orange-rgb: 217, 108, 0;\n    --color-orange: #d96c00;\n\n    --color-yellow-rgb: 189, 142, 55;\n    --color-yellow: #BD8E37;\n\n    --color-green-rgb: 12, 181, 79;\n    --color-green: #0cb54f;\n\n    --color-cyan-rgb: 45, 183, 181;\n    --color-cyan: #2db7b5;\n\n    --color-blue-rgb: 8, 109, 221;\n    --color-blue: #086DDD;\n\n    --color-purple-rgb: 135, 107, 224;\n    --color-purple: #876be0;\n\n    --color-pink-rgb: 195, 43, 116;\n    --color-pink: #C32B74;\n}\n.theme-dark {\n    --color-red-rgb: 251, 70, 76;\n    --color-red: #fb464c;\n\n    --color-orange-rgb: 233, 151, 63;\n    --color-orange: #E9973F;\n\n    --color-yellow-rgb: 224, 222, 113;\n    --color-yellow: #E0DE71;\n\n    --color-green-rgb: 68, 207, 110;\n    --color-green: #44CF6E;\n\n    --color-cyan-rgb: 83, 223, 221;\n    --color-cyan: #53DFDD;\n\n    --color-blue-rgb: 2, 122, 255;\n    --color-blue: #027aff;\n\n    --color-purple-rgb: 168, 130, 255;\n    --color-purple: #a882ff;\n\n    --color-pink-rgb: 250, 153, 205;\n    --color-pink: #FA99CD;\n}\n","css",[43,478,479,488,510,526,541,557,572,588,603,619,635,651,667,683,700,722,728,736,759,772,777,800,813,818,840,853,858,881,894,899,921,934,939,962,975,980,1003,1016,1021,1044,1057,1062,1070,1092,1104,1109,1131,1143,1148,1169,1181,1186,1208,1220,1225,1246,1258,1263,1285,1297,1302,1323,1335,1340,1362,1374],{"__ignoreMap":116},[120,480,481,485],{"class":122,"line":123},[120,482,484],{"class":483},"shJU0","body",[120,486,487],{"class":137}," {\n",[120,489,490,494,497,501,504,507],{"class":122,"line":130},[120,491,493],{"class":492},"sqxcx","    --callout-bug",[120,495,496],{"class":137},": ",[120,498,500],{"class":499},"sYu0t","var",[120,502,503],{"class":137},"(",[120,505,506],{"class":492},"--color-red-rgb",[120,508,509],{"class":137},");\n",[120,511,512,515,517,519,521,524],{"class":122,"line":157},[120,513,514],{"class":492},"    --callout-default",[120,516,496],{"class":137},[120,518,500],{"class":499},[120,520,503],{"class":137},[120,522,523],{"class":492},"--color-blue-rgb",[120,525,509],{"class":137},[120,527,528,531,533,535,537,539],{"class":122,"line":163},[120,529,530],{"class":492},"    --callout-error",[120,532,496],{"class":137},[120,534,500],{"class":499},[120,536,503],{"class":137},[120,538,506],{"class":492},[120,540,509],{"class":137},[120,542,543,546,548,550,552,555],{"class":122,"line":171},[120,544,545],{"class":492},"    --callout-example",[120,547,496],{"class":137},[120,549,500],{"class":499},[120,551,503],{"class":137},[120,553,554],{"class":492},"--color-purple-rgb",[120,556,509],{"class":137},[120,558,559,562,564,566,568,570],{"class":122,"line":178},[120,560,561],{"class":492},"    --callout-fail",[120,563,496],{"class":137},[120,565,500],{"class":499},[120,567,503],{"class":137},[120,569,506],{"class":492},[120,571,509],{"class":137},[120,573,574,577,579,581,583,586],{"class":122,"line":183},[120,575,576],{"class":492},"    --callout-important",[120,578,496],{"class":137},[120,580,500],{"class":499},[120,582,503],{"class":137},[120,584,585],{"class":492},"--color-cyan-rgb",[120,587,509],{"class":137},[120,589,590,593,595,597,599,601],{"class":122,"line":189},[120,591,592],{"class":492},"    --callout-info",[120,594,496],{"class":137},[120,596,500],{"class":499},[120,598,503],{"class":137},[120,600,523],{"class":492},[120,602,509],{"class":137},[120,604,605,608,610,612,614,617],{"class":122,"line":205},[120,606,607],{"class":492},"    --callout-question",[120,609,496],{"class":137},[120,611,500],{"class":499},[120,613,503],{"class":137},[120,615,616],{"class":492},"--color-yellow-rgb",[120,618,509],{"class":137},[120,620,621,624,626,628,630,633],{"class":122,"line":210},[120,622,623],{"class":492},"    --callout-success",[120,625,496],{"class":137},[120,627,500],{"class":499},[120,629,503],{"class":137},[120,631,632],{"class":492},"--color-green-rgb",[120,634,509],{"class":137},[120,636,638,641,643,645,647,649],{"class":122,"line":637},11,[120,639,640],{"class":492},"    --callout-summary",[120,642,496],{"class":137},[120,644,500],{"class":499},[120,646,503],{"class":137},[120,648,585],{"class":492},[120,650,509],{"class":137},[120,652,654,657,659,661,663,665],{"class":122,"line":653},12,[120,655,656],{"class":492},"    --callout-tip",[120,658,496],{"class":137},[120,660,500],{"class":499},[120,662,503],{"class":137},[120,664,585],{"class":492},[120,666,509],{"class":137},[120,668,670,673,675,677,679,681],{"class":122,"line":669},13,[120,671,672],{"class":492},"    --callout-todo",[120,674,496],{"class":137},[120,676,500],{"class":499},[120,678,503],{"class":137},[120,680,523],{"class":492},[120,682,509],{"class":137},[120,684,686,689,691,693,695,698],{"class":122,"line":685},14,[120,687,688],{"class":492},"    --callout-warning",[120,690,496],{"class":137},[120,692,500],{"class":499},[120,694,503],{"class":137},[120,696,697],{"class":492},"--color-orange-rgb",[120,699,509],{"class":137},[120,701,703,706,708,711,713,715,717,719],{"class":122,"line":702},15,[120,704,705],{"class":492},"    --callout-quote",[120,707,496],{"class":137},[120,709,710],{"class":499},"158",[120,712,98],{"class":137},[120,714,710],{"class":499},[120,716,98],{"class":137},[120,718,710],{"class":499},[120,720,721],{"class":137},";\n",[120,723,725],{"class":122,"line":724},16,[120,726,727],{"class":137},"}\n",[120,729,731,734],{"class":122,"line":730},17,[120,732,733],{"class":144},".theme-light",[120,735,487],{"class":137},[120,737,739,742,744,747,749,752,754,757],{"class":122,"line":738},18,[120,740,741],{"class":492},"    --color-red-rgb",[120,743,496],{"class":137},[120,745,746],{"class":499},"228",[120,748,98],{"class":137},[120,750,751],{"class":499},"55",[120,753,98],{"class":137},[120,755,756],{"class":499},"75",[120,758,721],{"class":137},[120,760,762,765,767,770],{"class":122,"line":761},19,[120,763,764],{"class":492},"    --color-red",[120,766,496],{"class":137},[120,768,769],{"class":499},"#E4374B",[120,771,721],{"class":137},[120,773,775],{"class":122,"line":774},20,[120,776,175],{"emptyLinePlaceholder":174},[120,778,780,783,785,788,790,793,795,798],{"class":122,"line":779},21,[120,781,782],{"class":492},"    --color-orange-rgb",[120,784,496],{"class":137},[120,786,787],{"class":499},"217",[120,789,98],{"class":137},[120,791,792],{"class":499},"108",[120,794,98],{"class":137},[120,796,797],{"class":499},"0",[120,799,721],{"class":137},[120,801,803,806,808,811],{"class":122,"line":802},22,[120,804,805],{"class":492},"    --color-orange",[120,807,496],{"class":137},[120,809,810],{"class":499},"#d96c00",[120,812,721],{"class":137},[120,814,816],{"class":122,"line":815},23,[120,817,175],{"emptyLinePlaceholder":174},[120,819,821,824,826,829,831,834,836,838],{"class":122,"line":820},24,[120,822,823],{"class":492},"    --color-yellow-rgb",[120,825,496],{"class":137},[120,827,828],{"class":499},"189",[120,830,98],{"class":137},[120,832,833],{"class":499},"142",[120,835,98],{"class":137},[120,837,751],{"class":499},[120,839,721],{"class":137},[120,841,843,846,848,851],{"class":122,"line":842},25,[120,844,845],{"class":492},"    --color-yellow",[120,847,496],{"class":137},[120,849,850],{"class":499},"#BD8E37",[120,852,721],{"class":137},[120,854,856],{"class":122,"line":855},26,[120,857,175],{"emptyLinePlaceholder":174},[120,859,861,864,866,869,871,874,876,879],{"class":122,"line":860},27,[120,862,863],{"class":492},"    --color-green-rgb",[120,865,496],{"class":137},[120,867,868],{"class":499},"12",[120,870,98],{"class":137},[120,872,873],{"class":499},"181",[120,875,98],{"class":137},[120,877,878],{"class":499},"79",[120,880,721],{"class":137},[120,882,884,887,889,892],{"class":122,"line":883},28,[120,885,886],{"class":492},"    --color-green",[120,888,496],{"class":137},[120,890,891],{"class":499},"#0cb54f",[120,893,721],{"class":137},[120,895,897],{"class":122,"line":896},29,[120,898,175],{"emptyLinePlaceholder":174},[120,900,902,905,907,910,912,915,917,919],{"class":122,"line":901},30,[120,903,904],{"class":492},"    --color-cyan-rgb",[120,906,496],{"class":137},[120,908,909],{"class":499},"45",[120,911,98],{"class":137},[120,913,914],{"class":499},"183",[120,916,98],{"class":137},[120,918,873],{"class":499},[120,920,721],{"class":137},[120,922,924,927,929,932],{"class":122,"line":923},31,[120,925,926],{"class":492},"    --color-cyan",[120,928,496],{"class":137},[120,930,931],{"class":499},"#2db7b5",[120,933,721],{"class":137},[120,935,937],{"class":122,"line":936},32,[120,938,175],{"emptyLinePlaceholder":174},[120,940,942,945,947,950,952,955,957,960],{"class":122,"line":941},33,[120,943,944],{"class":492},"    --color-blue-rgb",[120,946,496],{"class":137},[120,948,949],{"class":499},"8",[120,951,98],{"class":137},[120,953,954],{"class":499},"109",[120,956,98],{"class":137},[120,958,959],{"class":499},"221",[120,961,721],{"class":137},[120,963,965,968,970,973],{"class":122,"line":964},34,[120,966,967],{"class":492},"    --color-blue",[120,969,496],{"class":137},[120,971,972],{"class":499},"#086DDD",[120,974,721],{"class":137},[120,976,978],{"class":122,"line":977},35,[120,979,175],{"emptyLinePlaceholder":174},[120,981,983,986,988,991,993,996,998,1001],{"class":122,"line":982},36,[120,984,985],{"class":492},"    --color-purple-rgb",[120,987,496],{"class":137},[120,989,990],{"class":499},"135",[120,992,98],{"class":137},[120,994,995],{"class":499},"107",[120,997,98],{"class":137},[120,999,1000],{"class":499},"224",[120,1002,721],{"class":137},[120,1004,1006,1009,1011,1014],{"class":122,"line":1005},37,[120,1007,1008],{"class":492},"    --color-purple",[120,1010,496],{"class":137},[120,1012,1013],{"class":499},"#876be0",[120,1015,721],{"class":137},[120,1017,1019],{"class":122,"line":1018},38,[120,1020,175],{"emptyLinePlaceholder":174},[120,1022,1024,1027,1029,1032,1034,1037,1039,1042],{"class":122,"line":1023},39,[120,1025,1026],{"class":492},"    --color-pink-rgb",[120,1028,496],{"class":137},[120,1030,1031],{"class":499},"195",[120,1033,98],{"class":137},[120,1035,1036],{"class":499},"43",[120,1038,98],{"class":137},[120,1040,1041],{"class":499},"116",[120,1043,721],{"class":137},[120,1045,1047,1050,1052,1055],{"class":122,"line":1046},40,[120,1048,1049],{"class":492},"    --color-pink",[120,1051,496],{"class":137},[120,1053,1054],{"class":499},"#C32B74",[120,1056,721],{"class":137},[120,1058,1060],{"class":122,"line":1059},41,[120,1061,727],{"class":137},[120,1063,1065,1068],{"class":122,"line":1064},42,[120,1066,1067],{"class":144},".theme-dark",[120,1069,487],{"class":137},[120,1071,1073,1075,1077,1080,1082,1085,1087,1090],{"class":122,"line":1072},43,[120,1074,741],{"class":492},[120,1076,496],{"class":137},[120,1078,1079],{"class":499},"251",[120,1081,98],{"class":137},[120,1083,1084],{"class":499},"70",[120,1086,98],{"class":137},[120,1088,1089],{"class":499},"76",[120,1091,721],{"class":137},[120,1093,1095,1097,1099,1102],{"class":122,"line":1094},44,[120,1096,764],{"class":492},[120,1098,496],{"class":137},[120,1100,1101],{"class":499},"#fb464c",[120,1103,721],{"class":137},[120,1105,1107],{"class":122,"line":1106},45,[120,1108,175],{"emptyLinePlaceholder":174},[120,1110,1112,1114,1116,1119,1121,1124,1126,1129],{"class":122,"line":1111},46,[120,1113,782],{"class":492},[120,1115,496],{"class":137},[120,1117,1118],{"class":499},"233",[120,1120,98],{"class":137},[120,1122,1123],{"class":499},"151",[120,1125,98],{"class":137},[120,1127,1128],{"class":499},"63",[120,1130,721],{"class":137},[120,1132,1134,1136,1138,1141],{"class":122,"line":1133},47,[120,1135,805],{"class":492},[120,1137,496],{"class":137},[120,1139,1140],{"class":499},"#E9973F",[120,1142,721],{"class":137},[120,1144,1146],{"class":122,"line":1145},48,[120,1147,175],{"emptyLinePlaceholder":174},[120,1149,1151,1153,1155,1157,1159,1162,1164,1167],{"class":122,"line":1150},49,[120,1152,823],{"class":492},[120,1154,496],{"class":137},[120,1156,1000],{"class":499},[120,1158,98],{"class":137},[120,1160,1161],{"class":499},"222",[120,1163,98],{"class":137},[120,1165,1166],{"class":499},"113",[120,1168,721],{"class":137},[120,1170,1172,1174,1176,1179],{"class":122,"line":1171},50,[120,1173,845],{"class":492},[120,1175,496],{"class":137},[120,1177,1178],{"class":499},"#E0DE71",[120,1180,721],{"class":137},[120,1182,1184],{"class":122,"line":1183},51,[120,1185,175],{"emptyLinePlaceholder":174},[120,1187,1189,1191,1193,1196,1198,1201,1203,1206],{"class":122,"line":1188},52,[120,1190,863],{"class":492},[120,1192,496],{"class":137},[120,1194,1195],{"class":499},"68",[120,1197,98],{"class":137},[120,1199,1200],{"class":499},"207",[120,1202,98],{"class":137},[120,1204,1205],{"class":499},"110",[120,1207,721],{"class":137},[120,1209,1211,1213,1215,1218],{"class":122,"line":1210},53,[120,1212,886],{"class":492},[120,1214,496],{"class":137},[120,1216,1217],{"class":499},"#44CF6E",[120,1219,721],{"class":137},[120,1221,1223],{"class":122,"line":1222},54,[120,1224,175],{"emptyLinePlaceholder":174},[120,1226,1228,1230,1232,1235,1237,1240,1242,1244],{"class":122,"line":1227},55,[120,1229,904],{"class":492},[120,1231,496],{"class":137},[120,1233,1234],{"class":499},"83",[120,1236,98],{"class":137},[120,1238,1239],{"class":499},"223",[120,1241,98],{"class":137},[120,1243,959],{"class":499},[120,1245,721],{"class":137},[120,1247,1249,1251,1253,1256],{"class":122,"line":1248},56,[120,1250,926],{"class":492},[120,1252,496],{"class":137},[120,1254,1255],{"class":499},"#53DFDD",[120,1257,721],{"class":137},[120,1259,1261],{"class":122,"line":1260},57,[120,1262,175],{"emptyLinePlaceholder":174},[120,1264,1266,1268,1270,1273,1275,1278,1280,1283],{"class":122,"line":1265},58,[120,1267,944],{"class":492},[120,1269,496],{"class":137},[120,1271,1272],{"class":499},"2",[120,1274,98],{"class":137},[120,1276,1277],{"class":499},"122",[120,1279,98],{"class":137},[120,1281,1282],{"class":499},"255",[120,1284,721],{"class":137},[120,1286,1288,1290,1292,1295],{"class":122,"line":1287},59,[120,1289,967],{"class":492},[120,1291,496],{"class":137},[120,1293,1294],{"class":499},"#027aff",[120,1296,721],{"class":137},[120,1298,1300],{"class":122,"line":1299},60,[120,1301,175],{"emptyLinePlaceholder":174},[120,1303,1305,1307,1309,1312,1314,1317,1319,1321],{"class":122,"line":1304},61,[120,1306,985],{"class":492},[120,1308,496],{"class":137},[120,1310,1311],{"class":499},"168",[120,1313,98],{"class":137},[120,1315,1316],{"class":499},"130",[120,1318,98],{"class":137},[120,1320,1282],{"class":499},[120,1322,721],{"class":137},[120,1324,1326,1328,1330,1333],{"class":122,"line":1325},62,[120,1327,1008],{"class":492},[120,1329,496],{"class":137},[120,1331,1332],{"class":499},"#a882ff",[120,1334,721],{"class":137},[120,1336,1338],{"class":122,"line":1337},63,[120,1339,175],{"emptyLinePlaceholder":174},[120,1341,1343,1345,1347,1350,1352,1355,1357,1360],{"class":122,"line":1342},64,[120,1344,1026],{"class":492},[120,1346,496],{"class":137},[120,1348,1349],{"class":499},"250",[120,1351,98],{"class":137},[120,1353,1354],{"class":499},"153",[120,1356,98],{"class":137},[120,1358,1359],{"class":499},"205",[120,1361,721],{"class":137},[120,1363,1365,1367,1369,1372],{"class":122,"line":1364},65,[120,1366,1049],{"class":492},[120,1368,496],{"class":137},[120,1370,1371],{"class":499},"#FA99CD",[120,1373,721],{"class":137},[120,1375,1377],{"class":122,"line":1376},66,[120,1378,727],{"class":137},[19,1380,1382],{"id":1381},"v111-2022-12-8-insider-build","v1.1.1 (2022-12-8 — Insider build)",[15,1384,1385],{},[429,1386,1387],{},[23,1388,1391],{"href":1389,"rel":1390},"https://github.com/obsidianmd/obsidian-api/compare/32fe4c3f...6161bf59",[27],"Changes since v1.0",[36,1393,1394,1404],{},[39,1395,1396,1403],{},[23,1397,1400],{"href":1398,"rel":1399},"https://github.com/obsidianmd/obsidian-api/blob/ec589e9762a1d7e2faad01f894cb34c41b10ecaf/obsidian.d.ts#L4189",[27],[43,1401,1402],{},"file-open"," event is now fired when focusing a Canvas file card.",[39,1405,1406,1407,1410,1411,1414],{},"Exposed the ",[43,1408,1409],{},"activeEditor"," on the Workspace. When a markdown view is active, this will point to the underlying ",[43,1412,1413],{},"MarkdownEditView",". If a canvas view is active, this will be an EmbeddedEditor component.",[15,1416,1417,1418,1421],{},"With these two changes, plugins should be able to adapt to the new Canvas view quite easily. Custom\nviews that react the the currently focused views will automatically respond to the user clicking\non file cards in the canvas. If a plugin is currently accessing the ",[43,1419,1420],{},"Editor"," using the following\napproach:",[111,1423,1425],{"className":113,"code":1424,"language":115,"meta":116,"style":116},"let view = app.workspace.getActiveViewOfType(MarkdownView);\n\nif (view) {\n    let editor = view.editor;\n    // or\n    let file = view.file;\n}\n",[43,1426,1427,1445,1449,1457,1470,1475,1487],{"__ignoreMap":116},[120,1428,1429,1431,1434,1436,1439,1442],{"class":122,"line":123},[120,1430,134],{"class":133},[120,1432,1433],{"class":137}," view ",[120,1435,197],{"class":133},[120,1437,1438],{"class":137}," app.workspace.",[120,1440,1441],{"class":144},"getActiveViewOfType",[120,1443,1444],{"class":137},"(MarkdownView);\n",[120,1446,1447],{"class":122,"line":130},[120,1448,175],{"emptyLinePlaceholder":174},[120,1450,1451,1454],{"class":122,"line":157},[120,1452,1453],{"class":133},"if",[120,1455,1456],{"class":137}," (view) {\n",[120,1458,1459,1462,1465,1467],{"class":122,"line":163},[120,1460,1461],{"class":133},"    let",[120,1463,1464],{"class":137}," editor ",[120,1466,197],{"class":133},[120,1468,1469],{"class":137}," view.editor;\n",[120,1471,1472],{"class":122,"line":171},[120,1473,1474],{"class":126},"    // or\n",[120,1476,1477,1479,1482,1484],{"class":122,"line":178},[120,1478,1461],{"class":133},[120,1480,1481],{"class":137}," file ",[120,1483,197],{"class":133},[120,1485,1486],{"class":137}," view.file;\n",[120,1488,1489],{"class":122,"line":183},[120,1490,727],{"class":137},[15,1492,1493,1494,328,1497,1500,1501,141],{},"Instead you can access the ",[43,1495,1496],{},"editor",[43,1498,1499],{},"file"," by looking under the ",[43,1502,1409],{},[111,1504,1506],{"className":113,"code":1505,"language":115,"meta":116,"style":116},"let { activeEditor } = app.workspace;\nif (activeEditor) {\n    let editor = activeEditor.editor;\n    let file = activeEditor.file;\n}\n",[43,1507,1508,1520,1527,1538,1549],{"__ignoreMap":116},[120,1509,1510,1512,1515,1517],{"class":122,"line":123},[120,1511,134],{"class":133},[120,1513,1514],{"class":137}," { activeEditor } ",[120,1516,197],{"class":133},[120,1518,1519],{"class":137}," app.workspace;\n",[120,1521,1522,1524],{"class":122,"line":130},[120,1523,1453],{"class":133},[120,1525,1526],{"class":137}," (activeEditor) {\n",[120,1528,1529,1531,1533,1535],{"class":122,"line":157},[120,1530,1461],{"class":133},[120,1532,1464],{"class":137},[120,1534,197],{"class":133},[120,1536,1537],{"class":137}," activeEditor.editor;\n",[120,1539,1540,1542,1544,1546],{"class":122,"line":163},[120,1541,1461],{"class":133},[120,1543,1481],{"class":137},[120,1545,197],{"class":133},[120,1547,1548],{"class":137}," activeEditor.file;\n",[120,1550,1551],{"class":122,"line":171},[120,1552,727],{"class":137},[19,1554,1556],{"id":1555},"v110-2022-12-05-insider-build","v1.1.0 (2022-12-05 — Insider build)",[15,1558,1559],{},[429,1560,1561],{},[23,1562,1391],{"href":1563,"rel":1564},"https://github.com/obsidianmd/obsidian-api/compare/1b4f6e2...32fe4c3f",[27],[31,1566,1568],{"id":1567},"new-metadata-api","New Metadata API",[15,1570,1571],{},"In anticipation of bigger improvements to metadata and frontmatter in Obsidian, we have introduced a new metadata API.\nIt is currently defined as follows:",[111,1573,1575],{"className":113,"code":1574,"language":115,"meta":116,"style":116},"interface FileManager {\n/**\n     * Atomically read, modify, and save the frontmatter of a note.\n     * The frontmatter is passed in as a JS object, and should be mutated directly to achieve the desired result.\n     * @param file - the file to be modified. Must be a markdown file.\n     * @param fn - a callback function which mutates the frontMatter object synchronously.\n     * @public\n     */\n    processFrontMatter(file: TFile, fn: (frontMatter: any) => void): Promise\u003Cvoid>\n}\n",[43,1576,1577,1587,1592,1597,1602,1616,1628,1635,1640,1698],{"__ignoreMap":116},[120,1578,1579,1582,1585],{"class":122,"line":123},[120,1580,1581],{"class":133},"interface",[120,1583,1584],{"class":144}," FileManager",[120,1586,487],{"class":137},[120,1588,1589],{"class":122,"line":130},[120,1590,1591],{"class":126},"/**\n",[120,1593,1594],{"class":122,"line":157},[120,1595,1596],{"class":126},"     * Atomically read, modify, and save the frontmatter of a note.\n",[120,1598,1599],{"class":122,"line":163},[120,1600,1601],{"class":126},"     * The frontmatter is passed in as a JS object, and should be mutated directly to achieve the desired result.\n",[120,1603,1604,1607,1610,1613],{"class":122,"line":171},[120,1605,1606],{"class":126},"     * ",[120,1608,1609],{"class":133},"@param",[120,1611,1612],{"class":137}," file",[120,1614,1615],{"class":126}," - the file to be modified. Must be a markdown file.\n",[120,1617,1618,1620,1622,1625],{"class":122,"line":178},[120,1619,1606],{"class":126},[120,1621,1609],{"class":133},[120,1623,1624],{"class":137}," fn",[120,1626,1627],{"class":126}," - a callback function which mutates the frontMatter object synchronously.\n",[120,1629,1630,1632],{"class":122,"line":183},[120,1631,1606],{"class":126},[120,1633,1634],{"class":133},"@public\n",[120,1636,1637],{"class":122,"line":189},[120,1638,1639],{"class":126},"     */\n",[120,1641,1642,1645,1647,1649,1651,1654,1656,1659,1661,1664,1667,1669,1672,1675,1678,1681,1684,1686,1689,1692,1695],{"class":122,"line":205},[120,1643,1644],{"class":144},"    processFrontMatter",[120,1646,503],{"class":137},[120,1648,1499],{"class":492},[120,1650,141],{"class":133},[120,1652,1653],{"class":144}," TFile",[120,1655,98],{"class":137},[120,1657,1658],{"class":144},"fn",[120,1660,141],{"class":133},[120,1662,1663],{"class":137}," (",[120,1665,1666],{"class":492},"frontMatter",[120,1668,141],{"class":133},[120,1670,1671],{"class":499}," any",[120,1673,1674],{"class":137},") ",[120,1676,1677],{"class":133},"=>",[120,1679,1680],{"class":499}," void",[120,1682,1683],{"class":137},")",[120,1685,141],{"class":133},[120,1687,1688],{"class":144}," Promise",[120,1690,1691],{"class":137},"\u003C",[120,1693,1694],{"class":499},"void",[120,1696,1697],{"class":137},">\n",[120,1699,1700],{"class":122,"line":210},[120,1701,727],{"class":137},[15,1703,1704],{},"To use it:",[111,1706,1708],{"className":113,"code":1707,"language":115,"meta":116,"style":116},"app.fileManager.processFrontMatter(file, (frontmatter) => {\n    frontmatter[\"key1\"] = value;\n    delete frontmatter[\"key2\"];\n});\n",[43,1709,1710,1730,1747,1761],{"__ignoreMap":116},[120,1711,1712,1715,1718,1721,1724,1726,1728],{"class":122,"line":123},[120,1713,1714],{"class":137},"app.fileManager.",[120,1716,1717],{"class":144},"processFrontMatter",[120,1719,1720],{"class":137},"(file, (",[120,1722,1723],{"class":492},"frontmatter",[120,1725,1674],{"class":137},[120,1727,1677],{"class":133},[120,1729,487],{"class":137},[120,1731,1732,1735,1739,1742,1744],{"class":122,"line":130},[120,1733,1734],{"class":137},"    frontmatter[",[120,1736,1738],{"class":1737},"sYBdl","\"key1\"",[120,1740,1741],{"class":137},"] ",[120,1743,197],{"class":133},[120,1745,1746],{"class":137}," value;\n",[120,1748,1749,1752,1755,1758],{"class":122,"line":157},[120,1750,1751],{"class":133},"    delete",[120,1753,1754],{"class":137}," frontmatter[",[120,1756,1757],{"class":1737},"\"key2\"",[120,1759,1760],{"class":137},"];\n",[120,1762,1763],{"class":122,"line":163},[120,1764,1765],{"class":137},"});\n",[15,1767,1768],{},"All changes made within the callback block will be applied at once.",[31,1770,1772],{"id":1771},"improved","Improved",[36,1774,1775,1780,1810,1820],{},[39,1776,1777,1779],{},[43,1778,390],{}," now accepts an optional tooltip position.",[39,1781,317,1782,1785,1786,1789,1790,1793,1794,1797,1798,98,1801,98,1804,102,1807,50],{},[43,1783,1784],{},"size?: number"," parameter has been removed from ",[43,1787,1788],{},"setIcon",". This is now configurable via CSS. You can add override the CSS var ",[43,1791,1792],{},"--icon-size"," on the parent class of your element to override the sizing (e.g. ",[43,1795,1796],{},".parent-element { --icon-size: var(--icon-xs) } ",") The following icon sizes are available out-of-the-box: ",[43,1799,1800],{},"--icon-xs",[43,1802,1803],{},"--icon-s",[43,1805,1806],{},"--icon-m",[43,1808,1809],{},"--icon-l",[39,1811,1812,1815,1816,1819],{},[43,1813,1814],{},"editorCallback"," no longer passes the active ",[43,1817,1818],{},"view: MarkdownView",". Instead, it now provides either the MarkdownView or a MarkdownFileInfo object. This change allows for editor commands to work within a Canvas.",[39,1821,1822,1825],{},[43,1823,1824],{},"registerHoverLinkSource"," is now available in the API to register your plugin's view with the Page preview core plugin.",[31,1827,1829],{"id":1828},"no-longer-broken","No longer broken",[36,1831,1832],{},[39,1833,244,1834,1837],{},[43,1835,1836],{},"Editor.replaceSelection"," not working when run immediately after closing a modal.",[31,1839,1841],{"id":1840},"notable-changes","Notable Changes",[36,1843,1844,1851],{},[39,1845,1846,1847,1850],{},"Added support for an optional ",[43,1848,1849],{},"fundingUrl"," field the plugin manifest This is a link for users that want to donate to show appreciation and support plugin development. It's displayed when your plugin is selected in the list of community plugins.",[39,1852,1853],{},"Added macOS calendar entitlements. This allow scripts run from within Obsidian to request calendar access.",[19,1855,1857],{"id":1856},"v10-2022-10-13","v1.0 (2022-10-13)",[15,1859,1860],{},[429,1861,1862],{},[23,1863,1866],{"href":1864,"rel":1865},"https://github.com/obsidianmd/obsidian-api/compare/ff121cd...1b4f6e2",[27],"Changes since v0.15.9",[31,1868,1870],{"id":1869},"new","New",[36,1872,1873],{},[39,1874,1875,1876,50],{},"Added standard ",[23,1877,1880],{"href":1878,"rel":1879},"https://github.com/obsidianmd/obsidian-api/blob/902badd38ba907689f0917d7b193f7e33d1284fe/obsidian.d.ts#L493",[27],"color picker component",[31,1882,1772],{"id":1883},"improved-1",[36,1885,1886],{},[39,1887,1888,1891,1892,1894,1895,1898,1899,1902],{},[43,1889,1890],{},"getLeaf"," can now be used to create a leaf in a new tab, a new tab group, or a new window. The preferred usage of ",[43,1893,1890],{}," would be ",[43,1896,1897],{},"getLeaf(Keymap.isModEvent(evt))"," where ",[43,1900,1901],{},"evt"," is the user's KeyboardEvent. This allows for a consistent user experience when opening files while a modifier key is pressed.",[31,1904,1841],{"id":1905},"notable-changes-1",[36,1907,1908,1918,1924],{},[39,1909,1910,1911,1914,1915,50],{},"Workspace information is no longer saved to the ",[43,1912,1913],{},".obsidian/workspace"," file. It is now saved to ",[43,1916,1917],{},"workspace.json",[39,1919,59,1920,1923],{},[43,1921,1922],{},".has-active-menu"," class to file explorer item that received the right-click.",[39,1925,59,1926,1929],{},[43,1927,1928],{},".list-bullet"," class to HTML markup for unordered list items.",[1931,1932,1933],"style",{},"html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .shJU0, html code.shiki .shJU0{--shiki-default:#22863A}html pre.shiki code .sqxcx, html code.shiki .sqxcx{--shiki-default:#E36209}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}",{"title":116,"searchDepth":130,"depth":130,"links":1935},[1936,1942,1943,1944,1954,1955,1956,1959,1960,1966],{"id":21,"depth":130,"text":1937,"children":1938},"v1.7.2 (Insider)",[1939,1940,1941],{"id":33,"depth":157,"text":34},{"id":76,"depth":157,"text":77},{"id":219,"depth":157,"text":220},{"id":238,"depth":130,"text":239},{"id":258,"depth":130,"text":259},{"id":290,"depth":130,"text":291,"children":1945},[1946,1947,1949,1951,1953],{"id":294,"depth":157,"text":297},{"id":307,"depth":157,"text":1948},"New Vault#getFileByPath and Vault#getFolderByPath utility functions",{"id":342,"depth":157,"text":1950},"View.scope is now public",{"id":360,"depth":157,"text":1952},"New getFrontMatterInfo utility",{"id":370,"depth":157,"text":373},{"id":383,"depth":130,"text":384},{"id":407,"depth":130,"text":408},{"id":440,"depth":130,"text":441,"children":1957},[1958],{"id":467,"depth":157,"text":468},{"id":1381,"depth":130,"text":1382},{"id":1555,"depth":130,"text":1556,"children":1961},[1962,1963,1964,1965],{"id":1567,"depth":157,"text":1568},{"id":1771,"depth":157,"text":1772},{"id":1828,"depth":157,"text":1829},{"id":1840,"depth":157,"text":1841},{"id":1856,"depth":130,"text":1857,"children":1967},[1968,1969,1970],{"id":1869,"depth":157,"text":1870},{"id":1883,"depth":157,"text":1772},{"id":1905,"depth":157,"text":1841},"md",{},"/post/.obsidian/plugins/zzhub-ob-wxpublish/node_modules/obsidian/changelog","# Changelog\n\nThis CHANGELOG details any breaking changes to the API or new additions that require additional context. The versions listed below correspond to the versions of the Obsidian app. There may not be a corresponding package version for the version listed below.\n\n## [v1.7.2](\u003Chttps://github.com/obsidianmd/obsidian-api/commit/6933c6227617897e031f30c734f61167cedafb7d>) (Insider)\n\n### Workspace changes\n\n- New function `Plugin#onUserEnable` gives you a place to performance one-time initialize after the user installs and enables your plugin. If your plugin has a custom view, this is a good place to initialize it rather than recreating the view in `Plugin#onload`.\n- `Workspace#ensureSideLeaf` is now public. This function is a shorthand way to create a leaf in the sidebar if one does not already exist.\n- Added `WorkspaceLeaf#isDeferred` and `WorkspaceLeaf#loadIfDeferred`. As of Obsidian v1.7.2, Obsidian will now defer tabs by default. We published [a guide on how to handle deferred views](\u003Chttps://docs.obsidian.md/Plugins/Guides/Understanding+deferred+views>) in the developer docs.\n\n### Housekeeping\n\nWe've updated the API to prefer `unknown` to `any`. Using `any` causes Typescript to disable typechecking entirely on the returned value, so this change could uncover some hidden typing issues.\n\nWe also removed `prepareQuery`, `fuzzySearch`, and `PreparedQuery` from the API. If your plugin is using one of these functions, you should migrate to `prepareFuzzySearch`.\n\n```ts\n// Old\nlet pq: PreparedQuery = prepareQuery(q);\n...\nfuzzySearch(pq, text);\n\n\n// New\nlet fuzzy = prepareFuzzySearch(q);\n...\nfuzzy(text);\n```\n\n### Misc\n\n- New `Plugin#removeCommand` is now available if your plugin needs to dynamically remove commands (for example, if your plugin allows for user-created commands).\n- `SuggestModal#selectActiveSuggestion` is now public. This is useful to provide an alternative hotkey to your SuggestModal that still triggers the selected item.\n\n## v1.7.0 (Insider)\n\n- Fixed `FileSystemAdapter#rmdir(dirPath, false)` always throwing an error when attempting to delete an empty directory.\n- Added a `data-type` to the Markdown embed container using subpath type.\n\n## v1.5.11\n\n- Fixed `revealLeaf` failing to focus the correct window.\n- If you are using the `SliderComponent` in your app, be aware, the behavior of the component has changed in 1.5.9. Now, instead of updating the value when the slider is dragged, it will only update the value when the slider is released. If your plugin was relying on the old behavior, you will need to update your plugin code to call `.setInstant(true)` on the slider.\n  **Note:** Because `setInstant` is a new function, you'll also need to check to see if the function exists before calling it. This will ensure your plugin maintains backwards compatibility when being run on older versions of Obsidian.\n\n## v1.5.7\n\n### `Plugin#onExternalSettingsChange`\n\nThere's a new callback function for plugins to react to when plugin settings (`data.json`) get changed on disk. This callback can be used to reload settings when they are updated by an external application or when the settings get synced using a file syncing service like Obsidian Sync.\n\n### New `Vault#getFileByPath` and `Vault#getFolderByPath` utility functions\n\nThe `getAbstractFileByPath` has long been a point of confusion with plugin developers. More often than not,\nyou are looking for either a file or a folder. And you know which you want at call-time. Instead of using\n`getAbstractFileByPath` then checking if the result is an instance of `TFile` or `TFolder`, now you can just\nuse `getFileByPath` or `getFolderByPath` to automatically do this check.\n\n### `View.scope` is now public\n\nFinally `scope` is made public on the `View` class. This means you can assign hotkeys for when your view is\nactive and focused.\n\n### New `getFrontMatterInfo` utility\n\nThere is now a canonical way to find the offsets of where the frontmatter ends and where the content starts in a file.\n\n### `FileManager#getAvailablePathForAttachment`\n\nIf your plugin saves attachments to the vault, you should be using `getAvailablePathForAttachment`. It will generate a safe path for you to use that respects the user's settings for file attachments.\n\n\n## v1.4.4\n\nWe've exposed our helper function for setting tooltips on elements (`setTooltip`) as well as added a new progress bar component.\n\nThe `FileManager#processFrontMatter` function now also exposes the DataWriteOptions argument to be consistent with the other `process` and `write` functions.\n\n## v1.4.0\n\nWe've made some changes to `CachedMetadata` to support **Properties**. `FrontMatterCache` is now no longer a `CacheItem`—meaning that it doesn't have a position. Instead, is it a _Reference_.\n\nAnother big change in v.1.4 is that frontmatter now supports wikilinks. If a value in the frontmatter can be interpreted as a link, it will be cached inside `CachedMetadata.frontmatterLinks`.\n\n## v1.1.3\n\n- Updated the [Canvas spec](https://github.com/obsidianmd/obsidian-api/blob/master/canvas.d.ts) to indicate that colors can be stored in 1 or 2 formats:\n  - as a hex string (i.e. \"#FFFFFF\")\n  - as a number \"1\", \"2\", etc.\n\n  If it's a number, this refers to the palette position. It can be themed via CSS variables.\n\n\n### Theme Changes\n\nThere are some new CSS variables related to canvas and callouts in 1.1.3+. All the extended palette colors now have an RGB variant that is used for callouts and canvas colors. The hex values are primarily used for syntax highlighting.\n\n```css\nbody {\n    --callout-bug: var(--color-red-rgb);\n    --callout-default: var(--color-blue-rgb);\n    --callout-error: var(--color-red-rgb);\n    --callout-example: var(--color-purple-rgb);\n    --callout-fail: var(--color-red-rgb);\n    --callout-important: var(--color-cyan-rgb);\n    --callout-info: var(--color-blue-rgb);\n    --callout-question: var(--color-yellow-rgb);\n    --callout-success: var(--color-green-rgb);\n    --callout-summary: var(--color-cyan-rgb);\n    --callout-tip: var(--color-cyan-rgb);\n    --callout-todo: var(--color-blue-rgb);\n    --callout-warning: var(--color-orange-rgb);\n    --callout-quote: 158, 158, 158;\n}\n.theme-light {\n    --color-red-rgb: 228, 55, 75;\n    --color-red: #E4374B;\n\n    --color-orange-rgb: 217, 108, 0;\n    --color-orange: #d96c00;\n\n    --color-yellow-rgb: 189, 142, 55;\n    --color-yellow: #BD8E37;\n\n    --color-green-rgb: 12, 181, 79;\n    --color-green: #0cb54f;\n\n    --color-cyan-rgb: 45, 183, 181;\n    --color-cyan: #2db7b5;\n\n    --color-blue-rgb: 8, 109, 221;\n    --color-blue: #086DDD;\n\n    --color-purple-rgb: 135, 107, 224;\n    --color-purple: #876be0;\n\n    --color-pink-rgb: 195, 43, 116;\n    --color-pink: #C32B74;\n}\n.theme-dark {\n    --color-red-rgb: 251, 70, 76;\n    --color-red: #fb464c;\n\n    --color-orange-rgb: 233, 151, 63;\n    --color-orange: #E9973F;\n\n    --color-yellow-rgb: 224, 222, 113;\n    --color-yellow: #E0DE71;\n\n    --color-green-rgb: 68, 207, 110;\n    --color-green: #44CF6E;\n\n    --color-cyan-rgb: 83, 223, 221;\n    --color-cyan: #53DFDD;\n\n    --color-blue-rgb: 2, 122, 255;\n    --color-blue: #027aff;\n\n    --color-purple-rgb: 168, 130, 255;\n    --color-purple: #a882ff;\n\n    --color-pink-rgb: 250, 153, 205;\n    --color-pink: #FA99CD;\n}\n```\n\n\n## v1.1.1 (2022-12-8 — Insider build)\n\n_[Changes since v1.0](https://github.com/obsidianmd/obsidian-api/compare/32fe4c3f...6161bf59)_\n\n- [`file-open`](https://github.com/obsidianmd/obsidian-api/blob/ec589e9762a1d7e2faad01f894cb34c41b10ecaf/obsidian.d.ts#L4189) event is now fired when focusing a Canvas file card.\n- Exposed the `activeEditor` on the Workspace. When a markdown view is active, this will point to the underlying `MarkdownEditView`. If a canvas view is active, this will be an EmbeddedEditor component.\n\nWith these two changes, plugins should be able to adapt to the new Canvas view quite easily. Custom\nviews that react the the currently focused views will automatically respond to the user clicking \non file cards in the canvas. If a plugin is currently accessing the `Editor` using the following\napproach:\n\n```ts\nlet view = app.workspace.getActiveViewOfType(MarkdownView);\n\nif (view) {\n    let editor = view.editor;\n    // or\n    let file = view.file;\n}\n```\n\nInstead you can access the `editor` or `file` by looking under the `activeEditor`:\n```ts\nlet { activeEditor } = app.workspace;\nif (activeEditor) {\n    let editor = activeEditor.editor;\n    let file = activeEditor.file;\n}\n```\n\n## v1.1.0 (2022-12-05 — Insider build)\n\n_[Changes since v1.0](https://github.com/obsidianmd/obsidian-api/compare/1b4f6e2...32fe4c3f)_\n\n### New Metadata API\n\nIn anticipation of bigger improvements to metadata and frontmatter in Obsidian, we have introduced a new metadata API.\nIt is currently defined as follows:\n\n```ts\ninterface FileManager {\n/**\n     * Atomically read, modify, and save the frontmatter of a note.\n     * The frontmatter is passed in as a JS object, and should be mutated directly to achieve the desired result.\n     * @param file - the file to be modified. Must be a markdown file.\n     * @param fn - a callback function which mutates the frontMatter object synchronously.\n     * @public\n     */\n    processFrontMatter(file: TFile, fn: (frontMatter: any) => void): Promise\u003Cvoid>\n}\n```\n\nTo use it:\n\n```ts\napp.fileManager.processFrontMatter(file, (frontmatter) => {\n    frontmatter[\"key1\"] = value;\n    delete frontmatter[\"key2\"];\n});\n```\n\nAll changes made within the callback block will be applied at once.\n\n\n### Improved\n\n- `setTooltip` now accepts an optional tooltip position.\n- The `size?: number` parameter has been removed from `setIcon`. This is now configurable via CSS. You can add override the CSS var `--icon-size` on the parent class of your element to override the sizing (e.g. `.parent-element { --icon-size: var(--icon-xs) } `) The following icon sizes are available out-of-the-box: `--icon-xs`, `--icon-s`, `--icon-m`, and `--icon-l`.\n- `editorCallback` no longer passes the active `view: MarkdownView`. Instead, it now provides either the MarkdownView or a MarkdownFileInfo object. This change allows for editor commands to work within a Canvas.\n- `registerHoverLinkSource` is now available in the API to register your plugin's view with the Page preview core plugin.\n\n### No longer broken\n\n- Fixed `Editor.replaceSelection` not working when run immediately after closing a modal.\n\n### Notable Changes\n\n- Added support for an optional `fundingUrl` field the plugin manifest This is a link for users that want to donate to show appreciation and support plugin development. It's displayed when your plugin is selected in the list of community plugins.\n- Added macOS calendar entitlements. This allow scripts run from within Obsidian to request calendar access.\n\n## v1.0 (2022-10-13)\n\n_[Changes since v0.15.9](https://github.com/obsidianmd/obsidian-api/compare/ff121cd...1b4f6e2)_\n\n### New\n\n- Added standard [color picker component](https://github.com/obsidianmd/obsidian-api/blob/902badd38ba907689f0917d7b193f7e33d1284fe/obsidian.d.ts#L493).\n\n### Improved\n\n- `getLeaf` can now be used to create a leaf in a new tab, a new tab group, or a new window. The preferred usage of `getLeaf` would be `getLeaf(Keymap.isModEvent(evt))` where `evt` is the user's KeyboardEvent. This allows for a consistent user experience when opening files while a modifier key is pressed.\n\n### Notable Changes\n\n- Workspace information is no longer saved to the `.obsidian/workspace` file. It is now saved to `workspace.json`.\n- Added `.has-active-menu` class to file explorer item that received the right-click.\n- Added `.list-bullet` class to HTML markup for unordered list items.\n",{"title":5,"description":17},"post/.obsidian/plugins/zzhub-ob-wxpublish/node_modules/obsidian/CHANGELOG","rYx27Vc-sOKvWXHXUWeslT4vyIqLx4NYkd7tVd6Fao0",[1979,1986,1990,1994,1998,2003,2006,2011,2015,2019,2023,2028,2032,2036,2040,2044,2048,2053,2058,2062,2066,2070,2074,2079,2083,2087,2096,2101,2105,2109,2114,2118,2122,2126,2130,2135,2141,2146,2150,2154,2158,2163,2167,2171,2176,2180,2184,2188,2192,2197,2201,2206,2210,2214,2218,2223,2227,2231,2236,2240,2244,2248,2252,2257,2261,2265,2270,2274,2278,2283,2287,2291,2295,2299,2303,2308,2312,2316,2320,2325,2329,2333,2337,2342,2346,2350,2354,2358,2363,2367,2371,2375,2379,2384,2388,2395,2401,2406,2411,2416,2421,2426,2431,2436,2441,2446,2452],{"id":1980,"path":1981,"title":1982,"date":1983,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/2026-7-16.md","/post/nezus/2026/07/2026-7-16","2026年7月16日下午，台积电法说会上传出一个数字，让全球半导体圈炸了锅。","2026-07-17T00:00:00.000Z","#202607AI资讯","storytelling",{"id":1987,"path":1988,"title":1989,"date":1983,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/anthropic-ai.md","/post/nezus/2026/07/anthropic-ai","一个周末干掉四年：Anthropic 用 AI 两周搬完百万行代码，工程师沉默了",{"id":1991,"path":1992,"title":1993,"date":1983,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/google-20.md","/post/nezus/2026/07/google-20","欧盟一纸裁决，Google 20年护城河被撕开第一道口子",{"id":1995,"path":1996,"title":1997,"date":1983,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/xai-grok.md","/post/nezus/2026/07/xai-grok","xAI给Grok装上定时任务能力",{"id":1999,"path":2000,"title":2001,"date":2002,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/apple.md","/post/nezus/2026/07/apple","Apple智能落地中国，阿里千问成幕后赢家","2026-07-16T00:00:00.000Z",{"id":2004,"path":2005,"title":2001,"date":2002,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/deepmind.md","/post/nezus/2026/07/deepmind",{"id":2007,"path":2008,"title":2009,"date":2002,"tags":6,"group":1984,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/07/gpt-vibe-coding-paste.md","/post/nezus/2026/07/gpt-vibe-coding-paste","用GPT Vibe Coding一个常用付费软件：Paste","user",{"id":2012,"path":2013,"title":2014,"date":2002,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/grok-build-agent.md","/post/nezus/2026/07/grok-build-agent","马斯克开源Grok Build，编程Agent进入白嫖时代",{"id":2016,"path":2017,"title":2018,"date":2002,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/openai-ai.md","/post/nezus/2026/07/openai-ai","OpenAI造了个AI黑客，专攻自家模型",{"id":2020,"path":2021,"title":2022,"date":2002,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/wps-comate-copilot.md","/post/nezus/2026/07/wps-comate-copilot","金山办公掏出WPS Comate，正面硬刚微软Copilot",{"id":2024,"path":2025,"title":2026,"date":2027,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/295b.md","/post/nezus/2026/07/295b","腾讯把295B大模型塞进了单张显卡","2026-07-15T00:00:00.000Z",{"id":2029,"path":2030,"title":2031,"date":2027,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/git-cursor.md","/post/nezus/2026/07/git-cursor","打开一个Git仓库Cursor就自动执行了恶意代码",{"id":2033,"path":2034,"title":2035,"date":2027,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/gpt-5-6-mac.md","/post/nezus/2026/07/gpt-5-6-mac","GPT-5.6偷偷删光了我的Mac文件",{"id":2037,"path":2038,"title":2039,"date":2027,"tags":6,"group":1984,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/07/grok-cli-xai.md","/post/nezus/2026/07/grok-cli-xai","Grok CLI 偷传代码：xAI 把你的仓库打包上传了",{"id":2041,"path":2042,"title":2039,"date":2043,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/grok-cli-bug-done-xai.md","/post/nezus/2026/07/grok-cli-bug-done-xai","2026-07-14T00:00:00.000Z",{"id":2045,"path":2046,"title":2047,"date":2043,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/seedream-5-0-ai.md","/post/nezus/2026/07/seedream-5-0-ai","字节跳动Seedream 5.0：圈一下图片就改了，AI修图进入点选时代",{"id":2049,"path":2050,"title":2051,"date":2052,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/post-20260712-ddc9a8.md","/post/nezus/2026/07/post-20260712-ddc9a8","欧盟强推Chat Control 2.0：加密通信的生死时刻","2026-07-12T00:00:00.000Z",{"id":2054,"path":2055,"title":2056,"date":2057,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/ai-1-5.md","/post/nezus/2026/07/ai-1-5","AI烧了1.5万亿，能赚回来吗","2026-07-10T00:00:00.000Z",{"id":2059,"path":2060,"title":2061,"date":2057,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/ai.md","/post/nezus/2026/07/ai","你刷到的帖子可能全是AI写的",{"id":2063,"path":2064,"title":2065,"date":2057,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/chatgpt-openai.md","/post/nezus/2026/07/chatgpt-openai","ChatGPT学会自己干活了",{"id":2067,"path":2068,"title":2069,"date":2057,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/musk-anthropic-apology.md","/post/nezus/2026/07/musk-anthropic-apology","马斯克向Anthropic低头认错",{"id":2071,"path":2072,"title":2073,"date":2057,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/optimus.md","/post/nezus/2026/07/optimus","马斯克：Optimus不达标就开除团队",{"id":2075,"path":2076,"title":2077,"date":2078,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/anthropic-github.md","/post/nezus/2026/07/anthropic-github","Anthropic 花了一年打造的\"设计师灵魂\"，被一个 GitHub 仓库扒光了","2026-07-08T00:00:00.000Z",{"id":2080,"path":2081,"title":2082,"date":2078,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/meta-muse-image-video.md","/post/nezus/2026/07/meta-muse-image-video","扎克伯格掏出\"超级智能实验室\"第一张牌：30亿用户的社交数据，终于杀进了AI生图战场",{"id":2084,"path":2085,"title":2086,"date":2078,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/ms-mai-copilot.md","/post/nezus/2026/07/ms-mai-copilot","微软悄悄把OpenAI踢出局：Copilot正在用自研模型\"省钱\"，但你花的钱一分不少",{"id":2088,"path":2089,"title":2090,"date":2078,"tags":2091,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/yc-ceo-37k-ai-code-bloat.md","/post/nezus/2026/07/yc-ceo-37k-ai-code-bloat","每天部署37000行代码，YC CEO的\"AI神迹\"被一个波兰程序员扒光了",[2092,2093,2094,2095],"AI","代码质量","YC","Garry Tan",{"id":2097,"path":2098,"title":2099,"date":2100,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/ai-1-6-gpt.md","/post/nezus/2026/07/ai-1-6-gpt","美团扔出一颗AI核弹：1.6万亿参数，代码能力碾压GPT","2026-07-06T00:00:00.000Z",{"id":2102,"path":2103,"title":2104,"date":2100,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/post-20260706-d12be3.md","/post/nezus/2026/07/post-20260706-d12be3","黄仁勋最重磅的新品，跳票了",{"id":2106,"path":2107,"title":2108,"date":2100,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/x-ai.md","/post/nezus/2026/07/x-ai","X 悄悄对 AI 敞开了大门，然后呢？",{"id":2110,"path":2111,"title":2112,"date":2113,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/30-2700.md","/post/nezus/2026/07/30-2700","AI Agent自主完成全球首例勒索攻击","2026-07-04T00:00:00.000Z",{"id":2115,"path":2116,"title":2117,"date":2113,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/ai-agent.md","/post/nezus/2026/07/ai-agent","万亿砸下去，AI Agent 还是没跑起来",{"id":2119,"path":2120,"title":2121,"date":2113,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/ai-ai.md","/post/nezus/2026/07/ai-ai","AI的身份证来了：网信办首次为AI服务设立专章",{"id":2123,"path":2124,"title":2125,"date":2113,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/anthropic-steganography-china.md","/post/nezus/2026/07/anthropic-steganography-china","Anthropic用隐写术识别中国用户：口口声声说AI安全的公司，背地里给你的代码下毒",{"id":2127,"path":2128,"title":2129,"date":2113,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/nvidia-rubin-ultra-cancelled.md","/post/nezus/2026/07/nvidia-rubin-ultra-cancelled","NVIDIA Rubin Ultra取消性能腰斩",{"id":2131,"path":2132,"title":2133,"date":2134,"tags":6,"group":1984,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/07/keyboard.md","/post/nezus/2026/07/keyboard","Acti把AI Agent塞进手机键盘","2026-07-02T00:00:00.000Z",{"id":2136,"path":2137,"title":2138,"date":2139,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/ai-6-claude.md","/post/nezus/2026/06/ai-6-claude","四大AI决战文明6：Claude核平法国，还是输了","2026-06-29T00:00:00.000Z","#202606AI资讯",{"id":2142,"path":2143,"title":2144,"date":2145,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/deepseek.md","/post/nezus/2026/06/deepseek","DeepSeek成美国企业救命稻草，AI账单失控后100%切换","2026-06-28T00:00:00.000Z",{"id":2147,"path":2148,"title":2149,"date":2145,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/openai-gpt-5-6-20.md","/post/nezus/2026/06/openai-gpt-5-6-20","OpenAI发了最强模型，却被政府按住了：GPT-5.6只给20家公司用",{"id":2151,"path":2152,"title":2153,"date":2145,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/spacex-spacexai-xai-spacex.md","/post/nezus/2026/06/spacex-spacexai-xai-spacex","SpaceX 注册 SpaceXAI，马斯克要把 xAI 并入 SpaceX",{"id":2155,"path":2156,"title":2157,"date":2145,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/vision-openai-macbook.md","/post/nezus/2026/06/vision-openai-macbook","苹果Vision负责人跳槽OpenAI，触控MacBook要来了",{"id":2159,"path":2160,"title":2161,"date":2162,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/2026.md","/post/nezus/2026/06/2026","何小鹏放话：2026年底自动驾驶合法进全球","2026-06-27T00:00:00.000Z",{"id":2164,"path":2165,"title":2166,"date":2162,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/30-leaf-ai.md","/post/nezus/2026/06/30-leaf-ai","30秒克隆网红声音：Leaf开源AI分身项目",{"id":2168,"path":2169,"title":2170,"date":2162,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/400-ai.md","/post/nezus/2026/06/400-ai","400家报纸集体起诉：AI版权大战正式开打",{"id":2172,"path":2173,"title":2174,"date":2175,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/23-ai.md","/post/nezus/2026/06/23-ai","贝佐斯押注23亿美元，让AI用打游戏的方式学会控制机器人","2026-06-26T00:00:00.000Z",{"id":2177,"path":2178,"title":2179,"date":2175,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/2880-claude-ai.md","/post/nezus/2026/06/2880-claude-ai","2880万次\"偷师\"被当场抓包：Claude母公司一封信，撕开了中美AI暗战的遮羞布",{"id":2181,"path":2182,"title":2183,"date":2175,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/ai-1750-10-2.md","/post/nezus/2026/06/ai-1750-10-2","AI年收入1750亿美元，新增10亿收入只需2天",{"id":2185,"path":2186,"title":2187,"date":2175,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/ai.md","/post/nezus/2026/06/ai","深夜三点的红头文件：白宫为什么亲手掐死了全球最强AI？",{"id":2189,"path":2190,"title":2191,"date":2175,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/post-20260626-7a4a1d.md","/post/nezus/2026/06/post-20260626-7a4a1d","开源圈炸了！一个没人听过的模型，凭什么把编程天花板掀了？",{"id":2193,"path":2194,"title":2195,"date":2196,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/ai-google.md","/post/nezus/2026/06/ai-google","你的电脑，要被AI接管了：Google悄悄放了个大招","2026-06-25T00:00:00.000Z",{"id":2198,"path":2199,"title":2200,"date":2196,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/notion-cursor-ai.md","/post/nezus/2026/06/notion-cursor-ai","Notion把代码写交给了Cursor：一个文件夹就是一个AI员工",{"id":2202,"path":2203,"title":2204,"date":2205,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/alphafold-deepmind.md","/post/nezus/2026/06/alphafold-deepmind","AlphaFold之父离开DeepMind，背后藏着一盘更大的棋","2026-06-20T00:00:00.000Z",{"id":2207,"path":2208,"title":2209,"date":2205,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/cloudflare-ai-agent.md","/post/nezus/2026/06/cloudflare-ai-agent","Cloudflare给AI Agent发了身份证",{"id":2211,"path":2212,"title":2213,"date":2205,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/figure.md","/post/nezus/2026/06/figure","Figure工厂里，机器人比人多了",{"id":2215,"path":2216,"title":2217,"date":2205,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/pinecone-70.md","/post/nezus/2026/06/pinecone-70","阿里悄悄开源了内部数据库，Pinecone每月70美元要凉了？",{"id":2219,"path":2220,"title":2221,"date":2222,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/ai-50.md","/post/nezus/2026/06/ai-50","美国参议员要对AI公司征收50%的税了","2026-06-19T00:00:00.000Z",{"id":2224,"path":2225,"title":2226,"date":2222,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/claude-code.md","/post/nezus/2026/06/claude-code","Claude Code放大招：写完代码直接给你一个网页",{"id":2228,"path":2229,"title":2230,"date":2222,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/transformer-openai-27.md","/post/nezus/2026/06/transformer-openai-27","Transformer之父跳槽OpenAI：谷歌27亿美元打了水漂",{"id":2232,"path":2233,"title":2234,"date":2235,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/agent-vercel-eve-next-js-ai.md","/post/nezus/2026/06/agent-vercel-eve-next-js-ai","一个目录就是一个 Agent：Vercel 开源 Eve，Next.js 的故事要在 AI 重演？","2026-06-18T00:00:00.000Z",{"id":2237,"path":2238,"title":2239,"date":2235,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/g7.md","/post/nezus/2026/06/g7","硅谷教父在G7闭门会上说了一句话：把中国踢出去",{"id":2241,"path":2242,"title":2243,"date":2235,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/grok-4-3-amazon-bedrock.md","/post/nezus/2026/06/grok-4-3-amazon-bedrock","幻觉率全场最低，马斯克在AWS亮出了让对手沉默的底牌",{"id":2245,"path":2246,"title":2247,"date":2235,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/openai-930-2800.md","/post/nezus/2026/06/openai-930-2800","OpenAI年入930亿，却亏掉2800亿：这场豪赌，还能撑多久？",{"id":2249,"path":2250,"title":2251,"date":2235,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/vercel-ai.md","/post/nezus/2026/06/vercel-ai","Vercel悄悄扔了个炸弹：一个文件夹，就是一个AI员工",{"id":2253,"path":2254,"title":2255,"date":2256,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/5-160-tok-s-0-7-tok-s.md","/post/nezus/2026/06/5-160-tok-s-0-7-tok-s","5倍加速背后：160 tok/s起飞，0.7 tok/s坠毁","2026-06-17T00:00:00.000Z",{"id":2258,"path":2259,"title":2260,"date":2256,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/5.md","/post/nezus/2026/06/5","一个国产大模型，凌晨5点上线，然后把自己彻底交了出去",{"id":2262,"path":2263,"title":2264,"date":2256,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/deepseek-500.md","/post/nezus/2026/06/deepseek-500","DeepSeek首轮融资500亿：投资人无投票权",{"id":2266,"path":2267,"title":2268,"date":2269,"tags":6,"group":2140,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/06/15-ai.md","/post/nezus/2026/06/15-ai","15万人丢了饭碗，AI公司却在开香槟","2026-06-16T00:00:00.000Z",{"id":2271,"path":2272,"title":2273,"date":2269,"tags":6,"group":2140,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/06/kimi-k27-code-speed.md","/post/nezus/2026/06/kimi-k27-code-speed","速度快了6倍：Kimi K2.7 Code高速版，把编程AI卷进新赛道",{"id":2275,"path":2276,"title":2277,"date":2269,"tags":6,"group":2140,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/06/salesforce-36-ai-fin.md","/post/nezus/2026/06/salesforce-36-ai-fin","Salesforce 36亿美元买下AI客服公司Fin：巨头为何要为\"聊天机器人\"砸这么多钱？",{"id":2279,"path":2280,"title":2281,"date":2282,"tags":6,"group":2140,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/06/20.md","/post/nezus/2026/06/20","Meta被迫撤回20亿美元Manus收购，北京出手了","2026-06-15T00:00:00.000Z",{"id":2284,"path":2285,"title":2286,"date":2282,"tags":6,"group":2140,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/06/ai-openai-anthropic24.md","/post/nezus/2026/06/ai-openai-anthropic24","白宫AI监管被指偏袒OpenAI亚马逊，Anthropic24小时内被施压",{"id":2288,"path":2289,"title":2290,"date":2282,"tags":6,"group":2140,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/06/anthropic-dario-10--25.md","/post/nezus/2026/06/anthropic-dario-10-25","Anthropic上市前Dario自曝：文明崩溃概率10%-25%",{"id":2292,"path":2293,"title":2294,"date":2282,"tags":6,"group":2140,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/06/openai-1-5-ai.md","/post/nezus/2026/06/openai-1-5-ai","OpenAI砸1.5亿美元建合作伙伴网络，要搞AI界的安卓",{"id":2296,"path":2297,"title":2298,"date":2282,"tags":6,"group":2140,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/06/satya-nadella-ai.md","/post/nezus/2026/06/satya-nadella-ai","Satya Nadella：AI时代企业需同时构建人力资本和Token资本",{"id":2300,"path":2301,"title":2302,"date":2282,"tags":6,"group":2140,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/06/skill-ai.md","/post/nezus/2026/06/skill-ai","乔木小说创作Skill开源：AI自动生成剧情梗概人物设定",{"id":2304,"path":2305,"title":2306,"date":2307,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/anthropic.md","/post/nezus/2026/06/anthropic","Anthropic的困局：一边秘密上市，一边被政府召回","2026-06-14T00:00:00.000Z",{"id":2309,"path":2310,"title":2311,"date":2307,"tags":6,"group":2140,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/06/post-20260614-7ba4ce.md","/post/nezus/2026/06/post-20260614-7ba4ce","扎克伯格承认Meta AI转型脱轨：裁员10%、7000人转岗",{"id":2313,"path":2314,"title":2315,"date":2307,"tags":6,"group":2140,"lastmod":6,"author":1985,"sort":6},"content/post/nezus/2026/06/post-20260614-8e3b48.md","/post/nezus/2026/06/post-20260614-8e3b48","GLM-5.2全量开放：国产最强Coding模型来了",{"id":2317,"path":2318,"title":2319,"date":2307,"tags":6,"group":2140,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/06/post-20260614-ea1c30.md","/post/nezus/2026/06/post-20260614-ea1c30","谷歌安全负责人辞职：AI被用于军事，他拒绝沉默",{"id":2321,"path":2322,"title":2323,"date":2324,"tags":6,"group":2140,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/06/428b-minimax.md","/post/nezus/2026/06/428b-minimax","428B参数全部开源，MiniMax这步棋走对了","2026-06-13T00:00:00.000Z",{"id":2326,"path":2327,"title":2328,"date":2324,"tags":6,"group":2140,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/06/5-claude-anthropic-it.md","/post/nezus/2026/06/5-claude-anthropic-it","5万人用Claude办公，Anthropic拿下印度IT巨头",{"id":2330,"path":2331,"title":2332,"date":2324,"tags":6,"group":2140,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/06/agent.md","/post/nezus/2026/06/agent","豆包悄悄上了任务模式，字节的Agent野心藏不住了",{"id":2334,"path":2335,"title":2336,"date":2324,"tags":6,"group":2140,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/06/kimi-token-30.md","/post/nezus/2026/06/kimi-token-30","Kimi代码模型开源，推理token直接砍30%",{"id":2338,"path":2339,"title":2340,"date":2341,"tags":6,"group":2140,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/06/7-0-410.md","/post/nezus/2026/06/7-0-410","成立7个月，0产品，估值410亿美元——贝佐斯的新公司疯了","2026-06-12T00:00:00.000Z",{"id":2343,"path":2344,"title":2345,"date":2341,"tags":6,"group":2140,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/06/ai-ai.md","/post/nezus/2026/06/ai-ai","当造AI的人亲口说AI会抢走工作",{"id":2347,"path":2348,"title":2349,"date":2341,"tags":6,"group":2140,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/06/cursor-ai-ai.md","/post/nezus/2026/06/cursor-ai-ai","Cursor上新功能：AI动手前先让另一个AI批准",{"id":2351,"path":2352,"title":2353,"date":2341,"tags":6,"group":2140,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/06/midjourney.md","/post/nezus/2026/06/midjourney","你打开Midjourney的时候，它已经不是昨天的它了",{"id":2355,"path":2356,"title":2357,"date":2341,"tags":6,"group":2140,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/06/post-20260612-5071b7.md","/post/nezus/2026/06/post-20260612-5071b7","全自主无人机第一次杀了人，战争进入新纪元",{"id":2359,"path":2360,"title":2361,"date":2362,"tags":6,"group":2140,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/06/100-600.md","/post/nezus/2026/06/100-600","豆包说退票不到 100 块，结果花了 600——然后它帮用户写好了起诉自己的状子","2026-06-11T00:00:00.000Z",{"id":2364,"path":2365,"title":2366,"date":2362,"tags":6,"group":2140,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/06/180-ai-agent.md","/post/nezus/2026/06/180-ai-agent","180亿美元对冲基金炒掉所有分析师，改用数百个AI Agent炒股",{"id":2368,"path":2369,"title":2370,"date":2362,"tags":6,"group":2140,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/06/google-4.md","/post/nezus/2026/06/google-4","Google 开源 4 倍速扩散模型：自回归的黄昏？",{"id":2372,"path":2373,"title":2374,"date":2362,"tags":6,"group":2140,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/06/google-ai.md","/post/nezus/2026/06/google-ai","Google 因 AI '说错话'被判赔：幻觉的时代结束了？",{"id":2376,"path":2377,"title":2378,"date":2362,"tags":6,"group":2140,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/06/ip-ai.md","/post/nezus/2026/06/ip-ai","周星驰三部经典电影 IP 开放 AI 二创：火山方舟想做什么？",{"id":2380,"path":2381,"title":2382,"date":2383,"tags":6,"group":2140,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/06/gui.md","/post/nezus/2026/06/gui","人类需要GUI！","2026-06-09T00:00:00.000Z",{"id":2385,"path":2386,"title":2387,"date":2383,"tags":6,"group":2140,"lastmod":6,"author":2010,"sort":6},"content/post/nezus/2026/06/hermes-desktop.md","/post/nezus/2026/06/hermes-desktop","Hermes Desktop 安装及界面功能速览",{"id":2389,"path":2390,"title":2391,"date":2392,"tags":6,"group":2393,"lastmod":2394,"author":6,"sort":6},"content/post/ai/explore/01-interview-prompt-template.md","/post/ai/explore/01-interview-prompt-template","高级前端开发面试提示词模板","2026-01-21T07:30:52.902Z","面试SKILL","2026-01-21T07:31:28.343Z",{"id":2396,"path":2397,"title":2398,"date":2399,"tags":6,"group":2400,"lastmod":2399,"author":6,"sort":6},"content/post/ai/explore/03-interview-standard-answers.md","/post/ai/explore/03-interview-standard-answers","高级前端开发面试题标准答案","2026-01-21T07:25:00.000Z","面试SKILL:答案",{"id":2402,"path":2403,"title":2404,"date":2405,"tags":6,"group":2400,"lastmod":2405,"author":6,"sort":6},"content/post/ai/explore/03-10-team-management.md","/post/ai/explore/03-10-team-management","10.团队管理与技术债务 - 标准答案","2026-01-21T07:24:00.000Z",{"id":2407,"path":2408,"title":2409,"date":2410,"tags":6,"group":2400,"lastmod":2410,"author":6,"sort":6},"content/post/ai/explore/03-09-micro-frontend.md","/post/ai/explore/03-09-micro-frontend","9.微前端架构设计 - 标准答案","2026-01-21T07:23:00.000Z",{"id":2412,"path":2413,"title":2414,"date":2415,"tags":6,"group":2400,"lastmod":2415,"author":6,"sort":6},"content/post/ai/explore/03-08-nodejs-performance.md","/post/ai/explore/03-08-nodejs-performance","8.Node.js 性能调优 - 标准答案","2026-01-21T07:22:00.000Z",{"id":2417,"path":2418,"title":2419,"date":2420,"tags":6,"group":2400,"lastmod":2420,"author":6,"sort":6},"content/post/ai/explore/03-07-event-loop.md","/post/ai/explore/03-07-event-loop","7.Node.js Event Loop - 标准答案","2026-01-21T07:21:00.000Z",{"id":2422,"path":2423,"title":2424,"date":2425,"tags":6,"group":2400,"lastmod":2425,"author":6,"sort":6},"content/post/ai/explore/03-06-nuxt-ssr.md","/post/ai/explore/03-06-nuxt-ssr","6.Nuxt.js SSR 实战 - 标准答案","2026-01-21T07:20:00.000Z",{"id":2427,"path":2428,"title":2429,"date":2430,"tags":6,"group":2400,"lastmod":2430,"author":6,"sort":6},"content/post/ai/explore/03-05-vue-diff.md","/post/ai/explore/03-05-vue-diff","5.Vue Diff 算法 - 标准答案","2026-01-21T07:19:00.000Z",{"id":2432,"path":2433,"title":2434,"date":2435,"tags":6,"group":2400,"lastmod":2435,"author":6,"sort":6},"content/post/ai/explore/03-04-vue-migration.md","/post/ai/explore/03-04-vue-migration","4.Vue2 迁移到 Vue3 - 标准答案","2026-01-21T07:18:00.000Z",{"id":2437,"path":2438,"title":2439,"date":2440,"tags":6,"group":2400,"lastmod":2440,"author":6,"sort":6},"content/post/ai/explore/03-03-vue3-performance.md","/post/ai/explore/03-03-vue3-performance","3.Vue3 性能优化 - 标准答案","2026-01-21T07:17:00.000Z",{"id":2442,"path":2443,"title":2444,"date":2445,"tags":6,"group":2400,"lastmod":2445,"author":6,"sort":6},"content/post/ai/explore/03-02-component-communication.md","/post/ai/explore/03-02-component-communication","2.Vue 组件通信 - 标准答案","2026-01-21T07:16:00.000Z",{"id":2447,"path":2448,"title":2449,"date":2450,"tags":6,"group":2400,"lastmod":2451,"author":6,"sort":6},"content/post/ai/explore/03-01-vue-reactive.md","/post/ai/explore/03-01-vue-reactive","1.Vue 响应式原理 - 标准答案","2026-01-21T06:53:18.971Z","2026-01-21T07:15:00.000Z",{"id":2453,"path":2454,"title":2455,"date":2456,"tags":6,"group":2393,"lastmod":2457,"author":6,"sort":6},"content/post/ai/explore/02-interview-questions.md","/post/ai/explore/02-interview-questions","高级前端开发面试题目清单","2026-01-21T06:39:25.673Z","2026-01-21T07:12:45.186Z",[6,2459],{"title":2460,"path":2461,"stem":2462},"大模型，快就是好","/post/nezus/2026/08/post-20260807-58a2a9","post/nezus/2026/08/post-20260807-58a2a9",1786091413347]