Commit Graph

27 Commits

Author SHA1 Message Date
Innei ffaa7d2a1c 🐛 fix(nav-panel): keep the Home sidebar scroll offset across route round trips (#19441)
* 🐛 fix(nav-panel): keep the Home sidebar scroll offset across route round trips

Claude-Session: https://claude.ai/code/session_01974sCT5qKNQpP7mMiT5mn6

* ✅ test: scope sidebar e2e locators to visible elements and drop flaky parse timing assertion

Claude-Session: https://claude.ai/code/session_01ARGf412bndxNwVrxYxQBEa

* ✅ test(e2e): wait for a visible search control before typing in the sidebar

Claude-Session: https://claude.ai/code/session_01ARGf412bndxNwVrxYxQBEa

* 👷 ci(size-gate): record resolved dependency versions and report drift against the baseline

Claude-Session: https://claude.ai/code/session_01ARGf412bndxNwVrxYxQBEa
2026-09-12 00:01:23 +08:00
YuTengjing 13ada65ad9 ✨ feat(fts-search): safe per-entity Elasticsearch mapping migrations (#19186) 2026-09-09 09:03:40 +08:00
Innei 633ea4c279 🔧 chore(ci): lower the first-screen chunk gate to 40 (#19301)
* 🔧 chore(ci): lower the first-screen chunk gate to 40

The $initial chunking (#19288) brought the web entry graph from ~68 eager
chunks to 17, so the previous ceiling of 100 no longer catches a regression.

Claude-Session: https://claude.ai/code/session_01QKr8CsFLYmrgqbRTSipTNH

* 🔧 chore(ci): gate Vite JS chunks by baseline growth
2026-09-09 02:59:46 +08:00
Innei 4868d996ce 🔧 chore(ci): gate first-screen chunk count on a fixed ceiling (#19252)
Replace the "any newly reachable chunk fails" rule with an absolute cap of
100 chunks (--max-chunks / SIZE_GATE_MAX_CHUNKS) so chunk-name churn no
longer blocks PRs. The gzip size comparison against the canary baseline is
unchanged.

Claude-Session: https://claude.ai/code/session_017UYFqYL4YYeVFn4gr54Eew
2026-09-07 22:00:47 +08:00
Innei 8bf9734dfb ✨ feat(task-dock): promote the upload dock into an app-level task dock (#19146)
* ✨ feat(task-dock): promote the upload dock into an app-level task dock

Background work of every kind now shares one dock instead of the
uploads-only one mounted inside the resource manager.

- `features/TaskDock` renders a `DockTask[]` collected from producer
  hooks; producers own their copy, actions and results.
- One task renders as a result card, two or more as a panel grouped by
  producer. The shape follows the task count and waits 400ms before
  shrinking so a burst of dismissals cannot morph it repeatedly.
- A finished task with nothing to hand back clears itself after 3s; one
  that left a result waits for the user, and a failure always does.
- File uploads keep their store untouched and are adapted into tasks;
  `business/client/features/DockTasks` lets a distribution add its own.
- Mounted in `SPAGlobalProvider`, so the dock outlives the page that
  started the work.

Claude-Session: https://claude.ai/code/session_014iyxmqssnrPopmKV1xKJ7k

* 🐛 fix(task-dock): batch a producer's cancel-all and label the expand toggle

- `DockTask.groupCancel` lets a producer cancel its whole set in one
  operation. Walking `cancel` per task turned a folder upload's batched
  cancel into one full-list update per file.
- The header toggle said "Collapse" while collapsed, i.e. the opposite of
  what it does.

Claude-Session: https://claude.ai/code/session_014iyxmqssnrPopmKV1xKJ7k

* 🐛 fix(task-dock): lazy-load the dock and turn the size gate into a review

The dock pulled the upload/file chunks into the first-screen static
graph; it now loads through `lazy()` like the other global hosts.

The web and ASAR size gates no longer fail their jobs. A failing gate
submits a REQUEST_CHANGES review from github-actions that links the
report comment, updates it while still failing, and dismisses it once
the gate passes again.

Claude-Session: https://claude.ai/code/session_01BBCjqExuP6Ux5PRVJbU2ru
2026-09-04 23:40:24 +08:00
Innei 546cc8354e 🐛 fix(ci): select size baselines from tested lineage (#19052) 2026-09-03 01:29:50 +08:00
Innei fabe719a18 ⚡️ perf(spa): gate the first-screen import graph and shrink it 41% (#19033)
* 👷 ci(perf): gate the first-screen static import graph

Total dist size cannot see a lazy chunk being pulled back into the entry's
sync graph. Walk static imports from each SPA entry, gzip the reachable
chunks, and fail a PR when the total grows past the threshold or a chunk
name that was lazy in the canary baseline now sits on the first-screen path.

Claude-Session: https://claude.ai/code/session_01C2wPWhzukH4pniaLy6vkhD

* ⚡️ perf(spa): keep heavy @lobehub/ui members out of the first-screen chunk

Rolldown assigns chunks by static reachability, so the @lobehub/ui barrel
promoted shiki, katex, elkjs, emoji-mart and @pierre/diffs into the entry
chunk as soon as any lazy route used Markdown, Mermaid or EmojiPicker.
Rewrite the ui barrels to deep imports (same approach as lobeIconImports),
stop the tool store from importing the Claude Code render registry, lazy-load
ProfileSetupModal and the error-page Highlighter, and add a boot-path lint
rule for the known heavy members. Desktop entry graph: 3.84 MB -> 2.26 MB gz.

Claude-Session: https://claude.ai/code/session_01C2wPWhzukH4pniaLy6vkhD

* 🐛 fix(vite): resolve bare barrel specifiers from the @lobehub/ui package itself

The virtual proxy re-exported `ErrorBoundary` from "react-error-boundary",
a dependency of @lobehub/ui that pnpm does not hoist to the app root, so the
auth build failed in CI. Resolve such specifiers with the barrel's real path
as the importer.

Claude-Session: https://claude.ai/code/session_01QP9qfw629JNyNeNCwizuHY

* 👷 ci(perf): run the size gates on feature-branch pushes too

skip-duplicate-actions cancels the pull_request run of same-repo PRs in favour
of the push run, and the push run skipped every gate step, so neither the web
dist gate nor the entry-graph gate ever checked a same-repo PR. Gate on a
SIZE_GATE_ENABLED flag that is true for PRs and for pushes to non-release
branches, and resolve the PR number from the commit when commenting.

Claude-Session: https://claude.ai/code/session_01QP9qfw629JNyNeNCwizuHY
2026-09-02 20:54:05 +08:00
Innei df629b17ee 👷 ci: add bundle size gate for web dist and desktop asar (#17970)
* 👷 ci: add bundle size gate for web dist and desktop asar

- measure web dist (dist/desktop|auth|workbench) in e2e workflow builds
- measure app.asar in desktop builds (pr-build-desktop, release-desktop-canary)
- baseline stored as workflow artifacts from latest successful canary runs
- PR runs compare against baseline and fail when increase > max(3%, 512KB)
- upsert PR comment with per-entry size report

* 👷 ci: address codex review on size gate

- add result-encoding: string to baseline finder steps (raw run id,
  empty-string check works, graceful degrade no longer broken)
- emit a visible skipped section when baseline/current report is missing
  instead of the misleading comment fallback
- per-gate comment identifiers (web / asar) so e2e and desktop workflows
  no longer overwrite each other's PR comment
2026-08-06 22:31:29 +08:00
AmAzing- 1fc482cc0c ♻️ refactor(ci): simplify MCP marketplace issue bot to single CLI redirect (#17816) 2026-08-03 21:44:39 +08:00
AmAzing- f945c00d50 ♻️ refactor(lint): clean up eslint-disable directives (#17206) 2026-07-15 05:28:23 +08:00
AmAzing- b10ba8a17a ✨ feat(github): unify MCP issue label taxonomy and auto-label rescan requests (#16660)
Centralize MCP label names/colors/descriptions into shared/mcp-labels.ts and
rename to the mcp:* scheme (mcp-submission -> mcp:submission, mcp:remote ->
mcp:manual-review), matching the labels already renamed on GitHub so the bot
stops resurrecting the legacy names.

The classifier now exposes kind ('submission' | 'listing-ops' | 'none'):
rescan/refresh/re-index requests against an existing marketplace listing are
detected with high-precision patterns (listing-ops wins over submission) and
the handler labels them mcp:rescan and leaves them open — no redirect, no
close. Dedupe preflight skips mcp:rescan and classified listing-ops issues,
plus the legacy label names for issues labeled before the rename.
2026-07-03 11:28:49 +08:00
AmAzing- 1be0ad970c 🐛 fix: preserve MCP publishing feedback triage (#16631) 2026-07-02 18:45:38 +08:00
AmAzing- b52b991812 ✨ feat(ci): auto-handle MCP marketplace submission issues (#16282)
* ✨ feat(ci): auto-handle MCP marketplace submission issues

Adds a workflow + script that auto-triages "Add my MCP server to the marketplace" issues, now that listing is self-service via @lobehub/market-cli.

- Local/installable servers (npx/npm/uvx/pip/docker/stdio): post a CLI redirect comment (with the submitter's repo filled in) and close as not_planned; the comment invites reopen if mis-closed.
- Remote-only servers (URL/SSE/streamable-http, no install): cannot use the CLI, so label mcp:remote and leave open for manual review.
- Guardrails: skip marketplace pipeline/listing bugs and publishing-CLI feedback.
- Silence the triage @-mention for these listing requests (marketplace bugs and product feature requests still get mentioned).

* 🔨 chore(ci): convert invalid top-level workflow description keys to comments

Top-level `description` is not part of the GitHub Actions workflow schema (it is only valid nested under workflow_call/workflow_dispatch inputs), so editors flag "Property description is not allowed". Convert these doc strings to # comments to clear the lint while keeping the text. No runtime change.

* 🐛 fix(ci): harden MCP delivery detection per review

- A bare `stdio` mention no longer outranks a remote signal, so a remote server that says "Transport: SSE, not stdio" is classified remote (labeled mcp:remote) instead of being closed with the local CLI redirect.
- Recognize a bare endpoint URL (`URL:`/`Endpoint:` + non-GitHub https) as a remote reference, so URL-only submissions with no repo are labeled mcp:remote instead of falling through to normal triage.

Precedence is now: remote-only > strong install (npx/npm/uvx/pip/docker/command) > remote signal > lone stdio mention.
2026-06-25 17:14:50 +08:00
LobeHub Bot 5862a3ead8 🌐 chore: translate non-English comments to English in scripts (#16000)
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 12:04:08 +08:00
Innei 5a8911b72d 🐛 fix: update @lobehub/ui version and refactor dynamic import handling (#12260)
* ✨ feat: add hotfix workflow and script for automated hotfix management

Signed-off-by: Innei <tukon479@gmail.com>

* 🔧 fix: refactor PR creation command to use execFileSync for improved reliability

Signed-off-by: Innei <tukon479@gmail.com>

* 🔧 chore: update @lobehub/ui version and refactor dynamic import handling

- Bump @lobehub/ui dependency from ^4.35.0 to ^4.36.2 in package.json.
- Refactor settingsContentToStatic.mts to simplify dynamic import processing by removing business feature checks.
- Add initialize.ts to enable immer's map set functionality.
- Correct import path in layout.tsx from 'initiallize' to 'initialize'.

Signed-off-by: Innei <tukon479@gmail.com>

* 🔧 chore: update @types/react version in package.json

- Bump @types/react dependency from ^19.2.9 to 19.2.14.
- Add @types/react version to overrides section for consistency.

Signed-off-by: Innei <tukon479@gmail.com>

* 🔧 chore: enhance auto-tag-release workflow for strict semver validation

- Updated regex to match strict semantic versioning format, allowing for optional prerelease and build metadata.
- Added validation step to ensure the version is a valid semver before proceeding with the release process.

Signed-off-by: Innei <tukon479@gmail.com>

* 🗑️ chore: remove defaultSecurityBlacklist test file

- Deleted the test file for DEFAULT_SECURITY_BLACKLIST as it is no longer needed.
- This cleanup helps maintain a more streamlined test suite.

Signed-off-by: Innei <tukon479@gmail.com>

* 🔧 chore: update localization files for multiple languages

- Improved translations in Arabic, Bulgarian, German, English, and Spanish for chat and tool-related strings.
- Enhanced descriptions for various parameters and added new keys for file handling and security warnings.
- Adjusted phrasing for clarity and consistency across languages.

Signed-off-by: Innei <tukon479@gmail.com>

* 🔧 chore: update PR comment script to include Actions Artifacts link

- Modified the PR comment generation script to accept an additional artifactsUrl parameter.
- Updated the comment format to include both Release download and Actions Artifacts links for better accessibility.

Signed-off-by: Innei <tukon479@gmail.com>

---------

Signed-off-by: Innei <tukon479@gmail.com>
2026-02-11 23:33:44 +08:00
Arvin Xu 3719bf4d52 🔨 chore: add claude code powered workflows (#9709)
* add claude dedupe issue workflow

* add triage

* add auto close duplicate

* improve triage

* improve
2025-10-14 21:24:26 +08:00
Arvin Xu 1776a24943 🔨 chore: add auto close issues workflow (#9473)
* add auto close issues

* update
2025-09-30 02:14:47 +08:00
YuTengjing ea819a3421 feat: support mac intel desktop (#9136) 2025-09-08 23:46:57 +08:00
Arvin Xu ae28f1794c ⏪️ build : Revert "support mac intel chip" (#9134)
Revert "feat(desktop): support mac intel chip (#9084)"

This reverts commit 1a75f4a6b5.
2025-09-06 16:14:42 +08:00
YuTengjing 1a75f4a6b5 feat(desktop): support mac intel chip (#9084) 2025-09-06 14:03:16 +08:00
Arvin Xu af1f71572f ♻️ refactor: move database to packages (#8874)
* move db

* refactor db import

* refactor eval types

* fix tests

* fix tests

* fix tests

* fix db migration issues

* fix docker issue

* fix tests

* update alias

* fix tests

* update db test for client and server

* refactor db

* update codecov

* update codecov

* update codecov

* add docker pr comments
2025-08-22 11:09:03 +08:00
CanisMinor a26499f0bf 🔧 chore: Update i18n actions (#8142) 2025-06-11 12:33:41 +08:00
Arvin Xu 53d8eac3cf 💄 style: improve mcp server type select and fix refresh mcp manifest issue (#7517)
* improve experience

* fix mcp manifest refresh issue

* improve description

* improve style

* add stdio mcp plugin

* improve experience

* fix tests

* fix tests
2025-04-23 09:07:32 +08:00
Arvin Xu f57f7af1b8 👷 build: add desktop workflow and pre-merge desktop code (#7361)
* add desktop workflow code

* add desktop relative code

* Update pr-release-body.js
2025-04-10 10:47:05 +08:00
Arvin Xu addea48b52 💄 style: support default config for system agent and pre-merge some desktop code (#7296)
* refactor

* update

* improve scripts

* fix changelog issue

* improve system agent config

* fix tests

* update scripts

* update ollama models

* Update ollama.ts
2025-04-06 12:09:57 +08:00
Arvin Xu a63e1f0ab7 🔨 chore: pre-merge some desktop relative code to check stable (#7294)
* pre some electron update code

* update chat test

* update i18n

* update code

* fix desktop hotkey display

* fix test ahead
2025-04-04 22:33:48 +08:00
Arvin Xu 773d5dd1f9 ♻️ refactor: add desktop-release workflow and improve code (#7265)
* update

* fix tests

* add Release Desktop workflow

* fix tests

* fix coverage config

* fix coverage config

* fix coverage server test config
2025-04-03 10:52:47 +08:00