Skip to content

feat: add codelens-watch.py — file watcher with auto outline.json generation#1

Merged
Wolfvin merged 1 commit into
mainfrom
feat/codelens-watch
Jun 10, 2026
Merged

feat: add codelens-watch.py — file watcher with auto outline.json generation#1
Wolfvin merged 1 commit into
mainfrom
feat/codelens-watch

Conversation

@Wolfvin

@Wolfvin Wolfvin commented Jun 10, 2026

Copy link
Copy Markdown
Owner

What

Adds codelens-watch.py — a standalone file watcher that monitors a project folder and auto-generates codelens/outline.json + codelens/summary.json on every file change.

Why

The existing watch command in codelens.py only updates the internal .codelens/ registry. This new script provides a simpler, project-focused watcher that outputs a clean, portable JSON outline directly inside the watched folder.

Features

  • File watcher: watches for create/modify/delete events
  • Debounce: configurable (default 0.5s) to batch rapid saves
  • Output: codelens/outline.json (per-file detail) + codelens/summary.json (aggregate counts)
  • Multi-language: TS, JS, TSX, Python, Rust, CSS, SCSS, HTML, Vue, Svelte
  • Extracts: functions, classes, interfaces, types, variables, exports, imports, components, selectors, keyframes
  • Event-driven: uses watchdog (with polling fallback)
  • Auto-ignore: node_modules, .git, dist, build, pycache, etc.
  • Single-scan mode: --once flag for CI/CD

Usage

# Install watchdog (once)
pip install watchdog

# Watch a folder
python3 codelens-watch.py smart-tax-assistance/app

# Single scan
python3 codelens-watch.py ./src --once

# Custom debounce and output dir
python3 codelens-watch.py ./app --debounce 1.0 --output-dir .codelens

Test Results

[16:50:41] ✓ 88 files | 384 funcs | 5 classes | 44 interfaces | 38 types

On file change:

[CodeLens Watch] Changed: app/page.tsx
[16:50:45] ✓ 88 files | 384 funcs | 5 classes | 44 interfaces | 38 types

…eration

- Watches a project folder for file changes (create/modify/delete)
- Re-scans on change with configurable debounce (default 0.5s)
- Outputs codelens/outline.json (per-file detail) and codelens/summary.json (aggregate)
- Supports all CodeLens languages: TS, JS, TSX, Python, Rust, CSS, HTML, Vue, Svelte
- Extracts: functions, classes, interfaces, types, variables, exports, imports, components
- Event-driven via watchdog (with polling fallback)
- Auto-ignores: node_modules, .git, dist, build, __pycache__, etc.
- Single-scan mode via --once flag

Usage:
  python3 codelens-watch.py smart-tax-assistance/app
  python3 codelens-watch.py ./src --debounce 1.0 --once
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@Wolfvin Wolfvin merged commit 6229745 into main Jun 10, 2026
@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
7.2% Duplication on New Code (required ≤ 3%)

See analysis details on SonarQube Cloud

@Wolfvin Wolfvin deleted the feat/codelens-watch branch June 11, 2026 15:54
Wolfvin pushed a commit that referenced this pull request Jun 11, 2026
Elimination #1: Fix critical should_ignore substring matching bug + monorepo detection
- scan.py: fixed substring matching in should_ignore (node_modules matched 'node_modules_old')
- framework_detect.py: +80 lines monorepo detection (nx, turborepo, lerna)
- utils.py: added monorepo/CI/docs dirs to DEFAULT_IGNORE_DIRS
Wolfvin pushed a commit that referenced this pull request Jun 12, 2026
Five new features that make CodeLens zero-config and token-efficient:

1. Auto-setup: if no registry exists, any analysis command auto-runs init+scan
   - No more 'run init then scan then query' — just query directly
   - Auto-setup info included in response via _auto_setup field

2. Universal --top N flag: limits all list results to top N items
   - Works with ANY command: smell --top 5, complexity --top 10, dead-code --top 3
   - Adds truncated flags when results are cut

3. --lite flag: minimal output for AI decision-making
   - query --lite returns just {status, found, action, action_reason}
   - impact/refactor-safe --lite returns just {status, risk, action}
   - Other commands: status + stats + top 5 items

4. --max-tokens N: truncate output to fit within token budget
   - Iteratively removes largest arrays until output fits
   - Falls back to minimal {status, stats} if still too large

5. --format ai: normalized output schema across all commands
   - Consistent: {status, command, stats, items[], truncated, recommendations, metadata}
   - Dead-code: results{cat:[]} → items[{...,_category}]
   - Smell: by_category{cat:[]} → items[{...,_category}]
   - One parsing pattern for all 45 commands

Also: updated SKILL-QUICK.md and SKILL.md with new features documentation
Wolfvin pushed a commit that referenced this pull request Jun 12, 2026
…e modes

6 improvements to make CodeLens the #1 AI-lovable skill:

1. Smart defaults: Auto --top 20 for 24 list-returning commands
   - No more 1000+ item responses by default
   - Override with --top 0 for unlimited or --top N for custom

2. Sort-aware --top: Items sorted by relevance before truncation
   - complexity: sort by cyclomatic descending
   - smell/secrets/perf-hint/debug-leak: sort by severity (critical first)
   - side-effect: sort by effect_count descending
   - Other: original order preserved

3. Command-specific lite modes for 10+ commands:
   - smell --lite: {health_score, action, top_findings[], stats}
   - complexity --lite: {stats, top_complex[], high_complexity_count}
   - dead-code --lite: {removal_safety, recommended_action, top_items[]}
   - debug-leak --lite: {stats, top_leaks[]}
   - perf-hint --lite: {risk, stats, top_hints[]}
   - secrets --lite: {risk, action, stats, top_findings[]}
   - a11y/css-deep/regex-audit/vuln-scan --lite: {risk, stats, top_items[], recommendations[]}

4. Fixed lite mode for dict-keyed results (smell, dead-code)
   - Previously: smell --lite returned {status, health_score} only (by_category is dict, not list)
   - Now: returns actionable top_findings + action field

5. Added missing keys to _LIST_KEYS: top_priority, actionable_items, etc.

6. Fixed --format ai normalizer to include by_category, top_priority, actionable_items
   - Previously: smell --format ai returned 0 items
   - Now: correctly flattens category-keyed dicts into items[]

Updated SKILL-QUICK.md and SKILL.md with:
- Smart Defaults documentation
- Lite Mode Per Command reference table
- Updated Token Budget Strategy
Wolfvin pushed a commit that referenced this pull request Jun 12, 2026
3 final improvements to make CodeLens the definitive #1 AI skill:

1. SKILL-QUICK.md compact: 390 → 141 lines (64% reduction)
   - Removed verbose per-command schema tables (covered by --help)
   - Compressed trigger maps and disambiguation into inline format
   - Kept only essential: flags, lite modes, decision rules, command list

2. CODELENS_AI_MODE env var: makes --format ai the default
   - Set CODELENS_AI_MODE=1 to auto-get normalized {stats, items[], truncated} output
   - Backward compatible: without env var, default is still JSON
   - Fixed format resolution: subparser default=None no longer overrides
     the CODELENS_AI_MODE default

3. Auto-setup timeout protection:
   - Auto-setup now caps scan at 3000 files (prevents 5+ min waits)
   - Uses subprocess to call scan with --max-files 3000
   - Falls back to cmd_scan() directly if subprocess fails
   - Returns capped=true + hint in response when limit is hit
   - Prints progress messages to stderr for AI visibility

Updated docs with CODELENS_AI_MODE and auto-setup behavior sections.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant