Skip to content

Changelog

[1.0.0] - 2025-05-13 (Advanced Symbolic Capabilities & UI Enhancements)

This major update significantly expands the symbolic mathematics capabilities by integrating a wider range of Nerdamer.js functions and refines the user experience with enhanced options and documentation.

✨ Added

  • Expanded Symbolic Operations (via Nerdamer.js):
    • Systems of Equations: Implemented solveEquations([eq1,...], [vars,...]) for solving simultaneous equations, with custom argument parsing for user-friendly input.
    • Equation Rearrangement: Added solveFor(equation, variable) to symbolically make a variable the subject of an equation, with custom argument parsing.
    • Calculus - Differentiation: diff(expression, variable [, order]) for symbolic derivatives.
    • Calculus - Indefinite Integration: integrate(expression, variable) for symbolic indefinite integrals.
    • Calculus - Definite Integration: defint(expression, variable, start, end) for symbolic definite integrals.
    • Calculus - Limits: limit(expression, variable, point) for computing symbolic limits.
    • Calculus - Symbolic Summation: sum(expression, indexVar, lowerBound, upperBound).
    • Calculus - Symbolic Product: product(expression, indexVar, lowerBound, upperBound).
    • Algebra - Factoring: factor(polynomial) for symbolic factorization.
    • Algebra - Expansion: expand(expression) for polynomial expansion.
    • Algebra - Partial Fractions: partfrac(expression, variable) for partial fraction decomposition.
    • Algebra - Polynomial Roots: roots(polynomial [, variable]) to find roots of polynomials.
    • Algebra - GCD/LCM: gcd(expr1, expr2) and lcm(expr1, expr2) for symbolic and numerical greatest common divisor/least common multiple.
    • Algebra - Polynomial Coefficients & Degree: coeffs(poly, var) and deg(poly, var).
    • Algebra - Complete the Square: sqcomp(expression, variable).
    • Expression Simplification: simplify(expression).
    • Number Theory - Primality Test: isPrime(integerExpression).
    • Transforms - Laplace & Inverse Laplace: laplace(expr, tVar, sVar) and ilt(expr, sVar, tVar).
  • User Interface & Experience:
    • Options Page: Introduced a dedicated options page (options.html) allowing customization of:
      • Base font size for the UI.
      • Default height and width for the pop-out window.
      • Font families for Title, Links, Results/History, and Input areas.
    • Help Page: Added a comprehensive help.html page, linked from the calculator, detailing features, syntax, and examples for both Math.js and the newly integrated Nerdamer.js functions.
    • Visual Feedback for Copy: Implemented visual feedback in the title bar ("Copied!" or "Copy Failed!") when attempting to copy results.
  • Internal:
    • Refactored processInput in popup.js to route a wider array of function calls to Nerdamer.js, including specific argument parsing for solveEquations and solveFor.
    • Updated state saving/loading to correctly persist and re-evaluate Math.js user-defined functions.
    • Improved handling and display of errors from both Math.js and Nerdamer.js.

🛠️ Changed

  • Documentation: Significantly updated README.md and created REFERENCE.md to reflect all new features and provide comprehensive usage guidance.
  • Nerdamer Integration: Shifted from only using solve() to a broader integration strategy, leveraging more of Nerdamer's symbolic modules.
  • Error Handling: More specific error messages for invalid arguments in custom-parsed Nerdamer functions.

Previous Versions (for context):

[0.2.0] (Initial Equation Solving)

  • Added:
    • Integrated Nerdamer.js (nerdamer.all.min.js).
    • Introduced basic algebraic equation solving via the solve(equation, variable) command.
  • Known Limitations:
    • solve() had limitations for general symbolic forms and transcendental equations.

[0.1.0] (Core Math.js Functionality)

  • Initial Release:
    • Core calculator functionality powered by Math.js (arithmetic, variables, user-defined functions, units, matrices, complex numbers).
    • Basic UI with input/output areas, history, @ variable, and pop-out window.
    • Persistent state for history, variables, and functions.