Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
0e1a3f3
feat: add camera with default methods | visual test on playground/src…
NiceArti Sep 20, 2025
aa7298e
feat: add scene class for controlling grid and items on scene
NiceArti Sep 20, 2025
6d86fc1
feat: panoramic and zooming by hotkeys. Canvas logo image
binary-shadow Sep 20, 2025
ff3fbcf
feat: new api for add plugins
binary-shadow Sep 20, 2025
25b5ce8
fix: grid | feat: add rect logic in main
NiceArti Sep 20, 2025
ed475a4
feat: add flowscape rect for basic objects
NiceArti Sep 21, 2025
c53ebb8
feat: add AUTHORS.md | move to MIT license
NiceArti Sep 21, 2025
6c4a455
feat: transformation object | rotation object | rounding object | cus…
binary-shadow Sep 21, 2025
6d12649
fix: rounding handles position
binary-shadow Sep 21, 2025
1835091
feat: new CoreEngine API | new BaseNode API
binary-shadow Sep 22, 2025
e6feb9f
feat: event bus
binary-shadow Sep 23, 2025
3884595
fix: improve core engine architecture
binary-shadow Sep 23, 2025
617d4b2
feat: new plugin API system
binary-shadow Sep 23, 2025
75f6e10
feat: camera hotkeys plugin
binary-shadow Sep 23, 2025
de20a5e
add: core events types
binary-shadow Sep 23, 2025
c4741e4
add: core events types
binary-shadow Sep 23, 2025
adb9d3c
feat: selection plugin | text node
binary-shadow Sep 24, 2025
a60e707
feat: add various shape nodes (Circle, Arc, Arrow, Star, etc.) with n…
binary-shadow Sep 24, 2025
fa097e0
style: anchors middle handlers
binary-shadow Sep 25, 2025
df8fb2d
fix: selection custom handlers
binary-shadow Sep 25, 2025
02410bc
feat: node radius handlers
binary-shadow Sep 25, 2025
f6699b9
fix: node dragging in the group
binary-shadow Sep 26, 2025
6ecc94a
fix: dragging node
binary-shadow Sep 26, 2025
d6160b2
fix: middle handlers position
binary-shadow Sep 26, 2025
46005c3
feat: label node
binary-shadow Sep 26, 2025
2fadff5
style: corner radius handlers
binary-shadow Sep 26, 2025
92b01b4
feat: add drag threshold and delayed deselection for selection plugin
binary-shadow Sep 26, 2025
a1d8e75
fix: rotation handlers
binary-shadow Sep 26, 2025
40b0332
style: rotation handlers position
binary-shadow Sep 26, 2025
c53d53e
feat: update corner radus change logic
NiceArti Sep 27, 2025
cbf2e8e
style: add show corner radius perimeters
NiceArti Sep 27, 2025
9e06702
style: update min max zoom
NiceArti Sep 27, 2025
9cc42bd
feat: update readme License badge
NiceArti Sep 27, 2025
e03a855
style: remove useless spaces
NiceArti Sep 27, 2025
abb2898
feat: add license header
NiceArti Sep 27, 2025
5dfc8c1
style: add link to license
NiceArti Sep 27, 2025
cd0d7da
feat: update text of license
NiceArti Sep 27, 2025
d0a2964
style: update license text
NiceArti Sep 27, 2025
97f6482
style: update license
NiceArti Sep 27, 2025
8692745
Update LICENSE
NiceArti Sep 27, 2025
738d15d
feat: node hover effect
binary-shadow Sep 27, 2025
bbdfc0f
fix: node hover effect
binary-shadow Sep 27, 2025
a1a58ce
feat: grid plugin
binary-shadow Sep 27, 2025
bcf0ba3
fix: snapping node
binary-shadow Sep 29, 2025
92724ab
update: ruler plugin
binary-shadow Sep 29, 2025
ace5967
feat: multi selection
binary-shadow Sep 30, 2025
bc09aeb
feat: start adding ruller
NiceArti Sep 30, 2025
f6377f0
feat: add ruler guides
NiceArti Oct 1, 2025
c06843a
feat: add full controlled ruller with buch of plugins | highlight plu…
NiceArti Oct 1, 2025
b00068d
feat: node hotkeys plugin
binary-shadow Oct 1, 2025
2492055
Merge branch 'dev' of github.com:Flowscape-UI/core-sdk into dev
NiceArti Oct 1, 2025
c197454
fix: grouping nodes
binary-shadow Oct 1, 2025
b264278
fix: bugs with group | add: unit tests
binary-shadow Oct 2, 2025
2f953a5
fix: copy/paste feature
binary-shadow Oct 2, 2025
64a8fe0
BBoxCacheManager | LODManager | VirtualizationManager
binary-shadow Oct 2, 2025
33e2afc
fix: ts & eslint errors | image copy/paste
binary-shadow Oct 2, 2025
2eeb774
feat: group z-index
binary-shadow Oct 2, 2025
9c44090
feat: optimization by Konva
binary-shadow Oct 3, 2025
4048d78
fix: zIndex for group
binary-shadow Oct 3, 2025
fc32c92
fix: ruler optimization
binary-shadow Oct 3, 2025
19d05d2
fix: tests
binary-shadow Oct 3, 2025
9c064ed
translate comments
binary-shadow Oct 3, 2025
20b863a
fix: prod issues
binary-shadow Oct 3, 2025
b111b60
first release
binary-shadow Oct 3, 2025
1bd61b9
fix: ci issues
binary-shadow Oct 3, 2025
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
53 changes: 37 additions & 16 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,33 +1,54 @@
name: CI

on:
push:
branches:
- dev
- main
pull_request:
branches: [main, release]
branches:
- dev
- main

jobs:
build:
lint-and-test:
runs-on: ubuntu-latest

steps:
- name: Checkout
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
node-version: 20
cache: npm
bun-version: latest

- name: Install dependencies
run: npm install
run: bun install

- name: Run ESLint
run: bun run lint

- name: Run TypeScript check
run: bun run lint:ts

- name: Lint (ESLint)
run: npm run lint
- name: Run tests
run: bun run test:run

- name: Typecheck (TS)
run: npm run lint:ts
- name: Run test coverage
run: bun run test:coverage

- name: Format (Prettier)
run: npm run format
- name: Build library
run: bun run build

- name: Build
run: npm run build
- name: Check build output
run: |
ls -lh dist/
echo "✅ Build artifacts created successfully"

- name: Upload coverage reports
uses: codecov/codecov-action@v4
if: always()
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false
100 changes: 100 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
name: Publish to npm

on:
push:
branches:
- main
workflow_dispatch:
inputs:
version:
description: 'Version bump type'
required: true
default: 'patch'
type: choice
options:
- patch
- minor
- major

jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: write
id-token: write

steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest

- name: Install dependencies
run: bun install

- name: Run linter
run: bun run lint

- name: Run TypeScript check
run: bun run lint:ts

- name: Run tests
run: bun run test:run

- name: Build library
run: bun run build

- name: Configure Git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"

- name: Bump version (manual trigger)
if: github.event_name == 'workflow_dispatch'
run: |
npm version ${{ github.event.inputs.version }} -m "chore: release v%s"
git push --follow-tags

- name: Bump version (auto patch on push)
if: github.event_name == 'push'
run: |
npm version patch -m "chore: release v%s"
git push --follow-tags

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
registry-url: 'https://registry.npmjs.org'

- name: Publish to npm
run: npm publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

- name: Get package version
id: package-version
run: echo "version=$(node -p "require('./package.json').version")" >> $GITHUB_OUTPUT

- name: Create GitHub Release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ steps.package-version.outputs.version }}
release_name: Release v${{ steps.package-version.outputs.version }}
body: |
## 🚀 Release v${{ steps.package-version.outputs.version }}

Published to npm: [@flowscape-ui/core-sdk@${{ steps.package-version.outputs.version }}](https://www.npmjs.com/package/@flowscape-ui/core-sdk/v/${{ steps.package-version.outputs.version }})

### Changes
See [CHANGELOG.md](./CHANGELOG.md) for details.
draft: false
prerelease: false
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,17 @@ node_modules/

# builds
dist/
playground/
# playground/

# logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*

# todo
todo.txt

# bun lockfile
bun.lockb
bunlockb
Expand Down
12 changes: 12 additions & 0 deletions AUTHORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Flowscape Contributors

This file lists the authors of the Flowscape project.

## Project Founders

* archonishe
* NiceArti

## Lead Developer

* binary-shadow
64 changes: 64 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [1.0.0] - 2025-01-04

### Added
- 🎉 First public release
- ✨ Core `CoreEngine` built on Konva
- 🧩 Plugin system with extensible architecture
- 📐 Node manager with support for various shape types:
- `ShapeNode` — rectangles with rounded corners
- `CircleNode` — circles
- `EllipseNode` — ellipses
- `TextNode` — text elements
- `ImageNode` — images
- `ArcNode` — arcs
- `ArrowNode` — arrows
- `StarNode` — stars
- `RingNode` — rings
- `RegularPolygonNode` — regular polygons
- `GroupNode` — element grouping
- 📷 Camera manager with zoom and panning
- 🎨 Built-in plugins:
- `GridPlugin` — adaptive grid
- `SelectionPlugin` — selection and transformation
- `NodeHotkeysPlugin` — hotkeys (Ctrl+C/V/X, Delete, Ctrl+[/])
- `CameraHotkeysPlugin` — camera controls (Ctrl+wheel, arrows)
- `RulerPlugin` — rulers with measurement units
- `RulerGuidesPlugin` — guide lines
- `RulerHighlightPlugin` — ruler highlighting
- `RulerManagerPlugin` — ruler management
- `AreaSelectionPlugin` — area selection with frame
- `LogoPlugin` — watermark/logo
- 🔄 `EventBus` system for inter-component communication
- 📦 Dual package (ESM + CJS) with full TypeScript typing
- 🧪 Comprehensive test coverage:
- Copy/paste/cut operation tests
- Grouping/ungrouping tests
- Transformation and nested structure tests
- 📚 Detailed documentation and usage examples
- 🚀 Performance optimizations:
- Tree-shaking support
- Source maps for debugging
- Minimal bundle size

### Fixed
- 🐛 Fixed hotkeys in production build
- 🐛 Fixed node serialization during copy/paste
- 🐛 Fixed plugin lookup via `instanceof` (minification-safe)
- 🐛 Fixed export typing for correct work in different environments

### Changed
- 🔧 Improved plugin system architecture
- 🔧 Optimized Konva layer handling (reduced layer count)
- 🔧 Improved keyboard event handling in production

[Unreleased]: https://github.com/Flowscape-UI/core-sdk/compare/v1.0.0...HEAD
[1.0.0]: https://github.com/Flowscape-UI/core-sdk/releases/tag/v1.0.0
Loading