Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
baee21e
fix: fix style of heatmap label
xile611 Dec 26, 2025
f31f146
fix: fix default lineWidth for heatmap label
xile611 Dec 26, 2025
e2e22b8
docs: update changlog of rush
xile611 Dec 26, 2025
aef5864
fix(react-vchart,vchart): Fix DataZoom Value Update on Data Change in…
skie1997 Feb 14, 2026
99a669a
fix(vchart): radar area visibility update (spec 001-fix-radar-area-vi…
xuefei1313 Feb 25, 2026
87bac25
Merge pull request #4485 from VisActor/sync/main-2.0.17
xuefei1313 Feb 26, 2026
49019bc
fix: add API documentation for export, interaction, layout, legend, s…
xile611 Mar 3, 2026
8797a2e
fix(vchart): fix memory leaks in Player component and BaseComponent r…
xuefei1313 Mar 3, 2026
3dba139
Merge pull request #4480 from VisActor/001-fix-radar-area-visible
xuefei1313 Mar 3, 2026
b5a83ac
Merge pull request #4493 from VisActor/fix/skills-api
xile611 Mar 4, 2026
cab0862
Merge pull request #4491 from VisActor/fix/fix-memory-leaks
xuefei1313 Mar 4, 2026
d833c77
Merge pull request #4462 from VisActor/007-fix-datazoom-react
xuefei1313 Mar 5, 2026
5162f0d
feat: optimiz workflows for release
xuefei1313 Mar 5, 2026
b0a0d50
docs: update changlog of rush
xuefei1313 Mar 5, 2026
ca3fa6e
Merge pull request #4494 from VisActor/feat/optimiz-post-release
xuefei1313 Mar 5, 2026
40b18a5
Merge pull request #4384 from VisActor/fix/heatmap-label
xuefei1313 Mar 5, 2026
ed01ad0
build: release version 2.0.18 [skip ci]
xuefei1313 Mar 5, 2026
9d89bb2
Update release notes for v2.0.18
xuefei1313 Mar 5, 2026
1aa6e1b
Update Chinese changelog with new features and fixes
xuefei1313 Mar 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 15 additions & 5 deletions .changelog/en.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,21 @@
# v2.0.17
# v2.0.18

2026-03-05

**🆕 New Features**

- **@visactor/vchart**: feat: optimiz workflows for release


2026-02-26

**🐛 Bug Fixes**

- **@visactor/vchart**: fix: support functional alternateColor in axis grid configuration
- **@visactor/vchart**: fix: ensure DataZoom updates when data source changes (Issue #4185)
- **@visactor/vchart**: fix: fix default lineWidth for heatmap label


- **@visactor/vchart**: fix: Fix memory leaks in Player component and BaseComponent release logic.

**Full Changelog**: https://github.com/VisActor/VChart/compare/v2.0.16...v2.0.17
**Full Changelog**: https://github.com/VisActor/VChart/compare/v2.0.17...v2.0.18

[more detail about v2.0.17](https://github.com/VisActor/VChart/releases/tag/v2.0.17)
[more detail about v2.0.18](https://github.com/VisActor/VChart/releases/tag/v2.0.18)
20 changes: 15 additions & 5 deletions .changelog/harmony.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,21 @@
# v2.0.17
# v2.0.18

2026-03-05

**🆕 New Features**

- **@visactor/vchart**: feat: optimiz workflows for release


2026-02-26

**🐛 Bug Fixes**

- **@visactor/vchart**: fix: support functional alternateColor in axis grid configuration
- **@visactor/vchart**: fix: ensure DataZoom updates when data source changes (Issue #4185)
- **@visactor/vchart**: fix: fix default lineWidth for heatmap label


- **@visactor/vchart**: fix: Fix memory leaks in Player component and BaseComponent release logic.

**Full Changelog**: https://github.com/VisActor/VChart/compare/v2.0.16...v2.0.17
**Full Changelog**: https://github.com/VisActor/VChart/compare/v2.0.17...v2.0.18

[more detail about v2.0.17](https://github.com/VisActor/VChart/releases/tag/v2.0.17)
[more detail about v2.0.18](https://github.com/VisActor/VChart/releases/tag/v2.0.18)
16 changes: 11 additions & 5 deletions .changelog/zh.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
# v2.0.17
# v2.0.18

2026-02-26
2026-03-05

**🆕 新增功能**

- **@visactor/vchart**: 优化发布相关的工作流程(Release Workflows)

**🐛 问题修复**

- **@visactor/vchart**: fix: support functional alternateColor in axis grid configuration
- **@visactor/vchart**: 修复数据源变更时 DataZoom 未触发更新的问题 (Issue #4185)
- **@visactor/vchart**: 修复热力图(Heatmap)标签的默认线宽(`lineWidth`)问题
- **@visactor/vchart**: 修复 Player 组件以及 `BaseComponent` 销毁释放逻辑中的内存泄漏问题

**Full Changelog**: https://github.com/VisActor/VChart/compare/v2.0.16...v2.0.17
**Full Changelog**: https://github.com/VisActor/VChart/compare/v2.0.17...v2.0.18

[更多详情请查看 v2.0.17](https://github.com/VisActor/VChart/releases/tag/v2.0.17)
[more detail about v2.0.18](https://github.com/VisActor/VChart/releases/tag/v2.0.18)
35 changes: 26 additions & 9 deletions .cursor/commands/speckit.aftercode.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
description: 'Automatically execute the subsequent code delivery pipeline: changelog → commit → prgenerate, in strict sequential order.'
description: 'Automatically execute the subsequent code delivery pipeline: skilltypesync → changelog → commit → prgenerate, in strict sequential order.'
handoffs:
- label: 'Create Pull Request'
agent: 'speckit.prcreate'
Expand All @@ -15,25 +15,42 @@ $ARGUMENTS

## Outline

This command orchestrates the code delivery pipeline, executing the `changelog`, `commit`, and `prgenerate` phases in a strict, sequential, and non-interactive flow. It ensures that the entire process, from generating change files to preparing the PR body, is automated while maintaining the precise behavior of each individual step.
This command orchestrates the code delivery pipeline, executing the `skilltypesync`, `changelog`, `commit`, and `prgenerate` phases in a strict, sequential, and non-interactive flow. It ensures that the entire process, from synchronizing skill type resources to preparing the PR body, is automated while maintaining the precise behavior of each individual step.

**Execution is strictly sequential. No steps will be skipped or run in parallel.**

### Phase 1: Generate Changelog (`/speckit.changelog`)
### Phase 1: Sync Skill Type Resources (`/speckit.skilltypesync`)

- **Action**: Initiates the delivery pipeline by invoking `/speckit.changelog`.
- **Action**: Initiates the delivery pipeline by invoking `/speckit.skilltypesync`.
- **Process**:
- Detects whether this feature includes user-facing config/API/type changes.
- If required, synchronizes skill reference assets under:
- `skills/vchart-development-assistant/references/type-meta/`
- `skills/vchart-development-assistant/references/type-details/`
- Runs consistency checks to prevent broken type references in the skill resources.
- Any parameters provided in `$ARGUMENTS` will be passed through (for example: `--base`, `--force`, `--types`).
- **Handoff**: Upon successful completion, automatically triggers the `changelog` phase.
- **Output Report**:
- "Phase 1 (Skill Type Sync) completed."
- `SYNC_TRIGGER`: [auto-detected | forced]
- `UPDATED_TYPE_META`: [List of updated files or empty]
- `UPDATED_TYPE_DETAILS`: [List of updated files or empty]

### Phase 2: Generate Changelog (`/speckit.changelog`)

- **Action**: Triggered automatically after `skilltypesync` completes.
- **Process**:
- Collects commits since a base branch (defaulting to `develop`).
- Infers the version bump type (`patch`, `minor`, `major`) automatically from commit messages unless an explicit `bumpType` is passed in `$ARGUMENTS`.
- Generates the necessary change files within the `common/changes/` directory.
- Any parameters provided in `$ARGUMENTS` will be passed through to override default behavior.
- **Handoff**: Upon successful completion, automatically triggers the `commit` phase.
- **Output Report**:
- "Phase 1 (Changelog) completed."
- "Phase 2 (Changelog) completed."
- `CREATED_FILES`: [List of paths to generated files in `common/changes/`]
- `VALIDATION`: "Changelog message conforms to Conventional Commits standards."

### Phase 2: Create Commit (`/speckit.commit`)
### Phase 3: Create Commit (`/speckit.commit`)

- **Action**: Triggered automatically after `changelog` completes.
- **Process**:
Expand All @@ -44,11 +61,11 @@ This command orchestrates the code delivery pipeline, executing the `changelog`,
- The `message` and `pushAfterCommit` behaviors can be overridden via `$ARGUMENTS`.
- **Handoff**: Upon successful completion, automatically triggers the `prgenerate` phase.
- **Output Report**:
- "Phase 2 (Commit) completed."
- "Phase 3 (Commit) completed."
- `COMMIT_MESSAGE`: [The full commit message used]
- `PUSH_STATUS`: "Branch [branch-name] pushed to origin."

### Phase 3: Generate PR Body (`/speckit.prgenerate`)
### Phase 4: Generate PR Body (`/speckit.prgenerate`)

- **Action**: The final phase, realized via the native `handoff` from `/speckit.commit` to `/speckit.prgenerate` after `commit` completes. This `/speckit.aftercode` command does not declare its own `handoff` entry for `/speckit.prgenerate` to avoid duplicate execution.
- **Process**:
Expand All @@ -57,7 +74,7 @@ This command orchestrates the code delivery pipeline, executing the `changelog`,
- Saves the final, populated PR body to `.trae/output/pr.body.local.md`.
- **Handoff**: This step retains its original `handoff` to `speckit.prcreate`. The `/speckit.aftercode` command depends strictly on the original single-step handoff chain and does **not** introduce any additional handoffs, preventing `prgenerate` (or downstream steps) from running more than once.
- **Output Report**:
- "Phase 3 (PR Generate) completed."
- "Phase 4 (PR Generate) completed."
- `OUTPUT_FILE`: ".trae/output/pr.body.local.md"
- `VALIDATION_SUMMARY`: "PR body generated. Please review the file before creating the pull request."
- `NEXT_STEPS`: "The `speckit.prcreate` command may have been triggered automatically. If not, you can run it manually to create the GitHub Pull Request."
76 changes: 76 additions & 0 deletions .cursor/commands/speckit.skilltypesync.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
---
description: "After feature development, detect user-config/API changes and synchronize skill type resources under skills/vchart-development-assistant/references/type-meta and type-details."
---

## User Input

```text
$ARGUMENTS
```

You **MUST** consider user input if provided. Treat it as optional CLI-style overrides only (for example: `--base develop`, `--force`, `--types ILabelSpec,IData`).

## Outline

1. **Resolve diff scope**:
- Default base branch is `develop`.
- If `$ARGUMENTS` contains `--base <branch>`, use that branch as comparison base.
- Collect changed files from:
- staged + unstaged local changes, and
- branch diff against base (`<base>...HEAD`).
- De-duplicate all changed paths.

2. **Determine whether sync is required**:
- Mark as **requires sync** when changes affect user-facing configuration or API/type definitions, including (but not limited to):
- `packages/vchart/src/typings/**`
- `packages/vchart/src/chart/**/interface/**`
- `packages/vchart/src/component/**/interface/**`
- `packages/vchart/src/series/**/interface/**`
- `packages/vchart/src/theme/**`
- any public API or option schema files referenced by VChart docs.
- If no matching files and no `--force`, stop with a clear summary: "No user config/API changes detected, skill type sync skipped."

3. **Identify impacted type entities**:
- From changed TypeScript definitions, extract impacted type/interface names (for example `ILabelSpec`, `IData`, `ITheme`).
- Build two impact sets:
- **Meta impact**: chart/common entries that need `type-meta/*.json` updates.
- **Detail impact**: concrete types needing `type-details/*-Type-Definition.md` updates.
- If `$ARGUMENTS` includes `--types`, merge explicit type names into the detail impact set.

4. **Update `type-meta` resources**:
- Target directory: `skills/vchart-development-assistant/references/type-meta/`.
- For each impacted chart/common meta file:
- sync user-visible property paths,
- sync `required` flags,
- sync `type` and `isSimple` fields,
- remove stale keys that no longer exist in source typings.
- Keep JSON valid and stable (no duplicated keys, deterministic field ordering where possible).

5. **Update `type-details` resources**:
- Target directory: `skills/vchart-development-assistant/references/type-details/`.
- For each impacted type:
- create or update `[TypeName]-Type-Definition.md` (for example `ILabelSpec-Type-Definition.md`),
- ensure definitions reflect latest fields, value types, optional/required semantics, and usage notes,
- include concise, runnable-style code examples that match current VChart API behavior.
- Keep naming aligned with `references/FILE_NAMING_CONVENTIONS.md`.

6. **Consistency checks**:
- Verify every complex type referenced in `type-meta` (`isSimple: false`) has a corresponding `type-details` document.
- Verify removed/renamed types no longer leave broken references in `type-meta`.
- Validate JSON syntax for all changed files under `type-meta`.
- Ensure Markdown files under `type-details` are non-empty and include the target type name in title/content.

7. **Output report**:
- Print:
- base branch used,
- whether sync was triggered by auto-detection or `--force`,
- changed source files that triggered sync,
- updated `type-meta` files,
- updated `type-details` files,
- unresolved gaps (if any manual follow-up is required).
- If unresolved gaps exist, fail with actionable errors instead of silently succeeding.

## Notes

- This command only synchronizes skill reference assets; it does not commit, push, or create PR content.
- Preferred execution point is after implementation is complete and before `/speckit.changelog` or `/speckit.aftercode`.
6 changes: 4 additions & 2 deletions .cursor/rules/specify-rules.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
Auto-generated from all feature plans. Last updated: 2026-01-15

## Active Technologies
- TypeScript 4.x+ (Project uses TS) + `@visactor/vchart` (Core logic), `@visactor/react-vchart` (React wrapper) (007-fix-datazoom-react)
- N/A (In-memory chart state) (007-fix-datazoom-react)

- TypeScript/React 18 + @visactor/react-vchart, @visactor/vchar (001-react-vchart-demo)

Expand All @@ -24,11 +26,11 @@ npm test && npm run lint
TypeScript 4.9.5: Follow standard conventions

## Recent Changes
- 007-fix-datazoom-react: Added TypeScript 4.x+ (Project uses TS) + `@visactor/vchart` (Core logic), `@visactor/react-vchart` (React wrapper)
- 007-fix-datazoom-react: Added [if applicable, e.g., PostgreSQL, CoreData, files or N/A]

- 001-react-vchart-demo: Added TypeScript/React 18 + @visactor/react-vchart, @visactor/vchar
- 001-react-vchart-demo: Added [if applicable, e.g., PostgreSQL, CoreData, files or N/A]

- 001-scrollbar-wheel-step: Added TypeScript 4.9.5 + @visactor/vchart, @visactor/vrender-components (~1.0.37), @visactor/vutils

<!-- MANUAL ADDITIONS START -->
<!-- MANUAL ADDITIONS END -->
63 changes: 43 additions & 20 deletions .github/workflows/post-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,31 +74,28 @@ jobs:

echo "skip=false" >> "$GITHUB_OUTPUT"

- name: Fetch develop changelog
- name: Ensure main changelog exists
if: steps.meta.outputs.skip != 'true' && steps.exist.outputs.skip != 'true'
run: |
set -euo pipefail
git fetch origin develop:refs/remotes/origin/develop --depth=1
git show origin/develop:docs/assets/changelog/en/release.md > release-develop.md
if [ ! -f "docs/assets/changelog/en/release.md" ]; then
echo "Error: docs/assets/changelog/en/release.md not found in main."
exit 1
fi

- name: Extract release body from develop changelog
- name: Extract release body from main changelog
id: body
if: steps.meta.outputs.skip != 'true' && steps.exist.outputs.skip != 'true'
env:
VERSION: ${{ steps.meta.outputs.version }}
run: |
set -euo pipefail
if [ ! -f "release-develop.md" ]; then
echo "develop changelog file not found, skip post-release."
echo "has_body=false" >> "$GITHUB_OUTPUT"
exit 0
fi

if node <<'NODE'
node <<'NODE'
const fs = require('fs');

const version = process.env.VERSION;
const content = fs.readFileSync('release-develop.md', 'utf8');
const changelogPath = 'docs/assets/changelog/en/release.md';
const content = fs.readFileSync(changelogPath, 'utf8');

function escapeRegExp(str) {
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
Expand All @@ -108,27 +105,53 @@ jobs:
const match = headerPattern.exec(content);

if (!match) {
console.log('No changelog block for version', version, 'found in develop.');
console.error('No changelog block for version', version, 'found in main changelog.');
process.exit(1);
}

const startIndex = match.index;
const rest = content.slice(startIndex);

const nextHeaderPattern = /^#\s*v?\d+\.\d+\.\d+[^\n]*$/gm;
// Find the next release header after the current one.
const nextHeaderPattern = /^#\s*v?\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?[^\n]*$/gm;
let nextIndex = rest.length;
let m;
if ((m = nextHeaderPattern.exec(rest)) !== null && m.index !== 0) {
nextIndex = m.index;
while ((m = nextHeaderPattern.exec(rest)) !== null) {
if (m.index > 0) {
nextIndex = m.index;
break;
}
}

const block = rest.slice(0, nextIndex).trimEnd() + '\n';
if (!block.trim()) {
console.error('Extracted changelog block is empty for version', version);
process.exit(1);
}
fs.writeFileSync('release-body.md', block, 'utf8');
NODE
then
echo "has_body=true" >> "$GITHUB_OUTPUT"
else
echo "has_body=false" >> "$GITHUB_OUTPUT"
echo "has_body=true" >> "$GITHUB_OUTPUT"

- name: Validate extracted release body
if: steps.meta.outputs.skip != 'true' && steps.exist.outputs.skip != 'true' && steps.body.outputs.has_body == 'true'
env:
VERSION: ${{ steps.meta.outputs.version }}
run: |
set -euo pipefail
if [ ! -s "release-body.md" ]; then
echo "Error: release-body.md is missing or empty."
exit 1
fi

if ! grep -Eq "^#\\s*v?${VERSION}\\b" release-body.md; then
echo "Error: release-body.md does not start with expected version header v${VERSION}."
exit 1
fi

HEADER_COUNT="$(grep -Ec '^#\s*v?[0-9]+\.[0-9]+\.[0-9]+([-.][0-9A-Za-z.]+)?\b' release-body.md || true)"
if [ "${HEADER_COUNT}" -ne 1 ]; then
echo "Error: extracted release body contains ${HEADER_COUNT} release headers, expected exactly 1."
exit 1
fi

- name: Verify gh identity
Expand Down
27 changes: 27 additions & 0 deletions .trae/documents/plan_20260214_031224.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Implementation Plan: Fix DataZoom Value Update on Data Change in React

**Branch**: `007-fix-datazoom-react`
**Spec**: [specs/007-fix-datazoom-react/spec.md](../spec.md)

## Summary
I have planned the fix for Issue #4185 where DataZoom fails to update in React when data changes. The plan involves detecting data view changes in the core `DataFilterBaseComponent` and rebinding listeners, ensuring the component stays in sync with the latest data.

## Phase 1: Setup (Reproduction)
- [ ] Initialize reproduction in `packages/react-vchart/demo/src/BugReproduction.tsx`
- [ ] Update demo entry point to run reproduction

## Phase 3: User Story 1 (Core Fix)
- [ ] Implement `_collectDataInfo` helper to gather data view references
- [ ] Add state tracking for `_currentDataCollection` and bound listeners
- [ ] Update `_initData` to initialize tracking
- [ ] Implement robust `onDataUpdate` logic:
- Detect if underlying DataViews have changed
- Unbind old listeners / Bind new listeners
- Re-run data transforms to update domain
- **Crucial**: Apply explicit `start`/`end` from spec if present (resetting range as per user config)

## Phase N: Polish
- [ ] Clean up reproduction code
- [ ] Restore demo entry point

I am ready to proceed with the implementation. Please confirm.
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"changes": [
{
"packageName": "@visactor/react-vchart",
"comment": "fix: ensure DataZoom updates when data source changes (Issue #4185)",
"type": "patch"
}
],
"packageName": "@visactor/react-vchart",
"email": "test@example.com"
}
Loading
Loading