Repository navigation
Releases
Releases · mageaustralia/civilkit-calcs
26.11.1
[26.11.1] - 2026-11-06
Fixed
- Nested and duplicate
#def- A bad#definside a#defblock now keeps its lines inside the outer macro instead of passing them through as normal code, and a duplicate macro name is reported on its own#defline. - Errors in
#UI- Invalid JSON in a#UIline reports one error and is no longer also parsed as math, and an oversized#UIdatagrid reports its error without stopping the run. - Errors in loops and the error limit - Each line now reports a given error once instead of once per loop pass, and the "Too many errors" limit trips at 40 different errors or 1000 occurrences, so a long loop with one bad line no longer stops the run.
- Unclosed
#ifand loops - An unclosed#ifor loop is reported on the line that opened it, and both are reported when both are open. - Smaller error fixes -
#formatwith a bad format now shows the format instead of{0}, the message "Units cannot be raised to complex power" is spelled correctly, and==inside a function call is no longer read as a keyword argument. - Angle operator and phase follow the angle units - The phasor operator reads a unitless angle in the current angle units (
#deg,#rad,#gra) instead of always radians, and works inside$Sum,$Repeatand user functions instead of failing.phasealso follows the angle units andReturnAngleUnitsin real and complex mode. - High precision vectors with implicit zeros - Inverse trigonometric functions on high precision vectors with implicit zeros take the unit of the zero elements from the function result rather than its argument.
- Green and orange ribbon icons on the dark theme - The Checkbox, Input form, Dropdown, Entry and Warning icons were filled as brightly as their check or exclamation mark, so the mark all but disappeared. On the dark theme they now have a dark tinted fill under a bright outline, like the light theme's pale fill under a deep one.
26.10.23
[26.10.23] - 2026-11-06
Fixed
- A Python chart prints and exports as a picture - A Plotly chart from a Python block, such as the 3D plate deflection surface, was left out of Print PDF, Word and Excel and replaced by a note. The page now keeps a still picture of each chart it draws (light colours, without menus and sliders, at the view you left it in), and print, Word and Excel carry it. A chart that was never drawn still shows the note.
26.10.22
[26.10.22] - 2026-11-06
Changed
- Ribbon icons redrawn - The whole ribbon icon set is redrawn in the CivilKit icon style shared with CAD: one grid and stroke weight, rounded ends, an accent colour per icon, and light and dark palettes. Icon names are unchanged, and decorative icons are hidden from screen readers (buttons keep their labels).
- Import worksheet says the file is not uploaded - The button's tooltip now states that a
.xmcdor.mcdxfile is converted in the browser and never uploaded; the README opens with a short note for people coming from other calculation tools.
26.10.21
[26.10.21] - 2026-11-03
Added
- Click to enlarge on What's new clips and guide videos - Click or tap a clip on the What's new page, press Enter or Space on it, or use the Enlarge button on a guide video, to open it in a lightbox at the clip's own pixel size (smaller only to fit the window, full width on a phone) with the video controls, the title and caption. Esc, a click outside or the Close button dismisses it; the arrow keys (and on-screen buttons) step to the previous or next clip; focus is kept inside and returned to the clip; a clip stays paused until played when the system asks for reduced motion. One shared script and stylesheet (
/calcs/zoom/), no dependencies.
Fixed
- A macro whose parameter list is not closed no longer hangs -
#def m$(a$with no closing bracket looped forever; it now reports "Brackets not closed" on that line and the rest of the sheet carries on. asec(0)andacsc(0)carry the angle unit - With angle units returned they give+∞in the current angle unit instead of a bare+∞, like the other inverse trigonometric functions.- Redefining a built-in function names it -
sin(x) = xsays"sin" is a built-in function and cannot be redefinedinstead of a general message about the assignment. - Phone ribbon fits its buttons - On a phone a ribbon tab of big buttons, such as Input/Output, no longer leaves an empty band above the group name; the panel now takes the height of its tallest group.
26.10.20
[26.10.20] - 2026-10-31
Added
- Import spreadsheet - An Import spreadsheet button (Document tab, and the File menu) opens an Excel or CSV file in a panel with a tab for each sheet and a grid of its values. Pick a cell or a range and add it to the sheet as an input, a value, a table or one quantity per labelled row, with the name and unit guessed from the labels and editable first. The values are copied into plain sheet lines with a small source comment; formulas are not recalculated and nothing stays linked to the file.
- Base units -
-> base(| basein Calcpad) shows a result in SI base units:M: F * L -> basegives10000 kg·m²/s². A value without a unit, or with a temperature or an angle in it, is left as it is. - Quick reference - A printable page of the sheet language at /calcs/reference/: every line kind and input, the functions, constants, operators and units of the engine, and a Print button.
- Page view - A Pages button in the results bar (Preview and Report) lays the results out on sheets of the PDF's paper size, with the margins drawn, the manual page breaks honoured, a "Page 2 of 5" label on each sheet and the automatic page breaks shown, so a long report can be checked without printing it. It follows the PDF settings (and a document's own), is drawn in the light theme as it prints, fits a narrow window, and is screen only.
- Input form values in the source - Input mode gets Update defaults (writes the entered values into the defaults of their input lines: numbers, the
*of a drop-down or radio group, a checkbox, with a slider keeping its bounds), Reset (drops the entered values), and a faint← form: 8mark at the end of an input line whose entered value differs from its default, so the source never silently disagrees with the report. A new setting, Keep Input Form Values in the Source (Settings, Editor), writes each value into its line as it is entered. Off by default. - What's new clips - Five more clips on the What's new page for this release: Page view, input form values in the source, Import spreadsheet, base units and the quick reference.
Changed
- PDF paper defaults to A4 outside North America - Until a paper size is chosen in Settings (Export tab), the PDF, Print and Page view use Letter when the browser's region is the United States, Canada, Mexico, the Philippines, Chile, Colombia, Venezuela or Costa Rica, and A4 everywhere else. A size already saved in Settings is kept.
Fixed
- Base units in the editor - A line ending in
-> basewas underlined with "Undefined unit: 'base'" by the editor's checker although the result was right; it is no longer flagged.
26.10.19
[26.10.19] - 2026-10-30
Added
- Input rows line up - In Input mode, a run of consecutive input lines now shares its columns: the names (right aligned, so the equals signs meet), the number boxes and drop-downs, the sliders, the units and the notes start at the same place on every row, whatever the length of the name. A text line, a heading or a blank line starts a new run, a single row is left as it was, a very long name is held to 40% of the row and wraps, and on a phone the rows stay lined up without sideways scrolling. Screen only: the report, print and the Word, Excel and PDF exports are unchanged, and nothing about what the controls send back changed.
- Docked inputs - In Input mode, Dock inputs keeps every input of the sheet in a panel beside or above the results while they scroll, so a plot redraws in view as you drag its slider. It is on by default for a sheet with a slider; see Docked inputs in the Templates chapter of the guide.
- Settings gear - A gear at the right end of the top strip opens Settings from any tab, on a phone too; the ribbon icon for Settings is now a cog.
- Interactive panels guide - A new guide chapter shows how to build a Python panel whose sliders redraw a chart, a 3D surface or a table, with its limits and a short summary written for AI assistants.
- Settings tabs - The Settings dialog is split into General, Calculation, Editor, Export and Advanced tabs, and its search box still looks through every tab at once. It reopens on the tab last used, and Calculation settings and Header and footer open their own tab.
- Plot legends - A curve on a sheet
plotline takes a name withas "name"(plot sin(x) as "sine", cos(x) as "cosine" for x in 0..6), and the plot then shows a legend with a colour swatch per curve, in print, PDF and Word too; the Excel chart uses the names for its series. - Solve, integral and slope lines - A sheet quantity can be
x0: solve f(x) = 4 for x in 0..5,A: integral of f(x) for x in 0..3ork: slope of f(x) at x = 3, with units and-> unitas on any quantity line; the Functions palette inserts them in a sheet. - More Python functions - Python blocks gain
math.hypot,math.prod,math.fsumand a few more, andnumpy.hypot,arctan2,meshgrid,outer,interp,polyfitandpolyval. - What's new clips - Eight more clips on the What's new page: three under 26.10.18 (the number format, the interface language and interactive panels) and five for this release (docked inputs, input rows lining up, plot legends with solve, integral and slope lines, the new Python functions, and the Settings tabs).
Fixed
- Semicolons in sheet functions - A sheet definition such as
f(x; y): x + ywas read as plain text, and a call such asmax(3; 7)was an error; inside brackets;now works the same as a comma. - Long Python lists - A list of numbers written out in a Python block stopped at about 2,000 elements with
pystack exhausted; it now takes 16,000, and a longer one is refused with a note on how to build the list instead.
26.10.18
[26.10.18] - 2026-10-30
Added
- Interface language - Settings has a new Language section that switches the ribbon, the Settings dialog, About, Keyboard shortcuts and the block menu between English, Spanish, Portuguese, French, German and Chinese (Simplified), and
?lang=fr(alsoes-ES,pt-BR,deandzh-Hans) picks a language for one page view. A browser set to one of these languages is asked once whether to switch, and either answer is remembered. The translations are machine drafts that no native speaker has reviewed yet, anything not yet translated shows in English, and worksheets, units and formulas are never translated. - Engine messages in your language - A calculation error can be shown in the interface language where its message has been translated; the others stay English.
- Number format - Settings > Number format shows results and number boxes in your language's style: Automatic (from the browser language), Point (1,234.5), Comma (1.234,5) or Space and comma (1 234,5), with digit groups as an option. Number boxes accept both 6,5 and 6.5. The worksheet, saved input values and the engine stay with the decimal point, so files read the same everywhere;
?numfmt=commatries a format on one page. See the number format chapter of the guide. - Interactive panels - A Python block can define a panel whose sliders and drop-downs re-run only one function and redraw its chart and table in place, without recalculating the sheet; three sheets in the Panels group of Samples show it.
- version.json - Every build writes
/calcs/version.jsonwith its version, so pages that show the current release can read it instead of a number typed by hand.
Fixed
- Apostrophes in prose - A sheet line of plain text, a heading or a note after
|that contained an apostrophe (the sheet's own) showed an error such asInvalid syntax: "s own"; apostrophes are now written so they display as typed.
26.10.17
[26.10.17] - 2026-10-30
Added
- Embeddable calculators - Adding
?embed=1&sample=<id>to the app address shows one sample as a compact input form with live results, ready to put in an iframe. It stores nothing, sends nothing and links back to the full app. - Embed page and loader - A new page at
/calcs/embed/gives a copy and paste snippet for each calculator, and/calcs/embed.jsplaces the frames and fits their height. - Embed messages - A host page can set inputs and read results with
postMessage, and every value it sends is checked against the sheet's inputs and slider bounds. - Try it on the calculator pages - Each landing page with a sample has a live, lazily loaded sheet to try.
- MCP server - A public, read-only MCP server for AI assistants at
https://civilkit.io/mcp(its own Worker inmcp/) runs sheets and Calcpad worksheets in the app's engine, checks hand calculations, converts units and searches the guide, functions and samples. It is stateless and rate limited, and nothing is stored. - MCP guide chapter - A new chapter explains how to add the server to Claude Code and other clients, with its tools, limits and privacy; llms.txt lists the server and its tools.
- What's new clips - Three more clips on the What's new page: quick convert to a formula, sorting a table by a column, and the embed view.
Fixed
- What's new clips in Chrome - Five clips were encoded as full range video, which Chrome could not decode, so they never played. All 28 clips are now limited range, and a tap or hover on a poster starts a clip on touch screens and with a mouse.
26.10.16
Added
- Calculators and guides hub - A new page at
/calcs/learn/lists every landing page, grouped as calculators, alternatives and guides, and a Calculators and guides button on the Resources tab opens it. - Guide pages for search - Every guide page has its own description, a canonical address without
.html, sharing tags and a single h1. Build the guide withbook/build.sh. - App page details - The app page has a description, a canonical address, sharing tags, structured data and a short summary with links for browsers without JavaScript.
- Eleven new landing pages - Calculators for a cantilever, column buckling, moment and shear diagrams, principal stresses, principal axes, shear frame frequencies, gable frame thrust and concrete strength gain, and guides to the beam deflection formula, units and export. Each opens its sheet in the app, and every quoted number comes from the engine.
- Guide links - The guide introduction has a Try it note, and the chapters on templates, plots, units, importing and exporting link the matching calculator pages.
Changed
- Guide addresses - The sitemap, llms.txt and every generated link to the guide use the extensionless addresses the site serves.
- Breadcrumbs - Landing pages, the guide and What's new link CivilKit Calcs to the product page, and breadcrumbs read CivilKit, Calcs, Calculators and guides, then the page.
- Two retitled pages - The worksheet page now covers running
.cpdworksheets offline in the browser, and the converter page covers opening.xmcdand.mcdxfiles.
26.10.15
Added
- Diagram gallery - The Diagrams chapter of the guide now has a small example to copy for every kind of Mermaid diagram the app draws, from flow charts and Gantt charts to Sankey, radar and railroad diagrams, and lists the one kind that is not available (ZenUML).
- Diagrams menu - The ribbon tab Plots is now Plots & Diagrams, with a Diagrams menu that inserts a short starter diagram of each common engineering kind, ready to edit, so no Mermaid syntax is needed to begin.
- Diagram samples - Twelve new sample sheets pair a diagram with the numbers behind it: state, sequence, Gantt, pie, treemap, quadrant, XY, Sankey, mind map, requirement, timeline and class diagrams.
- Gable frame thrust sample - A worked sheet for the horizontal thrust of a pitched roof frame: pinned ridge, rigid ridge, and the shortcut that overstates it, with a decision diagram.
- llms.txt -
/calcs/llms.txtindexes the guide for language models and other tools, and/calcs/llms-full.txtis the whole guide in one file. Both are written bytools/make_llms_txt.mjs.
Changed
- Plots and diagrams - The Samples group Plots is now Plots and diagrams, and the two Mermaid samples moved there from Sheet syntax.
- Figures group - Image moves from the plot options into a Figures group next to Diagrams, and the Diagrams button has a flowchart icon.
- Ribbon order - The Calculation tab now comes straight after Matrices/Tables, so the tabs follow the work: write, calculate, plot, format, document.
- Ribbon fits - The tab strip fits a window down to about 900 px wide, and the Text Formatting and Resources tabs fit a 1300 px window, with small buttons where a tab was too wide.
- Ribbon groups - Document groups run Import, Tidy, Page, Report, then Save and export; Variables and Errors form a Check group on Calculation; Resources has View, Panels and Help groups.
- One data grid - Data grid is on Input/Output only, and the Input mode button there is now Input form, as on the Calculation tab.
- Ribbon icons - Buttons that shared an icon with a different button have their own, such as Hyperbolic, Determinant, Show results, Errors, Tidy text and Changelog.
- Ribbon tooltips - Every ribbon button says what it inserts or does, with the typed form where it teaches syntax, and shortcuts read Cmd on a Mac.
- Menu labels - Menus use sentence case and three dots for items that ask for more, the sidebar tab TOC is now Contents, and the editor menu says Calculate and Show Line in Results.
- Samples groups - Sample groups are in sentence case, Plots and diagrams comes before 3D plots, and the dialog's subtitle names the sheet samples as well as the classic examples.
- Phone targets - On a phone the quick-access buttons, the ribbon tabs and the small ribbon buttons are taller and easier to tap.
- Block menu marks - Paste has the same mark in the insert menu and the block menu, and Page break no longer shares the Copy mark.
Fixed
- Shortcut hints - Tooltips, the File menu and the Shortcuts list no longer name keys the browser keeps for itself, such as Ctrl+N, Ctrl+O and F5.
- Metadata in sheets - The editor menu no longer offers Edit Metadata Properties in a sheet, where it wrote a classic comment line.