<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="rss.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Ticku Documentation Blog</title>
        <link>https://docs.ticku.work/release-notes</link>
        <description>Ticku Documentation Blog</description>
        <lastBuildDate>Mon, 10 Aug 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[Ticku v2.1.0]]></title>
            <link>https://docs.ticku.work/release-notes/v2.1.0</link>
            <guid>https://docs.ticku.work/release-notes/v2.1.0</guid>
            <pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Release date: 2026-08-10]]></description>
            <content:encoded><![CDATA[<p><strong>Release date:</strong> 2026-08-10</p>
<p>Email-to-ticket is substantially reworked: mailboxes now belong to the <strong>tenant</strong> rather than to a project, one mailbox can feed <strong>several projects</strong> through routing rules, and there are three ways to connect one — including a per-mailbox "Sign in with Microsoft" that needs no Global Admin consent. This release also adds followers, comment replies and reactions, and tightens Azure directory verification on every Microsoft sign-in.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_vobo" id="️-breaking--migration-steps">⚠️ Breaking / Migration Steps<a href="https://docs.ticku.work/release-notes/v2.1.0#%EF%B8%8F-breaking--migration-steps" class="hash-link" aria-label="Direct link to ⚠️ Breaking / Migration Steps" title="Direct link to ⚠️ Breaking / Migration Steps" translate="no">​</a></h2>
<ul>
<li class=""><strong>Per-tenant Azure mail credentials are gone.</strong> Email now authenticates with the <strong>platform SSO app registration</strong> against each tenant's registered <code>entraDirectoryId</code>. There is nothing for a tenant admin to type in. The <code>MicrosoftMailConfig</code> table is dead and pending cleanup.</li>
<li class=""><strong>Add Mail permissions to the SSO app.</strong> The app-only connection mode needs <code>Mail.ReadWrite</code> and <code>Mail.Send</code> <strong>application</strong> permissions with admin consent. <strong>Without them every app-only mail call returns 403.</strong> See <a class="" href="https://docs.ticku.work/docs/deployment/azure-app-registration#mail-permissions-for-email-to-ticket">Azure App Registration</a>.</li>
<li class=""><strong>Inbox ownership flipped.</strong> <code>ProjectEmailConfig.projectId</code> (unique, one inbox per project) became <code>EmailInbox.defaultProjectId</code> (the fallback destination). The table keeps its name via <code>@@map</code>, so the rename costs no data movement — but anything reading <code>projectId</code> on it must be updated.</li>
<li class=""><strong>Set <code>CRON_SECRET</code>.</strong> The new email cycle calls <code>/api/cron/email</code> every 2 minutes and refuses unauthenticated triggers. It falls back to <code>GRAPH_WEBHOOK_SECRET</code>; if <strong>neither</strong> is set the worker skips the job entirely and <strong>no mail flows</strong>.</li>
<li class=""><strong>The daily webhook-renewal job was removed.</strong> The email cycle renews subscriptions as well as polling, so renewal now happens on a 2-minute cadence instead of daily.</li>
<li class=""><strong>Email can only target Support projects.</strong> Existing rows pointing elsewhere are grandfathered and still saveable as-is, but cannot be moved to a different non-Support project.</li>
<li class="">Run <code>npm run db:migrate</code> (migrate deploy) after updating.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_vobo" id="-new">✨ New<a href="https://docs.ticku.work/release-notes/v2.1.0#-new" class="hash-link" aria-label="Direct link to ✨ New" title="Direct link to ✨ New" translate="no">​</a></h2>
<ul>
<li class=""><strong>Email routing rules</strong> — one shared mailbox can feed many projects. Match on <strong>recipient address</strong> (aliases and plus-addressing) or <strong>sender domain</strong>, with recipient taking precedence and the inbox's default project as the fallback. Rules can override priority, acknowledgement, notification flags, subject folder, and assignee. A <strong>Simulate</strong> tool shows which rule would win before you commit to it. See <a class="" href="https://docs.ticku.work/docs/admin-guide/email/routing-rules">Routing Rules</a>.</li>
<li class=""><strong>Three connection modes</strong> — app-only Microsoft Graph (push, seconds), per-mailbox delegated OAuth (polled, no Global Admin needed), and IMAP/SMTP with a password (polled; <strong>not</strong> usable against Microsoft 365). See <a class="" href="https://docs.ticku.work/docs/admin-guide/email/connection-modes">Connection Modes</a>.</li>
<li class=""><strong>Followers</strong> — subscribe anyone to a single ticket or sub-task without giving them the project. A follower from outside the organization gets a minimal guest membership that grants nothing beyond the followed item. See <a class="" href="https://docs.ticku.work/docs/user-guide/followers">Followers</a>.</li>
<li class=""><strong>Comment replies and reactions</strong> — comments thread via replies, and any comment can be reacted to with an emoji (one per person, changing rather than stacking). New <code>COMMENT_REPLY</code>, <code>COMMENT_REACTION</code>, and <code>FOLLOWER_ADDED</code> notification events. Reactions are in-app only.</li>
<li class=""><strong>Auto-assign on comment</strong> — a non-Viewer commenting on an <strong>open</strong> ticket or sub-task they didn't create takes ownership of it.</li>
<li class=""><strong>Commit id capture</strong> — the Dev <strong>Fixed → Review</strong> transition can record the commit a fix shipped in, alongside a review note.</li>
<li class=""><strong>Work Schedule table</strong> — planned work per assignee (project, ticket, planned start/end, status, priority) in Analytics, plus a <strong>Monthly Timesheet</strong> Excel/PDF export with a daily hours grid. See <a class="" href="https://docs.ticku.work/docs/user-guide/analytics">Analytics</a>.</li>
<li class=""><strong>Due-date filters</strong> — <code>dueby:</code> and <code>duewithin:</code> on the dashboard filter bar.</li>
<li class=""><strong>Product tour</strong> — a guided walkthrough per screen, launched from the header. It never auto-opens.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_vobo" id="-improved">🛠 Improved<a href="https://docs.ticku.work/release-notes/v2.1.0#-improved" class="hash-link" aria-label="Direct link to 🛠 Improved" title="Direct link to 🛠 Improved" translate="no">​</a></h2>
<ul>
<li class=""><strong>Azure directory verification on every sign-in.</strong> The <code>tid</code> check previously ran only at account creation, so any returning user — a password signup, a Teams user, a guest — could sign in via Microsoft without ever passing it. It now runs on every Microsoft sign-in, and a tenant with no registered directory adopts one from its designated first admin (trust on first use). Enforcement is behind <code>ENTRA_TID_ENFORCE</code>, <strong>off by default</strong>: a mismatch is logged but allowed until you turn it on. See <a class="" href="https://docs.ticku.work/docs/architecture/authentication#directory-verification">Authentication</a>.</li>
<li class=""><strong>Outbound email is now opt-in per event.</strong> Comments, status changes, and acknowledgements each have their own toggle. <strong>Notify on comment defaults to off</strong> — comments carry no internal/public flag, so the previous unconditional behaviour mailed internal team discussion to the customer verbatim. An agent opts a single comment in by writing <code>@creator</code>.</li>
<li class=""><strong>Assignment notifications folded into status changes.</strong> Assigning auto-transitions <code>OPEN → ASSIGNED</code>, so a separate assignment toggle made the same real-world event send different mail depending on which control the agent used.</li>
<li class=""><strong>Sub-tasks in global search</strong>, plus display-ID lookup — <code>EMA-15.2</code> or <code>15.2</code> jumps straight to a sub-task.</li>
<li class=""><strong>Clickable ticket and sub-task mentions</strong> in comments and the rich-text editor.</li>
<li class=""><strong>Health reporting that doesn't lie.</strong> A poll cycle that ingests successfully and then fails later now records its progress; previously a late error hid earlier success, so an inbox reported "Not yet polled" while it was actively creating tickets.</li>
<li class=""><strong>Settings shell</strong> — Notifications, Analytics, and Bulk Upload now share a consistent settings layout.</li>
<li class=""><strong>Notification read state</strong> fixes and escalation notification tuning.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_vobo" id="-removed">🗑 Removed<a href="https://docs.ticku.work/release-notes/v2.1.0#-removed" class="hash-link" aria-label="Direct link to 🗑 Removed" title="Direct link to 🗑 Removed" translate="no">​</a></h2>
<ul>
<li class=""><strong>Auto-create ticket toggle.</strong> With it off, mail produced no ticket and no record while both transports still marked it read — messages vanished silently. Ticket creation is now unconditional.</li>
<li class=""><strong>Per-inbox allowed/blocked sender domains.</strong> They duplicated routing and fought it: a domain missing from the allow-list had its routing rule rejected before the rule was ever consulted, with nothing to indicate why. The allow-list was also suppressing bounce messages by accident. Blocking a sender is the mail provider's job.</li>
</ul>
<p>Both remain as unused columns pending a cleanup migration.</p>
<h2 class="anchor anchorTargetStickyNavbar_vobo" id="-documentation">📚 Documentation<a href="https://docs.ticku.work/release-notes/v2.1.0#-documentation" class="hash-link" aria-label="Direct link to 📚 Documentation" title="Direct link to 📚 Documentation" translate="no">​</a></h2>
<p>The <a class="" href="https://docs.ticku.work/docs/admin-guide/email/overview">Email-to-Ticket guide</a> is now a five-page section covering the pipeline, connection modes, inbox settings, routing, and troubleshooting. Screenshots have been added throughout the user and admin guides, captured by a committed, re-runnable script.</p>]]></content:encoded>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[Ticku v2.0.0]]></title>
            <link>https://docs.ticku.work/release-notes/v2.0.0</link>
            <guid>https://docs.ticku.work/release-notes/v2.0.0</guid>
            <pubDate>Thu, 23 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Release date: 2026-07-23]]></description>
            <content:encoded><![CDATA[<p><strong>Release date:</strong> 2026-07-23</p>
<p>Ticku becomes a <strong>shared multi-tenant platform</strong>. One deployment now hosts many organizations, each isolated from the others, with self-serve onboarding by email domain. This release also brings project types, dynamic roles, worklog/time tracking, escalation, analytics, a master calendar, and more.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_vobo" id="️-breaking--migration-steps">⚠️ Breaking / Migration Steps<a href="https://docs.ticku.work/release-notes/v2.0.0#%EF%B8%8F-breaking--migration-steps" class="hash-link" aria-label="Direct link to ⚠️ Breaking / Migration Steps" title="Direct link to ⚠️ Breaking / Migration Steps" translate="no">​</a></h2>
<ul>
<li class=""><strong>Multi-tenancy.</strong> Ticku is no longer single-tenant. Every tenant-scoped table gained a <code>tenantId</code>, and queries run through a tenant-scoped Prisma client. See <a class="" href="https://docs.ticku.work/docs/architecture/multi-tenancy">Multi-Tenancy</a>.</li>
<li class=""><strong><code>User.role</code> and <code>User.isAdmin</code> were dropped.</strong> Per-tenant role and admin status now live on the new <strong><code>Membership</code></strong> model — a user can belong to several tenants with different roles in each. See <a class="" href="https://docs.ticku.work/docs/admin-guide/roles-permissions">Roles &amp; Permissions</a>.</li>
<li class=""><strong>Fixed project roles → dynamic roles.</strong> The <code>CREATOR/MEMBER/VIEWER</code> enum is replaced by editable <strong><code>ProjectRole</code></strong> rows scoped to a project type, built from a permission catalog.</li>
<li class=""><strong>Deployment model changed</strong> from dedicated-instance-per-client to one shared platform. See <a class="" href="https://docs.ticku.work/docs/architecture/deployment-architecture">Deployment Architecture</a> and <a class="" href="https://docs.ticku.work/docs/deployment/tenant-provisioning">Tenant Provisioning</a>.</li>
<li class="">Run <code>npm run db:migrate</code> (migrate deploy) after updating. Bootstrap the first <strong>platform admin</strong> at <code>/setup</code>. Do <strong>not</strong> run <code>db:push</code>/<code>db:reset</code> on real data.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_vobo" id="-new">✨ New<a href="https://docs.ticku.work/release-notes/v2.0.0#-new" class="hash-link" aria-label="Direct link to ✨ New" title="Direct link to ✨ New" translate="no">​</a></h2>
<ul>
<li class=""><strong>Multi-tenancy</strong> — tenants, <code>/t/{slug}</code> routing, tenant switcher, per-tenant data isolation, cross-tenant <strong>platform admin</strong>.</li>
<li class=""><strong>Self-serve onboarding</strong> — organizations register at <code>/register-organization</code> (email-OTP), users join by email domain, guest invitations for outside collaborators.</li>
<li class=""><strong>Project types</strong> — Support, Consulting, Dev, and Epic, each with its own hierarchy, workflow, priorities, and roles. See <a class="" href="https://docs.ticku.work/docs/admin-guide/project-types">Project Types</a>.</li>
<li class=""><strong>Subjects &amp; Epics</strong> — Subject folders group tickets; Epic projects roll up delivery projects. See <a class="" href="https://docs.ticku.work/docs/user-guide/epics-subjects">Subjects &amp; Epics</a>.</li>
<li class=""><strong>Dynamic roles</strong> — admin-editable per-project roles and permissions (<a class="" href="https://docs.ticku.work/docs/admin-guide/roles-permissions">Roles &amp; Permissions</a>).</li>
<li class=""><strong>Escalation</strong> — flag tickets urgent with a reason (<a class="" href="https://docs.ticku.work/docs/user-guide/escalation">Escalation</a>).</li>
<li class=""><strong>Work Log &amp; Time Tracking</strong> — a daily work log and per-ticket time entries (<a class="" href="https://docs.ticku.work/docs/user-guide/worklog">Work Log</a>, <a class="" href="https://docs.ticku.work/docs/user-guide/time-tracking">Time Tracking</a>).</li>
<li class=""><strong>Analytics</strong> — dashboards for volume, status, priority, resolution time, top assignees, timesheets (<a class="" href="https://docs.ticku.work/docs/user-guide/analytics">Analytics</a>).</li>
<li class=""><strong>Master Calendar</strong> — regions, working hours, weekend rules, and holidays (<a class="" href="https://docs.ticku.work/docs/admin-guide/master-calendar">Master Calendar</a>).</li>
<li class=""><strong>Notes, Reminders, Meeting Logs</strong> — lightweight productivity tools alongside tickets.</li>
<li class=""><strong>Bulk Upload</strong> — Excel-style paste grid to create Subjects/tickets/sub-tasks (<a class="" href="https://docs.ticku.work/docs/user-guide/bulk-upload">Bulk Upload</a>).</li>
<li class=""><strong>Notification preferences</strong> — per-user levels (mentions-only → high) and per-channel toggles (<a class="" href="https://docs.ticku.work/docs/user-guide/notifications">Notifications</a>).</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_vobo" id="-improved">🛠 Improved<a href="https://docs.ticku.work/release-notes/v2.0.0#-improved" class="hash-link" aria-label="Direct link to 🛠 Improved" title="Direct link to 🛠 Improved" translate="no">​</a></h2>
<ul>
<li class=""><strong>Dashboard search</strong> — Gmail-style query bar (<code>+</code> = AND, <code>,</code> = OR, whole-word matching).</li>
<li class=""><strong>Ticket planning</strong> — start/end windows, estimate/actual/billable hours, on-hold time tracking, deferred status, timeline &amp; date-range views.</li>
<li class=""><strong>Email-to-ticket</strong> — per-tenant Azure app registration, per-project mailbox config, domain allow/block lists, and a health circuit breaker.</li>
<li class=""><strong>Statuses</strong> — richer per-type workflows (On Hold, Deferred; Epic "Active").</li>
<li class=""><strong>Notifications</strong> — tenant-scoped, with read/unread and more event types.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_vobo" id="-removed">🗑 Removed<a href="https://docs.ticku.work/release-notes/v2.0.0#-removed" class="hash-link" aria-label="Direct link to 🗑 Removed" title="Direct link to 🗑 Removed" translate="no">​</a></h2>
<ul>
<li class=""><strong>Groups</strong> — replaced by tags and project membership. See <a class="" href="https://docs.ticku.work/docs/admin-guide/tags">Tags</a>.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_vobo" id="known-issues">Known Issues<a href="https://docs.ticku.work/release-notes/v2.0.0#known-issues" class="hash-link" aria-label="Direct link to Known Issues" title="Direct link to Known Issues" translate="no">​</a></h2>
<p>See <a class="" href="https://docs.ticku.work/docs/product/known-issues">Known Issues &amp; Limitations</a> — notably: SLA still uses flat wall-clock hours (master calendar not yet applied to SLA maths), and notification delivery is not retried.</p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_vobo" id="release-notes-template-for-future-releases">Release Notes Template (for future releases)<a href="https://docs.ticku.work/release-notes/v2.0.0#release-notes-template-for-future-releases" class="hash-link" aria-label="Direct link to Release Notes Template (for future releases)" title="Direct link to Release Notes Template (for future releases)" translate="no">​</a></h3>
<div class="language-markdown codeBlockContainer_DZ7I theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_OPEx"><pre tabindex="0" class="prism-code language-markdown codeBlock_LROH thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_sNeI"><div class="token-line" style="color:#393A34"><span class="token front-matter-block punctuation" style="color:#393A34">---</span><span class="token front-matter-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token front-matter-block"></span><span class="token front-matter-block front-matter yaml language-yaml key atrule" style="color:#00a4db">title</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:#393A34">:</span><span class="token front-matter-block front-matter yaml language-yaml"> Ticku vX.Y.Z</span><br></div><div class="token-line" style="color:#393A34"><span class="token front-matter-block front-matter yaml language-yaml"></span><span class="token front-matter-block front-matter yaml language-yaml key atrule" style="color:#00a4db">slug</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:#393A34">:</span><span class="token front-matter-block front-matter yaml language-yaml"> vX.Y.Z</span><br></div><div class="token-line" style="color:#393A34"><span class="token front-matter-block front-matter yaml language-yaml"></span><span class="token front-matter-block front-matter yaml language-yaml key atrule" style="color:#00a4db">tags</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:#393A34">:</span><span class="token front-matter-block front-matter yaml language-yaml"> </span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:#393A34">[</span><span class="token front-matter-block front-matter yaml language-yaml">release</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:#393A34">]</span><span class="token front-matter-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token front-matter-block"></span><span class="token front-matter-block punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token bold content">Release date:</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token plain"> YYYY-MM-DD</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important punctuation" style="color:#393A34">##</span><span class="token title important"> ✨ New</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> …</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important punctuation" style="color:#393A34">##</span><span class="token title important"> 🛠 Improved</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> …</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important punctuation" style="color:#393A34">##</span><span class="token title important"> 🐛 Fixed</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> …</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important punctuation" style="color:#393A34">##</span><span class="token title important"> ⚠️ Breaking / Migration Steps</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> Run </span><span class="token code-snippet code keyword" style="color:#00009f">`npm run db:migrate`</span><span class="token plain"> after updating.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> …</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important punctuation" style="color:#393A34">##</span><span class="token title important"> Known Issues</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> …</span><br></div></code></pre></div></div>]]></content:encoded>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[Ticku v1.0.0]]></title>
            <link>https://docs.ticku.work/release-notes/v1.0.0</link>
            <guid>https://docs.ticku.work/release-notes/v1.0.0</guid>
            <pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Release date: 2026-06-12]]></description>
            <content:encoded><![CDATA[<p><strong>Release date:</strong> 2026-06-12</p>
<p>The first production release of Ticku — Ticketing &amp; Workflow Management for Microsoft Teams and web.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_vobo" id="highlights">Highlights<a href="https://docs.ticku.work/release-notes/v1.0.0#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<ul>
<li class=""><strong>Microsoft Teams tab app</strong> with silent single sign-on (desktop and mobile)</li>
<li class=""><strong>Standalone web app</strong> with Microsoft SSO and email + password login (OTP verification, admin approval)</li>
<li class=""><strong>Projects, tickets, and tasks</strong> with list, grid, and drag-and-drop <strong>kanban board</strong> views</li>
<li class=""><strong>Bulk actions</strong> — multi-select status change and delete</li>
<li class=""><strong>Per-project roles</strong> — Creator / Member / Viewer with server-enforced permissions</li>
<li class=""><strong>SLA tracking</strong> — priority-driven deadlines with countdown bar and breach notifications</li>
<li class=""><strong>Email-to-ticket</strong> — inbound mail converted to tickets via Microsoft Graph webhooks</li>
<li class=""><strong>Comments with @mentions</strong>, file attachments (Azure Blob), and an in-app notification panel</li>
<li class=""><strong>Admin panel</strong> — users, projects, roles, groups, tags, sign-up approvals</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_vobo" id="known-limitations">Known Limitations<a href="https://docs.ticku.work/release-notes/v1.0.0#known-limitations" class="hash-link" aria-label="Direct link to Known Limitations" title="Direct link to Known Limitations" translate="no">​</a></h2>
<p>See <a class="" href="https://docs.ticku.work/docs/product/known-issues">Known Issues &amp; Limitations</a> — notably: no API rate limiting yet, notification delivery is not retried, and SLA hours use system defaults.</p>
<h2 class="anchor anchorTargetStickyNavbar_vobo" id="upgrade-notes">Upgrade Notes<a href="https://docs.ticku.work/release-notes/v1.0.0#upgrade-notes" class="hash-link" aria-label="Direct link to Upgrade Notes" title="Direct link to Upgrade Notes" translate="no">​</a></h2>
<p>Initial release — no upgrade path required. For new deployments, follow the <a class="" href="https://docs.ticku.work/docs/deployment/runbook">Deployment Runbook</a>.</p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_vobo" id="release-notes-template-for-future-releases">Release Notes Template (for future releases)<a href="https://docs.ticku.work/release-notes/v1.0.0#release-notes-template-for-future-releases" class="hash-link" aria-label="Direct link to Release Notes Template (for future releases)" title="Direct link to Release Notes Template (for future releases)" translate="no">​</a></h3>
<div class="language-markdown codeBlockContainer_DZ7I theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_OPEx"><pre tabindex="0" class="prism-code language-markdown codeBlock_LROH thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_sNeI"><div class="token-line" style="color:#393A34"><span class="token front-matter-block punctuation" style="color:#393A34">---</span><span class="token front-matter-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token front-matter-block"></span><span class="token front-matter-block front-matter yaml language-yaml key atrule" style="color:#00a4db">title</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:#393A34">:</span><span class="token front-matter-block front-matter yaml language-yaml"> Ticku vX.Y.Z</span><br></div><div class="token-line" style="color:#393A34"><span class="token front-matter-block front-matter yaml language-yaml"></span><span class="token front-matter-block front-matter yaml language-yaml key atrule" style="color:#00a4db">slug</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:#393A34">:</span><span class="token front-matter-block front-matter yaml language-yaml"> vX.Y.Z</span><br></div><div class="token-line" style="color:#393A34"><span class="token front-matter-block front-matter yaml language-yaml"></span><span class="token front-matter-block front-matter yaml language-yaml key atrule" style="color:#00a4db">tags</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:#393A34">:</span><span class="token front-matter-block front-matter yaml language-yaml"> </span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:#393A34">[</span><span class="token front-matter-block front-matter yaml language-yaml">release</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:#393A34">]</span><span class="token front-matter-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token front-matter-block"></span><span class="token front-matter-block punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token bold content">Release date:</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token plain"> YYYY-MM-DD</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important punctuation" style="color:#393A34">##</span><span class="token title important"> ✨ New</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> …</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important punctuation" style="color:#393A34">##</span><span class="token title important"> 🛠 Improved</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> …</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important punctuation" style="color:#393A34">##</span><span class="token title important"> 🐛 Fixed</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> …</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important punctuation" style="color:#393A34">##</span><span class="token title important"> ⚠️ Breaking / Migration Steps</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> Run </span><span class="token code-snippet code keyword" style="color:#00009f">`npm run db:migrate`</span><span class="token plain"> after updating.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> …</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important punctuation" style="color:#393A34">##</span><span class="token title important"> Known Issues</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> …</span><br></div></code></pre></div></div>]]></content:encoded>
            <category>release</category>
        </item>
    </channel>
</rss>