Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: elixir-error-tracker/error-tracker
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.5.2
Choose a base ref
...
head repository: elixir-error-tracker/error-tracker
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v0.6.0
Choose a head ref
  • 10 commits
  • 29 files changed
  • 2 contributors

Commits on Feb 28, 2025

  1. Fix error grouping issue (#133)

    The errors are being grouped in a wrong way because a type mismatch
    comparison was done between the application name and the stacktrace
    application name.
    
    The fix is to convert the configured application name to a string and be
    able to compare it with the stacktrace application name.
    
    You can test it putting this script on the root project:
    
    <details>
    
    ```elixir
    Mix.install([
      {:ecto_sql, "~> 3.0"},
      {:postgrex, "~> 0.1"},
      {:error_tracker, path: "."},
      {:bandit, "~> 1.0"}
    ])
    
    ### ErrorLogger config
    
    Application.put_env(:error_tracker, :repo, Repo)
    Application.put_env(:error_tracker, :otp_app, :myapp)
    Application.put_env(:error_tracker, :enabled, true)
    
    defmodule AddErrorTracker do
      use Ecto.Migration
    
      def up, do: ErrorTracker.Migration.up(version: 4)
    
      def down, do: ErrorTracker.Migration.down(version: 1)
    end
    
    ### Common config
    
    Application.put_env(:myapp, Repo, database: "mix_install_examples")
    
    defmodule Repo do
      use Ecto.Repo, adapter: Ecto.Adapters.Postgres, otp_app: :myapp
    end
    
    defmodule Migration0 do
      use Ecto.Migration
    
      def change do
        create table("posts") do
          add(:title, :string)
          timestamps(type: :utc_datetime_usec)
        end
      end
    end
    
    defmodule Post do
      use Ecto.Schema
    
      schema "posts" do
        field(:title, :string)
        timestamps(type: :utc_datetime_usec)
      end
    end
    
    defmodule Main do
      import Ecto.Query, warn: false
    
      def migrate do
        Repo.__adapter__().storage_down(Repo.config())
        :ok = Repo.__adapter__().storage_up(Repo.config())
        {:ok, _} = Repo.start_link([])
        Ecto.Migrator.run(Repo, [{0, Migration0}, {1, AddErrorTracker}], :up, all: true, log_migrations_sql: :info)
      end
    
      def register_app_and_modules do
        :application.load({:application, :myapp, [
          {:description, ~c"My sample application"},
          {:vsn, ~c"0.1.0"},
          {:modules, [Router]},
          {:registered, [Router]},
          {:applications, [:kernel, :stdlib]}
        ]})
      end
    
      def run_http_server do
        Supervisor.start_link([{Bandit, [plug: Router, port: 1234]}], strategy: :one_for_one)
      end
    
      def make_requests do
        :inets.start()
        :httpc.request("http://localhost:1234/route1")
        :httpc.request("http://localhost:1234/route2")
      end
    
      def check_what_was_collected do
        ErrorTracker.Error
        |> Repo.all()
        |> IO.inspect()
    
        ErrorTracker.Occurrence
        |> Repo.all()
        |> Enum.map(&Enum.take(&1.stacktrace.lines, 2))
        |> IO.inspect()
      end
    end
    
    defmodule Router do
      use Plug.Router
      use ErrorTracker.Integrations.Plug
    
      plug(:match)
      plug(:dispatch)
    
      get "/route1" do
        Repo.get!(Post, 1)
        send_resp(conn, 200, "Anything")
      end
    
      get "/route2" do
        Repo.get!(Post, 2)
        send_resp(conn, 200, "Anything")
      end
    end
    
    Main.migrate()
    Main.register_app_and_modules()
    Main.run_http_server()
    Main.make_requests()
    Main.check_what_was_collected() # <- demonstrates the issue
    
    Process.sleep(:infinity)
    ```
    
    </details>
    
    This closes #132
    odarriba authored Feb 28, 2025
    Configuration menu
    Copy the full SHA
    b563d7a View commit details
    Browse the repository at this point in the history

Commits on Mar 2, 2025

  1. Update issue templates

    crbelaus authored Mar 2, 2025
    Configuration menu
    Copy the full SHA
    1febe2d View commit details
    Browse the repository at this point in the history
  2. Update issue templates

    crbelaus authored Mar 2, 2025
    Configuration menu
    Copy the full SHA
    6316ad5 View commit details
    Browse the repository at this point in the history
  3. Update issue templates

    crbelaus authored Mar 2, 2025
    Configuration menu
    Copy the full SHA
    0849bd3 View commit details
    Browse the repository at this point in the history

Commits on Mar 3, 2025

  1. Mute error occurrences (#130)

    Errors can now be muted from the UI. This information is included in the
    new occurrence telemetry events, so integrations can choose to ignore
    muted errors and avoid sending notifications about them.
    crbelaus authored Mar 3, 2025
    Configuration menu
    Copy the full SHA
    5f5d814 View commit details
    Browse the repository at this point in the history

Commits on Mar 7, 2025

  1. Configuration menu
    Copy the full SHA
    c108b23 View commit details
    Browse the repository at this point in the history

Commits on Mar 27, 2025

  1. Detect changes to static asset files

    A common problem during development is that we make changes to the CSS
    or JS files and restart the dev server only to find that those changes
    haven't been picked up.
    
    This happens because we are reading those files during compilation but,
    after the layout is compiled, newer changes are not picked up.
    
    This commit fixes this by using the `@external_resource` attribute,
    which tells the Elixir compiler that the module depends on external
    files and must be recompiled when those change.
    
    This fixes our problem and ensures that our dev server always uses the
    updated assets when we make changes.
    crbelaus committed Mar 27, 2025
    Configuration menu
    Copy the full SHA
    4c9f309 View commit details
    Browse the repository at this point in the history

Commits on Mar 28, 2025

  1. Improve web dashboard navigation (#141)

    This commit contains three improvements to the web dashboard
    navigation:
    - Current filters are persisted when navigating between the error list
    and detail pages
    - In the error detail page there are new navigation links to the prev
    and next occurrence
    - Navigating back to the dashboard page now happens over the existing
    websocket connection instead of doing a full page reload
    crbelaus authored Mar 28, 2025
    Configuration menu
    Copy the full SHA
    e59a5ca View commit details
    Browse the repository at this point in the history
  2. Update ex_docs

    crbelaus committed Mar 28, 2025
    Configuration menu
    Copy the full SHA
    2addffc View commit details
    Browse the repository at this point in the history
  3. Release 0.6.0

    crbelaus committed Mar 28, 2025
    Configuration menu
    Copy the full SHA
    99c3fb2 View commit details
    Browse the repository at this point in the history
Loading