All notable changes to this project will be documented in this file. This change log follows the conventions of keepachangelog.com.
- Adjust epoch list height. See #415
:ignored-events
in project configs now work. See #414. Thanks @lsenjov- The epoch list header now stays visible when scrolling. See #415
- Clicking an expander within an epoch no longer selects the epoch. See #418
- Subscriptions from re-frame.alpha are now listed correctly in the "subs" tab
- Pop-out window no longer crashes. See #410.
- Elements using the new stylesheet are properly themed again.
- Styles now work again when using the default & react-17 preloads.
- Moved some heavy spade classes to plain css. Rendering should be faster, especially in the subs tab. See #409.
- Editor now exports edn files, not txt.
- Fixed empty trace information when first opening the 10x panel after the first event was a dispatch-sync.
Requires re-frame 1.4.1 or higher. See #263.
- New setting: trace epochs always, never, or just when panel is open. See #264
- Fixed restoration of falsy local-store values. Now states like panel open/closed are persistent again.
- Removed unnecessary debug messages
- New preload namespace, compatible with React 18:
day8.re-frame-10x.preload.react-18
. See #367 - "Copy repl command" for subscriptions. This lets you reliably get a specific subscription value for a specific epoch. See #205
- Project-level configuration. See #202
- Upgrade re-frame to 1.3.0
- Upgrade reagent to 1.2.0
- Namespace aliasing can be toggled in the settings.
- Namespace aliasing is more performant, especially when turned off.
- Right-click popup menu "Copy Object" replaced with "Copy Subtree."
- Copies parent subtree of the clicked item.
- Right-click popup menu is positioned more accurately. See #348.
- Right-click popup menu now works in the popout window.
- Local-store serialization bug. See #392, #401.
- Pods render namespaced keywords with an alias if it is declared in the settings. See #393
- Added rewrite-clj 1.1.47 dependency
- All maps appear sorted. SORT option in pod headers now causes every level of the data to appear sorted. Before, only the pod's top-level map appeared sorted. See #393.
- Removed highlight.js dependency
- Upgrade clojure & clojurescript to 1.11
- Upgrade zprint to 1.2.7
- Upgrade malli to 0.11.0
- Options to dump data to the console & clipboard, as a raw or pretty string. See #178.
- Option to ignore keyboard input. See #386.
- Option to re-bind the open/close panel key. See #386.
- Disabled syntax highlighting in the event tab. This prevents a crash. See #376, #346.
- Open/close panel key now binds to
Ctrl-Shift-X
(from Ctrl-h
). See #386. - Selecting any epoch but the latest causes the selection to stay on it. See #190.
- Upgrade zprint to 1.2.5.
- Upgrade re-highlight to 2.0.2 merge PR #383
- Fix epochs history scroll behaviour by stop listening to componentDidUpdate
- Inline v-split. See #311.
- Remove unused Devtools config. See #319.
- Save
app-db-follows-events
setting to local storage. See #365.
- UI button to hide trace panel. See #238
- If the version of Highlight.js loaded on the page is incompatible with the re-highlight wrapper library that is used
by re-frame-10x, then instead of crashing we now display a message to the user that the source code cannot be displayed
and refer them to check the Highlight.js dependency.
- Save
App db follows events
setting to local storage. See #353.
- Upgrade re-highlight to 2.0.0.
Fixes build performance issues caused by previously loading all languages instead of just Clojure.
- Fix top most level expand arrow toggling in app-db tab.
- Upgrade devtools to version 1.0.6
- Fix path annotations menu positioning. See #348.
- Add option to open new inspectors by default. See #347 and #348.
- Fix path inspector
get-in
in lazy sequences. - Change expand app-db button tooltip. See #347.
- Prevent entering scroll mode when the middle click button is clicked to show app-db paths menu popup. See #348.
- Fix performance when viewing extremely large dbs by loading only first 100 items. See #347.
- Make popup standalone and not embedded in the app db. See #348.
- Add button to expand or collapse the entire app db. See #82.
- Change to open path on double click instead of single click. See #348.
- Add option to open path in new inspector after middle click. See #348.
- Add button to open parent path in current inspector. See #348.
- Add button to clear path. See #348.
- Add toggle for showing or hiding the event history. See #311.
- Upgrade devtools to version 1.0.5
- Fix path generation in nested objects. See #347.
- Fix path generation in sets. See #347.
- Fix erasure of path when the path or object is copied from the popup menu. See #347.
- Add option to enable and disable rendering of path generations. See #341.
- Add a doesn't contain filter in traces. See #124.
- Make trace panel filters act as ORs not AND. See #124.
- Filter ignored events in settings from traces in traces tab. See #175.
- Update devtools to version 1.0.4.
- Improve path generation performance. See #330.
- Add indexed path alongside devtools path in app db. See #331.
- Allow
copy object
on updated data. See #329. - Remove redundant indenting in maps. See #309.
- Add path annotation support to app-db panel inspectors.
Left click to set the inspector's path to the path of the clicked item.
Right click to get a context menu to copy path, copy object or copy REPL forms.
- Set devtools max-no-body-items pref to 10K.
- Use component name as operation name for tracing. See #322. Thanks to p-himik.
- Fix subs ID overflowing on subs tab.
- Fix overuse of
apply
fn in cljs-devtools wrapper
- Add leiningen alias for clj-kondo
- Add lein-count leiningen plugin
- Add lein-pprint leiningen plugin
- Upgrade shadow-cljs to 2.15.2
- Replace lein-ancient leiningen plugin with antq
- Upgrade ClojureScript to 1.10.879
- Fix linter errors and warnings
- Reduce subscription load in cljs-devtools component
- Fix performance regression in 1.1.* due to rebuilding cljs-devtools configuration on every render.
- Fix crash when
window.localStorage
is not available. See #308. Thanks to @shepheb.
- Upgrade inlined spade to git sha 93ef290
- Fix performance of auto-scrolling epoch navigation by using debounce.
- Fix settings being mangled by false
get
. refer-clojure :exclude
is :scream:. Fixes #307. - Fix incorrect key for
external-window?
setting
- Fix exception in traces panel when unchecking all category filters. Fixes #310.
- Fix exception in ctrl-h (toggle show 10x). Fixes #306.
- Guard against 'Index out of bounds' exception in timing panel
- Fix cljs-devtools expansion styles (e.g. app-db panel inspectors, epoch navigation)
- Fix use of :dispatch-later effect when opening/closing 10x window. See #306.
- Change cljs-devtools path expansion default to false
- Fix ordering of inspectors in app-db panel.
- Fix epoch navigation cljs-devtools styling for very large event vectors. See #303.
- Fix compiler warning.
- Add support for app-db paths reaching into lists. Fixes #169
- Change to a new Nord-based theme and new epoch navigation design that always displays a list of
epoch history.
- Change root container to use shadow-dom. Fixes long-standing issues with unsetting styles so that styling from the
host page (i.e. application) does not override 10x styling.
- Change styles to use spade
- Broke monolithic events and subs namespaces up into individual namespaces alongside the associated
panels/views.
- Fix unsafe assumption that reagent component-name is always a string. Fixes
#236.
- Remove
deps.cljs
dependency on react
and react-dom
as reagent
provides these dependencies transitively. Fixes issue reported
in #188.
- Migrate componentWillUpdate to getSnapshotBeforeUpdate. Fixes #274
This version has been upgraded to support the latest re-frame 1.1.x, reagent 1.0.x and React 17.
It does NOT support earlier versions, especially of reagent prior to 1.0.0 or React 16.
- Upgrade re-frame to 1.1.2
- Upgrade reagent to 1.0.0 (incl React 17.0.1)
- Upgrade garden to 1.3.10
- Quick fix for Issue #270 - Broken Code formatting in Events tab
- Upgrade re-frame-tracing to 0.5.6
- Upgrade binaryage/devtools to 1.0.2
- Upgrade ClojureScript to 1.10.773
- Upgrade shadow-cljs to 2.9.10
- Revert change from 0.6.1 to improve performance of switching tabs. This change
caused 100% CPU usuage on a single core when performing simple unrelated
interactions on a page, such as hovering over a button with hover styles.
For fast machines with many cores it was not recognisable but for slower
machines already under load it slows things down to a crawl.
- Fix width and overflow styles to enable scrolling large app-db horizontally.
Thanks to @marianafantini. See #259.
- Fix regressions caused during manual inlining of dependencies.
- Replace all icons with material design icons for a more consistent look and feel.
- Improve performance of switching tabs.
- Various minor styling bugs.
- Exception in todomvc example route.
- Replaced use of removed
reagent.interop
namespace macros with goog.object
equivalent. Might use binaryage/oops
in future but that will require dep inlining so this is OK for now as a quick fix for reagent 0.10.0. - Replaced use of
component/component-path
with component/component-name
. - Use
reagent.dom/render
instead of deprecated reagent.core/render
fn in example.
- Fix shadow-cljs compiler warning for react dependencies greater than 16.9.0.
See #256. Thanks to
@benalbrecht.
- Fix undeclared variable compiler warnings caused by manual dependency inlining in 0.5.0.
- Fix app-db diff regression introduced in 0.4.5.
- Fix styling override regressions introduced in 0.4.6.
- Fix squashed replay button icon
New versions of reagent and re-frame were inlined by hand due to
benedekfazekas/mranderson#44
or similar issue.
- Remove cljsjs/create-react-class dependency. Fixes #247
- Fix app-db v-scroll regression introduced in 0.4.5.
- Fix icon rendering differences between some browsers. Everything should now
be using inline SVGs instead of a mix of SVG data URLs and unicode characters.
Specifically results in a better experience with Edge (EdgeHTML, not Chromium
based) and Firefox.
- Enable programmatically opening or closing panel. See #210. Thanks to
@mainej.
- Upgrade zprint to 0.5.1 to fix "string/ends-with?" warning. See #253.
Thanks to @Quezion.
- Upgrade todomvc example shadow-cljs to 2.8.69.
- Upgrade todomvc example karma to 4.4.1.
- Upgrade todomvc example karma-junit-reporter to 2.0.1.
- Migrate to me.arrdem/lein-git-version.
- Migrate to continuous deployment for releases via GitHub Actions.
- Fix bug in todomvc example local storage load that prevented app startup completing successfully.
- Remove dependency on react-flip-move. This caused a conflict with an application level dependency and adds very little
value to 10x itself so was deemed unnecessary complexity. Potentially albeit unlikely breaking change if you depend
on react-flip-move in your application and do not have it already in your own project's dependencies. In that case
simple add
react-flip-move
as an npm dependency for shadow-cljs users, or the cljsjs/react-flip-move
package for
everyone else.
- Upgrade todomvc example shadow-cljs to 2.8.67
- Event/epoch history explorer. See #244.
Thanks to @uosl.
- Prevent nil component path from trace map. See #245.
Thanks to @dpsutton.
- Upgrade highlight.js to 9.15.10
- Fix
unmountComponentAtNode
exception when external window is open. #234
Possibly also reduces or fixes 'triangles frozen' problem. #209 - Fix scrolling content in trace and subs tabs. #246
- It is no longer possible to resize the 10x panel beyond 90% of the available
window width thereby avoiding a situation where it was impossible to resize
to a smaller width if dragged too far; i.e. the panel would get 'stuck'
covering all the window content.
- shadow-cljs compatibility
- Upgraded re-frame to 0.10.8
- Upgraded zprint to 0.4.16
- Upgraded ClojureScript to 1.10.520
- Upgraded Clojure to 1.10.1
- Upgraded reagent to 0.8.1
- Upgraded garden to 1.3.9
- Upgraded mranderson to 0.5.1
- Upgraded create-react-class to 15.6.3-1
- Upgraded react to 16.8.6
- Upgraded react-dom to 16.8.6
- Upgraded react-flip-move to 3.0.3
- Upgraded highlight.js to 9.15.8
- Support for React 15/Reagent 0.7.0 and below. The last version of re-frame-10x that supports these versions is 0.3.7. - #229
- Added an explicit dependency on create-react-class in preparation for it being removed as a dependency in the upcoming Reagent 0.9.0. #224
- Enabled subscription pinning and searching by default.
- There is now a sample project at examples/todomvc which you can use to develop against re-frame-10x, or use for comparison when setting up re-frame-10x on your own project.
- Use npm-style names for JS libs. This should improve compatibility with Shadow CLJS users, and people using ClojureScript's
:npm-deps
. @deraen - #201
- Make Ctrl-H show/hide shortcut work correctly when using different keyboard layouts. #231
- Upgraded to mranderson 0.5.0. This is an internal change and shouldn't be visible to end-users of 10x, but it's listed here in case you run into any trouble.
This is the last release of re-frame-10x to support from React 15/Reagent 0.6.0-0.7.0 and React 16/Reagent 0.8.0. The next release of re-frame-10x will only support React 16/Reagent 0.8.0 and up. See #229 for more context.
- Added support for searching and pining subscriptions. For now this is available behind the debug flag. @shen-tian - #217
- Added reader for UUID tagged literals in app-db paths, e.g.
#uuid 7ad6b5f5-e419-4681-a960-e7b35d3de0b1
- Show a useful error message if browsers block opening the external window. @kajism - #228
- Fix Firefox rendering issue. @solatis - #223
- Prevent warnings about using private vars by using var-quote.
- Hide the replay button when there is no event to replay.
- Bumped zprint version to 0.4.15. @jacekschae - #226
- Sort subscriptions alphabetically. @shen-tian - #217
Fixed broken merges in 0.3.4 and 0.3.5 when updating the bundled version of re-frame.
- Attempted to fix the namespaces when updating the bundled version of re-frame, but we didn't fix everything, so this release should not be used.
- Added mising
clojure.data
require. - Enable zooming in popout window
- Use KeyboardEvent.code instead of KeyboardEvent.key to toggle inspection window
- Set default number of retained epochs to 25 (was previously 5).
- Update bundled version of re-frame to 0.10.6
- The react-16 series of releases has been updated to internally use the newly released reagent 0.8.0. This shouldn't conflict with the version of reagent you are using, as long as it also depends on React 16.
- Code traces are now truncated after the first 50 results to avoid overwhelming the browser and the user. There are smarter strategies to handle this that will come in the future, but this at least avoids pathological performance issues with large loops.
- The event tab now correctly displays RegExp data in the data browser.
- Updated cljs-devtools to 0.9.10, which includes a fix to render ClojureScript 1.10's MapEntry's in a cleaner fashion. Note, if you are using cljs-devtools directly (and you should be!) you will need to update your own version to 0.9.10 or higher.
- Efficiently print results in the code browser, so you only have to pay for the cost of printing what is visible, not the entire data structure. This should result in a big performance boost on apps which have a lot of data in app-db.
- Replay button. This lets you replay a previously run event, with the same app-db context that it had when it ran. See the docs on the HotPlay Workflow for ways you can use this button.
- A new REPL button on each traced code form copies a function to your clipboard to access the traced value. You can paste it into your REPL to operate on that value with the full power of the ClojureScript programming language. This is a similar idea to the scope-capture library.
- Popout windows now preserve their previous dimensions and screen position (note that Chrome won't let us reposition windows across displays).
- Code tracing has added indentation, so you can visualise the call stack of a function and more easily understand how the calls in your traced function flow.
- Hovering over a code trace shows a preview of the value so you can easily scan it.
- Double clicking on the code section toggles show the full captured function, or just 10 lines.
- Improved the vertical space and visual design of the 'pods' in the subs and app-db panels.
- Removed the play/paused distinction. It was confusing for people and unclear what its purpose was. re-frame-10x will navigate to the most recent event that arrives if you were looking at a previous event.
- Popout windows are now titled "re-frame-10x | <parent window title>"
- Added syntax highlighting for more elements in the Event code blocks
- New visual style for app-db and subs panels
- Set default behaviour on first launch to show the re-frame-10x panel instead of keeping it hidden. This will help people better debug their setup when they are configuring re-frame-10x.
- Bug where under certain rare circumstances relating to the structure of your app-db, the Event panel could throw an error when transitioning from one epoch to another.
- Refer to the correct Closure define to enable tracing #170.
- Add missing requires in parts panel #164
- re-frame-trace has been renamed to re-frame-10x! To upgrade you need to do two things:
- Update your dependency from
day8.re-frame/trace "0.1.21
to day8.re-frame/re-frame-10x "0.2.0
- Update your preload from
day8.re-frame.trace.preload
to day8.re-frame-10x.preload
. If you don't update the preload you will get a deprecation warning, reminding you to update it.
- This is the final release of this project under the
day8.re-frame/trace
artifact ID. The only change from 0.1.21 is that this version will print a warning to the console every time you load it, reminding you to update to day8.re-frame/re-frame-10x
.
- Avoid throwing an error
No item 0 in vector of length 0
under certain circumstances.
To take advantage of the more granular timing info in this version, you will need to upgrade to re-frame 0.10.5.
- A time-travelling debugger. Navigating forwards and backwards through the event history updates app-db to match. Be careful when using this with a stateful backend; as in the movies if you change too much or go too far back, the future can become unpredictable.
- Improve Timing panel to show more granular timing info.
- Settings panel has a scroll bar if your screen height is too small.
- Massive overhaul to how subscriptions are processed.
- Subscriptions that exist but weren't run, now show up in the subscription panel.
- Subscription creations and disposals that happen during figwheel reloads or otherwise outside of the re-frame event domino cycle are now correctly handled. If any of these happen, they show up in the new section Intra-Epoch Subscriptions.
- All of the actions that happen to a subscription within an epoch are now shown. This lets you spot unusual behaviour like a subscription being created but not-run, or a subscription running multiple times.
- Present better explanation messages when viewing the diff section for a sub where the value is unchanged, not run yet, or only run once.
- Garden source dependencies are now working if you don't have your own dependency on Garden.
- New app-db path inspectors default to
"""
instead of "[]"
so you can see the help text.
- Garden source dependencies now work if you don't have your own dependency on Garden.
This version requires re-frame 0.10.4 to make use of the newly added Event panel.
- New event panel. This panel shows the coeffects given to your event handler, the effects your event handler produced, and all of the interceptors in the chain.
- Debugging instructions if re-frame-trace fails to start.
- Setting to drop low level traces. This reduces the memory overhead of re-frame-trace as we can drop more traces that you are unlikely to want most of the time.
- Diff the previous value of a subscription with its current value.
- In the subs panel "Ignore n layer 2 subs" is now "Ignore n unchanged layer 2 subs". This is a more useful filter, as you can filter out noisy layer 2 subscriptions, while still seeing the changes that do happen to layer 2 subs.
- The version of Garden that re-frame-trace uses is now bundled as a source dependency so you should no longer get conflicts if you use Garden 2.
- Refactored re-frame-trace trace parsing internals to incrementally parse new traces.
- Clicking on a trace's expanded information now prints the entire trace to the console instead of just the tags.
- Improved efficency of rendering views that do not need to filter out view namespaces.
- app-db and subs panel now have a slightly more responsive design.
- External windows not loading
- All app-db and subscription path expansions are now independent of each other #134.
- Layer 2/3 calculations are more accurate now. We now use the last seen layer level when a subscription runs, to inform it's layer level if it was created or destroyed.
- View namespaces that are ignored are no longer shown when showing traces for all epochs.
- Distinguish between subscriptions that return
nil
values and those that haven't run yet. - Timing panel not showing elapsed event processing time.
There is now a React 16 variant of re-frame-trace available under the version 0.1.16-react16
. If your application uses React 16 and Reagent 0.8.0-alpha2 or higher, this is the version that you will need to use.
- Setting to control how many epochs are retained
- Setting to reset all epochs
- Setting to ignore epochs
- Setting to filter out trace for views from uninteresting namespaces
- Updated bundled re-frame version to 0.10.3, and bundled reagent version to 0.7.0. This shouldn't impact your project's dependencies as they are source bundled via mranderson.
- Add hyperlinks to docs
- Set a print limit of 400 characters in the event header, to prevent very large events from DOSing the host application.
- XML encode # character in SVGs, fixing #130.
- Fix the reset tracing button in the traces panel.
- Fix a bug when there is only one traced event, re-frame-trace would allow you to go back an epoch, throwing an exception.
- The app-db panel now has buttons to reset app-db to the state at the beginning or end of any epoch.
- The subscription panel shows subscriptions that were created and destroyed.
- The trace panel automatically filters traces to just the current epoch
- A new timing panel shows basic timing statistics around event processing and rendering. More to come here.
- re-frame-trace is now organised around epochs. An epoch includes an event being processed, subscriptions running in response, and the view re-rendering.
- A new visual design language.
Lots of quality of life fixes:
- Lower count of items in sequence before expanding icon shows #126
- Only allow one time based filter at a time #125
- Persist trace expansions when changing tab #105
- Hide :sub/create traces for cached subscriptions #93
- Persist filter category settings to localstorage #121
- Highlight events in trace window #106
- New state snapshotting feature: Click the camera to snapshot app-db, and click the load button to restore to your snapshot. Snapshots only persist for the browser session, they aren't available after reloading the browser.
- X button to remove app-db paths
- Switched from LESS to Garden styles. Now interactive development and debugging of re-frame-trace is even faster.
- Reopen/reattach external popup windows when reloading host application
- Reorganise namespace layout and remove (hidden) subviz panel and D3 dependency. This may return in the future though.
- Only sort subscriptions by the subscription key, not the whole vector
- Visual tweaks
- Set panel width correctly so you can see the whole panel at all times. Previously the right edge was just off screen.
N.B. To make the best use of the new subscriptions panel, you also need to update to re-frame v0.10.3-alpha1.
- Bright yellow text when re-frame trace is preloaded, but tracing is not enabled.
- Add preliminary subscriptions panel. Still a bit buggy and not very pretty, but it should be useful even in this state.
- Preliminary support for React 16 component paths. #89
- External popout window. #92
- Namespace aware truncation in the traces panel. #100
- App DB expansions and contractions now persist across reloads. Note the limitations with this feature.
- Hide index spans (the blocks next to each element counting the number of elements in a collection)
- Rename app-state panel to app-db
- Visual improvements to data viewer
- Subvis panel has been commented out while it is in a broken state.
- Limit captured traces to a maximum of 4,000 to prevent performance slowdowns.
- Speed up animations for autoscrolling to bottom of list
- Print full keyword for operation name
- Bad merge for handling window width changing.
- Add a new App State panel. This lets you visualise your application state and inspect it. You can add multiple selections to view a subset of your application state.
- Handle window viewport size changing and other dragging bugs. This should be the last of them, but open an issue if you still find glitches when resizing.
- Improve style resetting
- Visual improvements
- Fix panel resizing behaviour under edge cases
- Log trace data to the console when clicking on it.
- Put CSS in resources directory
- Save settings to localstorage to persist across reloads
- Autoscroll to the bottom of the traces panel when at the bottom
- Use LESS for CSS
- Move styles and components to trace folder
- Add event filtering
- Pin the filter input to the top of the panel
- Improve installation instructions
- Artifact coordinates changed from
day8.re-frame/abra
to day8.re-frame/trace
.
- The preloads namespace now adds the tracing panel to the DOM automatically, so you don't need to change any of your app code to bring it in. #14 via Dexter Gramfors.
Migration steps: Remove any explicit rendering instructions for
day8.re-frame.trace/devtools
in your app, as this is automatically added now.
- There is now a preload namespace you can use to configure re-frame-trace. Install details are in the README.md. #13 via Dexter Gramfors.
This was a botched deploy. See 0.0.8.
- Added getting started instructions to README.
Can you improve this documentation? These fine people already did:
Daniel Compton, Isaac Johnston, Kimo Knowles, Ike Mawira, Gregg8, danielcompton, Dieter Komendera, Dexter Gramfors, Tom Parker-Shemilt & hipitihopEdit on GitHub