Skip to content
Release notes

What changed, release by release.

Newest first. These are the notes the app itself shows on its What's new page, published here as they are written.

Latest
1.19.0
Released
Nov 9, 2026
Versions
2787 releases
First release
Aug 20, 2026

Grouped by version; fixes are listed with the release they belong to.

1.19

Latest

A report or a dashboard can sit in more than one category, like tags (HAR-73). A report on purchase order lines can be listed under Vendors and under Demand Planning at once, without a copy of it.

Several categories

  • Pick as many as apply. The wizard's Details step, New Dashboard and a dashboard's Settings... have a Categories box: type part of a name, pick it, and a chip shows it. × on a chip takes it off. With no chip, the report or dashboard is Uncategorized.
  • Listed under each one. The sidebar, the catalogue and the Dashboards page list an item under every category it is in, and count it in each, so the category counts can add up to more than All Reports. Uncategorized lists only what has no category at all.
  • Shown everywhere. A card shows a chip for each category. The table, the search, the report page, the report pickers, the archived lists and Import / Export show them all.
  • A category no longer offered stays. A category an item is already in that the box no longer offers, because it was deactivated or is not ticked for that use, stays as a chip marked (not offered), so saving does not remove it unasked.
  • A category in use is not deleted. A category that a report or dashboard, archived ones included, is still in cannot be deleted. Deactivate it instead.

Existing categories, and other accounts

  • Nothing to do after the update. Every report and dashboard keeps its one category. The refresh job copies it into the new Categories field over its next few runs, and the app reads the old field until then, so nothing moves in the sidebar.
  • Import and export. A file now names every category, and the first one again for an account still on an older version, which files the item under that one. A file exported by an older version imports as before.
  • For another app in the account. The reports and dashboards of one category are read on the server with the store's listCategoryMembers, which reads both the new and the old field.

1.18

1.18.0 to 1.18.3

The widget filter ticks several values from a list of the report's own, and takes more than one condition (HAR-66).

1.18.1A chart, a stat tile or a comparison trend can set its own number format: currency, decimals, percent, compact or in full, negatives (HAR-63).

1.18.2A chart's colours and its text can be chosen: a palette, one colour, a colour pinned to a value, and the font and size of its text, with an account default for the font (HAR-64, HAR-65).

1.18.3A comparison trend can compare with up to four periods, such as this year, last year and the year before (HAR-67), and draw a second measure over the same periods, such as total units beside average cost (HAR-68).

The widget filter

  • Is any of and Is none of. Two new comparisons in the Filter section of the widget panel. They keep the rows whose value is, or is not, one of the values you tick. "Parts" also keeps a row that says "parts", as Equals always has.
  • A checklist of the report's values. Each value of the column is listed with how many rows carry it, in the order of the alphabet, the empty value as (Blank). Past eight values a search box narrows the list. Nothing ticked keeps every row, as on the report and the dashboard filter bar.
  • A value typed by hand. Add a value by hand takes a value the rows do not hold yet. A ticked value the rows no longer hold stays in the list, ticked and marked not in results.
  • More than one condition. Add a condition puts another one under the first. A row is kept when it meets them all, such as Item class is any of A, B or C, and Amount greater than 0. To remove a condition, set its Filter type to (none, remove this condition).
  • Equals offers the column's values as you type. The box lists the values that contain what you typed.
  • A near miss shows. Under each condition the panel says how many rows it keeps, such as Keeps 88 of 264 rows. A typed value that no row holds keeps none, and the panel offers the closest values, such as Did you mean West? A click puts it in the box. With several conditions the panel also says how many rows they keep together.
  • Spaces around a typed value go when you leave the box. A trailing space typed by mistake used to match nothing.
  • The same checklist as the report wizard. The Filters step of the wizard and the widget panel draw one list, so they look and work alike.

Where the conditions apply

  • Every widget that takes a filter: bar, horizontal bar, line, pie and donut charts, tables, stat tiles, the comparison trend, the comparison table and the statement. A bar chart whose series are periods still leaves out a period or a date range on its own date column, and applies the other conditions.
  • A stat tile names every condition in its caption. Its automatic comparison steps back the first relative period among its conditions and keeps the other conditions on both sides: this month for class A against last month for class A.
  • A click on a widget opens the report with each condition. Is any of travels as the report's checklist on a dropdown or month column, and as =A | =B on a text column. Several values on a number or date column cannot be carried, and the report then opens with more rows than the widget counted, never fewer. One value ticked travels as Equals does.
  • Print, present mode, NetSuite portlets, scheduled emails, PDFs and the Excel file draw the widget from the same conditions.
  • Import and export carry the conditions. A file whose widget names a subsidiary column in any condition is refused, as before, by an account without subsidiaries unless the widget is marked.

After the upgrade

  • Every widget filter saved before keeps its meaning and draws as before. A widget with one condition that 1.17.2 can read (a relative period, a date range, or equals, does not equal, contains, greater than, less than) is still saved exactly as before.
  • A widget with Is any of, Is none of or more than one condition is saved in a new place. Its old Filter holds a stand-in, equals "(needs Advanced Reports 1.18.0 or later)", on the column of the first condition.
  • An account still on 1.17.2 that reads such a layout, from an import or a rollback, applies the stand-in and keeps no row. A chart shows No data to chart, a table no rows, and a stat tile a dash, with the stand-in in its caption. It never shows the rows the conditions leave out. Two figures are still wrong there: a comparison trend shows 0 for both periods, and a stat tile that counts shows 0. Its widget panel shows the stand-in as the filter. Changing the figure of a stat tile there drops the other conditions, and 1.18.0 then shows that tile with no rows too, until its filter is set again. Update the account to 1.18.0.
  • Help. Building a dashboard has a new section, The Filter section. Charts on a report and Clicking a dashboard widget say how the conditions are counted and carried.
  • 1.18.1Existing widgets do not change. A widget with no number format follows its column exactly as before, and a comparison trend still writes plain numbers.
  • 1.18.1An account still on 1.17.2 that opens a layout saved with a number format ignores the setting: its widgets follow their columns, and its trends write plain numbers. Saving that layout from 1.17.2 drops the setting. Import and Export carry it.
  • 1.18.1Help. Formatting numbers, currencies, percentages and dates has a section on a widget's own number format; Charts on a report and Building a dashboard name it.
  • 1.18.2Existing charts look as they did. A chart with no colours and no chart text set, in an account whose chart font is left on the app's own, draws the same colours, fonts and pixels as in 1.17.2, on screen, on paper, in an email and in a PDF.
  • 1.18.2An account still on 1.17.2 that reads a layout with these settings, after an import or a library update, draws those charts in the standard colours and the app's font at medium, without an error. Saving the layout there drops the settings. A layout that is not saved there keeps them, and shows them again after the upgrade.
  • 1.18.2Excel. A workbook holds the figures of a chart, not its colours or its font, as before.
  • 1.18.2Help. Charts on a report has a section on colours and text. Formatting numbers, currencies, percentages and dates has the Chart font setting, and the settings reference lists format.chart.font.
  • 1.18.3An existing comparison trend draws as before, line for line, with the same header, the same hover card and the same scale. It is clickable now, unless its author sets When clicked to Does nothing.
  • 1.18.3A trend with one comparison and one measure still writes plain numbers, unless the widget sets a Number format. The column formatting applies once a second measure is added.
  • 1.18.3The figures a commentary reads from a trend are unchanged: the totals, the change and the names of the period reported and its first comparison, for the first measure.
  • 1.18.3A layout saved with the new fields, opened by an account still on 1.17.2, draws the trend as the period reported against its first comparison, for the first measure only, without the extra lines and without the second measure or its number format. Saving that layout again from 1.17.2 drops the extra comparisons and the second measure.
  • 1.18.3Imports, exports and the library carry both fields. A second measure on a column a subsidiary leaves out is named among the columns the widget needs.
  • 1.18.3A dashboard's Month or Date filter on the trend's date column narrows the rows of every period alike, as it did for the first comparison. A filter that leaves out the dates of an earlier period draws that period at zero.
  • 1.18.3Help. Building a dashboard, Charts on a report, Clicking a dashboard widget, Commentary on a widget, Formatting numbers and Scheduled emails describe the new choices.

Number format on a widget

  • 1.18.1A Number format section under How it looks. Bar, horizontal bar, line, pie, donut, stat tile and comparison trend widgets have it. One column can now read one way in the report's grid and another way on a chart, without editing the report. Brad's case at CFG: the average LTL cost, a plain number column, shown as US dollars with two decimals on the chart only.
  • 1.18.1Show as. Follow the column (the default), Number, Currency or Percent. A comparison trend starts on Plain number, which is how it has always written its figures.
  • 1.18.1The other choices. Decimals, the currency code for Currency, what the values are for Percent (fractions or percentages already), Figures (compact or in full) and Negatives. A choice that does not apply to the type is not shown, and is dropped when the type changes.
  • 1.18.1Each choice left as it is falls back to the column, then to the account. The widget wins over the column's Formatting in the Columns step, which wins over the Formatting tab. A count and a distinct count are plain whole numbers until the widget says otherwise; an average or a sum keeps its column's format. A widget made a Percent on a column that is not one takes the account's reading for new percent columns.
  • 1.18.1The page's Numbers choice. A widget set to Compact or In full keeps it whatever Numbers says, as a column set that way does. A widget that leaves Figures as it is follows the column, then the page.
  • 1.18.1A live sample. Under the choices, the widget's own first figures written with them, and what an axis tick reads, as the Formatting tab and the Columns step show theirs.
  • 1.18.1A second measure has its own. A bar or line chart with a second measure has a second set of choices for it, so an amount in dollars and a rate in whole percentages sit on one chart.

Where it applies

  • 1.18.1Everywhere the widget's figures are written. The axis, the values on the bars and points, the reference line labels, the hover card, the key of a pie or donut, the legend totals, change and hover card of a comparison trend, a stat tile's figure, comparison, change, target and gap, and a commentary figure read from the widget.
  • 1.18.1The axis stays short. It writes the symbol of a widget set to Currency ($150, $1.5K) without trailing zeros. The values on the plot and the reference line labels of a widget with its own format use its decimals ($156.59), as its hover card does.
  • 1.18.1Print, portlets, emails, PDFs and Excel. The scheduled email body, the PDF in both forms and the table of values of a chart in the workbook use the same format. Excel cells take the decimals and the negatives; Excel writes no currency symbol in the cell, as for a currency column.
  • 1.18.1Not on the comparison table and the statement. Each of their columns already has its own decimals, negatives and compact choice.
  • 1.18.1A click on a bar or a slice opens the same rows as before. The format changes the text, not the values.

Colours

  • 1.18.2A palette for each chart. Under How it looks, Colours, a bar, horizontal bar, line, pie, donut or comparison trend chart chooses Standard, Strong or Earth. Standard is the palette every chart had before and stays the default. Strong and Earth keep every colour at 3:1 or more against white, keep neighbouring colours apart for readers with protanopia or deuteranopia, and keep the values written inside a bar readable on each colour. A test checks all of this for every palette.
  • 1.18.2One colour. A chart with one set of bars or one line takes the app's blue unless the author picks another colour. A colour is picked from swatches of every palette or typed as #rrggbb. A colour lighter than 3:1 on white is allowed, with a word saying the key and the values have to carry it.
  • 1.18.2Two measures. A chart with a second measure has a colour for each measure.
  • 1.18.2Comparison trend. The period reported and the period it is compared with each have a colour. The comparison stays dashed.
  • 1.18.2Pinned colours. Pin a colour to a value keeps a series value or a slice in one colour, so Freight is always orange. The pinned value keeps its colour when a filter or a sort moves it, or leaves it alone on the chart. The other values take the palette in order and skip the pinned colours. A chart pins up to 12 values.
  • 1.18.2Everywhere the chart is drawn. The bars, lines, slices, the key, the hover card, values written inside a stack, Print, present mode, portlets, the scheduled email and the PDF all use the same colours. In a PDF the part of a line still to come is a paler shade of its colour.

Chart text

  • 1.18.2Font and size. Under How it looks, Chart text, a chart chooses its Font (Helvetica, Times, Courier or the app's own) and its Size (Small, Medium or Large). It applies to the axes, the values on the plot, the key, the hover card and the Today mark. The widget's title keeps its own Title format.
  • 1.18.2An account default. Chart font on the Configuration page, Formatting tab (the key format.chart.font) sets the font of every chart that chooses none. Its sample is written in the font chosen. Follow the account is the default of each chart.
  • 1.18.2Fonts every renderer has. Each font is one that browsers and NetSuite's PDF engine both draw without a font file. An email writes the chart's text in the font where the mail reader has it, and in its own font otherwise.
  • 1.18.2A larger text makes room for itself. The value axis, the axis titles, the band of each horizontal bar and the label column are measured at the chosen size and font, so a larger text does not run the axes or the labels into each other. On a line chart with a larger text, a value that would run into the Today mark is left out, as one that would run into another value is.

More periods on a comparison trend

  • 1.18.3Up to four comparisons. Under Compared with, + Compare with another period adds up to three more periods. Each one is the period right before, two to four periods before, the same period one to three years earlier, or your own dates. For this year, last year and the year before, set Compared with to the period right before and add Two periods before.
  • 1.18.3A line for each period. The period reported stays the solid line. The first comparison stays the grey dashed line. Each one after it takes the next colour of the chart's palette, from its third colour, so it is never the blue, the grey or the second measure's orange. Every comparison also has a dash of its own and is lighter the further back it is, so the lines are never told apart by colour alone. The periods are lined up by position, so March sits over March.
  • 1.18.3The same span for every total. While the period reported is still running, every comparison is totalled over the same elapsed span, as the first comparison always was. A year to date is measured against the same days of each earlier year.
  • 1.18.3The key names every period with its total, and each earlier period with its change against the period reported. In a narrow widget the entries go one under another, and a long name wraps between its words. Pointing at an entry shows its dates.
  • 1.18.3The hover card lists every period at that point: its value, its month or day, and its change against the period reported.
  • 1.18.3Names. An earlier period is named as people say it: Last year, Year before last, Quarter before last, Two years earlier. Further back, by its dates, such as 2024 or Q4 2025. Fiscal periods are named the same way, such as Fiscal year before last.

A second measure on a comparison trend

  • 1.18.3+ Add a second measure, at the end of What it shows, draws a second figure over the same periods: its aggregate and column, its name, and Its scale. Each period then has a line for each measure, the second in orange unless the author chooses another colour, dashed as its period is.
  • 1.18.3Its own scale when the units differ. Left to the app, the second measure has its own scale at the right when it is not written like the first, such as an amount and a count. Two amounts share one scale. Its scale sets it either way, as on bar and line charts, which decide by the same rule. With two scales, each is titled with its measure.
  • 1.18.3Each measure in its own formatting. With a second measure, the key, the hover card and the scales write each measure as its column is written: average cost in dollars, units as a count. The key has a line for each measure, named. Number format then has a second set of choices for the second measure, as on a bar or line chart.
  • 1.18.3Six lines at most. Three periods of two measures is as much as a reader can follow. With a second measure the trend compares with two periods at most. The button to add another period is greyed and says why, and a comparison past the second stays saved and comes back when the second measure is removed.

Colours, chart text and number format

  • 1.18.3Colours. Compared with colours the first comparison, as before. A trend compared with more than one period also has Palette, which colours the periods after the first, and a trend with a second measure has a colour for it.
  • 1.18.3Chart text. The font and the size apply to every line's entry in the key, the hover card, both scales and their titles. A larger size widens both scales.
  • 1.18.3Number format. A trend of one measure writes its figures in the widget's Number format, as in 1.18.1, and as plain numbers without one. With a second measure, the first measure follows its column and the widget's choices, and the second follows its column and its own choices.

Clicking a point

  • 1.18.3A point of a comparison trend opens its rows. On a dashboard, a click on a point opens the report on that point's dates, in the period of its line: March of the year before last opens March of that year. A click beside the lines opens the dates of the period reported. A point of the second measure follows the drill-through of its column. The dashboard's filters travel with the click.
  • 1.18.3From the keyboard. Tab stops on the first point of the period reported, the arrow keys move through the points, and Enter opens one, as on a line chart.
  • 1.18.3When clicked in the widget panel now offers the comparison trend, with Does nothing to switch the click off.

Emails, PDFs and workbooks

  • 1.18.3The body of an email writes, for each measure, every period's total and its change against the period reported, then the table of values with a column for each period and measure.
  • 1.18.3A PDF draws every period in one chart, each line in the colour it has on the page, in the chart's font and size. A PDF line cannot be dashed, so periods that share a colour, such as the periods of a second measure, print in lighter shades and the key names them. A second measure on its own scale is a second chart under the first, as a line chart with two scales is printed. In safe mode the trend is the table of its values.
  • 1.18.3The workbook has, for each period, the label of each point and a column for each measure, the cost as money and the units as a count.
  • 1.18.3Print and present mode draw every line and both scales, as on screen.

1.17

1.17.0 to 1.17.2

A plain look for small tables on a dashboard: the headings and the lines, with no paging, no filter boxes and no Export button (HAR-59).

1.17.1A tidier top bar: Present is a Play icon, and a gear menu holds Print, Schedule an email, Edit and the rest (HAR-60).

1.17.2The search box finds dashboards as well as reports, with a list of types and prefixes such as rep: test (HAR-61).

The Plain look

  • A table widget has a Look: Full or Plain. It is under Rows and totals in the widget panel. Full is the table as it was, with Rows per page, the paging buttons, a filter box on each column and Export. Plain shows the headings and the lines only.
  • Columns fitted to the widget. A plain table has no sideways scrollbar and no column cut in half. In a narrow widget the space between columns tightens, a long heading goes onto two lines, and a long name ends in an ellipsis with the whole name in its tooltip. A figure or a date is never cut.
  • When the columns still cannot fit, the last ones are left out, the last first. The name and its figure always stay. In a very narrow widget the rank goes next, then the name goes onto two lines, and only then does the table scroll sideways.
  • Every reader is told what is left out. One line under the table says it, such as 12 more lines and 2 more columns in the report, and opens the report. While you edit, the widget also names the columns.
  • More lines than shown. Lines shown sets how many lines a plain table draws, 100 at most. A table with more writes how many more there are, as a link that opens the report with the dashboard's filters and the widget's own.
  • The lines under a ranked table line up with its columns. Top 5, All others, Total and the share are rows of the table now, on both looks: the name under the names, each figure under the column it adds up, the shares under Share, a rule above and the total in bold. They were a small block of their own at the left.
  • All others says how many. The line reads All others (235), with the number of groups the Limit hides. A table with a Limit and no All others line writes 235 more lines under it, as a link to the report.
  • Sorting. A click on a heading still sorts a plain table.
  • Ranked tables start on Plain. So does a table you give a Limit, unless you chose a look. A grouped table without a Limit stays Full, since it can have hundreds of lines.

Emails, PDFs and print

  • Print this page prints a plain table with the lines it shows, fitted to its card on the sheet as on screen, with the lines under it in its columns. It prints how many columns it left out.
  • A scheduled email and a PDF draw the lines under a ranked table as rows of the table too, each figure under its column, and All others with its count. They draw every column of a table.
  • A scheduled email, a PDF and an Excel attachment already wrote a table without controls. The look changes nothing in them, and they hold every line the table has, up to their own limits.

After the upgrade

  • Ranked tables change look. A table with a rank or share column, or a line under it, is drawn Plain from this version on. Such tables exist since 1.16.15 only. Set Look to Full on a table to bring the paging, the filter boxes and Export back.
  • Every other table stays as it was, a grouped table with a Limit included.
  • An account on an older version draws every table Full. Saving a layout there removes the look, and the table falls back to the rule above.
  • Help. Ranked tables and a chart's total has a section on the look of a table.
  • 1.17.1Nothing was removed. Every action the bar had is in the bar or in the gear menu, under the same name.
  • 1.17.1A dashboard being edited keeps its editor's bar: Filters, Settings, Add a page, Cancel and Save.
  • 1.17.1A dashboard shown in another app has the same three icons: Refresh dashboard, Present and the gear. Its gear holds Print this page and Numbers. The menu opens inside the frame and does not change the height the frame reports to the other app.
  • 1.17.1Help. Finding your way around describes the gear menu, and the articles that said "choose Print" or "choose Edit dashboard" now say where.
  • 1.17.2Typing in the box no longer moves you to the catalogue. You stay on your page and choose a result. On the catalogue, Enter still narrows the list to your words. From any page, List the reports in the catalogue, the last line of the report results, opens the catalogue narrowed the same way.
  • 1.17.2A portlet found by the search opens in its editor on the Portlets page.
  • 1.17.2Help. Finding your way around has a Search section with the prefixes.

The top bar

  • 1.17.1Present is an icon. The Play triangle at the top of a dashboard starts present mode. Its name shows when you point at it and is read by a screen reader.
  • 1.17.1A gear menu on reports and dashboards. The gear icon opens the actions you do not use every minute. On a dashboard: Edit dashboard, Schedule an email, Print this page with its paper and its pages, Download as PDF, and Numbers. On a report: Edit Report, Edit Layout, Make a Copy, Schedule an email, the two print entries, Numbers, and Full Refresh on a report with partial refresh.
  • 1.17.1Each entry says what it does on a line under its name.
  • 1.17.1An entry you have no right to is not listed, as its button was not shown before.
  • 1.17.1An entry you cannot use right now is greyed and says why. While you edit a report's layout, the entries that leave the page or print it say to save or cancel your layout changes first.
  • 1.17.1Refresh dashboard is an icon too, two arrows. It stays in the bar because it shows the count and the time while a refresh runs.
  • 1.17.1What stays in the bar. The title, Group by and Refresh on a report, Refresh dashboard and Present on a dashboard, the gear, the search box, Help, and the New button of a list page.
  • 1.17.1From the keyboard. Enter or the Down arrow on the gear opens the menu. The arrows move through the entries, Home and End go to the first and the last, Enter chooses, and Esc closes the menu and returns to the gear.
  • 1.17.1One line. The top bar of the catalogue, of a report and of a dashboard stays on one line from 1280 pixels wide up, for an admin author with every right. In a narrower window it wraps, and the title is still shown whole.
  • 1.17.1The layout editor's toolbar no longer covers the first row of widgets. Before any scrolling it lay over the top 12 pixels of their title bars, on a dashboard and on a report.

Search

  • 1.17.2One search over reports and dashboards. The box in the top bar used to find reports only. It now finds reports and dashboards, and portlets, scheduled emails and Help articles for the people who see those pages. The results open under the box as you type, grouped by type, with the category beside each name and the matching part marked.
  • 1.17.2Choose a type. A caret beside the box opens All, Reports, Dashboards and your other types. Your choice shows in the box as a small label and is kept until you close the browser tab.
  • 1.17.2Prefixes. rep: test finds the reports that contain test, dash: cash the dashboards. The others are port:, email: and help:. Any shortening that names one type works, down to r: and d:, in upper or lower case, with or without a space after the colon. A word before a colon that names no type is searched as text.
  • 1.17.2Contains, by default. sales finds Presales pipeline. Case and accents make no difference. The search reads the name, the description and the category, and several words must all be found.
  • 1.17.2The best matches first. Names that start with your word, then names in which a word starts with it, then names that contain it, then matches in the description, then in the category.
  • 1.17.2Only what you may open. The search reads the lists the app already shows you, so it follows the audience of each report and dashboard. Archived items are left out.
  • 1.17.2Keys. / or Ctrl+K puts the cursor in the box, except while you type in a field. The Down and Up arrows move through the results, Enter opens the marked one, and Esc closes the list.
  • 1.17.2Enter on the catalogue. There no line is marked until you press an arrow, and Enter narrows the catalogue to your words, as the box always did. On every other page the first result is marked and Enter opens it.
  • 1.17.2The box keeps its place. It never lies over another control. It is 192 pixels wide in a window of 1280 pixels and grows with the window, up to 288 pixels at 1440. The list of results is wider and opens under it.
  • 1.17.2When nothing matches under a type, the list says so and offers Search everything when another type has a match.
  • 1.17.2Instant. The lists are already on the page, so nothing is asked of NetSuite while you type.

1.16

1.16.0 to 1.16.16

Reports and dashboards can now be emailed on a schedule.

1.16.1A scheduled email can be sent at once, and its history says what NetSuite did with it.

1.16.2A click on a dashboard widget opens the rows behind it.

1.16.3Pages use the whole width of the window, a printed dashboard cuts nothing off, and Group by lists only what the widgets can show.

1.16.4The Help pages were rewritten, and the Configuration page has one scroll bar.

1.16.5Who may schedule emails is now a setting, and Print offers a PDF drawn by the server.

1.16.6Smaller requests and fixes: where a new widget lands, descriptions on All Reports, filters kept for the session, and what a click on a widget opens.

1.16.7A Formatting tab sets how numbers, amounts, percentages and dates read across the account, and a report column can set its own. Nothing changes in an account until someone changes a setting.

1.16.8Fiscal periods: the fiscal year of the account in filters, Group by and comparisons, with half years, year to date figures and balances that take their month-end value. An account whose fiscal year starts in January sees new calendar choices and nothing else.

1.16.9A fix for periods that were one month off for people east of Greenwich, and for the day a scheduled email is written on.

1.16.10A new widget, the comparison table: one line for each department, customer or account, one column for each period you choose, with change columns, subtotals and a total.

1.16.11Stat tiles a controller can present: a coloured edge, a name for the comparison, percentage points and a caption.

1.16.12Chart additions: bars side by side or stacked for a series or for periods, the values written on the plot, reference lines, and the last value at the end of a line.

1.16.13Two measures on one chart: bars with a line over them, each on its own scale, sorted by either measure.

1.16.14Commentary: a few sentences of your own on any widget, with figures that follow the data.

1.16.15Ranked tables: a rank, a share of the total and a running share on a grouped table, lines under it for the top, the others and the total, and a total under a chart.

1.16.16Presentation layout: section titles, dashboard pages shown as tabs, and a present mode that shows one page at a time over the whole window.

Scheduled emails

  • Schedule an email from a report or a dashboard. The button Schedule an email opens a page with five steps: what to send and with which filters, in which format, to whom, when, and the message. Authors can schedule; each person sees their own scheduled emails under Scheduled emails.
  • Formats. In the body of the email, as a PDF, as a CSV file, or as an Excel file. A report sends its table. A dashboard sends its figures, tables and bars in the body, its charts drawn in the PDF, or one sheet per widget in Excel.
  • Recipients. Employees, contacts and other NetSuite records with an email address, or addresses typed in, each as To, CC or BCC. NetSuite allows 10 recipients on one email, so a longer list is sent as several emails of up to 10, and the page says how many. A contact, a typed address, or an employee on another email domain is marked as outside the company, with a warning that report data will leave it.
  • When. Every day, every weekday, weekly on chosen days, every two weeks, or monthly on a day, at a time of day in the time zone of the account. The page shows the schedule in words and the next run.
  • Your own wording. The subject and the message are yours, with four placeholders that are filled in when the email goes out: the name, the filters, the date and a link back to the report or dashboard. A preview shows the result as you type, and Send me a test sends it once, to you only.
  • Size limits. NetSuite allows 10 MB per attachment and 15 MB per email. An email that would be larger is sent without its file, with the link in its place, and the history says so.
  • An email carries only what its creator may see. If the person who scheduled it loses access to the report or dashboard, or is made inactive, nothing is sent and the history gives that reason.
  • 1.16.1Send now. On a scheduled email, Send now sends it as saved to all its recipients right away. It asks first, naming the number of recipients and how many are outside the company. The schedule does not move, and it works on a paused email too. The history marks it as sent by hand and says who pressed it.
  • 1.16.1The history says what happened to each email. After an email is handed to NetSuite, the app looks it up in NetSuite's own lists and records the outcome: sent, sent to a different address, not sent, not delivered, or could not be confirmed. Until then it reads Handed to NetSuite for sending.
  • 1.16.1Problems are under Errors. An email NetSuite did not send or could not deliver is listed there with the reason, and can be sent again. Nothing is sent again by itself.
  • 1.16.1A notice when an account does not deliver. A sandbox, or an account set to reroute outgoing email, sends to the logged-in user or drops the email. The scheduled email pages say so when the latest emails show it.
  • 1.16.1Two settings. email.confirm_delivery switches the lookup off, and email.confirm_hours sets how long an email is looked for, 48 hours by default.
  • 1.16.1An email that reads well in every mail reader. In the body of the email, the figures sit side by side, the button and the bars are drawn in readers that ignore backgrounds, one font is used throughout, and a table too wide for the page continues under itself.
  • 1.16.1A clearer PDF. The time is printed with its offset, as in 9:47 AM (GMT-4). Tiles have more room, two charts share a row on a wide page, the key sits beside a pie, and a line with one point is printed as a figure.
  • 1.16.1The Sending switch reads the right way. Active is on, to the right and blue. Paused is off, to the left and grey.
  • 1.16.5The roles that may schedule emails. A new setting on the Configuration page, rights.email_roles, names the roles that may create, change, pause, delete, test and send scheduled emails. It starts with Administrator alone. Until now every author could schedule. The Schedule an email button, New scheduled email, Send now and Send me a test show for those roles only, and the server refuses the same actions for anyone else.
  • 1.16.5Emails already scheduled keep running. When a role is not on the list, the emails its people scheduled still go out. Their owner sees them and their history, and can no longer change them. An admin sees every scheduled email, the history and the errors, and changes them only when their own role may schedule.
  • 1.16.5After the upgrade. To let authors schedule again, add their roles to rights.email_roles under Manage, Configuration.

For administrators

  • Manage, Scheduled emails lists every scheduled email with its owner, what it sends, its next run, its last result and a pause switch.
  • History lists every email sent or tried, with its recipients, format, size and outcome. Errors lists the ones that failed, each with its reason and a Send again button.
  • A sender must be chosen once. NetSuite needs every email to come from an employee. Choose one under Manage, Configuration. Until then emails can be scheduled but none is sent, and the pages say so.

The top bar

  • The New button fits the page. All Reports shows New Report, the dashboards list shows New Dashboard, Portlets shows New Portlet and Scheduled emails shows New scheduled email, all in the same place. Pages where creating something makes no sense show no New button.

Dashboards

  • 1.16.2Click a widget to see its rows. A click on a bar, a slice, a point of a line, the name on a line of a grouped table, or a stat tile's number opens the report behind the widget, filtered to what you clicked. The widget's own filter and the dashboard's filters come along. The bar with no name opens the rows that have no name. A chart on a report's own page narrows the table below it the same way.
  • 1.16.2Dates open as their period. A widget grouped by year, quarter, month or week opens the matching dates, including when the dashboard's Group by sets the grouping.
  • 1.16.2From a summary to its transactions. When the report behind the widget has a drill-through on the column the widget adds up or groups by, the click opens that detail report. If you may not open the detail report, the widget is not clickable.
  • 1.16.2Back returns to the dashboard as you left it, with the filters and the Group by you had set. Hold Ctrl or Cmd while you click to open the rows in a new tab. A dashboard shown in another app always opens them in a new tab.
  • 1.16.2When clicked. A new setting in the widget panel switches the click off for one widget. Widgets saved before this release are clickable.
  • 1.16.2Is empty for Yes / No columns. A Yes / No column filter has a third choice, Is empty.

Pages use the whole width

  • 1.16.3No more narrow column. The report wizard, the scheduled email pages, Help and What's new sat in a column in the middle of the window. They now use the width of the window, as the report and dashboard pages do, with the same margin.
  • 1.16.3The email preview at its real width. On the Message step the preview shows the email as wide as it is sent, 640 to 900 pixels, with no sideways scroll bar. It sits beside the form when the window has room for the whole email, and under the form when it does not.
  • 1.16.3Forms use the room. Step 1 of a scheduled email puts what to send beside its filters, and the Details step of the report wizard puts the refresh mode beside the other fields. A name field keeps the width of a name.
  • 1.16.3Text stays readable. Help articles, release notes and long notices stop at about 95 characters a line inside the wider page. The help index shows its articles in three or four columns.

Printing a dashboard

  • 1.16.3Stat tiles print whole. A tile with a comparison needs more lines on paper than on screen. Its figure was pushed up under the heading and its change line was cut by the border. The tile now grows to hold its content, and the tiles beside it grow with it. The same holds on screen in a narrow window.
  • 1.16.3The report name is whole or left out. On paper the name of the report at the right of a widget's heading was cut to a few letters. It is now printed whole when it fits and left out when it does not. A widget title too long for its tile wraps.
  • 1.16.3Axis titles have their own space. The title up the side of a line or bar chart was drawn over the figures of the axis when they were four characters or longer. It now has its own strip, on screen and on paper.
  • 1.16.3A bar chart in a narrow cell keeps its bars. On paper the column of names is as wide as the names need, where it used to take 120 pixels whatever they were.
  • 1.16.3The change figure of a comparison trend stays beside the legend, at the right of its first line, where it used to fall to a line of its own in a narrow widget.

Group by

  • 1.16.3Group by lists what the widgets can show. A month column holds months, not days, so it can be shown by month, quarter and year and never by week. The dashboard's Group by now lists only the groupings at least one of its widgets can show, so a dashboard of monthly reports has no Week. A link or a saved default that names a grouping not listed opens on the dashboard's default.
  • 1.16.3A widget says when it cannot follow. On a dashboard that mixes date and month columns, a widget on a month column shows months when you choose Week, and says so in a small line under it.
  • 1.16.3The axis title follows the grouping. A chart regrouped by the dashboard titles its bottom axis Quarter, Year, Month or Week. It used to keep the title typed for its own grouping, so a chart of quarters could read Month.
  • 1.16.3A Month column says what it can be shown by. In the report wizard, a column set to Month says under its format that it can be shown by month, quarter and year, and that a view by day or by week needs a Date column.

Help

  • 1.16.4Every article has the same shape. What it is for, the steps in order with the names you see on screen, the choices as a list or a table, pictures of the screens, what to check when something looks wrong, and the related articles.
  • 1.16.4Pictures in Help. The articles now show the screens they describe, 38 pictures in all, taken from sample data.
  • 1.16.4A new article, Clicking a dashboard widget. It says what a click opens, how the detail report is chosen and how to switch the click off.

Fixes

  • 1.16.4One scroll bar on Configuration. The Configuration and Record Types tabs showed two scroll bars side by side. The page now scrolls like every other page.
  • 1.16.6Audience wording. The Audience step of the report wizard and the audience dialogs said a report with no audience could be opened by any author. Only its owner and admins can, which is what the screens now say.
  • 1.16.6Donut and pie labels. The percentage at the top of the ring was cut by the edge of the widget. The ring now leaves room for its labels at every size.
  • 1.16.6Bars in date order. A bar chart grouped on a date or a month column drew its bars in the order of the rows. They are now in time order unless a sort is chosen, on the page, in an email and in a PDF.
  • 1.16.6Line chart legend. On a line chart with several lines the legend was drawn over the title of the horizontal axis. The legend is now above the plot.
  • 1.16.6Import preview. The preview left out the reports a file archives. It now lists them, and a notice above Confirm Import says how many reports will be archived. The result lists them too.
  • 1.16.7A percent column that showed 3,077% for 30.77%. The percent format reads a stored value as a fraction, so a query that already multiplies by 100 showed figures 100 times too large. A percent column now says what its values are: fractions (0.31 is 31%) or percentages already (31 is 31%). The Columns step writes the first values of the column both ways, and suggests the other reading when most values are above 1.5. Existing columns keep reading fractions until an author changes them. The reading holds in totals, stat tiles, charts, roll-ups to quarter and year, exports, emails and PDFs.
  • 1.16.7Filters on a percent column take the figure you see. To keep 10% to 50% you type 10 and 50. Until now a column of fractions wanted 0.1 and 0.5. Filters already saved keep their meaning.
  • 1.16.9This year, Last quarter and the other periods were one month off east of Greenwich. For someone in Paris or Tokyo, a widget whose period was This year over a month column left out January and took in January of the next year. The same happened with every period of a widget's Filter section, with a stat tile's comparison and with an explicit date range, over a month column and over a date column. People in the Americas saw the right months. A period is now made of whole calendar days and months, and reads the same in every time zone.
  • 1.16.9The comparison trend had the same fault. It read its dates on its own and could place a day in the month before. It now reads them as the rest of the report does.
  • 1.16.9A scheduled email used the wrong day near midnight. The email job worked out This month and Year to date on the server's clock, not on the account's. An email sent at 23:30 on the last day of a month, account time, could report the next month, and one sent just after midnight the month before. An email and a PDF now use the day in the account's time zone, for the periods of a widget and for the relative ranges of a filter alike.
  • 1.16.15A grouped table showed its groups and not their figure. A table with a Group by and an Aggregate listed the names of the groups alone. It now shows each group with its figure, in the format of the column the figure comes from, on the page, in an email and in a PDF.

Printing

  • 1.16.5Print this page, or Download as PDF. Print on a report and on a dashboard now offers both. Print this page is the browser's print of the page as you see it. Download as PDF is drawn by the server like the PDF of a scheduled email, with the filters, the Group by, the sort and the Numbers style you have on screen, and holds only what you may open.
  • 1.16.5Portrait or landscape. Print this page asks for the paper, and remembers your choice. It was portrait only.
  • 1.16.5A report has Print too. It was on dashboards only.
  • 1.16.5Limits are said on the page. A table cut to its first rows is named under the button. A PDF too large to make in one request, over 200,000 rows to read or 7 MB, is refused with the advice to schedule it as an email.

Dashboards and layouts

  • 1.16.6A new widget lands at the bottom. It used to land in the first row and push every other widget down. It now goes below the last widget, at the left, and nothing else moves. The page scrolls to it and selects it, so its settings are open. Add widget stays at the top of the grid while you scroll.
  • 1.16.6Choose the report a click opens. When clicked, in the widget panel, has a third choice, Opens another report, with the list of reports you may open. The value clicked and the filters in effect narrow that report on its columns of the same name. A reader who may not open it gets no click.
  • 1.16.6Bars, slices and points from the keyboard. Tab stops on a chart at its first bar, slice or point, the arrow keys move to the others, and Enter opens the rows. The mark that has the keyboard shows an outline and has a name a screen reader reads. The middle mouse button on a bar, slice or point opens the rows in a new tab.
  • 1.16.6The title is no longer cut. For an author the title of a dashboard was cut to a few letters at common window widths, because the buttons beside it took the room. The title now keeps its place and the buttons move onto a second line.

All Reports

  • 1.16.6Hide the descriptions. A Descriptions switch beside Cards and Table hides the description of every report, so each takes one line of the table. Point at a report to read it. Your choice is kept in your browser.

Filters

  • 1.16.6Filters are kept for your session. The filters you set on a report or a dashboard are there again when you come back to it or reload the page, until you close the browser tab. Each report and each dashboard keeps its own. A link that says what to show, such as a drill-through or a click on a widget, still wins. Starting filters returns to what the author set.

Formatting

  • 1.16.7A Formatting tab on the Configuration page. Admins set the account's defaults there: decimals and separators for numbers, decimals, symbol or ISO code, negatives and the default currency for amounts, decimals for percentages, the date style, the clock and the time zone, compact figures on stat tiles and chart axes, and what an empty value and a zero show. Each setting has a sample beside it that changes as you choose.
  • 1.16.7Separators follow each viewer. With the setting on Follow each viewer, a person reads numbers with the separators of their NetSuite preferences, and of their browser when NetSuite gives none. A fixed style, such as 1,234.56 or 1.234,56, is the same for everyone. The clock and the time zone work the same way, and the date can follow each viewer's NetSuite date format.
  • 1.16.7A column can set its own. In the report wizard, the Columns step has a Formatting link under the format of a number, currency, percent or date column: decimals, compact figures, negatives, the currency code and the date style. The column wins over the account. Under the choices, the step writes the first values of the column with what you chose.
  • 1.16.7One set of rules everywhere. Tables, totals rows, stat tiles, charts, the statement, printed pages, emails and PDFs all follow the same settings. An email or a PDF has no viewer, so it uses the fixed styles of the tab.
  • 1.16.7Excel shows amounts and percentages in their format. The Excel export keeps the stored numbers and now gives amounts two decimals and percentages a percent format, so a figure reads in Excel as it reads on the page. CSV still holds the stored values.
  • 1.16.7The hover names the stored value. Pointing at a number, an amount, a percentage or a date shows, for example, Stored value: 30.77.

After the upgrade

  • 1.16.7To fix a percent column that reads 100 times too large, open the report, choose Edit Report, then Columns, open Formatting on the column, choose Values are already percentages, and save. The query does not change and the report needs no refresh.
  • 1.16.7New settings. The choices of the Formatting tab are fifteen configuration keys whose names start with format.. Their defaults write every value as before. The Help article Formatting numbers, currencies, percentages and dates describes them.
  • 1.16.8Existing reports and dashboards read as before. This year, Quarter and every range, grouping and roll-up that existed stay on the calendar year, in a fiscal account too.
  • 1.16.8Half year is new in every Group by list. A dashboard's Group by dropdown shows it between Year and Quarter.
  • 1.16.8New settings. fiscal.first_month (default auto) and fiscal.year_name (default end). The Help article Fiscal periods, year to date and balances describes them.
  • 1.16.9Figures can change for people east of Greenwich. A widget that was one month off now shows the months its period names. Nothing changes for people west of Greenwich.
  • 1.16.9Nothing to set. The fix needs no setting, and reports and dashboards are stored as before.
  • 1.16.10Nothing changes in existing dashboards. The widget appears only where someone adds it.
  • 1.16.10An account on an older version leaves the widget out. A dashboard or a report imported into an account that runs a version from before 1.16.10 shows its other widgets and not this one. Update that account before importing a file that holds a comparison table.
  • 1.16.10Help. The article The Comparison table widget explains every setting, and when to use it in place of the Statement.
  • 1.16.11Existing tiles look as they did. Each addition is a setting under Comparison and target, or in the new section Status and caption.
  • 1.16.11An account on an older version draws such a tile as a plain tile.
  • 1.16.12Nothing changes in existing charts. Each addition is a setting of the widget panel, under What it shows and How it looks.
  • 1.16.12A bar chart that had a Series column left on it from a time it was a line chart now draws that series. Clear Series to get one bar for each group again.
  • 1.16.12An account on an older version draws such a chart with one bar for each group and none of the additions.
  • 1.16.13Nothing changes in existing charts. A second measure appears only where someone adds one, under What it shows in the widget panel.
  • 1.16.13An account on an older version draws such a chart with its first measure only.
  • 1.16.14Nothing changes in existing dashboards and layouts. A commentary appears only where someone writes one.
  • 1.16.14An account on an older version shows a widget without its commentary, and a note as its words with the name of each figure in brackets.
  • 1.16.14Help. The article Commentary on a widget explains each setting.
  • 1.16.15Grouped tables gain a column. A table that was grouped now shows the figure beside each group. Nothing else changes until someone ticks a choice.
  • 1.16.15An account on an older version shows the names of the groups alone, and a chart without its total.
  • 1.16.15Help. The article Ranked tables and a chart's total explains each choice.
  • 1.16.16Nothing changes in existing dashboards. A dashboard without pages is stored exactly as before.
  • 1.16.16An account on an older version shows the pages one under another on one page, in order, and leaves section titles out. Saving a dashboard there removes its pages and section titles. Update that account before importing a dashboard that has them.
  • 1.16.16Help. The article Sections, pages and present mode explains each part.

The fiscal year

  • 1.16.8A Fiscal year section on the Formatting tab. It holds the month the fiscal year starts in. Left on Follow the accounting periods, the app takes the month the most recent fiscal year of your accounting periods starts in. An admin can choose a month instead, and whether a fiscal year is named after the year it ends in (July 2025 to June 2026 is FY2026) or the year it starts in.
  • 1.16.8One month for the whole account. Every date is placed by its calendar month. A subsidiary on another fiscal calendar, a 4-4-5 calendar and adjustment periods are not followed. When the accounting periods have fiscal years starting in more than one month, the section says so.
  • 1.16.8Only where it matters. With January as the first month a fiscal period equals the calendar one, so the fiscal choices are not listed.

Filters, Group by and comparisons

  • 1.16.8Fiscal ranges in a filter. A date or month column can be narrowed to this fiscal year or the one before, to a fiscal half year or quarter, and to the fiscal year to date. Two more ranges compare with a year earlier: the same half and the same period of the fiscal year before.
  • 1.16.8Half years for every account. The same filter has This half year, Last half year, Same half last year and Same period last year.
  • 1.16.8Group by. A report page, a widget and a dashboard can group by Half year, and in a fiscal account by Fiscal quarter, Fiscal half year and Fiscal year. Periods read FY2027, FY2027-H1 and FY2027-Q2, and 2026-H1 for a calendar half year. A dashboard lists a grouping when one of its widgets can follow it.
  • 1.16.8A year earlier on a stat tile. Compared with has a second choice, The same period a year earlier: this quarter against the same quarter of last year, calendar or fiscal. A tile on Year to date or Fiscal year to date is compared with the same span one year earlier.
  • 1.16.8Comparison trend. Its periods include the fiscal ones, and Points per has Fiscal quarter.
  • 1.16.8A click opens the right dates. A click on a fiscal quarter bar opens the report on its three months, on a month column and on a date column alike.
  • 1.16.8Emails and PDFs. They resolve every fiscal range and grouping to the dates the page shows.

Year to date

  • 1.16.8Running total on a bar or line chart. Each period shows the total since the start of its year or fiscal year, and the total starts again with the next year. A click on a bar opens the rows from the start of that year.

Balances

  • 1.16.8A roll-up for balances. In the report wizard, the Roll-up of a column has Last month of the period. Cash, receivables or stock on hand then show the value of the last month at Quarter, Half year and Year, in place of the sum of the months.
  • 1.16.8Closing value. A totals row offers Closing value in place of Sum on a balance column, and a widget has the aggregate closing value. A stat tile filtered to a period shows the balance at the end of that period.

The comparison table

  • 1.16.10A new widget for dashboards and report layouts. Add widget lists Comparison table beside Table and Statement. Pick the column whose values are the lines, a column for sections if you want them, and the date column.
  • 1.16.10You build the columns. A period column adds up one figure over one period: this month, this quarter, the half year, the year, the year to date, their fiscal versions, or all dates. Each can be moved back by a number of periods or by a year, so This month moved back a year is the same month of last year.
  • 1.16.10Change columns. A change column compares two period columns, as an amount, as a percentage or in percentage points for two percentages. It reads n/a when it cannot be worked out, such as a percentage against zero.
  • 1.16.10Share columns. A share column shows a figure as a percentage of its column's total.
  • 1.16.10Balances. A column over a balance takes the closing value of its period, and a total adds up each line's own closing figure.
  • 1.16.10Lines. Order the lines by name or by any column, keep the top few and add the others up on one line, and add a total after each section and over everything. A total line can leave rows or sections out, such as Core without Distribution.
  • 1.16.10Good and bad changes. A change shows an arrow for its direction and is green when that direction is good, red when it is bad. Say whether a higher figure is good for the table, for one change column, or the other way round for the rows and sections you name, such as Expenses.
  • 1.16.10Headings. The table writes each heading from its period, such as Sep 2026, Q3 2026 or FY2027 to date. Type your own to replace one.
  • 1.16.10Formatting. Every figure follows its report column and the account's Formatting settings. A column of the table can set its own decimals, compact figures and negatives in parentheses.

One filter moves the whole table

  • 1.16.10A Month or Date filter sets the date the table reads. On a dashboard, route the filter to the table's date column. The table then works every column out as of the last day of the filter's range. Choose September, and it shows September, September of last year and the year to date through September.
  • 1.16.10That filter hides no rows of the table. Every other filter narrows its rows as usual.
  • 1.16.10With no value in the filter, the table reads as of today.

Clicks, emails, PDFs and print

  • 1.16.10A figure opens its rows. A click on a figure opens the report on that line and on the dates of that column. A section total opens its section.
  • 1.16.10Emails, PDFs and Excel. A scheduled email, a PDF and Print write the table with its sections, total lines, arrows and colours. A table too wide for the page is split into blocks of columns that each repeat the first one. An Excel attachment holds the figures as numbers on a sheet of their own.
  • 1.16.10Import / Export and Make a copy carry the widget with every setting.

Stat tiles

  • 1.16.11A coloured edge. A tile can draw its left edge green when the figure stands well and red when it stands badly, with the word Good or Bad beside the change. The arrow shows the direction and the colour shows whether that direction is good.
  • 1.16.11Which way is good. Each tile says whether a higher figure is good, as for revenue, or bad, as for a cost.
  • 1.16.11A warning band. A move the wrong way of up to a percentage you set shows amber, with the word Warning.
  • 1.16.11The comparison or the target. A tile with a target can colour its edge by the gap to target in place of the change.
  • 1.16.11A name for the comparison. Type FY25 or Budget, and the tile reads vs FY25, then the figure.
  • 1.16.11Percentage points. The change of a figure that is a percentage can be written in points: 42% against 40% is +2 pts. The gap to target follows. A tile set to a percentage column starts on points.
  • 1.16.11The change as an amount or a percentage only.
  • 1.16.11A caption. A tile can say what date its figure is as of, or carry your own words. A closing value is as of the latest date in its rows. Any other figure is as of the end of the dashboard's Month or Date filter, or of the tile's own period, and never after today.
  • 1.16.11A row of tiles lines up. In a row where a tile uses these settings, every figure starts at the same height, whatever each tile shows. The tiles of a row stay the same height on screen and on paper.

Emails, PDFs and print

  • 1.16.11An email and a PDF draw the edge as the tile's left border and write the word, the name, the points and the caption.
  • 1.16.11Excel. The Summary sheet has three more columns: the comparison's name, the status and the caption.
  • 1.16.11Print this page prints the edge with or without background graphics.
  • 1.16.12An email and a PDF draw a chart with a series as horizontal bars, one for each series or period, each named beside it. A stacked chart is one bar of coloured parts with a key.
  • 1.16.12A reference line is a grey bar under the others in an email and in a PDF, which cannot draw a line across bars. On a line chart in a PDF it is a grey line of its own.
  • 1.16.12A PDF line chart writes the last values as a sentence under the chart, and the values of every point as a table. It does not draw the fill.
  • 1.16.12Excel has a column for each series and for each reference line.
  • 1.16.12Print this page prints all of it as the screen draws it.
  • 1.16.13An email draws the first measure as bars and writes the second as a column of figures beside them. A line chart is the table of both.
  • 1.16.13A PDF does the same for bars. A line chart with two scales is two charts, one under the other, since a PDF chart has one scale.
  • 1.16.13Excel has a column for each measure, in its own format.
  • 1.16.13Print this page prints the chart as the screen draws it.
  • 1.16.14An email and a PDF write each commentary under its widget, or above it where it is set above, with the figures worked out when the email is sent.
  • 1.16.14Excel. An attachment has a Commentary sheet, one row for each widget that has one.
  • 1.16.14Print this page prints the commentary in its card, under the widget.
  • 1.16.15An email and a PDF write the rank and share columns, the lines under the table and a chart's total.
  • 1.16.15Excel. The sheet of a ranked table holds the rank and the shares as numbers, then All others and Total as two rows.
  • 1.16.15Print this page prints the table with its lines, and a chart with its total.
  • 1.16.16Print this page and Download as PDF ask which pages. All pages, or This page. With All pages each page starts a new sheet under its name.
  • 1.16.16A scheduled email sends every page, in order. Each page's name and each section title is a heading in the body. A PDF starts a new sheet for each page and for each section title set to start one.

Bars with a series

  • 1.16.12Series on bar charts. A bar chart and a horizontal bar chart have the Series choice a line chart has. Each group gets one bar for each value of the column, such as one for each region.
  • 1.16.12Periods as a series. Choose Periods in place of a column and each group gets one bar for each period you list: the year to date beside the same span a year earlier, or the first half of this year beside the first half of last year. Periods are the ones a comparison table has, fiscal ones included, and each can be moved back by periods or by years.
  • 1.16.12Side by side or stacked. Stacked adds the bars of a group into one, which shows the total and its parts.
  • 1.16.12A key above the chart names the series, in the colours a line chart uses. The hover card lists every bar of the group, with the total when the bars add up.
  • 1.16.12A click on a bar opens the report on its group and on its series, or on the dates of its period. A click beside the bars opens the whole group. Each bar is reached from the keyboard.
  • 1.16.12A filter sets the day. On a dashboard, a Month or Date filter on the date column of a chart with periods sets the day the periods are worked out from, as it does for a comparison table.
  • 1.16.12Long horizontal charts. Bars side by side get more height for each group, so a chart with many groups scrolls sooner and no bar becomes too thin to read.

On the plot

  • 1.16.12Values on the bars and points. A chart can write each value on its bar or point, in the short form its axis uses. A value that would be written over another value or another bar is left out. In a stacked bar the value is written inside each part that has the room.
  • 1.16.12Reference lines. Up to four dashed lines across the plot, each at a value you type, at the average of what is drawn, or at a figure of a column, with its name and value. The scale stretches to take a line in.
  • 1.16.12The last value of a line. A line chart can write the value of the last point at the end of each line. Lines that end close together have their values moved apart.
  • 1.16.12A soft fill under each line of a line chart.

A second measure

  • 1.16.13A second measure on a bar chart. The first measure stays as bars and the second is drawn as a line over them, such as the on-time rate over the spend of each vendor. It can also be drawn as bars beside the first.
  • 1.16.13On a line chart the second measure is a second line.
  • 1.16.13Its own scale. An amount and a percentage get a scale each: the first at the left, the second at the right, each with its title and its own column's formatting. A horizontal bar chart has the second scale along the top, and keeps both in view while it scrolls. Two measures in the same unit share one scale, and you can choose either way.
  • 1.16.13Sort by either. With a Sort set, the order follows the first measure or the second. With a Limit, the top 10 by spend show the on-time rate of those 10.
  • 1.16.13Show one of the two. A chart can rank by one measure and draw only the other.
  • 1.16.13The key and the hover card name both measures, each figure in its own formatting.
  • 1.16.13A click follows the measure clicked. A bar opens the report the first measure's column links to, and a point of the line the one the second's links to. Each bar and each point is reached from the keyboard.
  • 1.16.13A series or a second measure. A chart with a Series draws its series and leaves the second measure out. The panel says so.

Commentary

  • 1.16.14Every widget has a Commentary section. In the widget panel, type what the figures say. It shows in the widget's card, under the widget, above it, or beside it on the right or the left.
  • 1.16.14Live figures. Insert a figure from a list in place of typing it. The text then follows the data, the dashboard's filters and the Group by, and changes when the report is rebuilt.
  • 1.16.14What you can insert. A tile's figure, comparison, change, change in percent, target, gap to target and the date it is as of. A chart's total, highest and lowest with their names, first and last, a bar or point by its name, and the change between two. A figure of a comparison table or a statement by its line and column. A table's row count and column totals.
  • 1.16.14Figures of other widgets. A commentary can read any other widget of the dashboard. It keeps reading that widget when the widget is moved, resized or given another title.
  • 1.16.14The page's own. The filters in effect, one filter, the Group by, today's date and the name of a period, such as Oct 2026 or 2026 to date.
  • 1.16.14A word chosen by a figure's sign. Write up or down, above or below, ahead of or behind, or your own words, in place of the figure.
  • 1.16.14How a figure is written. As its widget writes it, in short form, with its sign or without it. A change can be green when it moved the good way and red when it moved the bad way.
  • 1.16.14Paragraphs, points, bold and italic. A blank line starts a paragraph, a line starting with a hyphen is a point, one starting with 1. is numbered.
  • 1.16.14A heading and a tone. A short heading in bold, and a tone, Positive, Warning or Risk, drawn as a coloured line down the left with its word.
  • 1.16.14A preview. The panel shows the commentary as a reader gets it, with the figures of the moment. A figure that cannot be worked out is marked there, and a reader sees a dash in its place.

Where it sits

  • 1.16.14Beside the widget only where there is room. A narrow widget puts the commentary under it.
  • 1.16.14Never cut. When the text needs more room than the card has, the card grows and the widgets under it move down.

Text notes

  • 1.16.14A text note is a commentary on its own. It takes the same paragraphs, points and figures, read from any widget of the dashboard, which makes a page of conclusions.
  • 1.16.14Notes saved before look as they did until someone edits them.

What a reader may see

  • 1.16.14A figure reads only what its widget shows that reader. A figure of a widget over a report the reader may not open reads as a dash.
  • 1.16.14The text is text. Whatever is typed in a commentary is shown as the characters typed, on the page, in an email and in a PDF.

Ranked tables

  • 1.16.15A Rank and share section on a grouped table. Tick a rank column, a share of total column and a running share column.
  • 1.16.15Rank. 1 is the largest figure, or the smallest when the table is sorted Low to high. Lines with the same figure share a rank and the next rank is skipped: 1, 2, 2, 4.
  • 1.16.15Share and running share. A line's share is its figure over the total of every group, the ones a Limit hides included. The running share adds the shares up from the first line down.
  • 1.16.15Lines under the table. The lines shown added up (Top 10), All others, the Total, and the lines shown as a share of everything. Each line can take a name you type.
  • 1.16.15Figures that do not add up. An average, a median, a minimum, a maximum, a distinct count or a closing value has a rank and no share. The Total line then writes that aggregate over every row.
  • 1.16.15Clicks. A line's name opens the report on that group, as before. The lines under the table open nothing, since each adds up several groups.

A chart's total

  • 1.16.15Show the total under the chart. Bar, horizontal bar, pie and donut charts have it under How it looks.
  • 1.16.15With a Limit the line says how many are drawn of how many, their total and their share: Top 15 of 240: $1.2M, 62% of the total. Without one it says the total.
  • 1.16.15The format is the chart's own, and follows the Numbers choice.

Section titles

  • 1.16.16A new widget, Section title. Add widget lists it under Page. It is a heading across the page, with a line of text under it if you want one, and it heads the widgets that follow. It has no report and no card around it.
  • 1.16.16It can start a new printed page. Tick Start a new printed page and the heading begins a new sheet on paper and in a PDF.

Pages

  • 1.16.16A dashboard can be split into pages. Each page is a tab with its own widgets. The filters and the Group by belong to the dashboard and apply to every page.
  • 1.16.16Add a page. While you edit, Add a page is beside Settings. The first click makes two pages: the first keeps every widget, the second is new. After that the tabs have Rename, the two arrows that move a page, Remove page and Add page.
  • 1.16.16Move a widget to another page. The widget panel has a Page list. The widget moves to the foot of the page you choose.
  • 1.16.16A removed page loses nothing. Its widgets move to the page before it. With one page left, the dashboard is one without pages again.
  • 1.16.16The address names the page. A link opens on the page it names, and Back from a report returns to the page you clicked on.

Present mode

  • 1.16.16A Present button on every dashboard. It shows one page over the whole window, with no sidebar, no top bar and no editor. A bar at the top names the page, says 2 of 3, and has the two arrows, Filters, Full screen and Exit.
  • 1.16.16Keys. Right arrow and Page Down go to the next page, Left arrow and Page Up to the one before, Home and End to the first and the last. Esc leaves.
  • 1.16.16Larger type. Widget titles, section titles and commentary are a size larger in present mode.
  • 1.16.16Full screen where the browser allows it. Elsewhere present mode fills the window, or the frame.
  • 1.16.16By its address. present=1 opens a dashboard in present mode, also when it is framed in another app, and p= chooses the page.

1.15

Imports learn two things: to bring a report in with or without the subsidiary, and to keep a report's starting filters.

Import

  • Include the subsidiary. A report or dashboard from the HiScale library can now come in two ways from the same file: with a Subsidiary column in its reports and a Subsidiary filter on its dashboards, or without. The import step shows the option when the file supports it, ticked by default. In an account that has no subsidiaries the option is off and greyed out, and the same file imports and runs without them.
  • The preview and the result say which way the file was read, with or without the subsidiary.
  • Starting filters are kept. An imported report lost the filters it was built to open with, so a report meant to open on This month opened on every month. A new report now takes the starting filters of the file. A report that already exists keeps its own, unless the file carries some, in which case the file's replace them.

1.14

Two ways to get fresh figures without waiting for the schedule: a whole dashboard at once, and reports as soon as they are imported.

Dashboards

  • Refresh dashboard. A button beside Numbers and Print rebuilds every report the dashboard is built on, in one click. Anyone who can open the dashboard can use it, and it is also on a dashboard shown in another app.
  • You can see it working. While the reports are rebuilt, the button shows how many are done and how long it has been, and each widget being rebuilt is marked Refreshing while it keeps its previous figures. Each widget redraws with its new figures as soon as its report is done, without reloading the page.
  • You can see when it is done. The page says how many reports were updated, then leaves Updated just now beside the button. If a report failed, the page names it and says its widgets still show the figures from before; the other widgets still update.
  • A busy queue is not a stuck page. If another refresh is already running, the page says the reports will start within fifteen minutes and keeps waiting, with the time counting.
  • A report refreshed in the last two minutes is left alone, and the page names the ones it skipped.

Import

  • Run the imported reports now. The import step has a new option, ticked by default. With it, every imported report starts building as soon as the import finishes, so a new dashboard does not open empty. Untick it to import without running anything: each report then waits for its next scheduled refresh, or for the first person who opens it.

1.13

A report can now be copied in one click.

Reports

  • Make a Copy. An author can copy a report as a new report from the report's own page, from its card or row on All Reports, or from the selection bar with one report selected. The copy is named Copy of and the original name, and opens in the wizard on the Details step so it can be renamed. Before, copying a report meant exporting it and importing the file.
  • A copy starts private. Only the person who made it, and admins, can see it until an audience is added in the wizard. It never inherits who could see the original.
  • A copy is a report of its own. It has its own export key, so Import / Export and links from other reports treat it as a different report. It starts with no data and its first refresh is requested as soon as it is made. Portlets and dashboard widgets stay with the original.

1.12

1.12.0 to 1.12.2

Dashboards get one Group by for all their date charts. Nothing changes on a dashboard until its author turns it on.

1.12.1One fix for horizontal bar charts with many bars.

1.12.2Editing a dashboard is easier to follow: the widget settings are organised and use everyday words. Dashboards themselves look the same, apart from one fix to compact numbers.

Dashboards

  • One Group by for the whole dashboard. A dashboard can now group the dates of several widgets by Year, Quarter, Month or Week from one dropdown beside its filters, instead of widget by widget. In a widget's settings, tick Use the dashboard's Group by: the widget's own choice is greyed out and it follows the dashboard. Leave it unticked and the widget keeps its own grouping, as before. The dropdown appears as soon as one widget is ticked.
  • The author chooses how the dashboard opens, the viewer can change it. The Group by saved with the dashboard is what everyone sees first. A viewer's change lasts for that visit and is carried in the link, so a shared link, a dashboard shown in another app and a printed dashboard all use the same grouping.
  • Week needs dates. A widget grouped on a month column stays on Month when the dashboard is set to Week. A comparison trend has no yearly points, so it shows quarters when the dashboard is set to Year.

Charts

  • 1.12.1A horizontal bar chart with many bars stays readable. When a chart had more bars than its widget could hold, the labels wrapped onto two lines and were drawn over each other. Each bar now has one label on one line. A label too long for its column ends in an ellipsis, and hovering it shows the full name. When the bars need more room than the widget has, the chart scrolls inside the widget and the value axis stays in view at the bottom. Charts with only a few bars look as before.
  • 1.12.1A printed dashboard shows every bar. On paper the same chart grows to the height it needs instead of scrolling, and pushes the widgets below it down.

Editing a dashboard

  • 1.12.2The widget settings are organised into sections. The panel on the right now reads top to bottom as a short list: Report, kind and title, then What it shows, Filter, and How it looks. Each section has a clear heading. How it looks is folded away until you need it. No setting was removed and every widget keeps its settings as they were.
  • 1.12.2Chart choices say what they do. Instead of Category and Value, a bar chart asks what goes Along the bottom and what sets the Bar height. A horizontal bar chart asks what goes Down the side and what sets the Bar length. A line chart has Point height, and a pie or donut has Slices and Slice size. The titles beside a chart are named the same way.
  • 1.12.2Help where it is needed. A small question mark beside a setting explains it in a sentence or two. Hover over it or move to it with the Tab key.
  • 1.12.2Add widget is easy to find. The button is now blue and first in the toolbar, and an empty dashboard offers Add your first widget in the middle of the page.
  • 1.12.2The settings panel scrolls. On a short screen the lower settings could not be reached without zooming the browser out. The panel now scrolls on its own.

Numbers

  • 1.12.2Compact numbers reach every figure of a widget. With Numbers set to Compact, a comparison chart still showed its two totals, the change between them and its hover card in full digits, and a stat tile did the same for its change and its gap to target. They now follow the Numbers choice, like the main figure.

1.11

Nothing changes on screen. This release is about how a report definition gets corrected.

Report updates from HiScale

  • HiScale can send a corrected report or dashboard to your account. Until now a change to a report's query, columns or layout had to be imported by hand under Manage, Import / Export. HiScale can now deliver the same import file to the account directly, for example when a new feature needs a report to be defined differently, or when a report has an error. It goes through the same checks as an import done by hand, replaces a report only when it matches by export key or by name, and never changes who can see a report. The updated report is rebuilt within fifteen minutes.

1.10

1.10.0 to 1.10.2

On screen, dashboards change in five ways: the Print button, the Numbers control for every viewer, stat figures that shrink to fit a narrow tile, pie and donut labels kept inside a narrow tile, and Link for another app in a dashboard's Settings. Nothing else changes on screen, and report pages do not change at all, on screen or on paper.

1.10.1One fix on report pages. Nothing else changes.

1.10.2One fix for links from a report to a NetSuite record. No report needs to be changed or imported again.

Dashboards in other apps

  • Another HSS app can show a dashboard inside its own page. The dashboard opens without the sidebar and top bar, at its export key, so one link works in every account that imported it. The viewer gets the title, the filter bar, Numbers, Print and the widgets, and cannot change the layout. The dashboard's audience and each report's audience decide what they see, as in the app. A widget's report link or a drill-through opens Advanced Reports in a new tab, with the filters carried. An author finds the link in the dashboard's Settings, under Link for another app.
  • A dashboard link can set the filters it opens with. Add ?sf= to a dashboard's address, in the form a dashboard already uses to carry its filters to a report, and the named filters start on those values. The viewer can still change them. It works on the dashboard page in the app as well.
  • Every dashboard gets an export key. A new dashboard gets one when it is created, and one without a key gets it the next time it is saved from its own page (Save dashboard, or Save in Settings). Before, a dashboard built in the app had no key until its first export, so no other app could show it.

Printing

  • Print a dashboard. Print, beside Numbers, prints the dashboard on portrait letter paper: its title, the filters in effect written out, the date and time printed, and every widget. Print first draws the charts again at the width of the page, then opens the print dialog. A table prints every row of the page it shows, with long text wrapped instead of cut short. A statement wider than the page prints in bands of months, each repeating the account names. A widget that fits on one sheet is never split across two, and a longer one breaks between rows with its header repeated. Ctrl+P on a dashboard does the same as Print, except while its layout is being edited. Tried in Chrome and Edge; Safari and Firefox have not been tried yet.

Numbers

  • A stat tile's figure fits its tile. A long figure in a narrow tile, such as US$119,932.00 in a quarter-width tile, was cut off at both edges. The figure now gets smaller until it fits.
  • Every viewer of a dashboard gets the Numbers control. 1.8.0 meant it for viewers, but on a dashboard only authors saw it.

Charts

  • Pie and donut labels stay inside a narrow tile. The percentages at the sides of a pie in a tile as narrow as it is tall were cut off at the edge.

Report pages

  • 1.10.1The Hide ticked button in a column's filter list can be clicked again. In a report's table, opening the filter list under a column heading drew the list partly behind the next column's heading. The right half of the Show ticked / Hide ticked switch was covered, so Hide ticked could not be reached. The open list now sits above the neighbouring headings.

Links to records

  • 1.10.2A column linked to Item now opens the item. Item was in the list of record types a column can link to, but the link never worked: the value showed as plain text. It now opens the item, whatever kind of item it is.
  • 1.10.2A column can link to any transaction. The new record type Transaction (any type) opens an invoice, a bill, a journal or any other transaction from one column. Reports that already used it showed plain text and now link.

1.9

1.9.0 to 1.9.1

Help

  • The in-app guide is the website's help, one set of articles. Help now opens an index of eighteen articles in seven sections, from Getting started to Administration, each with a summary. An article shows its sections under On this page, links to the articles around it, and keeps What's new at the top. The app and the website now read the same files, kept with the product, so the guide in NetSuite and the help on hiscalesolutions.com say the same thing and change together; before, the app had its own shorter guide that could drift from the website.
  • Links in an article stay in the app. A link to another help article opens it in the app; a link to anything else on the website opens a new tab.
  • 1.9.1Plainer wording across the help articles. The eighteen articles now read more plainly, with shorter sentences and the app named as the one doing the work. Their meaning has not changed, and every step, control name, table and example is the same.

1.8

1.8.0 to 1.8.4

Numbers

  • Full or compact, per page and per viewer. A report or dashboard carries a default number style, set with Numbers in the layout editor's toolbar: in full ($9,809,607.48) or compact ($9.81M, 1.5K). A Numbers control at the top of the page lets a viewer choose otherwise, and the choice is kept in their browser for that report or dashboard. The table, every chart, the stat tiles, the totals row and a statement follow.
  • 1.8.3Compact reaches the stat tiles and the charts. The stat tile, the bar and pie hover cards and the line hover card kept reading numbers in full whatever the page said; they now follow the Numbers choice like the table and the statement.
  • 1.8.4Stat tiles render again. 1.8.3 broke a stat tile that shows a comparison line; fixed within minutes, and the harness now stops on a failing check before anything is deployed.

Statement widget

  • Section names stay frozen. A section line was one cell spanning the table, so it scrolled away with the periods while the account names stayed put. It is now a normal line whose first cell is frozen like every other.
  • The frozen column is marked. A border and a soft shadow on its right edge tell the frozen column apart from the periods scrolling beneath it; the Statement section of the panel can switch the mark off.
  • 1.8.2The period headers no longer show over the frozen column. The corner cell of the header now stacks above the month headers, and the month headers above the frozen body cells, so scrolling sideways or down never paints one over another.

Top bar

  • 1.8.1The title keeps its room. While a layout is being edited the viewer's Numbers control steps aside (the editor toolbar has the default), so the report name is not squeezed out of the top bar; the Numbers control names itself in its options instead of a label, and the search box is a little narrower, for the same reason.

1.7

1.7.0 to 1.7.1

Statement widget

  • A report laid out as a financial statement. The new Statement widget puts one row per value of a column (an account) in sections (a section column, in a chosen order), one column per period (by month, quarter or year) and a Total column, with a total line after each section, percent-of lines between two sections (Commissions as a percent of Income) and a last line over everything. Over a postings report with one row per account, section and month it reads as NetSuite's Income Statement, and it follows the report's filters, a subsidiary or a range of months, like every widget. Sections collapse on a click; negatives read in parentheses.

Layout editor

  • 1.7.1The widget panel scrolls sideways. The edit-mode side panel is a little wider and scrolls horizontally as well as vertically, so a long column name in Columns shown, or any control wider than the panel, is reached instead of cut off at the edge.

1.6

Charts

  • Lines with a series, and a dashed future. A line chart grouped on a date or month column runs in date order and takes a Series column: one line per value, purchase orders expected against bills received, one vendor against another. Where the axis runs past today, the part of each line still to come is dashed and a Today marker stands at the current bucket, solid for what happened, dashed for what is expected, the reading the Demand Planning forecast uses. The hover card lists every series at the point.
  • The comparison trend shows what is expected. A bucket after today that already holds rows (an expected receipt date, a due date) keeps its value, drawn dashed past the Today marker instead of being cut off; buckets with nothing stay gaps.

1.5

Catalogue

  • The table view shows each description in full. Under the name, on every row of All Reports and of a category, so what a report is for can be read without opening it. The cards keep their two lines and show the whole text on hover. The Dashboards table does the same.
  • The table view sorts. Click a column heading to sort the reports by name, category, last run, opens, rows or status; click again to reverse, a third time to return to the list's own order.

Dashboards

  • A report opened from a dashboard keeps the dashboard's filters. The report name in a widget's title bar, and every drill-through from a table widget, now carry the dashboard filters that apply to that widget; the report opens with them as column filters, in the target column's own shape (a month on a date column is that month's dates). A drill-through's row values take precedence on a column both carry.
  • New Dashboard in the top bar. On the dashboards pages the top-bar button creates a dashboard, where it used to offer a new report.

Authoring

  • Column order without touching the SQL. The Columns step has an Order column: move a column up or down and the report shows them in that order. The order survives a re-preview of the query; a column new to the query is appended after the ordered ones.

1.4

1.4.0 to 1.4.1

One report, any grain

  • Group by Month, Quarter or Year on one report. A report stored by month no longer needs a "by Year" twin. When its month column offers the switch (set in the wizard's Columns step), the report page shows Group by with Month, Quarter and Year, starting on the grain the author chose; the choice is in the address, so a link can pin it. The rows are rolled up in the browser, and the grid, its filters, the totals row, every widget and the export all read the rolled-up rows. A quarter or a year clicked on a drill-through link narrows the detail to that quarter or year.
  • Each measure rolls up by its rule. In the Columns step every number, currency or percent column has a Roll-up: Sum (the default for numbers and money, and right for a count of things that each belong to one month), Ratio of two columns (a margin percentage is margin over revenue, an on-time rate is on-time lines over lines; the ratio is recomputed from the two sums, never averaged), or Month only, which leaves the value blank at any other grain. A percent column with no rule is Month only, so a wrong number is never shown. A median, a min or max, or a count of things that span months (vendors active, work orders completed) cannot be rolled up from month rows: mark them Month only, or read them from a dashboard over the detail report (below).

Widgets

  • Group by a date, by year, quarter, month or week. A chart or stat tile grouped on a date or month column has a By choice under Group by. Over a detail report, where each row is a line, that is exact for every aggregate.
  • Distinct count and median. Two new aggregates for charts, stat tiles and the totals row. With the bucket above, a dashboard over a detail report gives "distinct vendors per quarter" or "median days to proposal per year" exactly, which no roll-up of a summary can.

Import and widgets

  • 1.4.1An import can archive. An archive list in an import file names reports already in the account, by export key or by exact name, and an in-place import archives them once the rest of the file is in, exactly as Archive on the catalogue does (portlet deployments down, Restore brings it back). The preview lists each one or says why it is skipped: not in this account, already archived, or updated by the same file. A copy import never archives. The file can hold an archive list alone.
  • 1.4.1Widgets read quarter and year keys. A widget with a period filter ("This year", "Last quarter") or a By bucket on the period column of a report grouped by Quarter or Year showed nothing: a quarter key is not a date, and a bare year read as the previous December 31 in US time zones. A month, quarter or year key now reads as the first local day of its period, everywhere a cell is read as a date. A month key was also read as UTC midnight before, so "2026-01" fell into the previous year under a period filter in US zones; fixed by the same change.

1.3

1.3.0 to 1.3.1

Which reports does anyone still use

  • Opens are counted. Each time a report page is opened (a NetSuite dashboard portlet over it counts too), and each time a dashboard is opened, the record keeps the day in a 90-day log. The catalogue's cards and table now say Opened 12 times, last 3 days ago, Not opened in 90 days or Never opened; dashboard cards say the same. Counting starts with this release, so a report with no opens may simply predate it: the list below says since when.
  • Not opened in 90 days. A new entry at the foot of the Reports group, for authors, lists the reports nobody opened in the last 90 days, with the day counting began at the top and an Archive button on each row. It asks first when a dashboard widget points at the report, as the catalogue does. After a month or two this is the answer to "what can we retire".

Import and export

  • A report that was written in the account can be updated by a file. Until now an imported report was recognised only by its export key, which a report created in the account does not have until it is first exported, so a file could only duplicate it. A report with no key is now recognised by its exact name, or by the name the file says it used to have (renamedFrom), and takes the file's key from then on. That is how a report built in the account can be renamed and refiled by an import without leaving a copy behind.

Catalogue

  • 1.3.1Archived and Not opened are filters, not pages. The sidebar entries added in 1.2.0 and 1.3.0 are gone. A Show control beside Cards and Table on All Reports (and on each category) switches between All, Not opened in 90 days and Archived, with a count on each; the search box and the category scope apply to whichever is shown, and Select, Archive and Restore work in place. The Dashboards page has the same control with All and Archived. The choice is in the address, so a category click keeps it.

1.2

1.2.0 to 1.2.1

Archive

  • Reports and dashboards can be archived, and brought back. Until now the only way to retire a report was Delete, which is permanent and takes the report's portlets with it. Archive sits beside Delete in the catalogue's selection mode and on the Dashboards page. An archived report disappears from every list in the app, from the sidebar counts, from Import/Export, from the drill-through and portlet pickers, and it stops refreshing; its definition, its last result and its export key all stay on the record. Archived at the foot of the Reports group and of the Dashboards group lists what has been put away, newest first, each with Restore, which puts it back exactly as it was. Both entries are for authors.
  • A report a dashboard uses asks first. Archiving a report that a dashboard widget points at would leave that widget saying the report is not available, so the catalogue looks that up before archiving and names the dashboards; Archive anyway goes ahead. A report nothing uses archives at once, and archiving is reversible, so there is no other confirmation.
  • A report's NetSuite dashboard portlets come down with it and go back up with it. Archiving deletes the report's portlet deployments (the portlet definitions stay), so a NetSuite dashboard does not keep framing a report nobody can open; Restore recreates them with the report's audience, as saving an audience does.
  • Under the hood it is the record's Inactive box, so ticking Inactive on the record itself in NetSuite has the same effect, and the archive is visible there too.

Widgets

  • 1.2.1Charts and stat tiles show numbers the way the grid does. A chart's hover card, its value axis and a stat tile used to show the raw number: 0.5834413793103448 for an on-time rate the grid shows as 58.34%, and 1234567.891 for money. A widget's figure now takes the format of the column it totals or averages: money as money, a percent column as a percentage, everything else to two decimals, and the value axis in short form (1.4M, 60%). A count stays a whole number. Comparisons and targets on a stat tile follow the same format.
  • 1.2.1A widget's title keeps its words. On a dashboard the report's name sits beside the widget title in the title bar; on a narrow tile it used to squeeze the title down to "L…". The report name now gives way first.

1.1

1.1.0 to 1.1.1

Summary and detail

  • Drill-through from one report to another. A column of a report can now open another report, narrowed to the row that was clicked. A summary such as Spend by Vendor by Month links its amount to the purchase order lines behind it: click the figure for ACME in August and the detail opens showing ACME, August, and nothing else. In the wizard's Columns step, choose Another report (drill-through) where a record type is chosen today, pick the report to open, and list the values to carry across: which column of the detail is narrowed by which column of this row. Columns the two reports share by name are filled in for you.
  • A carried value fits the column it lands on. The same "2026-08" becomes a month pick on a month column and the whole of August on a date column; a year becomes that year; a name becomes a dropdown pick or an exact text match; an empty cell opens the rows where that column is empty. A value the detail has no column for is simply left out.
  • The slice replaces the detail's own starting filters. A detail report that normally opens on "this year" would otherwise hide a row from last year behind a filter the viewer never chose. A bar above the report says what it is showing (Vendor: ACME, Month: 2026-08), and Show everything returns the report to its normal view. Back returns to the summary.
  • A link is only drawn when it can be followed. The server offers the link only to a viewer who may open the detail report; for anyone else the figure is plain text, not a door onto a refusal. The link names its target by the report's export key, not its number, so it survives Import/Export between accounts as it is; a report written in the account gets a key the first time it is offered as a target.
  • 1.1.1A drill-through can carry a fixed value. Until now a link could only hand the detail the values of the row that was clicked. That falls short when a figure stands for a subset the row has no column for: the number of open opportunities, the billed side of freight, the income line of a profit and loss. The detail opened on everything behind the row, and the viewer had to narrow it by hand to find the number they had clicked. A line of the link can now be A fixed value instead of one of this row's columns: Outcome is Open, Side is Billed, Account Type is Income. The clicked figure then equals the total of the rows that open. Writing the first set of summary and detail reports for a customer ran into this in four report families out of nine, which is why it follows 1.1.0 so closely.

Fixes

  • A date written as 2026-09-14 no longer shows as the 13th. A query that produces its own ISO day (TO_CHAR) was read as midnight UTC, which is the evening before in every US time zone: the cell rendered a day early and fell out of a filter on its own date. NetSuite's native dates were never affected. Dates are now read as the local day everywhere: the grid, the column filters and the widgets' periods.
  • Header filters follow a reset. When a report's starting filters change while it is open, the header controls used to put the previous values straight back on top of the new ones. They now start from the new filters.

1.0

1.0.0 to 1.0.2

A brand-new account

  • Accounts without OneWorld, or without Departments, now work. On the first install in an account that is not OneWorld, every page failed with "Could not load the catalogue: An unexpected SuiteScript error has occurred", the Dashboards page failed the same way, and a new report could not be saved. The cause: a report's and a dashboard's audience can name subsidiaries and departments, and NetSuite leaves those two fields out of the install, without saying so, in an account that has no subsidiaries or no Departments feature. Every query that read the missing field then failed. The app now asks the account which of the two it has and works without the ones it lacks, for reading, for saving, and for the audience of a dashboard portlet. If OneWorld or Departments is switched on later, the app keeps working straight away, and the matching audience list appears after the next update of the app is installed.
  • Only the audiences the account has are offered. The audience lists in the report wizard, in the catalogue and in a dashboard's settings no longer show Subsidiaries in an account that is not OneWorld, or Departments where that feature is off. Roles and Employees are always there.
  • The Reports group is always in the sidebar. It used to disappear while the catalogue was loading, when it failed to load, and when there were no reports at all, which on a new install left Dashboards as the only navigation and no way back to the reports. All Reports is now always there.
  • An empty catalogue says what to do next. With no reports yet, an author sees a short explanation, a Create the first report button and a link to the guide, as well as New Report in the top bar. A viewer sees that nothing has been shared with them yet and who to ask.
  • 1.0.1Saving a new report or dashboard checks the account first. 1.0.0 worked out which audience fields an account has (Subsidiaries needs OneWorld, Departments needs its feature) the first time it read a report, but creating one is a save with no read before it, so that save relied on NetSuite's feature switch alone. A save that names a department or subsidiary audience now confirms the field exists before writing it, once per request, and leaves out the one the account does not have. Nothing changes on screen; it closes the last path by which a missing field could stop a save. A full review of the app found no other place that depends on subsidiaries or departments: those four audience fields are the only ones tied to a feature, link columns to a Subsidiary or Department record already fall back to plain text, and the pick lists already come back empty rather than failing.

Version

  • 1.0.0. The first release installed from scratch in an account other than the ones it was built in. From here a fix raises the third number, a feature the second.

Refreshing

  • 1.0.2Two refreshes of the same report no longer trip over each other. Reports refresh on a schedule that ticks every 15 minutes, and the Refresh button starts a run of its own. When the two landed on the same report at the same time, both ran it: the first to finish stored the result, and the second, finding the run already finished, marked the report Failed with "No run plan on the record to assemble the chunks with", although the result underneath was complete and correct. It showed up right after an import, when every new report is waiting for its first run and the person importing also clicks Refresh. Now a run claims the report before it starts, a second run that finds the report claimed leaves it alone, and a run only ever marks a report it claimed itself, so it can no longer fail, or remove the files of, a run that is not its own. A report whose run was cut short (the account restarted mid-run) is picked up again after an hour, as before. A report already showing this message is cleared by its next run: click Refresh once, or wait for its schedule.

0.7

Widgets

  • Comparison trend. A new chart that lays two periods of one measure over each other on a single time axis and a single value axis: the period being reported as a solid line, the period it is compared with as a dashed grey line behind it, lined up by position, so the third month sits over the third month. Choose the date column, the value to total, the period (this month, this quarter, this year, last 30 days and the rest, or custom dates), what to compare it with (the period right before, the same period a year earlier, or custom dates) and the points (day, week, month, quarter, or automatic). Months still to come are left as a gap rather than drawn as zero. The legend names both periods with their totals and the change; while the current period is still running, both totals cover only the elapsed part, so a year to date is never measured against a whole prior year. Hovering a point shows both values and the change between them. It works in report layouts, dashboards and NetSuite portlets, follows the table's filters and a dashboard's filter bar like every other widget, and takes the same extra filter as the other charts. It follows the trend charts on the Demand Planning forecast page: solid against dashed, one axis, gaps not zeros.

0.6

0.6.0 to 0.6.1

Dashboards

  • Categories for dashboards. Every category now says what it is for: Reports, Dashboards or both, two tick boxes under Configuration, Categories. A category created before the boxes existed counts as a report category. The report wizard offers only report categories; a dashboard's settings and the New Dashboard form offer only dashboard categories. The sidebar's Dashboards group lists one entry per category, with counts, plus Uncategorized.
  • A list built for choosing. The Dashboards page shows each dashboard's description under its name, as cards or a table (the choice is remembered per user), with its category, owner and widget count, so a viewer can pick the right one. New Dashboard asks for a name, a description and a category. The description is also edited under Settings.
  • Audience from the list, and selection. An author sees each dashboard's audience as a chip and changes it in place. Select in the header turns on selection mode (click, Ctrl+click, Shift+click for a range) with Set Audience and Delete for the selection, the same tools the report catalogue has.

Import and export

  • Dashboards travel. The Export tab lists dashboards under the reports. A picked dashboard travels with the reports it uses unless "Include the reports each dashboard uses" is switched off, for a target account that already holds them. Each dashboard carries a stable export key, like a report, so a later import updates it rather than duplicating it; "Add as a new copy" copies it.
  • An import checks a dashboard's reports first. Every report a dashboard's widgets read must be either in the file or already in the account (matched by export key). If one is in neither, the preview refuses the whole file and names the dashboard and the missing report, before anything is written. A dashboard imported into a category that does not exist gets it created, marked for dashboards.

Navigation

  • 0.6.1The Reports and Dashboards groups fold away. Each heading in the sidebar is now a button with a chevron: click it to hide that group's categories, click again to show them. A folded group shows how many entries it holds, and the choice is remembered per user, so a long list of report categories no longer pushes Dashboards off the screen.

Configuration

  • 0.6.1The Used for boxes save as they are ticked. Ticking Reports or Dashboards on a category saves straight away and says Saved beside the boxes; the row's Save button is only for the name, icon and description. A half-typed rename in the same row is not committed by ticking a box. Unticking both puts Reports back, since a category for nothing is not a state the app uses.

0.5

Dashboards

  • Pages of widgets from several reports. A new Dashboards entry in the sidebar lists the dashboards you can open. An author creates one, then adds tables, charts, stat tiles and notes, each over any report they can open, on the same drag-and-drop grid a report layout uses. A dashboard may hold several tables. Each widget shows its report's cached result and refreshes with it; a widget over a report you cannot open shows a notice instead of data.
  • Shared filters across widgets. A dashboard has its own filter bar. Each filter is one control (text, dropdown, number, date, month or yes/no) that the author routes to a chosen column of each widget, so two reports that name the same field differently can still be filtered together. A filter can carry a starting value the dashboard opens with, and viewers can change or clear it.
  • Dashboard audience. Settings on a dashboard set its name, description and audience: Public, or roles, employees, departments and subsidiaries, the same model a report has. Every widget still follows its own report's audience on top of that.
  • Open report from a widget. Each dashboard widget's title bar names its report as a link to the report page, the same Open report a NetSuite portlet has.
  • A warning when a filter's targets disagree. The filters editor says so when a filter is routed to columns that look like different fields (Brand on one widget, Vendor on another), or to a column whose type the filter cannot read (a month filter on a text column). Two columns that link to the same record type are trusted whatever they are called. It is a question, not a refusal: the columns come from each report's SQL, so the author decides.
  • Fixes. A widget added to a dashboard before its first save showed "not available to you" until the dashboard was saved; its report is now fetched straight away. The filter bar's dropdown and month pickers opened underneath the first row of widgets.

Filters

  • Month columns. A column grouped by month ("2026-03") can be given the new month format in the Columns step. Its filter then offers Pick months (a checklist of the months present, grouped by year, with a tick per whole year), Whole year, Month range, relative ranges (this year, last quarter, last 12 months and the rest), From month and Up to month, instead of a text box. The Filters step offers the same operators for a starting filter, and the widget panel's period filter accepts a month column.
  • Dropdowns for long lists. A dropdown column with thousands of distinct values, a vendor or customer column, is still a dropdown: the picker shows the ticked values and the first three hundred matches, and the search box reaches the rest. The text fallback now applies only past twenty thousand values.
  • Table filters narrow the other widgets. On a report page, the filters set in the table's header also narrow every chart and stat tile over the same report, so the widgets around a table follow what the viewer filtered it to.

Layout editor

  • A new widget lands at the top. Adding a widget places it at the top-left of the grid and moves everything else down, where the author is looking, instead of under the last row of a table that may be a screen away.
  • No gap under a short table. A table sized for a hundred rows but showing twenty-two no longer leaves the widgets under it a screen away: they move up to sit under the rows actually shown, and move down again when the table grows.
  • A widget list for selecting. Edit mode lists every widget on the page in the side panel; clicking one selects it and scrolls it into view, and the selected widget paints above any widget it overlaps, so one that is hidden under another can still be reached and moved.

Widgets

  • Stat tiles say which periods they compare. The primary number is captioned with the period it covers, such as This year (Jan 1 to Sep 16, 2026), and the comparison line names its period, such as Last year (Jan 1 to Dec 31, 2025), so "1,004 vs 1,335" reads without opening the widget panel.
  • Chart legends wrap. A pie or donut legend with long category names wraps onto several lines inside the widget instead of running past its edge.

Fixes

  • Dashboard portlets for everyone the report is visible to. A dashboard portlet showed the chooser instead of its pinned widget to anyone but the administrator who built it: the portlet script looked up the definition record as the viewing user, most roles cannot read that record type, and the failed lookup fell back to the chooser. The pinned widget is now read from the deployment parameter every role can see. Refreshing a deployment's audience after a report is made public now writes through a full record save, since not every audience field accepts a partial update.

0.4

0.4.0 to 0.4.1

Filters step

  • Operators per column type. Each column shows its type, and the Filter column is now a list of operators suited to it. Text: Contains, Does not contain, Is, Is not, Starts with, Ends with, Is any of, Is none of, Is empty, Is not empty. Numbers: Between, Equals, Does not equal, Greater than, At least, Less than, At most, Is empty, Is not empty. Dates: Date range, Relative, On or after, On or before, Is empty, Is not empty. Dropdown columns: Is any of, Is none of, Is empty, Is not empty. Yes / No columns: Is Yes, Is No.
  • The Default cell shows only what the operator needs. Two dates for a range, the relative range list for Relative, one date for On or after.
  • Several values, with OR and AND spelled out. Text operators take one box per value, with "+ Add value", and a switch between "Any of these (OR)" and "All of these (AND)". Each box after the first is labelled OR or AND, and a sentence under the filter says in words what it does.
  • Pick values from the results. Is any of and Is none of show a checklist of the values actually present in the report's stored result, with how many rows carry each, a search box, and Reload values for after the report was refreshed. A value can also be added by hand, and a chosen value that has since disappeared from the results stays listed and marked.

Grid filters

  • The same operators in the report view. Number columns have an operator picker, date columns add On or after, On or before, Is empty and Is not empty, dropdown columns can hide the ticked values instead of showing them, and Yes / No columns have their own All / Yes / No filter. Every default set in the wizard can be seen and changed from the grid.
  • Text filters take a short syntax. a | b keeps either, a & b needs both, !a excludes, =a is exact, a* starts with, *a ends with, and = alone is empty. Hover over the box to see it. A text default from the wizard appears written in this syntax.

Editing

  • One Save when editing. The Save at the top right saves from any step, and step 5 no longer has a second Save Changes button. Creating a new report still finishes with Create Report on step 5.

Fixes

  • Export dropped default filters. A report's default filters now travel in an export and come back on import.

Filters

  • 0.4.1Help beside a text filter while you type. In the report grid, a small panel to the right of a text filter lists the syntax (a | b, a & b, !a, =a, a*, *a and the rest) while the box has focus. In the Filters step, the panel beside a value box says what the operator does, how several values combine, how the filter will read in the report's filter box, and what viewers can type there. The panel stays on the right, narrowing if space is tight, and closes on Escape or when you leave the box.

0.3

0.3.0 to 0.3.6

Refresh

  • No row limit. A refresh now reads the whole result, however large. Rows stream straight into files of about 9 MB each, and a run that needs more governance than one execution allows saves its progress on the report record and continues in the next execution, with the previous result still readable until the new one is complete. The row cap and total byte cap in Configuration are now optional safety valves, off by default.
  • Result files are listed on the report record. The new Result Files field holds a manifest of every file the result occupies, its row count and size, plus the run facts and the partial-refresh watermark. The Result File field keeps pointing at the first file. Files are named per run, so a new run never overwrites the one being read; the old files are removed once the new run is complete.
  • Partial refresh merges file by file. The changed rows are matched into each stored file in turn and the additions appended, so a partial refresh no longer needs the whole result in memory. A delta too large for one execution falls back to a full run, which can continue across executions.
  • 0.3.1Every stage does its part. The map stage now counts the query's rows, writes the run's plan on the record and hands out one reduce key per 25,000 rows. Each reduce key reads only its rows and writes its own files, so chunks are independent and can run side by side up to the deployment's concurrency limit. Summarize stitches the chunks into the manifest and stamps the record. There is no row limit and no run ever needs a second execution.
  • 0.3.1The read form is remembered. Which way a statement can be paged (ROWNUM window, OFFSET/FETCH, or NetSuite's paged API) is probed once with a one-row query and stored with the result, so later runs do not try a form that will be refused. The probe no longer writes an error entry to the execution log when a form is refused.
  • 0.3.1A run that died is cleaned up. Files written by a run that never finished are removed at the next run, and a failed run's files are removed by the failure itself, so only the readable result stays on disk.

Viewing

  • Reports open part by part. The browser fetches the result one file at a time and shows how far it has got. Dashboard portlets load the same way.
  • Default filters. A new Filters step in the wizard, between Columns and Details, sets the filters a report opens with: contains text, a number range, a date range, or a list of values for a dropdown column. They run in the browser after the query, and viewers can change or clear them.
  • 0.3.3A proper loading state. A report loads behind a progress bar with the percentage, rows received and file count, instead of a line of text.
  • 0.3.3Shorter row-cap notice. A result cut by the optional row cap now says "Limited to the first N rows by the configured row cap."

Housekeeping

  • Deleting a report now deletes its result files.
  • A stored row cap left over from before (the seeded 50,000, or a 250,000 set when that was the documented maximum) is retired automatically on the next refresh, so no account keeps a cap nobody chose. A different value is kept.
  • 0.3.3Result file names are zero-padded (c0001.p01, part001) so the File Cabinet lists them in row order.

Filters

  • 0.3.1Relative date ranges. The grid's date filters and the wizard's Filters step both offer This month, Last 30 days, This quarter, Year to date and the rest. A relative range stored as a default is worked out each time the report opens; choosing one in the grid fills the dates, and typing a date makes it a fixed range again.

Fixes

  • 0.3.2A large result was read as the first 5,000 rows over and over. NetSuite silently ignores OFFSET/FETCH on some statements and returns the first rows for every offset, so a 26,272-row report was stored as 250,000 duplicated rows. The refresh now proves a read form seeks before using it (rows at offset 0 and offset 1 must line up and differ), falls back to NetSuite's paged read when no window form seeks, and stops a read that returns the same window twice instead of looping until its governance runs out. A statement read through the paged API is read in one piece, since two paged reads of an unordered statement are not guaranteed the same order.
  • 0.3.2Scheduled refreshes ran hours late. The due check compared the Last Run date, stored in the running user's time zone, with the server clock, so an hourly report refreshed about every four hours. It now compares the epoch stamp the refresh writes, which has no time zone.
  • 0.3.4Run duration counted the whole queue. A report's duration was measured from its plan to the end of the job, so with fifty reports in one run each one showed the queue's total. It is now the report's own read-and-write time.
  • 0.3.5Default filters did not save on reports whose column names have spaces. A column named with a quoted alias, such as "Transaction Date", carries a space in its key, and the save kept only keys made of letters, digits and underscores. Every default filter on such a report was dropped without a message. Any column key is accepted now.
  • 0.3.5Saved changes did not show until the page was reloaded. After Save, the edit wizard, the report view and any dashboard portlet kept what they had loaded before. They now refetch the report, so default filters and column changes appear straight away. The grid also picks up new default filters without a reload.
  • 0.3.5Partial refresh fell back to a full refresh on the same reports. A unique identifier or last-modified column with a space in its name was treated as missing. It is accepted now, and the refresh writes it back into the query exactly as the query spells it.

Editing

  • 0.3.6Cancel in the report editor. Editing a report now has a Cancel button beside Save that returns to the report view without saving. It asks first only when something was changed.
  • 0.3.6Cancel in the layout editor asks before discarding. Cancel beside Save layout still returns to the report view, and now asks first when the layout was changed.

0.2

0.2.0 to 0.2.3

In the app

  • What's new page. These notes are bundled with every build and shown under Help, so a user can see what changed without leaving NetSuite. The running version is expanded, older ones are collapsed.
  • Version badge. The sidebar shows the running version under Manage. It is highlighted until What's new has been opened on that version, so an upgrade is noticed.
  • Help reorganised into tabs. Using reports, Building reports, Dashboards and Administration, each covering what shipped since the first release: partial refresh, the audience pickers, record types, dashboard portlets, the catalogue selection tools and the table changes.

Navigation

  • 0.2.1Back to NetSuite. A link at the foot of the sidebar, above Manage, returns to the NetSuite home dashboard. It also works from inside a dashboard portlet.

Fixes

  • 0.2.1A large report failed on refresh with "Invalid or unsupported search" while reading rows past 0. Results beyond 5,000 rows are read in windows, and the first window form is refused when a quoted column alias contains punctuation, such as "Margin %" or "Memo/Description". The refresh now tries a second window form that runs the statement as written, then NetSuite's paged read, and only reports an error when none of them returns rows. The log records which form was used.
  • 0.2.2The Back to NetSuite link was laid out wrong. Its arrow icon took the label's space and pushed the text to the edge. Icons in the sidebar keep their own width now.

Editing

  • 0.2.2View in NetSuite. The edit wizard's header has a button that opens the report's own NetSuite record in a new tab.
  • 0.2.2Result file on the Details step. The Details step lists the stored result file, its size, a link to its File Cabinet record (view, replace or delete) and a direct download. A result split across several files lists each part.

Refresh

  • 0.2.2Large results no longer fail on size. A result larger than one File Cabinet file can hold (limits.max_bytes, 9 MB by default) is now split by rows across part files and read back as one result. The refresh only refuses a result over the new total cap, limits.max_total_bytes (60 MB by default), which an administrator can change in Configuration.

Configuration

  • 0.2.3Limits show their allowed range. Every numeric setting in Configuration states its allowed range under the field, and the field refuses a value outside it before Save. The server refuses one too, and a stored value outside the range is clamped when read. The row cap allows up to 250,000 rows, the per-file byte cap up to 10,000,000 bytes (NetSuite's limit for one file), and the total byte cap up to 100,000,000 bytes. Each setting's note says where its ceiling comes from.

0.1

0.1.0 to 0.1.12

First release: stored SuiteQL reports refreshed on a schedule, the authoring wizard, the catalogue as cards or a table, widget layouts with charts, stat tiles and totals, categories, configuration, and export and import between accounts.

Fixes

  • 0.1.1A long query could not be saved. The SQL, column, layout and parameter fields were capped at 4,000 characters; they now hold up to a million.
  • 0.1.5Some reports failed on refresh with "Invalid or unsupported search", or refreshed to zero rows, although they previewed fine. The refresh used NetSuite's paged query, which rewrites a statement before running it and rejects or empties some queries the ordinary query accepts. The refresh now runs the ordinary query first and only pages past 5,000 rows.
  • 0.1.5Rows showed above the table header when scrolling the catalogue. The header pins flush to the top now.
  • 0.1.11A report failed with "Only a single statement is allowed" although its query was valid. The stored SQL had been HTML-escaped by the field type change in 0.1.1, so ">" was stored as ">" and the entity's semicolon was read as a second statement. Stored SQL is now decoded before it is checked or run, and shows clean in the wizard.

Authoring

  • 0.1.2Audience pickers. Roles, employees, departments and subsidiaries are searchable lists with removable chips. Internal ids no longer have to be looked up and typed.
  • 0.1.2Link record types are a dropdown, fed by a Record Types tab under Manage, where a custom record can be given its own URL template so its links resolve.
  • 0.1.2New category from the wizard, for admins, without leaving the Details step.
  • 0.1.2Edit Layout and Edit Report switch between the two editors with one click each way.
  • 0.1.2Dragging a widget while scrolling. A widget being dragged now follows the pointer when the mouse wheel scrolls the page; it used to stay behind.

Catalogue

  • 0.1.2Uncategorized appears in the sidebar when any report has no category, so those reports are reachable.
  • 0.1.2The icon picker in Categories no longer squeezes into its table cell.
  • 0.1.12Audience shown and edited in place. Every card and table row shows who can see the report (Public, or counts of roles, employees, departments and subsidiaries). Clicking it opens an editor, so an audience can be changed without opening the wizard.
  • 0.1.12Select several reports. A Select button turns on selection mode: click or Ctrl+click toggles, Shift+click selects a range, and a header checkbox selects every report you may edit. A bar above the list refreshes them all, sets one audience on all of them, or deletes them (with a confirmation that Shift+click skips). Reports you cannot edit are greyed out. This exists so a large batch of newly imported reports can be published in one go.
  • 0.1.12Deleting a report removes its dashboard portlets too. They used to be left behind, pointing at a report that no longer existed.

Wording

  • 0.1.2Em-dashes removed throughout the app.

Refresh

  • 0.1.3Partial refresh. For a large report where little changes between runs, the refresh can fetch only rows added or changed since the last run and merge them into the existing result. Set it on the Details step by naming a unique identifier column and a last-modified column. The report page gains a Full Refresh button. Rows deleted at the source are not removed until a full refresh, and the wizard says so.
  • 0.1.3The refresh mode travels with a report through export and import.
  • 0.1.6Traceable runs. A refresh failure used to show only in the app. Every step now writes an audit line titled "AR refresh <id>: <step>", from the definition loaded to the file stored, with row counts and timings, so a failed run can be followed in the execution log.

Navigation

  • 0.1.4A menu tab. "HiScale Advanced Reports" appears in the NetSuite menu bar and opens the app, so it is reachable without a bookmark.

Dashboards

  • 0.1.7Report widgets on NetSuite dashboards. Any widget a layout can show (table, bar, horizontal bar, line, pie, donut, stat tile, text note) can be a dashboard portlet. Define it under Manage, Portlets: pick the report and the widget, and configure it with the same side panel as the layout editor, with a live preview. Top N, sorting and filters are the widget's own settings, so "top 5 customers by invoiced" needs nothing extra.
  • 0.1.8Choose the widget inside the portlet. A portlet added to a dashboard with nothing pinned on it lists every widget the user may see and remembers the choice, so nobody has to edit a script deployment. A Change link switches later.
  • 0.1.8Each portlet remembers its own choice. Two portlets on one dashboard used to share the last choice; each now has its own.
  • 0.1.9One dashboard entry per widget. Saving a portlet definition creates a portlet deployment named "Advanced Report - <name>", so Set Up on a dashboard lists each widget by its own name and it loads at once. Renaming or deleting the definition follows through.
  • 0.1.9Same audience as the report. A portlet deployment is audienced exactly like its report: All Roles when public, otherwise the report's roles, employees, departments and subsidiaries plus the owner. It re-syncs whenever the report's audience changes, so a dashboard can never show a report to someone the report itself would refuse.
  • 0.1.9Portlets travel with their reports in export and import, and their dashboard entries are recreated on import.

Import and export

  • 0.1.9Two tabs, a filter, and ids. Export and Import are separate tabs. The export list filters by name or category, and ids show beside names, including in the overwrite picker, so two reports with the same name can be told apart.

Tables

  • 0.1.10Headers stay put. A table taller than the screen now scrolls inside its box with the header pinned, instead of the whole page scrolling the header away.
  • 0.1.10No blank space under a short page. A table showing 24 rows at 100 per page was as tall as 100 rows. The box is now sized to the rows actually shown.
  • 0.1.10Row numbers, as an option per table widget, for referring to a line in a discussion.
  • 0.1.10A second horizontal scrollbar above wide tables, in step with the one at the bottom, for readers who do not know Shift plus mouse wheel. Both scrollbars are slimmer and rounded.