envscope reached its first public release as a TUI-first .env inspection tool. The project started as planning documents and is now a packaged Python application with a full Textual interface, core comparison engine, PyPI distribution, and GitHub release binaries for Windows and Linux.
What Shipped
The v1.0 release detects:
- Missing keys declared in examples but absent from real env files.
- Extra keys present in real env files but undeclared in examples.
- Duplicate keys inside one file, preserving all line numbers.
- Empty-but-required values.
- Insecure values in both directions: real secrets leaked into example files and weak placeholder values left in real env files.
The app remains intentionally TUI-only. There are no CLI subcommands, CI mode, JSON output mode, daemon, or headless workflow in this version.
Product and UX
The interface was shaped around a developer diff dashboard: dark terminal styling, green/purple/blue accents, a file explorer picker, a scope list, candidate tabs, category counts, a diff table, and a selected-finding detail panel.
The picker now includes a file explorer. Selecting a directory updates the scan path, and selecting an .env* file uses its parent directory. Single-scope projects open directly into the diff view so simple projects like a root .env plus .env.example do not require extra navigation.
The diff view supports search, severity filtering, suppressed finding visibility, selected-finding details, and selected-only secret reveal. Secret-like values are masked by default throughout the TUI and export flow.
Core Engine
The core/ layer is UI-agnostic and independently tested. It contains:
- A custom dotenv parser that preserves ordering, line numbers, duplicate entries, blank values, quotes, and
export prefixes.
- A scanner that discovers flat projects, multi-variant flat projects, and monorepo scopes.
- A comparator that returns dataclass-based findings.
- A data-driven heuristic engine for known token formats, high-entropy strings, weak values, and blank required secrets.
One important v1 fix was discovery behavior for gitignored env files. Many real projects list .env in .gitignore; envscope now still scans target .env files even when ordinary .gitignore rules mention them, while continuing to skip ignored directories such as .git, node_modules, venv, dist, and build.
Configuration
.envscope.toml supports:
- Custom scan ignore globs.
- Custom secret patterns.
- Custom weak values.
- Reasoned suppressions.
Suppressed findings are not deleted. They remain visible in the TUI and Markdown export, but are counted separately from active findings. Each suppression requires a reason.
Packaging and Release
The package was published to PyPI as envscope version 1.0.0.
Install command:
pip install envscope
PyPI page:
https://pypi.org/project/envscope/1.0.0/
GitHub release:
https://github.com/DevaanshPathak/envscope/releases/tag/v1.0.0
Release binaries:
envscope-windows-x86_64.exe
envscope-linux-x86_64
macOS binaries were intentionally skipped for this release. Building reliable macOS standalone binaries should be done on a macOS runner or macOS machine.
Verification
The final release passed:
uv run --extra dev pytest
uv run python -m compileall -q envscope tests
uv run python -m build
uv run python -m twine check dist/*
Test coverage includes parser behavior, scanner discovery, .gitignore handling, comparator categories, config parsing, suppressions, export formatting, heuristics, and a Textual smoke test.