Files
bugsink/CHANGELOG.md
2025-07-17 14:41:27 +02:00

13 KiB

Changes

1.7.3 (17 July 2025)

Migration fix: delete TurningPoints w/ project=None (Fix #155)

1.7.2 (17 July 2025)

Various fixes:

  • Dark mode: use monokai style from pygments (Fix #152)
  • add vacuum_files command (Fix #129)
  • Artifact Bundle upload: clean up after extract (See #129)
  • Add API catch-all endpoint for logging (Fix #153)
  • File-upload: chunk-size of 2MiB (Fix #147)
  • Sourcemaps upload: max file size 2GiB (See #147)
  • Auto-clean binlogs on docker compose (sample) for mysql (See #149)
  • Remove platform 'choices' from Event.model (See 403e28adb4)
  • Better ALLOWED_HOSTS misconfig error-message (Fix #148)
  • As per the "little red box on" #120
  • Fix wasted space at certain width in stacktrace UI (See #120)
  • Fixed command's 'running in background' output (See 770ccb1622)
  • Project-edit: redirect to list on-save (See 2b46bfe9a1)
  • cleanup_eventstorage command: be more clear when no event_storage is actually configured (See b2769d7202)
  • Don't crash on illegal values for platform (See #143, #145)
  • Support 'crystal' platform (Fix #145)
  • Support 'powershell' platform (Fix #143)

1.7.1 (10 July 2025)

Fix: user-related forms broken by unclosed link

1.7.0 (9 July 2025)

Bugsink 1.7.0 introduces Dark Mode (See #40, #125)

Housekeeping

A number of options to clean up unwanted or unneeded data have been added:

  • Project Deletion (See #50, #137)
  • Issue Deletion (See #50)
  • Vacuum Tags command (See #135)
  • vacuum_eventless_issuetags command (see #134, #142)

How these commands/tools relate to each other and may be used is documented on the website

Various small fixes

  • Skip ALLOWED_HOSTS validation for /health/ endpoints (see #140)
  • get_system_warnings as a callable (see c2bc2e4174)
  • store_tags: support 'very many' (~500) tags (see d62e53fdf8)
  • Snappea: refuse to start in TASK_ALWAYS_EAGER mode (see aa255978b7)
  • Sentry-SDK requirement, unpin minor version (see a91fdcd656)

1.6.3 (27 June 2025)

  • fix make_consistent on mysql (Fix #132)
  • Tags in event_data can be lists; deal with that (Fix #130)

1.6.2 (19 June 2025)

  • Too many quotes in local-vars display (Fix #119)

1.6.1 (11 June 2025)

Remove hard-coded slack webhook_url from the "test this connector" loop.

1.6.0 (10 June 2025)

Slack Alerts

Bugsink 1.6.0 introduces Slack Alerts (through webhooks); see #3.

Backwards-incompatible changes

  • The default number of web processes (gunicorn server workers) in the dockerized setup is now equal to min(cpu_count, 4); (it used to be 10).

    set GUNICORN_CMD_ARGS="--workers=10" to restore the previous behavior or choose a custom number.

Various Features & Fixes

  • Display formatted log message when available (see #111)
  • Add 2 env variables to compose-sample.yaml (See #110)
  • Add delete functionality for users (See #108)
  • Multi-file sourcemaps (See #87)
  • Lookup by debug_id in dicts: use UUID (See #105)
  • Add robots.txt that disallows crawling
  • Add HEALTHCHECK command to Dockerfiles (See #98)
  • Fingerprint: convert to string before concatenating (See #102)
  • Add /health/ready endpoint (See #98)

1.5.4 (12 May 2025)

  • Add bugsink-util script to allow settings-independent commands to be run
  • UX of the stress_test command (param cleanup)
  • checks on settings.BASE_URL
  • Show all Request Headers in CSRF_DEBUG view (see #100)
  • Fix obj not found when visiting project as a non-member superuser

1.5.3 (7 May 2025)

  • Performance fixes of the issue-list when there are many (millions) of issues (rather than just events) in the database; see aad0f624f9 & 0dfd01db9b.

  • Fix: different_runtime_limit applying to the wrong DB alias, see 699f6e587d

  • CREATE_SUPERUSER shortcut: robust for ':' in password, see 9b0f0e04f4

1.5.2 (6 May 2025)

Various performance fixes when there are many (millions) of issues (rather than just events) in the database:

  • Add index for Grouping.grouping_key (and project), see 392f5a30be, 49e6700d4a
  • Digest: check Grouping.exists only once (save a query)
  • Remove open_issue_count from homepage; it's too expensive
  • Issue Paginator: don't attempt to count the Issues, see 3783661054
  • Stress test command: more fat-tailed randomness (d5a449020d)

Compatibility fix:

  • format_exception in capture_or_log_exception: python 3.9 compatible

1.5.1 (24 April 2025)

Various fixes and improvements:

  • 2 new tools to get a handle on performance of systems under load:

    • A [snappea-stats] subcommand to gain insight in
    • A page was added at http://YOURINSTALL/counts/ that shows, for each type of object, the number of objects in the DB. (superuser only)
  • Fix different_runtime_limit race conditions, see 53d4be8183

  • immediate_semaphore: implement alias "using", see 67f769d3e5

  • immediate atomic 'get-write-lock' performance logging: fix it, see f8db5edf82

  • Various improvements in the yellow warning bar for "backlogged snappea":

    • Better 'yellow bar' for snappea warnings (using Stat info)
    • Oldest task age warning: display as int
    • snappea task warning should itself never slow down the site (max runtime)
  • Add some examples to the "conf templates"

    • EVENT_STORAGES: add (commented-out) example configuration to conf_templates
    • Clarify options for EMAIL_BACKEND in the conf_templates
  • When is the email_system_warning shown? change & document

  • Snappea foreman: on catastrophic errors, wait for workers, see 9b6fbe523f

  • Explain tailwind usage during development & vendoring step, see 5c0e45a16d

  • Fix Header/Grouper for Log Messages using deprecated SDKs (See #85)

  • EMAIL_USE_TLS: false by default (as was documented). See 7c3c19b6c8

  • EMAIL_USE_SSL: not EMAIL_USE_TLS by default (avoids crashing on "both true" when only EMAIL_USE_TLS is explicitly configured

1.5.0 (14 April 2025)

Bugsink 1.5.0 introduces preliminary support for sourcemaps.

preliminary because only the following combination (all must apply) of features works:

  • Uploading "manually", using sentry-cli
  • sourcemaps & sources are related using debug-id, which must be injected by sentry-cli

Tested with the followin sentry-cli invocation:

uglifyjs captureException.js   -o captureException.min.js   --source-map url=captureException.min.js.map,includeSources
sentry-cli sourcemaps inject captureException.min.js captureException.min.js.map
SENTRY_AUTH_TOKEN=a sentry-cli --url https://YOURBUGSINK/ sourcemaps --org bugsinkhasnoorgs --project=ignoredalso upload .

Implemented with 3 endpoints Bugsink-side:

  • upload-chunks GET tells the CLI what our capabilities are
  • upload-chunks POST allows the CLI to upload the files (the CLI bundles everything first, and adds a manifest)
  • assemble-artifact: unpack that thing and put it in the right location.

This comment contains a longer overview of the current state

Further Features & Fixes

  • Add EMAIL_USE_SSL to settings/templates.

  • Print full stacktraces when not dogfooding (i.e. when sentry-sdk is not configured).

  • Various Dockerfile improvements (See #68 and the top of the Dockerfile for details)

  • Allow users to join their own team's projects Fix #56

  • Don't crash on non-str tag-values: Fixes #76

  • Add user.id, user.username, user.email and user.ip_address tags in deduce_tags allows for direct matching on one of those rather than just "whatever is avaialble" (which goes into the not further qualified user tag)

1.4.2 (1 April 2025)

  • deduce_allowed_hosts: allow for localhost, see #46
  • retention_max_event_count: in project settings form
  • issue.stored_event_count: fix (it was incorrectly calculated). Running the migrations will automatically fix the existing values too.
  • Fix user tag deduction (user tags were not correctly calculated from the event data)

1.4.1 (17 March 2025)

  • Bugfixes on the experimental postgres support, see #21, #61
  • sqlite: per-query timeout configurable
  • Make EMAIL_TIMEOUT configurable on Docker, fixes #60

1.4.0 (13 March 2025)

Bugsink 1.4.0 introduces tag-based search.

  • Support for searching both Issues and individual Events.
  • Search is built entirely on tags (both user-supplied and deduced from event properties).
  • Simple query language: key:value pairs for structured filtering.
  • Search is implemented directly in the database, ensuring a simple and efficient architecture.

Because tags take such a key role in the implementation of search, the introduction of search is coupled with per-issue tag overviews, see #36 & #12. i.e. per issue pages show a breakdown-by-tag; and a special page (showing up to 25 values) for tags is introduced.

NOTE: when upgrading to 1.4.0 tags for already-seen events are not automatically calculated (for large databases, this could make migrating very annoying). You can either wait a while (the tags for as of yet unseen events will be added) or run the init_tags command to determine the tags for the already-existing issues and events.

Further Features & Fixes

  • Postgres: experimental support: our testsuite now runs against postgres, and configuring the Docker image to run with a postgres backend is possible. No further testing has been done, but this at least makes such experiments possible. See #21

  • Createsuperuser pre-start: don't do that when any users exist in the DB (Fixes #54)

  • Show remaining (in db, AKA 'available') number of events in the issue-list (when some events have been evicted from the DB, the issue list shows the actually availale number of events in a smaller font next to the total seen number.

  • Details page: be robust for top-level message-as-string (Fixes #55)

  • Add 'level' to logentry event details

  • Issue.calculated_* fields: fix lengths (fixes an issue on MySQL)

1.3.0 (20 February 2025)

Introduce FileEventStorage

An (optional) way to store the event_data (full event as JSON) outside the DB. This is expected to be useful for larger setups, because it gives you:

  • A more portable database (e.g. backups); (depeding on event size the impact on your DB is ~50x.
  • Less worries about hitting "physical" limits (e.g. disk size, max file size) for your DB.

Presumably (more testing will happen going forwards) it will:

  • Speed up migrations (especially on sqlite, which does full table copies)

However: Ingestion speed does not seem to notacibly changed (either way) with this change.

Related utilities:

  • migrate_to_current_eventstorage command: a command to move data over.
  • cleanup_eventstorage command: a "vacuum" of sorts.

Further Features

  • Pagination on the Issues list
  • Event-detail UI for Logentries: show logentry.message and logentry.params
  • UI: thousand-separators for counts
  • Support for top-level message in events (See #43)
  • nuke_events command improvements: more consistent behavior, better confirmation.
  • make_consistent command improvements: more affected cases, run in transaction
  • migrate command: always shows timings
  • showstat command: digestion_speed
  • Send welcome email: as a command
  • Support for CORS

Fixes

  • transaction semaphore: ensure release for exceptions while entering the transaction

Cleanup / refactoring

  • Move MoreLoudlyFailingTransport out of the default 'eat_your_own_dogfood' conf
  • allow long-running queries on long-running commands (nuke_events, make_consistent)
  • DB indexes for the issue-lists (including filters)
  • Don't 'eat your own dogfood' (send errors to backend) while running tests
  • delete_with_limit was removed; this removes one tie-in to MySQL/Sqlite (See #21)
  • Print task's name in Snappea log when "Done"

1.2.0 (11 February 2025)

Features

  • Docker: The SQLite database now defaults to being stored in /data/, with a warning if the directory needs to be created.
  • Show 'event grouping', 'handled' and 'mechanism' in the event details
  • Ingestion performance fixes (most notable when >1M events are stored). See 615d2da4c8
  • UI performance fixes (most notable in the UI, when >1M events are stored). See 86e8c4318b

Bug Fixes

  • Transaction semaphore fixes prevent deadlocks
  • Various fields are cut off at max length to avoid (1406, "Data too long for column ...")` errors in MySQL.
  • Ensured digested_at time is set correctly.
  • Added indexes on fields used for ordering
  • UI: 'This might mean' refers to 'No open issues'; make this show in the interface

Cleanup / refactoring

  • Remove 2 fields that were "temporary [..] to get a sense of the shape of the data
  • Set up dependabot
  • Update dependencies (as per dependabot)
  • Datamodel: Event.grouping, which ensures every event has a consistent Grouping associated with it.
  • Move 'DESIGN*' docs out of repo
  • Mention Security Policiy in CONTRIBUTING.md
  • squashmigrations (faster startup for fresh installations)