See which functions changed, not which lines.

Sasca reads every new commit in the repositories it follows, parses the code with each language’s own parser, and records the methods, classes and modules that were added, modified or removed.

A diff shows linescollection_renderer.rb
@@ -88,9 +88,10 @@
def render_collection(collection, view, path, template, layout, block)
- identifier = (template && template.identifier) || path
+ identifier = template&.identifier || path
+ return nil if collection.blank?
ActiveSupport::Notifications.instrument(
@@ -141,6 +142,14 @@
+ def collection_with_template(view, template, layout, collection)
+ collection.each_with_info.map do |object, (path, as, counter, iteration)|
Sasca shows what they belong tosame commits
  • MActionView::CollectionRenderer::render_collectionMethod
  • AActionView::CollectionRenderer::collection_with_templateMethod

Reading a change

MActionView::CollectionRenderer::render_collectionMethod
What happened
A added, M modified, R removed
Module
Namespaces and packages
Class
Classes, structs, interfaces and other types
Method
Methods and functions: what changed, in bold

Open a change to see its diff, folded around the symbol, with its first line marked. Changes are grouped by the commits they came from, with a link to compare them on GitHub or GitLab.

Each language, read by its own parser

Sasca names each symbol the way its language does, so a moved line or a reformatted file doesn’t look like a new function.

  • RubyPrism
  • JavaScript, TypeScript, VueTypeScript’s compiler
  • PythonPyright’s parser
  • PHPphp-parser, PHP 8.4
  • Gogo/parser
  • Rustsyn
  • Javajavac
  • KotlinThe Kotlin compiler
  • C#Roslyn
  • Soliditysolidity-parser

Ask from your coding agent

Sasca is an MCP server too. Agents like Claude Code, Cursor and Codex can ask it what changed between two releases of a dependency, the history of a function, or what changed lately, and get answers function by function, and follow, unfollow and add repositories for you. The first time, your agent asks you to sign in to Sasca and allow it.

To set it up, tell your agent:

Read https://sasca.dev/agents.md and set up Sasca.

Or add it yourself: claude mcp add --transport http sasca https://api.sasca.dev/mcp, or a server with the URL https://api.sasca.dev/mcp in other clients.

Follow only what you care about

  • Follow a repository, a class or a folderFrom a repository’s page or any change. A class includes everything inside it.
  • Read your feedFollowing shows only the changes that touch what you follow.
  • Get toldSend each change to Slack, Discord, Matrix or your own URL as it lands.

Private repositories work too, through Sasca’s GitHub App or a GitLab connection that can only read code. What Sasca records about them is shown only to you and people who connect the same repository.

Start with the latest changes

The homepage shows what changed in Rails, GitLab, Home Assistant and other large projects, as it lands. Sign in to follow your own.