Skip to content

fix(client): drop modal chrome from embedded settings sections - #2

Merged
Anans-Amarre merged 1 commit into
slow-stack:mainfrom
Liuxin4950:fix/embedded-settings-panel-chrome
Aug 16, 2026
Merged

Anans-Amarre merged 1 commit into
slow-stack:mainfrom
Liuxin4950:fix/embedded-settings-panel-chrome

Conversation

@Liuxin4950

Copy link
Copy Markdown
Contributor

The MemoryPanel and SettingsPanel both render in two modes: a portal modal (styles.panel, full chrome) and an embedded variant used by the 'settings.section' slot inside the DSH settings page. The embedded branch reused the modal panel style with only width/maxWidth/maxHeight overridden, so the section rendered as a floating card — white background, 12px radius, 16px padding, and a 0 8px 40px shadow — inside the settings host's own surface, producing an unwanted inset box with a shadow on the left edge of the settings page.

The embedded variant now uses a plain full-width flex column with no background, radius, padding, or shadow; the modal (portal) mode keeps the panel chrome unchanged.

Adds a regression test asserting both panels' embedded branches carry none of the modal-only chrome.

The MemoryPanel and SettingsPanel both render in two modes: a portal
modal (styles.panel, full chrome) and an embedded variant used by the
'settings.section' slot inside the DSH settings page. The embedded
branch reused the modal panel style with only width/maxWidth/maxHeight
overridden, so the section rendered as a floating card — white
background, 12px radius, 16px padding, and a 0 8px 40px shadow — inside
the settings host's own surface, producing an unwanted inset box with a
shadow on the left edge of the settings page.

The embedded variant now uses a plain full-width flex column with no
background, radius, padding, or shadow; the modal (portal) mode keeps
the panel chrome unchanged.

Adds a regression test asserting both panels' embedded branches carry
none of the modal-only chrome.
@Anans-Amarre

Copy link
Copy Markdown
Collaborator

已收到你的 PR,感谢贡献!明天我会测试后合并 🙏

@Anans-Amarre
Anans-Amarre merged commit b07fbac into slow-stack:main Aug 16, 2026
@Anans-Amarre

Copy link
Copy Markdown
Collaborator

Hi @Liuxin4950, thanks for the contribution! 🙏

I tested your PR:

  • Ran the full test suite on your branch: 259/259 passing (including your new regression test)
  • Security review: clean — pure UI style change, no XSS / injection / logic risk

Merged ✅ (squash) and released as v0.2.6 on npm.

Great fix — the embedded panels now render flat in the settings page instead of floating cards. Looking forward to more contributions! 🚀

Anans-Amarre added a commit that referenced this pull request Aug 16, 2026
Anans-Amarre pushed a commit that referenced this pull request Aug 16, 2026
The MemoryPanel and SettingsPanel both render in two modes: a portal
modal (styles.panel, full chrome) and an embedded variant used by the
'settings.section' slot inside the DSH settings page. The embedded
branch reused the modal panel style with only width/maxWidth/maxHeight
overridden, so the section rendered as a floating card — white
background, 12px radius, 16px padding, and a 0 8px 40px shadow — inside
the settings host's own surface, producing an unwanted inset box with a
shadow on the left edge of the settings page.

The embedded variant now uses a plain full-width flex column with no
background, radius, padding, or shadow; the modal (portal) mode keeps
the panel chrome unchanged.

Adds a regression test asserting both panels' embedded branches carry
none of the modal-only chrome.
Anans-Amarre added a commit that referenced this pull request Aug 16, 2026
Anans-Amarre pushed a commit that referenced this pull request Aug 16, 2026
The MemoryPanel and SettingsPanel both render in two modes: a portal
modal (styles.panel, full chrome) and an embedded variant used by the
'settings.section' slot inside the DSH settings page. The embedded
branch reused the modal panel style with only width/maxWidth/maxHeight
overridden, so the section rendered as a floating card — white
background, 12px radius, 16px padding, and a 0 8px 40px shadow — inside
the settings host's own surface, producing an unwanted inset box with a
shadow on the left edge of the settings page.

The embedded variant now uses a plain full-width flex column with no
background, radius, padding, or shadow; the modal (portal) mode keeps
the panel chrome unchanged.

Adds a regression test asserting both panels' embedded branches carry
none of the modal-only chrome.
Anans-Amarre added a commit that referenced this pull request Aug 16, 2026
Anans-Amarre added a commit that referenced this pull request Aug 20, 2026
- listBySession 默认过滤 session_disposed_at,includeDisposed 可显示全部(#1)
- service.listBySession 透传 includeDisposed(#2)
- toApiList 带 disposed 标记,restore 不再盲操作(#3)
- 补 (session_id, session_disposed_at) 复合索引,置于 addColumn 迁移后(#4)
modusensus pushed a commit that referenced this pull request Sep 9, 2026
#107)

* feat(retrieval): recall fusion recipes + signal transparency (PR0+PR1)

PR0 — benchmark harness trust:
- Fix seeded-id mapping: store.save now receives the caller's id, so the
  seeded mem_* ids match TEST_CASES.expected (previously every row got a UUID
  and the harness reported 0% recall on both configs).
- Expand the seed corpus with cross-topic distractor memories + 2 query cases,
  raising the recall bar for the fused ranking.
- Add runFusionBenchmark() + --fusion CLI for the blend/rrf/minmax A/B.

PR1 — #1 recall fusion + #2 signal transparency (off by default):
- config.recallFusion: enum [blend | rrf | minmax], default �lend (legacy
  behavior preserved byte-for-byte; rrf = Reciprocal Rank Fusion with k=60,
  minmax = scale-aware normalized weighted sum).
- config.signalTransparency: bool; when on, each search result carries a
  signals object { keyword, vector, bm25, final }. Decorative only.
- Add both to the feature-flag whitelist so the panel can toggle them.
- Update /features effective-count test (37 -> 37) for the two new keys.

Verified: benchmark (legacy 83.3% -> fused 100% Recall@5), service-search
blend weights (0.92/0.9) unchanged, api featureSnapshot, and ~200 panel/inject
tests pass.

* fix(retrieval): honor mode contract in rrf/minmax + searchMemories docs

CodeRabbit flagged that opt-in fusion recipes could change keyword-only
behavior. Verified: rrf/minmax ignored mode entirely, so a mode=keyword
request would pull vector/BM25 rows in. Align both recipes with blend:

- mode=keyword short-circuits to keyword-only (byte-for-byte mirror of
  the blend branch), so no recipe ever bleeds vector/BM25 into the
  text-only path.
- mode=auto re-applies keyword-leads ordering for rrf/minmax, preserving
  the pre-fusion auto contract (keyword first, recipe fills the slots).

Also adds a JSDoc for searchMemories and a regression test asserting
mode=keyword stays keyword-only across all three recipes.

Default remains blend=legacy; zero behavior change for existing users.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants