775 lines
31 KiB
HTML
775 lines
31 KiB
HTML
<!DOCTYPE HTML>
|
|
<html lang="en" class="light sidebar-visible" dir="ltr">
|
|
<head>
|
|
<!-- Book generated using mdBook -->
|
|
<meta charset="UTF-8">
|
|
<title>Tracking Setup - VAPORA Platform Documentation</title>
|
|
|
|
|
|
<!-- Custom HTML head -->
|
|
|
|
<meta name="description" content="Comprehensive documentation for VAPORA, an intelligent development orchestration platform built entirely in Rust.">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<meta name="theme-color" content="#ffffff">
|
|
|
|
<link rel="icon" href="../favicon.svg">
|
|
<link rel="shortcut icon" href="../favicon.png">
|
|
<link rel="stylesheet" href="../css/variables.css">
|
|
<link rel="stylesheet" href="../css/general.css">
|
|
<link rel="stylesheet" href="../css/chrome.css">
|
|
<link rel="stylesheet" href="../css/print.css" media="print">
|
|
|
|
<!-- Fonts -->
|
|
<link rel="stylesheet" href="../FontAwesome/css/font-awesome.css">
|
|
<link rel="stylesheet" href="../fonts/fonts.css">
|
|
|
|
<!-- Highlight.js Stylesheets -->
|
|
<link rel="stylesheet" id="highlight-css" href="../highlight.css">
|
|
<link rel="stylesheet" id="tomorrow-night-css" href="../tomorrow-night.css">
|
|
<link rel="stylesheet" id="ayu-highlight-css" href="../ayu-highlight.css">
|
|
|
|
<!-- Custom theme stylesheets -->
|
|
|
|
|
|
<!-- Provide site root and default themes to javascript -->
|
|
<script>
|
|
const path_to_root = "../";
|
|
const default_light_theme = "light";
|
|
const default_dark_theme = "dark";
|
|
</script>
|
|
<!-- Start loading toc.js asap -->
|
|
<script src="../toc.js"></script>
|
|
</head>
|
|
<body>
|
|
<div id="mdbook-help-container">
|
|
<div id="mdbook-help-popup">
|
|
<h2 class="mdbook-help-title">Keyboard shortcuts</h2>
|
|
<div>
|
|
<p>Press <kbd>←</kbd> or <kbd>→</kbd> to navigate between chapters</p>
|
|
<p>Press <kbd>S</kbd> or <kbd>/</kbd> to search in the book</p>
|
|
<p>Press <kbd>?</kbd> to show this help</p>
|
|
<p>Press <kbd>Esc</kbd> to hide this help</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="body-container">
|
|
<!-- Work around some values being stored in localStorage wrapped in quotes -->
|
|
<script>
|
|
try {
|
|
let theme = localStorage.getItem('mdbook-theme');
|
|
let sidebar = localStorage.getItem('mdbook-sidebar');
|
|
|
|
if (theme.startsWith('"') && theme.endsWith('"')) {
|
|
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
|
|
}
|
|
|
|
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
|
|
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
|
|
}
|
|
} catch (e) { }
|
|
</script>
|
|
|
|
<!-- Set the theme before any content is loaded, prevents flash -->
|
|
<script>
|
|
const default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? default_dark_theme : default_light_theme;
|
|
let theme;
|
|
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
|
|
if (theme === null || theme === undefined) { theme = default_theme; }
|
|
const html = document.documentElement;
|
|
html.classList.remove('light')
|
|
html.classList.add(theme);
|
|
html.classList.add("js");
|
|
</script>
|
|
|
|
<input type="checkbox" id="sidebar-toggle-anchor" class="hidden">
|
|
|
|
<!-- Hide / unhide sidebar before it is displayed -->
|
|
<script>
|
|
let sidebar = null;
|
|
const sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
|
|
if (document.body.clientWidth >= 1080) {
|
|
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
|
|
sidebar = sidebar || 'visible';
|
|
} else {
|
|
sidebar = 'hidden';
|
|
}
|
|
sidebar_toggle.checked = sidebar === 'visible';
|
|
html.classList.remove('sidebar-visible');
|
|
html.classList.add("sidebar-" + sidebar);
|
|
</script>
|
|
|
|
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
|
|
<!-- populated by js -->
|
|
<mdbook-sidebar-scrollbox class="sidebar-scrollbox"></mdbook-sidebar-scrollbox>
|
|
<noscript>
|
|
<iframe class="sidebar-iframe-outer" src="../toc.html"></iframe>
|
|
</noscript>
|
|
<div id="sidebar-resize-handle" class="sidebar-resize-handle">
|
|
<div class="sidebar-resize-indicator"></div>
|
|
</div>
|
|
</nav>
|
|
|
|
<div id="page-wrapper" class="page-wrapper">
|
|
|
|
<div class="page">
|
|
<div id="menu-bar-hover-placeholder"></div>
|
|
<div id="menu-bar" class="menu-bar sticky">
|
|
<div class="left-buttons">
|
|
<label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
|
|
<i class="fa fa-bars"></i>
|
|
</label>
|
|
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
|
|
<i class="fa fa-paint-brush"></i>
|
|
</button>
|
|
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
|
|
<li role="none"><button role="menuitem" class="theme" id="default_theme">Auto</button></li>
|
|
<li role="none"><button role="menuitem" class="theme" id="light">Light</button></li>
|
|
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
|
|
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
|
|
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
|
|
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
|
|
</ul>
|
|
<button id="search-toggle" class="icon-button" type="button" title="Search (`/`)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="/ s" aria-controls="searchbar">
|
|
<i class="fa fa-search"></i>
|
|
</button>
|
|
</div>
|
|
|
|
<h1 class="menu-title">VAPORA Platform Documentation</h1>
|
|
|
|
<div class="right-buttons">
|
|
<a href="../print.html" title="Print this book" aria-label="Print this book">
|
|
<i id="print-button" class="fa fa-print"></i>
|
|
</a>
|
|
<a href="https://github.com/vapora-platform/vapora" title="Git repository" aria-label="Git repository">
|
|
<i id="git-repository-button" class="fa fa-github"></i>
|
|
</a>
|
|
<a href="https://github.com/vapora-platform/vapora/edit/main/docs/src/../setup/tracking-setup.md" title="Suggest an edit" aria-label="Suggest an edit">
|
|
<i id="git-edit-button" class="fa fa-edit"></i>
|
|
</a>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<div id="search-wrapper" class="hidden">
|
|
<form id="searchbar-outer" class="searchbar-outer">
|
|
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
|
|
</form>
|
|
<div id="searchresults-outer" class="searchresults-outer hidden">
|
|
<div id="searchresults-header" class="searchresults-header"></div>
|
|
<ul id="searchresults">
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
|
|
<script>
|
|
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
|
|
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
|
|
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
|
|
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
|
|
});
|
|
</script>
|
|
|
|
<div id="content" class="content">
|
|
<main>
|
|
<hr />
|
|
<h2>title: Vapora Tracking System - Complete Setup Guide
|
|
date: 2025-11-10
|
|
version: 1.0</h2>
|
|
<h1 id="-vapora-tracking-system---complete-setup-guide"><a class="header" href="#-vapora-tracking-system---complete-setup-guide">🛠️ Vapora Tracking System - Complete Setup Guide</a></h1>
|
|
<p><strong>This guide covers everything from zero to fully operational tracking system.</strong></p>
|
|
<hr />
|
|
<h2 id="-table-of-contents"><a class="header" href="#-table-of-contents">📋 Table of Contents</a></h2>
|
|
<ol>
|
|
<li><a href="#prerequisites">Prerequisites</a></li>
|
|
<li><a href="#installation">Installation</a></li>
|
|
<li><a href="#configuration">Configuration</a></li>
|
|
<li><a href="#verification">Verification</a></li>
|
|
<li><a href="#first-use">First Use</a></li>
|
|
<li><a href="#troubleshooting">Troubleshooting</a></li>
|
|
</ol>
|
|
<hr />
|
|
<h2 id="prerequisites"><a class="header" href="#prerequisites">Prerequisites</a></h2>
|
|
<h3 id="system-requirements"><a class="header" href="#system-requirements">System Requirements</a></h3>
|
|
<div class="table-wrapper"><table><thead><tr><th>Requirement</th><th>Minimum</th><th>Recommended</th></tr></thead><tbody>
|
|
<tr><td>OS</td><td>macOS 10.15+</td><td>macOS 12+</td></tr>
|
|
<tr><td>RAM</td><td>2GB</td><td>4GB+</td></tr>
|
|
<tr><td>Disk</td><td>1GB</td><td>2GB+</td></tr>
|
|
<tr><td>Internet</td><td>Required for install</td><td>Required</td></tr>
|
|
</tbody></table>
|
|
</div>
|
|
<h3 id="software-requirements"><a class="header" href="#software-requirements">Software Requirements</a></h3>
|
|
<pre><code class="language-bash"># Check if installed
|
|
rustc --version # Need 1.70+
|
|
cargo --version # Comes with Rust
|
|
git --version # Need 2.20+
|
|
</code></pre>
|
|
<h3 id="installation-check"><a class="header" href="#installation-check">Installation Check</a></h3>
|
|
<pre><code class="language-bash">#!/bin/bash
|
|
echo "Checking prerequisites..."
|
|
|
|
# Check Rust
|
|
if ! command -v rustc &> /dev/null; then
|
|
echo "❌ Rust not found. Install from https://rustup.rs"
|
|
exit 1
|
|
fi
|
|
|
|
# Check Cargo
|
|
if ! command -v cargo &> /dev/null; then
|
|
echo "❌ Cargo not found. Install Rust from https://rustup.rs"
|
|
exit 1
|
|
fi
|
|
|
|
# Check Rust version
|
|
RUST_VERSION=$(rustc --version | awk '{print $2}')
|
|
echo "✅ Rust $RUST_VERSION found"
|
|
echo "✅ All prerequisites met!"
|
|
</code></pre>
|
|
<hr />
|
|
<h2 id="installation"><a class="header" href="#installation">Installation</a></h2>
|
|
<h3 id="step-1-install-rust-if-needed"><a class="header" href="#step-1-install-rust-if-needed">Step 1: Install Rust (if needed)</a></h3>
|
|
<pre><code class="language-bash"># Download and install Rust
|
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
|
|
|
# Follow the prompts (default options are fine)
|
|
|
|
# Add Rust to PATH
|
|
source $HOME/.cargo/env
|
|
|
|
# Verify installation
|
|
rustc --version
|
|
cargo --version
|
|
</code></pre>
|
|
<p><strong>Expected output:</strong></p>
|
|
<pre><code>rustc 1.XX.X (XXXXXXXXXXXX YYYY-MM-DD)
|
|
cargo 1.XX.X (XXXXXXXXXXXX YYYY-MM-DD)
|
|
</code></pre>
|
|
<h3 id="step-2-clone-or-navigate-to-vapora"><a class="header" href="#step-2-clone-or-navigate-to-vapora">Step 2: Clone or Navigate to Vapora</a></h3>
|
|
<pre><code class="language-bash"># Option A: Clone (if you don't have it)
|
|
git clone https://github.com/yourusername/vapora.git
|
|
cd vapora
|
|
|
|
# Option B: Navigate (if you already have it)
|
|
cd vapora
|
|
|
|
# Verify structure
|
|
ls crates/vapora-tracking/
|
|
# Should show: Cargo.toml, README.md, src/, benches/
|
|
</code></pre>
|
|
<h3 id="step-3-build-the-tracking-system"><a class="header" href="#step-3-build-the-tracking-system">Step 3: Build the Tracking System</a></h3>
|
|
<pre><code class="language-bash"># Build tracking crate
|
|
cargo build -p vapora-tracking
|
|
|
|
# Output should show:
|
|
# Compiling vapora-tracking v0.1.0
|
|
# Finished `dev` profile [unoptimized + debuginfo]
|
|
|
|
# For faster runtime (slower build):
|
|
cargo build -p vapora-tracking --release
|
|
|
|
# Output should show:
|
|
# Finished `release` profile [optimized]
|
|
</code></pre>
|
|
<p><strong>Build time:</strong></p>
|
|
<ul>
|
|
<li>Debug: 30-60 seconds (first time)</li>
|
|
<li>Release: 2-5 minutes (first time)</li>
|
|
<li>Subsequent: 1-10 seconds (incremental)</li>
|
|
</ul>
|
|
<h3 id="step-4-verify-build"><a class="header" href="#step-4-verify-build">Step 4: Verify Build</a></h3>
|
|
<pre><code class="language-bash"># List build artifacts
|
|
ls -lh target/debug/deps/ | grep vapora_tracking
|
|
|
|
# Should show several .rlib and other files
|
|
|
|
# Or with release build
|
|
ls -lh target/release/deps/ | grep vapora_tracking
|
|
</code></pre>
|
|
<h3 id="step-5-install-cli-components"><a class="header" href="#step-5-install-cli-components">Step 5: Install CLI Components</a></h3>
|
|
<pre><code class="language-bash"># Create commands directory if it doesn't exist
|
|
mkdir -p ~/.claude/commands
|
|
mkdir -p ~/.claude/skills
|
|
|
|
# Copy tracking commands
|
|
cp ~/.claude/commands/log-change.md ~/.claude/commands/
|
|
cp ~/.claude/commands/add-todo.md ~/.claude/commands/
|
|
cp ~/.claude/commands/track-status.md ~/.claude/commands/
|
|
|
|
# Copy tracking skill
|
|
cp ~/.claude/skills/tracking.md ~/.claude/skills/
|
|
|
|
# Verify installation
|
|
ls -la ~/.claude/commands/ | grep -E "log-change|add-todo|track-status"
|
|
ls -la ~/.claude/skills/ | grep tracking
|
|
</code></pre>
|
|
<hr />
|
|
<h2 id="configuration"><a class="header" href="#configuration">Configuration</a></h2>
|
|
<h3 id="option-1-default-configuration-recommended"><a class="header" href="#option-1-default-configuration-recommended">Option 1: Default Configuration (Recommended)</a></h3>
|
|
<p>The system works out of the box with defaults:</p>
|
|
<pre><code class="language-bash"># Default database location
|
|
~/.tracking/database.sqlite
|
|
|
|
# Default watch directories
|
|
~/.coder/
|
|
~/.claude/todos/
|
|
|
|
# Default API port
|
|
3000
|
|
</code></pre>
|
|
<p><strong>No configuration needed! Skip to Verification.</strong></p>
|
|
<h3 id="option-2-custom-configuration"><a class="header" href="#option-2-custom-configuration">Option 2: Custom Configuration</a></h3>
|
|
<p>Create <code>~/.config/vapora-tracking.toml</code>:</p>
|
|
<pre><code class="language-toml">[database]
|
|
# SQLite database path (use your home directory)
|
|
url = "sqlite://~/.tracking/database.sqlite"
|
|
|
|
# Max connections to database
|
|
max_connections = 5
|
|
|
|
# Connection timeout (seconds)
|
|
timeout = 5
|
|
|
|
[watcher]
|
|
# Directories to watch for changes (customize for your setup)
|
|
watch_dirs = [
|
|
"~/.coder",
|
|
"~/.claude/todos"
|
|
]
|
|
|
|
# Debounce time (milliseconds)
|
|
debounce_ms = 500
|
|
|
|
[api]
|
|
# API server port
|
|
port = 3000
|
|
|
|
# API host
|
|
host = "127.0.0.1"
|
|
|
|
[logging]
|
|
# Log level: trace, debug, info, warn, error
|
|
level = "info"
|
|
|
|
# Log file path
|
|
file = "/tmp/vapora-tracking.log"
|
|
</code></pre>
|
|
<h3 id="option-3-environment-variables"><a class="header" href="#option-3-environment-variables">Option 3: Environment Variables</a></h3>
|
|
<pre><code class="language-bash"># Set database location (use your home directory)
|
|
export TRACKING_DATABASE_URL="sqlite://~/.tracking/database.sqlite"
|
|
|
|
# Set API port
|
|
export TRACKING_API_PORT=3000
|
|
|
|
# Set log level
|
|
export RUST_LOG=info
|
|
|
|
# These override config file values
|
|
</code></pre>
|
|
<hr />
|
|
<h2 id="verification"><a class="header" href="#verification">Verification</a></h2>
|
|
<h3 id="test-1-build-success"><a class="header" href="#test-1-build-success">Test 1: Build Success</a></h3>
|
|
<pre><code class="language-bash"># Clean rebuild to verify
|
|
cargo clean -p vapora-tracking
|
|
cargo build -p vapora-tracking
|
|
|
|
# Check for success
|
|
if [ $? -eq 0 ]; then
|
|
echo "✅ Build successful"
|
|
else
|
|
echo "❌ Build failed"
|
|
exit 1
|
|
fi
|
|
</code></pre>
|
|
<h3 id="test-2-tests-pass"><a class="header" href="#test-2-tests-pass">Test 2: Tests Pass</a></h3>
|
|
<pre><code class="language-bash"># Run all unit tests
|
|
cargo test -p vapora-tracking --lib
|
|
|
|
# Expected output:
|
|
# running 20 tests
|
|
# ...
|
|
# test result: ok. 20 passed; 0 failed
|
|
</code></pre>
|
|
<p><strong>If not 20 tests:</strong></p>
|
|
<pre><code class="language-bash"># Check what tests exist
|
|
cargo test -p vapora-tracking --lib -- --list
|
|
|
|
# Run with output for debugging
|
|
cargo test -p vapora-tracking --lib -- --nocapture
|
|
</code></pre>
|
|
<h3 id="test-3-code-quality"><a class="header" href="#test-3-code-quality">Test 3: Code Quality</a></h3>
|
|
<pre><code class="language-bash"># Run clippy checks
|
|
cargo clippy -p vapora-tracking --lib -- -W clippy::all
|
|
|
|
# Should show minimal warnings (profile warning is expected)
|
|
</code></pre>
|
|
<h3 id="test-4-cli-commands"><a class="header" href="#test-4-cli-commands">Test 4: CLI Commands</a></h3>
|
|
<pre><code class="language-bash"># Verify commands are installed
|
|
ls ~/.claude/commands/
|
|
|
|
# Output should include:
|
|
# add-todo.md
|
|
# log-change.md
|
|
# track-status.md
|
|
|
|
# Verify skill
|
|
ls ~/.claude/skills/tracking.md
|
|
</code></pre>
|
|
<h3 id="test-5-api-health"><a class="header" href="#test-5-api-health">Test 5: API Health</a></h3>
|
|
<pre><code class="language-bash"># Start service
|
|
./scripts/start-tracking-service.nu
|
|
|
|
# Wait 2 seconds
|
|
sleep 2
|
|
|
|
# Check health endpoint
|
|
curl http://localhost:3000/api/v1/tracking/health
|
|
|
|
# Expected output:
|
|
# {"status":"ok","service":"vapora-tracking","timestamp":"2025-11-10T..."}
|
|
</code></pre>
|
|
<h3 id="verification-checklist"><a class="header" href="#verification-checklist">Verification Checklist</a></h3>
|
|
<pre><code class="language-bash"># Run all verifications
|
|
echo "Running verification tests..."
|
|
|
|
# Test 1: Build
|
|
cargo build -p vapora-tracking 2>&1 | grep -q "Finished"
|
|
[ $? -eq 0 ] && echo "✅ Build" || echo "❌ Build"
|
|
|
|
# Test 2: Tests
|
|
cargo test -p vapora-tracking --lib 2>&1 | grep -q "20 passed"
|
|
[ $? -eq 0 ] && echo "✅ Tests" || echo "❌ Tests"
|
|
|
|
# Test 3: Clippy
|
|
cargo clippy -p vapora-tracking --lib 2>&1 | grep -q "error:" && echo "❌ Clippy" || echo "✅ Clippy"
|
|
|
|
# Test 4: Commands
|
|
[ -f ~/.claude/commands/log-change.md ] && echo "✅ Commands" || echo "❌ Commands"
|
|
|
|
# Test 5: Skills
|
|
[ -f ~/.claude/skills/tracking.md ] && echo "✅ Skills" || echo "❌ Skills"
|
|
|
|
echo "Verification complete!"
|
|
</code></pre>
|
|
<hr />
|
|
<h2 id="first-use"><a class="header" href="#first-use">First Use</a></h2>
|
|
<h3 id="your-first-change-log"><a class="header" href="#your-first-change-log">Your First Change Log</a></h3>
|
|
<pre><code class="language-bash"># Log your first change
|
|
/log-change "Set up Vapora tracking system" \
|
|
--impact infrastructure \
|
|
--files 1
|
|
|
|
# Expected response: Change logged successfully
|
|
</code></pre>
|
|
<h3 id="your-first-todo"><a class="header" href="#your-first-todo">Your First TODO</a></h3>
|
|
<pre><code class="language-bash"># Create your first TODO
|
|
/add-todo "Review tracking system documentation" \
|
|
--priority M \
|
|
--estimate S \
|
|
--due 2025-11-12
|
|
|
|
# Expected response: TODO created successfully
|
|
</code></pre>
|
|
<h3 id="your-first-status-check"><a class="header" href="#your-first-status-check">Your First Status Check</a></h3>
|
|
<pre><code class="language-bash"># Check current status
|
|
/track-status --limit 5
|
|
|
|
# Expected output shows your 1 change and 1 TODO
|
|
</code></pre>
|
|
<h3 id="your-first-export"><a class="header" href="#your-first-export">Your First Export</a></h3>
|
|
<pre><code class="language-bash"># Export to JSON
|
|
./scripts/export-tracking.nu json --output tracking-report
|
|
|
|
# Export to Markdown
|
|
./scripts/export-tracking.nu markdown --project vapora > report.md
|
|
|
|
# Check results
|
|
ls -la tracking-report.json
|
|
cat report.md
|
|
</code></pre>
|
|
<hr />
|
|
<h2 id="troubleshooting"><a class="header" href="#troubleshooting">Troubleshooting</a></h2>
|
|
<h3 id="build-issues"><a class="header" href="#build-issues">Build Issues</a></h3>
|
|
<h4 id="issue-errore0433-failed-to-resolve"><a class="header" href="#issue-errore0433-failed-to-resolve">Issue: "error[E0433]: failed to resolve"</a></h4>
|
|
<p><strong>Solution:</strong></p>
|
|
<pre><code class="language-bash"># Update Rust
|
|
rustup update
|
|
|
|
# Clean and rebuild
|
|
cargo clean -p vapora-tracking
|
|
cargo build -p vapora-tracking
|
|
</code></pre>
|
|
<h4 id="issue-could-not-compile--due-to-x-previous-errors"><a class="header" href="#issue-could-not-compile--due-to-x-previous-errors">Issue: "could not compile ... due to X previous errors"</a></h4>
|
|
<p><strong>Solution:</strong></p>
|
|
<pre><code class="language-bash"># Check Rust version
|
|
rustc --version # Must be 1.70+
|
|
|
|
# Update if needed
|
|
rustup install stable
|
|
|
|
# Verify dependencies
|
|
cargo tree -p vapora-tracking
|
|
</code></pre>
|
|
<h3 id="database-issues"><a class="header" href="#database-issues">Database Issues</a></h3>
|
|
<h4 id="issue-database-file-not-found"><a class="header" href="#issue-database-file-not-found">Issue: "Database file not found"</a></h4>
|
|
<p><strong>Solution:</strong></p>
|
|
<pre><code class="language-bash"># Create database directory
|
|
mkdir -p ~/.tracking
|
|
|
|
# Start service to initialize
|
|
./scripts/start-tracking-service.nu
|
|
|
|
# Check database was created
|
|
ls -la ~/.tracking/
|
|
</code></pre>
|
|
<h4 id="issue-failed-to-initialize-database"><a class="header" href="#issue-failed-to-initialize-database">Issue: "Failed to initialize database"</a></h4>
|
|
<p><strong>Solution:</strong></p>
|
|
<pre><code class="language-bash"># Reset database
|
|
rm ~/.tracking/database.sqlite
|
|
|
|
# Service will recreate on next start
|
|
./scripts/start-tracking-service.nu
|
|
</code></pre>
|
|
<h3 id="cli-issues"><a class="header" href="#cli-issues">CLI Issues</a></h3>
|
|
<h4 id="issue-log-change-not-found-in-claude-code"><a class="header" href="#issue-log-change-not-found-in-claude-code">Issue: "/log-change not found" in Claude Code</a></h4>
|
|
<p><strong>Solution:</strong></p>
|
|
<pre><code class="language-bash"># Verify commands are copied
|
|
ls ~/.claude/commands/log-change.md
|
|
|
|
# If missing, copy them
|
|
cp ~/.claude/commands/log-change.md ~/.claude/commands/
|
|
|
|
# Restart Claude Code
|
|
</code></pre>
|
|
<h4 id="issue-command-not-recognized"><a class="header" href="#issue-command-not-recognized">Issue: "Command not recognized"</a></h4>
|
|
<p><strong>Solution:</strong></p>
|
|
<pre><code class="language-bash"># Check command format
|
|
/log-change --help
|
|
|
|
# Should show usage information
|
|
# If not, commands aren't properly installed
|
|
</code></pre>
|
|
<h3 id="api-issues"><a class="header" href="#api-issues">API Issues</a></h3>
|
|
<h4 id="issue-connection-refused-when-calling-api"><a class="header" href="#issue-connection-refused-when-calling-api">Issue: "Connection refused" when calling API</a></h4>
|
|
<p><strong>Solution:</strong></p>
|
|
<pre><code class="language-bash"># Start the service
|
|
./scripts/start-tracking-service.nu --verbose
|
|
|
|
# Wait for startup
|
|
sleep 2
|
|
|
|
# Check health
|
|
curl -v http://localhost:3000/api/v1/tracking/health
|
|
|
|
# Check logs
|
|
tail -f /tmp/vapora-tracking.log
|
|
</code></pre>
|
|
<h4 id="issue-port-3000-already-in-use"><a class="header" href="#issue-port-3000-already-in-use">Issue: "Port 3000 already in use"</a></h4>
|
|
<p><strong>Solution:</strong></p>
|
|
<pre><code class="language-bash"># Use different port
|
|
./scripts/start-tracking-service.nu --port 3001
|
|
|
|
# Or kill existing service
|
|
lsof -i :3000
|
|
kill -9 <PID>
|
|
</code></pre>
|
|
<h3 id="performance-issues"><a class="header" href="#performance-issues">Performance Issues</a></h3>
|
|
<h4 id="issue-build-is-very-slow"><a class="header" href="#issue-build-is-very-slow">Issue: Build is very slow</a></h4>
|
|
<p><strong>Solution:</strong></p>
|
|
<pre><code class="language-bash"># Use incremental compilation
|
|
export CARGO_INCREMENTAL=1
|
|
|
|
# Use faster linker (if available)
|
|
export RUSTFLAGS="-C link-arg=-fuse-ld=lld"
|
|
|
|
# Or just use release build once
|
|
cargo build -p vapora-tracking --release
|
|
</code></pre>
|
|
<h4 id="issue-high-memory-usage"><a class="header" href="#issue-high-memory-usage">Issue: High memory usage</a></h4>
|
|
<p><strong>Solution:</strong></p>
|
|
<pre><code class="language-bash"># Limit parallel jobs during build
|
|
cargo build -p vapora-tracking -j 2
|
|
|
|
# Or reduce connection pool
|
|
# Edit storage.rs: max_connections = 2
|
|
</code></pre>
|
|
<hr />
|
|
<h2 id="quick-troubleshooting-reference"><a class="header" href="#quick-troubleshooting-reference">Quick Troubleshooting Reference</a></h2>
|
|
<div class="table-wrapper"><table><thead><tr><th>Problem</th><th>Quick Fix</th></tr></thead><tbody>
|
|
<tr><td>Build fails</td><td><code>cargo clean && cargo build</code></td></tr>
|
|
<tr><td>Tests fail</td><td><code>rustup update</code> then rebuild</td></tr>
|
|
<tr><td>Commands missing</td><td><code>cp ~/.claude/commands/*</code></td></tr>
|
|
<tr><td>API won't start</td><td><code>./scripts/start-tracking-service.nu --verbose</code></td></tr>
|
|
<tr><td>Database errors</td><td><code>rm ~/.tracking/database.sqlite</code></td></tr>
|
|
<tr><td>Port in use</td><td><code>./scripts/start-tracking-service.nu --port 3001</code></td></tr>
|
|
<tr><td>Slow build</td><td><code>export CARGO_INCREMENTAL=1</code></td></tr>
|
|
</tbody></table>
|
|
</div>
|
|
<hr />
|
|
<h2 id="system-validation-script"><a class="header" href="#system-validation-script">System Validation Script</a></h2>
|
|
<p>Save this as <code>validate-tracking.sh</code>:</p>
|
|
<pre><code class="language-bash">#!/bin/bash
|
|
|
|
set -e
|
|
|
|
echo "🔍 Validating Vapora Tracking System Installation"
|
|
echo "=================================================="
|
|
|
|
# Check Rust
|
|
echo "Checking Rust..."
|
|
if ! command -v rustc &> /dev/null; then
|
|
echo "❌ Rust not found"
|
|
exit 1
|
|
fi
|
|
echo "✅ Rust $(rustc --version | awk '{print $2}')"
|
|
|
|
# Check build
|
|
echo "Building tracking crate..."
|
|
cargo build -p vapora-tracking 2>&1 | tail -3
|
|
echo "✅ Build successful"
|
|
|
|
# Check tests
|
|
echo "Running tests..."
|
|
TEST_OUTPUT=$(cargo test -p vapora-tracking --lib 2>&1)
|
|
if echo "$TEST_OUTPUT" | grep -q "test result: ok. 20 passed"; then
|
|
echo "✅ All 20 tests passed"
|
|
else
|
|
echo "❌ Tests failed"
|
|
exit 1
|
|
fi
|
|
|
|
# Check CLI
|
|
echo "Checking CLI components..."
|
|
[ -f ~/.claude/commands/log-change.md ] && echo "✅ Commands installed" || echo "⚠️ Commands not found"
|
|
[ -f ~/.claude/skills/tracking.md ] && echo "✅ Skill installed" || echo "⚠️ Skill not found"
|
|
|
|
# Check scripts
|
|
echo "Checking scripts..."
|
|
[ -f ./scripts/start-tracking-service.nu ] && echo "✅ Scripts available" || echo "⚠️ Scripts not found"
|
|
|
|
echo ""
|
|
echo "=================================================="
|
|
echo "✅ Validation Complete - System Ready!"
|
|
echo "=================================================="
|
|
|
|
echo ""
|
|
echo "Next steps:"
|
|
echo "1. /log-change \"Your first change\""
|
|
echo "2. /add-todo \"Your first task\""
|
|
echo "3. /track-status"
|
|
</code></pre>
|
|
<p>Run it:</p>
|
|
<pre><code class="language-bash">chmod +x validate-tracking.sh
|
|
./validate-tracking.sh
|
|
</code></pre>
|
|
<hr />
|
|
<h2 id="whats-next-after-setup"><a class="header" href="#whats-next-after-setup">What's Next After Setup?</a></h2>
|
|
<h3 id="immediate-today"><a class="header" href="#immediate-today">Immediate (Today)</a></h3>
|
|
<ul>
|
|
<li><input disabled="" type="checkbox"/>
|
|
Complete all verification tests</li>
|
|
<li><input disabled="" type="checkbox"/>
|
|
Create your first change log</li>
|
|
<li><input disabled="" type="checkbox"/>
|
|
Create your first TODO</li>
|
|
<li><input disabled="" type="checkbox"/>
|
|
Run your first status check</li>
|
|
</ul>
|
|
<h3 id="short-term-this-week"><a class="header" href="#short-term-this-week">Short Term (This Week)</a></h3>
|
|
<ul>
|
|
<li><input disabled="" type="checkbox"/>
|
|
Use <code>/log-change</code> for actual changes</li>
|
|
<li><input disabled="" type="checkbox"/>
|
|
Use <code>/add-todo</code> for tasks</li>
|
|
<li><input disabled="" type="checkbox"/>
|
|
Explore <code>/track-status</code> filters</li>
|
|
<li><input disabled="" type="checkbox"/>
|
|
Try exporting to different formats</li>
|
|
</ul>
|
|
<h3 id="medium-term-this-month"><a class="header" href="#medium-term-this-month">Medium Term (This Month)</a></h3>
|
|
<ul>
|
|
<li><input disabled="" type="checkbox"/>
|
|
Set up automated syncing</li>
|
|
<li><input disabled="" type="checkbox"/>
|
|
Create custom dashboard queries</li>
|
|
<li><input disabled="" type="checkbox"/>
|
|
Integrate with your workflows</li>
|
|
<li><input disabled="" type="checkbox"/>
|
|
Set up reports</li>
|
|
</ul>
|
|
<hr />
|
|
<h2 id="getting-help"><a class="header" href="#getting-help">Getting Help</a></h2>
|
|
<p><strong>Issue not listed above?</strong></p>
|
|
<ol>
|
|
<li>Check the <a href="../crates/vapora-tracking/INTEGRATION.html#troubleshooting">TROUBLESHOOTING section</a> in INTEGRATION.md</li>
|
|
<li>Review <a href="./TRACKING_SYSTEM_STATUS.html">TRACKING_SYSTEM_STATUS.md</a></li>
|
|
<li>Check logs: <code>tail -f /tmp/vapora-tracking.log</code></li>
|
|
<li>Read inline code documentation: <code>cargo doc -p vapora-tracking --open</code></li>
|
|
</ol>
|
|
<hr />
|
|
<h2 id="summary"><a class="header" href="#summary">Summary</a></h2>
|
|
<p>You've successfully set up the Vapora tracking system!</p>
|
|
<h3 id="what-you-now-have"><a class="header" href="#what-you-now-have">What you now have:</a></h3>
|
|
<p>✅ <strong>Built:</strong> vapora-tracking crate compiled and tested
|
|
✅ <strong>Verified:</strong> All 20 tests passing
|
|
✅ <strong>Installed:</strong> CLI commands and skill
|
|
✅ <strong>Running:</strong> Tracking service ready
|
|
✅ <strong>Configured:</strong> Database and API ready</p>
|
|
<h3 id="start-using-it"><a class="header" href="#start-using-it">Start using it:</a></h3>
|
|
<pre><code class="language-bash">/log-change "Example change" --impact backend
|
|
/add-todo "Example task" --priority H
|
|
/track-status
|
|
</code></pre>
|
|
<p><strong>Happy tracking! 🚀</strong></p>
|
|
|
|
</main>
|
|
|
|
<nav class="nav-wrapper" aria-label="Page navigation">
|
|
<!-- Mobile navigation buttons -->
|
|
<a rel="prev" href="../../setup/deployment-quickstart.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
|
|
<i class="fa fa-angle-left"></i>
|
|
</a>
|
|
|
|
<a rel="next prefetch" href="../../setup/tracking-quickstart.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
|
<i class="fa fa-angle-right"></i>
|
|
</a>
|
|
|
|
<div style="clear: both"></div>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
|
|
<nav class="nav-wide-wrapper" aria-label="Page navigation">
|
|
<a rel="prev" href="../../setup/deployment-quickstart.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
|
|
<i class="fa fa-angle-left"></i>
|
|
</a>
|
|
|
|
<a rel="next prefetch" href="../../setup/tracking-quickstart.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
|
<i class="fa fa-angle-right"></i>
|
|
</a>
|
|
</nav>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
window.playground_copyable = true;
|
|
</script>
|
|
|
|
|
|
<script src="../elasticlunr.min.js"></script>
|
|
<script src="../mark.min.js"></script>
|
|
<script src="../searcher.js"></script>
|
|
|
|
<script src="../clipboard.min.js"></script>
|
|
<script src="../highlight.js"></script>
|
|
<script src="../book.js"></script>
|
|
|
|
<!-- Custom JS scripts -->
|
|
|
|
|
|
</div>
|
|
</body>
|
|
</html>
|