Pulse! System Change Log
[2.6.18] 2026-10-06
- Rework Markdown answer report layout — the Markdown export on Answers & Reports (
/reports/answers-reports/) rendered every response into a four-column table, which collapsed as soon as any question or answer contained a line break (a Markdown table row must be a single physical line). The export now renders each category's questions as numbered headings, the question text in full, and each respondent's answer as a > blockquote under the respondent's name — so multi-line answers, numbered lists and paragraphs come through cleanly. Answers to the same question are grouped under one heading. The Project Information summary table is unchanged.
[2.6.17] 2026-10-01
- Response page layout tidy-up — on the response workspace (
/response/<project>/<person>/), the Edit/Comment action icons now sit on their own row directly below the question text and above the response, so long questions are no longer squeezed beside the buttons. The sticky header no longer pins the company/respondent details to the top while scrolling — only the progress bar pins. The "x of y questions answered" line was removed; the count now shows inline in the progress bar as NN.N% · x/y questions.
[2.6.16] 2026-10-01
- Response page action icons — on the response page (
/response/<project>/<person>/, mobile and desktop), the Edit Answer and Comment controls no longer sit to the left of the answer, where they cramped the existing response text. They are now compact pencil / speech-bubble icon buttons placed top-right of each question, beside the question text, so answers and existing comments get the full width and are easier to read. Icons carry title/aria-label for accessibility; the comment icon is hidden for boolean questions (matching prior behaviour).
[2.6.15] 2026-10-01
- Mobile-friendly respondent assignments — the respondent home page (
/respondent/) now renders "Your Assignments" as stacked cards on phones instead of a squished seven-column table. The assignment table uses the shared .grid-table mobile card system, the filter bar (project / action / active-only) stacks with full-width controls, and the assignment action button plus the post-assessment feedback buttons go full-width. Honours the existing "Switch View" desktop/mobile toggle, and the desktop table is unchanged (green header, column widths, hover).
[2.6.14] 2026-09-26
- Link previews (Open Graph) for knowledge assets — sharing a k-asset link (e.g.
/k-assets/tools/299/attachments/412/ or a tool detail page) in WhatsApp, Slack, Discord, Telegram, etc. now shows a rich preview with the article's heading, description, and its image (or the Pulse logo when the asset has no image). Social platforms fetch shared links anonymously, so a crawler-detection layer serves these platforms a minimal Open Graph meta page while authenticated users and all other traffic keep the normal login-protected pages. og:image points at the publicly served /media/... path so the preview picture loads without authentication. New module backend/k_assets/og.py; tests in backend/k_assets/test_og_preview.py.
[2.6.13] 2026-09-22
- Markdown rendering and export options for answer reports —
- Answers report (/reports/answers/): response boxes now render as markdown (bold, lists, links, line breaks) instead of raw text, and the report gains Export Markdown and Export DOCX options alongside the existing PDF/Excel exports.
- Text Responses report (client portal): response boxes render as markdown, a new Export Markdown option downloads a
.md file with the report grouped by question and masked respondent numbers, and the separate Export PDF/Excel buttons are collapsed into a single Export dropdown (PDF/Excel/Markdown).
- Fixed previously broken PDF/Excel exports on the Text Responses report (they queried non-existent
question_type/question_text fields and returned a FieldError/500).
[2.6.12] 2026-09-22
- Client portal report fixes —
- Assignment Progress report: the header no longer rotates the category names vertically (the column is now a normal wrapped horizontal header, much shorter); the person column showed
undefined because it read full_name instead of the name the API returns — fixed.
- Assignment Coverage report: every row showed Missing / 0 persons because the report fetched
/api/person-project-categories/, which doesn't exist (the endpoint is registered as /api/assignments/), so the assignments array was always empty. The report now loads real assignments and marks each project category as Assigned when at least one active assignment matches.
- Consent report: removed the redundant ID column from the table.
- Text Responses report: response boxes now render as markdown (bold, lists, links, line breaks) instead of raw text.
[2.6.11] 2026-09-22
- K-Assets search by article number — the knowledge-assets search bar now also matches the article's numeric ID. Typing just a number (e.g.
268) finds that article alongside the existing name/description/source search. Applied to the tools list, What's New, and the detail-page prev/next navigation, plus the DRF API (?search= now includes id).
[2.6.10] 2026-09-22
- K-Assets prev/next navigation now respects the active filters — the knowledge-asset detail page previously computed previous/next tool IDs from all non-archived tools, ignoring the filters applied on the tools list. The list's filter/sort logic is now shared with the detail view, so the arrows step through the same filtered, ordered set you were browsing (tag, search, and file-extension filters included).
- Consent-required note hidden once all consent is given — the respondent home page no longer shows the "consent required" note after every category has been consented to.
- Progress bar percentage readability fixed — the percentage label on the respondent and workspace progress bars moved out of the colored fill into a full-width overlay with a text shadow, so the digits stay legible at low completion percentages instead of overflowing onto the light track.
[2.6.9] 2026-09-22
- Question category descriptions on the respondent page — the category description (the Question Category
details field) now renders as markdown directly below each category header on the respondent-facing questions page (e.g. /response/<project>/<person>/<category>/). Shows the category's guidance to respondents before the questions appear.
[2.6.8] 2026-09-22
- Consent thank-you email is now SSO-aware — the "Consent Received" email now checks whether the respondent's account is linked to Single Sign-On before offering the Set Up Password step. SSO-linked respondents get a Log In with SSO button pointing at the login page (where they authenticate with their passkey), instead of a password-setup link they can no longer use (the OIDC backend scrubs local passwords on first SSO login). Non-SSO users keep the existing Log In / Set Up Password / Get Started behaviour.
[2.6.7] 2026-09-22
- Permission level labels standardised across the UI — the app permission matrix now shows Read instead of Read-only, with consistent colours across the board (No Access red, Read yellow, Edit green, Full Control blue). Applied to the dynamic-home badges, the profile app permissions, and the person-to-app access matrix, which now shows full labels instead of the R/E/F/X letters.
- Fixed 'respondents' app-code access checks — after migration 0071 consolidated the consent/reports app codes into a single
respondents code, staff views still gated on the legacy codes, so users with only a respondents permission row (e.g. Edit on Respondents Consent & Reports) were denied access to Consent Management and reports pages. All decorators and PermissionCheck calls now use app_code='respondents'.
[2.6.6] 2026-09-22
- Quick Actions cards are now whole-card links on the client portal dashboard — clicking anywhere on a Quick Actions card navigates to the destination instead of only the text link.
- Subscription email logo renders in mail clients — the subscription activation email now embeds the Pulse logo as an inline CID image (
multipart/related) with the site URL in context, so it displays even when remote images are blocked.
- Project manager dropdown filtered by staff access —
/api/persons/?staff_access_company= now only returns people with an active StaffCompanyAccess for the company, and the project manager dropdown is restricted to persons granted access to the consulting company (currently-assigned managers stay selected).
- Environment suffix removed from the browser title — the browser tab no longer appends the environment label.
[2.6.5] 2026-09-21
- Subscription Activated email now embeds the logo inline — the header logo is attached as an inline CID image (like all other transactional emails) instead of referencing a remote URL, so it displays in the top-right header bar even when the recipient's mail client blocks remote images.
[2.6.4] 2026-09-21
- Workflow fixes for auto-advance + retries —
advance_step no longer throws a JSON-serialization 500 when a model with a UUID primary key (e.g. Company) lands in the step's input context; UUIDs are now persisted as strings in event details, so instances no longer get stuck ACTIVE with no event for the next step. The discount retry path now falls back to subscription_id when the subscription object is missing from context, and the engine re-fetches the Subscription from subscription_id when restoring context.
- SSO-linked accounts shown as active — accounts linked to OIDC/SSO now display the green SSO-linked status in the person and assignment management UIs (previously they permanently showed the amber "no password" warning, because the OIDC backend scrubs the password on first login), and the Resend SSO Invite action works correctly for SSO-provisioned accounts.
[2.6.3] 2026-09-21
- Markdown k-asset attachments include the first heading in the filename — markdown files saved against a knowledge asset are now named
ToolNo-{id}_{first-heading}.md (e.g. ToolNo-268_The-Creative-Brief-inclusions-when.md) instead of the bare ToolNo-{id}.md. The heading is slugified with dashes between words (case preserved, punctuation removed); files without a heading fall back to ToolNo-{id}.md. Applies to create, edit, and legacy tool conversion. New rename_markdown_attachments management command renames existing markdown attachments (supports --dry-run and --tool <id>).
[2.6.2] 2026-09-21
- Mobile questions manage view refinements — on phones only the question is shown per card (Category, Role, Type and Updated are fully hidden); the question number now appears before the question text; clicking the question opens the dialog in read-only View mode (with an Edit button for users who can change questions), while the ID link still opens edit mode. Edit/Delete/Save buttons are hidden in View mode and the close button reads Close.
[2.6.1] 2026-09-21
- Mobile questions manage view — on phones the Manage Questions table now shows only the ID and the full question text (Category, Role, Type and Updated are hidden), and the question itself is a link that opens the details/edit dialog. Also fixed a CSS syntax error that was hiding the Excel export button on all screen sizes.
- k-asset attachments renamed to
ToolNo-{id}.{ext} — the original filename is dropped from k-asset attachments; files now save as ToolNo-{tool_id}.{ext} (with -2, -3 suffixes on collision) so photos like IMG_1234.jpg no longer appear. Applies to create, edit, and legacy tool conversion; WebP conversion preserves the new scheme without doubling the ToolNo suffix; templates show the projected ToolNo name during edit.
[2.6.0] 2026-09-21
- Test Emails diagnostics — added a collapsed "Email send logs & diagnostics" section on the Test Emails page that reads the Celery task-result log, shows a plain-English verdict of the latest send (success / failed / pending / retrying), explains common SMTP failures with actionable hints, and lists where to look for the root cause (worker/web logs, Flower, Django Admin task results).
- Test Emails context help — clicking Help on the Test Emails page now explains where production email sending is configured (System Config email mode, SMTP env vars, async Celery delivery).
- Live email configuration summary on the Test Emails page — email mode, async flag, backend, from-address, SMTP host/user/password and TLS/SSL at a glance.
- Test Emails page tidy-up — "Current configuration" details in section 1 are now collapsible; the "Open Mailpit" button uses
MAILPIT_URL, which resolves to https://mailpit.nostics.biz/ in production and http://localhost:8026 in dev.
- Security (Trivy) — bumped tornado to 6.5.8 (CVE-2026-82397); rebuilt base image picks up fixed util-linux / pcre2 / sqlite / openssl packages; documented no-fix systemd + util-linux CVEs in trivy-ignore.txt.
[2.5.1] 2026-08-14
- Improved landing page
- Improved OIDC hosting mechanisms
[2.5.0] 2026-07-27
- OIDC Single Sign-On — replaced local username/password auth with passwordless OIDC SSO (Pocket ID pilot at https://oidc.jcrx.co.za). See docs/PRDs/PRD_OIDC-Authentication.md.
- New usernames are the user's email address; company name is no longer embedded in usernames.
- All OIDC settings are env-driven (
OIDC_* vars in docker-compose / .env).
- First-login legal acceptance gate replaces the password+legal setup page; workflow
account_setup_completed triggers unchanged.
- Feature flags:
OIDC_ENABLED, OIDC_ONLY, OIDC_ALLOW_LOCAL_SUPERUSER (break-glass).
- Management commands:
oidc_link_status, send_oidc_invites, scrub_local_passwords.
- Removed: password setup/reset views and templates, company-derived username minting.
[2.4.0] 2026-07-10
- Fixed Question Category filters
[2.3.9] 2026-06-29
- Added the ability for Bitwarden to hold the .env secrets, making it a much more secure solution.
- Trivy & fixing of latest sec upstream lib issues.
[2.3.8] 2026-06-25
- Trivy run fixed several sec-issues of older libraries.
- PDFs in k-assets that does not want to open
- Web links in k-assets now opens in a new browser tab.
- PDFs now shows a minimal 1st page image when opening the k-asset, just like for webp.
[2.3.7] 2026-06-24
- gitea_runner: fixed stuck "Set up job" by baking
act_runner.yaml (with explicit linux:host/amd64:host/docker:host labels) into the image.
[2.3.6] 2026-06-24
- Added an API user & Access control to Company data for it - for external AI Agents, such as Hermes.
[2.3.5] 2026-06-09
- Reduced PROD image size by removing documentation etc.
- Build Runner Improvements
[2.3.4] 2026-05-29
- Added more observability reporting, who logged in when, which menu options did they click on.
- Bug in Capturing Methods, when Grouping is enabled in Methodologies /admin/methods/methodology/ - then when capturing a method in /methods/aspect/add/, it does not display the Grouping field, and could not save.
[2.3.3] 2026-05-28
- Per page navigation dropdown with 20/40/100 for Question Categories
- Added Category Details underneath the Category in the Questions Report
[2.3.3] 2026-05-28
- Per page navigation dropdown with 20/40/100 "per page" as standard for tables. Implemented for Questions.
- Fixed gitea runner action for build - that now creates symlinks - which portainer does not accept - security issue.
[2.3.2] 2026-05-28
- Changes all tables buttom navigations - end / beginning of lists
- Changed sort order of Questions Categories to follow numbers
- Added a Questions report - with which to discuss Questions with Client before launching a project.
- Saving a Question - sometimes it saves slow, then when one clicks again, it saves two records (with diff. numbers), changed that this cannot be done anymore.
[2.3.1] 2026-05-27
- Fixed the Open-Observe (O2) Piping to report secutity issues
- Improved Questions Category report - with URLs from parent lines to their categories.
- Change log now updates the release notes and number in git, and in the app footer.
[2.3.0] 2026-05-18
- Icons for Menu Cards. Improved navigation with icons for all Cards.
- UI for Mobile. Added light Mobile UI - to get to important docs via mobile.
- Tools bargraph. Counting the amount of Tools tags per Category for visual view of amnt of docs.
- AI Method creation Tool. An AI assistance Agent to create custom methods, fir instance legacy conversions with AI dev tools.
- Company & Persons Ids --> Guids. Changed all id's to v6 guids - to improve security of URLs - so it cannot be guessed. We will change to guid v7, which is better for DB retrieval once it is available in Python.
- Split Method Tools to Knowledge Assets. Tools was confusing, now called Knowledge Assets.
- Made PROD deployment faster by splitting current stack & creating a base and light app container
[2.2.2] 2026-04-29
- Encryption-at-rest implementation for Pulse, targeting ISO 27001 Annex A.10.1.1 (Encryption) compliance. The solution uses application-level Fernet (AES-128-CBC + HMAC-SHA256) encryption via the
cryptography library, identical to the pattern already in use for AILLMProvider.api_key_encrypted.
- Includes encryption for Storage, Column Level for PII fields in the DB, TLS for the DB connection, and key and rotation management.
- Added opentelemetry (OLTP) into the framework for ISO27001 A8.16 Observability.
- AI Agent Maintenance. Added Administration > AI Maintenance - for managing all aspects of the use of Agents in Pulse!.
[2.2.1] 2026-04-25
- Hardened backend secrets management for improved security
- Improved performance via backend worker architecture to not hold-up th front-end
[2.2.0] 2026-03-17
- Added backend infrastructure to use LLMs to run agents.
- Two gents working - creating demo data into Questions of the Project
- Summarising answers of questions into an actionable report.
- Admin panel for AI where agents can be tweaked
- Admin panel for Companies to audit the logs of what info is sent to the LLM.
[2.1.3] 2026-03-05
- Added Source to Tools and updated all tools with author or source.
- Added Method > Tools > Markdown Create and Edit capability.
- Added Questions & Tools Actions to Method Tree reader view if ACL allows.
- Added a workflow system to track workflows between personas like the user, an admin, and back which is configurable.
[2.1.2] 2026-02-09
- Changed full ACL model away from any Django standard - but grid - type.
- For Consultant portal users - Updated consent staff views to use app-level consent access instead of strict staff checks
- Removed Methodology ACL, replaced with IP ACL - that has Methodology and Questions Categories
- Renamed the card label, the project categories headings, and updated the context help text to match your wording.
- Payment gateway using Payfast.
- Implemented the cancellation fee flow end-to-end: cancellation now creates a cancellation fee request + payment link, sends the new design-system email, and only creates an invoice after PayFast confirms payment; pending fees also appear in the forecast list.
- Implemented the annual billing rules and combined invoices/forecast view. Annual plans now bill monthly at the discounted rate with positive clawback invoices, the renewal/usage commands use pricing_plan, and the admin invoices list includes forecast rows, filters, and a filtered total card.
- User Request subscription self-onboarding flow added a step to configure ACL for client, and an email to them when done
- Administration > EMail Templates - to view all the templates & a script to update the list. in /tools
- Pricing of Packages database driven, Standardised email templates
- AI Agent files like AGENT_SKILLS, API, DESIGN_SYSTEM etc. to improve speed of working with agents.
- Improved Continuously Improving workflows and scripts.
[2.1.0] 2026-01-29
- Company Strategy and Tactics documentation - but not done yet
- Improved access control model
- ACL for the Methods
- ACL for the Clients
- ACL for Question Category Source
[2.0.0]
- Respondents to questions portal
- Client portal
- ACL model
- Methodology 7P as indented list
- Method Tools
[1.0.0]
- Respondents can answer questions
- Reports to see respondents info
[0.0.1]