DocumentationAPIStatus

NovuHub changelog

Dates are the day the wave was pushed to main. Each entry names the environment switches it introduced; the deploy notes under docs/deploy-notes/ hold the step-by-step instructions.

2026-10-14 — v1.55.2: an AI answer in the chat is no longer shown as an error

Fixed

2026-10-14 — v1.55.1: My Assistant answers a P&L line you name

Fixed

Housekeeping

2026-10-14 — v1.55.0: back end and front end are two separate projects

Nothing changes for the people using NovuHub: the same screens, the same data, the same addresses. The code is now arranged the way the MVP blueprint shows it — the back end builds the API, the front end reads it.

The layout

The page is static

Measured — the minified bundles the browser downloads are byte-for-byte the same as v1.54.2 (37 of 37); all 1,376 earlier tests pass plus 6 new; the front-end suite 544 of 544 plus 8 new; every sidebar screen (45) shows the same content on the same data; a full server rehearsal (nginx, the real start commands, upgrade, rollback, upgrade again, trial copy) kept every upload and screen.

Deploy (once): cd /var/www/novuhub && git pull && bash deploy/upgrade-v1.55.0.sh — see docs/deploy-notes/DEPLOY-v1.55.0-backend-frontend.md (backup first, optional trial, rollback). CI: paste docs/deploy-notes/ci-v1.55.0.yml into .github/workflows/ci.yml (the steps now run in backend/ and frontend/). No new environment switches, no database migration.

2026-10-14 — v1.54.2: a failing AI call says why — and the API key can be tested

A new Anthropic key was saved but My Assistant still answered "the AI service could not be reached". The key was stored; the real cause was hidden: the chat showed that sentence for any failure, including an error page from NovuHub's own server.

Fixed / added

2026-10-14 — v1.54.1: the sidebar keeps its width when the chat opens

Fixed

2026-10-14 — v1.54.0: My Assistant as a chat — a ✦ button in the top bar, a panel on the right, history, access-aware

The button and the panel (app/static/src/98s-assistant-chat-button.js, 79d-assistant-chat.js)

A conversation (app/assistant_chat.py, app/routes/assistant_chat.py)

History (assistant_chat, assistant_chat_message tables — migration d4f6a8c0e2b4)

Access — checked on every question

Measured (Chromium, full test company, rules mode) — docs/assessments/NovuHub_v1.54.0_Chat_Panel.pdf

No new environment switches. The two tables are created on start (create_all) or by the migration.

2026-10-14 — v1.53.1: My Assistant reports the same lots as the item screen

Fixed

Measured

No new environment switches.

2026-10-14 — v1.53.0: My Assistant reads every report tab — "How much was the EBITDA for March?"

Until now My Assistant answered from records. A question about a figure that only a report tab shows (EBITDA, win rate, cost per lead, stock turns, sick-absence rate …) got a wrong or empty answer: "Revenue in March" came back as €0. Now the Assistant reads the 77 report tabs of every section, with or without AI, and still never reads a tab the person may not open.

The P&L on the server (app/assistant_pnl.py)

Every report tab (app/assistant_report_tabs.py, app/static/src/79c-assistant-reports.js)

Fixes found on the way

Measured (rules mode, in the browser, on the full test company; evidence in docs/assessments/NovuHub_v1.53.0_Report_Reading_Evidence.zip)

No new environment switches.

2026-10-14 — v1.52.0: My Assistant answers questions about every section — with or without AI

Until now My Assistant could look up ten kinds of record. A question about an Inventory item, a campaign, a team, a learning path, a purchase order or a document was answered with "not in the data", even when the screen next to it showed the answer. Now every business section is covered, in English and German, and the Assistant still never reads beyond what the person may open.

One catalogue of what the Assistant may read (app/assistant_records.py)

With AI: four new look-ups (app/assistant_tools.py)

Without AI: the rules answer every section (app/assistant_answers_records.py, app/assistant_sections.py)

Fixes found on the way

Measured (rules mode, a 28-person test company with the Inventory demo data):

The full report is in docs/assessments/NovuHub_v1.52.0_My_Assistant_All_Sections.pdf.

New: app/assistant_records.py, app/assistant_sections.py, app/assistant_answers_records.py, tests/test_assistant_all_sections.py. No new environment switches; normal deploy chain.

2026-10-13 — v1.51.0: the test audit's "do now" fixes — no crash on bad input, a safe first start, a working load test, sharper money tests, connectors and every endpoint tested, accessibility clean

The 13 Oct 2026 test audit (v1.50.9) found real bugs and thin spots in the tests. This release fixes the ones in code that ships; the four sections removed before launch (Decision Intelligence, Business Plan, StartUp, Test) were left out, and the screenshot baseline waits until they are gone.

Bad input is a 400, never a server error

A fresh start with several workers

The load test runs again

Tests that notice a wrong figure

Accessibility (axe-core, WCAG 2.1 A/AA): 54 problems on 10 screens → 0

New: app/inputs.py, five test files above, tests/frontend/a11y-v151.test.js. No new environment switches; normal deploy chain.

2026-10-13 — v1.50.9: StartUp — match score, industry layer, approach, Ready to send, your own text, and Send

The private founder section's Customers, Funding and Angels tabs (150 companies, 25 funding bodies, 15 investors) now help decide whom to contact first and how, and send the e-mails in one go.

In all three tabs

New tab: Send

New: app/startup_outreach_match.py, app/startup_sender.py; endpoints /api/startup/outreach/{ready,template,preview,apply}, /api/startup/mailbox[/test], /api/startup/send[/stop]. No new environment switches; outgoing SMTP (port 465 or 587) must be open on the server.

2026-10-13 — v1.50.8: the facility-services and packaging companies' findings, fixed — and why the Lab's clicks were slow

The 24/7 Lab's three newest companies (Alster and Dithmarscher Gebäudeservice, Hanse Verpackungen, all on v1.50.7) had every report figure right but found nine open points: four that earlier releases had fixed and that came back, and five new ones. Each was replayed in a local Lab run of the same companies (same seeds, CPU slowed 3×) before and after the fix; the people who found them now finish their day without a finding.

My Assistant can be asked at once

Every control answers at once

The management questions have their screens

Why the Lab's clicks were 2.5–3.9 s (P&L “Move … up/down”, “Save month”, “Continue →”, “Add Payable”)

A page left open across a deploy

24/7 Lab

Tests: tests/test_v1508.py (8), tests/frontend/v1508-fixes.test.js (14); updated ck-fix-polish, audit-fix-ux, wh-fix-last. No migration, no new package, no new .env switch.

2026-10-12 — v1.50.7: Elbe Personal's 49 serious findings (the Lab's full /tmp), a quote loop, faster saves and reloads

Why Elbe Personal showed 49 serious findings. 48 were "⬇ Excel / ⬇ PDF hands out a file — 0 bytes" and one "The XRechnung was not handed out". All 49 had one cause: the test server's /tmp is a 1.9 GB RAM disk and it was 100 % full (leftovers of the Lab's browsers — Playwright folders and Chromium shared memory — from browsers killed by restarts and the memory limit). From the 11:23 restart on, the Lab's browser could not save any download. The platform's exports were fine (called directly on the live server: a full .xlsx and .pdf).

A quote that looked changed on every save. A quote accepted through the customer's link is stored by the server without the defaults every browser fills in (status, payments, discount …); every later save looked like a change of the customer's decision and was put back — on the test server every few seconds, and since v1.50.6 with a message. Only the app's own defaults differing is now no change; a real change is still refused and reported (access_guard._qfill). A refusal the server repeats is now fetched at most once a minute and told once per visit.

Faster

No migration, no new package. New optional switch: NOVUHUB_LAB_TMP (the Lab's temp folder; default instance/lab/tmp).

2026-10-12 — v1.50.6: the engineering assessment and the last four Lab industries, fixed

Two sources. (1) The engineering assessment of 12 October (Technical Brief pages 6–10): tenant isolation, capacity, backup restore, financial correctness, background-job recovery. (2) The 24/7 Lab's companies that had no fix release yet — Sachsenwald Consulting, Ostsee and Weser Ingenieure, Weser and Wandse Medizintechnik, Bille and Holstein Kreativ, Wandse Personal (v1.48.6 – v1.50.5).

From the assessment — figures that were wrong

From the assessment — security and recovery

From the Lab — the server's corrections reach the screen

From the Lab — My Assistant

24/7 Lab

No migration, no new package, no new .env switch.

2026-10-11 — v1.50.5: Finance — the tabs read from one another

An audit of the 13 Finance tabs found three separate worlds that nobody reconciled: the Receivables / Payables lists, the journal, and the imported P&L months. Each tab worked out "open receivables", "cash in bank" or the card liability its own way, and some things one tab wrote never reached another. New core file app/static/src/66b-finance-links.js (functions only) is the single place; app/bank_position.py is its server twin.

2026-10-11 — v1.50.4: Finance — a credit-card statement is the issuer's bill, not a purchase paid by card

2026-10-11 — v1.50.3: Finance mailbox — the Gmail search never worked

2026-10-11 — v1.50.2: Finance mailbox — every PDF is a candidate, re-scans spend their time on new mail

2026-10-11 — v1.50.1: payment recognition in the finance mailbox

2026-10-11 — v1.50.0: Finance — payment recognition (card, direct debit, transfer)

A vendor invoice that was charged to a credit or debit card showed as "to pay in the next days" although the vendor already had its money. How an invoice is paid now decides whether it is still open — everywhere. No environment switches.

2026-10-11 — v1.49.4: working-time button icon

2026-10-11 — v1.49.3: ESRS Requirements → cross-cutting GDR layer (ESRS Set 2)

The four General Disclosure Requirements of the finalised ESRS Set 2 — GDR-P (policies), GDR-A (actions), GDR-M (metrics), GDR-T (targets); ESRS 1 para. 29, ESRS 2 paras. 38-52, Commission Delegated Regulation (EU) 2026/1563 — connected to the topical Disclosure Requirements. No environment switches.

2026-10-10 — v1.49.2: StartUp → Customers · Funding · Angels

2026-10-10 — v1.49.1: the connector files documents into SOPs & Docs

2026-10-10 — v1.49.0: report match in the 24/7 Lab — every team proves its section's figures

2026-10-10 — v1.48.6: Construction and Consulting audits — company-day dates, clear feedback, a Lab that survives restarts

2026-10-10 — v1.48.5: what the Fjord IT-Systeme audit found, fixed — instant windows, faster Tasks, honest Lab timing

2026-10-09 — v1.48.4: what the Logistics and IT-services audits left, fixed — faster sign-in, exact P&L lines, ⏱ beside ⌘K

2026-10-09 — v1.48.3: My Emails is private, leave by the employee (also by the hour), a ⏱ clock in the top bar

2026-10-09 — v1.48.2: what the Technical-wholesale company audits found, fixed — and the goals become reachable

2026-10-08 — v1.48.1: what the first two machinery company audits found, fixed in the platform

2026-10-08 — v1.48.0: every "fixed" gap rebuilt to a strength, Inventory variants, bins, price lists and RFQs

2026-10-08 — v1.47.0: the 24/7 Lab's company audit — a whole company per B2B industry works the platform

2026-10-08 — v1.46.1: everything the 24/7 Lab found on 7 October, fixed — and My Emails after the morning mail run

2026-10-07 — v1.46.0: Inventory — for trade and service companies with a small stock

2026-10-07 — v1.45.0: the open ideas of the Sales & Marketing wave, built

2026-10-07 — v1.44.0: a new scene on the sign-in and sign-up pages

2026-10-07 — v1.43.0: Sales reports, a Marketing section, and the data integration behind them

2026-10-07 — v1.42.0: the virtual staff work with the new layout — and check something new every day

2026-10-06 — v1.41.2: the section's own tabs are always the top box

2026-10-06 — v1.41.1: Messages — the message box stays on screen

2026-10-06 — v1.41.0: a modern chat; Learning tidied; Messages layout fixed

2026-10-06 — v1.40.0: a slim sidebar (design S3)

2026-10-06 — v1.39.0: one neat bar on every page (design C2 · one box)

2026-10-06 — v1.38.0: the "From other sections" box is hidden

2026-10-06 — v1.37.0: Business Plan → Roadmap tab, with comments

2026-10-06 — v1.36.4: Organization — the manager stays on top; nest teams from the employee editor

2026-10-06 — v1.36.3: Organization rebuilt for real org structures; colleagues no longer see each other's workload

2026-10-06 — v1.36.2: members see only their team's projects; "My personal details" for HR

2026-10-06 — v1.36.1: CI is green again

2026-10-06 — v1.36.0: who sees which projects, "Needs attention" for the people involved, My Emails every morning at 07:30

2026-10-05 — v1.35.3: Board → "By section" works on every project

2026-10-05 — v1.35.2: Run QA's sync checks work again, the staff day's XRechnung task, team leaders' access requests

2026-10-31 — v1.35.1: the nightly backup no longer reports "failed" after a good backup

2026-10-31 — v1.35.0: security hardening + German finance compliance (e-invoice, GoBD, DATEV)

Security (the findings of the 5 Oct assessment)

German finance compliance

2026-10-30 — v1.34.4: the staff day starts at once, runs again after every release, and the page refreshes itself

2026-10-30 — v1.34.3: the virtual staff's findings fixed; DR detail without "Linked IROs"

2026-10-29 — v1.34.2: profile photos — the server reads, crops and saves them (HEIC included)

2026-10-29 — v1.34.1: AI Assistant Library — honest drafts, no blocking mode, ⚑ Report this message

2026-10-29 — v1.34.0: AI Assistant Library — scenarios, "Ready for your yes", quiet mode, the record

2026-10-29 — v1.33.2: ESRS Requirements — conditional data points can be switched off

2026-10-29 — v1.33.1: ESRS Requirements — the owner's three adjustments

2026-10-29 — v1.33.0: ESRS Requirements — every DR and data point, activated by the DMA

2026-10-29 — v1.32.1: what the virtual staff found on their first day — fixed

2026-10-29 — v1.32.0: 24/7 Lab — virtual staff: six auditors work a day and write to the owner

2026-10-29 — v1.31.1: the "?" next to a page title now always explains the section

2026-10-29 — v1.31.0: Business Plan — the evidence builder

2026-10-28 — v1.30.0: new sign-in and sign-up pages

2026-10-27 — v1.29.3: fixes from the 24/7 Lab report of 1 October

2026-10-26 — v1.29.2: the real cause — in Firefox (and other browsers that follow the standard) no change was ever saved

2026-10-25 — v1.29.1: a teammate's changes always reach everyone (SOP folders, documents, profile photos)

2026-10-24 — v1.29.0: Business Plan — comments, highlights, and every table line explained with sub-items

2026-10-23 — v1.28.0: the platform is renamed NovuHub (formerly WorkHub)

2026-10-22 — v1.27.2: tests no longer depend on the calendar day (CI was red on 1 October)

2026-10-21 — v1.27.1: Single Source of Truth — big files are sent in pieces

2026-10-20 — v1.27.0: Single Source of Truth — one governed answer, with its sources (advisory)

2026-10-13 — v1.26.0: Business Plan — a new section for the business plan, to German criteria

2026-10-12 — v1.25.0: 50 of the 51 Functionality suggestions built, the Lab's click findings fixed

2026-10-11 — v1.24.0: every section connected, messy data no longer breaks screens, My Assistant reads Communication

2026-10-10 — v1.23.0: StartUp and Test are normal sections — the owner decides who gets them

2026-10-09 — v1.22.2: the 24/7 Lab's browser starts under the service user

2026-10-08 — v1.22.1: the 24/7 Lab works on Ubuntu 26.04

2026-10-07 — v1.22.0: The 24/7 Lab — the platform tests itself around the clock; the Test tabs follow new sections

2026-10-06 — v1.21.0: QA report as PDF; Connections and Functionality tabs in the Test section

2026-10-05 — v1.20.0: Run QA — the platform checks every screen and button itself

2026-10-04 — v1.19.0: Saves are never lost; Projects & Tasks rebuilt project-first

2026-10-03 — v1.18.0: New sign-in page — the platform as a neural network

2026-10-03 — v1.17.0: Weekends and public holidays in the calendars

2026-10-02 — v1.16.0: Test Lab Phases 3 + 4 (HR, Sales & CRM) and the fixes they found

2026-10-01 — v1.15.0: Test Lab (Phase 1 + 2: Finance) and the Finance fixes it found

2026-09-30 — v1.14.1: Customer radar — fewer false alarms

2026-09-30 — v1.14.0: Sales & CRM → Customer radar (drift and margin radar)

2026-09-29 — v1.13.0: HR Reports → Working hours; the Team page is removed

2026-09-28 — v1.12.0: StartUp — a private founder section for one person

2026-09-25 — v1.11.0: one sign-in per account at a time

2026-09-25 — v1.10.2: change your password in Settings

2026-09-25 — v1.10.1: fixes from the v16 assessment

2026-09-25 — v1.10.0: My Assistant knows German rules, writes the weekly review, runs each role's routine

2026-09-25 — v1.9.0: My Assistant closes the loop — lessons, follow-ups, results

2026-09-25 — v1.8.0: My Assistant analyses sharper — cash, payment behaviour, seasons, look-ups

2026-09-25 — v1.7.0: My Assistant works ahead — briefs, alerts, Home card

2026-09-25 — v1.6.0: My Assistant

2026-09-24 — v1.5.1: one "New mind map" button

2026-09-24 — v1.5.0: P&L mapping codes and grouped placement

2026-09-24 — v1.4.1: three small fixes

2026-09-24 — v1.4.0: employee document folders

2026-09-24 — v1.3.0: video courses

2026-09-23 — v1.2.0: document templates on every report download; tabs survive a refresh

2026-09-23 — v1.1.1: P&L import reads typed account files and ID/description templates

2026-09-23 — v1.1.0: the eight hardening groups closed (commercial → code quality)

2026-09-22 — The four v14 findings closed: HR confidentiality, working time, pay transparency, bank & e-invoice, German UI

2026-09-22 — Assessment v14: sale readiness, and three defects it found fixed

2026-09-22 — HR → Reports: the monthly management pack and the statutory filings

2026-09-22 — Import as four guided cards, a Templates folder, Finance tabs that survive a refresh, an honest Forecast on thin history

2026-09-22 — Your own P&L template becomes the statement; the P&L bar is just months, jump and export

2026-09-22 — Broad cost groups are split the way a management report splits them

2026-09-22 — Profit & Loss becomes a workbench: any export, any chart, any layout

2026-09-22 — The P&L import reads German accounting properly

2026-09-22 — Signing up is quiet: one e-mail, sent when the access actually exists

2026-09-21 — Assessment v13: a harder bar, and the four things it found

2026-09-21 — Continuous integration is green again after 28 failed runs

2026-09-21 — Access is decided once, when you let someone in · your own photo in the top bar

2026-09-21 — My Emails triages the right window again · mentions now reach people by e-mail

2026-09-21 — Colour contrast: every failing pair fixed, light and dark

2026-09-21 — Finance: the Receivables / Payables add button moved to its ledger

2026-09-21 — Finance → Archive remembers the folder you are in

2026-09-21 — Table sweep: every table in the product checked and aligned

2026-09-21 — Product fixes: tables, navigation state, previews, team filter, subscribers

2026-09-21 — Hotfix: sharding-safe server writes · Connector v2

2026-09-21 — Phase 2: internationalization, front-end performance, support & documentation

2026-09-21 — Phase 1: security, architecture, code quality (assessment v11 follow-up)

2026-09-20 — Reach, polish and hardening

2026-09-19 — Portability, storage and access

2026-09-18 — Core polish and the server-side engine

2026-09-17 — Decision Intelligence and the visual overhaul

2026-09-14 — 2026-09-15 — Sustainability, CRM and finance intake

2026-09-09 — 2026-09-11 — Foundation

Feature overview (all waves)