What shipped · Coordio
Finished cards from the Coordio board, week by week. This page is built straight from the board we work on in Coordio — nothing is copied by hand.
Oct 12 – 1848 cards
Request volume: лічильник скидається лише наступним запитом через ≥60 с на тому ж інстансі — хвіст губиться
Sprint 16bugperfBacklinks: толерантність до друкарських помилок у [[посиланні]] (нечітке співставлення)
Sprint 16featureuxInteractive tour / onboarding
Sprint 16featureuxHome page is a two-value platform switch — the user should choose their own landing, including "last visited"
Sprint 16featureuxФорки файлів + історія версій — і рішення, чи натягувати сюди git
Sprint 16storagefeatureНагорода за таск: «раз на таск» — перевірка й виплата двома кроками, гонка двох завершень може заплатити двічі
Sprint 16bugsecurityКластер: сигнал звʼязків порожній на реальних даних — підняти пріоритет сигналу тегів
Sprint 16featureНакрутки: бонті й нагороди за таски — заборона self-dealing + денна стеля на отримувача
Sprint 16securitybugНакрутки: нагорода за повторне використання файлу й тижнева нагорода каналу — лише від усталених акаунтів
Sprint 16securityНакрутки: заперечення тегів — rate limit і лише усталені акаунти рахуються в автобан
Sprint 16securityНакрутки: реферальний бонус — лише після активації, не при реєстрації
Sprint 16securityНакрутки: реакція, що створює новий тег, — під ліміт `userTagDefine`
Sprint 16securityRequest volume per route is the one performance number we still cannot see
Sprint 16perfinfraЗапобігання накруткам (голоси за теги, реакції, бонті, бали)
Sprint 16securityfeatureНакрутки: фокус-сесії — мінімальна тривалість + денна стеля коордів
Sprint 16bugsecurityАвтодоповнення [[посилань]]: full-text пошук по тілах нотаток
Sprint 16featureЛист очікування замість стіни «інвайт-онлі»: одна форма «хочу спробувати» + черга запрошень в адмінці
Sprint 16featureaccessuxМожливість використовувати окрім емоджі іконки з набору, що використовується на сайті
Sprint 16featureuxchatThe emoji picker looks like someone else's widget — restyle it, or replace the library?
Sprint 16uxchatStorybook, партія 4: input/textarea, action-bar, dialog, label, progress; MediaCarousel з моками
Sprint 16docstech-debtpg DeprecationWarning "client.query() when the client is already executing" in POST /api/messages and /api/mcp
Sprint 16bugТеги: чи має забанене слово-хештег далі рендеритись як лінк на сторінку тега
Sprint 16uxchatЧат: цитування фрагмента як зв'язок QUOTES із зашифрованим підписом
Sprint 16securityfeaturechatChannel calendar: offline copy of the view (snapshot like cluster/stream)
Sprint 16featureofflineChannel calendar: member filter and per-member colours (what the team planner did)
Sprint 16featureuxMigrate the real-time party from hosted PartyKit to PartyServer on Cloudflare (hosted shuts down 23 Oct)
Sprint 16infrachatP7. Backend drain: automatic file migration via Inngest on disable
Sprint 16storageinfraP6. /admin/storage: connect a backend on the fly, write primary, statuses
Sprint 16storagesecurityfeatureКалендар каналу (2/3): маршрути планера стають поданням — що з /planner/…
Sprint 15offlinefeatureuxУ приватних каналів (і юзерів) повинна бути опція - дозволити своє находження в застосунку
Sprint 15accessfeatureКалендар каналу (3/3): джерела подій для чату й дзвінків
Sprint 15chatfeatureuxPersonal-mode gaps (беклог розривів)
Sprint 15featureuxАвтодоповнення [[посилань]]: пошук підрядка в заголовку (contains), після збігів за початком слова
Sprint 15uxfeatureКалендар каналу (1/3): реєстр зрізів часу + перемикач + подання для дошки
Sprint 15featureuxboard/api/users/search віддає email усіх активних юзерів будь-якому залогіненому
Sprint 15accesssecurityТреба пофіксити запис історії дошки - забагато записів про редагування таску
Sprint 15bugboardПланер як подання для будь-якого каналу: календар із налаштовуваним зрізом часу
Sprint 15uxfeatureofflineНовий комент в каналі субгрупи кореневого каналу не показано відповідно в лівій панелі
Sprint 15uxbugМережеві диски: друга хвиля (тека-піддерево, Dropbox/OneDrive, експорт Google Docs)
Sprint 15storageext-apifeatureShared todo lists: record who added and who ticked an item (metadata, no schema)
Sprint 15chatfeatureПереглянути частоту кронів після зміни хостингу
Sprint 15perfinfraWYSIWYG serializer writes todo lists as loose lists (blank line between items)
Sprint 15chatbugP8. Legacy storage URL rewrite and final disable (purge)
Sprint 15offlinestorageinfraShared todo lists: members add their own items
Sprint 15chatfeatureaccessMCP: no tools for message todo lists; the board-scoped PAT cannot reach other channels
Sprint 15chatapifeedbackComposer: a newline inside a list continues it (bullet / numbered / todo), a double one leaves it
Sprint 15featurechatuxRe-upload over an existing row deletes a blob that dedup claimers still share
Sprint 15storageOffline user: avatar is uploaded to storage, then user.update fails (P2025) - orphan object in R2
Sprint 15bugstorage
Oct 5 – 1155 cards
Chat composer gate still uses the held role, not the permission role, so it disagrees with POST /api/messages
Sprint 15bugaccessReading a public channel silently demotes you to GUEST and takes away posting
Sprint 15accessbugP2. Direct browser uploads to R2: presigned PUT and multipart (no schema change)
Sprint 15ext-apistoragesecurityP1. R2 adapter and reading/deleting files on both backends (no schema change)
Sprint 15infraext-apistorageP4. Stable file address /f/<key>: redirect route and backend-agnostic new writes
Sprint 15offlinestorageperfP5. Prod registry backfill: the Vercel Blob row and StorageObject for existing objects
Sprint 15storageinfraProd: uploads ≤4 MB to R2 failed with 411 (PutObject without Content-Length)
Sprint 15storagebugP3. Storage registry schema: StorageBackend + StorageObject and the resolver
Sprint 15securitystorageinfraDELETE /api/upload deletes any of our objects by URL without an ownership check
Sprint 15bugsecuritystorageShared (public) todo lists: other members add items and tick them
Sprint 15accessfeaturechatTodo lists in messages: checkboxes, strike-through of done items, composer button
Sprint 15chatfeatureuxGoogle Drive: рішення по restricted-скоупу (CASA-аудит vs drive.file + Picker)
Sprint 15ext-apistorageTerms of Service: «коорди» → «кредити» as a new legal version
Sprint 15uxdocsШвидка реєстрація/вхід через сторонні акаунти (Google OAuth)
Sprint 15featuresecurityext-apiauthaccessScheduling a card from the board made it PRIVATE — others got 403 on a card the board still listed
Sprint 15securityboardbugaccessStorybook stories (ongoing)
Sprint 14docstech-debt`?projectId=`: перевірка учасника дивиться на стару таблицю Project, а публічний канал під чужим приватним батьком потрапляє в список
Sprint 14securityaccess`GET /api/channels?projectId=` returns a project's private channels, with previews, to any participant
Sprint 14securityaccessA group ban does not reach grandchildren (threads under public topics) or the `?limit=` / `projectId` lists
Sprint 14accesssecurity/admin/plan-limits: поле «Ліміт коордів на ланцюг агентів» (agentChainKoordsCap)
Sprint 14featureaiAgentMemory з памʼяті агента стає памʼяттю проєкту — це і є «єдиний ШІ-організм»
Sprint 14tech-debtfeatureaiПайплайн агентів по колонках: картка проходить план → робота → рев'ю різними моделями
Sprint 14aiboardfeatureАгент-конвеєр 3/5: ліміт коордів на весь ланцюг картки — перевірка до кожного запуску
Sprint 14aiboardПамʼять проєкту 5/5: прибрати подвійне читання старих канальних рядків AgentMemory і скрипт бекфілу
Sprint 14tech-debtaiПамʼять проєкту 2/5: remember/recall/forget агента — у памʼять каналу, доступ за членством, провенанс у промпті, бекфіл
Sprint 14featureaccessaiA group ban does not reach the group's public sub-channels: a member banned from the group still reads every topic
Sprint 14securityaccessАгент-конвеєр 5/5: UI — стадія в налаштуваннях колонки, ліміт ланцюга в Board settings, раунд на картці
Sprint 14uxboardaifeatureПамʼять проєкту 4/5: UI «Памʼять проєкту» на вкладці «Боти» в налаштуваннях каналу
Sprint 14aifeatureuxПамʼять проєкту 3/5: API + MCP — люди читають, правлять, закріплюють і видаляють памʼять каналу
Sprint 14apiaiaccessАгент-конвеєр 2/5: шов запуску стадії, передача між стадіями, рев'ю ⇄ виправлення зі стелею 2
Sprint 14boardfeatureaiНавігація на спільному id: девʼять таблиць закладок/закріплень/підписок → чотири механізми
Sprint 14infratech-debtUI: картки в загальних закладках і «Закріпити в сайдбарі» для будь-якого елемента
Sprint 14featureuxChannel list ignores bans: a banned member still gets the channel's row with its decrypted newest message
Sprint 14securityaccessbugChannel list: a group's child previews skip the access check — the group header shows a private sub-channel's decrypted message
Sprint 14securityaccessbugSidebarPin CHANNEL: без перевірки доступу на POST і GET — пін каналу показує назву й розшифроване останнє повідомлення після бану/виходу
Sprint 14bugaccesssecuritySidebarPin: варіант ITEM — будь-який елемент на полиці сайдбару (схема + API + доступ)
Sprint 14offlineinfraaccessЗняти старі таблиці навігації: message_bookmarks, task_bookmarks, channel_bookmarks, task_watchers
Sprint 14tech-debtinfraПідписки на спільному id: TaskWatcher → info_item_watchers
Sprint 14boardtech-debtinfraОдне кураторське закріплення: ChannelBookmark зводиться на isPinned
Sprint 14chataccesstech-debtЗакладки на спільному id: MessageBookmark + TaskBookmark → info_item_bookmarks
Sprint 14tech-debtinfrachatboardЗамість детального гайду по роботі з дошкою в документації краще додати поля описів дошці та її елементам (колонки, статуси) і заповнити їх з правилами поводження
Sprint 14boarddocsfeatureПрод: 3 старі тікет-канали так і не мігровані під SUPPORT-контейнер
Sprint 14tech-debtАгент-конвеєр 4/5: API і MCP — стадія колонки в update_board_column / get_board, стан ланцюга в get_task
Sprint 14aiboardapiПамʼять проєкту 1/5: модель ChannelMemory + сервіс політики (ключ, стеля, витіснення)
Sprint 14aifeatureАгент-конвеєр 1/5: схема і чистий движок стадій (BoardRule.agentId, стадія на колонці)
Sprint 14featureboardaiБорг найменування: локалізована назва каналу (після cmu3v61ex) + RESERVED_USERNAMES alias
Sprint 14uxtech-debtReact #419 на /admin: сервер не дорендерює Suspense-межу
Sprint 14bugMCP create_task takes no sprintId / milestoneId — every card needs a second update_task call
Sprint 14apiboardМатриця «цінність × зусилля» як вид дошки
Sprint 14uxboardfeatureТаски дошки повинні показуватись в розширеному чаті батьківського каналу
Sprint 14boardfeatureuxДошка: на картці разом зі значенням токенів додати і поле моделі
Sprint 14boardfeatureaiBoard discussion: the channel's chat as a side panel over the board + comment counts on sprint and milestone
Sprint 14boarduxfeatureКанал-дошка не має чату лише в UI — API повідомлення приймає
Sprint 14apiboardПерейменувати «коорди» на нейтральний термін «кредити використання» в UI (uk + en): спершу зробити назву єдиним джерелом
Sprint 14docsuxtech-debtPOST /api/messages/forward writes into a channel on READ access alone — no SEND_MESSAGES, no channel-type check
Sprint 14securityaccess
Sep 28 – Oct 464 cards
get_task без peek не підхопив картку — і з відповіді не видно, чи підхопив
Sprint 14boardext-apicreateMessage повертає й броадкастить повідомлення без вкладень
Sprint 14bugapiГілка інтеграційних тестів застаріла — db push падає на ownerKey
Sprint 14infratech-debtInstant meetings are unreachable end to end — decide whether the feature goes, not just its button
Sprint 14apitech-debtМодель ChannelAgent мертва — боти живуть у ChannelMember, а таблиця лишилась
Sprint 14tech-debtDrop the dead Invitation model (deploy-ordered)
Sprint 14tech-debtПрибрати task_dependencies — таблицю, enum і дві реляції на Task
Sprint 14infratech-debtboardОпція шифрування каналу — і мертва shouldEncryptChannel, яка мала б її вирішувати
Sprint 14tech-debtsecurityAutopilot 03.10: five Sprint 14 cards, six commits
Sprint 14tech-debtBoard: a label on a card toggles its filter on/off; the filter form keeps three states and always lists every label, off ones struck through
Sprint 14boarduxfeatureBoard: a card's description shows raw and in full until clicked, and clicking it marks it edited
Sprint 14boarduxbugMCP: refusals for a subtask's sprint/column should name the rule — "a subtask moves with its parent"
Sprint 14boardapiВидалити мертвий хук useStorageFiles
Sprint 14storagetech-debtSprint rotation: close Sprint 13, start and top up Sprint 14
Sprint 14docsboardПідключити Telegram для щотижневого анонсу «Що зроблено» — і перевірити перший пост
Sprint 13ext-apiboardfeatureBuild in public: публічна стрічка завершених карток (uk/en) з гостьовим доступом + щотижневий анонс
Sprint 13accessboardfeatureCard titles readable by outsiders: a guide rule and cleaned-up titles on finished cards
Sprint 13docsboardOne shared table for user-entered names in several languages
Sprint 13infraboardCard titles can now be stored in two languages
Sprint 13boardfeatureapiCustom tables stabilised: tests, rate limits and a form builder
Sprint 13apitech-debtsecurityRemoved leftover page rendering flags that no longer did anything
Sprint 13tech-debtinfraReal-user page speed metrics (LCP, INP, CLS) are now measured
Sprint 13perfinfrafeatureFixed: a public file exposed where it was used in private channels
Sprint 13apisecuritybugstorageFixed: file details were returned without an access check
Sprint 13storagebugsecurityapiLocal files are registered lazily: one local library filled most of the files table
Sprint 13storageperfHardened URL validation for external MCP servers
Sprint 13securityaibugNetwork drives: WebDAV support (Nextcloud, ownCloud, Synology)
Sprint 13featureext-apistorageSensitivity-based routing: which model providers may see which data
Sprint 13securityaifeaturePlanned sprints have no dates until they are activated
Sprint 13featureboardChecking the chat offline cache: slugs, sub-routes, degraded mode
Sprint 13chatofflinebugThe app shell cache could store a user's page unencrypted
Sprint 13offlinesecurityauthStatic shell skeleton extended to more pages, accounting for phones
Sprint 13perfStatic app shell from a CDN: the UI renders before the first database request
Sprint 13perfinfraPrivate data sat unencrypted in some browser offline caches
Sprint 13securitystorageofflineLanguage mods: sharing, a mod catalog, machine draft translation and community review
Sprint 13featureaiaccessLanguage mods: showing what changed in the app since the mod was made
Sprint 13featurestorageLanguage mods: a starter template and export of your own mod
Sprint 13featurestorageLanguage mods: users upload translation files and apply them for themselves
Sprint 13storageinfrafeatureScenarios are available through MCP and access tokens
Sprint 13ext-apifeatureapiMCP: activating a sprint dropped a goal passed in the same call
Sprint 13apiboardOffline cache for the stream and cluster views
Sprint 13uxfeatureofflineOffline cache for the mind map view
Sprint 13featureofflineuxOffline cache for the catalog view
Sprint 13uxofflinefeatureCaching and offline support for every channel view
Sprint 13offlinefeatureboardUnified client read path for items — a foundation for caching
Sprint 13featureapiinfraofflineNotify existing users about the updated Terms and Privacy Policy
Sprint 12docsuxfeatureTelegram bot agents no longer always fail
Sprint 12aitech-debtBoard export and import keep the labels on card relations
Sprint 12featureboardBoard filters are saved per user
Sprint 12boarduxOllama agents can't work in production: the address is resolved on the server
Sprint 12aibuguxGuest chat opens via the channel's address
Sprint 12bugFixed: the page title revealed the name of a private channel
Sprint 12bugsecurityaccessWiki: detail levels and links to article sections
Sprint 12featureWiki: editing a whole article and splitting it into sections
Sprint 12featureWiki: an article as a tree of sections with 'Read more' blocks
Sprint 12featureBoard: an explanation on links between cards
Sprint 12featureapiboardMigrating Help Center articles into the wiki
Sprint 12featuredocsWiki: a stable article address and links between translations
Sprint 12featureWiki: public reading without signing in, for guests
Sprint 12accessfeatureWiki: manual aliases for article titles
Sprint 12featureHelp Center as wiki articles
Sprint 12featureWiki: viewing an article's revision history
Sprint 12featureuxWiki: who can edit articles — all members or admins only
Sprint 12featureaccessWiki as a separate channel type
Sprint 12featureux