{"id":51004692,"url":"https://github.com/pratik-anurag/perry","last_synced_at":"2026-06-20T19:01:42.504Z","repository":{"id":359364341,"uuid":"1242871445","full_name":"pratik-anurag/perry","owner":"pratik-anurag","description":"Perry Code Context is a local-first VS Code extension that shows readable CodeLens context above meaningful symbols in supported source files. It helps answer who uses code, what it calls, who last touched it, which tests look related, and who likely owns the file.","archived":false,"fork":false,"pushed_at":"2026-05-21T18:47:50.000Z","size":634,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-21T23:07:05.106Z","etag":null,"topics":["code-intelligence","code-ownership","git","references"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pratik-anurag.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-18T20:48:33.000Z","updated_at":"2026-05-21T18:47:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/pratik-anurag/perry","commit_stats":null,"previous_names":["pratik-anurag/perry"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/pratik-anurag/perry","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pratik-anurag%2Fperry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pratik-anurag%2Fperry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pratik-anurag%2Fperry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pratik-anurag%2Fperry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pratik-anurag","download_url":"https://codeload.github.com/pratik-anurag/perry/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pratik-anurag%2Fperry/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34581934,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-20T02:00:06.407Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["code-intelligence","code-ownership","git","references"],"created_at":"2026-06-20T19:01:38.122Z","updated_at":"2026-06-20T19:01:42.499Z","avatar_url":"https://github.com/pratik-anurag.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Perry Code Context\n\nPerry Code Context is a local-first VS Code extension that shows readable CodeLens context above meaningful symbols in supported source files. It helps answer who uses code, what it calls, who last touched it, which tests look related, and who likely owns the file.\n\nPerry starts only when you ask it to. Run `Perry: Start` from the Command Palette to enable its CodeLens, hover, symbol links, local file watching, and details panel. Run `Perry: Stop` when you want it fully dormant again.\n\nExample context:\n\n![alt text](image.png)\n\nThe editor line above a symbol uses VS Code CodeLens, so it reserves space and does not overlap source text. Hover a function, method, class, interface, enum, or module to see the full comment-style context card with actions. Where VS Code document links are available, Ctrl/Cmd-click the symbol name to open the details panel.\n\n## Supported Languages\n\n- TypeScript\n- JavaScript\n- TSX\n- JSX\n- Python\n- Go\n- Java\n\n## Requirements\n\n- VS Code 1.85 or newer\n- Local workspace files\n- Git installed for Git context\n- A language server for reference counts\n- Java support requires the VS Code Extension Pack for Java or Language Support for Java by Red Hat\n- Java support also needs a local JDK when the Java language server cannot use an embedded runtime\n\nNo external services, API keys, AI integration, telemetry, or network calls are required at runtime.\n\n## Settings\n\n- `perry.enabled`: enable or disable inline annotations after Perry has been manually started. Default: `true`\n- `perry.showInlineContext`: deprecated. Inline decoration blocks are disabled because they do not reserve editor space. Default: `false`\n- `perry.showDetailsLens`: show the non-overlapping CodeLens summary. Default: `true`\n- `perry.enableHover`: show a rich hover card on supported symbols. Default: `true`\n- `perry.enableSymbolLinks`: make symbol names Ctrl/Cmd-clickable where VS Code document links are available. Default: `true`\n- `perry.maxSymbolsPerFile`: maximum symbols per file. Default: `100`\n- `perry.enableGit`: include Git blame/log context. Default: `true`\n- `perry.enableReferences`: include language server reference counts. Default: `true`\n- `perry.enableTests`: search related local tests. Default: `true`\n- `perry.enableOwners`: match local CODEOWNERS rules. Default: `true`\n\n## Commands\n\n- `Perry: Start` (`perry.start`)\n- `Perry: Stop` (`perry.stop`)\n- `Perry: Refresh` (`perry.refresh`)\n- `Perry: Show Details` (`perry.showDetails`)\n- `Perry: Toggle` (`perry.toggle`)\n- `Perry: Show Diagnostics` (`perry.showDiagnostics`)\n\n`Perry: Show Diagnostics` reports command-layer activation time, the latest Perry start time, heap deltas, and current extension-host memory. VS Code runs extensions in a shared extension host, so memory values are process-level rather than exact Perry-only memory.\n\n## CODEOWNERS\n\nPerry looks for CODEOWNERS in:\n\n- `.github/CODEOWNERS`\n- `CODEOWNERS`\n- `docs/CODEOWNERS`\n\nIt uses a practical local parser that ignores comments and blank lines, applies the last matching rule, and supports simple `*` globs, path prefixes, file suffixes such as `*.ts`, and directory patterns ending in `/`.\n\n## Related Test Discovery\n\nThe extension searches:\n\n- `**/*.{test,spec}.{ts,tsx,js,jsx,py}`\n- `**/*_test.go`\n- `**/*Test.java`\n- `**/*Tests.java`\n- `**/*IT.java`\n- `**/*ITCase.java`\n- `**/__tests__/**/*.{ts,tsx,js,jsx,py}`\n- `**/src/test/java/**/*.java`\n- `tests/**/*.{py,ts,tsx,js,jsx,go,java}`\n\nA test is considered related when it contains the symbol name or its filename contains the source filename stem. Details are limited to five related tests per symbol.\n\n## Known Limitations\n\n- Reference counts depend on the active VS Code language server.\n- Git context uses local `git blame` for the symbol line and falls back to `git log` for the file.\n- CODEOWNERS matching is intentionally simple and does not implement the full GitHub CODEOWNERS grammar.\n- Test discovery is heuristic and local-only.\n\n## Development\n\n```sh\nnpm install\nnpm run compile\nnpm test\n```\n\nPress `F5` in VS Code to launch an Extension Development Host, then open a supported source file.\n\n## Architecture Notes\n\n- [docs/architecture.md](docs/architecture.md) explains Perry's runtime lifecycle, data flow, cache boundaries, and extension points.\n- [docs/adr](docs/adr) records architectural decisions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpratik-anurag%2Fperry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpratik-anurag%2Fperry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpratik-anurag%2Fperry/lists"}