What's new
drag-lint grows out of the daily work on Micronite (https://www.htrmicronite.com), our quality and production-control software.
1.33.0-alpha
- Cycles fix (mechanical, compile-gated) -- Plans, compile-gates and (with --apply) writes the mechanical fix of one circular uses group, verified against the predicted cycles output.
1.31.5-alpha
- Qualify #convert quick fix -- ConvRulesEditor Convert tab: one click writes the engine's qualified #convert line (apply/1 qualify_fixes) into the open book.
1.31.4-alpha
- type-name-prefix: expected letter from the ancestor chain -- type-name-prefix picks E or T from the ancestor chain (project, then library index); untraceable ancestors are an index gap; autofix uses the finding's letter.
1.31.3-alpha
- Fix all reliability (1.31.3) -- Fix all no longer drops every rename for library-root members, shows a wait cursor and refuses a second fix, and keeps E-prefixed exception classes.
1.31.0-alpha
- Click-to-source: the draglint:// handler -- Registers draglint:// so a chart row opens its line in RAD Studio; a GUI helper exe, no PowerShell.
1.30.0-alpha
- ask -- Ask one report question and print the answer as text.
1.29.0-alpha
- Rename across every project that compiles a shared unit -- A naming fix on a unit several project indexes own renames it in every owner or in none, after an IDE confirmation listing the projects.
1.28.3-alpha
- Copy Selected Diagnostics -- Copies only the Diagnostics rows selected in the Structure form (Ctrl/Shift-click, Ctrl+C) to the clipboard.
- Rescan this unit -- Re-indexes the active project and re-lints the current unit on demand, so the Diagnostics panel drops findings already fixed.
- Setup installer -- One Inno Setup installer for the engine, Graphviz dot, the IDE plugin, ConvRulesEditor, drag-lint-graph and YADF.
1.28.2-alpha
- Work list -- ConvRulesEditor tab: what the last Convert run's converted code still uses from the old components (engine pas_uses).
1.28.0-alpha
- Compare a report with current code -- Reruns a saved or pasted report and shows before / delta / after.
1.26.7-alpha
- Convert progress -- ConvRulesEditor Convert tab: per-step progress (unit, book, phase, elapsed) on the status bar and the tab.
- Reindex project -- ConvRulesEditor command: incremental index --project of the editor's project index, cancellable.
1.26.1-alpha
- Where the charts find Graphviz -- The charts find dot.exe by DRAGLINT_DOT, settings.json, the installed layout, PATH, then the shared default.
- Register the MCP server (Claude Code, VS Code) -- Adds drag-lint serve to Claude Code and VS Code MCP config: merged, backed up, idempotent, removable.
1.22.0-alpha
- convert-apply #migrate (member rename / DL_NONE) -- #migrate Old -> New / Old -> DL_NONE inside a #convert block renames or deliberately breaks a member at every bound .pas access site.
- Feature registry -- The machine-checked master list of every feature, and the generator of the index pages.
1.20.4-alpha
- register-project -- Add a new project to the manifest so index --all and the IDE can see it.
1.20.2-alpha
- Chart questions -- Every chart question of the Reports submenu and drag-lint ask, imported from REPORT_QUESTIONS.
1.20.1-alpha
- Charts and the IDE -- Ask a chart question, open the answer, read a round-trip trace, jump to RAD Studio.
1.20.0-alpha
- project-facts -- Report what the build does: defines that are on and what sets each, imports, output paths and packages.
1.18.0-alpha
- Reconcile Project Members (.dpr/.dproj) -- Compares a project file's declared member list against what is on disk and in the compile closure.
1.17.0-alpha
- doc-forget -- Reap or rename the project tags on inbound documentation facts; a dry run unless told to apply.
1.15.0-alpha
- glyph-vacuum -- Measure every streamed glyph or picture under a tree before writing a glyph rule.
1.13.0-alpha
- ide-release -- Asks a running drag-lint Delphi IDE plugin not to respawn its drag-lint.exe child processes for a while -- and to drop the running one on its next request.
1.11.0-alpha
- lint-tree -- Answers one question lint-all cannot: does an interface edit to this unit reach any dependent?
1.10.0-alpha
- shared-unit -- Reads or extends the dl:shared marker on a unit, recording which projects share it.
1.8.0-alpha
- exceptions-sync -- Declare one exception class per distinct raise Exception.Create message, then rewrite the raise sites.
- ghost-check -- Compiles a project with one or more units' content temporarily replaced by their unsaved editor buffers, then restores the original files unchanged.
1.7.0-alpha
- wiki -- Looks up the dl:wiki concept topics a team has written into their own doc comments, and routes a human phrase to the code that implements it.
- dl:wiki concept blocks -- The format of a dl:wiki block -- the concept notes the wiki verb reads.
1.3.0-alpha
- migrate-dbs -- Moves project index databases into each project's own D-RAG folder, matching the current index layout.
1.2.0-alpha
- convert-apply -- Locates .dfm component instances that match a #convert rule from a conversion-rules file and rewrites all five surfaces: declaration retype, uses-add.
- Full Compile Sweep -- Recompiles a project's stale units and refreshes its stored compiler findings, forcing a full build rather than the default stale-count threshold.
1.1.0-alpha
- convert-scaffold -- Auto-generates a valid conversion-rules file from the real property trees of a from-type and a to-type.
- convert-validate -- Parses and validates a conversion-rules file (a reFind-superset DSL), checking its #link/#default paths against the real property trees.
- proptree -- Recursive deep-property enumerator for a class: flattens its own and inherited properties into dotted paths, recursing into class-typed properties.
0.99.0-alpha
- butterfly -- Composes a symbol's callers (upward wing) and callees (downward wing) into one combined chart in a single command.
0.96.0-alpha
- Call Graph (Butterfly) -- Shows callers and callees of one symbol together in a single "butterfly" view.
- Reverse Call Tree (clickable, Messages window) -- The same reverse call tree, rendered into the IDE's Messages window so each line navigates to the caller.
- Reverse Call Tree (who calls this, N-deep) -- Builds the tree of callers of a chosen symbol, transitively, to a chosen depth.
- Show in Call Graph -- Opens the call graph rooted at the symbol represented by a Structure-tree node.
0.95.0-alpha
- deps-report -- Produces a third-party dependency rollup from an index: which external units/libraries an indexed codebase depends on.
- drag-lint Options -- The plugin's settings dialog for drag-lint: lets you browse and toggle the lint rule catalog.
0.94.0-alpha
- create-enum-helper -- Generates a Byte-family record helper (ToByte/FromByte/ToInteger/ FromInteger/ToString/FromString) for an enum type.
- Create helper class -- Generates a Byte-family record helper for an enum type represented by a Structure-tree node.
- helpers-of -- Lists record/class helper edges targeting a given type, anywhere in the index.
0.93.0-alpha
- doc-drift -- Diagnostic that computes deterministic doc-vs-code drift findings for one symbol.
- document-all -- Documents every public declaration in every indexed unit, with no project scope.
0.92.0-alpha
- pp-profile -- Diagnostic that prints the resolved preprocessor define profile for a project, one symbol per line.
- preprocess-file -- Diagnostic that prints a file's {$IFDEF}-resolved source to stdout under a given define set.
0.91.0-alpha
- ambiguous-calls -- Resolver-coverage diagnostic that reports call sites the engine could not pin to exactly one target -- unresolved or ambiguous calls.
- call-path -- Finds the shortest resolved call path from one symbol to another.
- callgraph -- Prints an N-deep resolved call tree for a symbol, in either direction.
- dump-call-edges -- Diagnostic that dumps every resolved call edge in the index as refid|targetqname|confidence rows.
- find-callees -- Lists the resolved outgoing calls of one routine.
- purge-locals -- A size escape hatch for an index database that has grown too large: it drops local-variable and parameter symbols and runs VACUUM to reclaim space.
0.90.0-alpha
- Document it -- Generates or repairs a managed DocInsight comment on the single symbol represented by a Structure-tree node.
- Document project -- Generates or repairs managed DocInsight comments for every public declaration the project owns, starting from a Structure-tree node's project.
- Document unit -- Generates or repairs managed DocInsight comments for every public declaration in the unit represented by a Structure-tree node (facts-only).
0.86.0-alpha
- outline -- Prints the file-scoped symbol outline for one Pascal unit.
0.85.0-alpha
- extract-method -- Pulls a run of statements out of a routine into a new method.
0.82.0-alpha
- dump-refs -- Diagnostic that dumps every ref in a file together with its enclosingsymbolid attribution.
0.69.0-alpha
- find-unit -- Finds which indexed unit declares a symbol, and adds that unit to a file's uses clause.
- safe-delete -- Deletes a symbol if and only if it has zero references in the index.
0.64.1-alpha
- ghost-recover -- Scans a project's hidden D-RAG folder for recovery journals left behind when a ghost-check overlay was interrupted by a crash.
0.61.0-alpha
- Fix all in project -- Applies autofixes for every fixable finding across the whole project, starting from the Structure form.
- Run Lint All (Full Report) -- Runs the whole rule catalog against a project's indexed code and reports every surviving finding -- the overall project health check.
0.60.0-alpha
- Show Resolved DBs (debug) -- Prints which database(s) drag-lint would actually use for a given project, file, or platform, without running a real query.
0.54.0-alpha
- allow -- Records a dl:ok review of one finding, so it stops being reported without being fixed.
- Allow this message -- Records a dl:ok review of one finding, so it stops being reported without being fixed.
0.48.0-alpha
- lint-project -- Runs project-scoped structural lint rules against an index -- checks such as god-class, unused-public-symbol.
0.44.0-alpha
- Forms for testers (CSV) -- A CSV of a project's forms, one row per form, telling a tester how to reach each one from the main form.
0.43.0-alpha
- Add Missing Units to uses (whole unit) -- The whole-unit form of the undeclared-identifier quick-fix: resolves every unresolved name in a unit at once and adds the units that declare them.
- Circular Uses Report (cycles + fix plan) -- Finds uses cycles among indexed units and, on request, proposes a followable refactoring plan to break them.
- Go to Implementation -- Jumps the editor caret to the implementation of the symbol represented by a Structure-tree node.
- Uses Audit -- interface->impl moves + unused (this unit) -- For one unit, reports which uses entries could move from the interface section to implementation, and which are unused entirely.
- Uses Cleanup Preview (compiler-verified, this unit) -- The removals a Uses Audit suggests, but verified by actually compiling.
0.40.5-alpha
- fb-snapshot -- Connects to a Firebird database and captures a snapshot into a sqlite index.
- link-orm -- Links a project's code index to a SQL index so ORM-style relationships between Delphi symbols and SQL objects can be resolved across both.
- sql -- Runs one read-only SQL statement against an index database and prints the result set.
- Uses Report (CSV) -- Exports the project's unit-dependency data as a CSV file.
0.39.0-alpha
- Open Plugin Log -- Opens the drag-lint plugin's own log file.
0.33.0-alpha
- Find Usages -- Lists every reference to the symbol under the editor caret across the indexed project.
- Find Usages -- Lists references to the symbol represented by a Structure-tree node.
- usages -- Finds usage sites of a named symbol, with a choice of report width.
0.31.0-alpha
- Run AST Checks -- Runs drag-lint's AST-level checks against a file.
0.30.0-alpha
- Show Structure -- Shows a structural outline of the current unit.
0.27.0-alpha
- Unit Test Stub (symbol) -- Uses generate-test to produce a unit-test skeleton for one qualified symbol.
0.26.0-alpha
- compile-check -- Runs a compiler-backed check against a single Delphi project (.dproj) or source file (.pas) and reports the result.
0.25.0-alpha
- Doc Comment Stub (symbol) -- Uses generate-docs to produce a doc-comment stub for one qualified symbol.
- Find Dead Code -- Scans the index for code with no references -- candidates to delete.
0.24.0-alpha
- Rename Symbol -- Renames a symbol across the whole indexed project.
0.21.0-alpha
- Installation -- Getting the CLI, the IDE plugin, or the LSP running.
- Show Completion -- Shows an index-backed completion list at the editor caret.
- Show Signature Help -- Shows parameter help for the call being typed at the editor caret.
- Show Wiring (Spring4D DI + DFM events) -- Surfaces bindings the compiler does not make obvious: Spring4D container registrations and DFM event hookups for a type.
0.19.0-alpha
- info -- Prints engine self-info: version, build date, license (MIT), tree-sitter details, and capabilities.
- Type at Cursor -- Resolves the static type of the expression under the editor caret.
0.18.0-alpha
- bench-context -- Benchmarks the context command by building context bundles for a sample of symbols against a database.
0.17.0-alpha
- Impact / Blast Radius (symbol) -- Reports what would be affected if a chosen symbol changes -- the set of code to retest.
- Symbol Slice -- Shows the slice of code relevant to one symbol: its declaration, body, and immediate context.
0.16.0-alpha
- Format with YADF -- Reformats one Pascal unit by driving the external YADF formatter.
0.15.0-alpha
- About and Status -- The plugin's status window -- versions, connection health, and which indexes are actually in use.
0.13.0-alpha
- diff -- Compares two index databases and reports what changed between them -- for example an index snapshot taken before and after a refactor.
0.12.0-alpha
- Scan TODOs / FIXMEs -- Scans source for TODO/FIXME/HACK/XXX/REVIEW/NOTE markers.
0.10.0-alpha
- drag-lint Graph -- This page documents the "View > Tool Windows > drag-lint Graph" menu entry -- the drag-lint graph viewer.
0.8.0-alpha
- Import Build Log -- Parses an external dcc or msbuild build log and folds its errors and warnings into drag-lint's stored findings.
0.7.0-alpha
- Hover at Cursor -- Shows a hover card for the symbol under the editor caret: signature, documentation, and callers.
0.6.0-alpha
- context -- Returns a compact context bundle for a symbol -- its doc comment, class surface (signatures), the target's own body, and a capped list of callers.
- Export Enums (Delphi const) -- Uses export enums with --format delphi-const to dump indexed enum types as Delphi const declarations.
- Export Graph (DOT) -- Uses graph to export the indexed call/reference graph in DOT format, either whole or rooted at a name substring.
- Export to Obsidian -- Uses export obsidian to write the indexed project out as a set of Obsidian vault markdown pages.
- lsp -- Starts the LSP (Language Server Protocol) stdio server.
- shutdown -- Ask running lsp engines to close their indexes and stand down, so an index can be rebuilt without killing them.
- Top Symbols (fan-in) -- Ranks indexed symbols by fan-in -- how many places reference them.
- workspace add -- Registers a project file into a .drag-lint-workspace.json workspace config, so multi-project workspace commands know about it.
- workspace index -- Indexes every project registered in a .drag-lint-workspace.json workspace config in one pass.
- workspace status -- Reports the status of every project registered in a .drag-lint-workspace.json workspace config.
0.4.0-alpha
- MCP server -- Exposes the index to MCP clients as 15 tools.
- serve -- Starts the MCP (Model Context Protocol) stdio server, for AI clients such as Claude or Cursor to query a drag-lint index.
0.3.0-alpha
- schema -- Prints the live schema of an index database: schemaversion, every table and column, and row counts.
0.2.0-alpha
- drag-lint -- This page documents the "View > Tool Windows > drag-lint" menu entry -- the main drag-lint dockable tool window.
- drag-lint: Project Rules -- Shows the catalog of lint rules in the context of a specific project.
- Lint rules -- Every lint rule the engine ships, imported from rules --json.
0.1.0-alpha
- Auto-Document Whole Project -- Writes DocInsight documentation into every public declaration a project owns.
- Class Surface -- Shows the public surface of a class: its members and signatures, without the method bodies.
- Compiler Hints -- Uses query hints to surface compiler hint/warning findings that have been imported into the index, filtered by code or severity.
- Copy All Diagnostics -- Puts every lint finding for the current unit onto the clipboard, starting from the Structure form.
- Copy Diagnostics (Current File) -- Puts the current file's lint findings onto the clipboard.
- Find Undocumented (public) -- Uses query find to list indexed symbols filtered by documentation state, kind, or visibility.
- Fix all in unit -- Applies autofixes for every fixable finding in the current unit, starting from the Structure form.
- Fix it -- Applies the fix for the single lint finding on a Structure-tree node; an unused unit is removed or moved to implementation by compiling.
- Format Whole Project with YADF -- Runs YADF formatting across a project's files, with indexing involved as part of the same action.
- Lint Buffer (Unsaved) -- Lints the current editor buffer's in-memory content, including unsaved edits, without writing it to disk first.
- query ancestors -- Resolves the transitive class/interface hierarchy of a type.
- query descendants -- The reverse of query ancestors: lists every class that descends from a given ancestor, across all scanned databases.
- query find-callers -- Lists callers of a routine by name, with an option to restrict results to precise, resolved callers.
- query --kind --all -- Lists every symbol of one kind -- every unit, every class, every enum -- with no name, no doc clause and no row cap.
- query --name-like -- Case-insensitive substring search over symbol names.
- query type-usage -- Answers one question, of a list of type names, about one file.
- query typecat -- Resolves a type's category -- float, string, class, interface, and so on.
- query unit-usage -- Answers one question, about one unit and one file.
- Rebuild Index for This Project -- Walks a project's .dproj compile closure and (re)builds its index.
- Symbol Search -- Searches symbols by name across the indexed projects.
0.0.0
- Circular Dependency Report (worked example) -- A worked example: a real four-unit uses cycle, and the report drag-lint produces for it.
- Compile Buffer (unsaved) -- Compiles a project with the current editor buffer's unsaved content substituted for its file on disk, then restores the original file unchanged.
- Compile Dependents -- Check the units that depend on the one being edited now, instead of waiting for the automatic quiet-period pass (lint-tree tier 3).
- Compile & Diagnose -- Compiles a project or unit and folds the compiler's errors and warnings into drag-lint findings.
- ConvRulesEditor -- Visual rulebook editor for the conversion rules; its Convert tab reports StripDB value casts, cast sites to convert by hand and uses changes (engine 1.27).
- drag-lint Graph (dockable) -- Opens the drag-lint graph viewer as a dockable window inside the IDE, so it can sit beside Structure.
- drag-lint Panel (dockable) -- Opens the main drag-lint dockable tool window inside the IDE.
- Effect Summary Legend -- The purity analysis writes a short token string for every routine it judges -- symbolfacts.effectsummary in the index.
- Go to Declaration -- Jumps the editor caret to the declaration of the symbol represented by a Structure-tree node.
- Go to Definition -- Jumps the editor caret to the declaration of the symbol under the cursor.
- IDE Menu Reference -- What every item in the drag-lint menu does.
- Library Drift Check -- Flags registered library roots that have source on disk but nothing in the index.
- Maintenance -- Indexes, the manifest, reindexing, and what to do when something looks wrong.
- Quick-Fix: Add Unit for Inline Hint (H2443) at Cursor -- The same idea as the undeclared-identifier quick-fix, but for compiler hint H2443 -- an inline routine whose declaring unit is not in scope.
- Quick-Fix: Add Unit for Undeclared at Cursor (Ctrl+Alt+U) -- Finds which unit declares the identifier under the caret and adds that unit to the current unit's uses clause.
- Quick-Fix: Convert Public Field to Property at Cursor -- Rewrites a public field under the caret as a property.
- Recover Buffer-Compile Files -- Restores any file left holding unsaved-buffer content after a Compile Buffer (unsaved) run was interrupted (for example by a crash).
- Run Diagnostics (didSave) -- Runs drag-lint's diagnostics pass on a file automatically when it is saved, mirroring the LSP textDocument/didSave notification.
- Uses & Deps Tab -- Open the Uses & Deps tab to review uses-clause fixes and apply them.