Skip to content

Releases: explore-de/sherlock

Sherlock 3.0.10

Choose a tag to compare

@kmscheuer kmscheuer released this 14 Sep 14:05

Bessere Übersetzung natürlichsprachlicher Suchanfragen

ask_codebase und die KI-Suche schickten Fragen nach der Verwendung eines Namens an sym:. Dieses Präfix findet aber nur, wo ein Name im indexierten Code definiert wird. Die Frage „welche Klassen benutzen PostgreSQLContainer" wurde zu sym:PostgreSQLContainer und lieferte nichts — die Klasse stammt aus einer Fremdbibliothek, wird bei uns also nur benutzt. Dieselbe Suche ohne Präfix findet 53 Treffer in 17 Dateien.

Zwei von drei Beispielen in der Anweisung benutzten sym:, und zwei Regeln schoben das Modell aktiv dorthin. Die Anweisung unterscheidet jetzt zwischen „wo ist X definiert" und „was benutzt X", mit je einem Beispiel.

Nebenbei

Die Anweisung liegt jetzt in einem eigenen Modul und ist damit erstmals testbar; das Enum zoektPrefixes ebenfalls. Es zu importieren zog vorher env.mjs und next-auth in jeden Test, der es anfasste.

Vollständige Änderungen: https://github.com/bluesigor/sherlock/compare/v3.0.9...v3.0.10

Sherlock 3.0.9

Choose a tag to compare

@kmscheuer kmscheuer released this 13 Sep 14:30

Behoben: get_file gab base64 statt Quelltext

Das MCP-Werkzeug get_file reichte den bei Zoekt gespeicherten Inhalt unverändert durch — eine Datei kam als eine einzige unlesbare Zeile an. getFileSource gibt den Rohinhalt zurück, und die Browser-Ansicht dekodiert beim Aufruf; das Werkzeug tut das jetzt ebenso.

Gefunden wurde der Fehler nicht beim Lesen des Codes, sondern beim Aufruf der ausgerollten 3.0.8: Die Unit-Tests deckten die Dekodierung einzelner Treffer ab, nie aber den Pfad für ganze Dateien.

Grenze für lange Dateien

get_file liefert höchstens 2.000 Zeilen und weist am Ende auf search_code mit file:-Filter hin. Eine generierte Datei mit Zehntausenden Zeilen hätte sonst den Kontext des Assistenten verdrängt.

Vollständige Änderungen: https://github.com/bluesigor/sherlock/compare/v3.0.8...v3.0.9

Sherlock 3.0.8

Choose a tag to compare

@kmscheuer kmscheuer released this 12 Sep 19:52
5f7d256

Codesuche über MCP

Sherlock spricht jetzt das Model Context Protocol unter /api/mcp. Ein KI-Assistent durchsucht damit alle indexierten Repositories selbst, statt Ausschnitte vorgelegt zu bekommen.

claude mcp add --transport http sherlock https://your-sherlock-host/api/mcp \
  --header "Authorization: Bearer YOUR_KEY"

Vier Werkzeuge, jeweils dünne Hüllen um die vorhandenen Suchdienste: search_code, get_file, list_repos und ask_codebase.

API-Keys

Ein Aufrufer ohne Browser hat keine Sitzung, deshalb bringt diese Version die nötigen Zugangsdaten mit: ein ApiKey-Modell, das ausschließlich den SHA-256-Hash speichert, Bearer-Authentifizierung und eine Einstellungsseite, die den Schlüssel genau einmal zeigt und den fertigen Befehl gleich mitliefert. Die Migration ist rein additiv.

Ein Schlüssel folgt der aktuellen Mitgliedschaft, nicht dem Stand bei seiner Ausstellung: Wer die Organisation verlässt oder aus ihr entfernt wird, verliert den Zugang sofort, und die zugehörigen Schlüssel werden in derselben Transaktion gelöscht.

Weiteres

  • Ergebnisse sind durchgehend seitenweise (Standard 50, Höchstwert 200), damit ein einzelner Aufruf den Kontext des Assistenten nicht verdrängt
  • Treffer tragen echte Zeilennummern und sind ohne zweiten Aufruf verwertbar
  • Gebrandete Social-Link-Vorschauen (#5, Ihor Bliusovych)

Vollständige Änderungen: https://github.com/bluesigor/sherlock/compare/v3.0.7...v3.0.8

Sherlock 3.0.7

Choose a tag to compare

@bluesigor bluesigor released this 12 Sep 11:58
c761f43

Sherlock 3.0.6

Choose a tag to compare

@kmscheuer kmscheuer released this 12 Sep 09:58
0082a08

AI search failures now say what went wrong.

Until now a failed AI search said "AI search unavailable. Try again, rephrase your description, or use a normal search." When the real cause was an account out of credit, rephrasing could never help and finding out meant reading the server log.

The provider already explains why it refused, so that reason is passed on as one of six causes: credit exhausted, API key rejected, rate limited, model unavailable to the account, request timed out, or the previous generic line for anything else. The message names the cause without exposing the key or provider internals.

The search page also shows the cause in the case where no query was translated — previously it appeared only after a translation succeeded and the search itself failed, which is the less likely half of the problem.

Covered by 10 new tests, including the overlapping cases: billing details also appears in quota messages and 429 also shows up in credit errors, so the more specific reading has to win.

Sherlock 3.0.5

Choose a tag to compare

@kmscheuer kmscheuer released this 12 Sep 09:26
06eae12

First release of the fork as a product of its own.

Sign in with Microsoft Entra ID

Sherlock inherited GitHub, Google, email codes and email/password, but no enterprise identity provider — the docs said so outright. The Auth.js Entra provider is now wired in, enabled when AUTH_ENTRA_CLIENT_ID, AUTH_ENTRA_CLIENT_SECRET and AUTH_ENTRA_TENANT_ID are set.

Anyone an identity provider vouches for joins the organization as a member, which makes that provider your access boundary. Email/password sign-up is the exception: it verifies no identity, so such an account gains no access on its own and must be invited. Turn it off with AUTH_CREDENTIALS_LOGIN_ENABLED=false.

AI-assisted search

Describe what you are looking for and it is translated into a zoekt query before the normal search runs, with a live preview while typing. Opt-in, multi-provider (OpenAI and Anthropic), and disabled entirely unless a model is configured. See AI search setup.

Without the hosted product

The subscription and billing machinery is gone — pages, webhook route, seat bookkeeping, the columns on the org model, three npm dependencies. Without a Stripe key none of it ever ran; it was dead weight threaded through the invite flow and repository garbage collection.

Housekeeping

  • Base images move off the end-of-life alpine3.19; Node is pinned to 24.15.0
  • Connections from a config file no longer land in the onboarding wizard
  • A session naming a user that no longer exists is signed out instead of hitting a dead end
  • THIRD_PARTY_NOTICES.md inventories the 1245 bundled packages by licence

Sherlock originates from Sourcebot v3.0.4, the last MIT-licensed release. Provenance is recorded in FORK.md.