mirror of
https://github.com/samvallad33/vestige.git
synced 2026-07-04 22:02:14 +02:00
* patch(backfill-safety): VESTIGE_BACKFILL_AUTOFIRE gate (default OFF) + bounded promote_memory_backfill
Off-by-default env gate around step-8.5 auto-fire in run_consolidation (decouples
backfill from consolidation cadence). New promote_memory_backfill caps stability at
MIN(stability*1.5, stability+365.0) (the bound retroactive_backfill.rs:300 already
computes but discarded); both backfill entry points use it. Fixes the false 'capped'
comment. Cloud-sync excluded at build (--no-default-features). Pending upstream PR to
samvallad33/vestige. omega-backfill-safety-v2.2.0 off tag v2.2.0 (3bcd4667).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* release: v2.2.1 — Windows embeddings fix + backfill safety + first-run guide
Board-clearing patch release.
Fixes:
- #101 Windows embeddings: release.yml already restores vector-search on the
x86_64-pc-windows-msvc target (merged in #102); this release rebuilds the
Windows binary so users actually get working embeddings.
- #103 Retroactive Salience Backfill safety (from community PR #104, adjusted):
* promote_memory_backfill bounds the stability multiply to
MIN(stability*1.5, stability+365.0) on both auto-fire and manual paths.
* VESTIGE_BACKFILL_AUTOFIRE gate — default ON (preserves the shipped/documented
v2.2.0 behavior), disable with 0/false/off/no. Env value is trimmed.
* Corrected the false "capped" comment and the promote_memory_backfill doc.
* Added 3 tests: +365 cap binds, *1.5 multiply below crossover, gate parsing.
Docs:
- #83 First-Run: new docs/GETTING-STARTED.md + README pointer.
- Consolidated roadmap issues #82,#84-#92 into docs/ROADMAP.md (Tracked Issues).
- Documented VESTIGE_BACKFILL_AUTOFIRE in docs/CONFIGURATION.md.
- CHANGELOG v2.2.1 entry.
Version bumped to 2.2.1 across all manifests + Cargo.lock + dashboard build.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Peter Lauzon <inbijiburu@protonmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 line
5.3 KiB
JavaScript
1 line
5.3 KiB
JavaScript
import{TempNode as O,NodeUpdateType as D,RendererUtils as F,QuadMesh as L,NodeMaterial as f}from"./CfobEeQC.js";import{nodeObject as P,uniform as g,texture as c,passTexture as W,Fn as B,luminance as j,smoothstep as q,mix as H,vec4 as m,uniformArray as M,float as b,uv as E,Loop as Q,int as U,add as X}from"./BZQzXWp7.js";import{R as N,H as w,b as x,V as _}from"./C-SOZ1Oi.js";const p=new L,Y=new x,G=new x(1,0),I=new x(0,1);let z;class J extends O{static get type(){return"BloomNode"}constructor(r,t=1,i=0,s=0){super("vec4"),this.inputNode=r,this.strength=g(t),this.radius=g(i),this.threshold=g(s),this.smoothWidth=g(.01),this._renderTargetsHorizontal=[],this._renderTargetsVertical=[],this._nMips=5,this._renderTargetBright=new N(1,1,{depthBuffer:!1,type:w}),this._renderTargetBright.texture.name="UnrealBloomPass.bright",this._renderTargetBright.texture.generateMipmaps=!1;for(let e=0;e<this._nMips;e++){const o=new N(1,1,{depthBuffer:!1,type:w});o.texture.name="UnrealBloomPass.h"+e,o.texture.generateMipmaps=!1,this._renderTargetsHorizontal.push(o);const u=new N(1,1,{depthBuffer:!1,type:w});u.texture.name="UnrealBloomPass.v"+e,u.texture.generateMipmaps=!1,this._renderTargetsVertical.push(u)}this._compositeMaterial=null,this._highPassFilterMaterial=null,this._separableBlurMaterials=[],this._textureNodeBright=c(this._renderTargetBright.texture),this._textureNodeBlur0=c(this._renderTargetsVertical[0].texture),this._textureNodeBlur1=c(this._renderTargetsVertical[1].texture),this._textureNodeBlur2=c(this._renderTargetsVertical[2].texture),this._textureNodeBlur3=c(this._renderTargetsVertical[3].texture),this._textureNodeBlur4=c(this._renderTargetsVertical[4].texture),this._textureOutput=W(this,this._renderTargetsHorizontal[0].texture),this.updateBeforeType=D.FRAME}getTextureNode(){return this._textureOutput}setSize(r,t){let i=Math.round(r/2),s=Math.round(t/2);this._renderTargetBright.setSize(i,s);for(let e=0;e<this._nMips;e++)this._renderTargetsHorizontal[e].setSize(i,s),this._renderTargetsVertical[e].setSize(i,s),this._separableBlurMaterials[e].invSize.value.set(1/i,1/s),i=Math.round(i/2),s=Math.round(s/2)}updateBefore(r){const{renderer:t}=r;z=F.resetRendererState(t,z);const i=t.getDrawingBufferSize(Y);this.setSize(i.width,i.height),t.setRenderTarget(this._renderTargetBright),p.material=this._highPassFilterMaterial,p.render(t);let s=this._renderTargetBright;for(let e=0;e<this._nMips;e++)p.material=this._separableBlurMaterials[e],this._separableBlurMaterials[e].colorTexture.value=s.texture,this._separableBlurMaterials[e].direction.value=G,t.setRenderTarget(this._renderTargetsHorizontal[e]),p.render(t),this._separableBlurMaterials[e].colorTexture.value=this._renderTargetsHorizontal[e].texture,this._separableBlurMaterials[e].direction.value=I,t.setRenderTarget(this._renderTargetsVertical[e]),p.render(t),s=this._renderTargetsVertical[e];t.setRenderTarget(this._renderTargetsHorizontal[0]),p.material=this._compositeMaterial,p.render(t),F.restoreRendererState(t,z)}setup(r){const t=B(()=>{const a=this.inputNode,l=j(a.rgb),d=q(this.threshold,this.threshold.add(this.smoothWidth),l);return H(m(0),a,d)});this._highPassFilterMaterial=this._highPassFilterMaterial||new f,this._highPassFilterMaterial.fragmentNode=t().context(r.getSharedContext()),this._highPassFilterMaterial.name="Bloom_highPass",this._highPassFilterMaterial.needsUpdate=!0;const i=[3,5,7,9,11];for(let a=0;a<this._nMips;a++)this._separableBlurMaterials.push(this._getSeparableBlurMaterial(r,i[a]));const s=M([1,.8,.6,.4,.2]),e=M([new _(1,1,1),new _(1,1,1),new _(1,1,1),new _(1,1,1),new _(1,1,1)]),o=B(([a,l])=>{const d=b(1.2).sub(a);return H(a,d,l)}).setLayout({name:"lerpBloomFactor",type:"float",inputs:[{name:"factor",type:"float"},{name:"radius",type:"float"}]}),u=B(()=>{const a=o(s.element(0),this.radius).mul(m(e.element(0),1)).mul(this._textureNodeBlur0),l=o(s.element(1),this.radius).mul(m(e.element(1),1)).mul(this._textureNodeBlur1),d=o(s.element(2),this.radius).mul(m(e.element(2),1)).mul(this._textureNodeBlur2),h=o(s.element(3),this.radius).mul(m(e.element(3),1)).mul(this._textureNodeBlur3),n=o(s.element(4),this.radius).mul(m(e.element(4),1)).mul(this._textureNodeBlur4);return a.add(l).add(d).add(h).add(n).mul(this.strength)});return this._compositeMaterial=this._compositeMaterial||new f,this._compositeMaterial.fragmentNode=u().context(r.getSharedContext()),this._compositeMaterial.name="Bloom_comp",this._compositeMaterial.needsUpdate=!0,this._textureOutput}dispose(){for(let r=0;r<this._renderTargetsHorizontal.length;r++)this._renderTargetsHorizontal[r].dispose();for(let r=0;r<this._renderTargetsVertical.length;r++)this._renderTargetsVertical[r].dispose();this._renderTargetBright.dispose()}_getSeparableBlurMaterial(r,t){const i=[];for(let n=0;n<t;n++)i.push(.39894*Math.exp(-.5*n*n/(t*t))/t);const s=c(),e=M(i),o=g(new x),u=g(new x(.5,.5)),a=E(),l=n=>s.sample(n),d=B(()=>{const n=e.element(0).toVar(),T=l(a).rgb.mul(n).toVar();return Q({start:U(1),end:U(t),type:"int",condition:"<"},({i:V})=>{const R=b(V),v=e.element(V),y=u.mul(o).mul(R),A=l(a.add(y)).rgb,C=l(a.sub(y)).rgb;T.addAssign(X(A,C).mul(v)),n.addAssign(b(2).mul(v))}),m(T.div(n),1)}),h=new f;return h.fragmentNode=d().context(r.getSharedContext()),h.name="Bloom_separable",h.needsUpdate=!0,h.colorTexture=s,h.direction=u,h.invSize=o,h}}const k=(S,r,t,i)=>P(new J(P(S),r,t,i));export{k as bloom,J as default};
|