Changelog

What shipped recently

We update Narcove roughly every week. Some weeks bring a new feature. Some weeks bring a fix. Most weeks bring both. Here's what landed, in reverse-chronological order. We don't list every internal commit — this is the "what changed for users" view.

  1. Feature

    Export cards as a markdown doc — ready to feed your AI

    An "Export" button on every project. Pick "Only bugs", "Only features", or any other type — get a clean markdown file with each card's title, status, priority, opener, assignee, description, comments threaded in order, and any folded-in subtasks. Drop it straight into Claude, ChatGPT, or your model of choice with "look at these and propose fixes". No more copy-pasting cards one at a time.

  2. Feature

    Card types — bug, feature, task, question, chore — with icons

    Mark any card with a type from the drawer. A small coloured icon appears next to the title on the board chip so you can scan the column and see at a glance what's a bug versus what's a feature request. Combines with the new export to filter exactly what you want to ship to your AI.

  3. Feature

    Drag-and-drop image upload on every card

    Drop a screenshot anywhere on an open card drawer — the whole panel becomes a drop zone with a clear "drop to attach" overlay. There's also a click-to-upload button and an empty-state drop area in the Attachments section. PNG, JPG, GIF, WebP, up to 8 MB each. Magic-byte MIME validation server-side so renamed file extensions don't sneak through.

  4. Feature

    @-mentions in card comments

    Card comments now have the same @-mention typeahead the Wardroom uses — type @ and pick a teammate or share invitee. Notification delivery for these mentions is the next piece of work (today they're visible in the comment, not yet pushed to the mentioned person's bell).

  5. Feature

    Fold related cards into a master to consolidate bugs

    When a tester opens five cards that are all the same bug, open the master card's Breakdown section and click "Fold in existing cards". Pick the others from a searchable, checkbox list (each row shows the card's current section) and merge them in one click. They disappear from the board and live as subtasks under the master so the fix tracks against one card. Completed cards are filtered out of the list automatically.

  6. Improvement

    Columns auto-sort by priority — drag is for status, not order

    Inside any column, cards now sort by priority (urgent → high → medium → low) then oldest first. Bump a card's priority and it floats. Drag-between-columns still moves status; drag-within-column no longer matters. The Ashore (done) column flips the rule: most recently completed at the top so the freshest "shipped" surfaces first.

  7. Improvement

    Cards show who opened them; recent comments pulse

    Every card chip now shows a small avatar for whoever opened it (when different from the assignee), and external submitters get a subtle accent ring so portal-raised cards are spotted instantly. When a comment lands in the last 24 hours, the chip's comment icon pulses gently — fresh conversation surfaces without you having to open the card.

  8. Improvement

    Filter the board by what you opened

    The filter popover now has "Created by me" alongside "Assigned to me". Useful when you raised a bunch of cards as a tester or client and just want to see your own pile without the assignee noise.

  9. Improvement

    Profile photo upload + multi-workspace switcher

    Two long-overdue settings additions. A "Your profile" panel at the top of Settings lets you upload a photo (PNG/JPG/GIF/WebP, 4 MB) — your face appears on cards you create, comments you post, and beside your name across the workspace. And the sidebar workspace tile is now an actual switcher — if you're in more than one workspace, you flip between them in one click instead of being stuck on the first one you joined.

  10. Infra

    Admin force-reload override for stuck clients

    A server-side flag that makes every stale-bundle client auto-reload on their next poll instead of seeing a dismissable toast. For incidents and non-technical teammates who can't be asked to hard-refresh. Off by default; flipped on for the duration of an incident with a single env var.

  11. Feature

    Ask the Captain — project-scoped AI assistant

    A new chat surface inside every project, keyed in the project header. Ask things like "what's at risk this week?", "which cards are adrift and why?", "summarise what's shipped this month." The Captain reads the project's actual state — recent cards, the Tide log, current adrift list, retainer status — and answers grounded in that snapshot. Read-only in v1 (the Captain answers, you act). Per-(project, user) thread persists across sessions. Routed through the AI cost middleware with per-user rate limit and cost tracking like every other AI feature.

  12. Improvement

    View as client — one-click portal preview from the project header

    When a public portal is enabled, the project header now shows a "View as client" link that opens the portal in a new tab — anonymous, exactly as a client sees it. No more digging into the share dialog or pasting the URL by hand.

  13. Feature

    Sign in with Google + GitHub

    OAuth wired end-to-end. Existing email accounts auto-link when the OAuth email matches. Same login page, two extra buttons.

  14. Feature

    Public portals can be invite-only

    Per share, choose "Public — anyone with the link" or "Invite only." Invite-only portals require a one-click magic link emailed to addresses on the share's allow-list — no password, no signup. Existing portals stay public until owners flip them; new portals default to invite-only.

  15. FixInfra

    Per-IP submission throttle on public portals

    Layered under the workspace daily card cap: 5 submissions per IP per portal per rolling hour. Stops a single bad actor from burning a workspace's daily quota with junk submissions. Returns a clean 429 with retry_after in seconds.

  16. Feature

    Forgot password flow

    "Forgot?" link on the sign-in form. Enter your email, get a one-click recovery link, set a new password, you're back in. All Supabase auth emails (signup, magic link, recovery, change-email, reauth) now route through Resend with branded HTML and nautical subject lines.

  17. Improvement

    Branded transactional emails

    Every email Narcove sends — portal magic links, submission confirmations, workspace invites, all auth flows — now uses the same Saltwater Pop palette as the app. React Email templates, single shared layout, sent through Resend. Subjects pick up the maritime vocabulary: "Welcome aboard", "Your sign-in line", "Cast a new line", "Your request reached the harbour."

  18. Fix

    Tutorial state moved to your account

    The intro tutorial used to re-trigger every time you signed in on a fresh browser or incognito session — localStorage was the only store and it didn't survive logout. Now persisted to your profile, so dismissing it once means dismissed everywhere.

  19. ImprovementInfra

    Display layer reads concepts.ts everywhere

    Maritime vocabulary (Harbour, Open Water, In Tow, Underway, At Anchor, Ashore) was in a single config file but the UI was rendering raw column names from the DB. Now every surface — board headers, card drawer, Gantt rows, public portal, my-tasks — reads from concepts.ts with legacy-name fallback. Adrift cards now have a coral pill visible across all those surfaces.

  20. Fix

    Bin icon: delete option, archive that actually works

    The card drawer's bin icon used to offer Archive only — and clicking it didn't visibly do anything because the board's filter pipeline didn't exclude archived cards from the optimistic state. Both fixed: archive now hides the card immediately, and there's a destructive Delete option for permanent removal.

  21. Improvement

    Gantt: edge handle now visible at rest

    The right-edge resize handle on Gantt bars used to be a 2px transparent strip — discoverable only by accident. Now there's a subtle pill visible at rest and a bright glow on hover so the affordance reads "stretch the deadline" vs the bar body's "move the whole task."

  22. Feature

    Calendar sync — Google, Outlook, Apple, anywhere

    Subscribe to any calendar that publishes an ICS feed and your meetings automatically subtract from your available hours. Provider-agnostic by design — Google Calendar, Outlook / Microsoft 365, Apple iCloud, Fastmail, Proton, and anything else with an ICS URL. Read-only — we never write to your calendar. Refreshes every 30 minutes. The Gantt now shows meeting time as hatched stripes on each assignee's row so you see why work routes around them.

  23. Feature

    Time off + per-project hour caps

    Manual time-off entries (annual leave, sickness, recurring focus blocks) and per-project hour caps. The scheduler now subtracts both from each editor's capacity before placing work. Studio-wide capacity view shows hours used vs cap, with coral cells when an editor is over-allocated.

  24. Feature

    Stripe billing scaffolding + AI usage caps

    Workspace tier persists on workspaces.tier; checkout, customer portal, and webhook routes wired up. AI usage is metered per-seat per-month (Pro: 200 estimations + 50 plan runs; Team: 600 + 200) with a meter on the billing page. Past the cap, AI features 429 cleanly until reset.

  25. Feature

    Branded portals + custom domain

    Team workspaces can serve their portal at portal.your-domain.com via CNAME. Logo, accent colour, and brand name configurable in share settings. Hide the "Powered by Narcove" footer for full white-label.

  26. Improvement

    Plan-with-AI: diff before apply

    Plan-with-AI now returns a proposal — each suggested dependency is a checkbox. Untick what you disagree with, click Apply, only then do we touch the schedule. The DAG trigger refuses cycles either way.

  27. Feature

    Per-user forward-pull on the Tide cascade

    When a card moves to a done column, the assignee's next-ready card now pulls into the freed slot. Forward-pull was already happening in CPM space; this commit makes it actually persist via the cascade route. Emits a Tide log entry with kind "pulled_forward" for the public portal.

  28. Feature

    Target vs projection bars on the Chart

    Each card on the Chart now renders twice. The solid bar is the target — the date you committed to. The hatched overlay is the current projection — where the schedule actually puts it. The gap between them is the size and direction of your slip or your gain. Tooltip surfaces "X after target."

  29. Feature

    "Tracking ahead/behind" summary on public portals

    The public client portal now shows a single-card summary at the top: "Tracking three days ahead — projected for May 16, target May 20." Tone-tinted (success/coral/accent), with a four-hour fuzz for "On track." Replaces the status email entirely.

  30. Feature

    The Tide log shipped to public portals

    Every projection change now writes a row with a plain-language reason — "pulled forward 4 hours because copy review finished early." Reasons are generated by Claude Haiku 4.5 in batches of 12. The log appears under the kanban on the public portal and replaces the weekly status update.

  31. FeatureInfra

    PWA shell installable

    Narcove can now be installed as a PWA on desktop and Android. The web manifest, service worker, and offline shell all shipped. iOS install works but the bottom-nav UX still needs polish (parked for v2 of the mobile shell).

  32. Feature

    UK bank holidays in scheduler and Chart

    The Tide cascade now skips UK bank holidays by default. The Chart stripes them so the gap is visible. Other regions are configurable in workspace settings. The 2026 list is up to date through December.

  33. Improvement

    Click-to-zoom on Chart axis dates

    Click any axis tick on the Chart to jump straight to a day-level zoom of that day. Combined with cursor-anchored Ctrl+scroll zoom, the Chart now handles hour, day, week, and month views with the same muscle memory.

  34. Improvement

    Splash effect on card drop

    Drop a card into a column and a quick water-ripple animation fires under it. Pure CSS, respects prefers-reduced-motion. A small but charming bit of feedback that earned its line of code.

  35. Improvement

    Animated water on login and onboarding

    The login page now has a subtle animated water effect across the bottom. Same on the onboarding flow. Sets the maritime tone before the user's seen the kanban.

  36. FeatureFix

    Plan-with-AI cycle-safe

    Plan-with-AI's suggested dependency graph is now checked against the database trigger before applying. Cycles are refused at the database level. You can't accidentally apply a graph that loops, even with bad AI output.

  37. Infra

    Concepts config + state vocabulary

    Internal: maritime state vocabulary (Harbour, Open Water, Underway, In Tow, At Anchor, Ashore, Adrift) is now in a single concepts config. Display layer + Gantt refactor to read from it lands in a separate task. Foundation work.

Want updates by email?

We send a short note when something material ships — once or twice a month, no marketing fluff.