Version 1.3.1 (June 10th, 2020)
- Fixed a bug where if you were port forwarding the SplunkWeb port, you would get CSRF validation failures when submitting certain kinds of forms, notably any change or new view submitted in the Sideview Editor.
- Added some simple support for “*_grp” suffixed layoutPanels, which was a feature of the Advanced XML and thus of Sideview XML. These represented a strange part of the old Advanced XML and that I had hoped to do without in the new world. However on further review this was pretty commonly used and the “workaround” of recreating this kind of custom layout with custom CSS is quite tedious.
- Fixed a bug in the Redirector module where the “mergeDrilldownKeys” param was always being treated as True. This had some confusing effects for instance in a Table drilldown config, where a form element on the target view happened to have the same name as a field value in the row being clicked on – the drilldown would mysteriously pass on the value of the field value, rather than the value of any upstream selection.
- Fixed a bug where any view that dispatched no searches at all would suffer a strange effect where the user could change the selections of your form element modules, but their changes would be ignored.
- A minor change to pull the app version dynamically for the HTML on the homepage, so we don’t have to manually update it any more.
- Improved migration cases around usage of Splunk’s old HiddenSavedSearch module, migrating this to the new SavedSearch module. Also some other migration improvements to a few other module params and values
- logging improvements to canary.log, to log more details and to do it more consistently.
Version 1.3 (May 6th, 2020)
- SearchControls module – Fixed a bug where CSV export was limited to 100 rows
- Topnav module – Fixed a regression where if a user had not entered their full name in their account page in Splunk, the TopNav wouldn’t display anything at all. Fixed so in such a case it displays their username again
- Report module – added a strange but useful feature so that if any custom report builder is using this module to put together the final stats/chart/timechart determination, and the primary ‘group by’ field is date_wday or day_of_week, it actually sorts them into the right order. Similarly if the split-by field is either of those it orders the columns into the right order.
- TextField module now has a “clear” param, like the other form-element modules
- TextField module now has a “type” param that you can set to “password”. Although this is an unusual case, sometimes the module is used in admin/setup pages and the user might be entering a credential for their app’s custom data input.
- Button module now accepts a “float” param and a “clear” param, much like other form-element modules.
- views can now pass a querystring argument named “sideview.message.info”, (or ending in .error, .warn) and the message will be displayed at the top of the page.
- ValueSetter module improvement – if you are setting multiple conditional rules you no longer need to specify explicit priority flags on them, and instead they will just get run in document order.
- Search module now has a param ‘clearPostProcess’ that defaults to “True”. This is technically a change to behavior, but it will only affect some strange configurations that we dont’ seem to have ever had arise in our apps. It also has the great benefit of eliminating the need for ‘null postprocess’ modules that are just there to clear away some upstream postprocess value. If anyone ever wants to turn this behavior back to the unsafe way, they can set this new param to “False”.
- Chart module – fixed a bug where if you were suppressed the display of X-axis labels by setting the key charting.axisLabelsX.axisVisibility to “hide”, it would also make the tooltips show epochtime integers instead of string-formatted times.
- Chart module now has an optional “width” param that defaults to “100%”, as well as “float” and “clear” params
- Table module – now has an optional prototype param called”drilldown” that can be set to “cell” (the default is “row” and represents the to-date largely automatic row-drilldown functionality). This “cell” value is prototype functionality at the moment and behavior may well be subject to change in the near future. The goal is to enable a much broader range of custom drilldowns including custom menus and custom redirect options (with the Layer module) without the need for custom JS.
Version 1.2.6 (April 10th, 2020)
- Chart module now supports the old Splunk charting keys “charting.axisY.minimumNumber” and “charting.axisY.minimumNumber”. When set, the given value will be used as a minimum or maximum value of the y-axis range. Notably though if the actual data being charted exceeds the maximum or is less than the minimum, then as implemented here the setting is ignored.
- Chart module now supports the old Splunk charting key of “charting.axisLabelsX.axisVisibility”, which can be set to “hide” to hide the x-axis labels and tick marks entirely.
Version 1.2.5 (April 3rd, 2020)
- Fixed a bug where if your custom app didn’t have an application.js file in appserver/static, that Canary views in the app would not load
- Improvements to make various arrow icons consistent across navigation menus and form element controls.
- Improvement to the Chart module – When you mouse over items on the legend, for line charts and area charts the little point markers animate up in size to make it clear which series you’ve moused over. Mousing away from them they animate back to their default size.
- Improvement to the Chart module – the ‘breathing room’ fix made to the logarithmic y-axis in 1.2.3, now uses 3x instead of 2x.
- Added some logging so that if you hit a certain kind of fatal mako error in a custom mako template, it logs out the error and stack trace to canary.log (Side Note: Canary ships its own copy of mako, so this is not using the Splunk one in any way).
- Fixed a bug that has been here quite a long time, where clicking the “manage apps” link in the TopNav module’s App menu (generally in the top left of pages), would take you to the landing page of the last app in the menu, instead of to the manage apps page.
- Improvement to the Chart module – the ‘breathing room’ fix made to the logarithmic y-axis in 1.2.3, now uses 3x instead of 2x.
- Fixed a bug where if you were building Canary views in an app that didn’t have the “version” key in the [launcher] stanza, or the “build” key in the [install] stanza, that the views would just render a somewhat indecipherable python stack trace for the KeyError
Version 1.2.4 (April 1st, 2020)
- Fixed a bug in the URLLoader, where saved searches and reports that had been saved in canary views, would fail to load properly when selected from the Reports menu, if they had spaces or non-alphanumeric characters in their names.
- Fixed a bug that would happen when the user tried to load saved searches and saved reports that were saved from the generic Splunk search pages, but within canary apps. Formerly the user would end up on the generic “search” or “report” view in the Splunk UI, but with a ?search.name=foo querystring argument that was ignored by that page.
- saved searches saved with no ‘displayview’ property set at all are now loaded in the ‘report’ view. This is a change from previous Canary and Sideview Utils conventions where such savedsearch links would take the user to the “search” view.
- Fixed a bug in the TextField module, where in certain view configurations it might fail to pass on its value to $foo$ tokens downstream. This defect was always there, however the effects were mostly or entirely masked and mitigated by the erroneous page-loading behavior that was fixed in 1.2 last week (see below).
- Added a feature to the Pulldown module whereby it can receive directive keys from upstream that tell it to disable/enable particular options, or to show/hide itself entirely.
- improvements to the Chart module, to make it render smaller Legend items when ther are more than 50, and to make it hide the legend entirely if ever there are more than 100
Version 1.2.3 (March 29th, 2020)
- Improved the behavior of the logarithmic axis, to automatically give some breathing room, by specifying a max y-axis value that is twice as high as the highest point (remember – logarithmic scale, so 2x is only “a bit more”).
- Fixed a bug in the CheckboxPulldown, Checkboxes and Radio modules where if only the postprocess search from upstream changed, these modules would not realize that they needed to reload their options.
Version 1.2.2 (March 24th 2020)
- Updated the version of the multiselect library used under the hood for the CheckboxPulldown module. The specific bug this resolved was that the module could not support values that contain double-quote characters.
- The Chart module now supports a “charting.seriesColors” key that can be passed to it, that is a comma-separated list of hexcolors. It will use the given colors to denote the colors of the various series being charted.
- Some defaults changed in the Chart module for when only 2, 3, 4 or 5 series values are present. Previously the module had a tendency to put yellows and oranges next to eachother.
Version 1.2.1 (March 22nd 2020)
- Fixed a bug in the Chart module where if you changed the chart type and then moused over elements in the new chart in the right way, you could get the old chart to reappear, and the two charts to even flicker back and forth.
- on receiving a 401 response from Splunk, Canary views now redirect to the Splunk login page.
- Turning the Chart modules bezier curve feature way down so the lines are almost straight by default. Although the default beziers are pretty they can mislead/confuse users in some charts where the curvature displayed was then impossible in the real data.
Version 1.2 (March 21st 2020)
- Cleanup of some significant inefficiencies in how modules were initialized on the page. Pages will load significantly faster now, even though they were already loading significantly faster than Splunk views.
- Turning the Chart modules bezier curve feature way down so the lines are almost straight.
Version 1.1.4 (March 19th 2020)
- CheckboxPulldown and Checkboxes modules now have a selectedCount $foo$ token that they output that represents the number of items currently selected. This is useful for contextual messages downstream.
- Chart module now supports the “legend.position” charting key. Values can be left, right, top,bottom. The default is “right”.
- Fix for a regression in the Table module from a bugfix in 1.1.2 – that fix did indeed keep the “time” field from vanishing in some cases, but at the price of moving it’s order in the columns to the end in some other cases. Fixed and these cases are now covered by additional unit testing.
Version 1.1.3 (March 17th 2020)
- Chart module now supports nullValueMode set to “connect”.
- Chart module now wont draw the second level of time axis labels diagonally. This means multiple charts presented on the same page will have consistent height and more consistent legend layouts.
- Fixed some longstanding peculiarities in page layout when Chart modules are Multiplex’ed.
Version 1.1.2 (March 16th, 2020)
- Added support for a logarithmic y-axis to the Chart module.
- Added a feature to the Chart module where if it sees the “sideview.xField” and “sideview.yField” keys coming down from upstream, it will use those strings as axis labels on the rendered chart. Note this is splunk’s “x” and “y” convention and that in bar charts specifically, it’s opposite of what you might expect.
- Changed the line chart type in the Chart module to ignore “stackMode” so it can never be stacked even by accident
- Shrank the default marker size on the line charts in the Chart module
- Fixed a problem where if there was an syntax error or a search execution error that the parser could not see during the dispatch, the framework code was not taking appropriate responsibility to fish those errors out of getResults responses and broadcast the error message to the page
- Fixed a problem in the Table module where sometimes it would fail to output the “time” field.
- Increased the default height of the CheckboxPulldown module’s layer
Version 1.1.1 (February 28th, 2020)
- Licensing change – Canary is now distributed under the Sideview Free Internal Use License. Therefore 90 day trial license strings, and license strings of any kind no longer have to be entered anywhere before you can use the app.
- Added links in the topnav to the Job manager and to the Alerts page
- Fixed a bug where dispatching a new search at a given point in a given view, would not automatically cancel the previous ad-hoc job dispatched at that point.
- Fixed a bug where pages with very wide modules – eg tables with lots of columns, could force the content partly offscreen right with a scrollbar, and unfortunately also partly offscreen left where it could never be seen.
- A small improvement eliminating the “services” segment from the top level canary page URL’s visible in the user’s browser.
- A change to actually force Canary’s restmap.conf endpoints to run in python3
- A fix to make Canary more forgiving if older customBehavior code is used, that uses older conventions around the onContextChange method. Now it will nag in the console, but provide the old behavior so there’s no exception thrown.
- Corrected some confusion in the warnings when we automigrate the legacy FieldPicker module to the new Fields module.
- Fixed a bug that disrupted modules downstream from Switcher modules from rendering results if the Switcher was using a job token as its selectedGroup property.
- If the current user’s full name is not set, the top nav now displays their userid instead of nothing.
- Fixed a bug whereby if you went to the URI for an app that wasn’t even installed, it would give you a misleading 404 error about the view, instead of saying the whole app itself didn’t seem to be installed.
- Fixed a one line mistake in the Editor’s POST logic if we were running in Python3.
Version 1.1 (February 13th, 2020)
- There is now a full featured authoring interface where users and administrators can edit and create new Canary views without reading or writing the XML or yaml of the raw file format.
- SavedSearch module now fully implemented and usable. has a ‘useHistory’ param that can be set to Auto, True or False (Auto being the default). Auto/True will load jobs created by the scheduler if any exist. It broadcasts errors as appropriate to these cases and will also return any context keys saved into the savedsearch entity’s custom request.ui_context property.
- Fixed a bug where choices and selections that had become invalid would get passed downstream. This was easiest to notice in views that had two or more Pulldowns chained together.
- Fixed a rare bug in the AppNav module – if a custom app included an anchor elements in its default.xml navigation file, where the href began with “../../manager/” – this uri would lead to a 404. Now it works as it did in the old Splunk UI and takes the user to the given manager page when clicked.
- Fixed a bug in the AppNav module where if an app included
and nodes inside its default.xml file, the rendered order of all the links wouldn’t necessarily match the expected order from default.xml.
- Canary now has a slightly different implementation of the FreshMaker UI relative to the Sideview Utils app, although for now it still relies on the old web.conf controller over in Sideview Utils.
- Fixed a hard-to-hit bug in the Redirector module that would only apply if you had some args in the URL and also other dynamic args specified in arg.* params.
- the SearchControls module’s ‘cancel’ button will no longer allow the user to cancel jobs that were created by the Splunk scheduler. Instead a message is displayed directing them to Activity-Jobs.
Version 1.0.7 (January 16th, 2020)
- Fixed a problem where clicks to Simple XML dashboards, or HTML dashboards like the “search” view wouldn’t redirect properly and the user would end up on the wrong URL with a confusing “response has no payload” error.
- Improvement in error handling to propagate the actual error string out to the user
- Fixed a bug that only seems to occur on Chrome whereby clicks on the “export” icon would
fail and land you on a page saying “Unknown sid”.
Version 1.0.6 (January 10th, 2020)
- Fixed a regression in TimePicker introduced only in 1.0.5 (released yesterday), where
pages would hang if a TimePicker received a push from upstream modules while it was still
waiting for the global page preferences to load.
Version 1.0.5 (January 9th, 2020)
- Fixed a bug in the TimePicker where when the page loaded the first search dispatched would in some specific scenarios ignore the TimePicker’s selection entirely and run an all time search instead
- Fixed a bug in the TimePicker where the absolute time picker aka the “custom time” mode’s little calendar widgets wasn’t working properly
- Improvement to the TimePicker so that when you are in “custom time” and you have a calendar widget open, the widget no longer obscures the layers overall ‘apply’ and ‘cancel’ buttons.
- Fixed bugs where the cancel button and some other buttons in the SearchControl modules did not work properly, and where HTML and ProgressIndicator modules would not reset when their jobs were cancelled.
- the Apps menu in the TopNav module now has a “Manage Apps” link.
- Fixed a bug in the Table module where if you sorted by a particular column and then went to a different page it would lose the sort order.
Version 1.0.4 (December 11th, 2019)
- Error messages such as SPL parse failures are now propagated back to the end user properly. Formerly it would display an error saying “received 200 on a dispatch POST but no sid”.
- Fixed a bug in the Fields module where if you made some changes and then didn’t commit them, the uncommitted list of selected fields would still be there if you closed and reopened the layer.
- Fixed the ‘inspect job’ link in the SearchControls module in 8.0 (the URL to the Job Inspector actually changes in 8.0)
- Improved the Table module to have an optional ‘hiddenFields’ param. If set, the given fields will always be prepended to the user’s selected field list. Also when the legacy FieldPicker module is migrated to the Fields module it inserts a “_time” field using this param, as that makes the Fields module match the old FieldPicker’s default behavior.
- Change to the Table module to trim off “.000” from the end of displayed timestamps wherever present.
- Change to the Table module to not display times in a 24 hour clock, and then redundantly display AM/PM also
- Fixed a bug in the TimePicker module where the calendar widgets arrow controls to move forward or backward by a month, were invisible.
- in Pulldown modules that have custom logic to disable/enable particular options, the text label of those options now correctly displays in a greyed out color
- Canary UI now generates an error message for any users that try to load views in Internet Explorer, to the effect that the browser is not supported.
Version 1.0.3 (November 22nd, 2019)
- Canary UI now supports the use of the “root_endpoint” key in web.conf. This key is commonly used in SSO configurations as well as in advanced configurations where more than one splunk instance or more broadly when more than one web application needs to be accessible on a single host and port.
- Fixed a bug in the Chart module where it could throw an exception particularly on non-previewable jobs and fail to render.
- Fixed a python3 syntax error in the “checkxml” command that would make the command fail if it encountered a broad range of view misconfigurations.
Version 1.0.2 (November 12th 2019)
- Resolved a major issue where if users were accessing splunkWeb through a local port that differed from the httpport configured in web.conf (as is common when proxies or ssh tunnels are involved), that many requests would fail CSRF validation and receive a 401 error when attempting to dispatch searches or POST to any endpoint.
- customBehavior code (in custom apps) that tries to create an intance of the legacy Splunk.Search class will now end up with an instance of Canary’s SplunkSearch class instead. For most simple common tasks, this will give equivalent functionality.
Version 1.0.1 (November 2019)
- Fixed a bug where the page title had “None” where the app’s name should be.
- Fixed a bug in the Fields module where if you reordered a field in the selected field list, it would remove the field entirely.
- Fixed a class of bugs that would happen in some complex configurations, where modules would end up with stale values downstream.
- Fixed a bug where the Pulldown module was accidentally pushing downstream twice, causing an extra cancel and redispatch and other confusing behavior and slowness.
- Fixed a bug where the Report module, when given input to create a timechart and when given an explicit bins argument for the primary axis, it would ignore the bins argument.
- Fixed a bug in the Pulldown module where customBehaviors were unable to explicitly select the emptystring option within the control.
- Added postProcess support to the Fields module
- Resolved a bug in the Fields module where if you had multiple instances on a page, the filter-as-you-type search field would only work for one of them.
Version 1.0 (October 21st 2019)
- logged in user name is now the users full name instead of the username
- Significant improvements to page rendering speed
- SearchControls module now has an ‘export’ button again
- Fixed a bug where any attempts to save a job would fail and the job would be paused instead
- Fixed a bug where the search command to check views for canary compatibility would trip up on any views using the new patterns.
Version 0.9 (October 15th 2019)
- There is now an implementation of “ui patterns”. Chunks of view config can be saved in appserver/patterns and then loaded
into views by referencing just the pattern name. This allows view developers to avoid repetition and to keep their views compact and easier to maintain.
- Fixed a bug in the Chart module where the number of points on the primary axis (x-axis) was being cut off at 100.
- Found and fixed a directory traversal bug in the HTML module’s “src” param.
Version 0.8.1 (October 9th 2019)
- Fixed bugs where some modules might fail to remember selection preferences, due to ui-prefs.conf.spec having been mistakenly omitted from README subdirectory
- Added some logic to enforce a minimum required version number for specific apps like Cisco CDR, so users dont accidentally do compatibility testing with versions that are simply too old.
Version 0.8 (October 7th 2019)
- Look and Feel:
- New colors, styling and better alignment for form element modules.
- Changed the button styles, tab styles and many CSS improvements.
- form element modules in viewHeader and mainSearchControls layoutPanels are now floated left by default.
- Fixed a bug in the Button module where allowAutoSubmit=False was erroneously allowing execution to proceed to the downstream modules during page load.
- Fixed a bug in Table module around time-based drilldowns.
- Fixed a bug in Link module where if it was being multiplexed it would end up with two copies of its actual link element.
- Fixed a bug in the Timeline module where it would not render at all if the job finished extremely quickly.
- SplunkSearch.dispatch was calling abandonJob which meant the properties that were just set like statusBuckets and requiredFields were being thrown away.
- Fixed a bug in TextField where if you had rows set to 2 or higher, it would throw an exception if you had no label set.
- Greatly improved performance of checking many jobs for progress concurrently.
- TimePicker – Addressed race conditions in the TimePicker module between the ui-prefs.conf loading and the times.conf loading, and timeRanges arriving from upstream config (eg from the URL).
- TimePicker – Fixed some bugs in the handling of the “label” param.
- TimePicker – Fixed some defects in the menu code
- TimePicker – Fixed a bug in how label elements are handled when migrating TimeRangePicker usage to TimePicker,
- Improved functionality
- Updated the Button module so that if allowAutoSubmit is set to False, it hides its downstream modules when the page loads (its cousin the Link module already did this).
- Fixed an assertion that wasn’t firing when we automatically migrate legacy Sideview XML views. It now errors out with a detailed error message if it encounters a module that has downstream modules, but is of a class that isn’t supposed to ever have them.
- Updated the implementation of our standard app-licensing endpoint, so that now any admin that has the “edit_license” capability can update or create the app’s license string. Formerly the license string could only be updated in the UI by users who had the “admin_all_objects” capability.
- Fields module, when it’s modal layer is open, now has a textfield users can use to filter the list of available fields.
- Giving the AppNav module a pair of params to control whether savedsearches and dashboards from other apps should be rendered into this app’s saved search menu. These other apps may have decided to export their content to the “system” space but this doesn’t mean we want them in our menus here. Both new params default to False, ie they exclude globally exported content from other apps from appearing in the saved report and saved dashboard menus.
- Some work to improve how the UI picks up the locale from the page URL and reuses that locale for all requests.
- if anything sets a $foo$ token $shared.tz$ to the name of a specific timezone, then any searches dispatched downstream from that point will be dispatched with that tz, overriding the current user’s preference.
- If there are still searches running when the user closes the browser window and they’re not marked as “saved”, we now try to cancel them explicitly.
- Switcher module is now able to key off of any of the standard job keys that are published to the context.
Version 0.7.2 (September 19th, 2019)
- URL’s to static files not properly incorporate the app version number and build numbers, so as to effectively defeat local browser caches whenever the app is updated (as long as splunk is restarted or the persistent rest handler that serves the views is restarted).
Version 0.7.1 (September 14th, 2019)
- Many cosmetic fixes
- AppNav module tries to make app developers life easier by at least logging an error if the nav explicitly specifies a view that the current user cannot see.
- some bugs fixed in the code that converted the view config to the yaml format, that had been erroneously putting some redundant keys back in.
- Chart module has new improved chart colors for all cases where there are fewer than 7 series
- Fixed a bug in the Fields module where the available fields list would not render if you opened the layer before they were available.
- Fields module and TimePicker module now save and load the user’s preferences from/to ui-prefs.conf
- Fields module now has a ‘reset to default’ link that can reset the user’s selected fields.
- Fixed a bug where multiple modules that used menu-ing systems, like AppNav, TopNav and TimePicker, could have their menus open at the same time.
- Fixed a small bug in the Table module where trying to select the name of a column header would sort by that column.
- TimePicker module’s “Custom” mode now works with URLLoader when latter is in ‘keepURLUpdated’ mode.
- Fixing the Chart module’s rendering when each timechart bucket is just one second or a few seconds.
Version 0.7 (September 9th, 2019)
- Changing default sort order in the Table module to be descending
- Improvement to the shared menu code so the last-opened submenu doesn’t stick open while you’re mousing around.
- Ported over the hideOnEmpty param for CheckboxPulldown which had been added to Sideview Utils in the past year.
- Improved tooltip positioning and design in the Chart module when there is a split-by field.
- Fields module now saves and loads the users current selected fields to/from ui-prefs.conf
- Improvements to how things work as the user clicks around from Simple XML views to HTML dashboard views, to canary views, in the app nav bar
- Fixed some general module loading logic that was preventing the Link and Button module’s “allowAutoSubmit” params from working.
- Quite a lot of small compatibility fixes for when an admin has set Splunk Enterprise 8.0 to run all apps in python3.
- Fixed a bug in TimePicker where it would erroneously push changes downstream when you opened the “Custom” modal popup.
- Fixed a bug in some advanced Multiplexer cases.
- Fixed file encoding issues with a couple third party libraries that were causing breakage on Python3
- Removed last usage of the Splunk Python SDK
- Fixed various problems in the Sideview licensing endpoint when run in Python3.
Version 0.6.1 (August 28th, 2019)
- TopNav module now has a link to the Admin section landing page.
- if apps link to ‘search’ with a canary uri, the controller now redirects the browser to the standard splunk uri, retaining other params.
- Deleting the “Messaging” module as it dates from extremely early on in Canary’s timeline and the level of configurability that it aimed for now seems silly. All messaging rewritten to be handled by a single message area for now.
- Fixed bugs in CheckboxPulldown and Multiplexer modules that were causing an extra cycle of job dispatch+cancel in some cases.
- Fixed a bug in the AppNav module where clicks upon the actual arrow icons would fail to open the submenu.
- Introduced a mechanism where any module can set a “hideChildrenOnload” param to True, and all downstream modules will load hidden when the page first loads.
- Fixed a bug where modules in some hierarchies would end up with the incorrect layout panel
- Fixed bugs in the Pager module around the two-pager configuration (with one above and one below).
- Fixed a bug where job progress events were not firing on previewable jobs.
- Chart module modified so on progress events it will update it’s existing chart object instead of recreating it from scratch.
- Search module now can accept $foo$ tokens in its “preview” param, allowing this to be set from form elements or other upstream logic
- Chart module now, even if the job is not previewable, it will at least update with a little “Loading (12.34%)” text.
- TimePicker module now gets the times.conf stanzas in correct order (sorted by the order key, numerically)
- Fixed a bug in CheckboxPulldown where in some cases it would erroneously deselect all of its options on page load (instead of selecting all).
Version 0.6 (August 23rd, 2019)
- First release
- A list of release notes is not feasible since this is about 7 years of development.
Such a list would include thousands of stories added and defects resolved.