Repository navigation
Release v16.2.0
Added
The audit command now gives you complete visibility into suppressed warnings across your codebase. You can optionally expose findings previously hidden by ignore directives or baseline files to understand exactly what is being silenced in your project. log
New rule avoid_unbounded_image_in_full_bleed_container: flags an Image/Image.asset/Image.network/Image.memory/Image.file with no width/height/cacheWidth/cacheHeight sitting inside a full-bleed ancestor (Positioned.fill, SizedBox.expand, or a Stack with fit: StackFit.expand) — the image decodes at native resolution and is then stretched to fill an arbitrarily large parent, wasting decode memory. Skips false positives where a nearer SizedBox/Container/ConstrainedBox/AspectRatio already constrains the image's own size.
Added (Extension)
- New file-watcher exclusion audit checks the workspace's
files.watcherExcludesetting on activation and recommends missing patterns for heap dumps, build output, and tooling caches that can crash VS Code when tracked. "Add All" writes them into workspace settings in one click; "Dismiss" suppresses the prompt permanently for that workspace. - Extension host process memory monitoring: the ProcessMonitor now samples the Node.js extension host RSS and heap on each poll, with trend tracking and a configurable warning threshold (
extensionHostWarningGB, default 1 GB) that surfaces in the status bar — the blind spot behind the 2026-09-05 crash. - Workspace hazard scan: on activation, scans for dangerously large files (heap dumps, oversized logs, any file >100 MB) not excluded from the file watcher. Warns with a one-click action to add
files.watcherExcludepatterns. Disable viasaropaLints.systemHealth.workspaceHazardScan. - Workspace readiness indicator: combines hazard scan, watcher exclude audit, and extension host memory into a single status bar signal with a
saropaLints.showWorkspaceReadinesscommand that opens an actionable quick-pick listing each issue. - Every top-level section of the Findings Dashboard (Overview KPIs, Charts, TODO/HACK, Drift Advisor, Suppressions, Top Rules, Findings) is now individually collapsible via a native disclosure triangle. Each section remembers its open/closed state per workspace, and a collapsed section still shows its counter so you know how many items are inside without expanding it.
- Unified every counter on the Findings Dashboard (chart totals, section headers, TODO/HACK counts, and the big KPI stat-card numbers) onto the same pill component already used by the status-line pills, for one consistent counter look across the page. Severity colors are unchanged.
- "Include suppressed" checkbox in the Findings Dashboard toolbar (visible only in audit mode) passes the new
--include-suppressedCLI flag through the UI — check it, run audit, and suppressed violations appear in the findings table with an orange "Suppressed" pill badge. No config files are touched. - New "Copy everything as JSON" and "Save everything report" items in the More-actions menu (audit mode only) export the raw, unfiltered audit result — bypassing all dashboard filters and including suppressed findings — so you can get a true everything-export without manually clearing filters first.
- New "Suppressed Findings" collapsible section appears in the dashboard when audit mode has
--include-suppressedactive and there are suppressed violations. Groups findings by suppression kind (ignore, ignore_for_file, baseline) with a mini table and per-row "Unsuppress" button (currently shows a hint — full comment-removal is planned). - New "Suppress all visible" bulk action in the Findings Dashboard's More-actions menu inserts
// ignore: <rule>above every finding currently shown in the table, in one confirmed, all-or-nothing edit across every affected file. Disabled when there are no findings to suppress. - New extension-native check flags a
bugs/*.mdreport marked Fixed, Closed, or Declined that is still sitting inbugs/instead of being archived toplans/history/, as a Problems-panel hint on the report'sStatus:line. No action required — this only surfaces reports that were left un-archived. - New extension-native check (mirror image of the above) flags a markdown file filed under the configured archive directory (default
plans/history/) that still reads as open work — an openStatus:/Severity:field or an unaddressed action-items heading — as a Problems-panel hint suggesting it be moved to the open-issues directory instead. Archive glob, open-issues directory, and the open/closed signal patterns are all configurable viasaropaLints.docPlacement.*settings; disable withsaropaLints.docPlacement.enabled.
Fixed (Extension)
-
Drift Advisor integration now supports authenticated servers via a new
saropaLints.driftAdvisor.authTokensetting, with matching guidance states in both the tree view (linking to Settings) and the Findings Dashboard status pill when a token is missing or was rejected by the server. -
Fixed Code Health dashboard KPI tiles silently losing their semantic color coding (red/amber/info) after the pill-unification refactor —
kpiCard()was missing the.pillclass that the updated CSS selectors require. -
Fixed silent status bar disappearance when
updateAllStatusBarsthrows (e.g. corruptedworkspaceStateafter a VS Code hard crash). The bar now catches errors, shows a visible$(error) Saropa Lints: Errorstate with an error-themed background, and logs to the output channel so the failure is discoverable.
Internal
- Converted the workspace hazard scan's recursive directory walk from synchronous
fs.readdirSync/fs.statSyncto asyncfs.promises.readdir/fs.promises.stat, preventing the extension host thread from blocking on large workspaces. Subdirectory walks and file stat calls now fan out concurrently viaPromise.all. - Extracted duplicate watcher-exclude merge logic (read config, spread, set keys, write at workspace level) from both
workspaceHazardScan.tsandwatcherExcludeAudit.tsinto a sharedmergeWatcherExcludeshelper inwatcherExcludeHelpers.ts. - Added a guard around the watcher-exclude audit's
workspaceState.getcall so a corrupted workspace state after a VS Code crash does not prevent the audit from running. - Fixed extension version scheme so stable releases supersede their betas on Marketplace and Open VSX. Stable versions now bump minor to the next even above the prerelease odd minor (e.g.
16.2.x>16.1.x). - Documented the split between Dart AST rules (
lib/src/rules/, scoped to resolved.dartfiles) and ad hoc extension-native checks (extension/src/, full workspace file access, ownDiagnosticCollectioneach, not yet surfaced in the web report) inbugs/ISSUE_REPORT_GUIDE.md, so non-Dart-file issues are routed correctly instead of being misfiled as out of scope. No action required.