9 Commits

  • chore(repo): add issue/PR templates, SECURITY.md, CoC, package metadata; widen CI triggers
    Closes a cluster of community-profile gaps (#248, #249, #251, #252) in one
    PR rather than four micro-PRs that all touch the same surface area.
    
    ### Templates (#251, #252)
    
    - .github/ISSUE_TEMPLATE/bug_report.yml — required fields for repro
      (plugin version, platform, OS, project language, file count); the four
      pieces of context that are missing from ~every current bug report.
    - .github/ISSUE_TEMPLATE/feature_request.yml — leads with the *problem*
      rather than the proposed solution, which keeps maintainer review focused
      on whether to solve, not just how.
    - .github/ISSUE_TEMPLATE/question.yml — separate from bug to keep the
      bug queue triagable.
    - .github/ISSUE_TEMPLATE/config.yml — disables blank issues and routes
      general discussion to README + Discussions.
    - .github/PULL_REQUEST_TEMPLATE.md — includes the version-bump checklist
      that CLAUDE.md says must stay in sync across 5 manifests; otherwise
      every contributor learns this rule by getting their PR bounced.
    
    ### Community files
    
    - CODE_OF_CONDUCT.md — short, project-specific document that names the
      expectations and reporting path. Not a verbatim Contributor Covenant
      to keep it readable.
    - SECURITY.md — describes the project's local-only threat model
      explicitly so reporters know what's in / out of scope before they
      spend time on a writeup. Points at GitHub private vulnerability
      reporting as the primary channel.
    
    ### CI (#249)
    
    - ci.yml now also runs on pushes to main, not only PRs. Without this,
      a direct push to main (which happens when maintainers merge a PR
      branch locally) doesn't trigger CI, so a regression can land green-
      looking and stay broken for days.
    - Added a concurrency group that cancels stale runs for the same ref.
      Saves runner minutes and keeps the per-ref status meaningful.
    - Used `github.ref` (a controlled value), not user-controlled input,
      so no script-injection surface.
    
    ### package.json (#248)
    
    - Added description, license, repository, bugs, homepage, keywords —
      the standard set for npm package discoverability and so GitHub's
      community-profile check shows the project at 100%.
  • Merge pull request #204 from Lum1104/feat/semantic-batching-and-output-chunking
    fix(#159): semantic batching + bundled importMap + Phase 1 speedup
  • chore(lint): switch to recommended baseline, fix errors, wire into CI
    - typescript-eslint preset: strict -> recommended for a usable first-pass
      baseline (per PR discussion); ratchet up in a follow-up.
    - Drop the projectService/parserOptions block. Neither `recommended` nor
      `strict` is type-aware, so it was unused; removing it also avoids the
      pnpm-workspace tsconfig-resolution failure mode flagged in review.
    - Add Node + browser globals via the `globals` package so .mjs scripts and
      the dashboard stop hitting `no-undef`.
    - Expand ignores: built bundles (**/public/**), Astro generated (.astro/),
      and .private/ (eval scratch). Cuts 2400+ errors in vendored output.
    - Allow `_`-prefixed unused vars/args/caught errors; skip irregular
      whitespace inside comments (json-parser intentionally embeds ZWSP-escaped
      block-comment examples in JSDoc).
    - Fix the residual 13 genuine errors: drop dead imports/vars, replace
      two `as any[]` in schema.ts with `Array<Record<string, unknown>>`,
      drop unused destructure in change-classifier, drop unused catch binding
      in extract-structure.mjs.
    - Add EOF newline to eslint.config.mjs.
    - Refresh pnpm-lock.yaml.
    - Add `pnpm lint` step to .github/workflows/ci.yml so the tooling
      actually enforces something.
    
    pnpm lint now exits 0 locally; 33+13 test files / 1445 tests still pass.
  • chore: add ESLint tooling with TypeScript support
    The repository has a pnpm lint script running 'eslint .' but ESLint
    and typescript-eslint were not listed in devDependencies.
    
    Added:
    - eslint (^9.0.0)
    - @eslint/js (^9.0.0)
    - typescript-eslint (^8.0.0)
    
    Added eslint.config.mjs with flat config (ESLint 9+) using
    typescript-eslint strict rules. Ignores node_modules, dist, build,
    and framework-specific output directories.
  • fix: Address code review feedback for PR #142
    - Remove invalid allowBuilds from pnpm-workspace.yaml (use onlyBuiltDependencies in root package.json)
    - Use data-testid for search input selector (fixes / keyboard shortcut for non-English locales)
  • fix: OpenCode plugin not discovering skills (#16)
    OpenCode installs the repo via git and looks at the root for the plugin
    entry point. Our skills/agents live inside understand-anything-plugin/,
    so OpenCode couldn't find them.
    
    - Add .opencode/plugins/understand-anything.js that uses the config hook
      to inject understand-anything-plugin/skills/ into skills.paths
    - Add "main" field to root package.json pointing to the plugin entry
    - Update INSTALL.md with version pinning and troubleshooting sections
    
    Closes #16
    
    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
  • fix: resolve plugin installation failures for workspace resolution and missing dependencies
    - Add pnpm-workspace.yaml to plugin distribution so workspace:* deps resolve on install
    - Add devlop and hast-util-to-jsx-runtime as explicit dashboard dependencies (pnpm strict hoisting)
    - Make tsconfig.json files self-contained to work outside monorepo root
    - Add prepare script to auto-build core package after pnpm install
    - Bump version to 1.0.2