Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
32 changes: 16 additions & 16 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
MIT License
Elastic License v2.0

Copyright (c) 2025 SigTrace Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
Acceptance
By using, modifying, or distributing the software, you agree to the terms of this license.

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
Copyright Grant
Subject to the terms of this license, Licensor grants you a non-exclusive, worldwide, royalty-free copyright license to use, copy, modify, and distribute the software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Limitations
You may not:
1. Provide the software to third parties as a hosted or managed service, where the service provides the user with access to any substantial portion of the functionality of the software;
2. Circumvent the license key functionality or remove/alter any licensing, copyright, or other notices; or
3. Move, change, remove, or obscure any copyright, trademark, or other notices in the software.

Patents
Subject to the terms of this license, Licensor grants you a non-exclusive, worldwide, royalty-free patent license under any patent claims Licensor owns or has the right to license that are necessarily infringed by the software.

Disclaimer
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25 changes: 15 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<p>
<a href="https://www.npmjs.com/package/@sigtrace/core"><img src="https://img.shields.io/npm/v/@sigtrace/core?color=6C63FF&style=flat-square&label=npm%20%40sigtrace%2Fcore" alt="npm version" /></a>
<a href="https://marketplace.visualstudio.com/items?itemName=sigtrace.sigtrace-extension"><img src="https://img.shields.io/visual-studio-marketplace/d/sigtrace.sigtrace-extension?color=007ACC&style=flat-square&label=VS%20Code%20installs" alt="VS Code installs" /></a>
<a href="https://github.com/sigtrace-dev/sigtrace/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-22c55e?style=flat-square" alt="License MIT" /></a>
<a href="https://github.com/sigtrace-dev/sigtrace/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-ELv2-22c55e?style=flat-square" alt="License ELv2" /></a>
<a href="https://github.com/sigtrace-dev/sigtrace/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/sigtrace-dev/sigtrace/ci.yml?branch=main&style=flat-square&label=CI&color=6C63FF" alt="CI status" /></a>
<a href="https://github.com/sponsors/sigtrace-dev"><img src="https://img.shields.io/badge/Sponsor-%E2%9D%A4-ea4aaa?style=flat-square&logo=github-sponsors" alt="Sponsor on GitHub" /></a>
</p>
Expand Down Expand Up @@ -48,12 +48,12 @@ Full workspace layout demonstrating editor sync with the running application.

| Feature | Description |
|---------|-------------|
| πŸ“Š **Activity Table** | Live, filterable event log for every signal read, write, and effect. Search by name, file, or value. |
| ⏱️ **Timeline (Causal Chains)** | Swimlane visualization showing which writes triggered which reads. Critical paths highlighted. |
| 🧩 **Component Cards** | Per-component signal snapshot β€” current values, last-updated timestamps, click to filter. |
| 🎯 **Click-to-Navigate** | Click any signal event or graph node to jump to the exact source line in your editor. |
| πŸͺŸ **Multi-window Sync** | Multiple VS Code windows can connect to the same SigTrace server simultaneously. |
| ⚑ **Zero-refactoring Setup** | Build-time AST instrumentation β€” no `import { trace }` required. Your code stays clean. |
| πŸ“Š **Activity Table** | Live, filterable event log for every signal read, write, and effect. Features Pinned/Others categorizations, hover copy icons, and a line-wise collapsible JSON tree inspector. |
| ⏱️ **Timeline (Causal Chains)** | Chronological swimlane list showing sequential tick-by-tick update paths, event counts, and chain collapse/hide filters. |
| 🧩 **Component Audits & Loops** | Group updates by component. Flags circular invalidation loops, computation hotspots (>2.0ms), and unused dead signals. |
| 🎯 **Click-to-Navigate** | Click any signal event, timeline card, or warning log to jump to the exact source declaration line in your editor. |
| πŸͺŸ **Universal IDE Support** | Native extensions for both **VS Code** and **JetBrains (WebStorm, IntelliJ)** with full Webview synchronisation. |
| ⚑ **Zero-refactoring Setup** | Built-in CLI wrapper (`npx sigtrace run`) injects transformation compile hooks dynamically without editing your source code. |

---

Expand All @@ -62,8 +62,10 @@ Full workspace layout demonstrating editor sync with the running application.
| Framework | Version | Status |
|-----------|---------|--------|
| **Angular** | 17+ (Signals API) | βœ… Fully supported |
| **Vue** | 3+ (Composition API) | πŸ”œ Coming in v1.2 |
| **SolidJS** | 1.8+ | πŸ”œ Coming in v1.2 |
| **Vue** | 3+ (Composition API) | βœ… Fully supported |
| **SolidJS** | 1.8+ | βœ… Fully supported |
| **React** | 18+ (Signals API) | πŸ”œ Coming soon |
| **Svelte** | 5 (Runes) | πŸ”œ Coming soon |

---

Expand Down Expand Up @@ -230,7 +232,10 @@ See [**CHANGELOG.md**](./CHANGELOG.md) for a detailed history of changes across

## πŸ“„ License

SigTrace is open-source software released under the [**MIT License**](./LICENSE).
SigTrace is released under the [**Elastic License 2.0 (ELv2)**](./LICENSE).

- **Allowed**: Free for everyone (individuals, startups, and commercial enterprises) to use, modify, and run in development and production workflows.
- **Prohibited**: You may not provide SigTrace to third parties as a hosted or managed commercial service, or sell competing developer tools derived directly from this repository.

Copyright Β© 2025 SigTrace Contributors.

Expand Down
2 changes: 1 addition & 1 deletion docs/blog/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ <h2 class="post-title">Introducing SigTrace: The Missing Debugger for Reactive S

<footer role="contentinfo">
<div class="container">
<p>Β© 2025 SigTrace Contributors. Released under the MIT License.</p>
<p>Β© 2025 SigTrace Contributors. Released under the Elastic License 2.0 (ELv2).</p>
</div>
</footer>

Expand Down
6 changes: 3 additions & 3 deletions docs/blog/introducing-sigtrace.html
Original file line number Diff line number Diff line change
Expand Up @@ -220,8 +220,8 @@ <h2>Quick Start</h2>
# or
npx sigtrace run npm run dev # Vue / SolidJS</code></pre>

<h2>Open Source and Community-Driven</h2>
<p>SigTrace is licensed under the MIT License and is free to use, modify, and distribute. We believe that developer experience should not be locked behind proprietary paywalls. The core adapters for Angular, Vue, and SolidJS are all open-source, and we are planning Svelte and React support next.</p>
<h2>Free for Developers & Enterprise</h2>
<p>SigTrace is licensed under the Elastic License 2.0 (ELv2) and is completely free for all developers, teams, and organizations to use and modify in development and production workflows. The only restriction is that third parties cannot provide SigTrace as a managed commercial service or sell competing derivative tools built directly from this repository. The core adapters for Angular, Vue, and SolidJS are all available, and we are planning Svelte and React support next.</p>

<p>Check out the <a href="https://github.com/sigtrace-dev/sigtrace" style="color:var(--accent-light)">GitHub Repository</a>, star the project, and join the community!</p>
</article>
Expand All @@ -230,7 +230,7 @@ <h2>Open Source and Community-Driven</h2>

<footer>
<div class="container">
<p>Β© 2025 SigTrace Contributors. Released under the MIT License.</p>
<p>Β© 2025 SigTrace Contributors. Released under the Elastic License 2.0 (ELv2).</p>
</div>
</footer>

Expand Down
2 changes: 1 addition & 1 deletion docs/blog/react-svelte-signals-debugging.html
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ <h2>Getting Started in 2 Minutes</h2>

<footer>
<div class="container">
<p>Β© 2025 SigTrace Contributors. Released under the MIT License.</p>
<p>Β© 2025 SigTrace Contributors. Released under the Elastic License 2.0 (ELv2).</p>
</div>
</footer>

Expand Down
2 changes: 1 addition & 1 deletion docs/docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ <h1>Documentation Coming Soon</h1>

<footer role="contentinfo">
<div class="container">
<p>Β© 2025 SigTrace Contributors. Released under the MIT License.</p>
<p>Β© 2025 SigTrace Contributors. Released under the Elastic License 2.0 (ELv2).</p>
</div>
</footer>

Expand Down
18 changes: 9 additions & 9 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@
"softwareVersion": "1.1.6",
"datePublished": "2025-01-01",
"dateModified": "2026-07-16",
"license": "https://opensource.org/licenses/MIT",
"license": "https://www.elastic.co/licensing/elastic-license",
"author": {
"@type": "Organization",
"name": "SigTrace Contributors",
Expand Down Expand Up @@ -175,10 +175,10 @@
},
{
"@type": "Question",
"name": "Is SigTrace free and open source?",
"name": "Is SigTrace free to use?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. SigTrace is completely free and open source under the MIT license. Its editor extensions, npm packages, and CLI are all free to use, modify, and distribute."
"text": "Yes. SigTrace is free for all developers and organizations under the Elastic License 2.0 (ELv2). You can freely use, modify, and run it in development and production workflows."
}
}
]
Expand Down Expand Up @@ -1792,7 +1792,7 @@
<div class="hero-badge fade-up">
<span class="label-pill">
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" aria-hidden="true"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/></svg>
Open Source Β· v1.1.6 Β· MIT License
ELv2 License Β· v1.1.6 Β· Free to Use
</span>
</div>

Expand Down Expand Up @@ -1958,8 +1958,8 @@ <h2 id="stats-heading" class="sr-only">SigTrace by the numbers</h2>
<div class="stat-label">Avg. Instrumentation Overhead</div>
</div>
<div class="stat-cell" role="listitem">
<div class="stat-value">MIT</div>
<div class="stat-label">Open Source License</div>
<div class="stat-value">ELv2</div>
<div class="stat-label">Fair Source License</div>
</div>
</div>
</div>
Expand Down Expand Up @@ -2427,7 +2427,7 @@ <h2 id="faq-heading">Frequently asked questions</h2>
<svg class="faq-chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" aria-hidden="true"><polyline points="6 9 12 15 18 9"/></svg>
</button>
<div class="faq-a" role="region">
<div class="faq-a-inner">SigTrace is 100% free and open source under the MIT license. All packages and editor extensions are free forever. The source code is available on GitHub and contributions are welcome.</div>
<div class="faq-a-inner">SigTrace is free for all developers, teams, and organizations under the Elastic License 2.0 (ELv2). You can use and modify SigTrace freely. The only restriction is that third parties cannot provide SigTrace as a managed commercial service or sell competing derivative tools built directly from this code.</div>
</div>
</div>

Expand All @@ -2451,7 +2451,7 @@ <h2 id="faq-heading">Frequently asked questions</h2>
<div class="container">
<div class="cta-box">
<div class="cta-glow" aria-hidden="true"></div>
<span class="label-pill" style="margin-bottom:24px">Free & Open Source</span>
<span class="label-pill" style="margin-bottom:24px">Free for Developers & Enterprise</span>
<h2 id="cta-heading">Debug your reactive state<br />in minutes, not hours</h2>
<p>Install SigTrace and get full visibility into your signal graph β€” for free, forever.</p>
<div class="cta-actions">
Expand Down Expand Up @@ -2498,7 +2498,7 @@ <h2 id="cta-heading">Debug your reactive state<br />in minutes, not hours</h2>

<div class="footer-legal">
<p>Β© 2025 SigTrace Contributors</p>
<p>Released under the <a href="https://github.com/sigtrace-dev/sigtrace/blob/main/LICENSE" target="_blank" rel="noopener" style="color:var(--accent-light)">MIT License</a></p>
<p>Released under the <a href="https://github.com/sigtrace-dev/sigtrace/blob/main/LICENSE" target="_blank" rel="noopener" style="color:var(--accent-light)">Elastic License 2.0 (ELv2)</a></p>
</div>
</div>
</div>
Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
{
"name": "sigtrace-monorepo",
"private": true,
"version": "1.2.0",
"version": "1.2.1",
"description": "Universal Reactive Graph & Signal Lifecycle Tracer",
"license": "ELv2",
"workspaces": [
"packages/*",
"demo"
Expand Down
4 changes: 2 additions & 2 deletions packages/core/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@sigtrace/core",
"version": "1.2.0",
"version": "1.2.1",
"type": "module",
"description": "Client-side runtime tracer for SigTrace",
"main": "dist/index.js",
Expand All @@ -17,7 +17,7 @@
},
"homepage": "https://sigtrace.dev",
"author": "SigTrace Contributors",
"license": "MIT",
"license": "ELv2",
"exports": {
".": "./dist/index.js",
"./solid": "./dist/adapters/solid.js",
Expand Down
14 changes: 14 additions & 0 deletions packages/core/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ class SigTraceClient {
private port = 8420;
private frameFlushScheduled = false;
private freqTrackers = new Map<string, SignalFrequencyTracker>();
private registeredSignals: TraceEvent[] = [];

constructor() {
// In production: export a no-op instance β€” connect() is never called.
Expand Down Expand Up @@ -74,6 +75,12 @@ class SigTraceClient {
this.isConnecting = false;
console.log(`[SigTrace] Connected to VS Code dev server on ws://localhost:${this.port}`);
console.log('[SigTrace] πŸ”’ All data stays local β€” no external servers, no telemetry.');

// Re-send all registered signals to populate the new host's cache
this.registeredSignals.forEach(reg => {
this.sendImmediate(reg);
});

this.flushQueue();
};

Expand Down Expand Up @@ -147,6 +154,13 @@ class SigTraceClient {
public send(event: TraceEvent) {
if (IS_PRODUCTION) return; // no-op in production

if (event.type === 'register') {
const reg = event;
if (!this.registeredSignals.some(s => s.type === 'register' && s.id === reg.id)) {
this.registeredSignals.push(event);
}
}

// Check high-frequency throttle
if (this.isThrottled(event)) return;

Expand Down
20 changes: 20 additions & 0 deletions packages/extension/.vscodeignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Ignore parent directories in monorepo
..
../**
../../**
# Ignore other monorepo directories
packages/core/**
packages/vite-plugin/**
packages/jetbrains-plugin/**
demo/**
docs/**
releases/**
# Ignore local dev files
node_modules/**
src/*.ts
tsconfig.json
tsconfig.tsbuildinfo
*.vsix
.vscode/**
.gitignore
.gitattributes
10 changes: 6 additions & 4 deletions packages/extension/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@ SigTrace is a free, open-source VS Code extension for Angular, Vue, and Solid de
## Key Features

### 1. Visualizer Sidebar
- **Component Clustering**: Automatically groups signals, computed memos, and effects inside visual container cards corresponding to their parent components (e.g. `FilterPanel`, `SearchResultsComponent`).
- **Focus Path Isolation**: Click a node to immediately dim the rest of the graph to 10% opacity, highlighting only that node's direct upstream producers and downstream subscribers.
- **Timeline Playback Player**: Step backward and forward through a chronological history of reactivity ticks, watching the graph update and flash step-by-step.
- **Search Filtering**: Filter out nodes and component containers using the text search bar.
- **Component Clustering & Auditing**: Automatically groups signals, computed memos, and effects inside visual container cards corresponding to their parent components (e.g. `FilterPanel`, `SearchResultsComponent`).
- **Pinned vs Others Categories**: Automatically splits signal logs into Pinned and Others sections. Pinned nodes survive logs clearing (tombstoned) to make comparison testing easy.
- **VS Code Style JSON Inspector**: Formats complex object payloads line-by-line with vertical guidelines and collapsible guidelines. Retains expanded/collapsed node states during active updates.
- **Chronological Playback Timeline**: Step backward and forward through a history of ticks, showing sequential event counter cards (e.g., `event 1/7`) with hide/unpin controls.
- **Focus Path Isolation**: Click a node to immediately dim the rest of the graph, highlighting only that node's direct upstream producers and downstream subscribers.
- **Interactive Search & Hover Copy**: Filter nodes and component containers instantly. Click the copy icon (`⧉`) next to any signal name on hover to copy it to clipboard.

### 2. VS Code CodeLens Telemetry Overlay
- Floating inline telemetry is injected directly above signal/computed/effect declarations inside your editor code files:
Expand Down
12 changes: 2 additions & 10 deletions packages/extension/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
"name": "sigtrace-extension",
"displayName": "SigTrace",
"description": "Angular, Vue, and Solid signals debugger for VS Code",
"version": "1.2.0",
"version": "1.2.1",
"publisher": "sigtrace",
"author": "SigTrace Contributors",
"license": "MIT",
"license": "ELv2",
"homepage": "https://sigtrace.dev",
"bugs": {
"url": "https://github.com/sigtrace-dev/sigtrace/issues"
Expand All @@ -18,14 +18,6 @@
"type": "git",
"url": "git+https://github.com/sigtrace-dev/sigtrace.git"
},
"files": [
"dist/**/*.js",
"src/webview/**/*",
"package.json",
"LICENSE",
"icon.png",
"assets/**/*.svg"
],
"categories": [
"Debuggers",
"Visualization",
Expand Down
Loading
Loading