Skip to content

Releases: Magnus-Gille/noxctl

noxctl 0.12.0

Choose a tag to compare

@Magnus-Gille Magnus-Gille released this 01 Oct 15:29
266eab5

Highlights

  • Read-only e-invoice preflight. noxctl invoices preflight <docNumber> and the fortnox_preflight_invoice MCP tool read an invoice and its customer and report the draft state, buyer references and EDI data they observe. Recipient connection and Peppol address are reported as unsupported and the delivery route as unknown, so the result is always ready: false: exit code zero means the inspection succeeded, not that the invoice can be sent as an e-invoice. Nothing is sent, printed or bookkept. See docs/einvoice-readiness.md.
  • MCP capability discovery. The noxctl://capabilities resource is readable without credentials or network access. It lists the server version, the tools registered on that server and whether each one reads or may mutate, and the confirmation and dry-run rules for writes.

Fixes

  • noxctl completion zsh now completes each command's own options with descriptions and short flags, fixed choices such as --output json|table, and file names for file options and arguments. It also keeps working when a global option precedes the command, for command aliases, and at any nesting depth. Regenerate an installed script after upgrading, for example noxctl completion zsh > "${fpath[1]}/_noxctl".

Existing command paths, aliases and accounting operation outputs remain compatible.

Full details: https://github.com/Magnus-Gille/noxctl/blob/main/CHANGELOG.md

noxctl 0.11.0

Choose a tag to compare

@Magnus-Gille Magnus-Gille released this 25 Sep 18:32
eadece5

CLI improvements

  • Start with a compact help screen and examples. Use noxctl --help-all for the complete command catalogue, grouped by function and alphabetized within each group.
  • Find clearer explanations of aliases, VAT reports and summaries, recurring invoicing, and file attachment workflows.
  • Distinguish the saved default profile from a one-command --profile override. Profile switching now suggests known names for likely typos and avoids displaying the old profile banner before a switch.

Existing command paths, aliases, and accounting operation outputs remain compatible.

Closes #181. See the changelog for details.

noxctl 0.10.0

Choose a tag to compare

@Magnus-Gille Magnus-Gille released this 16 Sep 17:53
070287d

Highlights

  • Expanded the open-source Fortnox core API surface with read-only reference/setup resources, accrual CRUD, archive and inbox workflows, and cross-document attachment operations.
  • Added read-only supplier-invoice attachment listing and downloads, including for unbooked and authorizepending invoices.
  • Added a fast general-ledger command backed by Fortnox SIE exports, with date, account, and series filters.

Fixes

  • Completed customer writable-field schemas and corrected Phone1 / CountryCode handling.
  • Hardened general-ledger validation and SIE escaping, accepted the authorizepending supplier-invoice filter, removed read-only Times from accrual writes, and made no-argument CLI invocation show help.

Full details: https://github.com/Magnus-Gille/noxctl/blob/main/CHANGELOG.md

noxctl 0.9.0

Choose a tag to compare

@Magnus-Gille Magnus-Gille released this 31 Aug 12:00
f9af909

What’s new

  • Voucher attachments can now be listed and downloaded from both the CLI and MCP server.
  • Customer-invoice attachments can now be uploaded and listed from both the CLI and MCP server.
  • Development-dependency audit findings were remediated, and CI now requires both production and development dependency audits to pass.

Invoice attachment uploads require the opt-in archive scope. Existing users who need this feature should reauthorize with:

noxctl init --with-archive

Many thanks to @hedborg for contributing both attachment features in #144 and #145, including live Fortnox verification and regression coverage.

Full changelog: v0.8.0...v0.9.0

noxctl 0.8.0

Choose a tag to compare

@Magnus-Gille Magnus-Gille released this 29 Aug 20:54
73ab9f1

Highlights

  • Supported noxctl/embedded runtime API for host-injected, tenant-isolated Fortnox transports, operations and MCP servers.
  • Privacy-preserving MCP write-schema audit, also enforced by the weekly API-drift workflow.
  • Deterministic version:set and read-only version:check tooling across package, lockfile, runtime and MCP registry metadata.
  • Expanded write-schema coverage for supplier invoices, invoices, offers and orders.
  • Strict rejection of unknown MCP input properties.
  • Fail-closed credential recovery and embedded construction, plus non-retryable invoice delivery.

Full changes: v0.7.4...v0.8.0

noxctl v0.7.4

Choose a tag to compare

@Magnus-Gille Magnus-Gille released this 28 Aug 10:21
db36932

What's changed

  • Refreshed the repository front page with clearer positioning, trust model, feature summary, quick start, badges, and navigation.
  • Added canonical npm repository, issues, homepage, and discovery metadata.
  • Fixed stale contributor clone and security advisory links from the former repository location.

Full changelog: v0.7.3...v0.7.4

noxctl v0.7.3

Choose a tag to compare

@Magnus-Gille Magnus-Gille released this 27 Aug 14:21
34ebf87

Fixed

  • Income statements and balance sheets now fetch voucher details through a bounded five-worker pool instead of waiting for every request sequentially. The shared Fortnox client remains the single rate-limit authority.
  • Financial-report totals now exclude voucher rows marked Removed: true, because those rows have been replaced in Fortnox.

Thanks @MountRose76 for the detailed report, real-world timings, bottleneck diagnosis, and independent comparison of the resulting income-statement totals in #108. Your work made this fix substantially faster to validate and ship.

Verification

  • Codex review gate completed with no remaining findings
  • CI passed on Ubuntu with Node.js 22 and 24, plus Windows with Node.js 22
  • 73 test files / 833 tests
  • zero production dependency vulnerabilities
  • published npm tarball SHA-1: 695254e7825e4140b3b910b67829940340121c20

Merged in #109.

v0.7.2

Choose a tag to compare

@Magnus-Gille Magnus-Gille released this 19 Aug 17:54
17aef1d

Fixes #101, reported by @hedborg.

Fixed

fortnox_create_voucher silently dropped per-row fields. VoucherRowSchema declared four of the nine writable VoucherRow fields, and the MCP SDK strips any argument a schema doesn't declare — so a per-line note passed as TransactionInformation never reached Fortnox. No error: the voucher books correctly and the data you asked to record is simply absent.

The schema now covers the full VoucherRowSinglePayloadItem set — TransactionInformation, CostCenter, Project, Quantity and Removed. Tests assert the declared property list so it can't narrow again.

Row-level Description now documents that Fortnox normally overwrites it with the account's own registered name, and points callers at TransactionInformation for per-line free text. That overwrite behaviour is reported from real usage but not independently verified here — the guidance holds regardless, since TransactionInformation is unambiguously the per-line free-text field.

Full changelog: v0.7.1...v0.7.2

v0.7.1

Choose a tag to compare

@Magnus-Gille Magnus-Gille released this 19 Aug 08:31
2cca9f2

Patch release. Everything user-facing landed in v0.7.0 — this is the dependency half.

Changed

  • @modelcontextprotocol/sdk 1.29.0 → 1.30.0.
  • Dropped the @hono/node-server override. SDK 1.30.0 widens its dependency range to ^1.19.9 || ^2.0.5, so npm resolves 2.0.11 on its own — the condition the 0.6.1 notes named for removing the pin added for GHSA-frvp-7c67-39w9. Verified the advisory stays closed: npm ls @hono/node-server resolves 2.0.11 without the override and npm audit --omit=dev reports 0 vulnerabilities.

Internal

  • Dev tooling: eslint 10.8.1, lint-staged 17.3.0, typescript-eslint 8.67.0.
  • Raised the CLI subprocess timeout in tests from 10s to 30s. Spawning node dist/cli.js on a cold Windows CI runner regularly approached the old ceiling, and the resulting failure surfaced as an empty stderr rather than a timeout.

Full changelog: v0.7.0...v0.7.1

v0.7.0

Choose a tag to compare

@Magnus-Gille Magnus-Gille released this 19 Aug 07:57
899da83

Fixes two externally reported issues — #95 and #96 — both found by @hedborg running noxctl against a live Fortnox account on Windows 11. Thank you.

Windows fixes

  • OAuth setup was broken on Windows. The browser launch ran cmd /c start <url>, and cmd.exe treats every unescaped & in the query string as a command separator — so Fortnox received the authorization URL truncated at the first parameter and rejected it. Windows now launches through PowerShell Start-Process, and the URL is printed unconditionally on every platform.
  • Saving credentials failed with Unable to find type [System.Security.Cryptography.ProtectedData] on PowerShell configurations that don't preload System.Security.
  • logout --all claimed to remove credentials that were never stored — the Windows delete used fs.rm(..., { force: true }), which resolves for a missing file. Found by the new Windows CI leg.

OAuth scopes

project, costcenter and price were implemented but never requested, so those endpoints returned 403 even with the permissions enabled on your Fortnox app. They're now in the default set.

Offers and orders are opt-in. Fortnox gates the offer and order scopes on the Order licence, and requesting a scope the company isn't licensed for fails the entire authorization — so making them default would lock out Bokföring + Kundfaktura companies. Use noxctl init --with-orders (or FORTNOX_WITH_ORDERS=1), mirroring --with-salary.

The 403 hint also named the wrong scope for offers, orders and both payment families, and noxctl doctor / fortnox_status counted scopes they never actually probed.

Upgrading

Existing installations are unaffected until you re-run noxctl init — credentials renew against the scope set they recorded. Before re-running init, enable Projekt, Kostnadsställe and Priser on your Fortnox app, or the authorization will be rejected.

MCP tool fixes

  • fortnox_create_supplier / fortnox_update_supplier declared 10 of the Supplier resource's 41 writable fields. The MCP SDK silently strips undeclared arguments, so setting e.g. YourReference did nothing at all — no error, the field just never reached Fortnox. Both schemas now cover the full field set.
  • Voided voucher rows (Removed: true) rendered identically to live rows, which read as a double-booking. They're now prefixed [REMOVED].

Also

  • CI now runs the suite on windows-latest. Every bug in #95 was Windows-only and Linux-only CI could not have caught any of them.
  • Column formatters no longer bypass terminal control-character stripping.

Full changelog: v0.6.1...v0.7.0