CBSmembers — Release Notes

What's new in each version of CBSmembers, written for the people using it day to day. The developer change log (every code change, terse and technical) lives in CHANGES.md; this page is the customer-facing distillation.

Latest release at the top. Click "Check for updates" in the Help dialog if a newer version is available.

1.8 — 2026-06-13

This release adds the Register of Members — your statutory member register, an export surface and an advanced search all in one screen — and improves the Marketing workspace with clearer grids, search and a new layout.

Register of Members (new)

A new Members register opens from the people icon on the left bar (now split into a single-person icon for working on one member and a group icon for the register list). It is, at once:

  • Your statutory Register of Members — the list the Act requires you to keep, exportable to PDF with the right columns (name, address, date admitted, date ceased, shares held).
  • An advanced search — filter to current or ceased members, to members with shares or with none (handy for spotting people to mark withdrawn), and type in the search box to find anyone by name, address, postcode, email, status, member number or shareholding. Click any column to sort.
  • An exportCSV and Excel as well as PDF, with extra columns (member number, postcode, email, telephone, status) for your own analysis.

Double-click anyone to jump straight into their full member screen. And on the Share register, double-clicking a row now opens that member's Shares tab with the certificate already selected.

Marketing — easier to manage at scale

The Marketing workspace gained a set of refinements aimed at societies with larger or messier audiences:

  • See your audience at a glance. Both the Members and Non-Members tabs now lead with a status breakdown (a total plus a tile per status, with bounced/unsubscribed contacts highlighted in amber), a status filter, and a search box that filters as you type.
  • Non-members made tidy. Non-members are now a proper sortable list; double- click one to edit it in a pop-up. After fetching a big audience you can confirm fetched sign-ups in bulk, or filter to dead contacts and delete the whole set in one click — the button only ever offers the safe action for what you're looking at, so you can't delete live subscribers by accident.
  • Tidy up your tags. A new tag manager lets you bulk-delete stray MailChimp tags — most useful for clearing the hundreds of one-per-row labels an old spreadsheet import can leave behind. It removes the labels only, never the contacts.
  • Clearer pushes. When MailChimp rejects a contact, the app now tells you which one and why instead of just a count, so you can fix it. Very large pushes finish in the background — the app says so, and you just Fetch again to confirm.
  • Tabs reordered so the everyday ones (Synchronise, Members, Non-Members) sit first and the workspace opens straight on Synchronise.

Also in this release

  • Updates now reopen the app. After an in-app update installs, CBSmembers reopens itself instead of leaving you to click the icon.
  • Tidier grids. The stray black outline that appeared around a clicked cell in the various list screens is gone — selection is clean, whole-row.
  • Security hardening. An extra layer of database isolation between societies is now enforced at the database itself, as defence in depth before further societies come on board. No change to how anything works for you.
  • Help corrected. The "Transferring shares" help now describes how a change of holder actually works (close the old certificate, issue a new one).

1.7 — 2026-06-13

The headline of this release is Marketing — a brand-new workspace that connects CBSmembers to your email marketing service (MailChimp to start with) and keeps your mailing audience in step with your membership, automatically. No more exporting spreadsheets, uploading them by hand, or wondering whether the two lists have drifted apart.

Marketing (new)

A new Marketing workspace lets you link your society to MailChimp and manage who receives your mailings — members and non-members alike — without ever leaving CBSmembers.

  • Connect once. Paste in a MailChimp API key, pick the audience you want to sync, and you're set. The key is stored encrypted and never shown again. The integration is built to be provider-neutral, so other email services can be added in future without changing how you work.
  • Segments that keep themselves up to date. A tag is a segment of your audience — "Newsletter", "Active members", "Lapsed over a year". Each tag is defined by a saved query against your membership, so it stays current on its own: add a member and the next sync includes them; the day they no longer qualify, they drop out. You never hand-curate a list again.
  • Non-members are first-class. Newsletter sign-ups, supporters and ex-members aren't on your share register, but they belong on your mailing list. Manage them as non-member contacts and tag them alongside your members, all in the same audience — and remove them just as easily.
  • Two-way sync, by design. Push sends your members, contacts and their tags out to MailChimp. Fetch brings subscribe-statuses — crucially, unsubscribes — back in, so the app always knows who has opted out. Contacts that come back under an old or different email are matched to the right member with name suggestions, so you don't end up with duplicates.
  • Compliance built in. Marketing is kept strictly separate from your transactional post — a marketing unsubscribe can never stop a member getting a statement, dividend letter or AGM notice. An opt-out is permanent and respected: the app only ever adds a contact to your audience, so it can't resubscribe someone who has unsubscribed, and that suppression survives a member being re-added, an email change, or even being deleted.

The Marketing workspace is permission-gated — your administrator grants access per user — so it stays out of the way until you turn it on. Full details are in the new Marketing help page.

1.6 — 2026-06-05

The headline of this release is the new Share Register — your whole society's shareholdings on one screen — together with finer control over share figures and your society's reporting year, and a round of layout polish.

Share Register (new)

A new Share Register tab on the left-hand activity bar (the certificate icon) gives you an organisation-wide view of every share certificate in one place — distinct from the per-member Shares tab. It's built for the questions a committee or auditor asks: who holds shares right now, how much new investment came in this year, and how much was withdrawn.

  • Three views. Switch between Holdings (every certificate still held at the period end — your current shareholders), Investments (new shares issued during the period) and Withdrawals (shares that left during the period). Hovering the View selector explains each.
  • Built around your society year. Step back and forward through your reporting years with ◀ / ▶ — every view re-reads for the period you're looking at, so a year-on-year comparison is two clicks. Set your year start under Org Settings → Society year (default 1 January = calendar year; set it to, say, 1 April if that's your year).
  • Group, sort, filter and search. Group by member to read each holder as a block; sort by date or certificate number (numbers sort naturally, so "2" comes before "10"); narrow to a single share class; or type in the search box to filter live across member, certificate number, class, status, and share count. Suspended holdings are listed separately — on the register, but excluded from dividends.
  • Print or export. Turn any view into a file that captures exactly what's on screen — the chosen view, period, grouping, sort and filters. Choose a branded PDF to file or send, or CSV / Excel to sort, filter and pivot the figures yourself (the spreadsheet exports add a Status column and repeat the member's name on every row).
  • Jump to a member. Click any row to pre-select that member — they're highlighted and ready the next time you open the Members tab, without pulling you off the register.
  • The ⟳ refresh button reloads the register (handy after you've issued or withdrawn shares elsewhere in the app) and keeps the period and filters you'd set.

Shares

  • Decimal places on share counts are now your choice. A new Shares tab in Org Settings lets you say how many decimal places a share count can carry — 0 (the default) means whole shares only, which is right for most societies issuing indivisible £1 shares. Set it higher (say 2) only if your society genuinely allows fractional holdings. The New Certificate dialog shows the rule as a hint and won't accept a count that's too precise, and editing a certificate's shares is checked the same way. Existing certificates are never changed.
  • Share counts display in your chosen precision everywhere. Registers, share lists, withdrawal and dividend grids, and summary lines all now show share counts with the decimal places you've set — a society on 0 sees clean whole numbers; one on 2 sees figures like "1,250.50".

Look and feel

  • The account controls stay visible wherever you are. Your user name and ⏻ sign-out sit in the top-right of the header, and the ⚙ settings cog sits at the foot of the left-hand activity bar — so none of them disappear when you move between Members and the Share Register (they used to live on the Members rail and vanish). The society logo sits at the far right of the header.
  • Switch workspaces from the left edge. A slim activity bar runs down the left of the window — a person icon for Members and a share icon for the Share Register — so you click between the two workspaces, in the app's line-icon style.
  • A more traditional share certificate. The printed share certificate has been refined: it uses your society's own report font throughout, the society name now wraps gracefully when it's long, and the spacing around the certificate text has been balanced for a cleaner, more formal look.

1.5 — 2026-06-02

A small, practical release focused on day-to-day share admin: withdraw several certificates in one go, and copy or email a member's address in a click.

Withdrawing shares

  • Withdraw several certificates at once. On a member's Shares tab, hold Ctrl (or Shift) and click to select more than one certificate, then click Withdraw. The withdrawal dialog now lists every selected certificate with its own line, shows a running total of the dividend due, and processes them all together. Selecting a single certificate works exactly as before.
  • A rate per certificate. Each certificate in the list carries its own dividend rate, filled in automatically from its share class — so you can withdraw certificates from different share classes in the same batch and each is calculated correctly. You can adjust any rate before confirming.
  • The dividend period is worked out for you. The old "period start" date box is gone. CBSmembers now sets each certificate's dividend period to run from the later of the last paid dividend run and the certificate's own active date, up to the withdrawal date — so the pro-rata dividend covers exactly the time since the member was last paid. The withdrawal still records a note on each certificate and a single summary entry in the member's CRM log.

Members

  • Copy or email an address in one click. On a member's Details tab, two small buttons now sit next to the Email and CC email addresses: one copies the address to your clipboard, the other opens a blank email to that address in your usual mail app (Outlook, etc.). Note that email started this way is sent from your own mail program and isn't logged in the member's CRM history — it's for quick, personal replies.

1.4 — 2026-05-25

The first release with built-in updates: when a new version is available you'll see a red dot on the ? button and a banner inside Help, with one-click update.

This release also rolls out the new CBS brand kit across the desktop, the member portal, and the marketing site — every society's brand colours now flow through every screen, every report, and every email. The desktop chrome has been overhauled around clearer hierarchy, and rich-text editing arrives in every field that holds prose.

Look and feel

  • New CBS brand kit — Fraunces serif for headings, Inter for body text, navy / green / parchment palette. Applied across the desktop app, member portal, and marketing site.
  • Per-society colours flow through every screen. Your society's primary, accent, and stripe colours now appear on row hover/selection, status pills, tab indicators, action buttons, PDF reports, and portal chrome. Set them once in Org Settings → Organisation; the rest of the app picks them up live (no log-out needed).
  • Custom app icon in Windows Explorer, the taskbar, the title bar, and the installer.

Top bar and left rail reorganised

The flat row of grey buttons across the top of the window has been replaced with something that reflects what each one is for.

  • + New member is now visually dominant — filled in your society's primary brand colour — to mark it as the single most common action.
  • Mail Sender · Issues · Dividends collapse into a compact pipe-separated group with small green line icons (envelope · certificate · percent). Still one click away, but no longer competing for attention with the primary action.
  • Board — visible only to users with the Manage Board permission — joins the right-hand cluster.
  • A new ? help button (a small navy-outlined circle) opens the in-app Help dialog described above.
  • The CBSmembers wordmark sits in the top-left — click it to open About. The society wordmark sits in the top-right.

To-Do · Pending Edits · Withdrawals have moved to a new "In Progress" rail. Previously three buttons in the top bar (with a small red badge on Pending Edits to signal the count), they are now a permanently-visible In Progress section in the left rail, above the member search. Each row shows the count inline — "To-Do · 12", "Pending Edits · 3", "Withdrawals · 2" — and the counts refresh live as you finish items off, approve edits, or pay withdrawals. Clicking a row opens the same modal as before. This means you can see at a glance how much work is queued without taking your eye off the member you're working on.

Tab strip with pill switches. The tab control above the workspace has been replaced by a custom tab strip. Same behaviour for opening, switching and closing member tabs, but the two session preferences — "On click: New tab / Replace" and "Open in: Edit / Read" — now live as small pill switches on the right of the strip, with tooltips explaining each setting. They used to sit as text toggles on the top bar.

Help, About, and updates

  • In-app Help (? button) — 9 topics mirrored from the public help docs on cbsweb.stockwoodcbs.org, with a sidebar topic list and a 680 px reading-width content pane. Same source of truth as the public help.
  • About dialog opens from the Help footer, or by clicking the CBSmembers wordmark in the top-left.
  • Release notes archive — this page, accessible from the Help sidebar, with every version since go-live.
  • Automatic update check. The desktop checks for new versions on startup and again whenever you open Help. A red dot on the ? button and a banner inside Help tell you when an update is ready. One click downloads it; the app installs it and relaunches itself.

Rich-text editing everywhere

The new HTMLer editor brings proper bold / italic / underline, paragraphs, headings, bulleted and numbered lists, alignment, and hyperlinks to every long-form text field in the app:

  • Mail Sender — email body, postal body, "Notify Board" body
  • Meeting narratives
  • Director notes (Credit Issues, Fit and Proper)
  • Governance document notes
  • Template Library editor

The toolbar is built into each editor — no more **bold** or {centre} placeholder syntax.

Edit / Read mode

  • Master Edit/Read pill switch in the tab strip now governs every open tab at once. Flip it to Edit and the CRM and Shares grids let you click a row to start editing it immediately; flip it back to Read and the form switches back. Dirty edits are protected — flipping to Read while a tab has unsaved changes leaves that tab in Edit so your work isn't lost.
  • Unsaved-changes prompts added everywhere they matter: clicking another CRM row mid-edit, clicking another Shares row mid-edit, closing a member tab with unsaved details, closing the app with any tab dirty, and cancelling out of the email-template editor. Choose Save, Discard, or Cancel.

Members, shares, and withdrawals

  • CRM tab — grid restyled in your society's row colours; STATUS and TYPE pills in a single right-hand column; a small camera icon now marks entries with a snapshot; the New button now works correctly even when a row is selected.
  • Shares register — grid restyled in your society's row colours; action buttons grouped with the new Ghost / Primary styling.
  • Withdrawal requests — multiple simultaneous live requests per member are now supported (e.g. partial withdrawals across share classes). The per-member view shows a Live Requests summary with the action strip beneath the grid; the org-wide Pending Withdrawals dialog gains the same restyling.

Board and governance

  • Board Conflicts & Disclosures Register PDF. New Summary Report button on the Board → Directors tab. Pick which sections to include (Conflicts ticked by default, plus optional Significant Controls and Other Directorships) and generate an A4 PDF listing every active director's selected sub-sections — ready for tabling at meetings that review the register under CC29.
  • Board screen's Meetings / Directors / Society tabs all picked up the new row-list grid styling and the Ghost / Primary action buttons.

Member portal

  • Dual-brand login — your society's logo on the left, the CBSportal wordmark on the right.
  • Magic-link emails are now per-society. When a member requests a link from your society's own portal URL, the email carries your colours and your logo; when they request it from the generic portal it falls back to CBSportal branding.
  • Logos load instantly from a new public URL endpoint, replacing the previous embedded-image approach (which had grown large enough to break Gmail's clipping threshold for societies with detailed logos).

Communications

  • Mail Sender "Send test" now always runs when you click it. If a required field is missing (subject, body, recipients loaded, test address) the offending field gets a red border and the status line tells you to fix it. Replaces the previous silent-disable that left users hunting for what was wrong.
  • All narrative fields (email body, postal body, board body, template bodies) use the new rich-text editor — see "Rich-text editing everywhere" above.

Reports

  • PDF reports adopt the brand kit — Fraunces for headings, Inter for body, your society's navy (or override) as the primary colour. Affects all nine PDF documents: director records, board conflicts register, share certificates, dividend statements, postal letters, member statements, dividend reports, payment schedules, postal lists.

Org Settings

  • Users & Access — per-user identity, Enable/Disable, and Reset Password now live in a fixed detail panel below the matrix. The matrix scrolls horizontally without ever pushing those actions off-screen.
  • Organisation → image previews. Now distinguish "no image uploaded" from "image stored but can't be displayed". The second case shows an amber notice prompting you to re-upload, instead of silently looking identical to "no image".

Behind the scenes

  • Separate development environment — a dedicated dev database and API have been set up so development and testing of new features never touches live society data.
  • Server fixes — uploaded logos and letter-header images now save reliably even when the combined image payload exceeds 1 MB (raised the API's body limit to 20 MB); PostgreSQL now survives a power-cut + reboot cleanly.
  • Public help docs — the help on cbsweb.stockwoodcbs.org gains a Board & Governance page and a Withdrawal Requests workflow section, both of which also appear in the in-app Help.

1.0.0 — 2026-05-17 (Stockwood go-live)

First production release. Stockwood Community Benefit Society moved off its Access-derived Azure SQL database and onto the new system on cbs-server.

Members & shares

  • Per-member contact, encrypted bank details, communications preferences, and CRM notes (CBSmembers desktop).
  • Share certificate lifecycle (Active / Withdrawn / Transferred), per-class issues, multi-class support.
  • Dividend run: per-class calculation, run history, exportable schedules.
  • Withdrawal-requests management: office-initiated, Pending → Approved → Paid lifecycle, per-society partial-withdrawal mode and notice days.

Directors & governance

  • Directors held separately from members, with meetings and governance documents.
  • Board pack PDF generation, Mail Sender "Notify Board" tab.
  • Director self-record on the portal (/portal/my-record) with self-edit and audit trail.
  • Society tab on the Board screen with file uploads.

Communications

  • Mail Sender redesigned around a template library plus ad-hoc message-on-job, Recipients / Message / Send card layout, rehearsal mode, server-side token + recursive snippet renderer.
  • CRM logging of every sent email and postal letter; postal-body editor on the Message card; per-member CRM bucket filter.
  • Dividend run attachments shared via signed URLs.

Member-facing portal (CBSportal)

  • Magic-link sign-in (no passwords).
  • My Details with self-edit request workflow.
  • Documents tab (PDFs served via signed URLs).
  • My Shares — active certificates grouped by share class with a sum footer; historical (withdrawn / transferred) certificates collapsible underneath.
  • Board section for societies that have enabled it.

Admin (CBSController)

  • Society / user / per-resource ACL management.
  • Query library and ad-hoc query runner against any society's data under row-level-security context.
  • Live error log viewer.
  • Super-admin separation: super-admin accounts are CBSController-only and never visible to societies.

Resource ACL

  • Four-resource catalogue: org_settings, manage_shares (covers certificate lifecycle and the entire dividend lifecycle), manage_documents, bulk_email. Single implication: bulk_email grants manage_documents.

Server-side (CBSApi)

  • ASP.NET Core 10 minimal APIs on cbs-server (148.253.178.47).
  • JWT authentication with permission claims emitted at login; no per-call ACL fetch.
  • Row-level security by society on every member, share certificate, dividend, CRM, audit, and portal table.
  • BCrypt password hashes, AES-256-GCM for bank details.
  • PDF pipeline via QuestPDF; PDFs stored in object storage and served via signed URLs.

Infrastructure

  • nginx + Let's Encrypt auto-renew for cbsweb.stockwoodcbs.org, api.cbsweb.stockwoodcbs.org, stockwood.cbsweb.stockwoodcbs.org, and the storage subdomain.
  • PostgreSQL 17 on cbs-server, bound to localhost only (no LAN or internet exposure).
  • Backups: AES-256 encrypted and deduplicated, nightly cron, retention policy documented.
  • Windows installer (Inno Setup) for CBSmembers desktop.

Data migration

  • Stockwood live data migrated 2026-05-16: 592 members, 2,830 share certificates (1,924,407 active shares / 1,368,930 withdrawn / 675 transferred), 3,513 CRM entries, 21,499 dividend lines across 14 historical runs (£888,725.08 total).
  • All 18 reconciliation checks passed.
  • 53 orphan source rows recorded with audit trail in migration-skipped-*.csv.