clockwork
clockwork copied to clipboard
Fall release 🍂 (Clockwork 6.0)
This issue tracks the progress on the next major release (Clockwork 6.0), scheduled for Fall 2021.
Clockwork 6.0 will be the next major release introducing new features, improvements and focusing on polishing the overall user experience.
Must have
The most important changes most likely to make it into the release.
- [ ] explore an event-based metadata format
- currently we use a json-based metadata format where each request is represented by a single object with pre-defined schema
- pros: very simple and straight-forward implementation, plain-text readable
- cons: requires the whole object to be loaded in memory before writing out the json (very memory intensive), updating partial metadata would require re-parsing the whole json
- a different idea would be to have an array of events like "database-query" or "log-message" with respective payloads
- pros: events can be written as they are processed (probably in batches, very low memory usage), updating partial metadata is free
- cons: more complex implementation when both writing and parsing, less plain-text readable
- Clockwork App would stay compatible with the old format forever
- currently we use a json-based metadata format where each request is represented by a single object with pre-defined schema
- [ ] user-interface polish / improvements
- improved UI for each specific platform
- [ ] toolbar improvements
- dark mode
- ajax requests support
- [ ] explore optional alternative ways to use Clockwork
- adding an errors/warnings count to the browser toolbar would provide immediate feedback about performance issues in the current request
- this would be part of the browser extensions
- adding an errors/warnings count to the browser toolbar would provide immediate feedback about performance issues in the current request
- [ ] add tagging and starring requests
- requests can be tagged both server-side and client-side additionally
- requests should be searchable by tag
- [ ] add ability to (temporarily) disable Clockwork on runtime
- [ ] add ability to show only "my requests" in Clockwork App
- this is implicit in the extension, but the web-app version shows all requests
- implementation would most likely be based on client ip
- [ ] upgrade Clockwork app to Vue 3.0
- [ ] new open-source the website
- [ ] consider requiring PHP 7.x
- currently we still support PHP 5.5 as our lowest PHP version
- previously we updated PHP requirements only when we actually needed some features from the newer version
- [ ] password removal improvements
Nice to have
The less important changes and changes unlikely to make it due to time constraints or implementation concerns.
- [ ] desktop app (beta)
- [ ] Python/Django and Ruby/Rails integrations (alpha)
- [ ] profiling levels with per-request selection
- [ ] improve handling of large metadata
- we should in general avoid running out of memory at all costs and prefer collecting partial or no data
- [ ] improve assets handling
- add ability to publish web UI assets as an alternative to serve them through php
- feature request https://github.com/itsgoingd/clockwork/issues/340
- [ ] add api docs - feat
- [ ] add ability to reorder tabs
- first available tab in order would be the default tab
- lots of annoying UI code to write (animations, touch support)
- [ ] show duplicate queries in the performance tab - feat
- [ ] add Laravel authentication support
- [ ] don't instantiate storage when Clockwork is disabled
- [ ] collect applied scopes for eloquent database queries
- [ ] logging binary data - feat
- if we find a way to detect binary data without a large performance impact
- [ ] request replay
- this is very tricky to implement for non-GET requests in cross-platform way
- [ ] collect (simple) responses - feat
- main concern here is the response size
- [ ] unload old requests
- [ ] better symfony support
- [ ] monolog 2 support
- [ ] Redis storage implementation
- [ ] xhprof support
- possibly by converting the xhprof profiles to the xdebug format server-side (https://github.com/tideways/php-xhprof-extension/pull/92)
- [ ] revisit tab badges for like fourth time
- [ ] ugly scrollbars on light OS theme w/ dark Clockwork theme make me sad
- [ ] log messages limit? - feat
- [ ] health check command
- [ ] add support for compressed Xdebug output
- [ ] show multiple requests in a single timeline
- the goal is to make the execution order more obvious - feat
Release schedule
Clockwork follows a loose yearly release schedule with one major release in late summer / fall and multiple minor releases in-between.
- Clockwork 5.0 - November 2020 - previous release
- Clockwork 5.1 - May/June 2021
- Clockwork 6.0 - Summer/Fall 2021
One very useful feature for big data would be to be able to select which log messages to filter (error, info, debug individually), just like PHP debugbar does with its tags. It shows all the used log levels as "tags", which you can click on to enable or disable them.
This could be even implemented instead of profiling levels, giving more freedom to what will be logged. As in large applications, it is pretty useful to have more levels than just the log ones. I generally use dot-separated levels, such as debug.login.
Another feature I would add to the list with PHP 7.x support is to have proper docblocks and phpstan tests.
Well, we already can filter by log level via the search input, eg. level:error. This has been supported for a long time, but still needs to be documented. Or made more obvious in general, maybe even by adding additional buttons for the log level as you suggest.
The idea behind profiling levels is to avoid collecting unnecessary data, lessening the performance impact and disk usage. Eg. the routes list is something I would typically leave disabled as I don't really need it day-to-day. But it might prove useful like once a month when I'm debugging some routing issue.
It would be cool to be able to tell Clockwork "for my next few requests also collect routes" from the Clockwork app itself. Or collect cache query values only for particular requests. Or collect a more detailed profile for one in 100 requests. Etc.
@itsgoingd Any progress on this one?
@mahagr Hey, thanks for the interest!
Unfortunately I don't have any good news to share. I barely started working on this. So no new release this year. :(
Figured out I should post some update, since Summer/Fall 2021 is already long in the past and Clockwork 6 clearly was not released.
Unfortunately I was lacking time and motivation to work on the new release last year and couldn't meet my self-imposed yearly release schedule. Instead of rushing things or delaying the release, I've decided to completely skip on the 2021 major release.. what could be a good thing after all! As this gives me way more time, a full year (well, like 8 months at this point), to work on a more ambitious and bigger release.
This year I've not been much more successful so far. I've been experimenting with some new UI ideas (planning on a bigger UX revamp), but haven't done much else. But I feel more productive days coming.
I just wanted to make sure nobody thinks this project is dead or anything, I'm fully committed to delivering a new Clockwork release. At some point.
I might start posting some updates when things start moving on my blog or twitter, so feel free to follow me at @itsgoingd if you care.
+1 for Ajax request support. It is quite annoying when using it together with livewire. Maybe (!) I have the time to provide some fix specifically for Laravel Livewire requests.
Has this project become forgotten? I see recent updates to the master branch but no releases since exactly 2 years ago?
Hey, new releases are coming this year. Btw. the last release still works completely fine, even with the latest Laravel release, I use it daily myself. :)
@itsgoingd Awesome, yeah no issues right now using the current release but there's some new features listed that would be really nice to have. 😄 ie. Livewire/ajax request support, improved Symfony support, request replay, Laravel Auth support, etc.
Just wanted to 👍 for show duplicate queries in the performance tab when not using eloquent relationships. Would be really nice to be able to neatly spot mysql raw queries too
@itsgoingd any chance you could tag the current master as its been nearly 2 years.