Commit Graph

942 Commits

Author SHA1 Message Date
Sisyphus
d605720aaa Merge remote-tracking branch 'origin/main' 2026-05-03 15:27:42 +00:00
Sisyphus
03696b786a test: cover Luker persistence without Authority
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-03 15:27:16 +00:00
github-actions[bot]
10ec2ded14 chore: bump manifest version [skip ci] 2026-05-03 15:25:50 +00:00
Sisyphus
3223a88180 Merge remote-tracking branch 'origin/main' 2026-05-03 15:25:11 +00:00
Sisyphus
bb365f172e feat(panel): show Luker browser cache status
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-03 15:24:34 +00:00
github-actions[bot]
6e4ba0f226 chore: bump manifest version [skip ci] 2026-05-03 15:21:13 +00:00
Sisyphus
5a105fd4a4 fix: disable Luker browser graph mirror
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-03 14:21:52 +00:00
youzini
88512d85e9 Merge pull request #41 from Youzini-afk/dev
Dev
2026-04-29 17:43:11 +08:00
github-actions[bot]
aad44c1280 chore: bump manifest version [skip ci] 2026-04-29 09:34:31 +00:00
Youzini-afk
cc527f63d7 fix(notice): compact layout -- hide message/actions with display:none to prevent flex width pollution
The hidden __message (max-height:0, opacity:0) still had white-space:
pre-wrap which contributed to flex intrinsic width calculation in compact
layout, causing the __content flex container to miscalculate width and
truncate the title to 'ST...'.

Also add flex:0 1 auto + min-width:0 to compact __title so it properly
shrinks with ellipsis instead of overflow when space is limited.
2026-04-29 17:34:11 +08:00
github-actions[bot]
49c984f788 chore: bump manifest version [skip ci] 2026-04-29 09:29:02 +00:00
Youzini-afk
e4354e2d6d fix(notice): fix compact layout title truncated to 'ST...'
Root cause: compact layout used width:fit-content on parent with
overflow:hidden + min-width:0 on __content flex child. In flex, min-width:0
allows the child to shrink to 0, and fit-content + overflow:hidden causes
the content to collapse completely, showing only 'ST...' for the title.

Fix: Replace width:fit-content with max-width on the compact parent so
the container can size naturally. Give __content flex:1 1 0% so it takes
all available space after icon/close button, letting the title fill that
space and ellipsis only when it genuinely overflows.
2026-04-29 17:28:47 +08:00
github-actions[bot]
abe983ffca chore: bump manifest version [skip ci] 2026-04-29 09:25:32 +00:00
Youzini-afk
702b6ac493 fix(notice): fix compact layout broken by duplicate CSS blocks and missing overflow rules
Root causes:
1. Duplicate .st-bme-notice__title and .st-bme-notice__message blocks (from
   original code) were overriding the new transition-enabled versions,
   stripping transitions and causing missing overflow:hidden on __message.
2. .st-bme-notice::after pseudo-element CSS was accidentally merged into
   .st-bme-notice__message--marquee block during previous edit.
3. Compact layout .st-bme-notice__content had overflow:hidden with no
   min-width constraint, causing the title to collapse to 'ST...'.

Fixes:
- Removed all duplicate CSS blocks; single canonical definitions with transitions
- Restored ::after pseudo-element as separate rule
- Added max-width:320px with overflow:hidden explicitly for compact content
- Added normal content max-width:360px with overflow:hidden
- Restored missing .st-bme-notice__actions base rule with transition
- Added .st-bme-notice__message overflow:hidden for max-height animation
2026-04-29 17:25:19 +08:00
github-actions[bot]
04154d24b3 chore: bump manifest version [skip ci] 2026-04-29 09:20:04 +00:00
Youzini-afk
fe48e3eec9 feat(notice): add click-to-toggle between compact and detailed display modes
Click anywhere on the notice content area to toggle between compact and
detailed (normal) display modes. A subtle hint label '▸ 简洁' / '▸ 详细'
appears on hover.

CSS transitions animate the layout switch:
- Content area: max-width + opacity crossfade (280ms cubic-bezier)
- Message text: max-height expand/collapse + opacity fade (280ms)
- Actions: max-height + margin collapse + opacity fade (260ms)
- Container: grid-template-columns + padding + border-radius morph (260ms)

The switch uses a two-phase animation: content fades out (180ms), layout
changes via CSS transition, then content fades back in (60ms delay). This
prevents jarring content jumps during the layout shift.
2026-04-29 17:19:49 +08:00
github-actions[bot]
07adcf30a8 chore: bump manifest version [skip ci] 2026-04-29 09:04:10 +00:00
Youzini-afk
a070e04e56 fix(panel): prevent UI freeze when opening panel during extraction
Root cause: onStreamProgress callback fires 20-50x/sec during LLM streaming,
each calling setLastExtractionStatus with syncRuntime=true (default), which
triggers setRuntimeStatus -> refreshPanelLiveState() -> _refreshDashboard().
_refreshDashboard iterates all graph nodes (.filter x2) and performs heavy
DOM updates each time. When the panel is open, this blocks the main thread.

Fixes:
1. panel.js: Add requestAnimationFrame throttle to refreshLiveState() with
   minimum 80ms gap between actual DOM refreshes. Rapid calls are collapsed
   into a single animation frame, preventing main thread saturation.
2. extraction-controller.js: Change onStreamProgress to use syncRuntime=false
   so streaming updates no longer trigger setRuntimeStatus (which would also
   update the floating ball on each chunk).
3. recall-controller.js: Same fix for recall onStreamProgress which had
   the identical syncRuntime=true issue.
2026-04-29 17:03:49 +08:00
github-actions[bot]
aa89428777 chore: bump manifest version [skip ci] 2026-04-29 08:51:53 +00:00
Youzini-afk
e0b1bfd6ab chore: increase extraction vector sync timeout from 120s to 300s 2026-04-29 16:51:36 +08:00
github-actions[bot]
523dfd0c14 chore: bump manifest version [skip ci] 2026-04-29 08:40:13 +00:00
Youzini-afk
09de54f220 Fix maintenance gauge pointer position 2026-04-29 16:39:53 +08:00
github-actions[bot]
53f2e2f21a chore: bump manifest version [skip ci] 2026-04-29 08:36:11 +00:00
Youzini-afk
89ee477530 Fix maintenance gauge opacity 2026-04-29 16:35:47 +08:00
github-actions[bot]
b1b898b81f chore: bump manifest version [skip ci] 2026-04-29 08:29:21 +00:00
Youzini-afk
107a1cf895 Brighten maintenance mode gauge icon 2026-04-29 16:28:55 +08:00
github-actions[bot]
1ee45560d8 chore: bump manifest version [skip ci] 2026-04-29 08:22:16 +00:00
Youzini-afk
72b303a750 Fix maintenance mode gauge icon 2026-04-29 16:21:55 +08:00
github-actions[bot]
c0c7dc7630 chore: bump manifest version [skip ci] 2026-04-29 08:16:02 +00:00
Youzini-afk
97c325e631 Animate maintenance mode indicator 2026-04-29 16:15:34 +08:00
github-actions[bot]
3b71836a77 chore: bump manifest version [skip ci] 2026-04-29 08:02:18 +00:00
Youzini-afk
b7c077ed21 Implement background maintenance post-process queue 2026-04-29 16:01:32 +08:00
github-actions[bot]
93c9f2cec8 chore: bump manifest version [skip ci] 2026-04-29 06:53:33 +00:00
Youzini-afk
69dc452120 Implement background maintenance vector sync 2026-04-29 14:52:51 +08:00
github-actions[bot]
2c4a82d11d chore: bump manifest version [skip ci] 2026-04-29 06:25:30 +00:00
Youzini-afk
899774d636 feat: add maintenance concurrency modes 2026-04-29 14:25:16 +08:00
github-actions[bot]
9c84d71889 chore: bump manifest version [skip ci] 2026-04-28 19:38:50 +00:00
Youzini-afk
d956de4a61 Add post-generation extraction toggle 2026-04-29 03:38:24 +08:00
github-actions[bot]
a12b59b2b7 chore: bump manifest version [skip ci] 2026-04-28 19:26:01 +00:00
Youzini-afk
6e4ba691a8 Optimize bulk rerun extraction consolidation 2026-04-29 03:25:38 +08:00
github-actions[bot]
9eadbc0470 chore: bump manifest version [skip ci] 2026-04-28 18:43:23 +00:00
Youzini-afk
0749ef29c5 fix(extraction): add SSE stream idle timeout and vector sync timeout to prevent extraction hang
Root cause analysis: extraction can appear stuck at '正在提取xx-xx楼层' indefinitely
when the LLM API connection goes half-open (server stops sending data but keeps the
TCP connection alive). The SSE stream reader.read() would block forever with no
per-chunk idle timeout.

Changes:
1. llm/llm.js: Add LLM_STREAM_IDLE_TIMEOUT_MS (90s default) to
   parseDedicatedStreamingResponse. When no SSE data is received for 90 seconds,
   the read loop aborts with a clear timeout error instead of hanging forever.
   The idle timeout is configurable per-request (defaults to 30% of config timeout,
   minimum 30s).

2. index.js: Add EXTRACTION_VECTOR_SYNC_TIMEOUT_MS (120s) timeout wrapper around
   syncVectorState in handleExtractionSuccess. Vector sync now uses a combined
   AbortSignal (extraction signal + timeout) so that either user abort or 120s
   timeout will break out. Vector sync timeout is treated as non-fatal (doesn't
   abort the entire extraction batch).
2026-04-29 02:43:05 +08:00
github-actions[bot]
cb7ce45572 chore: bump manifest version [skip ci] 2026-04-28 17:16:23 +00:00
Youzini-afk
d702e267d3 fix(migration): 7 critical fixes for Authority migration safety and data integrity
- Fix #2: _executeStatements fallback now batches transactions (150/batch)
  and reorders upsert-before-delete to prevent data loss on payload overflow
- Fix #3: Read/write migratedToAuthority marker in chat_metadata to prevent
  re-overwriting from legacy sources after Authority migration
- Fix #1: Add OPFS → Authority migration channel (exportOpfsSnapshotForChat,
  maybeImportLegacyOpfsSnapshotToLocalStore) inserted before IndexedDB in
  migration chain
- Fix #4: Mark runtimeVectorIndexState dirty with triviumRebuildRequired
  and trigger submitAuthorityVectorRebuildJob after all three migration paths
- Fix #5: Dual-save safety snapshots to Authority blob; rollback can now
  recover from blob when local IndexedDB snapshot is unavailable
- Fix #6: Add isEmptyCheck detail and console.warn for near-empty stores
  to help diagnose residual vs real data in store-not-empty skips
- Fix #7: Add overflow warning logs and sessionStorage persistence for
  Authority offline queue max-items/max-bytes exceeded events
2026-04-29 01:15:37 +08:00
github-actions[bot]
79fbd369ba chore: bump manifest version [skip ci] 2026-04-28 15:56:26 +00:00
Youzini-afk
edaaca4bbd fix: convert named SQL params to positional for Authority server compatibility
Authority server expects params: SqlValue[] (positional array) but
ST-BME was sending params as a named map with :placeholders, causing
'invalid type: map, expected a sequence' deserialization errors.

Added convertNamedParamsToPositional() in AuthoritySqlHttpClient that
transforms :name placeholders to ? and extracts values in order before
sending to the server. This fixes the SQL probe failure that kept the
graph stuck in LOADING state.
2026-04-28 23:56:02 +08:00
github-actions[bot]
801d580a4c chore: bump manifest version [skip ci] 2026-04-28 14:29:40 +00:00
Youzini-afk
2dee3cd8ff harden(authority): add pre-scale diagnostics and request safety 2026-04-28 22:29:14 +08:00
github-actions[bot]
aa62efe5b9 chore: bump manifest version [skip ci] 2026-04-28 13:46:28 +00:00
Youzini-afk
a7e2edac88 refactor(authority): complete v0.6-only sql/blob/jobs rollout 2026-04-28 21:45:59 +08:00