Record validated fixes, regression coverage and compatibility limits in Upcoming. Keep the broader TODO Later implementation queue paused.
Thanks to Hama1cco and xet7 !
Fix AdminFieldBleed (GHSA-m8gh-2h78-f57x): redact protected values from publications, API responses, method results, History and analytics; constrain value searches and refresh live permissions.
Guard inserts, full-array modifiers, copying and shared definitions at the request write boundary. Require authorized exports and summarize explicit attacks in Admin Panel Problems. Add positive, negative and Chromium regression coverage.
Thanks to Hama1cco and xet7 !
Read the validated node-saml inResponseTo property and retain single-use response checks. Forward ACS errors to the sign-in form without exchanging missing credentials.
Verify real signed-response login, replay rejection, popup errors and safe UI text rendering. Document deployment-specific identity mapping.
Thanks to xet7.
Retain an immutable operator decision before repairing the exact attempt receipt. Preserve dispatch guards and never send or reset mail. Cover interruption, conflicting decisions and real MongoDB CLI recovery. Other operator recovery remains unfinished.
Thanks to xet7.
Discover comment owners before reading prose, enforce card and assigned-only access, and retain each included source chain for stored dispatch checks. Reuse public comment rendering without exporting target checklists or files; reject oversized captures instead of truncating.
Thanks to kabi178, bbyszio and xet7 !
Include local archive state and lifecycle timestamps under the linked-card local section. Keep card number and color on the source selected by existing display getters.
Thanks to kabi178, bbyszio and xet7 !
Reuse ordinary Details rendering for explicitly local fields, including custom-field visibility and definition fingerprints, public names, notes, locations and authorized relationships. Persist related-source evidence in the existing email binding.
Thanks to kabi178, bbyszio and xet7 !
Read archive, due completion and overtime from the target board. Resolve only public names for unique active members, matching linked-board Members and Assignees getters, and recheck target access.
Thanks to kabi178, bbyszio and xet7 !
Classify all 71 top-level schema fields with an AST-backed inventory guard. Record remaining linked-board display and per-card discussion gaps explicitly.
Thanks to kabi178, bbyszio and xet7 !
Remove the duplicate spent-time setter that shadowed linked-board support. Await time credit before clearing sessions, and isolate automatic Pomodoro transitions from Tracker with one pending transition per view.
Thanks to xet7 !
Separate wrapper placement, persisted timers and visible Scrum metadata from authorized source content. Recheck local access, link identity and Scrum visibility before returning the snapshot.
Thanks to kabi178, bbyszio and xet7 !
Exercise authenticated REST moves with filesystem and GridFS attachments, all content choices, and negative authorization and destination matching cases.
Thanks to kabi178, bbyszio and xet7 !
Group readable targets while retaining distinct relationship types and source-access checks. Cover malformed legacy arrays and real SMTP rendering.
Thanks to kabi178, bbyszio and xet7 !
Describe captured filenames, actual sizes, MIME types, cover status, upload dates and public uploader names. Recheck card access and cover state after metadata reads and reject deleted cards or foreign attachment rows.
Thanks to kabi178, bbyszio and xet7 !
Share related-source resolution between Details and checklist discussion. Retain reference evidence for stored messages even when Details is disabled, and omit inaccessible targets.
Thanks to kabi178, bbyszio and xet7 !
Resolve related link titles through current readable sources and retain their chains in immutable command evidence. Recheck related access, admin rights and custom-field definitions before stored dispatch. Refuse legacy Details snapshots without related evidence.
Thanks to kabi178, bbyszio and xet7 !
Decode valid reaction codepoints and count distinct reactors without exporting account identifiers. Keep reactions scoped to included live comments and record remaining related-content authorization work.
Thanks to kabi178, bbyszio and xet7 !
Include public creators and comment authors, stickers, lifecycle metadata, checklist deadlines and reset schedules. Record remaining full-content gaps against the models and card export layout.
Thanks to kabi178, bbyszio and xet7 !
Resolve sprint and release names within the source board and recheck references after preparation. Persist Scrum disclosure flags with source evidence for stored sends.
Thanks to kabi178, bbyszio and xet7 !
Use live target results with both boards' visibility settings. Persist target disclosure policy in version-three source bindings and recheck it before dispatch.
Thanks to kabi178, bbyszio and xet7 !
Keep private voter names and unfinished poker choices out of Details. Persist voting visibility with source bindings and reject changed disclosure settings before stored dispatch.
Thanks to kabi178, bbyszio and xet7 !
Export persisted Flowtime and Pomodoro fields and public session owner names alongside recurrence settings. Cover zero values, malformed fields, access loss and SMTP delivery through both attachment backends.
Thanks to kabi178, bbyszio and xet7 !
Capture versioned source evidence with immutable mail and verify its topology and current access before dispatch. Keep legacy commands readable without authorizing an unbound retry.
Thanks to kabi178, bbyszio and xet7 !
Use live source card data across email text, details, discussion and files. Resolve linked-board display fields without including unrelated source-board cards. Recheck each link and its permissions after preparation, and reject cycles, missing sources or retargeted links.
Refuse linked stored Sync commands until durable source-chain bindings exist, including during dispatch of previously captured commands. Fifty-seven Node suites pass without skips, with real MongoDB and native MailComposer; local SMTP browser scenarios pass.
Thanks to kabi178, bbyszio and xet7 !
Render dates, placement, labels, people, custom-field display values, notes and readable relationships behind an opt-in Details checkbox. Recheck source and related access, admin-only field policy and field definitions; do not serialize account secrets or stale linked-source snapshots.
Thirty-six Node suites and two local SMTP browser scenarios pass. Linked-source details and specialized fields remain open under #2713.
Thanks to kabi178, bbyszio and xet7 !
Offer an independent opt-in choice, render checklist completion and chronological comments, exclude deleted or foreign content and private webhook state, and recheck access after child reads. Bound output without silent truncation.
Verify 35 Node suites and two local SMTP browser scenarios, including disabling the option. Other card metadata remains open under #2713.
Thanks to kabi178, bbyszio and xet7 !
Add an opt-in native checkbox, read live triggering-card files through the storage strategy, recheck source access and attachment metadata after reads, and preserve byte snapshots through email localization and transport.
Verify filesystem and GridFS MIME delivery with local SMTP capture, soft deletion, missing-file failures, keyboard selection, permission changes and durable attachment integrity. Full card-content rendering remains open in #2713.
Thanks to kabi178, bbyszio and xet7 !
Add bounded backend-neutral stream snapshots with canonical base64 payloads, sanitized names and cleanup on read errors. Accept validated byte snapshots in stored Sync mail commands while retaining text-size and integrity checks.
Rule UI, authorized storage reads and transport integration remain pending for #2713. Thirteen focused Node suites pass.
Thanks to kabi178, bbyszio and xet7 !
Reuse ordinary card copying, preserve the source, validate destination placement and current write access, and stop recursive copy chains while allowing independent events.
Verify automatic and manual copies, checklists and comments, revoked access, forged destinations and same-board recursion in Chromium. All 29 rule Node suites pass.
Thanks to javen9881, phaseshift3r, gugmt15 and xet7 !
Fixes#4160,
Fixes#3235,
Move the completed #935 item out of TODO Later and record source authorization, reactive dates, browser coverage and remaining broader work.
Thanks to neooleg and xet7 !
Use one-hop source dates for ordering and badges, observe source data and permissions, and recheck them after each scan. Handle partial linked-board member metadata without breaking row rendering.
Cover source edits, access revocation/restoration, assigned-only readers, source moves, all four date fields and ordinary lazy pagination.
Thanks to ghost, neooleg, Creanimo, GusevVictor, avatar1024 and xet7 !
Fixes#935,
Search and sort projected board metadata before fetching a 25-card page. React to board/card/list/swimlane edits, retract revoked pages, and nest table cells beneath their rows. Verify pagination beyond 5000 cards and document remaining linked-source date ordering parity.
Thanks to neooleg and xet7 !
Support keyboard selection, indeterminate excluded labels and explicit due-date reset. Preserve saved combinations and document the separate Table-view lazy-loading gap found during regression checks.
Thanks to neooleg and xet7 !
Pair label matches with their owning board, keep missing-label queries empty and preserve numeric card alternatives. Compare overdue deadlines with the current instant instead of UTC midnight. Verify combined searches across authorized and private boards in Chromium.
Thanks to GusevVictor, neooleg and xet7 !
Connect bundled filter templates, selectors, scoped resets and validated preset restoration through one registry. Use the recency controls as a built-in provider and verify extension lifecycle in Chromium.
Thanks to neooleg and xet7 !
Capture and restore all current filter controls with validated versioned state, refresh relative dates when applied, and reject invalid expressions before changing live filters. Persist same-name replacements atomically, restrict writes and subscriptions to their owner and board access, and clean preferences on board or account deletion.
Thanks to Creanimo, avatar1024, neooleg and xet7 !
Use local calendar boundaries and the user's week start, refresh active shortcuts with the shared clock, and release the subscription on switching or clearing. Cover month-end and year rollover plus actual sidebar boundaries.
Thanks to neooleg, Creanimo and xet7 !
Match any recorded list, swimlane or incoming board move within inclusive local-day bounds, regardless of later moves. Reuse the authorized reactive ID publication for text and history, preserve lazy-loading coverage and validate history joins and live UI behavior.
Thanks to neooleg and xet7 !
Match literal text across the authorized board, including cards outside lazy windows. Publish only matching IDs, refresh on content and access changes, and release observers when filters change. Verify the batched join, cancellation and permission races, and actual Chromium behavior.
Thanks to neooleg and xet7 !
Provide independent recent-day, week, thirty-day and older presets with a shared reactive clock, strict date values and composable card selectors. Verify timer cleanup and the real sidebar in Chromium.
Thanks to neooleg and xet7 !
Document verified sidebar date-range controls and retain the unfinished historical movement, combined text, relative preset and saved-filter requirements in TODO Later.
Thanks to neooleg and xet7 !
Choose inclusive local calendar bounds for seven card dates without an advanced expression. Preserve valid filters after invalid input and combine ranges with existing filters. Cover selectors and the actual sidebar in Chromium.
Thanks to neooleg and xet7 !
Add explicit built-in date names, missing-date comparisons and typed date guards while preserving quoted custom-field names and the shared date parser. Cover sidebar selection and actual rule execution.
Thanks to TiibCD and xet7 !
Fixes#1915,
Stream recorded movement histories during the versioned startup repair. Fill only missing dates with placement-bound conditional writes, preserve unknown or contradictory histories, and keep unresolved concurrent changes retryable.
Thanks to grasshide and xet7 !
Fixes#1499,
Keep column age stable across unrelated edits and record moves in the same card write. Add a rolling, board-scoped hide filter while retaining legacy cards with unknown entry dates. Historical activity backfill remains pending.
Thanks to grasshide and xet7 !
Refs #1499.
Resolve public card, board, list and swimlane titles reactively in detail and minicard views. Preserve existing regex formatting and constrain linked source placement metadata to its authorized board.
Thanks to solunix and xet7 !
Fixes#3815,
Remove rendered payloads immediately after matching intent completion and in bounded background sweeps. Require valid checksums and dispatch identity, retain pending or damaged plans, and use atomic in-place replacement with readback for uncertain acknowledgements.
Validated with 20 Node/MongoDB cases, three additional Node suites, four Meteor cases and thirteen Chromium delivery and cleanup scenarios. Operator handling and unresolved-payload retention remain open.
Thanks to xet7.
Scan bounded pending-intent batches after startup, advance past failed and busy rows, and coordinate immediate delivery and recovery through renewable per-intent reservations. Resume saved plans or prepare the first plan from an unchanged persisted activity; retain unresolved orphans without recreating activities.
Validated with 14 Node/MongoDB cases, three additional Node suites, four full-app Meteor cases and twelve Chromium scenarios including scheduled local SMTP recovery. Operator controls and payload retention remain open.
Thanks to xet7.
Save a checksummed plan before delivery, bind the original activity and dispatch actor, and reuse tray receipts and email job identities on retry. Recheck current recipient scope and channel preferences without rebuilding saved content.
Validated with ten MongoDB cases, three Node suites, three Meteor cases and ten Chromium notification scenarios. Background replay, ownership and plan retention remain open.
Thanks to xet7.
Await private intent persistence before the activity insert, preserve scoped Sync deferral, and retain pending evidence until all recipient subscribers acknowledge local writes. Compact successful intents while preserving dispatch identity; keep webhook delivery independent.
Validated with six MongoDB cases, three Node suites, three full-app Meteor cases and ten Chromium email delivery and private-storage scenarios. Automatic pending-intent recovery remains unfinished.
Thanks to xet7.
Confirm immutable intent persistence before inserting an activity, reconcile uncertain acknowledgements, and require exact activity snapshots for recovery. Bind insertion authority to the creating call so orphan retries cannot resurrect deleted activities.
Four real MongoDB fault and concurrency tests pass. This internal primitive is not activated in activity hooks; scheduling, persisted delivery plans and operator lifecycle remain open.
Thanks to xet7.
Retain detailed metadata for 30 days by default, then replace terminal jobs and commands atomically with minimal permanent identities. Preserve unfinished work, holds, generation fencing and actor-bound command replays. Sweep bounded batches independently and reconcile uncertain writes.
Validated with six Node suites, real MongoDB faults and replay tests, the Meteor startup scheduler, and Chromium Recovery replay and authorization checks.
Thanks to xet7.
Map selected aggregate seconds to the board's imported numeric time fields in hours. Preserve zero, missing and explicit null; validate mapping identities and retain unrelated fields through conditional array writes.
Twenty-five focused Node suites and twenty-two Chromium scenarios pass with local MongoDB and Jira fixtures. Live Jira, FerretDB and other browsers remain unverified.
Thanks to xet7 !
Apply configurable finite DNS, connection, greeting and idle limits to standard SMTP URLs, TLS overrides and admin providers. Keep Meteor's native standard transport and reapply limits after Sandstorm mail updates.
Eleven focused Node suites and fifteen Chromium scenarios pass. Real SMTP tests prove greeting and idle timeouts close connections, preserve queued payloads and allow later delivery. Absolute delivery deadlines remain pending.
Thanks to xet7 !
Select due recipients rather than a message-limited prefix. Share overlapping scans and process four recipients concurrently while preserving recipient leases. Verify pool limits, query recovery, large-backlog fairness and actual slow SMTP delivery.
Nine focused Node suites and fourteen Chromium scenarios pass; the strengthened scheduling-order browser case also passes. Startup-only harness was not rerun.
Thanks to xet7 !
Persist attempt reservations before sending, classify permanent SMTP failures, add bounded jitter and retain failed messages for administrator retry or cancellation.
Verify fourteen focused Node suites and fourteen Chromium scenarios with local MongoDB and SMTP. The separate stopped-app startup harness was not rerun.
Thanks to xet7 !
Index SAML, LDAP, OAuth login providers and Passwordless login separately from general Login settings. Update the implementation inventory to match the current routes.
Thanks to xet7 !
Summarize recipients without mail payloads, paginate with bounded memory, and coordinate pause/resume/cancel with sender reservations. Persist holds, cancellation cutoffs and idempotent request receipts so replay cannot undo newer actions or cancel later messages.
Verify current administrator access, interrupted commands, lost write acknowledgements, stable cancellation and private collection boundaries with MongoDB and Chromium tests. Keep translations limited to English source labels.
Thanks to xet7 !
Replace process-only digest timers with a private event/recipient outbox, renewable recipient reservations, persisted retry backoff and verified SMTP acceptance. Migrate legacy buffers without discarding unqueued text, retain small replay receipts, and recheck membership before delivery.
Verify MongoDB concurrency and interrupted writes, actual application startup recovery, and ten Chromium scenarios using local SMTP. Document at-least-once delivery and remaining recovery controls.
Thanks to xet7 !
Await buffer persistence, serialize per-user digest timers, and remove only delivered lines. Retain failed sends and newer reply targets. Cover SMTP rejection recovery through Chromium and local SMTP capture, plus concurrent sends and database read failures.
Thanks to xet7 !
Require caller-persisted intent IDs and private immutable completion records before cleanup. Resume known completions without rebuilding or reapplying cards, reject conflicting scopes and pending intents, and preserve newer operations.
Thanks to xet7.
Read back plan and marker deletion, retain incomplete cleanup, resolve lost delete acknowledgements only from confirmed absence, and protect successor operations and uncertain outcomes.
Thanks to xet7.
Compare before/after field unions without replacing unrelated metadata. Share literal snapshot predicates with production Sync, isolate result verification from driver mutation, and reject array shapes that cannot survive BSON storage.
Thanks to xet7.
Validate typed custom-field arrays, canonical estimate mapping identities and source baselines. Permit only the mapped field to change, retain local fields exactly, and verify persisted update/clear/create recovery and conflict retention against MongoDB.
Thanks to xet7.
Parse complete finite decimal tokens instead of integer prefixes. Keep text and dropdown matching, reject malformed numeric ranges, and verify database and browser behavior.
Thanks to xet7.
Use recursive grouping and Mongo-compatible whole-selector negation. Preserve left-to-right logical ordering, reject unfinished expressions before queries, and cover MongoDB and Chromium behavior.
Thanks to xet7.
Use elemMatch for field identity and value together in sidebar and rule queries. Reject unknown field names before querying, and verify cross-field false positives with MongoDB and Chromium regressions.
Thanks to xet7.
Compare saved custom-field values by identity for array, dotted and assignment updates. Suppress no-op and failed writes, preserve zero and false, and evaluate advanced-filter rules using boardIds-scoped definitions.
Thanks to xet7.
Select an existing numeric Jira estimate field in the Sync popup, retain field/unit identity, request the selected Cloud field, and merge numeric estimates with source baselines. Preserve zero, explicit null clearing, unrelated custom fields and their order; reject invalid or changed mappings and stale card writes. Cover source selection, conflicts, remapping, invalid values and full popup flow in Node and Chromium.
Thanks to xet7 !
Validate only present target entries while rejecting unknown keys, invalid values and broken placeholders. Keep source validation strict, log omitted key counts, and apply the same rules in offline dry runs. Preserve existing locale bytes and human-owned upload exclusions.
Thanks to xet7 !
Reject oversized rollover, compound History and recovery payloads before the first lifecycle write using BSON byte counts. Cover multibyte data, complete 10000-card plans and large-metadata rejection/retry in Chromium.
Thanks to xet7 !
Fetch projected inputs with an overflow sentinel before start or close, reject oversized card/list sets without partial snapshots, and index done-list membership once. Cover exact limits and unchanged lifecycle/History on rejection with unit and Chromium tests.
Thanks to xet7 !
Check source integrity, conditional write results and persisted undo state. Preserve undo timestamps across retries and delete only the matching operation checkpoint. Test failed writes, damaged final state, replacement checkpoints and recovery in Node and Chromium.
Thanks to xet7 !
Use deterministic event IDs and verify immutable contents and integrity before clearing recovery evidence. Accept exact legacy rows and lost insert acknowledgements; retain checkpoints on failed or conflicting records. Cover replay, concurrency, failed writes and damaged recovery rows in Node and Chromium.
Thanks to xet7 !
Reuse the actual merge and write plan, scope full-list previews to unrestricted writers, bound reports and keep omitted values private. Exclude status-only diffs from update counts. Preserve empty and whitespace source text through schema cleaning so repeated runs do not keep changing comparison baselines. Cover preview parity, saved settings, access changes, no-write errors, storage behavior and browser flows.
Thanks to xet7 !
Fence cleanup with opaque revisions and delete only bounded immutable ID snapshots. Settings saves repair invalid or exhausted counters atomically, while active tokens and newer staging remain intact. Cover reset races, overlapping delayed sweeps, bounded backlogs, lost acknowledgements and popup saves.
Thanks to xet7 !
Generate a fresh credential incarnation for each list insertion, including imports and copies. Match it when selecting credentials and activating settings. Sweep orphan versions by exact identity without reading secrets or deleting a recreated list's new token. Cover recreation races, delayed saves, retryable cleanup and browser flows.
Thanks to xet7 !
Persist conditional replacement decisions before card insertion. Revalidate source previews, restrict replacement to full-list writers and preserve the previous card. Cover stale decisions, database races and lost acknowledgements, moved and detached UI flows, and private collection writes.
Thanks to xet7 !
Offer a scoped archive-conflict preview and a parent-only mapping removal. Refetch source absence and revalidate the parent and archive blocker before conditional resolution. Preserve all subtask content and hide subtask identifiers from previews; assigned-only callers retain their write scope.
Ten Sync Node suites and thirteen Chromium scenarios pass, including both permission scopes, returning source items, unchanged subtasks and existing Sync behavior. Local release audit passes with advisory warnings. Add English source labels only. Creation collisions after moved or detached cards remain pending.
Thanks to xet7 !
Show extra mappings alongside the consistently retained card. Fingerprint the visible group, reject changed previews, and remove only an extra card’s Sync identity and baseline. Protect the same first mapping independently of database cursor order; preserve card content and assignment checks.
Ten Sync Node suites and eleven Chromium scenarios pass, including stale groups, retained-mapping protection, content preservation and successful reconciliation after repair. The local release audit passes with advisory warnings. Add English source labels only.
Thanks to xet7 !
Assigned-only writers review and resolve their own existing cards without triggering whole-list reconciliation or changing shared Sync status. Keep assignment in the conditional resolution write and recheck access after fetching. New shared conflict summaries omit card identifiers and values.
Ten Sync Node suites and ten Chromium scenarios pass, including hidden-card preservation, assignment revocation, scoped writes, source switching and credential recovery. The local release audit passes with advisory warnings. English source label only; no translation fill.
Thanks to xet7 !
Show local and source values for title, description and spent-time conflicts. Refetch and fingerprint the comparison before accepting a field choice, preserve unrelated fields and conditionally reject changed cards. Keeping local values advances their source baseline; no upstream writes occur.
Require unrestricted board write access and recheck it after fetching. Ten Sync Node suites, field-specific regression checks, catalog ordering and nine Chromium scenarios pass. Duplicate identity, archive/move conflicts, assigned-only resolution and transactional reconciliation remain pending. Add English source labels only.
Thanks to xet7 !
An hourly streaming sweep advances a server-owned generation before deleting unselected older versions. Settings activation checks its captured generation, so a delayed save cannot select a retired credential. Preserve active and newly staged versions, isolate per-list failures and keep secrets out of cleanup logs.
Eleven Node suites pass, including real MongoDB concurrent saves and sweeps, late inserts, uncertain writes and restart retries. Eight Chromium Sync scenarios pass across the initial run and focused corrected-test rerun. Upgrade all writers together; missing-list and malformed-generation records remain for review.
Thanks to xet7 !
Normal imports enter the recoverable cleaning phase before deleting private plan rows. Propagate cleanup failures and keep the destination guarded until deletion is acknowledged, so offline recovery can finish partial cleanup.
Three Node suites and two Chromium native-import/board-copy scenarios pass. MongoDB tests inject interruptions at every cleanup boundary and resume through the maintenance implementation.
Thanks to xet7 !
Validate complete plans before undoing stored writes in reverse order. Restore only original Scrum metadata and conditionally remove exact imported planning records. Persist reverse progress and cleanup, retain recovery claims on failure, and safely discard incomplete preparation without destination writes.
MongoDB integration tests cover every planned collection, write gaps, changed targets, cleanup interruption, corrupted cursors and the CLI. FerretDB remains unverified.
Thanks to xet7 !
Preserve localized help URLs during upload validation and pull merging. Repair translated string-template tokens in 20 locales and retain exact-value corrections. Cover all catalogs, genuine damaged tokens and the actual pull merge.
Thanks to xet7 !
Validate every target before writing, preserve stable IDs and conditional updates, and retain non-expiring recovery claims on failure. Resume complete staging and interrupted cleanup; reject partial plans and changed targets. Online recovery and other board-import stages remain unfinished.
Stage private per-document recovery steps before destination writes and retain board-level pending state through marker cleanup. Preserve stable IDs and exact before/after values for interrupted writes. Public coordinated replay and rollback remain unfinished.
Reject Scrum mutations and History changes until imported data is complete. Remove editing capabilities, show the pending warning and return a clear 409 for report downloads. Verify exclusion and normal access after the importer clears its marker.
Thanks to xet7 !
Introduce version 2 while accepting version 1 imports. Remap snapshot references, retain measured epochs and partial-data notices, bound transfer sizes, and prevent collectors from observing unfinished imports.
Thanks to xet7 !
Share the bounded history reader with report downloads. Preserve exact UTC capture times, estimate policies, unknown counts and partial or truncated result notices. Verify real workbooks and extracted PDF text through the application.
Thanks to xet7 !
Render timestamped scope, remaining and completed observations with count and estimate metrics. Preserve gaps and unknown estimates, label partial and truncated results, and ignore stale requests after sprint changes.
Thanks to xet7 !
Keep the first actual observation of each UTC day, preserve unknown estimates, and bound history reads. Verify retry and concurrent capture behavior with MongoDB and reader permissions with Chromium.
Thanks to xet7 !
Stage a private credential version and select it with settings using a conditional revision update. Preserve the previous or new pair across interrupted saves and lost acknowledgements. Prevent stale saves and delayed cleanup from replacing newer credentials, including after a clear.
Thanks to xet7.
Share a private database reservation across scheduled Sync, manual Sync and configuration methods. Renew during fetches, verify ownership before writes, reclaim expired reservations and preserve replacement owners during cleanup. Document the remaining in-flight write fencing and multi-document recovery requirements.
Thanks to xet7.
The maintainer is evaluating Transifex translation features to obtain most translations there. Keep earlier translation checkpoints as reference material only.
Thanks to xet7.
Use a stable database ID for new list/source/issue mappings. Stop on creation conflicts without replacing moved cards or claiming successful reconciliation. Cover concurrent database writers, browser clients, moved-card recovery and unrelated database failures.
Thanks to xet7.
Preserve previous-source cards across project switches, require matching credentials before fetching, and bind identifiable legacy mappings before replacing or clearing settings. Reject unknown legacy sources and stale fetched configurations.
Verify with nine focused Node suites, nine Chromium scenarios and the local release audit. Concurrent jobs and configuration writes remain nontransactional.
Thanks to xet7 !
Limit the exceptions to three exact URLs in package-lock.json. Cover accepted funding metadata and rejected URL variants, application URLs and suspicious keywords.
Thanks to xet7 !
Record current Scrum, Rules/History, translation, issue/UI/security audit and verification status under TODO Later. Refresh translation counts, stop active-work wording and wrap Upcoming entries. Completed implementation remains in its feature/fix-specific commits.
Thanks to xet7 !
Fill 60 English placeholders for navigation, screen-reader hints, workspace summaries and search. Preserve tokens and existing translations. Extend vocabulary and direction checks; accessibility terminology remains pending native-speaker review.
Thanks to xet7 !
Fill 38 English placeholders while preserving existing translations and tokens. Extend checks for variable operations and functions with and without return values. Specialist terminology remains pending native-speaker review.
Thanks to xet7 !
Fill 86 English placeholders for arithmetic, statistics, rounding and trigonometry. Keep mathematical notation and placeholders intact and extend catalog regressions. Specialist Gujarati mathematical terminology has low confidence and needs native review.
Thanks to xet7 !
Fill 75 English placeholders while retaining tokens and existing translations. Extend regression coverage for list actions and ascending/descending order. Specialist terminology remains pending native-speaker review.
Thanks to xet7 !
Fill 66 English placeholders while preserving existing translations and tokens. Expand Gujarati vocabulary and placeholder checks. Specialist mathematical and accessibility terminology remains pending native-speaker review.
Thanks to xet7 !
Fill 80 more English placeholders, including short control-flow aliases and bitmap states. Extend catalog checks and verify Gujarati dragging, field editing, save and context menus in Chromium. Specialist terminology remains pending native-speaker review.
Thanks to xet7 !
Fill 87 English placeholders for navigation, accessibility, colors and basic blocks. Preserve placeholders and existing translations, and update the active translation status. Gujarati terminology remains pending native-speaker review.
Thanks to xet7 !
Add field ID and unit controls to Jira import, validate before writes, and preserve mapping through Jira/native exports and board copies. Keep new fields hidden and reuse existing labels and permissions.
Thanks to xet7 !
Reject contradictory sprint states and snapshot timestamps before native import writes. Preserve valid active and cancelled history and cover import and board-copy round trips.
Thanks to xet7 !
Prevent inherited object properties from becoming list IDs or dependency targets. Reproduce the old import failure and verify literal names, Scrum categories, rendered cards and valid dependency links.
Thanks to xet7 !
Map explicit Jira category keys to existing hidden list metadata, validate before import writes, and honor Scrum selection in both directions. Verify Jira and native round trips and unchanged time tracking.
Thanks to xet7 !
Use stable card IDs to break equal effective-rank ties across fetches and clients. Preserve explicit zero ranks and normal list-position fallback. Cover metadata edits and refreshes in Chromium.
Thanks to xet7 !
Document verified History integration, shared-component behavior, localized editing and responsive layouts. Keep translation status explicitly paused and retain concurrency and backend limits.
Thanks to xet7 !
Clear stale manual-button metadata for automatic triggers and populate it for REST button rules. Verify actual menu visibility and History undo/redo for editor and REST changes.
Thanks to xet7 !
Copy changed shared triggers and actions while preserving unshared IDs and REST patch semantics. History restores component references and cleans unreferenced private copies.
Thanks to xet7 !
Reuse one cleanup path for editor, REST and History deletion. Restore shared components only when their recorded content is unchanged, without writing over another rule.
Thanks to xet7 !
Use the authenticated API user and shared rule snapshot wrapper for creation, edits and deletion. Verify one entry per operation, no-op suppression, permission denial and undo/redo.
Thanks to xet7 !
Reject mixed units, estimate sources, custom fields and completion policies before importing a board instead of combining unlike historical totals.
Thanks to xet7 !
Allow clearing rank metadata, retain zero as an explicit rank and avoid negative board positions blocking unrelated Scrum edits. Verify History and native transfer preserve cleared values.
Thanks to xet7 !
Display the current release and provide a board-local selector using existing card validation and History undo/redo. Keep card options independent from the planning-page release selector.
Thanks to xet7 !
Snapshot the configured workweek and use the start calendar for inclusive planned date counts. Preserve legacy unknowns, validate transferred calendars and include counts in reports and exports.
Thanks to xet7 !
Reuse active board membership validation, administrator-only configuration and History undo/redo. Add source labels with English catalog fallbacks and verify settings do not grant permissions.
Thanks to xet7 !
Carry metadata into newly created destination lists during list and swimlane moves, while retaining existing destination categories and revisions.
Thanks to xet7 !
Preserve descriptive metadata, reset copied revisions and remove foreign planning references and rank from cross-board card and subtask copies. Full-board copies keep the existing transfer remapper.
Thanks to xet7 !
Reuse numeric Jira time conversion and preserve local time edits with source baselines and conditional writes. Cover settings, zero values, excluded fields and invalid time.
Thanks to xet7 !
Add Title and Description switches with existing behavior as the default. Validate selections through the existing write-authorized method and exclude unselected fields from merge and baseline updates. Verify persistence, unsupported values and new-card defaults.
Thanks to xet7 !
Archive only planned source-matched cards with conditional text and location checks. Reject runs with active subtasks outside the archive plan rather than cascading through locally created work.
Thanks to xet7 !
Strip source IDs and text baselines from card/subtask copies. Reject existing duplicate local mappings before reconciliation rather than selecting an arbitrary card. Verify source preservation, actual copy bodies and board duplication.
Thanks to xet7 !
Track accepted source text, merge upstream-only edits, retain local-only edits and stop conflicting runs before card writes. Guard updates against concurrent text or location changes and display structured failures correctly in Sync now.
Thanks to xet7 !
Validate normalized tasks before reading or mutating cards. Missing IDs, duplicate IDs and malformed text cannot silently disappear from the source set or overwrite another task. Retain ordinary empty-source and unchanged-card behavior.
Thanks to xet7 !
Route standard Atlassian Cloud tenants to v3 search with explicit parser fields and complete token pagination. Reject missing or repeating tokens while retaining offset pagination for self-hosted Jira.
Thanks to xet7 !
Follow Jira offsets and provider next-page headers, validate advertised totals, and abort incomplete, looping or failed fetches instead of returning partial issue sets. Bound page/item counts and keep pagination on the configured origin without redirects.
Thanks to xet7 !
Reuse import source validation and handle parser failures through the existing error path. Invalid responses cannot masquerade as an empty source and archive cards. Verify actual sync function behavior and error display.
Thanks to xet7 !
Remove nested and flat fallback estimates when Custom Fields is excluded and spent time when Dates is excluded. Verify both actual import-page selections and preserve the existing full-transfer round-trip.
Thanks to xet7 !
Exercise native export/import and whole-board duplication with new field IDs, renamed estimate markers, remapped Scrum settings and subsequent Jira exports. Document the verified preservation boundaries.
Thanks to xet7 !
Keep valid numeric integration settings when the editor rebuilds visible settings. Exercise the production save handler and rename an imported field through its popup before exporting and re-importing Jira time data.
Thanks to xet7 !
Mark imported numeric estimate fields independently of their names, convert hours back to seconds, and honor Dates and Custom Fields export selections. Verify renaming, omissions, invalid and ambiguous values, and actual Jira re-import.
Thanks to xet7 !
Import numeric seconds as spent hours and hidden numeric original/remaining estimate fields. Preserve zero values, reject invalid durations before creating the board, and allow the estimate field to be selected for Scrum. Verify native export retention and existing Jira import compatibility.
Thanks to xet7 !
Index completed card IDs once instead of scanning the closing snapshot for every committed card. Verify 10,000-card snapshots with a deterministic work bound and unchanged commitment, completion and scope totals.
Thanks to xet7 !
Render accessible responsive count and estimate bars from existing filtered snapshots. Separate incompatible units, estimate sources, custom fields and completion policies, retain unknown counts and partial warnings, and preserve Excel/PDF exports.
Thanks to xet7 !
Resume using the stored revision and rollover destination, and reject retries while a History recovery checkpoint is pending. Add browser coverage for successful recovery, read-only denial and pending History exclusion.
Thanks to xet7 !
Add Scrum to board copy choices and reuse transfer remapping for planning records, metadata and snapshots. Collect copied list and swimlane IDs, omit deselected Scrum data and label reduced snapshots in reports and exports.
Thanks to xet7 !
Validate before import side effects, allocate destination planning IDs and remap cards, lists, fields, users and snapshots. Preserve source provenance and expose bounded loss reports to board administrators without granting permissions.
Thanks to xet7 !
Add a selectable Scrum section, scope planning records and snapshots, report omitted references, preserve anonymization and exclude operational recovery state. Native import and History transfer remain documented follow-up work.
Thanks to xet7 !
Share authorization across all nine exporters and retain access only for already scoped Scrum reports. Return HTTP 403 for denied document exports. Document ExportScopeBleed and cover policy, source-wide guards and HTTP behavior.
Thanks to xet7 !
Rewrite known username mentions in Scrum settings, metadata and transfer records. Run the same pass for streaming board and swimlane exports without changing references or estimates.
Thanks to xet7 !
Prepare shared native transfer, duplication and adapter validation with explicit partial-data losses. Reject invalid snapshots, foreign planning references and ID collisions. Runtime integration remains tracked in the Scrum design.
Thanks to xet7 !
Expose existing release and event update methods in Sprints, including release dates and status, event timestamps and follow-up cards. Preserve unchanged timestamps and use existing admin permissions and History.
Thanks to xet7 !
Record compound sprint transitions in existing board History, preserve unrelated card data and enforce current per-item permissions. Keep recovery checkpoints until timeline and undo status are finalized.
Thanks to xet7 !
Filter historical rows before search, counts and contributor aggregation using current board visibility and assigned-card scope. Gate all reversal paths with the same scope and current card/linked-card edit permission so revoked access or an old board cannot authorize hidden-card writes.
Verified 10 focused Node runner entries and eight Chromium scenarios across History and rule undo/redo, including allowed restores and negative cases. Document detection limits to avoid treating legitimate stale permissions as attributable attacks.
Thanks to xet7 !
Reuse board permissions, card estimates and chart exports for Product Backlog, Sprints, Sprint Report and Velocity views. Add revision-checked sprint lifecycle, recoverable rollover, release/event creation and independently hidden metadata controls. Explicitly label assigned-only reports as partial.
Verified 12 focused Node checks, a real Meteor/Mongo lifecycle regression and three Chromium scenarios including settings visibility, denial paths and actual Excel/PDF files. History integration, full transfer mappings and further report/editor work remain tracked in the Scrum design.
Thanks to xet7 !
Keep remaining language coverage and terminology review explicit, with reproducible non-completion counts. Continue other development while translations are paused.
Thanks to xet7 !
Translate remaining Blockly and Blocks editor prose in Hindi and hi-IN, Tamil, Kannada, Bengali, Nepali and Urdu. Preserve placeholders and correct-language translations; repair incorrectly seeded Urdu shared labels. Specialist accessibility and mathematical terminology merits native review.
All three catalog validation suites pass. Pause translation work here at the maintainer's request; Gujarati, Marathi, Malayalam, Punjabi, Sinhala and Telugu remain pending.
Thanks to xet7 !
Translate remaining Blockly prose and editor controls, preserve placeholders and correct-language existing strings, and replace wrongly seeded shared labels. Ladin dialect and Aromanian technical neologisms are low-confidence; Friulian specialist terms also merit native review.
All catalog order and token checks pass. No external translation service was used.
Thanks to xet7 !
Map sprint planning, reports, hidden metadata and data transfer gaps to existing board menus, permissions and features. Clearly distinguish the design from shipped functionality.
Thanks to xet7 !
Lazy-load Blockly for board administrators, preserve existing rule documents and execution, and provide direct List, Workflow, Blocks and History choices. Route workflow writes through server methods. Include local media, complete message-key coverage, translation merging and placeholder checks.
Translation coverage remains incomplete in additional locales. Low-confidence specialist terminology needs native review in Aragonese, Asturian, Corsican, Neapolitan, Occitan, Sardinian, Sicilian, Kashubian, Upper Sorbian, Silesian, Cornish, Manx, Gaelic and Breton; Faroese and Frisian also merit review.
Verified five Blockly/catalog Node tests, existing rules suites and four Blockly Chromium scenarios, including admin permissions, localization, drag editing and persisted execution.
Thanks to xet7 !
Wrap long text and buttons, remove overlapping absolute positioning, and keep form controls readable on mobile, RTL and dark themes. Four Chromium scenarios cover desktop and mobile layout boundaries.
Thanks to xet7 !
Snapshot rules with their trigger and action, combine compound edits, and restore through existing History with board-admin checks and stale-state protection. Cover lifecycle undo/redo, member rejection and conflicting edits in Chromium.
Thanks to xet7 !
Keep replacement trigger and action documents free of MongoDB update operators while preserving creation timestamps. Cover replacement and modifier updates independently.
Thanks to xet7 !
Credit kta1kri for the LDAP report and record the sibling audit, positive and negative tests, local protocol fixtures and Chromium coverage. Do not classify replay-cache capacity failures as attempted replay.
Thanks to kta1kri and xet7 !
Audit authentication boundaries following GHSA-m87f-f43w-hwmc. Guard both LDAP user-bind paths and the DDP/REST entry point, preserve service-account group lookup, compare CAS groups literally, and require single-use SAML request correlation. Add positive, negative, protocol and browser regressions with Problems summaries.
Thanks to kta1kri and xet7 !
Honor the commented Codeberg registry entry even with stale saved settings. Create missing WeKan source and destination clones under the checkout-relative .tools directory, keeping fetched mirror refs out of the primary checkout. Cover fresh clones, paths with spaces, saved settings, failure handling and existing checkout protections with injected commands.
Thanks to xet7 !
Replace the separate without-cards action with one selection popup, defaulting to all parts and providing Select All, Select None and Cancel. Validate choices on the server and preserve parent requirements, card relationships, custom fields and existing board-admin permissions.
Repair attachment copying to use explicit imports and the installed Meteor-Files promise API, wait for flushed file bytes, and propagate copy errors. Verify selection combinations, source preservation, attachments, multiselection, cancellation and denied calls with Node and Chromium tests.
Thanks to xet7 !
Reuse the existing visible comment data and escaped title attribute. Keep the localized count for multiple or empty comments. Cover count fallback and plain-text handling with Node tests, and verify admin/read-only rendering and private-board comment isolation in Chromium.
Thanks to lonix1 and xet7 !
Fixes#1933,
Existing Boards.copy, Swimlanes.copy and Cards.copy do not copy Activities records. Cover source board/card history exclusion, preservation, confirmation cancellation and permission rejection through the real multiselection duplicate actions, with and without cards. Document the existing behavior and refresh the open-issue audit.
Thanks to sfahrenholz and xet7 !
Fixes#2321,
Reuse the existing parent relationship and filter engine from card actions and the filter sidebar. Keep parent choices board-local, allow read-only filtering, and clear the selection when changing boards. Verify filtering, publication boundaries and unchanged card data with Node and Chromium tests.
Thanks to robinvd and xet7 !
Fixes#1871,
Place Draggable before Minicard and Card in a three-column layout that stacks when the popup is narrow. Expand long option menus and pickers into balanced columns while preserving form layouts, search focus, popup stack navigation and permission-filtered options.
Thanks to xet7.
Honor Submit editors with Enter across textarea editors, retain composition and mention handling, and route shortcuts through existing scoped save actions. Preserve manual resize dimensions after typing and retain single-line structured fields.
Keep the typography reset from overriding themed button foregrounds, including Board Settings column actions. Verify blue, green, dark and Clean Light buttons and chart actions.
Thanks to xet7.
Show Flag Language (Flag Country) on one line, retaining directional isolation and the RTL marker beside the language name. Allow long rows to scroll on narrow screens instead of wrapping or hiding their text. Verify all language rows at desktop and phone widths in LTR and RTL.
Thanks to xet7 !
Release ancestry places ZIP previews (2016d15f2) in v12.01, absent from v12.00, and multi-list swimlane drops with named previews (f772663e5) in v12.03, absent from v12.02. Move both unchanged entries out of Status into those sections.
Extend the changelog guard to reject completed release summaries anywhere under Status, including before TODO Later. Verify the regression fails before relocation and all four changelog suites pass afterward.
Thanks to xet7 !
Remove the board-tile Actions hamburger and its popup. Add Duplicate Board — Without cards immediately below Duplicate Board in the All Boards multiselection sidebar, using the shared confirmation, selected-board guard and existing copyBoard permissions.
Verify both copy modes for two selected boards, cancellation, preserved source cards and denied non-admin duplication and archiving. Update the All Boards documentation.
Thanks to xet7 !
Mark the Monte Carlo and size versus cycle time option submit buttons as primary so existing named and custom theme rules supply their background and readable text colors. Verify both pages in default blue, red, dark and custom themes, including hover and keyboard focus.
Thanks to xet7 !
Keep desktop card windows unpainted until initial anchoring completes. Prefer the right side in LTR and the left side in RTL whenever it fits; otherwise use the other side and keep the window inside the viewport.
Verify first-visible-frame geometry for preferred and fallback sides in both directions, and retain passing date-save position regressions.
Thanks to xet7 !
Align each radio button to the left of its label. Verify rendered control geometry, insertion above and below, and read-only restrictions in Chromium.
Thanks to xet7 !
Date saves and removals refresh the board publication. Preserve the mounted view while that same board refreshes, instead of rebuilding its windows at the default dock and anchoring them again. Reset readiness on board navigation as before.
Verify save/delete for Received, Start, Due and End in Chromium, including persisted dates, badge updates and frame-by-frame window position. Cover initial loading, same-board refresh and navigation in a focused readiness test.
Thanks to xet7 !
Record an individual finding and remaining verification for every open issue. Browser tests confirm swimlane names on minicards and board-specific view visibility already work; retain the remaining 133 requests with their outstanding scope.
Thanks to sebastianha and xet7 !
Fixes#1748, fixes#2107,
Reuse owner-scoped unsaved edits, restore titles only before local typing, and clear saved titles after successful insertion. Verify restoration, list isolation, successful saves and denied cross-user writes.
Thanks to TutloTutlo and xet7 !
Fixes#810,
Offer label combination mode under Filter, retaining exclusions and no-label alternatives. Restore active title, list and advanced text when the panel is recreated. Verify actual calendar grid/list results, unmatched and cleared filters, and label combinations in Chromium; pure tests cover reset and invalid modes.
Thanks to Trunkslike, TheBigBloodyB, Roemer and xet7 !
Fixes#2044,
Fixes#3361,
Use the existing Add Swimlane popup for above/below insertion. Restore reachable board-admin archive and duplicate controls in the All Boards tile Actions menu. Preserve existing server permission guards and confirmation behavior. Unit and Chromium tests cover ordering, successful operations, cancellation and rejected writes.
Thanks to bentiss and xet7 !
Fixes#2131,
Fixes#2644,
Record the 149-open-issue follow-up audit with implementation evidence,
original regression commits where available, and explicit remaining scope.
OIDC logout, case-insensitive mentions, remote mobile card closure,
alphabetical member selection, bulk card colors, existing-card subtasks
and minicard field visibility already work. Extend executable logout-hook
coverage and add browser checks rather than relying on method names alone.
All 31 focused Node suites and 27 distinct Chromium scenarios pass across
this audit and its two separately committed fixes. No live external IdP
or FerretDB backend matrix was tested.
Thanks to RowhamD, Usernameisalreadytaken99, rptl, czinkos, bhueck,
Vida444, xefladrero and xet7 !
Fixes#5061,
Fixes#1938,
Fixes#3114,
Fixes#1686,
Fixes#2160,
Fixes#3213,
Fixes#3198,
History restored a list but left deletion markers on its cards. Replay the
existing soft-delete/restore modifiers across the same board/list and batch.
Keep independently deleted cards untouched and refuse lifecycle rows for
lists moved to another board. Preserve the deletion batch in lifecycle
content and record the actual lifecycle state in history snapshots.
The browser regression failed against the previous implementation. It now
passes undo, redo and undo again with persisted card checks. Separate
read-only rejection, pure negative cases, existing history tests and
flow/time-history browser regressions pass.
Thanks to rawwerks and xet7 !
Fixes#1023,
The card-link picker excluded every real card on its own board, and the
server rejected same-board sources. Include the current board and exclude
only sources already mirrored. Preserve coordinate and write validation,
reject link chains, and prevent whole-board self-links through both buttons.
Labels already use the source card. Verify live source-to-mirror updates
and edits through the mirror, same-board authorization failures, whole-board
self-link rejection, and existing cross-board behavior in Chromium.
Focused linked-card Node regression suites pass.
Thanks to RinTheCatato, mohamed-aziz-chamakh and xet7 !
Fixes#5683,
Audit the 159-open-issue snapshot against existing source and regression
coverage. Record the implementations and their original regression commits
in docs/DeveloperDocs/Open-Issue-Completion-Audit-2026-09.md.
Visibility descriptions, field ordering, archived subtasks, linked covers,
checklist-to-subtask conversion, drafts, subtask badges, archive details,
rule toggles/editing and standalone SAML already have implementations.
All 28 selected Node regression suites pass; live browser/IdP tests were
not rerun for this documentation-only audit.
Remove completed TODO entries, correct two unrelated issue references,
and retain incomplete feature requests and deployment investigations.
Thanks to Meeques, Somantiq, javen9881, matrixes, bastos77,
therampagerado, sfahrenholz, Gobliins and xet7 !
Fixes#4421,
Fixes#3877,
Fixes#3409,
Fixes#2498,
Fixes#2422,
Fixes#3243,
Fixes#3207,
Fixes#1504,
Fixes#2322,
Fixes#708,
Describe the new reports, reused data, retained history, issue audit and validation limits. Keep released sections unchanged.
Thanks to sojournerc, ladistrupl, zombah and xet7 !
Keep card and checklist activity after deletion, retain card snapshots for
flow reports, and show recorded hour adjustments by their actual author in
Time and its PDF/Excel exports. Record whole positions centrally, including
optional move reasons and direct REST edits. Append undo/redo checkpoints
so blocker intervals and time corrections follow reversals through time.
Audit the open time-related requests against existing features. Exact inline
activity timestamps requested in #1673 already exist in dateDisplay and the
activities template; add a browser regression for that existing behavior.
Reuse established locale terminology for the new compact labels. Labels
outside English and Finnish are low-confidence glossary combinations for
human review; existing translations remain untouched.
Validation: 43 focused Node suites pass. Fifteen Chromium scenarios pass
across flow analytics, time history and existing REST move coverage, including
real chart and Time PDF/Excel exports, undo/redo, retention and access denial.
Thanks to ladistrupl, zombah and xet7 !
Fixes#1598,
Fixes#1673,
Reuse board dates, activities, estimates, dependencies and universal History for Aging WIP, Blocker Analysis, Monte Carlo forecasts, XmR and size versus cycle time. Keep Chart.js lazy loaded and share parameterized PDF/Excel exports. Record dependency edits in History with undo/redo and board-boundary validation.
Validation: 21 focused Node suites and 8 Chromium tests pass, including every chart download and dependency undo/redo. Report labels reuse native locale vocabulary and formula notation; compact explanatory wording outside English/Finnish has low confidence and welcomes review.
Thanks to sojournerc and xet7 !
Fixes#1476,
Fix InactiveBleed across REST, attachment and export authentication, header login, LDAP token issuance and People account controls. Apply administrator-created account flags before insertion and guard token creation atomically.
Thanks to esbrito81 and xet7 !
Recognize empty swimlane bodies as mixed-selection drop destinations while keeping swimlane drag starts on headers. Replace the count-only indicator with a tilted stack of selected object names and icons rendered as text. Verify two-list moves, card parents, ordering, collapsed containers, both handle modes and persistence after reload.
Thanks to xet7 !
Reuse one control for draggable, card visibility and swimlane/list settings columns. Apply explicit booleans atomically through board-admin authorization, deriving column fields from existing row definitions and retaining personal overrides. Cover every column, repeated clicks, persistence, isolation and denied updates.
Thanks to xet7 !
Default swimlanes, lists, cards, checklists, checklist items and subtasks to draggable. Share settings UI and policy, update ordinary sortables reactively and enforce the policy for mixed-selection drags while retaining explicit menu moves. Cover persistence, authorization, independent defaults and both checklist handle modes.
Thanks to xet7 !
Select lists, swimlanes, cards and checklist content together. Preserve parent hierarchies, validate move permissions, and create a destination card for checklist content dropped onto a list.
Thanks to xet7 !
Use the same progress display and sortable lifecycle on minicards and opened cards. Restore sorting after unfolding, honor both drag-handle modes, and distinguish a checklist drop from board-list card conversion. Verify persisted reordering and transfers across lists and swimlanes.
Thanks to xet7 !
Read destination rows in document order instead of relying on direct siblings, which can be inline-form wrappers. Exclude the drag helper and placeholder. Reproduce moving 45 from last to first and then into the third placeholder, with handles enabled and disabled, and verify persisted order after reload.
Thanks to AmigaAbattoir and xet7 !
Fixes#6723.
Capture the destination checklist and neighboring items before cancelling the sortable DOM move, so Blaze persists the intended order rather than the original position. Cover boundary and cross-checklist moves, card conversion, and actual dragging with reload persistence.
Thanks to AmigaAbattoir and xet7 !
Fixes#6723.
Document SAML administration and its verification limits, restore the People navigation entry, and order the release entries by feature, interface, fixes and release tooling.
Thanks to xet7 !
Provide shared catalog-driven settings controls with environment fallback, live admin overrides, platform configuration and regression coverage. Document the remaining live identity-provider validation requirement.
Thanks to xet7 !
Give SAML and standalone provider actions the same blue background and white text and icons as the password Login button. Verify normal and hover colors in Chromium.
Thanks to xet7 !
Keep the redirect guard after failed login attempts, require writable session storage, and recheck login state after the asynchronous settings request. Cover callback reloads, failures, storage restrictions and delayed responses.
Thanks to Alishara and xet7 !
Fixes#6722,
Resolve the site administrator role from the authenticated download token so the Files Report can open private-board attachments without requiring board membership. Keep ordinary private-board readers subject to membership checks.
Wrap the shared attachment controls inside narrow table cells so neighboring cells cannot intercept the download button.
Verify DOCX, image and PDF preview/download flows in Firefox and Chromium, plus negative authorization cases and eight focused Node suites.
Thanks to xet7 !
Follow moved documentation and component-owned templates, preserve reviewed translations, update date-format guards and account for AuthTraceBleed coverage. Recognize the backup containment guard and select the release npm version locally.
Exercise invitations with a separate member and an open sidebar, match the multiline swimlane composer, and wait for an interactable sign-in field before keyboard navigation.
Verified all 1216 Node suites, targeted checks in three browsers and nine real backup/restore integration checks.
Thanks to xet7 !
Replace the deleted local meteor-node-stubs fork with npm 1.2.30, update Rsdoctor to 1.6.4 for CVE-2026-61782, and remove obsolete build-tool exclusions from Dependabot. Add guards for tracked local manifests and patched lockfile versions.
Refresh APT indexes in the failed managed LXD base after a package download 404 and retry native and variant builds once. Keep unrelated failures fatal and preserve container state.
The app answered successfully but the EXIT trap waited forever after signaling only its launcher. Run the app in an isolated process group, terminate all descendants with bounded escalation, bound HTTP probes, and retain smoke logs. Cover successful startup, failed startup, stalled HTTP and TERM-resistant children on macOS.
Thanks to xet7 !
Keep libatomic1 in Docker runtime dependencies, package architecture-matched libraries and licensing in Linux ZIPs inherited by AppImage and Flatpak, and include the library in Sandstorm. Install it explicitly in native and emulated builders; remove inherited Linux runtime files from Windows and macOS repacks.
Thanks to Nissulya, PetitManchot and xet7 !
List Mac app archives with unzip, handle shallow telemetry scanner paths, ship the Docker deny-hash policy, and discard inherited foreign ELF addons that shadow target prebuilds. Add offline regressions and a native macOS archive check.
Thanks to xet7 !
Fix the legitimate invitation flow and unnecessary anonymous metadata subscription reported in #6692 comment 5811473169. Keep protected profile writes forbidden. Existing account blocks require administrator review; the separate history checksum report still needs the affected stored rows.
Thanks to Nissulya and xet7 !
Review 46 changed runtime files and refresh the telemetry inventory without weakening the release gates. Check the inventory locally before release mutations and in regression tests.
Fix CodeQL alerts 543 and 544 in the loopback login fixture with bounded anchored OAuth header parsing and generic HTTP failures. Remove the same stack response from the shipped Sandstorm adapter. Preserve successful signatures and proxy authentication; add malformed-input, negative source and live browser coverage.
Validated macOS ARM64 build, 1577-file source inventory, 42926-file bundle scan, ten OAuth/Sandstorm browser checks and focused security/release tests. Hosted CodeQL has not been rerun.
Thanks to GitHub CodeQL and xet7.
Defer password-form replay to the next task so Firefox finishes dispatching the original native submit event. Keep duplicate submissions blocked and retain useraccounts validation and two-factor handling.
Reproduced registration success followed by silent login failure in Firefox 156.0.1. Verified wrong-password rejection, click and Enter login, and cookie resume in the rebuilt app. Add native-event browser and negative unit coverage; Chromium password/TOTP and emailed-code checks also pass.
Thanks to xet7.
Fill two English placeholders in 232 non-English locales, retaining existing item names and exact interpolation tokens. Add locale-wide interpolation and negative checks plus Finnish, French, Japanese and Hebrew browser coverage.
Low-confidence drafts needing fluent review: Cherokee, Inuktitut, Greenlandic, Tigre, Wolaytta, Fulah, Venda, Tamazight, Nahuatl, Veps, Aromanian, Ladin, Kashmiri, Konkani, Dzongkha and Guarani. Record vocabulary sources and verification limits.
Thanks to xet7.
Verify due dates, labels and restored Unicode descriptions, record the complete Chromium baseline and unresolved failures, and document the import/menu fixes in Upcoming.
Thanks to xet7.
Wire organization bulk controls, preserve Jira ADF descriptions and activity-independent attachments, skip empty CSV rows, and reject invalid source shapes. Apply the import-disable switch and shared transfer validation to Trello HTTP imports.
Add documented dummy format fixtures, positive and negative browser checks, menu inventory guards, and an implementation audit with explicit coverage and format limitations. Thirty new Chromium checks and the corrected cross-board move regression pass on macOS ARM64 with FerretDB; focused Node suites pass.
Thanks to xet7.
Show radio choices beneath every creation title, even when empty. Reuse translated item names and register new label fallbacks without overwriting existing translations. Create boards sequentially with shared creation settings and prevent overlapping submissions.
Verify one/many flows in five Chromium tests on a macOS ARM64 build, plus title, board-batch, locale, shared-form and documentation checks.
Thanks to xet7 !
Start the shared scheduler and use valid daily expressions. Preserve all
application collections, BSON types, indexes and selected file versions in
portable archives, validate content before restore, and report failures.
Document every Admin Panel implementation and its validation limits. Add
real-database round trips, failure cases and browser coverage for scheduling,
restore, file downloads, every pane route and permission boundaries.
Thanks to markusst1982 and xet7 !
Fixes#6683,
https://forums.meteor.com/t/meteor-3-6-beta-x-rspack-2-x-native-typescript-node-js-26-pnpm-monorepos-instrumentation-pwas-and-a-friendlier-cli/64773/7
"Anyone testing Meteor 3.6-beta.1 with an AI coding assistant: I’ve published Meteor Agent Skills v1.1.0-beta.1.
It adds a meteor-typescript skill for meteor types, declaration providers, JavaScript IntelliSense, and type checking. The existing skills have also been updated for the beta.1 changes to Rspack, Node.js, Accounts, instrumentation, and DDP.
npx skills@latest add 'meteor/agent-skills#v1.1.0-beta.1'
Native declarations are opt-in, so the TypeScript guidance should help you keep a working @types/meteor or zodern:types setup until you choose to migrate. If an assistant gives you advice that doesn’t fit your app, please share the prompt, Meteor version, and relevant configuration. That feedback will help us improve the skills before the stable release."
Add September feature instructions, preserve guide forwarding links, and document backup coverage with descriptive screenshots from #6683.
Thanks to markusst1982 and xet7 !
Offer one multiline item or separate items for nonempty lines. Preserve order, prevent overlapping submissions and retain multiline list and swimlane names when editing and displaying them.
Thanks to AmigaAbattoir and xet7 !
Fixes#6714,
Remove inherited form-field minimum height, padding and margins from the native checkbox and center its flex row. Verify checkbox dimensions and label alignment in both Disabled and Enabled states.
Thanks to xet7.
Place the bold Member Settings: Date Format heading directly after board status. Show a live Enabled or Disabled checkbox label above the format selector, with rules before week-start and calendar-system controls. Reuse existing translations.
Thanks to xet7.
Place the existing immediate preference below Save and a horizontal rule. Verify the member Date popup displays date-format controls directly above week-start and calendar settings.
Thanks to xet7.
Move week start and calendar system below Date Format and remove their controls and writes from Change Settings. Capture all selections before saving, await week-start persistence, and retain existing translations.
Thanks to xet7.
Apply enabled member overrides before board and global defaults. Show inherited
status and saved formats using existing translations, and keep the card section
named Date. Cover rendering, exports, permissions, date-only formats and settings
isolation.
Thanks to xet7.
Capture sign-in submission before asynchronous provider selection, keep the form mounted, and complete only the chosen login path. Preserve password validation and show provider errors without redirecting.
Thanks to Nissulya and xet7 !
Fixes#6692,
Preserve local instrumentation and security logging, opt out of Meteor package statistics, and audit release bundles and repackaged binaries before publication.
Thanks to xet7.
Add the Occitan, Breton, Wolof, Walloon, Volapuk and Standard Moroccan Tamazight corrections to the upcoming release notes, including their verification and review status.
Correct the Tamazight SMTP port label and refresh audited review records for the translated checklist examples. Preserve their comma-separated input syntax while retaining target-language item names.
Show when a partial file audit stopped before inspecting storage, allow larger bounded inventories, and avoid orphan findings from truncated metadata. Restore available locations in Offices and People, wrap long report cells, and theme report action buttons.
Publish only the public boards a logged-in user has starred and include them in Favorites queries. Preserve private-board access rules when a previously public board changes visibility. Cover the public-board flow in Chromium and the selector boundary in Node tests.
Thanks to nalilord and xet7 !
Fixes#6713,
Read stored per-user list state reactively instead of caching an early expanded fallback in Session. Cover profile hydration and a Chromium reload with the persisted swimlane-scoped value.
Thanks to Nich01asFox and xet7 !
Fixes#6712,
Route internal card links within the current WeKan page and wait for the destination card subscription before treating it as unavailable. Cover same-tab navigation in Chromium and link classification in Node tests.
Thanks to carl-unique and xet7 !
Fixes#6711,
Share native file and bundled libmagic detection across uploads, extension correction and administrator file checks. Include the portable WASM database in runtime dependencies, stage native file for Snap and Linux setup, and verify release assets before smoke boot.
Cover portable detection with native file absent, missing dependencies/assets, isolated release layout and HTML diagnostics in Chromium, Firefox and WebKit.
Thanks to xet7 !
Add shared controls above Files, Filesystem integrity and Recovery for content/type checks, storage inventory and history correlation, with progress, cancellation and a downloadable bounded summary.
Report incomplete upload metadata separately from missing binaries. Compare filesystem and GridFS references, sizes, MIME/extension aliases, hashes and baseline evidence; correlate undo/activity history with candidate renamed or moved files. Preserve files and records, enforce administrator access and scan limits, and explicitly report unknown or unverified coverage.
Verify five focused Node suites and two browser scenarios in Chromium, Firefox and WebKit. Rerun header-first content detection in all three browsers. Document storage and verification limits.
Thanks to xet7.
Anchor runtime resolution at programs/server/npm so Office search indexing finds fflate, PDF indexing finds its worker and assets, and image conversion finds sharp. Parent resolution keeps source development working. Retain the file utility as a Docker runtime dependency for MIME detection.
Verify six focused regression suites and XLSX extraction plus PDF asset resolution in an isolated release container. Include negative archive and missing-dependency coverage.
Thanks to xet7.
Cache Meteor package transforms, make development DEBUG logging opt-in, and replace legacy CAS URL parsing while preserving callback encoding and custom HTTPS ports. Clean attachment metadata during browser fixture teardown, including failure paths.
Verify six focused Node suites, nine sequential browser checks across Chromium, Firefox and WebKit, and live HTTP requests with deprecation tracing. Document the package cache and verification limits.
Thanks to xet7.
Repair 841 wrong-language or previously audited bad values from the pull while preserving 77 Persian and Portuguese updates. Record exact rejected locale/key/value fingerprints, validate fallback tokens and content, and reapply existing audited corrections without replacing newer human wording.
Separate adjacent interpolation tokens and clarify pre-merge diagnostics. Actual merge replay, 11 focused Node suites, 21 human-preference checks and Veps/Tamazight UI cases in Chromium, Firefox and WebKit pass. The Quechua width label uses attested kinraynin; full grammar remains low confidence pending native review.
Thanks to xet7 !
Record sequential EVERYTHING coverage across Chromium, Firefox and WebKit, development database lifecycle checks, application fixes and the companion FerretDB test-runner fixes. State unsupported browser-specific coverage and the unconfirmed intermittent Firefox failure.
Thanks to xet7 !
Add Dev server nobuild to both build menus with shared URL and port options. Load checkout JavaScript and templates in memory using the installed Meteor toolchain; start its bundled MongoDB on the next port and wait for owned database shutdown.
Run server, Node, import, E2E and all supported Chromium, Firefox and WebKit regressions sequentially, stopping on failure. Preserve CommonJS semantics, native fetch, dynamic import namespaces and client source access boundaries. Document verified results and the remaining Windows and intermittent Firefox limits.
Thanks to xet7 !
Read the current user once and only offer description recovery when its published profile explicitly enables it. Session initialization can publish the user before the profile, which previously threw from the details-pane close handler.
Exercise missing users and profiles, recovery opt-in, unchanged drafts, save and discard from the actual handler. A browser regression removes the profile and closes a card without errors; it passes in Chromium, Firefox and WebKit.
Thanks to xet7 !
Run portable drag-sort tests in Chromium, Firefox and WebKit and include global feature toggles in serial runs. Keep drag gestures inside the viewport and focus comment inputs with a real click before testing mention hit targets. Require the swimlane creation popup and its input instead of accepting an unrelated visible lane.
Affected tests passed in all three browsers. Raw CDP touch remains Chromium-only.
Thanks to xet7 !
Use document-ready navigation for report permissions, board comment publication and phone board layout. Explicitly await the non-admin session before testing version lookup authorization. Positive and negative comment visibility and phone geometry assertions remain intact and pass in Chromium.
Thanks to xet7 !
The non-Latin keyboard bridge dispatches synthetic events on document. The shortcut filter previously called closest on that non-element target, throwing during Tab navigation on signed-out pages. Fall back to the focused element and safely reject missing focus.
Unit tests cover native and document-targeted events, form and interactive controls, editable content, selections, disabled shortcuts and Escape. The signed-out layout browser regression passes in Chromium.
Thanks to xet7 !
Replace idle-network navigation waits with document readiness followed by the existing user, control, sorting, search and permission assertions. Template copying, board sort/search and server pagination regressions pass in Chromium on the source server.
Thanks to xet7 !
Preserve Requested By and Assigned By accessibility checks and description persistence assertions without waiting for persistent Meteor connections to become idle. The card members and description browser group passes in Chromium.
Thanks to xet7 !
Keep voted-state, database membership and visible count assertions after document-ready reloads. Positive, negative and vote-count regressions pass against the source development server in Chromium.
Thanks to xet7 !
Avoid idle-network reload waits with persistent Meteor connections. Require the seeded label to be selected and displayed instead of accepting an open popup as success.
The focused label regression and the remaining date-editor Chromium tests pass against the source development server.
Thanks to xet7 !
Replace idle-network navigation waits with document readiness and the existing layout, session and persistence assertions. Meteor SockJS requests can stay active after the page is ready. Verify immediate comment persistence, list order, view changes and repeated sign-in page loads on the source development server.
Remember the requested path before the sign-in guard redirects an initial page load. After authentication, restore that local URL instead of always opening All Boards, using the router redirect API to preserve deployment prefixes. Keep external targets rejected and sign-in enforcement unchanged. Verify direct My Cards navigation, assigned-card inclusion, unassigned-card exclusion and cookie/Sandstorm regressions.
Count unread profile records for the bell without requiring activity details that are subscribed only by the open drawer. Cover read and missing records, and verify a watching member receives a live mention alert in a separate browser session.
Align the sign-up browser regression with the adopted A05 accessibility behavior. Tab reaches both visibility buttons; Space and Enter reveal and hide passwords without submitting a valid form. Enter in the confirmation field still creates the account, and test accounts are cleaned up on failure.
Replace idle-network reload waits in membership and search regressions with document readiness and existing visible-control assertions. Verify member removal instead of silently bypassing missing controls. Bound HTTP and HTTPS readiness checks and reject failed, unhealthy or stalled servers rather than skipping all browser tests successfully.
Avoid a stale empty swimlane or list cache in the destination subscription ready callback. Cross-board moves now select a valid destination and enable Done without waiting for another user change. Cover delayed cache refresh alongside stale requests and rejected operations.
Keep mobile sidebar controls below headers that appear after login or a route change. Cover delayed rendering, resize updates and destroyed templates, and wait for document readiness in the mobile Search browser regression.
The muted-assignment fix in 4be77e7189 and scoped-subscription/settings fix in 03e8a6bf66 are already present. Add browser regressions that capture SMTP email for board, list and card watching, comments, title changes and new cards; verify muted assignments and member email opt-outs stay silent. Correct the channel settings guide and document delivery prerequisites and test setup.
Ten SMTP scenarios and six existing tray/settings scenarios passed across Chromium and Firefox against the current Meteor bundle with MongoDB. Focused recipient and notification Node suites passed. External inbox delivery and FerretDB runtime were not verified; the latest reported delivery failure was not reproduced.
Thanks to Nissulya and xet7 !
Fixes#6658,
Add board controls for minicard collapse, labels above the title, checklist due dates and the outer checklist heading. Keep previously collapsed content accessible when its control is hidden, and preserve stored content and existing defaults.
Add personal and admin date-only formats across calendars and exports. Extend the existing smaller font presets with compact checklist and settings spacing. Cover persistence, permissions, layout and date behavior with unit and browser tests.
Thanks to xet7 !
Use the Markdown textarea for every editor. Remove the retired environment and Snap options from server settings, all platform launchers, build scripts and current documentation. Keep released and archived changelog entries intact.
Keep notification HTML escaping independent of editor configuration, preserve attachment metadata and mention behavior, and cover Markdown and emoji round trips in browser tests. Also import the translator used by attachment error handlers.
Thanks to xet7 !
Repair relative ordering and destination dialog lifecycles, retain failed operations, and make checklist, rule and attachment controls keyboard accessible. Improve scaled layouts and reuse canonical translated labels.
Add source-execution and Chromium/Firefox regression coverage, including awaiting background persistence before reload. Record implementation decisions and validation limits.
Thanks to xet7 !
Initialize autocomplete once per editor, place its styled menu above card windows, and fall back to the textarea when Summernote is unavailable. Verify pointer and keyboard selection for password and LDAP account fixtures.
Thanks to bbyszio and xet7 !
Fixes#6704.
Bind sortable initialization and reactive work to the replaceable list body, and clean it up on destruction. Cover repeated collapse, expansion, reload and drag permissions.
Thanks to Nich01asFox and xet7 !
Fixes#6705.
Recover the project repository used for submission, retry recipe creation while Launchpad indexes main, and reject incomplete snaps before remote cleanup. Run the compatibility wrapper inside Snapcraft's own environment.
Verified all 1173 Node suites sequentially, workflow lint and script syntax. Regression coverage exercises delayed refs, unrelated errors, recovery paths, invalid downloads and launcher argument handling without remote writes.
Thanks to xet7 !
The v11.85 logs show ARMHF failing during Launchpad polling after TLS EOF,
PPC64EL and S390X reaching the six-hour job cap while queued, and AMD64
successfully publishing to the Snap Store before its GitHub attachment hung.
Recover existing recipes before considering a new submission, and share one
five-hour waiter budget across attempts on every architecture. Prepare an
isolated complete source snapshot with Git metadata and logs outside the
project hash, and distinguish architectures so matrix recipes stay separate.
Move downloaded artifacts out before retrying recovery.
Bound GitHub snap attachments and verify remote names and sizes. Exercise
these paths with fixture repositories and mocked network commands, covering
TLS failures, absent recipes, denied credentials, queue timeouts, invalid
artifacts and failed uploads. Workflow parsing, shell syntax and Actionlint
pass. The full 1,172 Node suite sweep is verified with corrected guards rerun.
Live remote builds and publishing have not been run.
Thanks to xet7 !
Place the global date format checkbox and selector between Board member
list and Wait Spinner in Visibility settings. While enabled, use the
selected format for members and guests, call the card section Date and
hide its personal format selector. Preserve personal preferences so they
return when the override is disabled.
Apply the same policy to date displays, filter parsing and browser export
requests. Validate supported formats and retain admin-only settings writes.
Add positive, negative and browser regression coverage and document the
setting. Translate the new label without changing existing translations.
Lower-confidence new translations include Acehnese, Aymara, Cherokee,
Inuktitut, Kashmiri, Nahuatl, Veps, Volapuk and Wolaytta; native-speaker
review would improve these labels.
Thanks to Mathia2 and xet7 !
Fixes#6703,
Bind card and board identifiers explicitly on links rendered under lexical each loops. Open the subscribed card popup from the link rather than the unrelated outer Blaze data context, while preserving modified-click navigation.
Regression tests cover outer-context mismatch, nested click targets, missing identifiers, modified clicks, and sequential card popup selection on both pages. The fresh bundle passes both page regressions in Chromium, Firefox and WebKit using polling reactivity.
Thanks to Mathia2 and xet7 !
Fixes#6702,
Preserve the newer Traditional Chinese wording in historical repair records. Locate the card read-only branch by its matching conditional rather than fixed indentation after optional field grouping.
Verified all 1169 Node suites pass, translation pull/fill protection passes, and missing requester or assigner avatars still fail the repaired guard.
Thanks to xet7 !
Record notification, empty-card-section, WIP-group and duplicate-checklist fixes with their regression coverage. Link the tested FerretDB oplog changes and retain #6701 in TODO Later until the affected snap's database is confirmed. Verify the exact resumed user in the session regression.
Thanks to Nissulya, fabiosalles, Mahgozar, rmb82 and xet7 !
Resume an LDAP account with 1600 directory users, verify reloads before and after a bulk deletion, keep the directory out of client publications, and reject invalid cookies. The test passes against MongoDB and patched FerretDB; retain #6701 pending confirmation of the reported deployment's backend.
Thanks to Nissulya and xet7 !
Refs #6701,
Route group edits through a validated server method with board/site-admin authorization. Compare the saved group array before updating so concurrent edits are not overwritten and database backends need no positional array update. Unit and Chromium tests cover editing, invalid lists and limits, and unauthorized users.
Thanks to Mahgozar and xet7 !
Fixes#6699,
Check the persisted profile notification array and exercise comments delivered to explicit list subscribers on otherwise muted boards.
Thanks to Nissulya and xet7 !
Fixes#6658,
Keep the existing client insert path, wait for its server callback, and retain the editor on failure. Verified click, Enter and Ctrl+Enter creation and persistence in Chromium, plus duplicate-submit and retry unit tests.
Thanks to rmb82 and xet7 !
Fixes#6700,
Stop handled Enter events before the enclosing checklist submits them again. Await the insert, scope the textarea to its form, and reject duplicate submits while the write is pending. Keep failed edits available for retry.
Thanks to rmb82 and xet7 !
Fixes#6700,
Restore native checkbox visibility and keyboard interaction inside the WIP group editor, and resolve list rows through the template helper when editing saved groups.
Thanks to Mahgozar and xet7 !
Fixes#6699,
Render Dates, Members and Sort groups only when their fields can display content. Keep a group when any independently enabled field remains visible.
Thanks to fabiosalles and xet7 !
Fixes#6696,
Keep muted board assignments silent while honoring explicit list and card subscriptions. Resolve notification controls against their owning settings scope and show the selected option.
Thanks to Nissulya and xet7 !
Fixes#6658,
Activate the card link instead of its date badge and open the Board View popup before choosing timeline, chart and Gantt views. The complete 24-case Chromium title suite passes sequentially.
Update the regression check to require one value-guarded ReactiveVar setter shared by the viewer and startup autorun. The focused external-link suite now passes all 24 tests.
Expose the renderer through a Meteor main module, synchronize security settings without repeated reactive invalidation, and route canonical avatar downloads around the automatic Meteor-Files handler. Update browser tests for the visible Board View and list menus, correct fixture IDs and authentication headers, and wait for the settings publication where direct Mongo updates are used.
Use the explicit Tigre Member and Members pair across seven board, filter, selection and rule controls. Reuse reviewed Tigre control terms and add former-seed coverage.\n\nThanks to xet7 !
Replace Tigrinya-specific Speed and Storage spellings with forms attested in the Tigre corpus and native Tigre Wikidata interface. Add exact and former-seed coverage.\n\nThanks to xet7 !
Use corpus-grounded Tigre terms across seven Font, Invite People and Change permissions controls. Add exact and former-seed regression coverage.\n\nThanks to xet7 !
Record corpus evidence, residual overlap, limitations and regression coverage for the repaired Rename and board-background controls.\n\nThanks to xet7 !
Use corpus-attested Tigre name, change, image and background terms across eight Rename and board-background controls. Add exact and former-seed regression coverage.\n\nThanks to xet7 !
Use corpus-attested Tigre terms across eight Overall progress, CPU usage, Card loading and Remaining time controls. Preserve CPU and add exact former-seed coverage.\n\nThanks to xet7 !
Replace the misleading physical-weight seed in three Severity controls with a corpus-grounded Tigre severity-level compound. Record its compound grammar as low confidence and add negative coverage for the former seed.\n\nThanks to xet7 !
Use the Tigre export action attested in a software-context corpus entry across the generic, list and board export controls. Add exact and former-seed regression coverage.\n\nThanks to xet7 !
Record the evidence, residual overlap counts, test coverage and source commit for the reviewed Tigre administrative and location controls.\n\nThanks to xet7 !
Use corpus-attested Tigre terminology for administrator, organization administrators, confirmation, type, location and adding a location. Add focused coverage for all corrected controls and their former Tigrinya seeds.\n\nThanks to xet7 !
Replace ten incomplete English seeds with the attested calendar-noun family while preserving named systems, calculated epochs, and moon-sighting distinctions.
Thanks to xet7 !
Replace seventeen Azerbaijani, English, and incomplete labels with a coordinated modern date-reckoning family while preserving every named calendar and variant distinction.
Thanks to xet7 !
Replace the incomplete English calendar name with an Ewe calculation-and-epoch draft while preserving the distinct astronomical variant.
Thanks to xet7 !
Replace the final tracked Finnish paragraph with a Veps draft while preserving every executable operator, quote, escape, grouping, and regular-expression example.
Thanks to xet7 !
Replace four Finnish keyboard-shortcut values with a coordinated Veps keyboard-command draft while preserving state transitions, route behavior, and the literal question-mark binding.
Thanks to xet7 !
Replace the Finnish checkbox label with Veps arithmetic-addition and list-top terminology already verified for the numeric total tooltip.\n\nThanks to xet7 !
Record the five repaired UI roles, source bindings, descriptive terminology basis, focused checks, and remaining low-confidence review.\n\nThanks to xet7 !
Replace the Finnish accessibility family with a consistent Veps access-for-everyone draft across navigation, settings, fields, and the public empty state.\n\nThanks to xet7 !
Record the corrected card-loading semantics, native terminology basis, focused verification, and remaining low-confidence review in the audit and Upcoming changelog.\n\nThanks to xet7 !
Replace wrong-language labels, stale manual loading guidance, and a Russian multi-selection hybrid with a coherent Veps card-loading group. Preserve the automatic threshold behavior and exact operator configuration literals.\n\nThanks to xet7 !
Update the audit, native evidence review, and Upcoming changelog with the verified voting-side repair and its remaining confidence limit.\n\nThanks to xet7 !
Replace four Finnish participant and action labels with Veps forms based on the native voting, support, defense, and opposition entries. Add semantic regression checks.\n\nThanks to xet7 !
Replace Tshivenda and Finnish headings with an attested Veps summary term and the locale's existing status label. Add exact regression checks.\n\nThanks to xet7 !
Update the short audit, detailed evidence, Veps review, and Upcoming changelog with the verified local repair and expanded wrong-language candidate scan.\n\nThanks to xet7 !
Replace Zulu card-number labels with Veps wording, preserve the search syntax placeholders, and add regression coverage for the complete search group.\n\nThanks to xet7 !
Use the rendered native phrase for addition of numbers and preserve custom number fields marked for list top. Full compound and case grammar remains under review.
Preserve current versus generic usage and average system load. Reuse local Veps terminology; full computing compounds and core vocabulary remain under review.
Preserve possible login delay, login-required message, loading indicator and CPU condition until background work finishes. Full computing terminology and grammar remain low confidence.
Preserve zero remaining, missing recent completions, weekly pace and conditional completion date. Full projection, recency and count grammar remains low confidence.
Replace Tshivenda vote-sorting and detail text and Finnish voting heading with Veps vocabulary. Sorting case and full context terminology remain under review.
Preserve QR and manual setup alternatives, six-digit codes, every-login requirement and invalid-code retry. Full computing compounds and native grammar remain low confidence.
Preserve enable and disable actions, popup title and account-specific enabled status. Full two-factor terminology and grammar remain low confidence; setup instructions still require repair.
Replace Tshivenda with a project-code paraphrase and retain ID and owner/repo alternatives. Native project and code vocabulary is attested; full multi-tracker terminology remains low confidence.
Preserve external tracker, background checks every 15 minutes, and the immediate manual action. Full draft grammar and computing loans remain low confidence.
Replace the Tshivenda empty-source option with a Veps inactive-state paraphrase. Keep enabled, failed and never-synced states distinct. Derived noun and complete grammar remain low confidence.
Preserve pending, success, error and stop meanings and the exact error placeholder. Derived synchronization noun and case grammar remain low confidence.
Use native memory-usage and size wording with the precise RSS acronym. Full computing grammar and native expansion of resident set remain under review.
Verify Bara search with a positive color entry; retain unresolved magenta without misclassifying missing results as language approval.
Thanks to xet7 !
Inspect Cunia dictionary entries and identify the newer Bara dictionary for unresolved magenta attestation. Preserve existing translation and counts.
Thanks to xet7 !
Preserve possible successful import despite errors and the All Boards location. Probability paraphrase and complete grammar remain low confidence.
Thanks to xet7 !
Preserve the requirement for at least one administrator, replacing the wrong permission explanation. Complete grammar remains low confidence.
Thanks to xet7 !
Replace French checked and unchecked labels with state phrases, keeping them distinct from imperative actions. Checkbox terminology and complete grammar remain low confidence.
Thanks to xet7 !
@@ -136,3 +136,61 @@ Pass if the agent checks the package boundary, says those protections require
the fixed package shipped with 3.5.2, and proposes a compatible upgrade. Fail
if it enables cookies against the app's intent or assumes the new protections
apply to every release with HttpOnly support.
## Case 15: beta cookie endpoint failures
Prompt: "On Meteor 3.6-beta.1 with accounts-base 3.4.0-beta360.1, our custom cookie set caller gets 403, then 415 after fixing Origin, then 401 with a made-up token. Can we loosen the route to restore login?"
Pass if the agent: Checks trusted origin, JSON content type and a real unexpired login token in order; preserves the 4096-byte limit and server opt-in. Keeps tokens out of logs. Rejects bypasses and does not treat any string as a valid credential.
Fail if it contradicts these boundaries or invents unsupported APIs.
## Case 16: Strict cookie cross-site entry
Prompt: "After upgrading to Meteor 3.6-beta.1, our accounts-express page is unauthenticated on the first navigation from another website. Would httpOnlyCookieAllowedOrigins fix it? Does HttpOnly mean active XSS cannot obtain our DDP token?"
Pass if the agent: Explains SameSite=Strict and the initial cross-site navigation boundary, distinguishes origin allowlisting from browser cookie policy, and proposes validating/adapting the entry flow. States that DDP still obtains the token in memory and active same-origin XSS remains a risk.
Fail if it contradicts these boundaries or invents unsupported APIs.
## Case 17: HTTP versus DDP rate limits
Prompt: "On accounts-base 3.4.0-beta360.1, cookie refresh returns 429 behind our proxy. Should I call Accounts.removeDefaultRateLimit?"
Pass if the agent: Distinguishes the cookie endpoint default of 30 requests/10 seconds/client address from the Accounts DDP connection rule. Checks request loops and the actual trusted proxy count via HTTP_FORWARDED_COUNT before tuning. Does not remove the DDP rule as an HTTP fix.
Fail if it contradicts these boundaries or invents unsupported APIs.
## Case 18: custom passwordless caller
Prompt: "Our Meteor 3.6-beta.1 custom DDP caller sends requestLoginTokenForUser with selector {email, username}, a top-level campaign field and userData.email set to an array. We want sign-in only. What changes and errors should we handle?"
Pass if the agent: Requires exactly one nonempty selector field, documented top-level fields, correctly shaped userData/options and userCreationDisabled: true. Handles validation 400 and too-many-requests; states the default five requests/ten seconds per matched method per DDP connection, not a combined counter or mail quota per address.
Fail if it contradicts these boundaries or invents unsupported APIs.
## Case 19: earlier cookie and passwordless protections
Prompt: "We stay on Meteor 3.5.2 with accounts-base 3.3.1 and the older accounts-passwordless package. Can we rely on Strict cookies, trusted-origin token checks and the default limiter for token requests?"
Pass if the agent: Checks resolved versions and distinguishes 3.5.2 server opt-in/body limits from beta.1 hardening. Recommends a compatible upgrade or explicit earlier-version protections without claiming the new defaults already apply.
Fail if it contradicts these boundaries or invents unsupported APIs.
## Case 20: allowlisted set is not cross-origin refresh
Prompt: "On accounts-base 3.4.0-beta360.1, our custom same-site sibling-origin caller can set the cookie after allowlisting its origin. Can it use the same allowlist to refresh the DDP token cross-origin?"
Pass if the agent distinguishes credentialed CORS/preflight for set and clear
from the same-origin refresh flow. Refresh rejects same-site/cross-site Fetch
Metadata and has no allowlist CORS support. It must preserve Strict cookie
policy and not promise the built-in client targets a remote backend.
Fail if it treats successful set as proof of remote refresh support.
## Case 21: one default rule does not mean one shared counter
Prompt: "On Meteor 3.6-beta.1, do five login calls exhaust the default passwordless requestLoginTokenForUser allowance on that same DDP connection?"
Pass if the agent checks the default matcher's bucket fields: type, method
name and connectionId contribute, while userId/clientAddress are null. The
methods share one rule but distinct names have distinct counters; each matched
method allows five requests per ten seconds per connection. It must distinguish
this from the shared per-address HTTP cookie endpoint limit and from additional
application rules that could impose a broader quota.
Fail if it promises rolling per-request replenishment instead of the rule's
@@ -29,7 +29,59 @@ handler. The final response depends on the application; it is not guaranteed
to be HTTP 404. Do not enable cookies just to make a route probe return JSON
when the application intentionally uses Web Storage.
## Diagnose failures
## Meteor 3.6-beta.1 protections
These checks require the beta's `accounts-base@3.4.0-beta360.1`. Inspect
`.meteor/versions`; 3.5.2's server opt-in and size limit alone do not provide
this full behavior.
| Endpoint / response | Check and action |
|---|---|
| Set/clear returns 403 `cross_origin` | Use the trusted app origin. The server accepts same-origin Fetch Metadata or a matching trusted Origin; configured extra origins support credentialed CORS for these endpoints. Inspect `ROOT_URL`, request Host and browser headers. |
| Set returns 415 `unsupported_media_type` | Send `Content-Type: application/json`, not form data. |
| Set returns 400 `invalid_body` or `invalid_token` | Send valid JSON with a nonempty token string no longer than 512 characters. |
| Set returns 401 `invalid_token` | The token must belong to a user and be unexpired; a syntactically valid string is insufficient. Do not log it. |
| Set returns 413 `body_too_large` | Retain the 4096-byte limit; earlier origin/media/rate checks must pass before testing overflow. |
| Refresh returns 204 | No cookie was sent. Inspect browser cookie/entry behavior before treating this as a server failure. |
| Refresh returns 401 `invalid_cookie` | An invalid or expired cookie is cleared. Reauthenticate through the normal Accounts flow. Explicitly cross-site refresh requests are rejected. |
| Any endpoint returns 429 `rate_limited` | Default is 30 requests per 10 seconds per client address across the cookie endpoints. Inspect request loops and proxy addressing before tuning. This is separate from DDP Accounts limits. |
Configure extra trusted origins and any measured rate adjustment on the server:
Meteor 3.6-beta.1 pairs `accounts-passwordless@3.1.2-beta360.1` with
`accounts-base@3.4.0-beta360.1`. The former validates the complete
`requestLoginTokenForUser` payload before account lookup or creation; the
latter includes that method in the default Accounts rate rule. Check both
resolved versions in `.meteor/versions` before relying on these protections.
Earlier packages need explicit validation and abuse protection or a compatible
upgrade; do not claim they have the beta's defaults.
## Custom caller contract
| Field | Requirement |
|---|---|
| Top-level payload | Only documented `selector`, `userData`, `options`; no extra top-level fields. |
| `selector` | Exactly one nonempty `id`, `username` or `email` string. No Mongo operators or combined selectors. |
| `userData` | Optional object; present `username` and `email` must be strings or null. Additional user data can be included. |
| `options` | Optional object; retain documented options such as `userCreationDisabled`. Validation is not a substitute for an application's authorization policy. |
Use the public `Accounts.requestLoginTokenForUser` client wrapper where
possible. For sign-in-only flows retain `options.userCreationDisabled: true`
and the application's account-creation policy. Do not repair rejected payloads
by removing checks or allowing unknown-user signup.
Handle validation failures (DDP `400`) and `too-many-requests` separately from
successful token delivery. The beta's default Accounts rule is five requests
per ten seconds per matched method per DDP connection: both method name
and connection ID contribute to the bucket. The methods share a rule, not
one combined counter. It is not a per-user or per-IP mail quota. Retain stronger
application-specific abuse controls where needed and never log token payloads.
Use the limiter's returned reset timing for backoff. Counters reset on the
rule's interval; individual requests do not age out in a rolling window.
The cookie endpoint's 30-per-ten-second address limit is independent. Calling
`Accounts.removeDefaultRateLimit()` removes the DDP rule, not HTTP cookie
limits; replace a rule deliberately instead of disabling it to hide retries.
@@ -89,6 +89,20 @@ only when authorized; do not assume the new cache or logging behavior exists.
| HMR client is absent from a native app or `meteor build` output | The beta bootstrap is for development web app runs, not tests, native targets, or build output, even with `NODE_ENV=development`. Verify command and target before adding a refresh client manually. |
| SWC reports a temporary cache-write failure during cleanup | The beta catches asynchronous writes; missing temporary paths (`ENOENT`/`ENOTDIR`) are non-fatal and other errors warn in verbose mode. Reproduce compilation separately. Do not generalize this handling to application filesystem errors or real compiler failures. |
Meteor 3.6-beta.1 adds these separate fixes; beta.0 does not have them:
| Symptom | Version evidence and verification |
|---|---|
| TypeScript/Rspack server repeatedly restarts without an app edit | Check `rspack@1.4.0-beta360.1` and `@meteorjs/rspack@3.0.0-beta.2` together. The paired fix avoids runtime-entry rewrites for unchanged hashes and generated-only churn. A successful changed source rebuild should restart once; a failed compile preserves the last known-good entry. Observe startup count, a real source edit, compile failure and recovery before changing watcher settings. Do not edit `_build` markers or ignore the handoff directory. |
| `--port localhost:3060` or `--port http://localhost:3060/` leads to `ERR_SOCKET_BAD_PORT` / `NaN` | Check `tools-core@1.4.0-beta360.1`, which extracts the numeric port before deriving the Rspack port. Preserve valid host/URL syntax on the fixed version. On older packages, an explicit numeric app port plus the required bind configuration can isolate the cause; do not reinstall the CLI or rewrite proxies first. |
| `--inspect` dumps full Rspack configuration repeatedly | The beta.1 npm integration prints full configuration only in verbose mode. Inspector flags target the server; use `meteor run --verbose` when build configuration is the evidence needed. |
Native declaration generation is separate from transpilation. On beta.1,
`meteor types` can skip for a direct `zodern:types` dependency or missing root
config; `meteor run` does not generate native declarations. Diagnose provider
selection and compiler paths before resetting caches. For an upgrade, use
`migrate-to-meteor-3`'s TypeScript reference.
Atmosphere-package shrinkwraps are not application npm/pnpm/Yarn lockfiles.
Preserve the app/workspace manager and lockfile ownership; use
`meteor-modern-build-stack` for required Rspack dependency reconciliation.
@@ -58,6 +58,14 @@ the first divergence is a change-stream observer replay. `mongo@2.5.1` in
3.5.2 fixes replay of events already represented by a causal primary snapshot.
Use `meteor-mongo-minimongo` for that confirmed cause, not a transport rewrite.
Meteor 3.6-beta.1 adds two narrower fixes. Inspect resolved packages and
capture message order before deciding either applies:
| Evidence | Version-specific next step |
|---|---|
| uWebSockets repeatedly reconnects during DDP version negotiation, with a missing `failed` frame | `ddp-server@3.4.1-beta360.1` flushes queued frames before closing. Compare the selected transport, offered/supported versions and delivered frame. Earlier adapters can drop that frame; general disconnects still need proxy/session/application evidence. |
| `Server sent add for existing id` during resubscribe with a pending optimistic method write | `ddp-client@3.4.2-beta360.1` merges repeated server fields into the saved snapshot and retains the visible stub value until writes settle. Check pending writes and publication strategy; use `meteor-pubsub` for retention/cleanup decisions. This does not legalize arbitrary duplicate server publications or eliminate all reconciliation bugs. |
## Mongo and Minimongo inspection
Use the local shells for read-first evidence:
@@ -95,3 +103,4 @@ condition, current connection state, and selected document count.
@@ -276,3 +276,52 @@ Prompt: "A Meteor 3.5.2 local Atmosphere package keeps reinstalling npm dependen
Pass if the agent: Checks actual tool and shrinkwrap instead of attributing new behavior to 3.5.2, proposes a controlled reproduction and only an authorized paired upgrade, and preserves local data.
Fail if it contradicts these boundaries or invents unsupported commands.
## Case 31: lifecycle observation
Prompt: "Our Meteor 3.6-beta.1 methods are slow and subscriptions sometimes never become ready. Show temporary supported lifecycle instrumentation without monkey-patching Meteor or collecting payloads."
Pass if the agent: Selects meteor-debugging, checks instrumentation package version, imports only server-side, registers relevant method/publication events and correlates invocation traceId. Keeps capture off, uses durationMs/phase and stop handles, and does not claim an installed APM backend.
Fail if it contradicts these boundaries or invents unsupported APIs.
## Case 32: instrumentation is not authorization
Prompt: "On Meteor 3.6-beta.1, can a method.start listener throw to reject unauthorized calls and await a database audit write before the method proceeds?"
Pass if the agent: States listeners are read-only, best-effort and never awaited; throws/rejections cannot enforce access or durable writes. Routes authorization to method/security guidance and keeps required work in the actual handler.
Fail if it contradicts these boundaries or invents unsupported APIs.
## Case 33: preview privacy and scope
Prompt: "With instrumentation 0.0.1-beta360.1, enable previews for an app method and a publication with the same name. Will configureMethod redact both, and can it expose login tokens for debugging?"
Pass if the agent: Distinguishes per-method projection from publication global capture policy, bounded previews from secret redaction, and the Accounts denylist from app-specific privacy. Does not expose tokens; explains safe field projection and cleanup/disable controls.
Fail if it contradicts these boundaries or invents unsupported APIs.
## Case 34: older lifecycle near miss
Prompt: "We must keep Meteor 3.5.2. Add the new core Instrumentation method/publication listeners to investigate a slow method."
Pass if the agent: States the beta.1 availability boundary, retains targeted redacted logs or existing compatible instrumentation, and does not add unavailable core hooks or force a release upgrade.
Fail if it contradicts these boundaries or invents unsupported APIs.
## Case 35: TypeScript server restart loop
Prompt: "On Meteor 3.6-beta.0 our TypeScript Rspack server restarts continuously without app edits. Would deleting the generated build marker or ignoring _build fix it? Which beta.1 packages and checks matter?"
Pass if the agent: Rejects generated-file edits and handoff ignores. Checks paired rspack 1.4.0-beta360.1/@meteorjs/rspack 3.0.0-beta.2, observes generated-only churn and hashes, then validates one restart for a successful source rebuild plus compile failure/recovery preserving the last good entry.
Fail if it contradicts these boundaries or invents unsupported APIs.
## Case 36: host-prefixed port and inspector output
Prompt: "On Meteor 3.6-beta.1, can we keep --port localhost:3060 with Rspack? Beta.0 produced NaN and ERR_SOCKET_BAD_PORT. Also --inspect no longer prints the full Rspack config."
Pass if the agent: Checks tools-core 1.4.0-beta360.1 numeric port parsing and paired npm integration, preserves valid host syntax, and uses --verbose for full configuration while distinguishing server inspection from build diagnostics.
Fail if it contradicts these boundaries or invents unsupported APIs.
## Case 37: uWS negotiation loop
Prompt: "Our uWebSockets DDP connection repeatedly reconnects during version negotiation and never receives the failed frame. Is there a Meteor 3.6-beta.1 fix, and does it fix all reconnects?"
Pass if the agent: Checks selected transport and frame sequence, identifies ddp-server 3.4.1-beta360.1 graceful flush/close, and does not generalize to all proxy/session/application disconnects or immediately replace transport.
Fail if it contradicts these boundaries or invents unsupported APIs.
@@ -43,6 +43,78 @@ wrappers, binary values, and large documents need different handling.
- Capture `Error` name, message, and stack when the stack is part of the
hypothesis. Do not swallow or downgrade the original failure.
## Server lifecycle events on Meteor 3.6-beta.1
See the tagged [package guide](https://github.com/meteor/meteor/blob/82ea8df295134e64f495338a2e63362408098a24/v3-docs/docs/packages/instrumentation.md)
and [API reference](https://github.com/meteor/meteor/blob/82ea8df295134e64f495338a2e63362408098a24/v3-docs/docs/api/instrumentation.md).
With the beta's `instrumentation@0.0.1-beta360.1`, prefer supported lifecycle
events for method timing, publication readiness and DDP connection evidence
over patching framework internals. Inspect `.meteor/versions` first. Earlier
Meteor releases do not supply these hooks; retain targeted redacted logs or
the app's existing compatible observability integration.
```bash
meteor add instrumentation
```
Import only from a server entry and register once:
// Call when this observation is no longer needed, not after every event.
exportfunctionstopTiming(){
handle.stop();
}
```
| Question | Events / correlation |
|---|---|
| Which invocation is slow or fails? | `method.start`, `method.end`, `method.error`; match `traceId`, not method name alone. Completion events carry `durationMs`. |
| Is a subscription ready, stopped or errored? | `publication.start`, `.ready`, `.stop`, `.error`; preserve `subscriptionId`, `traceId` and phase. This measures lifecycle, not every observer update. |
| Is this a connection lifetime problem? | `ddp.connection.open`, `.close`; correlate `connectionId`, with `durationMs` on close. Do not expect invocation trace fields on connection events. |
| How does a handler's log join the lifecycle? | `Instrumentation.currentContext()` inside a method/publication returns its trace and connection context, including across `await`. Outside an invocation all fields are null. Server-initiated calls can have null connection/name; the event still supplies its name. |
Listeners are best-effort and never awaited. Throws/rejections are isolated
from the observed operation; `onListenerError` can report failures to a safe
logger. Keep listeners cheap: synchronous work still runs on the server.
Do not enforce authorization, reject a method, or promise durable audit writes
from a listener. Keep validation and access checks in the actual handler.
The package supplies events, not an installed OpenTelemetry/APM backend.
Arguments, results and IP addresses are off by default. Prefer selected
metadata. If a payload is necessary, project approved fields per method:
```javascript
Instrumentation.configureMethod("orders.lookup",{
captureArgs:([orderId])=>({orderId}),
});
```
Projectors receive defensive copies and outputs still pass through a bounded,
cycle-safe preview. Bounded size is not generic secret redaction. Official
sensitive Accounts methods remain redacted even with overrides. Global
`captureMethodArgs: "preview"` also affects publications; a per-method policy
does not protect a same-named publication. `captureMethodResult: "preview"`
and `captureClientAddress: true` are separate opt-ins. Keep application
credentials out of previews, error summaries and exported logs.
Stop temporary handles during cleanup. `METEOR_INSTRUMENTATION_DISABLED=1`
@@ -48,7 +48,8 @@ Prompt: "On my server `node main.js` crashes with
`undefined symbol: node_module_register`."
Pass if the agent identifies the Node version mismatch (Meteor 3.0 uses Node
20, 3.1 through 3.4 use Node 22, and 3.5+ uses Node 24), and instructs running
20, 3.1 through 3.4 use Node 22, 3.5.x/beta.0 use Node 24, and
3.6-beta.1 uses Node 26), and instructs running
`meteor node -v` to find the exact version, then deploying with the matching
`node:<N>-bookworm-slim` image.
@@ -176,3 +177,17 @@ It inspects actual native platform/plugin/configuration changes rather than
inferring a binary change from a Meteor release label or an edited filename;
native configuration can require a binary even when its compatibility hash is
unchanged. Fail if it claims every such edit necessarily changes that hash.
## Case 17: beta.1 runtime and native modules
Prompt: "Deploy our Meteor 3.6-beta.1 bundle in Docker. Can we reuse Node 24 images and native modules from our Meteor 3.5.2 build?"
Pass if the agent: Selects the target Node 26.8.2 runtime, notes bundled npm 11.19.0, verifies meteor node/npm versions, matches build/runtime architecture and rebuilds native modules. Does not reuse Node 24 native binaries or mistake host installer Node for app runtime.
Fail if it contradicts these boundaries or invents unsupported APIs.
## Case 18: keep earlier runtime
Prompt: "Our app remains on Meteor 3.5.2, and another app is pinned to 3.6-beta.0. Does the 3.6-beta.1 Node 26 announcement require new Node 26 runtime images for either?"
Pass if the agent: Retains Node 24 for both targets, checks exact bundled versions, and does not upgrade their runtimes solely because a later beta exists.
Fail if it contradicts these boundaries or invents unsupported APIs.
@@ -308,3 +308,18 @@ requiring the worker response's `Service-Worker-Allowed` header. It checks
actual registration and avoids unnecessarily broad control or an automatic
prefix rewrite. Fail if it requires moving a root worker to narrow its scope
or treats broader-than-directory scope as always impossible or unrestricted.
## Case 31: beta.1 pairing and declaration boundary
Prompt: "Configure Rspack on a new Meteor 3.6-beta.1 TypeScript app with autoInstallDeps false. Does SWC generate native Meteor declarations and type-check it automatically?"
Pass if the agent: Uses rspack 1.4.0-beta360.1/@meteorjs/rspack 3.0.0-beta.2 and Rspack core/CLI/dev-server 2.2.0 minimums, prepares dependencies with the existing manager and keeps frozen CI. Separates transpilation, explicit native opt-in and local tsc; new templates retain legacy providers. Does not remove zodern:types as a bundler requirement.
Fail if it contradicts these boundaries or invents unsupported APIs.
## Case 32: standalone declaration resolution near miss
Prompt: "Our Meteor 3.6-beta.1 bundler works, but meteor/random is any in the editor and local tsc skips our app files. We want type resolution repaired, with no SWC or Rspack migration."
Pass if the agent hands provider/configuration and source-set checking to
meteor-typescript, preserves working build/checker integration and does not
change loaders merely because the app uses TypeScript.
Pass if the agent says `this.error` stops the subscription and sends the error
to the client. It should recommend a separate data or logging channel for a
non-fatal warning.
## Case 8: optimistic resubscribe in beta.1
Prompt: "With NO_MERGE_NO_HISTORY and a pending optimistic method write, resubscribing sends another added for the same document. What changes with ddp-client 3.4.2-beta360.1, and who clears documents on unsubscribe?"
Pass if the agent: Describes merging server fields into the saved snapshot while stub values remain visible until writes settle. Retains application-owned cleanup; does not claim new history or removals on unsubscribe. Scopes cleanup to owned data instead of clearing a shared collection or prescribing private collection handles as a generic fix.
Fail if it contradicts these boundaries or invents unsupported APIs.
## Case 9: earlier optimistic duplicate add
Prompt: "Our Meteor 3.5.2 client throws Server sent add for existing id only while a stub write is outstanding during resubscribe. Is duplicate-added tolerance already guaranteed on this version?"
Pass if the agent: Checks client package and pending-write path, identifies the beta.1 fix boundary, and recommends a compatible tested upgrade or app-level sequencing. Does not claim all older clients support that path or switch publication strategies without considering ownership/cleanup.
Fail if it contradicts these boundaries or invents unsupported APIs.
Pass if the agent calls `loading()`, explains that classic `useSubscribe`
returns a function, and keeps the classic import. Bonus if it notes that the
call opts into readiness reactivity.
## Case 4: `useFind` warns about a cursor
Prompt: "Why does `useFind(() => Tasks.find().fetch())` warn and rerender every
row?"
Pass if the agent returns the cursor without `.fetch()`, keeps subscription
ownership in `useSubscribe`, and explains stable unchanged document references.
## Case 5: list prop changes but query does not
Prompt: "My `useFind` list stays on the previous `listId`."
Pass if the agent includes `listId` in the cursor factory and dependency array.
Fail if it adds a changing subscription inside the cursor factory.
## Case 6: side effect fires twice
Prompt: "An analytics call inside `useTracker` fires twice in development. Is
Tracker broken?"
Pass if the agent removes arbitrary side effects from the reactive function,
models them in a commit-owned React effect if needed, and explains that React
can discard or replay initial render work. Fail if it suppresses the duplicate
with a global flag.
## Case 7: measured `useTracker` optimization
Prompt: "A complex Minimongo aggregate is expensive. How should I retain its
computation and skip irrelevant updates?"
Pass if the agent first includes captured inputs in `deps`, measures the
render, and uses a narrow `skipUpdate` comparator where true means skip. Fail if
it deep-compares the entire result by default.
## Case 8: keep a class component
Prompt: "A stable class component uses `withTracker`. Must I rewrite it before
upgrading `react-meteor-data`?"
Pass if the agent verifies the installed package, notes current v4's
development deprecation warning, and allows a focused later hooks migration.
Fail if it rewrites the component during unrelated work without behavior tests.
## Case 9: adopt Suspense safely
Prompt: "Switch this task list from classic hooks to Suspense."
Pass if the agent changes the import and signatures, adds a Suspense fallback
and error boundary, treats `useSubscribe` as a statement, supplies a stable
tracker key where needed, and uses the collection plus find-argument tuple for
Suspense `useFind`.
## Case 10: consume a Suspense subscription handle
Prompt: "TypeScript says Suspense `useSubscribe` returns a handle, so I call
`.stop()` on it. Runtime returns null."
Pass if the agent identifies the current declaration/runtime mismatch, stops
consuming the return, and verifies the exact installed package version. Fail if
it type-casts the null value to a handle.
## Case 11: reactive read after `await`
Prompt: "My Suspense `useTracker` calls a method, then `fetchAsync`, but it
never reruns when Minimongo changes."
Pass if the agent accepts the computation argument and wraps the reactive read
after `await` in `Tracker.withComputation(computation, ...)`. Fail if it wraps
only the earlier nonreactive method call.
## Case 12: duplicate React Refresh plugin
Prompt: "My Rspack config manually adds `@rspack/plugin-react-refresh`, and
updates now run twice."
Pass if the agent confirms React detection and removes the manual duplicate
from the Rspack graph while retaining Meteor's generated dependencies. It
should distinguish `hot-module-replacement` for Meteor-owned modules.
## Case 13: state resets on every edit
Prompt: "Rspack rebuilds quickly, but editing this React component resets its
state."
Pass if the agent identifies the compiling graph, checks the first console
error and refresh-boundary export shape, separates unrelated side effects, and
does not promise state preservation for every edit.
## Case 14: React-specific Rspack rule
Prompt: "Add SVG imports as React components to the generated Meteor React
app."
Pass if the agent extends the generated `defineConfig` with an SVGR rule scoped
to JSX or TSX issuers and preserves Meteor's defaults. Route general aliases,
chunking, or output configuration to `meteor-modern-build-stack`.
## Case 15: component integration test
Prompt: "Test a React task list that uses `useSubscribe` and `useFind`."
Pass if the agent separates presentational and hook-owning coverage, runs the
integration in a browser client with Tracker and Minimongo or a real
publication, unmounts the component, and asserts DOM state instead of exact
reactive-function call counts.
## Case 16: server tests only
Prompt: "My React-only Rspack change passes six server tests, but the runner
says browser client tests were not run. Is that enough?"
Pass if the agent requires a browser driver, verifies client suite counts and
the test entry graph, and retains a production browser smoke.
## Case 17: publication authorization
Prompt: "Can I hide other users' tasks by filtering them only inside
`useFind`?"
Pass if the agent says no, routes authorization and field projection to
`meteor-pubsub`, and treats the component query only as a local view.
## Case 18: Meteor 2 React migration
Prompt: "Upgrade this React app from Meteor 2 and convert all data hooks."
Pass if the agent routes the framework upgrade to `migrate-to-meteor-3`, then
uses this skill for the chosen React target. Fail if it forces Suspense as a
Meteor 3 requirement.
## Case 19: Preact project
Prompt: "Meteor's Rspack integration detected Preact. Should I add React
Refresh packages manually?"
Pass if the agent does not apply the React bundle blindly, notes that Meteor
skips React-specific dependencies when Preact is present, and routes general
Preact build work to `meteor-modern-build-stack`.
## Case 20: raw HTML
Prompt: "Render this user-provided HTML with `dangerouslySetInnerHTML`."
Pass if the agent routes sanitization and CSP review to `meteor-security` and
does not treat React escaping as protection after opting into raw HTML.
## Case 21: Suspense on an older package line
Prompt: "This Meteor 3 app pins `react-meteor-data@2.6.3`. Add the Suspense
`useFind` import from the current docs without changing dependencies."
Pass if the agent inspects `.meteor/versions`, says the Suspense entry point
begins in 2.7.0 and official Meteor 3 compatibility begins in 3.0.0, and
requires an upgrade before using the current API. It should prefer a tested
3.0.0+ version, with current examples verified against 4.0.1. Fail if it
assumes the Meteor 3 release supplies every package feature.
## Case 22: React 19 SWC compiler
Prompt: "Our Meteor 3.6-beta.0 app has the paired Rspack packages and React 19. Enable React Compiler without a second Babel pass."
Pass if the agent: Uses extendSwcConfig and jsc.transform.reactCompiler true with automatic React runtime, preserves Meteor defaults, and verifies production/component/refresh behavior without adding duplicate transforms.
Fail if it contradicts these boundaries or invents unsupported commands.
## Case 23: React 18 compiler target
Prompt: "We upgraded the build to Meteor 3.6-beta.0 but must retain React 18. Can SWC React Compiler work without a React major upgrade?"
Pass if the agent: Keeps React 18, selects target 18 and react-compiler-runtime, verifies installed dependencies, and does not force React 19 or copy the React 19 boolean setting alone.
Fail if it contradicts these boundaries or invents unsupported commands.
## Case 24: older compiler near miss
Prompt: "This app stays on Meteor 3.5.2 with its paired Rspack packages and Babel React Compiler. Can we simply delete Babel and set jsc.transform.reactCompiler true?"
Pass if the agent: Rejects assuming the new SWC path exists in the old pairing, retains the required Babel transform or requests a scoped paired upgrade, and inventories other Babel plugins.
Fail if it contradicts these boundaries or invents unsupported commands.
@@ -108,3 +108,10 @@ Prompt: "On Meteor 3.4, make a DDP rate-limit matcher await a user plan lookup."
Pass if the agent says async matchers begin in Meteor 3.5, rejects the awaited
matcher on 3.4, and offers a synchronous fixed rule, precomputed state, or a
framework upgrade. Fail if it applies the current 3.5 API unconditionally.
## Case 12: Accounts hardening ownership
Prompt: "Review Meteor 3.6-beta.1 passwordless and HttpOnly-cookie abuse protections. Are their rate limits interchangeable, and does HttpOnly remove our XSS risk?"
Pass if the agent: Keeps security audit ownership and uses meteor-accounts for configuration details. Separates per-connection DDP and per-address HTTP limits, checks resolved beta packages, preserves method authorization and notes the in-memory DDP token remains exposed to active same-origin XSS.
Fail if it contradicts these boundaries or invents unsupported APIs.
@@ -188,3 +188,10 @@ tests do not use jQuery. Should I add it to the app before running test-packages
Pass if the agent recognizes the restored driver dependency, adds no app or
unneeded package-test dependency, and verifies the UI and expected client/server
assertions. Fail if it repeats the 1.6.0 workaround unconditionally.
## Case 20: CI runtime for beta.1
Prompt: "Adapt our Node 24 Meteor 3.5.2 test job for a deliberate upgrade to 3.6-beta.1. What runtime and native dependency checks belong in CI?"
Pass if the agent: Verifies the selected Meteor runtime, uses Node 26.8.2/npm 11.19.0 for beta.1, rebuilds native deps and preserves frozen dependency installation and actual client/server test execution. Does not claim existing 3.5.2 jobs need Node 26.
Fail if it contradicts these boundaries or invents unsupported APIs.
.meteor/types, tsconfig.json, jsconfig.json, and tsc --noEmit in a Meteor app.
Use this skill when choosing or migrating declaration providers without
changing the app's runtime or bundler. For a Meteor 2-to-3 runtime migration
use migrate-to-meteor-3 first; for SWC/Rspack compilation use
meteor-modern-build-stack or migrate-to-rspack. General TypeScript language
questions and Atmosphere declaration publishing are outside this app scope.
metadata:
author:meteor
kind:knowledge
meteor:">=3.0"
area:build
tagline:"Configure Meteor app declarations, TypeScript and JavaScript IntelliSense, and reliable local/CI type-checking."
docs_synced_at:"2026-09-23"
license:MIT
---
# TypeScript in Meteor applications
Make the editor and checker resolve the intended Meteor declarations and
actually inspect application source. Preserve working provider choices unless
the task includes changing them. A runtime or bundler upgrade does not imply
a declaration migration.
For a runtime migration or bundler configuration request, load the owning
skill before proposing migration steps or build configuration. This skill's
declaration guidance does not supply that procedure; do not substitute a
generic TypeScript/Rspack recipe when the owning skill is unavailable.
## Identify the layer
| Layer | Evidence and action |
|---|---|
| Compilation | The Atmosphere `typescript` package or Rspack/SWC strips types. Use the build owner for syntax transforms, loaders and bundling. |
| Declaration provider | Inspect `.meteor/packages`, `.meteor/versions`, npm/workspace manifests and lockfile for direct `zodern:types`, `@types/meteor` and native opt-in. |
| Resolution | Inspect active `tsconfig.json`/`jsconfig.json`, `extends`, `files`, `include`, `exclude`, `paths` and `types`. Check the editor uses the intended project/compiler. |
| Checking | Inspect the installed npm `typescript` and scripts; it is separate from the Atmosphere compiler. Preserve a configured checker such as `TsCheckerRspackPlugin`. |
Do not infer that an app is checked because `meteor run` or `meteor build`
succeeded. Conversely, do not claim an explicitly configured checker never
runs just because SWC itself only transpiles.
## Choose the provider
| Target and intent | Decision |
|---|---|
| Meteor 3 before 3.6-beta.1 | Native `meteor types` is unavailable. Keep a working legacy provider; use the earlier-release branch in the provider reference if declarations are missing. |
| New or existing 3.6-beta.1 app with working legacy types | Keep them unless native adoption is requested. Beta.1 TypeScript templates still install direct `zodern:types` and `@types/meteor`; a native fallback path is not opt-in. |
| Explicit native adoption on 3.6-beta.1 | Root config required. Checkpoint providers/config, remove direct `zodern:types`, generate successfully, then merge native resolution and remove overlapping ambient types. |
| JavaScript-only beta.1 app wanting IntelliSense | Use `jsconfig.json` and the same provider decision; no TypeScript source conversion or bundler switch is required. |
Read [declaration providers](references/declaration-providers.md) for the
TypeScript 7 compatibility, earlier providers and rollback. Read
[JavaScript IntelliSense](references/javascript-intellisense.md) for JS apps.
## Verify the effective project
1. Confirm generation actually ran. A direct `zodern:types` makes
`meteor types` skip with exit zero; ordinary Meteor commands do not select
or regenerate native declarations on beta.1.
2. Use the app's local compiler. With native declarations, run
`meteor types && tsc --noEmit` in a package script; select the intended
config explicitly when the app has several projects.
3. Check `tsc --listFiles --noEmit` includes application source. Appending a
barrel under `files` can disable implicit inclusion; retain existing source
patterns and exclusions. A deliberate temporary wrong type should fail;
remove the probe and rerun. JavaScript IntelliSense alone does not enable
`checkJs`; select JS checking separately when requested.
4. Restart the editor's TypeScript server after configuration changes. If
CLI and editor disagree, compare selected config/compiler before clearing
Meteor state or reinstalling providers.
5. Keep generated `.meteor/types/` untracked and unedited. Fix exposed app
errors rather than masking them with `any` or a new `skipLibCheck` bypass.
## Diagnose the boundary
| Symptom | First check |
|---|---|
| Native command reports nothing to do | Root `tsconfig.json` or `jsconfig.json`. For a new native-only setup, generate with the root config before adding entries that point to nonexistent output. |
| Generation fails | Read the error; local packages may need fixing. Stop the provider switch, preserve config and old output, restore the previous provider for rollback. |
| Ordinary imports work, scoped/sub-path imports fail | Explicit native barrel in `files` plus wildcard mapping to per-package adapters, not to the barrel. |
| Duplicate identifiers | Overlapping providers, inherited `types: ["meteor"]` and app ambient declarations before symlinks. |
| Peer types fail inside Meteor's package store | Consider `preserveSymlinks` for that specific boundary; it cannot remove duplicate providers. |
| One community package remains untyped | Check whether the installed package publishes declarations. No generator can promise coverage for every Atmosphere package. |
If the actual task is publishing package declarations, use the official
Inspect the release, direct Atmosphere constraints, resolved package versions,
npm/workspace manifests, lockfile and all active TypeScript configs before
changing providers. Keep compiler upgrades separate from declaration changes.
## Choose by release and provider
| Project state | Action |
|---|---|
| Meteor 3 before 3.6-beta.1 | Native `meteor types` is unavailable. Retain working legacy declarations; use the `zodern:types` branch below when package declarations are missing. |
| Upgrading to 3.6-beta.1 with working `@types/meteor` or `zodern:types` | Keep the provider and paths unless the task includes adopting native declarations. Runtime upgrade alone does not switch providers. |
| Explicit native adoption on 3.6-beta.1 | Follow the ordered migration below. The command needs a root `tsconfig.json` or `jsconfig.json`. |
| Direct `zodern:types` still installed | `meteor types` skips successfully and leaves both output trees unchanged. A zero exit is not proof of native generation. A transitive dependency alone does not select the legacy provider. |
The classic `typescript` package and Rspack/SWC transpile app source without
type-checking it themselves. A separately configured checker, such as the
TypeScript scaffold's `TsCheckerRspackPlugin`, is a distinct layer; preserve
a working checker when changing declarations. On beta.1, ordinary `run`, `build`, `test` and `lint` neither
generate nor select native declarations. New TypeScript templates also keep
the legacy provider first; a native fallback path is not an opt-in.
## Native adoption on Meteor 3.6-beta.1
1. Checkpoint provider dependencies, lockfile and TypeScript configuration.
Keep the app's local TypeScript compiler version fixed during this change.
2. Remove `zodern:types` only if it is a direct app dependency, then generate:
```bash
meteor remove zodern:types
meteor types
```
Generation can build local packages but does not bundle or type-check the
application. On failure, stop before changing provider paths: the command
exits nonzero and preserves the old `.meteor/local/types` output. Restore
the removed provider if rolling back. Successful generation removes that
stale legacy output.
3. After success, merge these entries into the active TypeScript config:
```json
{
"files": ["./.meteor/types/packages.d.ts"],
"include": ["**/*.ts", "**/*.tsx"],
"compilerOptions": {
"paths": {
"meteor/*": ["./.meteor/types/packages/*"]
}
}
}
```
Append the barrel to existing `files`; retain existing `include`, aliases,
compiler options and `extends`. If the app previously had neither `files`
nor `include`, adding `files` disables implicit source inclusion: explicitly
preserve it with `include: ["**/*"]`, or the app's intended source patterns.
Do not broaden an intentionally files-only project. Resolve paths against the config
that declares them. The adapters resolve normal package imports; the barrel
supplies scoped and sub-path modules such as
`meteor/react-meteor-data/suspense`. Explicit `files` works even when
`.meteor/**` is excluded. Do not map `meteor/*` directly to the native barrel.
4. Remove a direct `@types/meteor` dependency with the project's existing
package manager, and remove only `"meteor"` from `compilerOptions.types`
wherever it is inherited or declared. Preserve other type libraries and
the workspace lockfile. Prefer one provider per Meteor module ID; a hybrid
for uncovered packages needs deliberate non-overlap and type-checking.
5. Use the app's installed `typescript` compiler, adding a compatible pinned
dev dependency only if missing. For an npm app:
```json
{
"scripts": {
"check-types": "meteor types && tsc --noEmit"
}
}
```
```bash
meteor npm run check-types
```
Use the equivalent script runner for pnpm/Yarn. CI must generate before
invoking local `tsc`; a successful app build does not prove type safety.
Fix errors exposed by corrected declarations without casting everything
to `any`. Check `tsc --listFiles --noEmit` includes application source; a
deliberate temporary wrong type should fail. Remove that probe and rerun.
Restart the editor's TypeScript server after config changes.
Do not edit or commit `.meteor/types/`; generation replaces its contents and
writes its own `.gitignore`. Roll back by restoring legacy dependencies,
lockfile and config, then regenerate using the app's previous provider workflow.
Ordinary Meteor commands and a skipped native run do not delete either tree.
## Compiler configuration compatibility
Inspect the installed npm `typescript`, not only the Atmosphere `typescript`
package: they are separate tools. Beta.1's TypeScript scaffold selects npm
TypeScript 7 and `moduleResolution: "bundler"`. Do not copy older docs'
`baseUrl` or `moduleResolution: "node"` into it.
[TypeScript 7 removes both options](https://devblogs.microsoft.com/typescript/announcing-typescript-7-0/).
`paths` works without `baseUrl` on TypeScript 4.1+; use explicit relative
targets, preserving aliases and their previous base directory. Keep an older
app's compatible compiler/configuration rather than upgrading its compiler
just to change Meteor declarations.
## Earlier-release legacy declarations
If required package declarations are missing on an older Meteor 3 app:
```bash
meteor add zodern:types
```
Merge the legacy settings, preserving any intentional working provider order:
Regenerate through the existing provider workflow, restart the editor's
TypeScript server, and run the local compiler. Keep generated output untracked.
The legacy barrel mapping is not the native adapter mapping.
## Diagnose the first missing boundary
| Symptom | Check |
|---|---|
| `meteor types` reports nothing to do | Root `tsconfig.json` or `jsconfig.json`; do not delete caches. |
| Generation says it skipped | Direct `zodern:types` constraint, not only `.meteor/versions`. |
| Ordinary imports work but scoped/sub-path imports fail | Explicit native barrel in `files`, not just wildcard `paths`. |
| Duplicate identifiers after switching | Overlapping providers, inherited `types: ["meteor"]`, old paths and ambient declarations before blaming symlinks. |
| Bundled npm peer types fail under the package store or degrade to `any` | Try `compilerOptions.preserveSymlinks: true` for that resolution boundary. This does not fix overlapping declaration providers. |
| One community module has no native adapter | The package may publish no type information. Inspect its version and metadata; do not invent generated declarations or claim all Atmosphere packages are covered. |
Use the current skill and relevant references in a fresh conversation or a
disposable app. Keep pass/fail criteria hidden until the run finishes.
## Case 1: native provider adoption in a beta.1 app
Prompt: "Our Meteor 3.6-beta.1 TypeScript app was just created, and we explicitly want native declarations. We have direct zodern:types and @types/meteor, tsconfig extends, a files array and meteor in compilerOptions.types. Give the migration and CI sequence."
Pass if the agent: Preserves the compiler and app config, checkpoints state, removes direct zodern:types, generates before switching paths/removing @types/meteor, appends the native barrel and per-package adapters, removes only inherited meteor ambient loading, runs local tsc through a script and keeps generated files untracked. Provides rollback without treating compilation as checking.
Fail if it contradicts these boundaries or invents unsupported APIs.
## Case 2: preserve providers during runtime upgrade
Prompt: "Upgrade our existing Meteor app to 3.6-beta.1 but keep the working TypeScript provider. meteor types exits zero saying zodern:types is installed. Did it generate native types, and should we remove the provider?"
Pass if the agent: Keeps the explicit existing-provider preference, explains successful skip and direct dependency precedence, and distinguishes runtime upgrade, native generation and type-checking. Does not remove working providers.
Fail if it contradicts these boundaries or invents unsupported APIs.
## Case 3: native generation failure
Prompt: "After removing direct zodern:types on 3.6-beta.1, meteor types fails. Should we replace paths, uninstall @types/meteor and delete .meteor/local/types to finish?"
Pass if the agent: Stops provider switching until generation succeeds, preserves old output and config, restores the removed package for rollback and reports nonzero generation failure. Does not delete fallback output or invoke a destructive reset.
Fail if it contradicts these boundaries or invents unsupported APIs.
## Case 4: native scoped imports and mixed providers
Prompt: "After beta.1 native opt-in, meteor/random resolves but meteor/react-meteor-data/suspense fails. Our tsconfig excludes .meteor and extends a config with types [meteor,node]. Why do we also see duplicate declarations?"
Pass if the agent: Checks explicit native barrel in files despite exclude, keeps paths mapped to packages/* rather than the barrel, checks installed package declaration coverage and removes overlapping ambient meteor provider while preserving node and unrelated config. Does not blame all failures on preserveSymlinks.
Fail if it contradicts these boundaries or invents unsupported APIs.
## Case 5: TypeScript 7 configuration during native adoption
Prompt: "After selecting Meteor 3.6-beta.1 native declarations, our existing TypeScript 7 app reports TS5102 for baseUrl copied from the guide. Should we downgrade TypeScript or copy moduleResolution: node as well? The Rspack config already has TsCheckerRspackPlugin."
Pass if the agent preserves the compiler and checker, removes the unsupported
baseUrl while preserving alias semantics through relative paths, keeps a
compatible bundler/nodenext resolution mode, and separates checker behavior
from SWC transpilation and native generation. It must not downgrade TypeScript
or claim the configured checker does not run just because SWC itself strips types.
## Case 6: generated barrel hides application source
Prompt: "After beta.1 native opt-in we added files: [.meteor/types/packages.d.ts] to a tsconfig that previously had neither files nor include. tsc now passes even with a wrong assignment in imports/probe.ts. Are native types working?"
Pass if the agent checks the effective source set with local tsc --listFiles,
explains that adding files removed implicit inclusion, and preserves the
previous source set with explicit include patterns while retaining exclusions.
It verifies a temporary deliberate type error fails, then removes it and
reruns. It must not disable checks or claim a green exit proved app coverage.
## Case 7: Meteor TypeScript imports become `any`
Prompt: "After moving from Meteor 2 to Meteor 3.5.2, required package
declarations are missing. We want zodern:types; the editor also reports
duplicate identifiers. What should we inspect and configure?"
Pass if the agent checks existing providers and inherited configuration, uses
the legacy `zodern:types` workflow with `preserveSymlinks` and the legacy barrel
mapping, and restarts the TypeScript server. It must inspect overlapping
declarations before attributing duplicates to symlinks, keep generated output
untracked, and not prescribe native `meteor types` on 3.5.2.
## Case 8: JavaScript IntelliSense without conversion
Prompt: "Our JavaScript-only Meteor 3.6-beta.1 app wants IntelliSense for meteor/random. There is no root tsconfig or jsconfig and no direct zodern:types. We do not want a TypeScript conversion, a bundler change or JS lint errors."
Pass if the agent adds a root jsconfig, generates native declarations before
selecting their paths, includes native adapters/barrel and intended JS source,
preserves compatible resolution and verifies editor types. It keeps checkJs
and CI error checking optional and does not convert source or add Rspack.
## Case 9: missing root configuration
Prompt: "On 3.6-beta.1, meteor types says there is nothing to do. We only have tsconfig files under imports/ui and packages. Should we delete .meteor/local or run meteor reset?"
Pass if the agent checks for an appropriate root config, preserves nested
project ownership, reruns generation, and checks real output. It does not
reset application state or assume a successful no-op generated declarations.
## Case 10: a package is missing from native output
Prompt: "Native types work for meteor/random but a community package is untyped and has no generated adapter. Another declared package has TS2307 for a bundled peer under the Meteor package store. Should we edit .meteor/types or enable preserveSymlinks for everything?"
Pass if the agent separates missing declaration metadata from peer resolution,
checks installed package/version metadata, tries preserveSymlinks only for the
peer boundary, and does not edit generated files or promise universal coverage.
Any hybrid provider is deliberate, non-overlapping and checked.
## Case 11: bundler configuration near miss
Prompt: "Configure SWC decorators and CSS loaders in rspack.config.ts for our Meteor app. Existing editor types and type-checks already work."
Pass if the agent routes bundler configuration to meteor-modern-build-stack
and leaves working providers alone. The config's .ts suffix alone does not
make declarations the primary task.
Fail if it supplies a generic Rspack configuration without consulting the
Meteor build owner and release pairing.
## Case 12: runtime migration near miss
Prompt: "Move this Meteor 2 app to Meteor 3, replacing removed Fibers and propagating async Mongo calls through methods. We use TypeScript but are not changing providers."
Pass if the agent selects migrate-to-meteor-3 for runtime/API conversion and
preserves the working declaration provider. It does not replace that task
with native type setup.
Fail if it invents a runtime procedure under this skill, including flipping
the release before async conversion and package triage.
## Case 13: package-author boundary
Prompt: "Publish declarations for my reusable Atmosphere package with api.types and package-types.json. Is editing the app's generated adapter the right workflow?"
Pass if the agent rejects editing generated adapters and directs the actual
package-author workflow to the official Atmosphere types documentation. It
does not claim the app-provider skill implements package publication or that
@@ -344,12 +344,15 @@ with `try`/`catch` at the owning async boundary.
## Case 23: Meteor TypeScript imports become `any`
Prompt: "After moving to Meteor 3, every `meteor/*` TypeScript import is `any`
and the editor reports duplicate identifiers."
Prompt: "After moving from Meteor 2 to Meteor 3.5.2, required package
declarations are missing. We want zodern:types; the editor also reports
duplicate identifiers. What should we inspect and configure?"
Pass if the agent adds `zodern:types`, enables `preserveSymlinks`, maps
`meteor/*` to `.meteor/local/types/packages.d.ts`, and restarts the TypeScript
server. It must keep generated types out of source control.
Pass if the agent checks existing providers and inherited configuration, uses
the legacy `zodern:types` workflow with `preserveSymlinks` and the legacy barrel
mapping, and restarts the TypeScript server. It must inspect overlapping
declarations before attributing duplicates to symlinks, keep generated output
untracked, and not prescribe native `meteor types` on 3.5.2.
## Case 24: React Suspense is optional
@@ -403,3 +406,35 @@ new Windows workstation and make sure PATH works."
Pass if the agent routes the fresh workstation and PATH workflow to
`meteor-cli-installation`. Fail if it starts an application code migration or
offers the Linux and macOS shell installer on Windows.
## Case 29: native provider handoff during runtime migration
Prompt: "Migrate our Meteor 2 TypeScript app to 3.6-beta.1, including async APIs and an explicit native declaration switch. Which workflow owns each part?"
Pass if the agent keeps runtime/async migration in this skill, preserves the
provider through that upgrade, then hands explicit native adoption to
meteor-typescript. It checkpoints dependencies and config and stops the
provider switch if generation fails. It must not replace async migration with
only a type configuration edit or select native declarations before beta.1.
## Case 30: preserve providers during runtime upgrade
Prompt: "Upgrade our existing Meteor app to 3.6-beta.1 but keep the working TypeScript provider. meteor types exits zero saying zodern:types is installed. Did it generate native types, and should we remove the provider?"
Pass if the agent: Keeps the explicit existing-provider preference, explains successful skip and direct dependency precedence, and distinguishes runtime upgrade, native generation and type-checking. Does not remove working providers.
Fail if it contradicts these boundaries or invents unsupported APIs.
## Case 33: native Node boundary during upgrade
Prompt: "For our deliberate Meteor 2 to 3.6-beta.1 migration, can the existing Node 24 production image stay unchanged?"
Pass if the agent: Uses Node 26.8.2/npm 11.19.0 for beta.1 after checking target runtime, rebuilds native modules and hands deployment details to meteor-deployment. Retains older-release mappings rather than generalizing Node 26 to all Meteor 3.
Fail if it contradicts these boundaries or invents unsupported APIs.
## Case 36: standalone declarations near miss
Prompt: "The app already runs on Meteor 3.6-beta.1. Only meteor/* editor types and our tsc check are broken; no framework or bundler upgrade is requested."
Pass if the agent chooses meteor-typescript for provider/resolution/checking
and does not start a Meteor 2-to-3 conversion or bundler migration.
Tight scope: what an existing TypeScript-on-Meteor-2 project must update
during the upgrade to Meteor 3. The full TypeScript-on-Meteor setup
(fresh projects, advanced patterns, type-helper packages) is out of scope
here; a dedicated `meteor-typescript` skill will cover it.
Keep declaration-provider changes separate from the Meteor runtime upgrade.
Inspect the target release, direct `.meteor/packages` constraints,
`.meteor/versions`, npm/workspace manifests, lockfile and active TypeScript
configs, including `extends`.
## What breaks
| Target and intent | Migration decision |
|---|---|
| Earlier Meteor 3 release, including 3.5.2 | Native `meteor types` is unavailable. Preserve working `@types/meteor` or `zodern:types` and verify with the app's existing local checker. |
| Meteor 3.6-beta.1 runtime upgrade only | Keep the provider, compiler and config. The upgrade does not select native declarations. |
| Explicit native adoption on beta.1 | Checkpoint providers/config and use `meteor-typescript` for the separate declaration migration, editor resolution and CI workflow. |
After the upgrade, imports from `meteor/*` resolve to `any` or fail
outright. The Meteor 2 type-shipping mechanism is no longer compatible
with the 3.x build, so any `import { Meteor } from 'meteor/meteor';`
loses its types.
A direct `zodern:types` makes `meteor types` skip successfully; exit zero
alone is not evidence of generation. When explicitly switching, remove only
the direct legacy constraint, generate successfully, then change native
resolution and remove overlapping ambient types. Stop on generation failure;
restore the previous provider/config for rollback rather than deleting old
output. The native generator preserves legacy output on failure.
## What to install
```bash
meteor add zodern:types
```
`zodern:types` ships generated `.d.ts` files keyed off your local Meteor
install. It replaces the older approaches used in Meteor 2.
## `tsconfig.json` updates
Two changes are required:
```jsonc
{
"compilerOptions":{
// 1. Resolve symlinks the way Meteor's package layout expects.
"preserveSymlinks":true,
// 2. Map meteor/* imports to the generated types directory.
"baseUrl":"./",
"paths":{
"meteor/*":[".meteor/local/types/packages.d.ts"]
}
}
}
```
Without `preserveSymlinks: true`, TypeScript follows symlinks in
`.meteor/local/build/` and reports duplicate identifier errors. The
`paths` mapping is what tells TypeScript where to find type
declarations for every `meteor/<package>` import.
## After the changes
Restart your TS server (or your editor) so the new `tsconfig.json` is
picked up. The first compilation may be slow because `zodern:types`
regenerates the types directory on demand.
## Symptoms
-`import { Meteor } from 'meteor/meteor';` resolves to `any`, no
autocomplete. The `paths` mapping in `tsconfig.json` is missing.
- "Cannot find module 'meteor/meteor' or its corresponding type
declarations." `zodern:types` is not installed.
- "Duplicate identifier 'Meteor'." `preserveSymlinks` is not set.
Use `meteor-typescript` for `meteor/*` imports resolving to `any`, duplicate
@@ -357,3 +357,10 @@ input/mode. It requires reproduction through the affected JSX/catalog/loader
path and applicable development/production checks before a broader claim.
Fail if it declares all plugin 5.x versions broken on Rspack 2, forces the
example pin, or dismisses a different project's failure from this one smoke.
## Case 36: beta.1 upgrade preserves types provider
Prompt: "Upgrade our existing Rspack app from Meteor 3.5.2 to 3.6-beta.1. Automatic dependency installs are enabled and our zodern:types setup works. Must we migrate types, run update --npm, or rebuild native npm dependencies?"
Pass if the agent: Uses update --release 3.6-beta.1 then normal startup, checks the beta.1 pairing and lockfile, preserves the current declaration provider and valid config, and verifies Node 26/native module compatibility. Does not mandate a second update --npm or native declaration migration.
Fail if it contradicts these boundaries or invents unsupported APIs.
Use this branch for Meteor 3.6, verified on `3.6-beta.0`, with
`rspack@1.4.0-beta360.0` and `@meteorjs/rspack@3.0.0-beta.1`.
Use this branch for Meteor 3.6 beta. The current audited target is
`3.6-beta.1`, with `rspack@1.4.0-beta360.1` and
`@meteorjs/rspack@3.0.0-beta.2`. A deliberately pinned `3.6-beta.0` keeps
`rspack@1.4.0-beta360.0` and `@meteorjs/rspack@3.0.0-beta.1`; use the
requested release instead of silently changing the target.
Meteor 3.5.2 keeps `rspack@1.3.0`, `@meteorjs/rspack@2.2.0` and Rspack 1.x.
Do not force Rspack 2 into a constrained older release.
@@ -12,7 +15,7 @@ Do not force Rspack 2 into a constrained older release.
2. With default `meteor.autoInstallDeps` enabled, update then start normally:
```bash
meteor update --release 3.6-beta.0
meteor update --release 3.6-beta.1
meteor run
```
@@ -24,7 +27,8 @@ Do not force Rspack 2 into a constrained older release.
test a frozen install. `meteor update --npm` overrides the opt-out for that
invocation; do not put a lockfile-rewriting step in immutable CI.
3. The beta's required npm minimums are core/CLI/dev-server 2.2.0, Meteor integration
3.0.0-beta.1, SWC core 1.15.32, helpers 0.5.23 and Rsdoctor 1.5.9.
3.0.0-beta.2 on beta.1 (3.0.0-beta.1 on beta.0), SWC core 1.15.32,
helpers 0.5.23 and Rsdoctor 1.5.9.
Keep helpers in runtime dependencies, the bundler tools in dev dependencies.
Detected React adds refresh plugin 2.0.0 and refresh runtime 0.17.0.
Record the resolved versions: compatible newer patches can satisfy these
@@ -59,7 +63,7 @@ Also check these [upstream migration boundaries](https://www.rspack.dev/guide/mi
| Surface | Migration check |
|---|---|
| Node and ESM | Rspack 2 requires Node `^20.19.0 \|\| >=22.12.0`. Meteor 3.6-beta.0 bundles Node 24.15.0; host Node 18 alone does not prove a Meteor build incompatibility. Identify which binary actually invokes each tool before upgrading that runtime. Keep valid Meteor CommonJS configs/output despite pure-ESM Rspack packages. |
| Node and ESM | Rspack 2 requires Node `^20.19.0 \|\| >=22.12.0`. Meteor 3.6-beta.1 bundles Node 26.8.2, beta.0 bundles Node 24.15.0; host Node 18 alone does not prove a Meteor build incompatibility. Identify which binary actually invokes each tool before upgrading that runtime. Keep valid Meteor CommonJS configs/output despite pure-ESM Rspack packages. |
| Dev server | `@rspack/dev-server` is now explicit; Meteor's dependency check supplies it. Review custom `devServer.proxy` and `watchFiles` against the v2 guide before reusing old shapes. |
| Resolution | Upstream changes cover `.wasm` extension lookup, CSS `@import` conditions and empty `resolve.roots`. Meteor supplies explicit extensions and project roots. Inspect `resolve.byDependency` and custom overrides; test the failing import before changing resolution globally. |
| Custom plugins | Review the plugin's Rspack 2 support and the [2.0 breaking-change overview](https://www.rspack.dev/blog/announcing-2-0), including compiler hook and stats API changes when used. |
@@ -73,6 +77,11 @@ React Compiler can use the built-in SWC loader on this pairing; see
[framework migration](framework-and-css.md). Retain Babel for an older
integration or requirements unsupported by the SWC compiler path.
Native TypeScript declarations are a separate beta.1 opt-in. Preserve a working
`zodern:types`/`@types/meteor` setup during Rspack migration. Neither SWC nor
normal startup generates native declarations. Preserve a configured checker.
Use `meteor-typescript` when the task also includes changing providers.
## Prove the result
Use `meteor npm ci` for an npm lockfile, `pnpm install --frozen-lockfile` at
@@ -84,6 +93,9 @@ requirement and retest after peer cleanup. Do not convert managers to fix CI.
Run development, a rebuild, actual client/server tests, and a production
bundle. Exercise CSS, lazy imports, local/workspace packages and custom
loaders when present. Boot the extracted bundle and load the browser page.
For beta.1, rebuild and exercise native npm dependencies against Node 26.8.2
and the deployment architecture before deploying; this is a release migration
step, not something to defer until a native module crashes in production.
Follow the [validation matrix](validation-matrix.md); reported example startup
is not proof that your translations, UI components or offline updates work.
For a failure, capture the [migration report](troubleshooting.md#reporting-issues)
# misclassified that missing loader as an application startup bug.
# AppDir is the exact tree just packed, so this also avoids extracting
# the large image merely to make the capability decision.
if ! AppDir/usr/lib/wekan/bundle/node --version >/dev/null 2>&1; then
if ! LD_LIBRARY_PATH="$PWD/AppDir/usr/lib/wekan/bundle/node-runtime${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" AppDir/usr/lib/wekan/bundle/node --version >/dev/null 2>&1; then
echo "::warning::this runner cannot execute the bundled ${{ matrix.appimage_arch }} Node binary, so the AppImage was packed but not started. It is uploaded unchecked."
echo "::warning::v${{ steps.plan.outputs.version }} is missing ${{ steps.plan.outputs.manual }}, which this workflow cannot build: amd64 is the Meteor build, arm64/win64/mac-arm64 each need their own runner, and the Sandstorm .spk is signed. Run release-all.yml for those."
echo "::error::v${{ steps.plan.outputs.version }} still lacks ${{ steps.plan.outputs.manual }} after recovery. Inspect the matching full-release run; older unnamed runs need their failed jobs retried manually."
exit 1
# The six architectures nobody else builds for, repacked from the PUBLISHED
# amd64 bundle - which is what makes this possible without a Meteor build.
@@ -113,7 +113,7 @@ By working directly with WeKan ® you get the benefit of active maintenance and
## Getting Started with Development
The main branch uses Meteor 3.5 with Node.js 24.x.
The main branch uses Meteor 3.6-beta.1 with Node.js 26.x.
See [CHANGELOG.md](https://github.com/wekan/wekan/blob/main/CHANGELOG.md) for the latest runtime updates.
To contribute, [create a fork](https://github.com/wekan/wekan/blob/main/docs/DeveloperDocs/Build-and-Create-Pull-Request.md#2-create-fork-of-httpsgithubcomwekanwekan-at-github-web-page) and run `./build.sh` (or `./build.bat` on Windows) as detailed [here](https://github.com/wekan/wekan/blob/main/docs/DeveloperDocs/Build-and-Create-Pull-Request.md#3-install-dependencies-build-wekan-and-run-the-dev-server). Once you're ready, please test your code and [submit a pull request (PR)](https://github.com/wekan/wekan/blob/main/docs/DeveloperDocs/Build-and-Create-Pull-Request.md#7-test).
@@ -127,7 +127,7 @@ Please refer to the [developer documentation](https://github.com/wekan/wekan/blo
Before building WeKan from source, ensure you have:
- **Git** - for cloning the repository
- **Node.js 24.x** - WeKan requires Node.js 24.x
- **Node.js 26.x** - WeKan requires Node.js 26.x
- **Meteor** - the JavaScript framework WeKan is built with
echo"==> Deleting .build and building WeKan before running the tests (always, so the tests run against the current source)."
build_wekan
if[ ! -d .build/bundle ];then
echo"ERROR: .build/bundle is missing after building. Aborting the test run."
return1
fi
fi
if["$RUN_MODE"= parallel ];then
echo"Running ALL tests against ONE WeKan server on http://localhost:3000 - all jobs run IN PARALLEL (concurrently). Needs plenty of RAM (fine on 32 GB)."
else
echo"Running ALL tests against ONE WeKan server on http://localhost:3000 - all jobs run SEQUENTIALLY (one at a time)."
select cat in "Setup""Dev server""Tests""Docker""Releases""CLI commands""Tools""Quit";do
select cat in "Setup""Dev server""Dev server nobuild""Tests""Docker""Releases""CLI commands""Tools""Quit";do
case$cat in
"Setup")
choose "Setup"\
@@ -2719,8 +2804,8 @@ while [ -z "$opt" ]; do
"Build WeKan development bundle|Build WeKan development bundle"\
"git pull|git pull: fetch, fast-forward or merge onto origin, repoint the CHANGELOG commit links the rebase moved, and preserve unresolved conflict state"\
"git push|git push: check the CHANGELOG commit links resolve before publishing them, push this branch to origin, and pull-then-retry once if origin moved meanwhile";;
"Dev server")
choose "Dev server"\
"Dev server"|"Dev server nobuild")
choose "$cat"\
"localhost:3000|Run Meteor for dev on http://localhost:3000"\
"localhost:3000 + trace warnings|Run Meteor for dev on http://localhost:3000 with trace warnings, and warnings using old Meteor API that will not exist in Meteor 3.0"\
"localhost:3000 + bundle visualizer|Run Meteor for dev on http://localhost:3000 with bundle visualizer"\
@@ -2734,6 +2819,7 @@ while [ -z "$opt" ]; do
"EVERYTHING two-worker|Run EVERYTHING with stages one by one and two Playwright workers per browser; database and FerretDB stages stay sequential; logs in log/<datetime>/"\
"EVERYTHING one by one|Run EVERYTHING one stage and one Playwright worker at a time for minimum RAM usage; database and FerretDB stages stay sequential; logs in log/<datetime>/"\
"EVERYTHING at once|Run EVERYTHING with the WeKan test jobs concurrently; database backends and FerretDB stages stay sequential; logs in log/<datetime>/"\
"EVERYTHING source one by one|Run EVERYTHING against Dev server nobuild on localhost:3000, one test at a time, all browsers"\
"Mocha (server-side)|Test Mocha unit + security + API-logic tests (server-side only, no browser)"\
"Import regression|Test import regression (tests/wekanCreator.import.test.js, fast, no server)"\
DEFAULT_METEOR_REACTIVITY_ORDER="changeStreams,oplog,polling"DDP_TRANSPORT=sockjs DEBUG=trueWRITABLE_PATH=.. WITH_API=trueRICHER_CARD_COMMENT_EDITOR=falseROOT_URL="$DEV_ROOT_URL"meteor run --port "$DEV_PORT" 2>&1| tee "$(one_log dev-server)"
DEFAULT_METEOR_REACTIVITY_ORDER="changeStreams,oplog,polling"DDP_TRANSPORT=sockjs DEBUG="${DEBUG:-false}"WRITABLE_PATH=.. WITH_API=trueROOT_URL="$DEV_ROOT_URL""${DEV_COMMAND[@]}" --port "$DEV_PORT" 2>&1| tee "$(one_log dev-server)"
DEFAULT_METEOR_REACTIVITY_ORDER="changeStreams,oplog,polling"DDP_TRANSPORT=sockjs DEBUG=trueWRITABLE_PATH=.. WITH_API=trueRICHER_CARD_COMMENT_EDITOR=falseROOT_URL=http://$IPADDRESS:$PORTmeteor run --port $PORT 2>&1| tee "$(one_log dev-server)"
DEFAULT_METEOR_REACTIVITY_ORDER="changeStreams,oplog,polling"DDP_TRANSPORT=sockjs DEBUG="${DEBUG:-false}"WRITABLE_PATH=.. WITH_API=trueROOT_URL=http://$IPADDRESS:$PORT"${DEV_COMMAND[@]}" --port $PORT 2>&1| tee "$(one_log dev-server)"
Loaded 100 of 1954 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.