No folder indexed yet
Choose a folder and every text file inside it is read once, tokenized into an inverted index, and — for C#, VB, TypeScript, JavaScript, Python, Java and Go — scanned for declarations.
After that, every match is labelled: definition, instantiation, call, reference, import, comment or string.
Tracking
nothing tracked yetProject Intelligence
Run analysis to build project intelligenceImpact & health
Watch queries & regression
Architecture rules & zones
Snapshots & architecture drift
Recent workspaces
Structural intelligence
Git Intelligence
Local repository history and code archaeologyGit / code archaeology
History
No actions recorded yetUser Guide
HAKROS ULTRASEARCH is a local code search and project analysis tool designed to explore large source repositories quickly. It combines indexed text search, symbol navigation, dependency analysis, project intelligence, Git metadata, tracking and history in one interface.
Project analysis is performed locally. Indexing, searching and analysis do not modify your source files.
Getting started
- Open ULTRASEARCH and press the folder button in the top bar.
- Add one or more root folders in Supervised repositories.
- Give every repository a unique ID and choose its identifying colour.
- Press Close & index and wait for indexing to finish.
- Enter a term, symbol, phrase or structured query in Search.
- Open results in the Code Viewer or continue with Connections and Insights for structural analysis.
After a successful persistent index has been saved, ULTRASEARCH can restore it in later sessions without rebuilding everything. If the source tree changes, use Update data to scan the configured repositories again.
Indexing & repositories
Supervised repositories let you analyse several independent root folders as one combined workspace. Each root has its own ID and colour, which are reused throughout Search, Connections, Code Viewer, Insights and Git.
- Repository IDs must be unique.
- Supervised roots cannot be the same folder, overlap, or be nested inside one another.
- Update data reads all configured roots again and rebuilds the combined index.
- Project and solution membership is detected where supported and can be shown as context chips.
- The index is stored locally in the browser so it can be restored after reload or reopening the application.
The indexer recognises common source and text formats including C#, VB.NET, JavaScript, TypeScript, Python, Java-family and C-like languages, Go, Rust, PHP, SQL, XML, HTML, Razor, XAML and configuration files. Symbol and relationship extraction is heuristic and depends on the language and source structure.
Search
Search is the main entry point for locating text, files, declarations, symbols and indexed relationships.
Matching
- Match all words requires every query term.
- Match any word accepts results containing any query term.
- Aa enables exact upper/lower-case matching.
- Whole word requires complete word matches without distinguishing case.
Sorting & scope
- Choose a primary sort and an optional secondary sort.
- Available sorts include relevance, definitions first, alphabetical, file type, size, modified date, project, solution and repository.
- Extension and Repository quickly restrict the visible result set.
Result display
- Compact mode shows only each result block header.
- Highlight by type uses different colours for definitions, calls, references and other occurrence types.
- Context chips show or hide repository, solution and project membership.
Reusable searches
- Favorite searches stores useful queries for quick reuse.
- Track this search sends the current query to Tracking.
- Occurrence chips can limit results to definitions, instantiations, calls, references, imports, comments, strings, file names or paths.
Search syntax
Quick operators can be typed directly or inserted with the buttons beside the search controls. Operators can be combined in the same query.
| Syntax | Purpose | Example |
|---|---|---|
"text" | Match an exact literal phrase. | "Player Controller" |
* | Wildcard that can appear anywhere in a search term. | Player*Controller |
def: | Search symbol definitions. | def:Player |
ref: | Search references to a symbol. | ref:Player |
inherits: | Search types inheriting from a base type. | inherits:BaseController |
kind: | Restrict by symbol kind. | kind:method |
ext: | Restrict by file extension. | ext:cs |
path: | Restrict by file path. | path:Controllers |
- | Exclude matching text or a structured filter. | -Generated |
The Clear quick-operator button removes the current quick prefix while keeping its value.
Query builder & search tools
Query builder
Query builder creates advanced filters without requiring you to memorise syntax. Select a filter, enter its value, optionally exclude it, and press Add filter. Repeat this as many times as needed. The generated query remains editable by hand.
Add to current query appends the generated query to Search. Replace query replaces the current Search text.
Location & containers
Text containing, File name, File extension, Path contains, Repository, Project, Solution, Language, Namespace / package.
Symbols
Defines symbol, References symbol, Class / type, Member, Method, Field, Property, Event, Constructor, Symbol kind.
Relationships
Calls symbol, Called by symbol, Uses symbol / module, Depends on, Inherits from, Implements interface, Base type, Type reference, Using / import, Import.
Declaration details
Attribute / annotation, Modifier, Access / visibility, Return type, Parameter.
Code content
Comment, String literal, TODO / FIXME / HACK, Generated code, Test code.
Metrics & activity
File size, Line count, Complexity, Reference count, Fan-in, Fan-out, Modified date, Git state, Git author.
Tracking & detected features
Tracking tag and Has feature.
Search tools
- Matching options include Regular expression, Whole word and Exact identifier.
- Scope can cover the whole codebase or a current namespace, with temporary exclusions.
- Results can be grouped by file, folder, extension or match type and displayed at normal, compact or detailed density.
- Project presets are available for .NET, Web, PHP, C / C++, Scripts and Configuration.
- Search history can rerun previous queries, and Compare searches compares two recorded searches.
Search results
Each result block identifies the source file and labels detected occurrences such as definitions, instantiations, calls, references, imports, comments and strings. Search highlights follow the active theme and can use per-type colours.
- Open a result to inspect the file in the Code Viewer.
- Use Track file or Track symbol to keep useful items in Tracking.
- Use Compare on two result files to open the full-screen file comparator.
- Repository, solution and project chips show where a result belongs; Details appears when multiple project or solution memberships are detected.
- The extension selector is populated from extensions that are actually present in the current results.
Tracking
Tracking is a persistent workspace for searches, files, symbols and personal notes that you want to keep available.
- Add notes or terms manually, or track searches, files and symbols from other sections.
- Assign multiple tags and click a tag to filter tracked items.
- Suggest tags analyses tracked items and proposes structural tags such as architecture, dependencies, complexity, risk, tests, language and symbol kind.
- Create custom tags, remove individual tags, or delete all tags without deleting the tracked items themselves.
- Only tags with items hides unused tags, while Show descriptions explains tag categories.
- Export as JSON creates a portable tracking backup; Import restores compatible tracking data.
- Clear all removes the tracked items after confirmation.
Connections
Connections visualises relationships found in the indexed codebase. The left structure tree is used to browse namespaces, classes and members, while the graph shows the currently selected architectural view.
Structure tree
- Expand or collapse all groups.
- Sort alphabetically or by repository.
- Show or hide repository chips on namespace groups.
- Filter namespaces, classes and members with optional Whole word and sibling context.
- Drag the separator to resize the tree.
Graph view
- Switch between whole-codebase and focus-on-selection scope.
- Filter by repository and control the maximum number of nodes.
- Choose smart selection, X-Ray detail and namespace/folder collapsing.
- Show orphan files when needed.
- Use Re-layout and Fit to rebuild or recenter the view.
Connections & navigation
- Filter all edges, inheritance only or references only.
- Show both directions, what the selection uses, or what uses it.
- Find node cycles through matching visible nodes.
- Heatmap and Mini-map provide additional visual context.
- Use Ctrl/Cmd+click to select multiple nodes.
Analysis & saved views
- Analysis can highlight dead-code candidates, god class/file candidates and the most complex files.
- Cycles detects visible circular dependencies.
- Path finder finds a visible path between exactly two selected nodes.
- Graph views can be saved, deleted, exported to JSON and imported later.
Select a graph node to see its importance, isolation, fragility, complexity, namespace, source path and visible relationships. When source is available, the node can be opened directly in the Code Viewer.
Code Viewer
The Code Viewer opens source without leaving the current section. It provides syntax highlighting, file tabs, symbol navigation and relationship tools while preserving the original source text.
- Use Back and Forward to move through viewer navigation history, and Prev / Next to move between search matches.
- Go to definition attempts to locate the indexed declaration for the selected identifier.
- Find references, Find callers, Find callees and Inheritance run relationship searches from the selected symbol.
- Double-click an identifier to attempt direct navigation to its definition. When several definitions are plausible, ULTRASEARCH can ask you to choose.
- Symbols that have no indexed declaration can be identified as external rather than opening an unrelated text match.
- The permanent Outline can be filtered and used to jump to declarations. Additional symbol groups may include namespaces, types, methods, properties, events and using/import information.
- Split view opens a second file beside the current file.
- Compare opens the full-screen comparator. Show differences highlights changed lines and inline edits; Sync scroll keeps both files aligned.
- Copy provides source-copy options and Connections opens the relevant graph context.
- The viewer width and outline width are resizable. Minimap can be shown or hidden, and the viewer can be expanded to fill the window.
- Middle-click a Code Viewer file tab to close that tab.
Insights
Insights builds higher-level project intelligence from the current index. Press Analyse project to calculate structural metrics before using the detailed panels.
- Summary cards show indexed files, average structural risk, dependency cycles and dead-code candidates.
- Impact & health ranks hotspots using importance, fragility, blast radius and combined risk.
- Watch queries & regression stores selected searches and can refresh their counts to reveal changes.
- Architecture rules & zones lets you map path fragments to named zones and define forbidden dependency directions between zones.
- Snapshots preserve dependency structure so Compare latest can show added and removed dependencies.
- Recent workspaces keeps locally recorded project summaries.
- Structural intelligence detects modules, structurally similar files and duplicate architecture patterns. Similar files can be opened directly in the file comparator.
- Export report saves an HTML architecture report containing health statistics, hotspots and architecture information.
Git
Git Intelligence scans the supervised repository roots recursively for readable local Git metadata, including nested repositories. Press Analyse Git repositories to run or refresh the scan.
- Each detected repository is associated with its supervised repository chip.
- The current implementation reads local HEAD log information to build a recent repository timeline and activity estimate.
- After a reload, the browser may require folder permission again before Git metadata can be read.
- Browser-only analysis does not run a native Git executable. Packed Git objects therefore do not always expose reliable per-file commit churn.
History
History records useful navigation actions performed during the current and stored application workflow.
- Recorded types include Search, Code view, Graph node and Section.
- Use the Type selector to filter the history.
- Select an entry to reopen the corresponding search, file, node or section.
- Opening an action from History does not create another identical history entry, and consecutive identical actions are not duplicated.
- Individual entries can be removed, or Clear history can remove the full recorded history after confirmation.
Options & stored data
Options controls what is indexed and how locally stored application data is managed.
Scan settings
- Text-like files only limits indexing to recognised text-oriented files.
- Include hidden folders controls hidden-directory traversal.
- Skip bin, obj and packages omits common generated or dependency folders.
- Skip files larger than sets the maximum indexed file size in megabytes.
- Scan-setting changes apply the next time repositories are indexed.
Index & file types
- Index statistics show files, symbols, unique terms and build time.
- Manage file types controls which indexed extensions are included in searches.
- Clear index removes the current search index and saved index session from the browser.
- Reset data removes all application data stored by ULTRASEARCH. Source files on disk are never deleted or modified.
Themes, languages & zoom
The Theme selector changes the complete interface, including Search, Code Viewer, graphs, dialogs, analysis indicators and this guide. Help cards, headings and text use the same theme variables as the rest of ULTRASEARCH so foreground content remains readable across dark, light, high-contrast, vibrant, colour and multicolour themes.
The Zoom selector scales the application interface from 80% to 150%. The startup loading screen remains at its normal size.
English is the source language and Spanish is fully reviewed locally. Chinese, Czech, Dutch, Finnish, French, German, Hindi, Irish, Italian, Japanese, Korean, Norwegian, Polish, Portuguese, Russian, Swedish and Ukrainian are also supported. Reviewed local strings are used first; missing strings can be completed by the browser's local automatic translation system when available, with English as the fallback.
Keyboard & navigation
| Action | Shortcut or gesture |
|---|---|
| Focus and select the main Search field. | / |
| Close the Code Viewer or supported open dialogs. | Esc |
| Select multiple graph nodes. | Ctrl/Cmd + click |
| Close a Code Viewer file tab. | Middle-click the tab. |
| Cycle through matching nodes in the graph search. | Enter |
Local operation & privacy
- Project files are read and analysed locally by the application.
- Normal indexing, searching, Code Viewer navigation, Connections and Insights do not upload project source files.
- Persistent indexes, Tracking, saved graph views, Insights snapshots, settings and History are stored locally in browser storage.
- Export actions only create files when you explicitly choose to save them.
- Automatic translation for missing interface strings uses the browser's local translation capability when available; otherwise the original English text remains visible.
- Indexing and analysis never modify the source files on disk.
Troubleshooting
Expected search results are missing
Check the occurrence chips, Extension and Repository filters, Whole word, Aa, Search tools scope, temporary exclusions and enabled file types. Use Update data if the files changed after indexing.
The index is not available after reload
Wait for the saved local index to finish restoring. If restoration fails or the stored index is stale, use Update data to rebuild it.
Git analysis cannot read repositories
Press Analyse Git repositories again so the browser can request read permission for the supervised folders after a reload.
A translated string remains in English
The selected language may not contain a reviewed translation for that string. ULTRASEARCH will use the browser's local automatic translation system when available and otherwise keeps the English fallback.
The graph is too dense
Reduce the node limit, focus on the current selection, collapse namespaces or folders, or filter by repository and connection direction.
A symbol does not open a definition
The declaration may be external, generated, excluded from the index or ambiguous. Check the indexed file types and repository scope, then update the index if necessary.