All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
redis
image switched tobitnami/redis
as this allows use of aREDIS_PASSWORD
environment variable- A password has been added to redis. This previously allowed anybody to access the redis instance, and send commands which would prevent proper functionality.
SymCache
has been removed in favor of a local cache which exists inside eachcrashserver-worker
instance.
- Authorized users may now upload symbols via a web interface
- Change calling of
create_app()
with previously created app variable in main.py
- Migrations now include initial database create as a migration. (Date and time estimated based on first actual migration)
- Fixed crash-per-day graph possibly being themed incorrectly on first load.
- Crash detail modules list no longer blacked whited-out in dark-mode, and list is alphabetized.
- Account dropdown no longer whited-out in dark-mode.
- Storage module added to isolate the request to save a file from where the file is saved.
gosu
added to Dockerfiles to allow for setting mapped directory ownership, and specifying aPUID/PGID
for the container to run as. (Note: Docker--user
param is no longer used)- TZ environment variable added to configure how information is displayed. Required installing
tzdata
in docker - Flask-Babel for easy translation. All translatable strings surrounded with relevant
_()
andngettext()
functions. - Minidump files may now be uploaded with or without gzip.
- RQ Worker now started via
main-rq.py
. - RQ Worker jobs updated to use Storage module
- Moved commands which were apart of
crashserver
cli command, to be within theflask
command - Updated README.md to include a
Getting Started
section - Crash-per-day chart bars widened, and removed vertical lines
- Crash-per-day chart shows day of week name, instead of year
- Crash-per-day chart has day of week on new line
- Log output for each minidump upload only takes one line, instead of two.
- Reorganized javascript functions
- Remove
get_disk_space
andis_inside_docker
functions.
- Dark mode! Toggle icon seen at top right, or in drop-down on mobile
- Chart now shows 7 or 30 days depending on dropdown selection.
- Attachment content no longer included on every page by default. Content requested on view attempt via webapi endpoint.
- Attachments unable to be fetched present an error, instead of infinitely loading.
- Update Docker to use private env file added to .gitignore.
- Crash Report chart now shows the most recent 7-days instead of the first recorded 7 days.
- Graph on homepage which shows crashes for each day of the past week
- Added favicon for web browsers and apple icon shortcut
- Decoded minidumps for versioned symbols now show the symbol's related version number on the crash detail page
- Use S3 compatible storage for attachments
- Crash Detail prismjs attachment presentation is larger, and syntax is updated
- Switched init to use flask app factory design
- Added Flask-DebugToolbar for request debug information
- Allowed cli.py to be run from cli
- Added Flask-Migrate to easily upgrade database
- Add
upload_ip
column to minidump table
- Remove minidump upload limit
- Crash report page delete action, deletes correct minidump.
- Fix reading files with bad/invalid utf-8 characters.
charset-normalizer
: Switched to using BytesIO
- Fixed web minidump upload to work with zero attachments
- Fixed web crash list from showing all rows as "Processing"
- Fixed symbol lists not showing symbol count for all os's
- Fixed linux icon not showing in symbol list
- Add support for uploading attachments. Any additional files to minidump will be added as a row in the Attachments table, and stored to disk
- Crash detail page has tabs for stacktrace, and uploaded attachments
- "Crashed Thread" tag on crash detail page, marks the thread the actually crashed instead of the first thread
MinidumpTask
table removed, with relevant variables merged intoMinidump
table.
- Added
.docker
folder, which defines a docker based development environment. - Redis+RQ task queue to decode minidumps
- Added prism.js for code formatting (though feature is WIP)
- Updated Crash Report page to look cleaner and show dump metadata or decode progress.
- Updated Crash Report page to have a slim view for mobile pages.
- Huey as a task queue
- Fixed bug preventing from upload webpage from uploading minidumps
- Flush symbol after stored in database to get "symbol_location" from project
- Symbol "doesn't exist", and "already uploaded" log messages
- More log messages on minidump processing
/logs/app.log
for application logs
- Dockerfile to download essential library
libcurl3-gnutls
for stackwalker
- Module to get system specific information
- Switched from python logging module to loguru
- Allow for deep linking via
#
in url on the settings page - CLI commands for creating and deleting user accounts
- Notify user if there are no symbols uploaded when trying to upload a minidump
- gunicorn is run from a python application script instead of the command line
- gunicorn access logs are written to the /logs directory
- Disallow empty version argument when uploading symbol for versioned project
- Removed config for domain.
- Show API keys at settings page for each project.
- Allow password to be changed when form is posted
- Add more config information at settings page about tab
- Ensure all storage directories are created at program startup
- Upload page not allowing upload after a wrong file was previously uploaded
- View recently uploaded symbols at
/crash-reports
endpoint - View uploaded symbols by project at
/symbols
endpoint - Upload minidumps via publicly-accessible
/upload
webpage - Upload minidump via
/api/minidump/upload
endpoint, with minidump specific api-key- Minidump uploads are limited to 10 per hour, per remote ip-address
- Upload symbols via
/api/symbol/upload
endpoint, with symbol specific api-key - Login system (no registration) for admins to be able to
- Create projects
- View project data
- View system information
- Admin panel after login is mostly non-functioning, and is still a WIP at this release
- Asynchronously decode any uploaded minidump
- Only decode minidumps if symbol is available