Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
811871e978 | ||
|
|
fbf1da7452 |
No files matched your search
@@ -2,6 +2,13 @@
|
|||||||
|
|
||||||
Every release, newest first, generated from the commits in each release.
|
Every release, newest first, generated from the commits in each release.
|
||||||
|
|
||||||
|
## v0.1.4 — 2026-09-26
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- register the settings card instead of throwing while building it
|
||||||
|
|
||||||
|
|
||||||
## v0.1.3 — 2026-09-26
|
## v0.1.3 — 2026-09-26
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|||||||
+10
-2
@@ -385,6 +385,16 @@ window.__ModuleLoader__.load({
|
|||||||
*/
|
*/
|
||||||
constructor(ctx) {
|
constructor(ctx) {
|
||||||
this.ctx = ctx
|
this.ctx = ctx
|
||||||
|
// Every field the projection reads must exist BEFORE anything projects.
|
||||||
|
//
|
||||||
|
// `SettingsFormModel.bind()` is not a subscription setter: it builds the
|
||||||
|
// snapshot store from one immediate `project()` call, so the projection
|
||||||
|
// runs once, right here, inside this constructor. Assigning `describe`
|
||||||
|
// after `bind` made that first projection read `undefined.getSnapshot()`
|
||||||
|
// — a TypeError thrown while the inject callback was registering the
|
||||||
|
// card, which aborted the registration and left the plugin with no
|
||||||
|
// settings section at all and nothing in the UI to say so.
|
||||||
|
this.describe = ctx.configForms.describe()
|
||||||
this.form = ctx.configForms.get(SETTINGS_ENTRY)
|
this.form = ctx.configForms.get(SETTINGS_ENTRY)
|
||||||
this.model = new SettingsFormModel(
|
this.model = new SettingsFormModel(
|
||||||
this.form,
|
this.form,
|
||||||
@@ -399,8 +409,6 @@ window.__ModuleLoader__.load({
|
|||||||
})),
|
})),
|
||||||
)
|
)
|
||||||
this.store = this.model.bind(() => this.projection())
|
this.store = this.model.bind(() => this.projection())
|
||||||
/** The describe mirror that knows whether a secret is configured. */
|
|
||||||
this.describe = ctx.configForms.describe()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Everything the page renders, rebuilt whenever the form or a draft moves. */
|
/** Everything the page renders, rebuilt whenever the form or a draft moves. */
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "dsh-recall",
|
"name": "dsh-recall",
|
||||||
"version": "0.1.3",
|
"version": "0.1.4",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "Local-embedding code recall for DeepSeek Harness — returns ranked excerpts with line ranges instead of whole files, so the context window stops growing with every read.",
|
"description": "Local-embedding code recall for DeepSeek Harness — returns ranked excerpts with line ranges instead of whole files, so the context window stops growing with every read.",
|
||||||
|
|||||||
@@ -109,6 +109,11 @@ function makePrimitives(record) {
|
|||||||
|
|
||||||
bind(project) {
|
bind(project) {
|
||||||
this.project = project
|
this.project = project
|
||||||
|
// Faithful to the framework: `bind` is not a subscription setter, it
|
||||||
|
// builds the snapshot store from ONE immediate projection. A stub that
|
||||||
|
// only stored the projection would let a controller read a field it has
|
||||||
|
// not assigned yet — which is exactly the bug this reproduces.
|
||||||
|
project()
|
||||||
return { getSnapshot: () => project(), subscribe: () => () => {} }
|
return { getSnapshot: () => project(), subscribe: () => () => {} }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user