Product roadmap
What we're building, what's in flight, and what shipped recently. Updated when we cut a new version — no per-deploy noise.
Development pipeline
Where features sit in the development cycle, from idea to shipping.
Planned
Committed work that hasn't started yet.
- Webhooks & public API — Subscribe to events (member added, rank changed, LOA approved). REST + signed payloads. Settings UI exists in V2; the delivery and public-API surface is the work to finish.
- Community Hubs — Public landing pages on subdomains (e.g. lspd.pulseroster.com) so each community gets a polished public face.
- Subdivision presets — Like department presets but for subdivisions — instantly scaffold the typical units (Traffic, K9, SWAT) under a department.
- Slot scaffolding from presets — Optionally have department presets create starter slots with sequential badge numbers, not just ranks.
- Drag-and-drop role reordering — Replace the up/down arrows on the community roles settings page with smooth drag-and-drop, like Discord.
- Standalone Applications SKU — A pricing tier for communities that just want the application system, without the full roster suite.
Exploring
Ideas under consideration. Not committed.
- AI-assisted department setup — Describe your department in plain English, generate ranks, slots, and subdivisions automatically.
- Real-time multi-editor — Two staff editing the same roster see each other's cursors and edits live.
- Slack integration — Mirror Discord notifications into Slack for communities that run on both.
- Public stats / leaderboards — Opt-in public pages showing top patrols, hours, callouts. Drives recruitment.
- Mobile companion app — Read-only roster, LOA submit, push notifications. Native iOS + Android.
- Configurable audit log retention — Self-serve retention windows beyond the fixed 30 / 180 / unlimited days each plan gives you today.
Releases
Versioned changelog, newest first. Click a version to expand.
v2.8.17ReleasedDiscord nicknames keep up with promotionsSep 6, 2026
Requested by one of you. If there is something you want PulseRoster to do, email [email protected]. Promote someone and their Discord nickname now changes with them, badge number and all. Pick the format your department uses and turn it on. Available on Standard and above. This release also closes several places where a promotion quietly failed to update Discord roles at all.
New features
- Discord nicknames update themselves when someone is promoted — Moving an officer into a new slot gives them a new badge number, and until now somebody had to retype their Discord nickname to match. The bot does it now. Rank changes, slot moves, transfers, a vacated seat, two members swapping seats, and badge or callsign edits all rename the member in Discord. You choose the format: "1234 | Doe J." out of the box, with presets for unit-led, rank-led and callsign-led names, plus a template of your own if none of those fit. Turn it on in Settings then Discord, and use Sync everyone now to bring your existing roster into line in one pass. It stays off until you switch it on.
- Settings then Discord now tells you what is wrong — Discord sync used to fail without telling you why. There is now a live setup check: whether your server is linked, whether the bot is actually in it, whether it holds Manage Roles and Manage Nicknames, and whether the PulseRoster role sits high enough to do its job. Anything missing is named in plain terms with the fix next to it. Two Discord rules it will hold you to, because no bot can get around them: the PulseRoster role must sit above everyone it manages, and the server owner can never be renamed by a bot.
- Pick Discord roles from a list instead of pasting IDs — Mapping a rank to a Discord role meant turning on Developer Mode, right-clicking the role and pasting an 18-digit number. You can now choose from a list of your server roles, shown with their colours. The list also warns you about the two roles that will not work before you pick them: any role sitting above the PulseRoster bot, which it cannot assign, and any role carrying admin-level permissions. Pasting an ID still works if you prefer it, or if your roles cannot be listed for any reason.
Improvements
- The bot now asks for permission to rename members — Nickname sync needs the Manage Nicknames permission, which the bot never used to request. New servers get it automatically. If your bot is already in your server, re-invite it from Settings then Discord to grant it. The setup check will tell you if it is missing, and nickname sync will not rename anyone until it is there.
- Name format variables are lowercase, and there is a last initial — Every variable is now written in lowercase, and {lastinitial} has been added alongside {firstinitial}, so a format like "First L." is finally something you can write. Variables are matched regardless of capitalisation, so any format you saved before this still works exactly as it did.
Bug fixes
- Moving someone into a slot did not update their Discord roles — In slot-based and hybrid departments, seating a member in a slot at a different rank promotes or demotes them, but it was the one promotion path that never touched Discord. Their rank changed on the roster, the change was written to the audit log, and their Discord roles stayed exactly as they were, drifting further out of step with every promotion. Slot moves now sync Discord roles the same way a direct rank change always has.
- Approved transfers and accepted applications skipped Discord entirely — Two more places changed a member rank without telling Discord. An approved department transfer moved someone to a new department at a new rank and synced nothing, and a member onboarded through an accepted application landed on the roster with none of their rank roles, staying that way until a staffer edited them by hand. Both now sync roles and nicknames like every other rank change.
- Renumbering a badge left the member stale in Discord — Editing a slot that somebody is sitting in changes that person, not just the slot, but only moving members between slots was being synced. Renumbering the seat underneath them was not, so the roster and Discord quietly drifted apart. Editing a slot now re-syncs whoever holds it, including their roles when you change the slot rank. Changing a department badge prefix or format, which rewrites every badge at once, now re-syncs the whole department rather than leaving all of it stale.
- People were named inconsistently across the whole app — A promotion announcement in Discord named people by their Discord username rather than the name on your roster, so it could credit a promotion to a name nobody recognised. The same fault ran through notifications, activity feeds, member lists, audit entries and admin screens: each worked out a name its own way, and none of them checked the name you set for that member inside your community. If you had renamed someone on your roster, that name appeared on the roster and almost nowhere else. Every screen now resolves a name the same way.
- Buttons in our emails were invisible in Outlook — Buttons in our emails were invisible in Outlook, which drew them as white text on a white background. They are now readable everywhere, and the logo has been rebuilt so it survives dark mode instead of washing out.
v2.8.16ReleasedPut your roster on your own domainSep 6, 2026
Professional communities can now serve their public roster, application forms and invite links from a domain they own — roster.yourcommunity.com instead of a PulseRoster address. Point the DNS record at us and HTTPS is set up for you, usually within a minute. This was listed on the Professional plan for a long time without existing; it exists now.
New features
- Custom domain for your public pages — Settings → Custom Domain takes a domain you own and serves your public roster from it, along with your application forms and invite links. You add one DNS record, we do the rest: we watch for the record to appear, get you an HTTPS certificate automatically, and renew it before it expires — there is nothing to install and nothing to remember. Your pages also identify themselves to Google as living on your domain rather than ours, so the traffic is yours. Staff still sign in at roster.mypulsetech.com, and your roster keeps working there too.
- A "Check now" button while you wait — DNS changes can take a few minutes to show up, and waiting without knowing whether you got the record right is the worst part of setting this up. Check now tells you immediately: if the record is right we start on your certificate straight away, and if it is not we say exactly what we can see instead — including the most common mistake, which is leaving the record Proxied in Cloudflare when it needs to be DNS only.
Improvements
- Application links use your domain automatically — When your community has a live custom domain, the link shown while you build an application form is already on that domain, in its shorter form — roster.yourcommunity.com/apply/patrol. It is the link you paste into Discord, so it should be yours by default rather than something you have to rewrite by hand. Links you shared before you added the domain keep working.
- The pricing page says the custom domain is available — The plan table listed a custom domain as "Soon" while the feature was being built. It is available now and the page says so. Full API access is still marked Soon, because that one genuinely has not shipped yet.
v2.8.15ReleasedCommunity owners can see their own application submissions againSep 6, 2026
If you own your community and had not also given yourself a staff role, your Applications inbox was empty — even while the command staff you appointed could see every submission that came in. That is fixed. Owners now see every application and every submission in their community, with no setup required.
Bug fixes
- The Applications inbox was empty for community owners — Owning a community grants you everything in it, but the Applications inbox was not honouring that — it only listed forms you could reach through a staff role or a department command role. An owner who had never assigned themselves a staff role saw an empty inbox and a pending count of zero, while the people they had appointed saw every submission. Opening a submission link directly still worked, which made the whole thing look random. Owners now see every application and every submission in their community, in the inbox, on the review board, in analytics and in the sidebar count. Nothing needs to be assigned to make it work, and no other role is affected.
v2.8.14ReleasedThe pricing page now only promises what the app can actually doSep 6, 2026
An audit of the plan table found features sold as available that are still being built, and one paid feature that was never fully delivered. A custom domain and full API access are now marked "Soon" everywhere they appear, so nobody upgrades expecting them today. White-label branding now does the thing its name promises: it takes our name off your public roster. And PulseCAD no longer appears as available on Free, which it never was.
Improvements
- Custom domains and the public API are marked as not-yet-available — The plan table listed a custom domain and full API access as Professional features with a plain checkmark, which read as "available the day you upgrade". Neither is built yet. Both now show as "Soon" on the pricing page with a note explaining what that means, and both are listed on the roadmap so you can see where they sit. Everything on the plan table without that marking works today.
- Subdivision documentation is confirmed as available on every plan — Scoping a document or folder to a subdivision was internally flagged as a Professional feature while actually working on every plan, including Free. Nothing was ever blocked, but the plan data disagreed with the app. The flag is gone and subdivision scoping is now documented as what it has always been — available to everyone.
Bug fixes
- White-label branding removes the "Powered by PulseRoster" credit — White-label has been a Professional feature for a long time, but it only ever changed your logo — the "Powered by PulseRoster" line stayed at the bottom of your public roster no matter what you paid. It is now gone for Professional communities, along with our name in the page description that search engines show and in the preview card when someone posts your roster link in Discord. The one thing white-label is supposed to buy you is that the page looks like yours, and now it does.
- PulseCAD is no longer offered to communities that cannot use it — The PulseCAD integration was listed as included on Free, but connecting a CAD has always required an active Standard or Professional plan — so a Free community could open the settings page, generate a key, and only discover the plan requirement when the connection was refused. Free communities no longer see it offered. If you are on a paid plan nothing changes.
- Plan table wording corrections — The Professional column of the Discord notifications row read "All types types". The roadmap also described audit log retention as defaulting to 90 days, a number that has never applied — retention is 30 days on Free, 180 on Standard and unlimited on Professional.
v2.8.13ReleasedSubdivision applications are open to the department againSep 6, 2026
An application scoped to a subdivision could only be submitted by people already in that subdivision — so the forms you use to recruit into a unit turned away everyone they were built for, and a brand-new unit with no members yet could not receive a single application. Any active member of the unit's parent department can now apply. Nothing about who reviews these applications has changed.
Improvements
- The member count on a unit application reflects who can apply — The count shown at the top of a subdivision application counted only the people already in that unit, so a three-person unit advertised "3" when the whole department was welcome to apply. It now shows how many members are actually eligible to submit.
Bug fixes
- Members can apply to join a subdivision — Opening a subdivision application showed "Restricted to a specific subdivision" to anyone who was not already in that unit. Because these forms exist to recruit into the unit, that turned away exactly the people they were meant for — and a unit you had just created, with nobody in it yet, could not be applied to by anyone at all. Any active member of the unit's parent department can now submit, and the badge on the form says so. Reviewers are unchanged: the unit's leads and the department's command staff, exactly as before.
v2.8.12ReleasedFeedback reports can now carry a picture of what you were looking atSep 5, 2026
Describing a visual bug in words is hard, and a report that says "the button does nothing" is hard to act on. The Send feedback window now offers to attach a screenshot of the screen you were on. You see exactly what will be sent before it goes, and you can switch it off.
New features
- Attach a screenshot to a feedback report — Opening Send feedback now captures the screen behind it and shows you a preview. Send it and our team sees exactly what you saw, which usually removes a whole round of back-and-forth. The preview is there so nothing is sent that you have not seen: untick the box and the report goes as text only. Screenshots are visible only to the PulseRoster team, are never posted anywhere public, and are deleted automatically after 7 days.
Improvements
- Reports include your screen size and browser — Feedback now carries your browser and window size alongside the page you were on. Layout problems are very often specific to one browser or one screen width, and this is usually the difference between us reproducing something on the first try and asking you three follow-up questions.
v2.8.11ReleasedForms that will not save now tell you which field is wrongSep 5, 2026
When a save was rejected, PulseRoster said "Validation failed" and nothing else — no field name, no reason. On a long form like the application builder that left you re-checking forty inputs by hand to find the one the server objected to. Errors now name the exact field, including which approval stage or question it belongs to.
Improvements
- Errors inside repeated sections point at the right entry — Field errors from lists — approval stages, questions, Discord role rules — used to collapse to the name of the whole list, so a problem with the third question was reported only as a problem with "questions". They now carry their position, so the message identifies the specific stage or question rather than the group it sits in. This applies across application forms, templates, labels, submissions, time logs, onboarding and Discord role mapping.
Bug fixes
- Validation errors name the field instead of just saying "Validation failed" — Saving or publishing an application form could fail with a bare "Validation failed". The server knew exactly which field was wrong and why, but that detail never reached the screen. It does now — you get messages like "Approval stage 1 name: must contain at least 1 character" or "Question 3 label: must contain at most 200 characters", pointing straight at the input to fix.
v2.8.10ReleasedDeleting a community no longer promises a recovery you cannot doSep 3, 2026
The delete confirmation said a deleted community was "recoverable for 30 days" and that we would keep your data "in case you change your mind" — which read as an undo button that does not exist. The 30-day retention is real, but only support can act on it. The wording now says so.
Bug fixes
- Delete confirmation now states that you cannot undo it yourself — The Danger Zone described community deletion as "Recoverable for 30 days", and the confirmation dialog said your data was kept "in case you change your mind". There is no restore button anywhere in PulseRoster, so that reading was wrong. Both now say plainly that deletion cannot be undone from the app, and that your data is held for 30 days — so if you delete a community by mistake, contact support inside that window and we may be able to bring it back.
v2.8.9ReleasedDiscord role sync tells you why a role would not applyAug 12, 2026
When Discord role sync could not apply a role, it reported a number — a role ID and an error code — which told you nothing about what to fix. It now names the role and, in the most common case, tells you exactly what to change in your Discord server.
New features
- Sync warns up front about roles it cannot manage — Discord will not let any bot add or remove a role that sits above the bot's own role in your server's role list. Sync now checks this before it runs and shows a single warning listing every mapped role affected, so you can fix the whole list in one pass — in Discord, open Server Settings > Roles and drag the PulseRoster role above the roles you want it to manage. Sync also tells you plainly when the bot is missing the Manage Roles permission entirely.
Bug fixes
- Role sync errors now name the role and the cause — Sync results used to read "Failed to add role 1234567890123456789: 403" — a role ID and an error code. They now name the role and the reason, such as "Could not assign 'Sergeant' — it is above the PulseRoster role in your Discord role list", along with what to do about it. Roles that were deleted in Discord, and syncs that Discord rate limited, are called out separately instead of all looking like the same failure.
v2.8.8ReleasedPulseRoster is moving to PulseTech sign-inAug 7, 2026
PulseRoster is moving to the PulseTech account, the same sign-in already used by PulseCAD, PulseLMS and PulseBilling. You can start using it today. Signing in with an email and password, or with a magic link, is being retired as part of that move — so this is a change worth making now rather than later.
New features
- Sign in with PulseTech — A "Sign in with PulseTech" button is now on the login page. If you already use PulseCAD, PulseLMS or PulseBilling, it is the same account — one sign-in across all of them instead of a separate one for each. Your PulseRoster account has already been matched to it, so you keep the same communities, ranks and history; there is nothing to set up. If your account came from your Discord profile, that has been matched too.
Improvements
- Email, password and magic-link sign-in are being retired — They still work for now, but they are going away — PulseRoster will sign in through your PulseTech account only. Discord sign-in is not going away; it will simply go through your PulseTech account instead of directly, and for most people that means clicking the same button and noticing nothing. If you sign in with an email and password today, the one thing worth doing is signing in with PulseTech once before the switch, so you are not setting a password on the day you need to get to your roster. We will say so here before the old methods are turned off.
v2.8.7ReleasedYour admins can set up PulseCAD without being handed the accountAug 7, 2026
PulseCAD was the only integration that nobody but the account holder could touch, so delegating it meant sharing the login. Staff with the "Manage Discord and API integrations" permission can now set it up themselves.
Improvements
- PulseCAD setup can be delegated to staff — The PulseCAD page was locked to the person who created the community, even for staff roles built from the Full Admin preset — the one described as full access to everything except billing. That made it the odd integration out: Discord, with its bot token, has always been delegable. PulseCAD now uses the same "Manage Discord and API integrations" permission, so anyone you have already trusted with your Discord setup can connect PulseCAD, manage its keys, and configure its webhook. Billing and the Danger Zone are unchanged and remain owner-only.
Bug fixes
- Search no longer offers settings you cannot open — Owner-only pages showed up in the command palette (Ctrl+K) for any staff member, and picking one just bounced you back to the community page. Search now shows the same set of settings the Settings page does, so everything it offers actually opens.
v2.8.6ReleasedThe template picker now tells you when there is nothing to pickJul 24, 2026
Accepting an applicant looked like it had lost its template picker when you simply had not written an acceptance template yet. The picker now always appears and points you at where to add one.
Bug fixes
- Accept no longer looks broken when you have no acceptance template — The "Insert template" picker disappeared completely whenever you had no saved template for the action you were taking. If you had written a decline template but not an acceptance one, declining offered the picker and accepting showed nothing at all — which read as the accept action being broken rather than as an empty list. The picker now always appears, and when you have nothing saved for that action it says so and links straight to Response Templates so you can add one.
v2.8.5ReleasedResponse templates on accept and declineJul 24, 2026
Saved response templates only appeared when scheduling an interview. They now show up on accept and decline too, and on the board.
Improvements
- Templates work from the applications board too — Acting on an applicant by dragging their card on the board never offered templates for any action, only the full submission page did. The board now offers the same saved replies.
Bug fixes
- Templates appear when accepting or declining an applicant — The "Insert template" picker only showed up on the Schedule interview action. Accepting or declining gave you no way to pull in a saved reply, so any acceptance or denial wording had to be retyped by hand every time — even though the templates were saved and visible in your settings. Both actions now offer the templates you have written for them.
v2.8.4ReleasedDuty clock actions show up in the audit logJul 23, 2026
Clock-ins, clock-outs and leave requests made through Discord were missing from your community audit log. They are recorded again.
Bug fixes
- Discord duty and leave actions are recorded in the audit log — Clocking in or out through the Discord bot, setting up the duty panel, and submitting leave from Discord all worked, but none of them left an entry in your audit log — so the activity page showed nothing for shifts started outside the website. Supervisor force-clock-outs and automatic end-of-shift closures were missing for the same reason. All of these are now logged against the person who performed them. Entries only start from this release; actions taken before it could not be recovered.
v2.8.3ReleasedApplication builder loads againJul 23, 2026
Creating or editing an application showed an error page instead of the form. Both work again.
Bug fixes
- Creating and editing applications no longer errors out — Since the per-status Discord role automation shipped earlier today, opening an application to edit it — or starting a new one — showed a "Something went wrong" page instead of the builder, so applications could not be changed at all. The form loads normally again, with your existing role settings intact.
v2.8.2ReleasedActivity type on the duty panel and supervisor clock-insJul 23, 2026
Picking an activity type now works on every way of clocking in, not just the /duty on command — including the channel panel buttons and when a supervisor clocks someone in.
New features
- Set your activity type from the duty panel — Clocking in with the panel buttons used to always fall back to your community default, because a button has nowhere to put an option. The confirmation you get after clocking in now includes an activity type picker, visible only to you, so you can log the shift as training or an event without switching to the slash command. Change your mind mid-shift and you can pick again.
- Set the activity type when clocking someone else in — /duty onbehalf now takes the same optional type as /duty on, so a supervisor starting a shift for someone else can say what it is for rather than leaving it on the default.
v2.8.1ReleasedChoose your activity type on Discord, and review time logs properlyJul 23, 2026
Members can now say what they are on duty for when clocking in on Discord, picking from your own activity types instead of everything defaulting to one. Supervisors can correct a time log, or deny one with a reason so the hours stop counting.
New features
- Pick your activity type when clocking in on Discord — /duty on now takes an optional type, suggested from the activity types your community has configured — so a training shift is logged as training rather than everything landing on your default. If the shift turns out to be something else, /duty off type:... changes what it gets logged as. Leave it off and your community default still applies exactly as before.
- Correct a time log — Supervisors can now edit an existing entry from the Time Logs page — its activity type, hours, start and end times, and description. This is the fix for a forgotten clock-out that credited the wrong hours, without having to delete the entry and re-enter it. Every change is recorded in the audit log with the previous values.
- Deny a time log instead of deleting it — An entry can be denied with a reason. It stays on the member's record so they can see it was rejected and why, but its hours no longer count toward activity requirements, warnings or analytics. Deleting is still there for genuine junk, and a denial can be withdrawn if it was a mistake.
v2.8.0ReleasedDiscord role automation for applicationsJul 23, 2026
Applications can now remove Discord roles as well as grant them, and you can set different role changes for accepting, declining, and moving someone to interview. There is also a "pending applicant" role that is added when someone applies and taken away once their application is resolved.
New features
- Remove Discord roles automatically — Alongside granting roles, an application can now take roles away. The usual case: clear a "Pending Review" or "Civilian" role at the moment someone is accepted, so nobody has to remember to do it by hand.
- Different role changes per outcome — Accepting, declining, and moving someone to interview can each grant and remove their own set of roles. Accepted is shown expanded and the other two are tucked away, so the common setup stays a short form. An outcome you leave empty changes nothing.
- A role for open applications — Nominate one role to be given as soon as someone applies and removed once their application is accepted, declined, or withdrawn. Useful for a "Pending Review" role that no longer has to be cleaned up manually. It applies to new submissions, so anyone already waiting keeps whatever roles they have.
- See what actually happened to their roles — Submissions now show which Discord roles were granted, which were removed, and anything that failed with the reason why. Previously all of this was invisible — if the bot could not apply a role, nothing on screen said so. There is a Re-apply button for once you have fixed the cause.
- Warnings before you get it wrong — When picking roles, the list now flags any role your bot is not able to manage because it sits too high in your Discord server, and marks roles carrying elevated permissions such as Administrator or Manage Roles. Both are warnings rather than blocks, so you can still do it deliberately.
- Accepted applicants get a Discord message — When someone is accepted and given roles, the bot sends them a direct message confirming their new access. Discord blocks messages from bots for plenty of people, so this will not always arrive — the submission page records whether it was delivered.
Improvements
- The role automation switch now covers removals — The community-wide toggle under Application Settings previously only governed granting roles. It is now a single switch for all role automation, so turning it off stops roles being added and removed alike.
v2.7.0ReleasedDiscord duty clockJul 23, 2026
Members can now go on and off duty from Discord, and their shifts turn into time logs automatically. A live on-duty board shows who is out right now, both in Discord and on your Time Logs page. The Discord bot has also been rebuilt — its commands now return real roster data instead of just linking to the website.
New features
- Clock in and out from Discord — Use /duty on to go on duty and /duty off when you finish. The time between the two is logged to your activity hours automatically, so there is nothing to fill in afterwards. If you serve in more than one department, add the department to the command; otherwise your primary department is used.
- A clock in/out panel for your duty channel — Run /duty panel in a channel to post a permanent panel with Clock In and Clock Out buttons. It updates itself as people come on and off duty, so the channel always shows who is currently out without anyone having to ask.
- See who is on duty right now — Your Time Logs page now has a live on-duty board showing everyone currently clocked in, which department they are with, and how long they have been out — counting up in real time. Staff see the whole community, supervisors see their own departments, and members see their own shift. /duty status gives the same picture inside Discord.
- An on-duty role in Discord — Optionally nominate a Discord role to be applied while someone is on duty, so who is out is visible at a glance in the member list. Set it under Settings, then Activity.
- Supervisor controls for shifts — Supervisors can clock a member out who logged off without doing it themselves (/duty forceoff, or from the on-duty board), and can start a shift for someone who cannot reach Discord (/duty onbehalf). Hours from either are always recorded as unverified and flagged for review.
- Forgotten clock-outs are handled for you — A shift left open past your maximum shift length is closed automatically, credited only up to that limit, and flagged for review — so a forgotten clock-out neither runs up unearned hours nor loses a genuine shift. The limit defaults to 12 hours and is configurable, as is whether Discord shifts count as verified straight away.
Improvements
- Discord commands now return real information — /roster, /lookup and /activity previously just replied with a link to the website. They now return your actual roster, member profiles with rank, callsign and certifications, and your live activity progress for the period. /loa now submits a real leave request rather than telling you to go and file it on the site.
Bug fixes
- Leave requests now start and finish on schedule — Approved leave was not being switched to active when its start date arrived, and finished leave was not being closed out when it ended, so members could show the wrong status on the roster. Both now run automatically every day.
- Documentation folders load again — A missing database change was preventing parts of the documentation system from loading. It has been applied.
v2.6.1ReleasedDepartment folders and document permissions by departmentJul 23, 2026
A follow-up to the folder management update: folders and documents can now be restricted to specific departments, every department gets its own private documentation folder automatically, and the sidebar lists your documents so you can drag them straight into a folder.
New features
- Restrict a folder or document to specific departments — Departments are now one of the things you can grant access to, alongside staff roles, ranks, subdivisions and named members. So a folder can be made visible to only LCSO and BCSO, for example, and anyone actively assigned to either department can open it.
- Every department gets its own private folder — Creating a department now also creates its documentation folder, visible only to members of that department — so a Dispatch folder is not readable by someone who is not in Dispatch. These folders can be renamed, moved and re-permissioned like any other, but cannot be deleted by accident; they are removed automatically if the department itself is deleted.
- Documents in the sidebar, and a list view — The folder sidebar now lists the documents inside each folder, and staff can drag a document straight onto another folder to file it, or onto "All Documents" to move it back to the top level. Documents can also be shown as a compact list instead of cards, and your choice is remembered.
v2.6.0ReleasedImproved folder managementJul 23, 2026
Documentation folders can now be renamed, moved, and reorganized after they are created, documents can be moved between folders without deleting and re-uploading, and you can control exactly which roles, ranks, subdivisions, or members are able to open a folder or document.
New features
- Rename and reorganize folders — Folders are no longer permanent once created. Each folder now has an actions menu to rename it, change its description, nest it under another folder, move it to a different department, or reorder it among its neighbours. You can also drag a folder onto another to nest it, or onto "All Documents" to move it back to the top level.
- Move documents between folders — Documents can be moved into a folder, to a different folder, or back out to no folder at all — from the document card, from the edit page, or by selecting several at once and moving them together. Version history and acknowledgments are kept, so there is no longer any reason to delete and re-upload a document just to file it somewhere else.
- Folder and document permissions — You can now restrict who is able to open a folder or an individual document. Grant access by staff role, rank, subdivision, department role level (supervisors and above, or command staff only), or to specific named members. Restrictions apply to everything inside a folder, including subfolders, and a document can narrow access further but never widen it. Community staff and a department's own command staff always keep access, so you cannot lock yourself out.
Improvements
- Restricted documents stay out of search — Document search, folder listings, and required-reading acknowledgment now all respect folder and document permissions, so a restricted document never surfaces its title or a snippet of its contents to someone who is not allowed to read it.
Bug fixes
- Moving a folder into its own subfolder no longer hides it — It was previously possible to place a folder inside one of its own subfolders, which left that folder and everything in it stranded and invisible in the sidebar. That move is now rejected with a clear explanation.
v2.5.4ReleasedNotifications tell you when they cannot be deliveredJul 20, 2026
The channel picker now knows which channels your Discord bot can actually post in, and each event shows whether its last notification was delivered. Previously a notification pointed at a channel the bot could not reach simply never arrived, with nothing anywhere to tell you why.
New features
- Channels the bot cannot post in are flagged before you pick them — Syncing channels now works out which ones the bot can genuinely post in, taking your channel permissions into account, and marks the rest with a "No bot access" tag. Choosing one shows exactly which permission is missing and how to grant it, instead of silently saving a setting that could never work.
- Delivery status on every event — Each notification event now shows whether its last attempt was delivered, and if it failed, the reason in plain language such as the bot not having access or the channel no longer existing. You no longer have to guess whether a notification went out.
v2.5.3ReleasedThe Discord bot can now post where you tell it toJul 20, 2026
When you add the PulseRoster bot to your Discord, it now asks for permission to view and post in channels. It previously only asked to manage roles, which meant notifications could not be delivered to any private or staff-only channel even after you selected it.
Bug fixes
- Bot invite now requests the permissions notifications actually need — The invite link only asked for Manage Roles, so the bot could post only in channels already open to everyone. Any notification pointed at a locked-down channel, which is where most communities keep their logs, silently failed. The invite now also requests View Channel, Send Messages, and Embed Links. If your bot is already installed, re-add it from Settings then Discord to grant the new permissions, and make sure it has access to the specific channels you chose in Settings then Notifications.
v2.5.2ReleasedDiscord notifications go to the channel you pickedJul 20, 2026
If your community had set up the older single Discord webhook before the Notifications tab existed, that old webhook quietly overrode every per-event channel you chose. Your notifications were sending the whole time — just all into the one old channel. The channel you pick per event now wins.
Bug fixes
- Per-event channels are no longer overridden by the old webhook — Communities that configured the legacy Discord webhook in Settings kept sending every notification to that one channel, even after choosing a specific channel for promotions, disciplinary actions, and so on in Settings → Notifications. Those picks looked like they saved but had no effect. The channel you select for each event now takes priority, and the old webhook is only used for events you never configured.
v2.5.1ReleasedPDF documents: working edit page and display modesJul 20, 2026
A PDF documents follow-up: the Edit button now opens a real management page where you can rename a PDF, swap in a new file without re-uploading from scratch, and choose whether members read it page-by-page or as one continuous scroll.
New features
- Manage PDFs after upload — The edit page for a PDF now lets you rename the document, replace the file (readers see the new file immediately and a new version is recorded in history), toggle copy protection, and delete — no more deleting and re-uploading to make a change.
- Paged or continuous scroll reading — Each PDF document now has a display mode: keep the classic page-by-page viewer with Next/Previous buttons, or switch to continuous scroll so members read the whole document in one smooth scroll. Pick it when uploading or change it any time from the edit page.
Bug fixes
- Edit works on PDF documents — Clicking Edit on a PDF document used to flash the page and drop you right back on the viewer without doing anything. It now opens the document management page as expected.
v2.5.0ReleasedGuided onboarding and easier member setupJun 30, 2026
A setup-focused release: a streamlined onboarding wizard with a dashboard setup checklist, automatic placement on your roster, smarter member adding by Discord (real names and avatars — no more placeholders), and a live preview of how your name appears on the roster.
New features
- Guided setup with a dashboard checklist — New communities get a streamlined setup wizard focused on the essentials, plus a checklist on your dashboard that tracks what is left to do — create departments, add members, turn on your public roster, and connect Discord — so nothing gets missed.
- You are placed on your roster automatically — When you finish setup, you are now added to your first department at its top rank automatically, so your roster and dashboard are populated from day one instead of starting empty.
Improvements
- Adding members by Discord — Adding a member by Discord ID now looks up their real Discord name and avatar automatically as soon as you paste the ID — no more "User 1234" placeholders — and you can set a display name for your roster right there.
- Turn on activity tracking during setup — Communities on a plan that includes activity tracking can switch it on right from the setup wizard, with the default duty activity types ready to use immediately.
- Live preview for your roster name — The "Your Roster Name" settings on your profile now show a live preview of exactly how you will appear on this community’s roster, using the community’s name format. Your name here stays separate from your account and any other communities you are in.
v2.4.2ReleasedSecurity hardening and roster reliabilityJun 29, 2026
A security-focused release: tighter controls over who can grant staff and command roles, a hardened PulseCAD integration, and a batch of reliability fixes to slot rosters, department transfers, and certifications.
Bug fixes
- Slot rosters work reliably — Swapping members between slots, promoting a member, and assigning someone to a slot now complete cleanly instead of occasionally erroring — including on larger rosters and when two people make changes at the same time.
- Department transfers — Transferring a member — including back into a department they were previously in — now completes in one step and frees up the seat they held in their old department.
- Rank changes stay in sync — Changing a member’s rank from the mobile app now updates the slot board too, so their position and rank always match across the app.
- Certifications and discovery tags display correctly — Older certifications with tiers no longer cause the award screen to error, and community discovery tags created under the previous system display and save correctly.
Security
- Tighter controls on staff and command roles — Granting staff roles, command-staff, and supervisor positions — and managing the certification catalog — is now limited to owners, admins, and members with the matching permission. Regular staff can no longer assign these to themselves or others.
- Hardened PulseCAD integration — Webhook destinations are now validated before any data is sent, integration secrets are encrypted at rest, and API keys are limited to exactly what they’re allowed to read.
v2.4.1ReleasedReliability fixes and configurable activity trackingJun 26, 2026
Certification and transfer actions now work reliably with clearer permissions, activity requirements finally honor every setting you configure — weekly tracking, proration, exemptions and thresholds — and we fixed an issue that could make some actions hang.
Improvements
- Clearer certification permissions — Command staff and members with a certifications staff-role permission can now open the catalog and award certifications — the menu item and “Award” buttons no longer lead to a “no access” dead end. Who can manage versus award is now consistent everywhere.
- Activity requirements are fully configurable — Weekly and bi-weekly tracking periods, proration for newly-joined members, leave-of-absence exemptions, and a custom warning threshold now all take effect as configured — not just a fixed monthly target. The “at risk” list and warnings reflect your actual settings.
- Activity displays match your settings — Member and time-log activity widgets now show your community’s tracking period (for example a weekly window rather than “this month”) and the correct hour requirement from your settings.
Bug fixes
- Certification actions work reliably — Revoking, renewing, and deleting certifications now complete right away instead of stalling, and every awarded certification clearly shows who granted it and when.
- Department transfers — The “Transfer Member” action now starts a transfer for the member you selected (it previously defaulted to your own record). Approving a transfer reliably moves the member to their new department in one step and records it in the activity log.
- A more dependable save experience — Resolved an issue that could cause some save and update actions across the app to hang instead of completing.
v2.4.0ReleasedA faster, friendlier slot rosterJun 26, 2026
A big overhaul of the slot-based roster: move and swap members between slots, vacate a seat in one click, set up slots far faster, and reach every department tool from a redesigned navigation.
New features
- Move and swap members between slots — Reassign a member to a different slot at the same rank, or swap two members’ slots in one step — right from the roster. No more vacating and re-assigning to shuffle people around.
- Vacate a slot in one click — A dedicated “Vacate slot” action opens a position back up without changing the member’s rank or removing them from the department — it’s not a demotion, just an open seat.
- Much faster slot setup — Build out a department’s slots in a fraction of the time: create slots across several ranks at once, clone one rank’s slot count to another, see a per-rank capacity overview (filled vs. vacant) before you add more, reorder slots, and reserve a slot to hide it from the roster without deleting it. You can also fill vacancies straight from the slot-management page.
- Redesigned department navigation — Jump to any department from a new “Departments” item in the sidebar, and move between a department’s Roster, Slots, Ranks, Subdivisions, and Settings from a tab bar that stays put on every page. Breadcrumbs make it clear where you are on deeper pages.
Improvements
- Clearer slot assignment — Seating a member into a slot now warns you up front when it will change their rank, shows when a member is already in a slot, keeps manually-added badge numbers consistent with your department’s format (with a live preview), and gives better guidance when a department has no slots yet.
- Promotions no longer create slots silently — When a promotion needs a slot and none is open, the slot created for you is now confirmed on screen and recorded in the activity log — so new positions never appear out of nowhere.
- A more reliable slot roster under the hood — A member can no longer end up seated in two slots at once, and the roster data model was trimmed of unused fields — making slot rosters faster and more dependable.
v2.3.3ReleasedStructure view & navigationJun 25, 2026
A new org-chart view of any department, a one-click jump to your own department, cleaner rank icons, and a fix that keeps you signed in while you work.
New features
- Department structure (org-chart) view — A new “Structure” tab on any department roster shows the whole department as a top-down org chart — rank by rank, who holds each position, and where the vacancies are. It works for every roster type, uses your uploaded rank insignia, and has a one-click toggle to hide vacant spots.
- My Department shortcut — Members get a direct “My Department” link in the sidebar that jumps straight to their own department’s roster, instead of going through the Overview page.
Improvements
- Cleaner rank display — Ranks without a custom insignia no longer show a generic placeholder icon — the roster now shows your uploaded rank insignia, or nothing at all, for a cleaner look.
Bug fixes
- Manage Slots for inherited subdivisions — Slot-based subdivisions now show a clear “Manage Slots” button on the roster — including when a subdivision inherits its roster mode from the parent department, where it was previously hidden.
- Staying signed in — Sessions now refresh automatically while you’re active, so you’ll no longer be unexpectedly signed out in the middle of a task — such as an “authentication required” message when uploading or saving.
v2.3.2ReleasedPDF documentsJun 24, 2026
Upload PDFs straight into your documentation with a built-in viewer, require members to read them, and optionally lock down copying — plus fixes for staff promotions and slot-based rosters.
New features
- PDF documents with an integrated viewer — You can now upload a PDF as a document and members read it right in the app — a clean, page-by-page viewer with zoom, no downloads or extra browser tabs required. PDFs work like any other document: drop them in folders or scope them to a department, require acknowledgment to track who’s read your policies, and they count toward your plan’s document limit.
- Copy & download protection for PDFs — When uploading a PDF you can turn on “No copy / download” to hide the download and print buttons and disable text selection — a handy deterrent for sensitive SOPs and policies you’d rather members read in place.
Bug fixes
- Promotions for staff with a custom Roster role — Fixed an issue where staff who manage the roster through a custom Staff Role (rather than the legacy Admin flag) couldn’t open the Edit Assignment page or promote members — the button appeared but sent them back. Roster managers can now edit assignments and promote as intended.
- Consistent ranks on slot-based rosters — On slot-based and hybrid department rosters, promoting a member from their profile now moves them into a slot at their new rank — so the main roster and the member’s profile always show the same rank.
v2.3.1ReleasedCustom Discovery tags & support accessJun 16, 2026
Community Discovery gets self-serve custom tags with smart suggestions, support is one click away from the footer, and Discord sign-in is more reliable.
New features
- Custom tags for Community Discovery — When you list your community in the Discovery directory, you can now create your own tags instead of picking from a fixed list. As you type, tags other communities already use are suggested — choose one to line up with them, or add your own. Visitors can filter the directory by any tag that’s in use, and your card shows the tags you’ve chosen.
Improvements
- Easier access to support — You can now open a support ticket directly from the footer, which links to our support portal at support.mypulsetech.com — alongside quick ways to join our Discord, email us, or call.
Bug fixes
- Reliable Discord sign-in — Fixed a problem where signing in with Discord could fail with an authentication error when an account’s email was already in use by another account. Discord login now completes reliably.
v2.3.0ReleasedDisplay names, roster columns & securityJun 9, 2026
Per-community display names now apply everywhere, departments can show or hide callsign and badge columns, plus a round of permission-hardening and reliability fixes.
New features
- Show or hide callsigns and badge numbers — Each department can now choose whether its roster shows the callsign column, the badge-number column, or both, from Roster Structure settings. Columns you don’t use are hidden automatically, and the layout adjusts so there are no empty gaps.
Improvements
- Display names show everywhere — A member’s per-community display name now appears consistently across the whole app — activity logs, time logs, leave of absence, disciplinary records, commendations, transfers, and the leadership list — not just on the roster and member directory. Surfaces that previously fell back to a Discord username now respect the name you set.
Bug fixes
- Roster reliability polish — Fixed stale state and a race in the quick rank-change panel, made the badge-number preview match what actually gets written for multi-part formats, and made bulk slot creation follow your configured badge format. Department rank levels can no longer be set to a duplicate, and command-staff/supervisor flags stay in sync when changed via the API.
Security
- Hardened record permissions across the app — Added community ownership checks to disciplinary, transfer, time-log, leave-of-absence, commendation, and roster-slot actions so a record can only ever be modified within its own community.
v2.2.3ReleasedRoster reliability & permissionsJun 9, 2026
A round of roster fixes — callsign editing, roster slot menu actions, and stronger permission checks across slot assignments and roster slots.
Improvements
- Consistent permissions when seating members — Seating a member into a roster slot at a different rank now follows the same promotion and demotion limits as a direct rank change, so rank cannot be changed past a staffer’s own level by way of slot assignment.
Bug fixes
- Editing callsigns works again — The Edit Callsign dialog now accepts and saves input correctly. Previously the field could clear itself as you typed, making it impossible to enter a callsign.
- Roster slot menu actions always respond — “Change Rank” and “Edit Callsign” from a roster slot’s menu now open reliably, even when a slot’s configured rank differs from the member’s current rank — instead of silently doing nothing.
- Reliable callsign assignment — Callsign suggestions no longer collide for departments that use letter-and-number abbreviations (like K9 or P2), and duplicate callsigns are now prevented when assigning members.
Security
- Hardened roster slot management — Added ownership checks so roster slots can only ever be edited or removed within their own community and department.
v2.2.2ReleasedCommand staff permissionsJun 8, 2026
Command staff can manage subdivisions and ranks without needing to be the owner or hold a separate admin role.
Bug fixes
- Command staff can manage subdivisions and ranks — Members who hold a command staff rank can now assign members to subdivisions and manage ranks without needing to be the community owner or hold a separate admin role. Previously this could fail with a “please select a valid rank” message even when everything was filled in — command staff granted by rank is now recognized everywhere it matters.
v2.2.1ReleasedPer-community display namesJun 4, 2026
Control how each member’s name appears on your roster — independently per community — plus a simpler name format and a lower Professional price.
New features
- Per-community display names — Set how a member appears on your roster without touching their account name or how they show in other communities. Admins can rename anyone from the member’s edit page, and each member can set their own name for your community from their profile. The name stays consistent across the department roster, member directory, public roster, and member profile.
Improvements
- A simpler display name format that actually applies — Display Name Format is now a single template that renders across your rosters and member directory — keep it as plain names, or pull in details with variables like {name} ({callsign}). We removed the old rank-prefixed templates, since rank is already shown as roster section headers.
- Lower Professional price — The Professional plan is now $19.99/month (down from $24.99) — same unlimited departments and members, custom domain, white-label branding, and full API access.
Bug fixes
- The setup wizard always closes — The new-community setup wizard can now always be dismissed with the X or the Escape key, even if a save hiccups — so owners never get stuck on onboarding.
v2.2.0ReleasedDiscord member import & role-aware toursJun 2, 2026
Import members straight from your Discord server, plus guided tours tailored to each role.
New features
- Import members from Discord — Bring people onto your roster straight from your Discord server. Pick the role(s) to import from, choose the destination department and rank, optionally auto-assign callsigns and badge numbers, and PulseRoster creates everyone who holds those roles (bots are skipped). Preview exactly who will be added before you commit. Available on Standard (once per billing cycle) and Professional (unlimited).
Improvements
- Role-aware guided tours — The “Take a tour” walkthrough now adapts to who you are: owners get a full setup tour, staff get a guided tour of the tools their permissions unlock, and members get a hands-on tour of everyday actions like logging duty time, requesting leave, requesting a transfer, and reading required documents. Steps you can’t use — by plan or permission — are hidden automatically.
Bug fixes
- More accurate activity tracking — Any action taken inside a community now counts as activity, not just signing in — so active communities are no longer incorrectly flagged as inactive.
v2.1.0ReleasedOnboarding revamp & documentationMay 24, 2026
A redesigned new-community onboarding experience and a public documentation site.
New features
- Documentation site — Product documentation is now available at docs.mypulsetech.com, linked from the footer across the site.
Improvements
- Redesigned community onboarding — The new-community setup wizard now lets you select multiple departments at once (within your plan), connect your Discord server and invite the bot during setup, and finish with a plan-aware guided tour that walks you through your community.
v2.0.0ReleasedPulseRoster V2 — full rebuildMay 20, 2026
A ground-up rebuild on a new tech foundation. Same multi-tenant model, faster pages, cleaner UI, and a stack of new community-management features. V2 is now live at roster.mypulsetech.com — V1 data preserved end-to-end, V2 demo community brought along, public roster URLs unchanged.
New features
- Department presets — One-click starter packs for LSPD, BCSO, SAHP, SAFR, and EMS. Picks the right rank ladder, abbreviations, supervisor and command-staff flags, and colors so a department stands up in under a minute. Available in onboarding and on the new-department page.
- Community Leadership roster — Dedicated /leadership page surfaces community-wide positions (Director, Head of Staff, Moderators, etc.) separate from per-department rosters. Top members preview lives on the community home page; sidebar entry makes it discoverable.
- Discord-style role separators — Group community roles into custom sections you name yourself (e.g. "Community Directors", "Community Admins"). Reorder roles and separators with up/down arrows. Each separator becomes a section header on the leadership roster. Members appear once under their highest-level role with secondary roles as outline chips.
- Onboarding wizard with preset pickers — New communities get a 5-step setup wizard. Pick a department preset and a community-role preset (Standard / Detailed / Minimal) and the workspace is ready in minutes — no blank-page paralysis.
- Application system — Public application forms tied to departments and subdivisions, with a custom form builder, label/template management, voting panel, kanban board view, analytics dashboard, and Discord ticket integration for reviewer workflows.
- Community discovery directory — Public /dashboard/discover page where users browse communities by tag, request to join, and find the right home. Includes a join-request approval flow for owners and a community-claim by token.
- Custom community themes — Preset color palettes per community — owners pick a brand, members see the workspace in that theme. Per-user override available (PulseRoster Dark / Light) for accessibility.
- Public product roadmap — This page. A single living document of what's in flight, what's next, and what shipped. Imported V1 history from the Discord changelog as v1.1.0 → v1.4.0.
- Live demo community — A sandbox /c/demo workspace pre-populated with realistic data (departments, subdivisions, members, LOAs, disciplinary records). Public roster at /roster/demo for prospects to see the product in action.
- Marketing site refresh — New landing page with hero animation, feature mockups, screenshot lightbox, refreshed footer, plus dedicated /compare, /use-cases, and /guides pages.
- Activity warnings — Dedicated page surfacing members who fall below their rank's activity requirements. Lets staff act before warnings escalate to disciplinary.
- Community analytics dashboard — Top-level analytics view with member counts, status mix, LOA load, disciplinary trends, and department breakdowns.
- Security settings page — Per-community security overview — session policies, audit-log retention, and visibility controls for staff to review without digging through Settings.
- Webhooks settings UI — In-app configuration for outbound webhooks. The full delivery system and public REST API are still upcoming — see Next up.
Improvements
- Members list locked down to community staff — The full member list is now visible only to community staff (Owner / Admin / Moderator). Sidebar, mobile nav, and command palette all updated. Department command staff manage their team via the department roster instead.
- Dark-first redesign — Rebuilt navigation, dashboard, and roster views. Consistent typography, spacing, and density across every page. Sidebar with three groups (Workspace / Product / Manage) and badge counts replaces the old top-only nav.
- Documentation system — Versioned docs with member acknowledgment tracking carry over from V1, now with a folder tree for nested organization, refreshed editor chrome, and clearer publishing states.
- Public roster page — The /roster/[slug] page picks up the V2 dark design and exposes more configuration: section toggles (Leadership, Community Roster, Department Rosters, Members List), per-field visibility, sort, and density.
- LOA workflow — Cleaner submit form, clearer reviewer states (pending / approved / active / completed), and tighter Discord notifications when an LOA enters or exits each state.
- Disciplinary system + appeals — Refreshed record cards, cleaner appeal submission flow, and a clearer command-bar shortcut to issue actions. Carryover behavior from V1 with V2 chrome.
- Department transfers — Refined request and approval flow with both source-department and target-department review stages. Discord notifications on each state transition.
- Activity tracking & time logs — Time-logs page with per-member breakdowns and quick-log entry. Cleaner integration with rank-level activity requirements.
- Certifications & commendations — Both carry over from V1 with refreshed list views, member-detail integration, and cleaner expiry tracking on certifications.
- Settings catalog reorganization — Settings pages grouped into clearer sections (community, billing, integrations, application system, public roster, theme). Owner-only items clearly marked.
- Mobile navigation — New mobile-only nav drawer with role-aware visibility — staff and command staff see different items. Replaces the V1 desktop-first nav that overflowed on phones.
- Command palette — Refined keyboard-driven navigation with role-aware filtering, settings shortcuts, and feature-gated entries. Now respects Members lockdown and other staff-only paths.
Bug fixes
- Department preset rank flags — Aligned LSPD / BCSO / SAHP presets with FiveM convention — Sergeant and Lieutenant are supervisors only; Captain and above are command staff. Earlier preset definitions had Sgt/Lt incorrectly flagged as command staff.
- Onboarding preset auto-clear — Picking a department preset (e.g. LSPD) and then editing the name no longer silently drops the preset selection — ranks get created as expected.
v1.4.0ReleasedDiscord polish and billing prep for V2Mar 16, 2026
Smaller release with Discord configuration polish, subscription cancellation flow, and the beta migration modal preparing communities for the V2 cutover.
New features
- Discord server ID settings — Configure the Discord guild that ties to a community in one place.
- Subscription cancellation notices — Clear in-app notices when a subscription is past-due or cancelled.
Improvements
- Billing account linking — Smoother flow connecting a community to a PulseTech billing account.
- Beta migration modal — On-boarding modal for beta-tester communities, prepping them for the V2 cutover.
v1.3.0ReleasedSecurity hardening and Documentation systemFeb 17, 2026
Locked down the platform with a security pass and shipped the Documentation system — versioned SOPs and policies with member acknowledgment tracking.
New features
- Documentation system — Create per-department or community-wide documents with rich text, version control, and publishing.
- Code table templates — Standard templates for codes, signals, and reference tables.
- Version control and publishing — Draft, revise, and publish documents — history is preserved per version.
- Acknowledgment tracking — Mark documents as required reading; track which members have acknowledged each version.
- Acknowledgment tracking dashboard — See pending and completed acknowledgments at a glance.
- Department command staff document access — Command staff can manage docs for their department without needing community-wide roles.
- Copy protection — Optionally prevent users from copying sensitive document contents.
- Word import (Professional) — Import existing .docx documents directly into the system.
Improvements
- Input validation and data protection — Stricter Zod schemas and sanitization across forms and API routes.
- File and secret handling — Safer upload paths and environment-variable handling.
- Discord email capture — Capture user email from Discord OAuth so they don't have to re-enter it.
- Documentation permissions — Refined who can read, edit, and publish docs at each scope.
- Acknowledgment navigation — Easier flow from "you have a pending ack" to the actual document.
Security
- Hardened API authentication — Tightened session and bearer-token validation across all endpoints.
- Session duration reduced to 6 hours — Shorter sessions reduce exposure if a token is compromised.
- Browser security headers — Added Content-Security-Policy, X-Frame-Options, and other defense-in-depth headers.
- Removed debug endpoints, hardened auth flows — Closed off internal debugging routes and tightened login validation.
v1.2.0ReleasedDepartment roles, transfers, and audit loggingFeb 11, 2026
Big push on staffing workflows: department-level role assignments, member transfers between departments, and a full audit trail of who did what.
New features
- Department-level roles — Assign Command Staff and Supervisor roles per-department, separate from rank.
- Role-based dashboard visibility — Pages and actions show or hide based on the viewer's role in each department.
- Department transfer requests — Members can request to move between departments with approval flow on both sides.
- Transfer Discord notifications — Channel pings for new transfer requests and approvals.
- Comprehensive audit logging — Every staff action is recorded — assignments, role changes, transfers, deletions.
- Authentication event tracking — Login, logout, and session events are logged per-user.
- Export and import audit trail — Track who exported or imported data and when.
- 90-day automatic data rotation — Audit logs older than 90 days are pruned automatically.
- Disciplinary appeal submission — Members can appeal disciplinary actions through the dashboard.
- Disciplinary actions in quick navigation — Jump straight to disciplinary tools from the command bar.
- Change password — Self-service password change for email/password accounts.
Improvements
- Leave of Absence system — Reworked LOA flow with tighter permissions, lifecycle states, and reviewer tooling.
- Member department assignment — Cleaner UI for placing members into departments and ranks.
- Bulk notification channel setup — Configure all department notification channels at once.
- Community dashboard layout — Re-tuned spacing, hierarchy, and navigation on the main community page.
- Documentation refreshed — Updated help docs to match the latest feature set.
Bug fixes
- Activity log page — Resolved errors loading the per-member activity log.
- Issuing disciplinary actions — Crash on submit when issuing certain disciplinary types.
- Disciplinary record deletion — Records can now be removed cleanly when their owner is removed.
- Subdivision settings validation — Validation errors no longer block legitimate subdivision edits.
v1.1.0ReleasedManual slots and community managementFeb 6, 2026
First major iteration after launch — fixed early subdivision bugs and added community-level management tools.
New features
- Manual slot assignment — Assign members to specific slots in slot-based rosters by hand.
- Community deletion — Owners can delete a community with a 30-day safety net before permanent removal.
- Data export — Download a complete export of community data before deleting or migrating.
Improvements
- Roster mode migration — Cleaner switch between slot-based, member-based, and hybrid roster modes.
- Billing portal — Smoother flow into the Stripe-managed customer portal.
Bug fixes
- Subdivision creation — Resolved errors when creating subdivisions on certain departments.