Compare commits

...
1472 Commits
Author SHA1 Message Date
github-actions[bot] 54d26a0eb7 Bump versions for v12.02 2026-09-25 09:49:34 +00:00
Lauri Ojansivu 016d637fc8 Prepare v12.02 release 2026-09-25 12:47:32 +03:00
Lauri Ojansivu ac7cf31910 Complete Upcoming changelog for changes since v12.01
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 !
2026-09-25 12:46:40 +03:00
Lauri Ojansivu 05f1f0a032 Add SAML administration, metadata and service-provider logout
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 !
2026-09-25 12:45:30 +03:00
Lauri Ojansivu 6b6edf96e8 Document OIDC redirect and authentication button fixes 2026-09-25 12:42:03 +03:00
Lauri Ojansivu 9dd295079b Use shared Login colors for every authentication button
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 !
2026-09-25 12:41:49 +03:00
Lauri Ojansivu 8263734f5a Prevent repeated automatic OIDC login after failed callbacks
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,
2026-09-25 12:39:19 +03:00
Lauri Ojansivu bd806736d4 Document People authentication menu changes 2026-09-25 12:09:26 +03:00
Lauri Ojansivu ecdae60a8a Separate People login settings into menu entries and default to Email 2026-09-25 12:08:57 +03:00
Lauri Ojansivu 8bc83c849b Merge remote-tracking branch 'origin/main' 2026-09-25 03:20:23 +03:00
Lauri Ojansivu 2e6e9ee95e Document omission of empty release-note sections 2026-09-25 02:47:03 +03:00
Lauri Ojansivu 3163ccfc1f Omit empty sections from release notes 2026-09-25 02:46:42 +03:00
github-actions[bot] 5b35bb74dd Bump versions for v12.01 2026-09-24 23:33:21 +00:00
Lauri Ojansivu 7ad71c52a0 Prepare v12.01 release 2026-09-25 02:31:35 +03:00
Lauri Ojansivu 80f0b9187e Merge remote-tracking branch 'origin/main' 2026-09-25 02:31:10 +03:00
Lauri Ojansivu 0f572b174a Document ZIP attachment previews 2026-09-25 02:30:08 +03:00
Lauri Ojansivu 2016d15f2a Preview ZIP contents from cards and Files Report 2026-09-25 02:29:43 +03:00
Lauri Ojansivu f38e152e80 Document Files Report preview and download repairs
Thanks to xet7 !
2026-09-25 02:14:17 +03:00
Lauri Ojansivu f03463e7de Fix administrator attachment previews and downloads in Files Report
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 !
2026-09-25 02:13:25 +03:00
github-actions[bot] a2dc757360 Bump versions for v12.00 2026-09-24 22:47:10 +00:00
Lauri Ojansivu 584fc34eae Prepare v12.00 release 2026-09-25 01:45:23 +03:00
Lauri Ojansivu 5d53ed050c Document the full-test regression repairs
Thanks to xet7 !
2026-09-25 01:43:53 +03:00
Lauri Ojansivu 55c6b48c16 Repair full-test regressions and align local release preparation
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 !
2026-09-25 01:42:55 +03:00
Lauri Ojansivu e05c4fe014 Document dependency audit and S3 build repair 2026-09-24 23:38:45 +03:00
Lauri Ojansivu 670ae80ff8 Validate merged dependencies and repair the S3 upload peer conflict 2026-09-24 23:38:13 +03:00
Lauri Ojansivu 39d426be79 Merge pull request #6721 from wekan/dependabot/npm_and_yarn/rspack/core-2.2.6
Bump @rspack/core from 2.2.0 to 2.2.6
2026-09-24 23:27:52 +03:00
Lauri Ojansivu 3c4a465637 Merge pull request #6720 from wekan/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-8.70.1
Bump @typescript-eslint/eslint-plugin from 8.70.0 to 8.70.1
2026-09-24 23:27:36 +03:00
Lauri Ojansivu 1c00da28ce Merge pull request #6719 from wekan/dependabot/npm_and_yarn/aws-sdk/lib-storage-3.1137.0
Bump @aws-sdk/lib-storage from 3.1119.0 to 3.1137.0
2026-09-24 23:27:18 +03:00
Lauri Ojansivu d37d57f9a0 Merge pull request #6718 from wekan/dependabot/npm_and_yarn/htmlparser2-12.0.0
Bump htmlparser2 from 10.1.0 to 12.0.0
2026-09-24 23:27:03 +03:00
dependabot[bot] 8076b75df3 Bump @rspack/core from 2.2.0 to 2.2.6
Bumps [@rspack/core](https://github.com/web-infra-dev/rspack/tree/HEAD/packages/rspack) from 2.2.0 to 2.2.6.
- [Release notes](https://github.com/web-infra-dev/rspack/releases)
- [Commits](https://github.com/web-infra-dev/rspack/commits/v2.2.6/packages/rspack)

---
updated-dependencies:
- dependency-name: "@rspack/core"
  dependency-version: 2.2.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-24 20:25:46 +00:00
dependabot[bot] 261c131a4e Bump htmlparser2 from 10.1.0 to 12.0.0
Bumps [htmlparser2](https://github.com/fb55/htmlparser2) from 10.1.0 to 12.0.0.
- [Release notes](https://github.com/fb55/htmlparser2/releases)
- [Commits](https://github.com/fb55/htmlparser2/compare/v10.1.0...v12.0.0)

---
updated-dependencies:
- dependency-name: htmlparser2
  dependency-version: 12.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-24 20:24:16 +00:00
Lauri Ojansivu b31c667da4 Merge pull request #6717 from wekan/dependabot/npm_and_yarn/rspack/cli-2.2.6
Bump @rspack/cli from 2.2.0 to 2.2.6
2026-09-24 23:23:19 +03:00
Lauri Ojansivu 39fd5ef713 Merge pull request #6716 from wekan/dependabot/npm_and_yarn/hotkeys-js-4.0.8
Bump hotkeys-js from 4.0.7 to 4.0.8
2026-09-24 23:21:36 +03:00
dependabot[bot] f3e5847950 Bump @typescript-eslint/eslint-plugin from 8.70.0 to 8.70.1
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 8.70.0 to 8.70.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.70.1/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-version: 8.70.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-24 20:20:10 +00:00
dependabot[bot] 6156bad07c Bump @aws-sdk/lib-storage from 3.1119.0 to 3.1137.0
Bumps [@aws-sdk/lib-storage](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/lib/lib-storage) from 3.1119.0 to 3.1137.0.
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/lib/lib-storage/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.1137.0/lib/lib-storage)

---
updated-dependencies:
- dependency-name: "@aws-sdk/lib-storage"
  dependency-version: 3.1137.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-24 20:19:54 +00:00
github-actions[bot] e09307cda1 Bump versions for v11.99 2026-09-24 20:19:45 +00:00
dependabot[bot] d4ae151e28 Bump @rspack/cli from 2.2.0 to 2.2.6
Bumps [@rspack/cli](https://github.com/web-infra-dev/rspack/tree/HEAD/packages/rspack-cli) from 2.2.0 to 2.2.6.
- [Release notes](https://github.com/web-infra-dev/rspack/releases)
- [Commits](https://github.com/web-infra-dev/rspack/commits/v2.2.6/packages/rspack-cli)

---
updated-dependencies:
- dependency-name: "@rspack/cli"
  dependency-version: 2.2.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-24 20:19:23 +00:00
dependabot[bot] 36bd87f17f Bump hotkeys-js from 4.0.7 to 4.0.8
Bumps [hotkeys-js](https://github.com/jaywcjlove/hotkeys-js) from 4.0.7 to 4.0.8.
- [Release notes](https://github.com/jaywcjlove/hotkeys-js/releases)
- [Commits](https://github.com/jaywcjlove/hotkeys-js/compare/v4.0.7...v4.0.8)

---
updated-dependencies:
- dependency-name: hotkeys-js
  dependency-version: 4.0.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-24 20:19:05 +00:00
Lauri Ojansivu cee0c9c534 Prepare v11.99 release 2026-09-24 23:18:17 +03:00
Lauri Ojansivu d6ed6f1fb9 Document developer tooling security and dependency repair 2026-09-24 23:12:47 +03:00
Lauri Ojansivu 1f5692db36 Repair dependency updates and upgrade vulnerable Rsdoctor tooling
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.
2026-09-24 23:12:20 +03:00
Lauri Ojansivu a5ee3bd4c1 Merge remote-tracking branch 'origin/main' 2026-09-24 22:58:50 +03:00
Lauri Ojansivu 844c7d7e01 Updated count of lines of code per committer stats.
Thanks to xet7 !
2026-09-24 22:58:11 +03:00
github-actions[bot] fa7d2584df Bump versions for v11.98 2026-09-24 17:17:13 +00:00
Lauri Ojansivu 3f12a11af7 Prepare v11.98 release 2026-09-24 20:15:18 +03:00
Lauri Ojansivu ea4afae17f Merge remote-tracking branch 'origin/main' 2026-09-24 20:14:55 +03:00
Lauri Ojansivu 95dc456b2d Document Snap stage-package recovery 2026-09-24 20:13:36 +03:00
Lauri Ojansivu 494fa0cd02 Recover Snap stage-package 404s in the managed build instance 2026-09-24 20:13:00 +03:00
github-actions[bot] f2ab9c3b94 Bump versions for v11.97 2026-09-24 16:50:38 +00:00
Lauri Ojansivu d982d293c6 Prepare v11.97 release 2026-09-24 19:48:47 +03:00
Lauri Ojansivu 09a77a4b9b Merge remote-tracking branch 'origin/main' 2026-09-24 19:48:22 +03:00
Lauri Ojansivu 334d54484b Document release summary validation fix 2026-09-24 19:47:53 +03:00
Lauri Ojansivu 4101e8fd41 Fix missing v11.96 release summary and validate notes before tagging 2026-09-24 19:47:29 +03:00
github-actions[bot] 58cbbe54e2 Bump versions for v11.96 2026-09-24 16:24:31 +00:00
Lauri Ojansivu 3a58c6f728 Prepare v11.96 release 2026-09-24 19:22:01 +03:00
Lauri Ojansivu 60bf582e5d Merge remote-tracking branch 'origin/main' 2026-09-24 19:21:33 +03:00
Lauri Ojansivu 956c81481f Document Snap managed package index recovery 2026-09-24 19:10:33 +03:00
Lauri Ojansivu 4913f4abbd Recover Snapcraft base provisioning from stale package indexes
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.
2026-09-24 19:10:15 +03:00
github-actions[bot] b4e56c1913 Bump versions for v11.95 2026-09-24 15:45:02 +00:00
Lauri Ojansivu c355188c76 Prepare v11.95 release 2026-09-24 18:43:39 +03:00
Lauri Ojansivu b254949dc8 Document bounded Mac release smoke-test cleanup.
Thanks to xet7 !
2026-09-24 18:41:07 +03:00
Lauri Ojansivu 6568268b24 Bound Mac app smoke-test shutdown for both architectures.
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 !
2026-09-24 18:40:28 +03:00
Lauri Ojansivu 8958467c84 Document matching Board Settings and Board View icons.
Thanks to xet7 !
2026-09-24 18:35:12 +03:00
Lauri Ojansivu 41c3508e6c Match Board Settings icons to the Board View menu.
Use the Swimlanes grid and Lists board icons for the corresponding settings entries.

Thanks to xet7 !
2026-09-24 18:34:55 +03:00
Lauri Ojansivu fbd087f353 Place the Date menu change in the upcoming release.
Thanks to xet7 !
2026-09-24 18:33:10 +03:00
Lauri Ojansivu e760d27a70 Document the Board Settings Date menu position.
Thanks to xet7 !
2026-09-24 18:32:40 +03:00
Lauri Ojansivu d71973fc49 Move Date below Change Background Image in Board Settings.
Thanks to xet7 !
2026-09-24 18:32:26 +03:00
github-actions[bot] b849a427f4 Bump versions for v11.94 2026-09-24 11:26:26 +00:00
Lauri Ojansivu 43416dc088 Prepare v11.94 release 2026-09-24 14:24:30 +03:00
Lauri Ojansivu b0aa15bda0 Document libatomic coverage across Linux release packages.
Thanks to Nissulya, PetitManchot and xet7 !
2026-09-24 14:22:20 +03:00
Lauri Ojansivu 54ce3015e8 Include the Node.js atomic runtime in Linux release packages.
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 !
2026-09-24 14:21:55 +03:00
Lauri Ojansivu b585dc0c24 Merge remote-tracking branch 'origin/main' 2026-09-24 14:14:08 +03:00
Lauri Ojansivu baaa3d2441 Document Snap, invitation and release packaging fixes.
Record verification and the remaining history checksum investigation from #6692.

Thanks to Nissulya, PetitManchot and xet7 !
2026-09-24 14:03:16 +03:00
Lauri Ojansivu ba5ecaf14b Fix Mac archive checks and cross-platform release bundle failures.
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 !
2026-09-24 14:02:30 +03:00
Lauri Ojansivu e1b13e6881 Use server invitation methods from the board sidebar.
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 !
2026-09-24 14:02:30 +03:00
Lauri Ojansivu d55b2d3e8b Bundle libatomic with the Snap Node.js runtime.
Thanks to Nissulya, PetitManchot and xet7 !

Fixes #6715.
2026-09-24 14:00:55 +03:00
github-actions[bot] ecd853dc1d Bump versions for v11.93 2026-09-23 21:09:53 +00:00
Lauri Ojansivu 78da3e8151 Prepare v11.93 release 2026-09-24 00:08:09 +03:00
Lauri Ojansivu d2dd1b16af Document dependency keyword classification 2026-09-24 00:03:44 +03:00
Lauri Ojansivu c7111728bb Distinguish known dependency keyword false positives from new findings 2026-09-24 00:03:08 +03:00
Lauri Ojansivu b7ab631eaf Document release version and Windows launcher fixes 2026-09-23 22:32:29 +03:00
Lauri Ojansivu 7392a364ba Refresh release runtime versions and fix Windows source resolution 2026-09-23 22:31:36 +03:00
Lauri Ojansivu 930292acee Document release origin validation fix 2026-09-23 22:22:49 +03:00
Lauri Ojansivu 83fb620c4d Accept GitHub SSH origins without .git in release launchers 2026-09-23 22:22:05 +03:00
Lauri Ojansivu d884509051 Document release menus and automated indicator policy 2026-09-23 22:15:36 +03:00
Lauri Ojansivu a048569b8d Use automated risk indicators instead of mandatory dependency review 2026-09-23 22:11:57 +03:00
Lauri Ojansivu 3f4dcaec53 Gate release menus on dependency review and retry missing builds 2026-09-23 21:56:45 +03:00
Lauri Ojansivu 3a6abad835 Document release preflight and login security fixes 2026-09-23 21:34:44 +03:00
Lauri Ojansivu 4d2951ae20 Fix release telemetry review and login error disclosure
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.
2026-09-23 21:31:14 +03:00
Lauri Ojansivu 8080fe713a Prepare v11.92 release 2026-09-23 21:16:06 +03:00
Lauri Ojansivu e9e4e4f70d Document Firefox password login fix in Upcoming
Thanks to xet7.
2026-09-23 21:10:33 +03:00
Lauri Ojansivu 79cd465585 Fix Firefox password login submit replay
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.
2026-09-23 21:09:55 +03:00
Lauri Ojansivu 8537af5599 Document multiline creation translations in Upcoming
Thanks to xet7.
2026-09-23 20:54:41 +03:00
Lauri Ojansivu d97b6a85e2 Translate multiline creation choices in every locale
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.
2026-09-23 20:53:58 +03:00
Lauri Ojansivu 6a4a6ef58f Document the latest Meteor skills lockfile update
Thanks to Meteor developers and xet7 !
2026-09-23 20:37:29 +03:00
Lauri Ojansivu b22d173312 Added Meteor Skills lockfile.
Thanks to Meteor develoepers !
2026-09-23 20:36:07 +03:00
Lauri Ojansivu e18f028be5 Document login protocol verification in Upcoming
Record authentication fixes, positive and negative integration coverage, and the limits of local identity-server testing.

Thanks to xet7 !
2026-09-23 20:32:42 +03:00
Lauri Ojansivu 4f7d28637e Verify login provider exchanges and fix authentication failures
Exercise local LDAP, OAuth, SAML, CAS, SMTP and proxy identity servers through real WeKan login adapters. Fix optional LDAP mapping, simultaneous provider configuration, SAML certificate and profile mapping, async login controls, CAS callbacks and TOTP retry errors. Require consumption of remaining passwordless codes before issuing sessions.

Validated 34 Chromium integration checks, seven expanded social profile checks and focused Node regression suites on macOS ARM64.

Thanks to xet7 !
2026-09-23 20:31:35 +03:00
Lauri Ojansivu 6d9fdf8b28 Record menu audit results and strengthen imported content checks
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.
2026-09-23 19:54:03 +03:00
Lauri Ojansivu 9289edc3ec Audit menu actions and repair import data loss and policy enforcement
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.
2026-09-23 19:49:33 +03:00
Lauri Ojansivu 98654d3115 Document always-visible creation options in Upcoming 2026-09-23 19:17:22 +03:00
Lauri Ojansivu cdc0722b15 Always show one-or-many creation choices and support board batches
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 !
2026-09-23 19:16:43 +03:00
Lauri Ojansivu 5d57766dbf Document backup repairs and menu-based feature guides in Upcoming 2026-09-23 19:11:06 +03:00
Lauri Ojansivu 58d8563637 Fix scheduled full-instance backups and validate Admin Panel features
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,
2026-09-23 19:10:24 +03:00
Lauri Ojansivu c084137e8a Added more agent skill from nachocondoner of Meteor Team:
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."
2026-09-23 19:01:00 +03:00
Lauri Ojansivu 953d8f7c13 Organize feature guides by menu and document backup alternatives
Add September feature instructions, preserve guide forwarding links, and document backup coverage with descriptive screenshots from #6683.

Thanks to markusst1982 and xet7 !
2026-09-23 18:34:37 +03:00
Lauri Ojansivu ab5e2f7f5c Merge remote-tracking branch 'origin/main' 2026-09-23 18:28:47 +03:00
Lauri Ojansivu 8889067ace Document multiline card, list and swimlane creation 2026-09-23 18:21:48 +03:00
Lauri Ojansivu 552ac0855a Create cards, lists and swimlanes from multiline titles
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,
2026-09-23 18:21:03 +03:00
Lauri Ojansivu b01a7bf824 Document npm 12 bundle rebuild compatibility 2026-09-23 18:04:23 +03:00
Lauri Ojansivu d17dadcf77 Fix Meteor bundle rebuilds with npm 12 2026-09-23 18:03:51 +03:00
github-actions[bot] 6d4c68a74a Bump versions for v11.91 2026-09-23 14:49:27 +00:00
Lauri Ojansivu 55a9b50597 Prepare v11.91 release 2026-09-23 17:47:42 +03:00
Lauri Ojansivu 770e585a96 Merge remote-tracking branch 'origin/main' 2026-09-23 17:47:20 +03:00
Lauri Ojansivu 3af5e3b4ec Wrap changelog prose while preserving complete links 2026-09-23 17:46:54 +03:00
Lauri Ojansivu 37b0c1b154 Restore v11.90 release notes and prepare Upcoming for v11.91 2026-09-23 17:45:00 +03:00
Lauri Ojansivu 160e5635b2 Prevent release version reuse when changelog headings lag behind tags 2026-09-23 17:44:37 +03:00
github-actions[bot] 0cc30e72b5 Bump versions for v11.90 2026-09-23 14:40:34 +00:00
Lauri Ojansivu fc8178dd8f Prepare v11.90 release 2026-09-23 17:38:36 +03:00
Lauri Ojansivu c5fdeb47fa Document date-format checkbox alignment 2026-09-23 15:27:57 +03:00
Lauri Ojansivu 63238a687a Align the date-format status label beside its checkbox
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.
2026-09-23 15:27:40 +03:00
Lauri Ojansivu fd0f766095 Document member Date Format status and layout 2026-09-23 15:21:28 +03:00
Lauri Ojansivu b87b0aca1c Clarify member Date format status and section layout
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.
2026-09-23 15:21:11 +03:00
Lauri Ojansivu 3c8468201b Document the board Date week-number toggle 2026-09-23 15:03:54 +03:00
Lauri Ojansivu e217f1215a Move ISO week-number toggle into Board Settings Date
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.
2026-09-23 15:03:33 +03:00
Lauri Ojansivu 0e15bbaab0 Document the direct member Date settings popup 2026-09-23 15:00:06 +03:00
Lauri Ojansivu e13f4f6c29 Group member date preferences in the direct Date popup
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.
2026-09-23 14:59:46 +03:00
Lauri Ojansivu 458be25bdf Document scoped date format settings in Upcoming changelog 2026-09-23 13:58:53 +03:00
Lauri Ojansivu 94b59bef01 Move date format controls to global, board and member settings
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.
2026-09-23 13:58:24 +03:00
Lauri Ojansivu 400f8b9d36 Document LDAP login form fix for issue 6692 2026-09-23 13:19:06 +03:00
Lauri Ojansivu b4459a79e2 Fix duplicate LDAP form submissions and display login failures
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,
2026-09-23 13:18:29 +03:00
Lauri Ojansivu afa0f78a74 Update Upcoming telemetry validation with native startup results 2026-09-23 10:36:49 +03:00
Lauri Ojansivu 346267eb5c Document native macOS build and startup validation 2026-09-23 10:35:51 +03:00
Lauri Ojansivu 5779499ef2 Fix npm 12 production bundle installs and audit generated build files 2026-09-23 10:35:01 +03:00
Lauri Ojansivu 201c905f3f Document release telemetry audits and validation limits
Thanks to xet7.
2026-09-23 10:21:15 +03:00
Lauri Ojansivu 7f781be34e Gate release builds on source and artifact telemetry checks
Preserve local instrumentation and security logging, opt out of Meteor package statistics, and audit release bundles and repackaged binaries before publication.

Thanks to xet7.
2026-09-23 10:20:04 +03:00
Lauri Ojansivu 28b98e7dee Document corrected pulled translations
Add the Occitan, Breton, Wolof, Walloon, Volapuk and Standard Moroccan Tamazight corrections to the upcoming release notes, including their verification and review status.
2026-09-22 21:36:17 +03:00
Lauri Ojansivu caa58a39b2 Keep translated checklist examples in reviewed locales
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.
2026-09-22 21:35:50 +03:00
Lauri Ojansivu f0d6d48ef9 Keep reviewed Breton color spelling 2026-09-22 21:31:25 +03:00
Lauri Ojansivu 8c4b292a92 Translate pulled Tamazight interface strings 2026-09-22 21:30:21 +03:00
Lauri Ojansivu 5b128a1c63 Translate pulled Volapuk interface strings 2026-09-22 21:23:57 +03:00
Lauri Ojansivu 9c1e53fe62 Translate pulled Walloon interface strings 2026-09-22 21:13:53 +03:00
Lauri Ojansivu e87cf70be6 Translate pulled Wolof interface strings 2026-09-22 21:08:32 +03:00
Lauri Ojansivu fb5adf635f Translate pulled Breton interface strings 2026-09-22 20:46:38 +03:00
Lauri Ojansivu 47ea978108 Translate pulled Occitan interface strings 2026-09-22 20:41:13 +03:00
Lauri Ojansivu a4761a582f Document Mongolian translation update 2026-09-22 20:20:05 +03:00
Lauri Ojansivu e39f2889d3 Translate pulled Mongolian interface strings 2026-09-22 20:19:38 +03:00
Lauri Ojansivu 8897dafa4d Document translation pull safeguards 2026-09-22 20:01:04 +03:00
Lauri Ojansivu bee69b103b Preserve reviewed Mongolian translations through pulls 2026-09-22 20:00:10 +03:00
Lauri Ojansivu c9f8655d2b Document forge mirror and Kannada pull fixes 2026-09-22 19:46:43 +03:00
Lauri Ojansivu cb8fd6b86b Keep translated Kannada active and accept valid locale updates 2026-09-22 19:45:40 +03:00
Lauri Ojansivu d4ef9284b7 Reuse WeKan checkout as forge mirror source 2026-09-22 19:45:20 +03:00
Lauri Ojansivu fe73307c39 Document regression test and macOS workflow fixes 2026-09-22 19:32:32 +03:00
Lauri Ojansivu 19f740f509 Stabilize WeKan regression checks and macOS release jobs 2026-09-22 19:31:34 +03:00
Lauri Ojansivu 09d02df29a Document Meteor Accounts security hardening 2026-09-22 19:17:20 +03:00
Lauri Ojansivu ab11bad210 Harden Meteor 3.6 passwordless account requests 2026-09-22 19:16:55 +03:00
Lauri Ojansivu a4de36e5af Document Meteor instrumentation report 2026-09-22 19:07:36 +03:00
Lauri Ojansivu 23ed8d927f Show Meteor instrumentation in Admin Panel Problems 2026-09-22 19:07:14 +03:00
Lauri Ojansivu 0dde1245d5 Record address and location column layout 2026-09-22 18:47:55 +03:00
Lauri Ojansivu e8d9bf9f11 Pair IPv4 and IPv6 addresses with their locations 2026-09-22 18:47:39 +03:00
Lauri Ojansivu c9e90cd592 Record button theme and impersonation report fixes 2026-09-22 18:40:59 +03:00
Lauri Ojansivu ba4637e558 Show initials for missing impersonated users 2026-09-22 18:40:36 +03:00
Lauri Ojansivu 8e7369e0bc Use the current theme for default button states 2026-09-22 18:39:01 +03:00
Lauri Ojansivu 1f6658a0d3 Record Admin report scan, location and theme fixes 2026-09-22 18:38:04 +03:00
Lauri Ojansivu d43968d888 Clarify file scans and show location in address reports
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.
2026-09-22 18:37:38 +03:00
Lauri Ojansivu 2227503bd3 Record public board favorite fix 2026-09-22 17:28:06 +03:00
Lauri Ojansivu a0c14a4c7f Keep public board favorites across reloads
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,
2026-09-22 17:27:43 +03:00
Lauri Ojansivu c8431a3016 Record fixes for linked cards and saved list state 2026-09-22 15:13:36 +03:00
Lauri Ojansivu 773a1c2ddf Restore saved list collapse state after page reload
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,
2026-09-22 15:13:00 +03:00
Lauri Ojansivu 0741a78475 Open linked card URLs in the current tab
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,
2026-09-22 15:12:52 +03:00
Lauri Ojansivu acc0b37a1a Record browser verification on Meteor localhost origin 2026-09-22 15:00:25 +03:00
Lauri Ojansivu 95f0e045a5 Keep Docker browser tests on Meteor localhost origin 2026-09-22 14:59:15 +03:00
Lauri Ojansivu b204dc409d Document browser test fixes in upcoming release 2026-09-22 14:38:38 +03:00
Lauri Ojansivu 5e7577e3df Stabilize cross-browser test navigation and clipboard checks 2026-09-22 14:38:20 +03:00
Lauri Ojansivu 196c56769b Document separate macOS app packages in upcoming release 2026-09-22 10:10:37 +03:00
Lauri Ojansivu b9ae16a443 Package separate macOS apps for Apple Silicon and Intel 2026-09-22 10:10:12 +03:00
Lauri Ojansivu 37a1d3e204 Document macOS test and release fixes 2026-09-22 09:47:13 +03:00
Lauri Ojansivu ced5263a47 Repair macOS test and release workflow regressions 2026-09-22 09:46:48 +03:00
Lauri Ojansivu 84414711b7 Document Node.js 26 and npm 12 upgrade 2026-09-22 01:02:51 +03:00
Lauri Ojansivu 9b213cdf48 Update WeKan runtime and build guidance to Node.js 26 2026-09-22 01:01:14 +03:00
Lauri Ojansivu 3e1865b3dd Upgraded to Meteor 3.6-beta.1 .
Thanks to Meteor developers !
2026-09-22 00:15:20 +03:00
github-actions[bot] 254f4c9d44 Bump versions for v11.90 2026-09-20 23:32:05 +00:00
Lauri Ojansivu 0eada96a2b Merge pull request #6710 from wekan/copilot/update-changelog-upcoming
Align CHANGELOG Upcoming section with AGENTS.md release-note structure
2026-09-21 02:29:41 +03:00
copilot-swe-agent[bot]andxet7 150b6e0e59 Fix Upcoming changelog to describe workflow fixes
Co-authored-by: xet7 <15545+xet7@users.noreply.github.com>
2026-09-20 23:27:34 +00:00
copilot-swe-agent[bot]andxet7 2232885bcd Update Upcoming changelog notes format
Co-authored-by: xet7 <15545+xet7@users.noreply.github.com>
2026-09-20 23:21:38 +00:00
copilot-swe-agent[bot]andxet7 ef4c8a62cd Refine Upcoming subsection wording
Co-authored-by: xet7 <15545+xet7@users.noreply.github.com>
2026-09-20 23:19:19 +00:00
copilot-swe-agent[bot]andxet7 da420d2dd3 Add Upcoming section to changelog
Co-authored-by: xet7 <15545+xet7@users.noreply.github.com>
2026-09-20 23:18:39 +00:00
Lauri Ojansivu db2c782aec Merge pull request #6709 from wekan/copilot/fix-snap-variants-job
Fix snap-variants release job upload helper path
2026-09-21 02:14:15 +03:00
copilot-swe-agent[bot]andxet7 47e007b1b1 Fix snap-variants upload path
Co-authored-by: xet7 <15545+xet7@users.noreply.github.com>
2026-09-20 23:10:53 +00:00
copilot-swe-agent[bot] 847f85a5eb Initial plan 2026-09-20 23:08:33 +00:00
github-actions[bot] 9c1a5a3dcb Bump versions for v11.89 2026-09-20 20:53:06 +00:00
Lauri Ojansivu d1150280fd Prepare v11.89 release 2026-09-20 23:51:26 +03:00
Lauri Ojansivu 66ba7fde03 Document upcoming Snap Store upload retry fix 2026-09-20 23:51:05 +03:00
Lauri Ojansivu 986516e8ed Merge pull request #6708 from wekan/copilot/fix-snap-store-upload-failures
Retry transient Snap Store 500 upload failures across all snap publish workflows
2026-09-20 23:47:32 +03:00
copilot-swe-agent[bot]andxet7 62cccae192 Unify snap upload retries for transient store 500 errors
Co-authored-by: xet7 <15545+xet7@users.noreply.github.com>
2026-09-20 20:43:18 +00:00
copilot-swe-agent[bot]andxet7 ef5ccf3fb0 Retry Snap Store HTTP 500 upload failures
Co-authored-by: xet7 <15545+xet7@users.noreply.github.com>
2026-09-20 20:35:40 +00:00
copilot-swe-agent[bot] 0fb4408c57 Initial plan 2026-09-20 20:30:35 +00:00
github-actions[bot] a44adf6b8e Bump versions for v11.88 2026-09-20 18:18:43 +00:00
Lauri Ojansivu 452331c943 Prepare v11.88 release 2026-09-20 21:17:10 +03:00
Lauri Ojansivu 073fb8469a Document MIME detection across server platforms
Record the shared native/portable detector, platform packaging, focused regression coverage and unverified native builds.

Thanks to xet7 !
2026-09-20 21:07:17 +03:00
Lauri Ojansivu a990e7f202 Provide full MIME detection across server platforms
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 !
2026-09-20 21:06:30 +03:00
Lauri Ojansivu e5e38d881f Merge remote-tracking branch 'origin/main' 2026-09-20 20:46:20 +03:00
Lauri Ojansivu de7948b4e9 Document administrator file status and recovery checks
Thanks to xet7.
2026-09-20 19:36:08 +03:00
Lauri Ojansivu 1f5cb0d134 Add read-only file status checks to Admin Panel Problems
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.
2026-09-20 19:35:16 +03:00
Lauri Ojansivu a35f1cab3f Document production attachment dependency and MIME fixes
Thanks to xet7.
2026-09-20 19:05:18 +03:00
Lauri Ojansivu 9e1cf4c35b Resolve document and image dependencies from the release npm tree
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.
2026-09-20 19:04:58 +03:00
Lauri Ojansivu 1760601457 Merge pull request #6707 from wekan/dependabot/github_actions/docker/build-push-action-7.4.0
Bump docker/build-push-action from 7.3.0 to 7.4.0
2026-09-20 13:18:18 +03:00
Lauri Ojansivu b6fcb6a3d3 Updated translations. 2026-09-20 12:53:04 +03:00
Lauri Ojansivu 3a339e1975 Document development startup and attachment fixture fixes
Thanks to xet7.
2026-09-20 12:26:22 +03:00
Lauri Ojansivu 721805b800 Fix source development startup warnings and browser fixture cleanup
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.
2026-09-20 12:25:56 +03:00
Lauri Ojansivu 290aeae38b Document translation pull repairs and safeguards
Thanks to xet7 !
2026-09-20 11:43:09 +03:00
Lauri Ojansivu 3e38abc0d6 Reject recurring wrong-language translations during Transifex pulls
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 !
2026-09-20 11:42:30 +03:00
Lauri Ojansivu 62db6d74d1 Merge remote-tracking branch 'origin/main' 2026-09-20 11:16:36 +03:00
Lauri Ojansivu 2b94d87dcc Document source development server and verified browser regressions
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 !
2026-09-20 05:38:05 +03:00
Lauri Ojansivu b104edeef1 Add source-loaded development server and sequential EVERYTHING testing
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 !
2026-09-20 05:37:00 +03:00
Lauri Ojansivu 970ac9dc5f Tolerate partial user profiles when closing cards
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 !
2026-09-20 05:06:28 +03:00
Lauri Ojansivu fc0c3c815b Exercise serial browser checks across all supported engines
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 !
2026-09-20 04:54:19 +03:00
Lauri Ojansivu f50b4786fe Wait for authenticated controls in report and mobile regressions
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 !
2026-09-20 01:58:42 +03:00
Lauri Ojansivu 4c40bbf9f5 Filter document keyboard events against the focused control
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 !
2026-09-20 01:51:22 +03:00
Lauri Ojansivu ef381207cc Wait for ready board views in template and pagination tests
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 !
2026-09-20 01:15:14 +03:00
Lauri Ojansivu 8e9093154e Wait for card fields after document-ready reloads
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 !
2026-09-20 00:46:27 +03:00
Lauri Ojansivu 0a1ad00b82 Wait for voting controls instead of idle Meteor connections
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 !
2026-09-20 00:41:35 +03:00
Lauri Ojansivu e3273cd2b5 Require the selected label badge and wait for usable date controls
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 !
2026-09-20 00:31:20 +03:00
Lauri Ojansivu 24629d1752 Wait for rendered state in layout and stability regressions
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.
2026-09-20 00:23:45 +03:00
Lauri Ojansivu a171ac0cb5 Restore protected initial URLs after cookie login
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.
2026-09-20 00:14:29 +03:00
Lauri Ojansivu 6d9a3a95b1 Show unread notification alerts before opening the drawer
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.
2026-09-20 00:03:51 +03:00
Lauri Ojansivu 01e985a6dd Verify keyboard-accessible password visibility controls
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.
2026-09-19 23:48:36 +03:00
Lauri Ojansivu 53b112c25f Wait for browser controls and fail when the test server is unavailable
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.
2026-09-19 23:45:21 +03:00
dependabot[bot] 2282789661 Bump docker/build-push-action from 7.3.0 to 7.4.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 7.3.0 to 7.4.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/53b7df96c91f9c12dcc8a07bcb9ccacbed38856a...c3c9e263c25d99ce0380d002d59b67737d91b0dc)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-version: 7.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-19 20:33:56 +00:00
Lauri Ojansivu c063877462 Select card destinations from ready subscription documents
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.
2026-09-19 23:31:18 +03:00
Lauri Ojansivu cbc6c20ba8 Measure delayed headers after Blaze renders them
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.
2026-09-19 23:23:12 +03:00
github-actions[bot] 289ff9fb17 Bump versions for v11.87 2026-09-19 16:23:58 +00:00
Lauri Ojansivu 6bfceb80d6 Prepare v11.87 release 2026-09-19 19:22:24 +03:00
Lauri Ojansivu d0d9195c1c Document notification delivery verification for #6658. 2026-09-19 16:07:36 +03:00
Lauri Ojansivu fd238d34c3 Verify muted-board fixes through actual SMTP delivery.
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,
2026-09-19 16:07:09 +03:00
Lauri Ojansivu c6763f496c Document clean task board features and complete regression checks. 2026-09-19 15:59:41 +03:00
Lauri Ojansivu 16b1b307fc Add cleaner task board presentation and date-only formats.
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 !
2026-09-19 15:56:01 +03:00
Lauri Ojansivu e13fc2028a Document retired editor removal in Upcoming. 2026-09-19 14:33:52 +03:00
Lauri Ojansivu 5ed9fc944a Remove obsolete Summernote integration and editor configuration.
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 !
2026-09-19 14:32:29 +03:00
Lauri Ojansivu 43b0a8de1e Document audited usability fixes and issue regressions in Upcoming. 2026-09-19 14:02:16 +03:00
Lauri Ojansivu 896f1222bd Implement audited board usability and accessibility fixes.
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 !
2026-09-19 14:00:48 +03:00
Lauri Ojansivu 684411f139 Keep only the English proposed-fix audit. 2026-09-19 13:59:21 +03:00
Lauri Ojansivu 193c799539 Restore visible, selectable comment mention suggestions.
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.
2026-09-19 13:26:08 +03:00
Lauri Ojansivu 337f601852 Restore card dragging after expanding collapsed lists.
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.
2026-09-19 13:26:08 +03:00
Lauri Ojansivu 0d9744bb8d Add Finnish translation of the proposed-fix audit.
Thanks to xet7 !
2026-09-19 13:26:08 +03:00
Lauri Ojansivu 4ec273068e Audit September 18 fix proposals against source and browser behavior. 2026-09-19 12:37:52 +03:00
Lauri Ojansivu 2dbf9c7f39 Clean up spacing in September 18 fixes report. 2026-09-19 12:23:34 +03:00
Lauri Ojansivu e693fe5212 Document Launchpad build recovery fixes and verification
Thanks to xet7 !
2026-09-18 20:09:31 +03:00
Lauri Ojansivu 29bd491e85 Fix Launchpad recovery, ref indexing and artifact downloads
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 !
2026-09-18 20:08:50 +03:00
github-actions[bot] e1e64e92b4 Bump versions for v11.86 2026-09-18 04:39:23 +00:00
Lauri Ojansivu 566190a97e Prepare v11.86 release 2026-09-18 07:37:51 +03:00
Lauri Ojansivu 1c3bb8448b Document Snap recovery and attachment verification 2026-09-18 07:36:46 +03:00
Lauri Ojansivu bc5881ff90 Recover interrupted Snap builds and bound release attachments
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 !
2026-09-18 07:36:20 +03:00
github-actions[bot] 1657a96943 Bump versions for v11.85 2026-09-17 15:17:56 +00:00
Lauri Ojansivu ee4eeedaa2 Prepare v11.85 release 2026-09-17 18:16:04 +03:00
Lauri Ojansivu 20b7dd33fa Merge remote-tracking branch 'origin/main' 2026-09-17 18:15:42 +03:00
Lauri Ojansivu 53a23258cf Document the global date format setting and verification 2026-09-17 18:14:28 +03:00
Lauri Ojansivu 46607d4299 Add an admin date format override for everyone
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,
2026-09-17 18:13:20 +03:00
github-actions[bot] 4f5013ec48 Bump versions for v11.84 2026-09-17 14:04:58 +00:00
Lauri Ojansivu e2993617bc Prepare v11.84 release 2026-09-17 17:02:52 +03:00
Lauri Ojansivu f297cd989b Document the My Cards and My Attachments popup fix
Thanks to Mathia2 and xet7 !
2026-09-17 16:33:31 +03:00
Lauri Ojansivu d01b3a3d92 Open the selected card from My Cards and My Attachments
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,
2026-09-17 16:32:53 +03:00
Lauri Ojansivu 4c1bcca5f7 Document verified translation repair and card visibility guard fixes
Thanks to xet7 !
2026-09-17 14:21:01 +03:00
Lauri Ojansivu 5dd0b11f7c Keep translation repairs and card visibility guards aligned with reviewed changes
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 !
2026-09-17 14:20:35 +03:00
Lauri Ojansivu d23e666aec Document verified issue fixes and the remaining login investigation.
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 !
2026-09-17 13:47:31 +03:00
Lauri Ojansivu fd41207c54 Cover LDAP session restoration around large directory changes.
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,
2026-09-17 13:44:10 +03:00
Lauri Ojansivu 783733623e Authorize and persist edits to saved WIP limit groups.
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,
2026-09-17 13:43:01 +03:00
Lauri Ojansivu 762e742b24 Verify muted-board and explicit-list notification delivery.
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,
2026-09-17 13:34:50 +03:00
Lauri Ojansivu 5c9e5045f8 Preserve checklist insert validation while awaiting submission.
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,
2026-09-17 13:34:50 +03:00
Lauri Ojansivu 0a8ee08d56 Submit checklist creation once per user action.
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,
2026-09-17 13:12:32 +03:00
Lauri Ojansivu 87d69358dc Make WIP group list checkboxes visible and editable.
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,
2026-09-17 13:08:06 +03:00
Lauri Ojansivu 5c7f455285 Hide empty card field groups and their separators.
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,
2026-09-17 13:07:01 +03:00
Lauri Ojansivu 03e8a6bf66 Honor scoped notification subscriptions and settings.
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,
2026-09-17 13:05:45 +03:00
Lauri Ojansivu 959f15cbe0 Merge pull request #6697 from AmigaAbattoir/patch-1
fix(docs): images missing in multiple lines to checklist page
2026-09-16 21:52:36 +03:00
Christopher Pollati d87ec3954b fix(docs): images missing in multiple lines to checklist page 2026-09-16 10:26:41 -04:00
github-actions[bot] 97f74ea3b5 Bump versions for v11.83 2026-09-15 23:48:36 +00:00
Lauri Ojansivu 278f7b869a Prepare v11.83 release 2026-09-16 02:47:17 +03:00
Lauri Ojansivu e71e20036c Merge remote-tracking branch 'origin/main' 2026-09-16 02:47:00 +03:00
Lauri Ojansivu 9aeeac51a8 Bring upcoming changelog into release format 2026-09-16 02:38:41 +03:00
Lauri Ojansivu 522a7e88e8 Document custom logo loading and uploads in upcoming changelog 2026-09-16 02:26:43 +03:00
Lauri Ojansivu 593cab5911 Load configured logos without stock logo flash and allow uploads 2026-09-16 02:26:25 +03:00
Lauri Ojansivu a4eda40c89 Document live-only mirror links in upcoming changelog 2026-09-16 02:07:37 +03:00
Lauri Ojansivu f7da598ad2 Stop using archive.org for mirror linked files 2026-09-16 02:07:22 +03:00
github-actions[bot] f32a0f7e10 Bump versions for v11.82 2026-09-15 22:40:21 +00:00
Lauri Ojansivu e478ce7309 Prepare v11.82 release 2026-09-16 01:38:35 +03:00
Lauri Ojansivu f60df9b0be Merge remote-tracking branch 'origin/main' 2026-09-16 01:38:07 +03:00
Lauri Ojansivu b68dd01893 Document release preflight and keep changelog checks current 2026-09-16 01:37:35 +03:00
Lauri Ojansivu 7489120eb9 Validate translation languages before release tagging 2026-09-16 01:35:55 +03:00
github-actions[bot] f238c02af7 Bump versions for v11.81 2026-09-15 22:23:51 +00:00
Lauri Ojansivu 3ecc62c960 Prepare v11.81 release 2026-09-16 01:22:26 +03:00
Lauri Ojansivu 5e951845eb Update Upcoming WeKan changelog for recent fixes 2026-09-16 01:17:08 +03:00
Lauri Ojansivu 3865c3fdea Avoid incomplete escaping in Veps sync test 2026-09-16 01:10:05 +03:00
Lauri Ojansivu 8acf5d947d Preserve PR 6695 human translations across pull and push 2026-09-16 01:07:00 +03:00
Lauri Ojansivu c399aeeee6 Protect PR 6695 human translations from machine fills 2026-09-16 01:04:06 +03:00
Lauri Ojansivu 2078c21819 Merge pull request #6695 from l10n-tw/main
Replace zh-Hant and zh-TW translations with Transifex ones
2026-09-16 01:01:44 +03:00
Lauri Ojansivu 25ed0c3067 Keep local Docker build available during Quay outages 2026-09-16 00:58:35 +03:00
Lauri Ojansivu 0e962bba3f Record interrupted translation audit status 2026-09-16 00:54:14 +03:00
Lauri Ojansivu 99570e213f Serve Admin Panel assetlinks at well-known URL 2026-09-16 00:51:35 +03:00
Lauri Ojansivu 1cf93f7e52 Distinguish native Tamazight card and list URL labels 2026-09-15 15:54:57 +03:00
Lauri Ojansivu bfac55c30c Record dated board and card translation audit progress 2026-09-15 15:52:25 +03:00
Lauri Ojansivu 18a11d1210 Replace Arabic and French Tamazight board and card labels 2026-09-15 15:51:48 +03:00
Lauri Ojansivu 77d574a627 Record dated Tamazight version-check audit progress 2026-09-15 15:49:32 +03:00
Lauri Ojansivu ff5a286b53 Replace mixed Tamazight version-check messages 2026-09-15 15:48:22 +03:00
Lauri Ojansivu cf14bd7db9 Record dated Tamazight version terminology progress 2026-09-15 15:46:44 +03:00
Lauri Ojansivu 413b4ef405 Use native Tamazight version noun in Admin Panel 2026-09-15 15:46:05 +03:00
Lauri Ojansivu 7da3334c47 Record dated Tamazight shared-label repair progress 2026-09-15 15:42:18 +03:00
Lauri Ojansivu 63da3d3c97 Reuse native Tamazight labels in shared UI controls 2026-09-15 15:41:26 +03:00
Lauri Ojansivu 1cf705484e Record Tamazight popup audit progress 2026-09-15 15:28:59 +03:00
Lauri Ojansivu e11a2654c7 Align Arabic Tamazight popup labels with native controls 2026-09-15 15:27:09 +03:00
Lauri Ojansivu 1405047ba7 Record Tamazight noun audit progress and source evidence 2026-09-15 15:24:39 +03:00
Lauri Ojansivu 2b22dd0bef Replace Arabic Tamazight common nouns with native labels 2026-09-15 15:23:19 +03:00
Lauri Ojansivu 3447011b4d Record successful sequential EVERYTHING verification 2026-09-15 15:17:51 +03:00
Lauri Ojansivu 7a37811883 Record browser matrix and Firefox avatar fixture repair 2026-09-15 13:57:45 +03:00
Lauri Ojansivu 66c5b85c30 Use a valid PNG in legacy avatar browser coverage 2026-09-15 13:57:26 +03:00
Lauri Ojansivu 7b5dd6549d Document sequential board title viewer coverage 2026-09-15 12:59:21 +03:00
Lauri Ojansivu 929326ba22 Exercise board title viewers through visible controls
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.
2026-09-15 12:58:07 +03:00
Lauri Ojansivu 56f04dcab7 Guard external link autolink sync against repeated renders
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.
2026-09-15 12:20:06 +03:00
Lauri Ojansivu 128e482d7a Document browser and markdown repairs in Upcoming release 2026-09-15 12:12:08 +03:00
Lauri Ojansivu fb66fa95cf Repair browser test flows and Meteor markdown package exports
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.
2026-09-15 12:10:40 +03:00
Lauri Ojansivu 0ebfe1d775 Record security reporting and node regression repairs 2026-09-15 10:36:01 +03:00
Lauri Ojansivu c4c6e34ec4 Repair node regressions and align security problem names 2026-09-15 10:35:31 +03:00
Lauri Ojansivu 9b49eb1c43 Document Docker outage handling and repair language test harness 2026-09-15 10:16:14 +03:00
Lauri Ojansivu e6685eb0b4 Keep Docker publication available during Quay read-only outages 2026-09-15 10:12:39 +03:00
Lauri Ojansivu 0134b39520 Record Tamazight popup title audit progress 2026-09-15 10:12:19 +03:00
Lauri Ojansivu 79e5a93b42 Repair Tamazight common popup titles 2026-09-15 10:09:27 +03:00
Lauri Ojansivu 0b7606194e Record Tamazight Unset context audit progress 2026-09-15 10:04:49 +03:00
Lauri Ojansivu f0ceb8d72b Separate translated removal actions from Unset status 2026-09-15 10:04:08 +03:00
Lauri Ojansivu 0b2cc01e6f Record Tamazight board popup audit progress 2026-09-15 09:58:53 +03:00
Lauri Ojansivu 87c0495710 Repair Tamazight board and color popup titles 2026-09-15 09:58:15 +03:00
Lauri Ojansivu 0539ac8a23 Merge remote-tracking branch 'origin/main' 2026-09-15 09:55:38 +03:00
Lauri Ojansivu 6de53fb0c1 Record Tamazight board background audit progress 2026-09-15 09:55:12 +03:00
Lauri Ojansivu 79d58098f4 Repair Tamazight board background controls 2026-09-15 09:54:38 +03:00
Lauri Ojansivu 8922a87f2a Record Tamazight activity audit progress 2026-09-15 09:52:17 +03:00
Lauri Ojansivu ada7e35333 Repair Tamazight activity messages using UI meanings 2026-09-15 09:51:39 +03:00
Lauri Ojansivu 1990e60396 Record Tamazight admin status audit progress 2026-09-15 09:49:06 +03:00
Lauri Ojansivu f10daf2ae9 Repair Tamazight admin activity status labels 2026-09-15 09:48:29 +03:00
Lauri Ojansivu 987c5c22b5 Record Tamazight filter and sort audit progress 2026-09-15 09:47:07 +03:00
Lauri Ojansivu 65c6674196 Repair Tamazight filter and sort control labels 2026-09-15 09:46:20 +03:00
Lauri Ojansivu a58c572961 Record Tamazight creator-label audit progress 2026-09-15 09:44:15 +03:00
Lauri Ojansivu bea96680ee Repair Tamazight creator labels in filters and minicards 2026-09-15 09:43:31 +03:00
Lauri Ojansivu f30c32e897 Record Tamazight search predicate audit progress 2026-09-15 09:41:33 +03:00
Lauri Ojansivu 32c2d95756 Repair Tamazight search predicates and protect syntax keywords 2026-09-15 09:38:45 +03:00
Lauri Ojansivu fc2a8da2c8 Record Tamazight search syntax audit progress 2026-09-15 09:32:43 +03:00
Lauri Ojansivu c365e2cf6a Repair Tamazight search operator names and aliases 2026-09-15 09:31:43 +03:00
Lauri Ojansivu 278ca10a0f Record Tamazight board label repairs and Arabic-script queue 2026-09-15 09:27:31 +03:00
Lauri Ojansivu d1c4a7290a Replace Arabic and French Tamazight board labels 2026-09-15 09:26:37 +03:00
Lauri Ojansivu f851f409d7 Record Tamazight sky and metal-color audit progress 2026-09-15 09:23:34 +03:00
Lauri Ojansivu e114ffde89 Replace Tamazight sky and metal-color seeds 2026-09-15 09:22:50 +03:00
Lauri Ojansivu 5fcd43df39 Record Tamazight color repairs and remaining plural review 2026-09-15 09:20:42 +03:00
Lauri Ojansivu 06678678d0 Replace Arabic and French Tamazight color labels 2026-09-15 09:19:58 +03:00
Lauri Ojansivu 3ed7dd3761 Record Tamazight email-address repair and plural review 2026-09-15 09:14:58 +03:00
Lauri Ojansivu ce50929661 Replace French Tamazight email-address placeholder 2026-09-15 09:14:13 +03:00
Lauri Ojansivu a43727f0bc Record Tigre slate-blue review and reconcile overlap counts 2026-09-15 09:10:49 +03:00
Lauri Ojansivu 6f14c9a8c6 Repair Tigre slate-blue component 2026-09-15 09:09:19 +03:00
Lauri Ojansivu 59a7261e33 Record Tigre dark-green audit progress 2026-09-15 09:06:57 +03:00
Lauri Ojansivu de0cc0ce45 Repair copied Tigre dark-green translation 2026-09-15 09:05:50 +03:00
Lauri Ojansivu 10fff07af3 Record dated Tigre transport corpus audit 2026-09-15 09:00:19 +03:00
Jeff Huang 460263f21b Replace zh-Hant and zh-TW translations with Transifex ones 2026-09-15 14:00:08 +08:00
Lauri Ojansivu ae76ba79d0 Use corpus Tigre noun for DDP transport 2026-09-15 08:58:45 +03:00
Lauri Ojansivu 23b77ed14a Reconcile translation audit summary after width repairs 2026-09-15 08:54:31 +03:00
Lauri Ojansivu f4097bfda1 Record dated final width-rule translation audit 2026-09-15 08:53:36 +03:00
Lauri Ojansivu 31a238d91b Correct Cherokee and Wolaytta list-width bounds 2026-09-15 08:52:54 +03:00
Lauri Ojansivu 4ac8c5d129 Record dated Xitsonga translation audit 2026-09-15 08:49:12 +03:00
Lauri Ojansivu 21319c523d Replace corrupt Tsonga list-width seeds 2026-09-15 08:48:42 +03:00
Lauri Ojansivu c95017d560 Record dated Aymara Quechua translation audit 2026-09-15 08:47:12 +03:00
Lauri Ojansivu 83c8d0c2bb Repair Aymara and Quechua list-width strings 2026-09-15 08:46:36 +03:00
Lauri Ojansivu 04df435baf Record dated Hawaiian Klingon Inuktitut audit 2026-09-15 08:43:38 +03:00
Lauri Ojansivu c18780d5bd Correct three more native list-width bounds 2026-09-15 08:43:08 +03:00
Lauri Ojansivu 4e67398440 Record dated three-locale width repair audit 2026-09-15 08:41:11 +03:00
Lauri Ojansivu bb2d2dfebe Correct three native list-width minimum messages 2026-09-15 08:40:38 +03:00
Lauri Ojansivu 0bd8f32316 Record dated Serbian and regional translation audit progress 2026-09-15 08:35:55 +03:00
Lauri Ojansivu beddec7cb9 Repair Serbian list-width controls and four locale rules 2026-09-15 08:35:09 +03:00
Lauri Ojansivu 77cf4af47e Record dated wrong-language translation audit progress 2026-09-15 08:31:00 +03:00
Lauri Ojansivu 3eaeac9e7e Repair ten wrong-language and obsolete list-width values 2026-09-15 08:29:49 +03:00
Lauri Ojansivu e855bb7ede Record dated native-minimum translation audit progress 2026-09-15 08:25:37 +03:00
Lauri Ojansivu 92ea2a0f0c Repair ten native list-width minimum translations 2026-09-15 08:25:01 +03:00
Lauri Ojansivu 91555657e2 Record dated ten-locale translation audit progress 2026-09-15 08:21:53 +03:00
Lauri Ojansivu 9c1388a496 Repair ten native and mixed-seed list-width values 2026-09-15 08:21:00 +03:00
Lauri Ojansivu 376ecf3043 Record dated nine-locale translation audit progress 2026-09-15 08:18:23 +03:00
Lauri Ojansivu 3bf6a4c821 Repair nine African and Pacific list-width translations 2026-09-15 08:17:46 +03:00
Lauri Ojansivu bf18a5b737 Record dated list-width audit progress for twelve locales 2026-09-15 08:15:04 +03:00
Lauri Ojansivu 74e6deabe8 Repair twelve African, Kurdish and Yiddish list-width translations 2026-09-15 08:14:26 +03:00
Lauri Ojansivu e20321100b Record Asian-script list-width audit progress on 2026-09-15 2026-09-15 08:08:37 +03:00
Lauri Ojansivu 8cc659ac92 Repair 24 Asian list-width locale values and progress gates 2026-09-15 08:07:38 +03:00
Lauri Ojansivu 217dd1e3df Record Romance and Celtic audit progress on 2026-09-15 2026-09-15 08:02:49 +03:00
Lauri Ojansivu 0fe4ecb480 Repair twenty Romance and Celtic list-width meanings 2026-09-15 08:02:03 +03:00
Lauri Ojansivu d0388a2c0e Record Eurasian list-width audit progress on 2026-09-15 2026-09-15 07:57:31 +03:00
Lauri Ojansivu 6d94f4edb4 Repair 28 locale list-width rules and update regression gates 2026-09-15 07:56:49 +03:00
Lauri Ojansivu 17d3a34054 Record Chinese variant audit progress on 2026-09-15 2026-09-15 07:52:18 +03:00
Lauri Ojansivu 0b0349d34d Repair Chinese variant list-width rules in eleven locales 2026-09-15 07:51:42 +03:00
Lauri Ojansivu 7bf55675f6 Record native lower-bound audit progress on 2026-09-15 2026-09-15 07:48:52 +03:00
Lauri Ojansivu 212a46c078 Repair 33 native list-width rules and align Galician archive check 2026-09-15 07:48:17 +03:00
Lauri Ojansivu 0fdeaf7994 Record multilingual list-width audit progress on 2026-09-15 2026-09-15 07:44:58 +03:00
Lauri Ojansivu d6e6c558d6 Repair 22 multilingual list-width validation translations 2026-09-15 07:44:00 +03:00
Lauri Ojansivu 3a6463541c Record German and Romance list-width translation repairs 2026-09-15 07:38:28 +03:00
Lauri Ojansivu e6895b3dee Repair Romance and German list-width validation translations 2026-09-15 07:37:31 +03:00
Lauri Ojansivu 49a0654bd1 Document Persian-digit list-width repairs 2026-09-15 07:35:35 +03:00
Lauri Ojansivu 196bc49df9 Repair Persian-digit list-width messages 2026-09-15 07:34:12 +03:00
Lauri Ojansivu c249bacaa2 Record list-width source mismatch and locale repair queue 2026-09-15 07:32:39 +03:00
Lauri Ojansivu 68d679c6c7 Align list-width validation and source translations with 200px minimum 2026-09-15 07:30:40 +03:00
Lauri Ojansivu 8bf19dada2 Document Tigre Trello and S3 plural repair 2026-09-15 07:23:24 +03:00
Lauri Ojansivu 6909fb85e7 Repair Tigre Trello key terminology and S3 file plural 2026-09-15 07:22:09 +03:00
Lauri Ojansivu 99e0121b0e Document Tigre PDF preview translation review 2026-09-15 07:17:34 +03:00
Lauri Ojansivu 78f2c9bf78 Repair Tigre PDF preview warning copied from Tigrinya 2026-09-15 07:16:11 +03:00
Lauri Ojansivu e24a4fe717 Document Tigre authentication error review 2026-09-15 07:14:24 +03:00
Lauri Ojansivu 36c2148ecb Repair Tigre authentication error copied from Tigrinya 2026-09-15 07:12:31 +03:00
Lauri Ojansivu 7030814546 Record Tigre S3 translation audit progress 2026-09-15 07:10:05 +03:00
Lauri Ojansivu 970d9e664b Fill Tigre S3 settings English placeholders 2026-09-15 07:08:17 +03:00
Lauri Ojansivu 3d8b41be8c Document Tamazight due-reminder activity repair 2026-09-15 07:04:46 +03:00
Lauri Ojansivu 780a75a2bb Repair French Tamazight due-reminder activity 2026-09-15 07:04:00 +03:00
Lauri Ojansivu d140ac347f Document corpus-attested Tigre plural follow-up 2026-09-15 06:59:29 +03:00
Lauri Ojansivu 5d53aa9904 Correct provisional Tigre plurals using corpus evidence 2026-09-15 06:58:48 +03:00
Lauri Ojansivu 95a3a4baff Document Tigre Star and Break repairs 2026-09-15 06:54:02 +03:00
Lauri Ojansivu 009d7f8329 Repair Tigre star and break terms and refresh reviewed tests 2026-09-15 06:53:22 +03:00
Lauri Ojansivu f4dd67eb3b Document Tigre Endpoint meaning repair 2026-09-15 06:48:18 +03:00
Lauri Ojansivu 6b78c88cb9 Repair Tigre Endpoint terminology 2026-09-15 06:47:45 +03:00
Lauri Ojansivu c450740d78 Document Tigre exact control reviews 2026-09-15 06:46:53 +03:00
Lauri Ojansivu 0eac733cdb Repair corpus-supported Tigre exact controls 2026-09-15 06:45:57 +03:00
Lauri Ojansivu 0f9f13d1d9 Document missed Tigre organizations repair 2026-09-15 06:44:49 +03:00
Lauri Ojansivu 0ef3ca6dd6 Repair missed Tigre organizations control 2026-09-15 06:44:21 +03:00
Lauri Ojansivu 238e331278 Document full Tigre noun family repairs 2026-09-15 06:43:26 +03:00
Lauri Ojansivu 08e7092c36 Repair established Tigre noun families throughout 2026-09-15 06:42:10 +03:00
Lauri Ojansivu d954922c90 Document full Tigre board and card cleanup 2026-09-15 06:38:45 +03:00
Lauri Ojansivu 83546ed248 Repair Tigre board and card terms throughout 2026-09-15 06:37:59 +03:00
Lauri Ojansivu b30134be78 Document Tigre short control repairs 2026-09-15 06:34:26 +03:00
Lauri Ojansivu 40a20207bd Repair Tigre short interface controls 2026-09-15 06:33:45 +03:00
Lauri Ojansivu 4e09c23b21 Document additional Tigre interface repairs 2026-09-15 06:32:18 +03:00
Lauri Ojansivu 088b01587f Repair additional Tigre interface terms 2026-09-15 06:31:27 +03:00
Lauri Ojansivu 828800a301 Document second Tigre ledger reuse pass 2026-09-15 06:29:02 +03:00
Lauri Ojansivu 45a568aea7 Reuse reviewed Tigre terms in remaining controls 2026-09-15 06:28:06 +03:00
Lauri Ojansivu 2fa5a88449 Document Tigre edit and template repairs 2026-09-15 06:25:39 +03:00
Lauri Ojansivu e50072bc32 Repair Tigre edit and template terms 2026-09-15 06:24:01 +03:00
Lauri Ojansivu 876d879596 Document embedded Tigre terminology repairs 2026-09-15 06:22:22 +03:00
Lauri Ojansivu eb1add1f21 Repair embedded Tigre account storage and description terms 2026-09-15 06:21:31 +03:00
Lauri Ojansivu 79b144ae76 Document Tigre account storage and template repairs 2026-09-15 06:19:12 +03:00
Lauri Ojansivu 8296c12a57 Repair Tigre account storage and template terms 2026-09-15 06:17:14 +03:00
Lauri Ojansivu 9173c62599 Document remaining Tigre card repairs 2026-09-15 06:14:14 +03:00
Lauri Ojansivu c73362aae6 Repair remaining Tigre card terms 2026-09-15 06:13:23 +03:00
Lauri Ojansivu b0fd098cea Document Tigre outcome and account repairs 2026-09-15 06:11:46 +03:00
Lauri Ojansivu c91e56a504 Repair Tigre outcome and account terms 2026-09-15 06:10:55 +03:00
Lauri Ojansivu 1ae4305237 Document Tigre date and time repairs 2026-09-15 06:09:49 +03:00
Lauri Ojansivu 0896117b5a Repair Tigre date and time terms 2026-09-15 06:08:58 +03:00
Lauri Ojansivu 4a8323c96f Document Tigre noun repairs 2026-09-15 06:07:42 +03:00
Lauri Ojansivu 242c1f27ba Repair Tigre label organization and team terms 2026-09-15 06:06:53 +03:00
Lauri Ojansivu b658832f59 Document repeated Tigre component repairs 2026-09-15 06:05:39 +03:00
Lauri Ojansivu 8b6c21ff90 Repair repeated Tigre interface components 2026-09-15 06:04:49 +03:00
Lauri Ojansivu 7e49057262 Document Tigre board repairs 2026-09-15 06:02:56 +03:00
Lauri Ojansivu 1196bebaab Repair Tigre board terms 2026-09-15 06:02:01 +03:00
Lauri Ojansivu 79708827c7 Document Tigre file-clause repairs 2026-09-15 06:00:37 +03:00
Lauri Ojansivu 71a15613c7 Repair Tigre file terms in longer clauses 2026-09-15 05:59:48 +03:00
Lauri Ojansivu f81c9ab58f Document Tigre card and file repairs 2026-09-15 05:58:49 +03:00
Lauri Ojansivu 8560f3d7c2 Repair Tigre card and file terms 2026-09-15 05:58:06 +03:00
Lauri Ojansivu b0bef07079 Document shared Tigre plural review 2026-09-15 05:55:59 +03:00
Lauri Ojansivu a69ed23251 Retain attested Tigre account and error plurals 2026-09-15 05:55:23 +03:00
Lauri Ojansivu a56cccfeb3 Document multi-component Tigre repairs 2026-09-15 05:54:08 +03:00
Lauri Ojansivu f64f9c98d3 Repair multi-component Tigre labels 2026-09-15 05:52:49 +03:00
Lauri Ojansivu 4a25311bf7 Document compact Tigre repairs 2026-09-15 05:47:59 +03:00
Lauri Ojansivu fc61397455 Repair compact Tigre terminology 2026-09-15 05:47:17 +03:00
Lauri Ojansivu edb736acf0 Document Tigre name repairs 2026-09-15 05:43:52 +03:00
Lauri Ojansivu 002f8bc7bb Repair Tigre name controls 2026-09-15 05:43:11 +03:00
Lauri Ojansivu fcc461b156 Document Tigre import repairs 2026-09-15 05:41:32 +03:00
Lauri Ojansivu b8bbd8fa39 Repair Tigre import controls 2026-09-15 05:40:52 +03:00
Lauri Ojansivu 69c1145a87 Document reused Tigre terms 2026-09-15 05:39:29 +03:00
Lauri Ojansivu 22615501d1 Reuse reviewed Tigre interface terms 2026-09-15 05:38:51 +03:00
Lauri Ojansivu 46cccccd3a Document Tigre selection repairs 2026-09-15 05:37:13 +03:00
Lauri Ojansivu a6dd320fd2 Repair Tigre selection controls 2026-09-15 05:36:33 +03:00
Lauri Ojansivu d73a200439 Document Tigre date repairs 2026-09-15 05:35:04 +03:00
Lauri Ojansivu a03aa027cb Repair Tigre date controls 2026-09-15 05:33:22 +03:00
Lauri Ojansivu d44beb0228 Document Tigre member compound repairs
Record reused corpus evidence, residual overlap, limitations and regression coverage for seven corrected member controls.\n\nThanks to xet7 !
2026-09-15 05:28:28 +03:00
Lauri Ojansivu 284fcff144 Repair Tigre member compounds
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 !
2026-09-15 05:27:54 +03:00
Lauri Ojansivu d39930eb77 Document ledger-grounded Tigre repairs
Record the reused evidence, residual overlap, limitations and regression coverage for 17 corrected Tigre compounds.\n\nThanks to xet7 !
2026-09-15 05:25:10 +03:00
Lauri Ojansivu 0651f745bc Repair Tigre interface compounds
Replace 17 compact Tigrinya-seeded controls using only independently reviewed Tigre ledger terms. Add exact and former-seed regression coverage.\n\nThanks to xet7 !
2026-09-15 05:24:37 +03:00
Lauri Ojansivu 387e10980e Document Tigre speed and storage repairs
Record corpus and native-interface evidence, residual overlap and regression coverage for four corrected controls.\n\nThanks to xet7 !
2026-09-15 05:21:32 +03:00
Lauri Ojansivu b8ebfc67e3 Repair Tigre speed and storage terms
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 !
2026-09-15 05:20:58 +03:00
Lauri Ojansivu 194f4556aa Document Tigre interface action repairs
Record corpus evidence, residual overlap, limitations and regression coverage for the Font, Invite and permissions controls.\n\nThanks to xet7 !
2026-09-15 05:20:07 +03:00
Lauri Ojansivu e4ae5173fc Repair Tigre interface actions
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 !
2026-09-15 05:19:35 +03:00
Lauri Ojansivu 4a26ff5412 Document Tigre visual repairs
Record corpus evidence, residual overlap, limitations and regression coverage for the repaired Rename and board-background controls.\n\nThanks to xet7 !
2026-09-15 05:17:49 +03:00
Lauri Ojansivu f1b12cc668 Repair Tigre visual controls
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 !
2026-09-15 05:17:15 +03:00
Lauri Ojansivu c0f430b0b3 Document Tigre status repairs
Record the evidence, residual overlap count, limitations and regression coverage for eight repaired Tigre status controls.\n\nThanks to xet7 !
2026-09-15 05:15:49 +03:00
Lauri Ojansivu b4586ba970 Repair Tigre status controls
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 !
2026-09-15 05:15:16 +03:00
Lauri Ojansivu 33300f303e Add Tigre severity repair to changelog
Record the three corrected Severity controls in the upcoming WeKan release.\n\nThanks to xet7 !
2026-09-15 05:13:52 +03:00
Lauri Ojansivu c59789dfb5 Document Tigre severity repairs
Record the contradicted weight sense, replacement evidence, low-confidence compound limitation and residual overlap count.\n\nThanks to xet7 !
2026-09-15 05:13:39 +03:00
Lauri Ojansivu e27abadf67 Repair Tigre severity controls
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 !
2026-09-15 05:13:06 +03:00
Lauri Ojansivu 3d2c249f21 Document Tigre export repairs
Record the corpus evidence, residual overlap count, limitations and regression coverage for the repaired Tigre Export controls.\n\nThanks to xet7 !
2026-09-15 05:12:12 +03:00
Lauri Ojansivu 6d8f830a70 Repair Tigre export controls
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 !
2026-09-15 05:11:36 +03:00
Lauri Ojansivu ee6607dc9d Document Tigre administrative term repairs
Record the evidence, residual overlap counts, test coverage and source commit for the reviewed Tigre administrative and location controls.\n\nThanks to xet7 !
2026-09-15 05:10:30 +03:00
Lauri Ojansivu 9f5f2d1dba Repair Tigre administrative controls
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 !
2026-09-15 05:09:45 +03:00
Lauri Ojansivu fbfb37e272 Document Tigre member terminology correction 2026-09-15 05:06:21 +03:00
Lauri Ojansivu 2bb4b88cb5 Correct Tigre member terminology 2026-09-15 05:05:42 +03:00
Lauri Ojansivu 212232a5c0 Document Tigre interface compound repairs 2026-09-15 05:04:06 +03:00
Lauri Ojansivu 6f25928145 Repair Tigre interface compounds 2026-09-15 05:03:31 +03:00
Lauri Ojansivu eb797932fe Document Tigre operational term repairs 2026-09-15 05:02:14 +03:00
Lauri Ojansivu fa6cbd1666 Retain shared Tigre seconds term 2026-09-15 05:01:34 +03:00
Lauri Ojansivu a268d6167a Repair Tigre operational terms 2026-09-15 05:01:19 +03:00
Lauri Ojansivu 4936e9fc47 Document basic Tigre term repairs 2026-09-15 05:00:07 +03:00
Lauri Ojansivu 62ff72c607 Repair basic Tigre interface terms 2026-09-15 04:59:34 +03:00
Lauri Ojansivu 8c324ff5e9 Document Tigre sense repairs 2026-09-15 04:58:14 +03:00
Lauri Ojansivu 67632637c2 Repair conflicting Tigre interface senses 2026-09-15 04:57:44 +03:00
Lauri Ojansivu c839ae2bf3 Document shared Tigre term review 2026-09-15 04:56:51 +03:00
Lauri Ojansivu b2caad45b7 Retain corpus-backed shared Tigre terms 2026-09-15 04:56:15 +03:00
Lauri Ojansivu 154c3cc31f Document repeated Tigre noun repairs 2026-09-15 04:54:11 +03:00
Lauri Ojansivu f9b716fd61 Repair repeated Tigre interface nouns 2026-09-15 04:53:42 +03:00
Lauri Ojansivu 9b266cc353 Document Tigre Azure path repairs 2026-09-15 04:52:45 +03:00
Lauri Ojansivu 77e08a8f61 Repair Tigre Azure menu paths 2026-09-15 04:52:14 +03:00
Lauri Ojansivu a568dc4208 Document repeated Tigre interface repairs 2026-09-15 04:50:49 +03:00
Lauri Ojansivu 2530126f27 Repair repeated Tigre interface families 2026-09-15 04:50:10 +03:00
Lauri Ojansivu b7b7cd2de8 Document Tigre address and name repairs 2026-09-15 04:48:26 +03:00
Lauri Ojansivu 62956f2819 Repair Tigre address and name labels 2026-09-15 04:47:52 +03:00
Lauri Ojansivu 2fcf2788e5 Document lexical Tigre repairs 2026-09-15 04:47:01 +03:00
Lauri Ojansivu f27cb82ca6 Repair lexical Tigre interface terms 2026-09-15 04:45:56 +03:00
Lauri Ojansivu 7db8afc76c Document completed Veps seed review 2026-09-15 04:42:55 +03:00
Lauri Ojansivu a4ec295ffa Complete Finnish-seeded Veps translation review 2026-09-15 04:42:14 +03:00
Lauri Ojansivu 33d1a89761 Document Veps account and rule repairs 2026-09-15 04:39:52 +03:00
Lauri Ojansivu 4caef872b0 Repair Veps account and rule interface families 2026-09-15 04:39:14 +03:00
Lauri Ojansivu be8c47c26a Document Veps board interface repairs 2026-09-15 04:36:32 +03:00
Lauri Ojansivu a222bad2d7 Repair Veps board interface families 2026-09-15 04:35:53 +03:00
Lauri Ojansivu 8858912ed4 Document lexical Veps repairs 2026-09-15 04:33:33 +03:00
Lauri Ojansivu c67a91a416 Repair lexical Veps interface terms 2026-09-15 04:32:34 +03:00
Lauri Ojansivu 8d02a5d758 Document native-catalogue Veps repairs 2026-09-15 04:31:18 +03:00
Lauri Ojansivu e17bb2b5e3 Repair native-catalogue Veps interface terms 2026-09-15 04:30:06 +03:00
Lauri Ojansivu 3e492107cb Document shared Tigre vocabulary review 2026-09-15 04:27:38 +03:00
Lauri Ojansivu 5b2c5942ef Record corpus-attested shared Tigre terms 2026-09-15 04:27:05 +03:00
Lauri Ojansivu 8db30cf182 Document corpus-backed Tigre interface repairs 2026-09-15 04:25:58 +03:00
Lauri Ojansivu 0e94189604 Repair corpus-backed Tigre interface terms 2026-09-15 04:24:56 +03:00
Lauri Ojansivu 391e7fc811 Document Tigre date vocabulary repairs 2026-09-15 04:22:31 +03:00
Lauri Ojansivu 9ab9215c6b Repair Tigre basic date vocabulary 2026-09-15 04:19:37 +03:00
Lauri Ojansivu e911879b6b Document completion of tracked translation audit 2026-09-15 04:17:44 +03:00
Lauri Ojansivu 2ecd746378 Complete restored Basque rule translation review 2026-09-15 04:16:25 +03:00
Lauri Ojansivu f18a925c26 Translate Aromanian magenta color label 2026-09-15 04:14:38 +03:00
Lauri Ojansivu ee9228ab6d Complete tracked Tamazight migration translations 2026-09-15 04:13:44 +03:00
Lauri Ojansivu a11978016d Repair Tamazight global search guidance 2026-09-15 04:11:42 +03:00
Lauri Ojansivu 36c8afc8ea Repair Tamazight board and import guidance 2026-09-15 04:10:38 +03:00
Lauri Ojansivu 667eb393dd Document Tamazight diagnostic translation repairs 2026-09-15 04:08:50 +03:00
Lauri Ojansivu 3d79d5ca5b Repair Tamazight diagnostics and repository actions 2026-09-15 04:07:33 +03:00
Lauri Ojansivu c9d838170b Document Tamazight accessibility translation repairs 2026-09-15 04:06:17 +03:00
Lauri Ojansivu 7d87955de3 Repair Tamazight accessibility and UI labels 2026-09-15 04:05:00 +03:00
Lauri Ojansivu e0bb7f2ca1 Document Tamazight calendar repairs 2026-09-15 04:01:51 +03:00
Lauri Ojansivu 10aa310033 Translate Tamazight tabular Hijri labels 2026-09-15 04:01:24 +03:00
Lauri Ojansivu 3caf5f6a73 Document completed Inuktitut audit queue 2026-09-15 03:59:31 +03:00
Lauri Ojansivu b5acfdaec3 Complete Inuktitut calendar labels 2026-09-15 03:58:53 +03:00
Lauri Ojansivu 97dc41d076 Document Inuktitut orthography review 2026-09-15 03:57:22 +03:00
Lauri Ojansivu a0eeee9d63 Retain valid Roman Inuktitut translations 2026-09-15 03:56:49 +03:00
Lauri Ojansivu 81f18f4807 Document Tigre translation audit progress 2026-09-15 03:55:55 +03:00
Lauri Ojansivu 88caf17515 Translate Tigre calendar system labels 2026-09-15 03:54:16 +03:00
Lauri Ojansivu 85d994c2fb Document completed Wolaytta tracked audit
Record the final calendar repairs, source commit, updated counts, verification, and remaining low-confidence compounds.

Thanks to xet7 !
2026-09-15 03:49:22 +03:00
Lauri Ojansivu e97f8fb206 Complete Wolaytta calendar labels
Replace ten incomplete English seeds with the attested calendar-noun family while preserving named systems, calculated epochs, and moon-sighting distinctions.

Thanks to xet7 !
2026-09-15 03:48:41 +03:00
Lauri Ojansivu 54f008fc5d Document completed Nahuatl tracked audit
Record the calendar-system repair, source rationale, updated counts, verification, and remaining low-confidence scope.

Thanks to xet7 !
2026-09-15 03:47:22 +03:00
Lauri Ojansivu 56ce505d0c Translate Nahuatl calendar system labels
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 !
2026-09-15 03:46:07 +03:00
Lauri Ojansivu 78fda5345a Document completed Ewe tracked audit
Record the calendar terminology evidence, source commit, updated counts, and remaining low-confidence construction.

Thanks to xet7 !
2026-09-15 03:43:57 +03:00
Lauri Ojansivu 52836b241d Complete Ewe tabular Hijri label
Replace the incomplete English calendar name with an Ewe calculation-and-epoch draft while preserving the distinct astronomical variant.

Thanks to xet7 !
2026-09-15 03:42:46 +03:00
Lauri Ojansivu 38cde52187 Document completed Veps tracked audit
Record the final tracked Veps repair, parser evidence, updated counts, and the remaining low-confidence review scope.

Thanks to xet7 !
2026-09-15 03:40:32 +03:00
Lauri Ojansivu 7bc3b73b05 Translate Veps advanced filter help
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 !
2026-09-15 03:39:52 +03:00
Lauri Ojansivu a229d53471 Document Veps keyboard translation repair
Record the dated source commit, verified behavior, updated audit counts, and remaining low-confidence terminology.

Thanks to xet7 !
2026-09-15 03:38:17 +03:00
Lauri Ojansivu 4d74f7080f Fix Veps keyboard command translations
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 !
2026-09-15 03:36:49 +03:00
Lauri Ojansivu 3830365ecd Document Veps scrollbar translation repair
Record the affected UI scope, native component evidence, focused checks, updated queue, and low-confidence compound limit.\n\nThanks to xet7 !
2026-09-15 03:33:39 +03:00
Lauri Ojansivu b82d5761ed Fix Veps vertical scrollbar translation
Replace the Finnish toggle label with a Veps vertical-scrollbar draft and verify its visible control and affected containers.\n\nThanks to xet7 !
2026-09-15 03:32:56 +03:00
Lauri Ojansivu e8d971489b Document Veps field sum translation repair
Record the numeric-only source context, dictionary evidence, focused checks, updated queue, and remaining low-confidence grammar.\n\nThanks to xet7 !
2026-09-15 03:31:49 +03:00
Lauri Ojansivu 1b35cd8b4f Fix Veps field sum control translation
Replace the Finnish checkbox label with Veps arithmetic-addition and list-top terminology already verified for the numeric total tooltip.\n\nThanks to xet7 !
2026-09-15 03:31:03 +03:00
Lauri Ojansivu 68c82d941c Document Veps accessibility translation repairs
Record the five repaired UI roles, source bindings, descriptive terminology basis, focused checks, and remaining low-confidence review.\n\nThanks to xet7 !
2026-09-15 03:29:21 +03:00
Lauri Ojansivu 09b62ffa40 Fix Veps accessibility translations
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 !
2026-09-15 03:28:29 +03:00
Lauri Ojansivu a31eebdc39 Document Veps card loading translation repairs
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 !
2026-09-15 03:26:07 +03:00
Lauri Ojansivu 8480bee00b Fix Veps card loading translations
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 !
2026-09-15 03:25:01 +03:00
Lauri Ojansivu c4f049e320 Record Veps voting translation repairs
Update the audit, native evidence review, and Upcoming changelog with the verified voting-side repair and its remaining confidence limit.\n\nThanks to xet7 !
2026-09-15 03:19:14 +03:00
Lauri Ojansivu 8a66f4c746 Repair Veps voting-side translations
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 !
2026-09-15 03:18:50 +03:00
Lauri Ojansivu 8061759d2c Record Veps Problems heading repairs
Update the short audit, detailed evidence, Veps review, and Upcoming changelog with the verified native heading evidence.\n\nThanks to xet7 !
2026-09-15 03:16:11 +03:00
Lauri Ojansivu 052937ff0a Repair Veps Problems page headings
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 !
2026-09-15 03:15:49 +03:00
Lauri Ojansivu 3e0c124d4a Record Veps card-number translation repair
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 !
2026-09-15 03:15:07 +03:00
Lauri Ojansivu 21e43e8b56 Repair Veps card-number search translations
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 !
2026-09-15 03:14:23 +03:00
Lauri Ojansivu 832e44c7e9 Record Veps numeric addition repair and primary evidence 2026-09-15 03:11:15 +03:00
Lauri Ojansivu 7c17acd340 Replace wrong-language Veps numeric total description
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.
2026-09-15 03:10:54 +03:00
Lauri Ojansivu 3d47446dfe Record Veps date range repair and native interval evidence 2026-09-15 03:09:58 +03:00
Lauri Ojansivu 046830b355 Replace wrong-language Veps list date range description
Use rendered native time-interval noun; preserve custom date fields marked for list top. Full case and compound grammar remain low confidence.
2026-09-15 03:09:39 +03:00
Lauri Ojansivu 7dcdc054a4 Record Veps severity draft and technical review limits 2026-09-15 03:08:30 +03:00
Lauri Ojansivu 91d0cbf5ed Replace wrong-language Veps event severity label
Use rendered native noun forms in a direct severity-level draft. Technical harshness analogy and full compound remain low confidence and under review.
2026-09-15 03:08:09 +03:00
Lauri Ojansivu 9e5758a508 Verify native Veps abstract-level noun for severity review 2026-09-15 03:07:35 +03:00
Lauri Ojansivu dad7f2ae35 Verify rendered Veps hardness noun and limit severity inference 2026-09-15 03:06:44 +03:00
Lauri Ojansivu 99aeb90cdb Record Veps severity lexical evidence and excluded meanings 2026-09-15 03:06:02 +03:00
Lauri Ojansivu 10f1a4964b Record Veps backup scope repairs and terminology limits 2026-09-15 03:05:19 +03:00
Lauri Ojansivu cfed82e70c Replace wrong-language Veps backup scope text
Preserve organization boards and attachments, shared accounts/settings exclusions and restore ownership restriction. Whole-system paraphrase and full native grammar remain low confidence.
2026-09-15 03:04:59 +03:00
Lauri Ojansivu eb056cf59f Record Veps acknowledgment repairs and open grammar review 2026-09-15 03:04:15 +03:00
Lauri Ojansivu bc8988c9d7 Replace wrong-language Veps problem acknowledgment text
Preserve checked reviewed areas and resetting new-problem counts. Full plural, case and acknowledgment grammar remains low confidence.
2026-09-15 03:03:57 +03:00
Lauri Ojansivu ed2565e9b7 Record Veps CPU repairs and remaining core terminology review 2026-09-15 03:03:14 +03:00
Lauri Ojansivu 9e06803310 Replace wrong-language Veps CPU usage and load labels
Preserve current versus generic usage and average system load. Reuse local Veps terminology; full computing compounds and core vocabulary remain under review.
2026-09-15 03:02:55 +03:00
Lauri Ojansivu f46fb0272e Record Veps loading and status repairs with review limits 2026-09-15 03:02:14 +03:00
Lauri Ojansivu e8826e71a0 Replace wrong-language Veps loading and migration status
Preserve possible login delay, login-required message, loading indicator and CPU condition until background work finishes. Full computing terminology and grammar remain low confidence.
2026-09-15 03:01:55 +03:00
Lauri Ojansivu 4cf2381c66 Record Veps forecast repairs and remaining grammar review 2026-09-15 03:01:03 +03:00
Lauri Ojansivu 201f8d0a41 Replace wrong-language Veps chart forecast messages
Preserve zero remaining, missing recent completions, weekly pace and conditional completion date. Full projection, recency and count grammar remains low confidence.
2026-09-15 03:00:44 +03:00
Lauri Ojansivu b7a903473d Record Veps repair message corrections and grammar limits 2026-09-15 02:59:49 +03:00
Lauri Ojansivu f5d72bae8a Replace wrong-language Veps repair and restore messages
Preserve exact counters, missing-board explanation and automatic-repair limitation. Full count, passive and case grammar remains low confidence.
2026-09-15 02:59:29 +03:00
Lauri Ojansivu 6fd9eb88d3 Record Veps voting repairs and expanded review scope 2026-09-15 02:58:45 +03:00
Lauri Ojansivu 4b2009229c Fix Veps voting and event detail labels
Replace Tshivenda vote-sorting and detail text and Finnish voting heading with Veps vocabulary. Sorting case and full context terminology remain under review.
2026-09-15 02:58:23 +03:00
Lauri Ojansivu 5a62a6b3b1 Record native Veps software-key evidence and title repair 2026-09-15 02:57:43 +03:00
Lauri Ojansivu e722a6c17c Improve Veps synchronization title and software-key wording
Use native MediaWiki software sort-key evidence for the project-key analogy, preserving ID/path alternatives. Replace overlooked Tshivenda popup title. Full compound grammar remains low confidence.
2026-09-15 02:57:22 +03:00
Lauri Ojansivu 1aacb92a3b Record Veps two-factor instruction repairs and uncertainty 2026-09-15 02:56:38 +03:00
Lauri Ojansivu f9d9c454dc Replace wrong-language Veps two-factor setup and login text
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.
2026-09-15 02:56:16 +03:00
Lauri Ojansivu c476aa4a10 Record Veps two-factor control repairs and open instructions 2026-09-15 02:55:29 +03:00
Lauri Ojansivu 7deff5697c Replace wrong-language Veps two-factor controls
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.
2026-09-15 02:55:08 +03:00
Lauri Ojansivu 8e8150478f Record Veps identifier repair and terminology limits 2026-09-15 02:54:25 +03:00
Lauri Ojansivu 29f93a8886 Fix Veps multi-tracker project identifier label
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.
2026-09-15 02:54:03 +03:00
Lauri Ojansivu d84b5bb9be Record Veps sync instruction draft and remaining review 2026-09-15 02:52:37 +03:00
Lauri Ojansivu 25e6eefba0 Replace wrong-language Veps synchronization instructions
Preserve external tracker, background checks every 15 minutes, and the immediate manual action. Full draft grammar and computing loans remain low confidence.
2026-09-15 02:52:16 +03:00
Lauri Ojansivu c37bd8f962 Record Veps inactive sync repair and review limits 2026-09-15 02:51:34 +03:00
Lauri Ojansivu b30fa05a93 Fix Veps inactive synchronization source label
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.
2026-09-15 02:51:14 +03:00
Lauri Ojansivu 11b3061c98 Record Veps never-synced repair and primary native evidence 2026-09-15 02:48:10 +03:00
Lauri Ojansivu 81c17c1960 Fix Veps never-synced state with native adverb 2026-09-15 02:47:47 +03:00
Lauri Ojansivu 7e59bb8b63 Record Veps credential repairs and remaining language review 2026-09-15 02:47:08 +03:00
Lauri Ojansivu c117936edd Fix Veps synchronization credential labels and status messages
Preserve API token/password meaning and set versus not-yet-set state. Full status grammar and credential paraphrase remain low confidence.
2026-09-15 02:46:45 +03:00
Lauri Ojansivu d04457bb37 Record dated Veps optional-field repairs and review limits 2026-09-15 02:46:09 +03:00
Lauri Ojansivu 5d0583ef54 Fix Veps optional-field and synchronization username wording
Preserve the not-required qualification using a direct native-wording draft. Full contextual grammar remains low confidence.
2026-09-15 02:45:44 +03:00
Lauri Ojansivu 7cbef0b3c7 Record Veps source label repair and optional-field review 2026-09-15 02:45:10 +03:00
Lauri Ojansivu 0ca3422a46 Fix wrong-language Veps synchronization source label 2026-09-15 02:44:48 +03:00
Lauri Ojansivu be501c32fa Record Veps synchronization state repairs and remaining grammar 2026-09-15 02:44:14 +03:00
Lauri Ojansivu c379de7d7e Fix six Veps synchronization state and result translations
Preserve pending, success, error and stop meanings and the exact error placeholder. Derived synchronization noun and case grammar remain low confidence.
2026-09-15 02:43:51 +03:00
Lauri Ojansivu e7cecc9c7f Record five Veps synchronization repairs and remaining block 2026-09-15 02:43:12 +03:00
Lauri Ojansivu 93a48d724d Fix five wrong-language Veps synchronization labels
Reuse existing Veps wording and preserve literal project and credential examples. Full assembled synchronization grammar remains under review.
2026-09-15 02:42:49 +03:00
Lauri Ojansivu 7c540c5f5b Record dated Veps rule-state repairs and grammar limits 2026-09-15 02:41:59 +03:00
Lauri Ojansivu 3658f17556 Fix Tshivenda rule-state text in Veps translations
Keep both enable and disable actions and preserve the existing enabled label. Assembled Veps rule-object grammar remains low confidence.
2026-09-15 02:41:37 +03:00
Lauri Ojansivu 4f879334c9 Record Veps rules repair and additional mixed-language findings 2026-09-15 02:40:54 +03:00
Lauri Ojansivu 29bf7aa221 Fix unflagged Finnish rules heading in Veps translation 2026-09-15 02:40:32 +03:00
Lauri Ojansivu 84af30f9b5 Record dated Veps URL scheme repair and remaining review 2026-09-15 02:39:51 +03:00
Lauri Ojansivu f10fe2fa5b Fix Veps automatic URL scheme setting translation
Preserve automatic clickability and one scheme per line. Assembled grammar and singular scheme form remain low confidence.
2026-09-15 02:39:29 +03:00
Lauri Ojansivu be42c5771f Verify Veps button dictionary senses from rendered source 2026-09-15 02:38:40 +03:00
Lauri Ojansivu b60ea7bc12 Correct Veps dictionary search evidence for legacy PDF text 2026-09-15 02:38:09 +03:00
Lauri Ojansivu d0f721b481 Extend Veps shortcut review to untranslated popup title 2026-09-15 02:37:10 +03:00
Lauri Ojansivu b9dae272e7 Record dated resident-memory repair and remaining native review 2026-09-15 02:36:19 +03:00
Lauri Ojansivu ef5a6c5bad Fix Tamazight resident-memory diagnostic label
Use native memory-usage and size wording with the precise RSS acronym. Full computing grammar and native expansion of resident set remain under review.
2026-09-15 02:35:57 +03:00
Lauri Ojansivu d30a2f5737 Correct Tamazight memory review and preserve attested alternatives 2026-09-15 02:35:26 +03:00
Lauri Ojansivu efa6b0eb11 Record dated used-memory translation repair and terminology limits 2026-09-15 02:34:47 +03:00
Lauri Ojansivu 06be232017 Fix Tamazight actual used-memory diagnostic wording
Preserve the V8 used-memory scope. Computing memory adaptation, passive grammar and actual-use paraphrase remain low confidence.
2026-09-15 02:34:24 +03:00
Lauri Ojansivu 9570c3af3f Record dated Tamazight reminder repair and review limits 2026-09-15 02:33:33 +03:00
Lauri Ojansivu a6d77ba0e0 Fix Tamazight first due-reminder activity translation
Preserve named activity placeholders and first-reminder wording. Full deadline compound and possessive grammar remain low confidence.
2026-09-15 02:33:12 +03:00
Lauri Ojansivu 36f33b5304 Record CSV schema translation repair and remaining phrase review 2026-09-15 02:29:30 +03:00
Lauri Ojansivu 52b73cacc5 Repair Tamazight CSV and TSV schema warning 2026-09-15 02:29:06 +03:00
Lauri Ojansivu 3797e952ed Document JSON schema translation repair and remaining import terminology 2026-09-15 02:28:25 +03:00
Lauri Ojansivu ac95ce3aad Repair Tamazight JSON schema error wording 2026-09-15 02:28:02 +03:00
Lauri Ojansivu c3bc95dc3f Record accessibility translation scope and disabled page wording conflict 2026-09-15 02:27:04 +03:00
Lauri Ojansivu 68d7f2d899 Document logo wording repairs and remaining contextual review 2026-09-15 02:26:09 +03:00
Lauri Ojansivu 8d9facf9a8 Repair Tamazight logo height hide and navigation labels 2026-09-15 02:25:47 +03:00
Lauri Ojansivu 0c34382f87 Document logo URL translation repairs and remaining spatial review 2026-09-15 02:24:58 +03:00
Lauri Ojansivu ec1f2cb219 Repair Tamazight top left logo image and link URL labels 2026-09-15 02:24:36 +03:00
Lauri Ojansivu b31065a9d0 Document physical heap translation repair and remaining batch validation 2026-09-15 02:23:33 +03:00
Lauri Ojansivu 0b259c2d3d Repair Tamazight physical heap size diagnostic label 2026-09-15 02:23:10 +03:00
Lauri Ojansivu ddc8e9fcab Document V8 context translation repairs and borrowed qualifier limits 2026-09-15 02:22:35 +03:00
Lauri Ojansivu 0f4fc5d227 Repair Tamazight V8 context count diagnostic wording 2026-09-15 02:22:09 +03:00
Lauri Ojansivu 1951b0417a Document garbage flag translation repair and literal identifier rationale 2026-09-15 02:21:15 +03:00
Lauri Ojansivu 8516ab9a72 Repair Tamazight heap garbage diagnostic flag label 2026-09-15 02:20:52 +03:00
Lauri Ojansivu f194046ec2 Document heap capability translation repairs and review limits 2026-09-15 02:20:17 +03:00
Lauri Ojansivu 0f545fd8a7 Repair Tamazight available and executable heap diagnostic labels 2026-09-15 02:19:55 +03:00
Lauri Ojansivu 2f8b930391 Document malloc diagnostic translation repairs and paraphrase limits 2026-09-15 02:19:12 +03:00
Lauri Ojansivu 6481e8bbd6 Repair Tamazight malloc memory and peak diagnostic labels 2026-09-15 02:18:48 +03:00
Lauri Ojansivu dfbe6056fc Record heap limit translation repair and allocation wording review 2026-09-15 02:18:01 +03:00
Lauri Ojansivu 88add30060 Repair Tamazight heap size limit diagnostic 2026-09-15 02:17:39 +03:00
Lauri Ojansivu 9ab9db9611 Document heap diagnostic translation repairs and remaining metric distinctions 2026-09-15 02:16:51 +03:00
Lauri Ojansivu 0567c1aacc Repair Tamazight total and used heap size diagnostics 2026-09-15 02:16:24 +03:00
Lauri Ojansivu b8bffce9c3 Record account protection explanation repair and contextual limits 2026-09-15 02:15:20 +03:00
Lauri Ojansivu 5211bf3152 Repair Tamazight account protection explanatory text 2026-09-15 02:14:56 +03:00
Lauri Ojansivu 64b716d623 Document account protection translation repairs and grammar limits 2026-09-15 02:14:07 +03:00
Lauri Ojansivu 7c58d6c3df Repair Tamazight brute force settings heading and update confirmation 2026-09-15 02:13:44 +03:00
Lauri Ojansivu 4dad59ba12 Record failed attempts translation draft and remaining contextual review 2026-09-15 02:12:56 +03:00
Lauri Ojansivu bf9a929e13 Repair Tamazight failed attempts label with trial and failure terminology 2026-09-15 02:12:34 +03:00
Lauri Ojansivu b1ba19e837 Record native software evidence for Tamazight attempt wording 2026-09-15 02:11:58 +03:00
Lauri Ojansivu 3cc93cb240 Document locked users translation repair and remaining attempt terminology 2026-09-15 02:10:55 +03:00
Lauri Ojansivu e908ec0a2f Repair Tamazight locked users navigation label 2026-09-15 02:10:36 +03:00
Lauri Ojansivu 41dbd148c2 Document due search translation repair and source cutoff discrepancy 2026-09-15 02:09:46 +03:00
Lauri Ojansivu 64e524f27a Repair Tamazight due date search instruction 2026-09-15 02:09:25 +03:00
Lauri Ojansivu b347233c1b Document Tamazight search date hint repairs and contextual review limits 2026-09-15 02:08:34 +03:00
Lauri Ojansivu 66f2a8feed Repair Tamazight created and modified search date hints 2026-09-15 02:08:12 +03:00
Lauri Ojansivu 87323967b3 Record Tamazight drag handle terminology repair and review limits 2026-09-15 02:07:08 +03:00
Lauri Ojansivu b0ad9320f2 Repair Tamazight desktop drag handle label 2026-09-15 02:06:47 +03:00
Lauri Ojansivu 0f73724fa8 Document SMTP port translation repairs and retained terminology limits 2026-09-15 02:05:50 +03:00
Lauri Ojansivu e1c3720715 Repair Tamazight outgoing SMTP port description 2026-09-15 02:05:27 +03:00
Lauri Ojansivu 8f49df189a Record Tamazight SMTP translation repairs and remaining terminology review 2026-09-15 02:04:36 +03:00
Lauri Ojansivu 11fc595a00 Repair Tamazight SMTP labels and test email subject 2026-09-15 02:04:17 +03:00
Lauri Ojansivu cd895cfef7 Document Tamazight owner heading repair and review limits 2026-09-15 02:03:30 +03:00
Lauri Ojansivu 3da9c1f4ee Repair Tamazight card owner export heading 2026-09-15 02:03:11 +03:00
Lauri Ojansivu 8505afdf9e Document list warning repair and pending Transifex language support 2026-09-15 02:02:22 +03:00
Lauri Ojansivu 0f393c5c8f Repair Tamazight list deletion warning 2026-09-15 01:59:17 +03:00
Lauri Ojansivu f7b7da9c3f Document member removal translation repair and preserved placeholders 2026-09-15 01:58:39 +03:00
Lauri Ojansivu 3fd9413b3f Repair Tamazight member removal confirmation 2026-09-15 01:58:20 +03:00
Lauri Ojansivu a026b27dc5 Document Saudi calendar translation repair and sighting grammar limits 2026-09-15 01:57:35 +03:00
Lauri Ojansivu 103457ada4 Repair Tamazight Saudi sighting calendar label 2026-09-15 01:57:15 +03:00
Lauri Ojansivu 65b0fe0ab4 Record Tamazight tabular calendar qualifier evidence limits 2026-09-15 01:56:37 +03:00
Lauri Ojansivu 2c200ab5b9 Document Dzongkha epoch label repairs and native review limits 2026-09-15 01:55:53 +03:00
Lauri Ojansivu 1a174e357a Repair Dzongkha tabular Hijri calendar epoch labels 2026-09-15 01:55:32 +03:00
Lauri Ojansivu 87835255ae Verify Dzongkha epoch and start entries from rendered source 2026-09-15 01:54:51 +03:00
Lauri Ojansivu 1b10527d1b Verify Dzongkha tabular spelling from rendered dictionary page 2026-09-15 01:54:08 +03:00
Lauri Ojansivu fd0b18431f Verify Dzongkha tabular calendar epoch distinction against current CLDR 2026-09-15 01:52:50 +03:00
Lauri Ojansivu 39daf05c88 Document clipboard gesture translation repair and review limits 2026-09-15 01:52:06 +03:00
Lauri Ojansivu 047c860ea3 Repair Tamazight clipboard image gesture instruction 2026-09-15 01:51:47 +03:00
Lauri Ojansivu 29121d44c8 Record clipboard image gesture meaning for translation repair 2026-09-15 01:51:20 +03:00
Lauri Ojansivu aafcae48fb Document private page translation repair and remaining reviews 2026-09-15 01:50:39 +03:00
Lauri Ojansivu 27dbc30c22 Repair Tamazight private page login guidance 2026-09-15 01:50:21 +03:00
Lauri Ojansivu f2c6e77eb2 Document list dependency translation repair and contextual review limits 2026-09-15 01:49:37 +03:00
Lauri Ojansivu 18e1979477 Repair Tamazight linked card list deletion warning 2026-09-15 01:49:18 +03:00
Lauri Ojansivu 8cbcb52451 Document linked card warning repair and native grammar review 2026-09-15 01:48:45 +03:00
Lauri Ojansivu efdf49b29f Repair Tamazight linked card deletion warning 2026-09-15 01:48:26 +03:00
Lauri Ojansivu 9bd8e04d9f Record linked card deletion dependency direction for translation repair 2026-09-15 01:47:46 +03:00
Lauri Ojansivu 32b46051fa Document permanent attachment translation repair and grammar limits 2026-09-15 01:47:13 +03:00
Lauri Ojansivu ecbe3856d2 Repair Tamazight permanent attachment warning 2026-09-15 01:46:53 +03:00
Lauri Ojansivu 6eda842fea Record search limit grammar and parser distinction for translation review 2026-09-15 01:46:15 +03:00
Lauri Ojansivu 04a4f92b45 Document rule instruction repair and computing matching evidence 2026-09-15 01:45:34 +03:00
Lauri Ojansivu d90707d5dc Repair Tamazight blank rule field instruction 2026-09-15 01:45:13 +03:00
Lauri Ojansivu 0a1ce60ed7 Document mobile mode translation repairs and native review limits 2026-09-15 01:44:32 +03:00
Lauri Ojansivu 5f41f83ca3 Repair Tamazight mobile and desktop mode labels 2026-09-15 01:44:14 +03:00
Lauri Ojansivu 9774b20c12 Exclude misleading matching homographs from Tamazight rule repair 2026-09-15 01:43:40 +03:00
Lauri Ojansivu 2a3c8ad7b2 Record blank rule field wildcard meaning for translation repair 2026-09-15 01:42:56 +03:00
Lauri Ojansivu 0a333ce51a Document card export people translation repair and review limits 2026-09-15 01:42:11 +03:00
Lauri Ojansivu 897c89740d Repair Tamazight card export people label 2026-09-15 01:41:52 +03:00
Lauri Ojansivu 98bbc03fcf Record computing disk space translation evidence and limits 2026-09-15 01:41:15 +03:00
Lauri Ojansivu 343971eb86 Document automatic watching translation repair and audit progress 2026-09-15 01:40:39 +03:00
Lauri Ojansivu d0bf777156 Repair Tamazight automatic board watching instruction 2026-09-15 01:40:20 +03:00
Lauri Ojansivu 9a56d1720b Record imported member empty state translation constraints 2026-09-15 01:39:44 +03:00
Lauri Ojansivu b39e4e0ee2 Document due card translation repairs and pending native review 2026-09-15 01:39:11 +03:00
Lauri Ojansivu 3ce7ed2a04 Repair Tamazight due card empty states 2026-09-15 01:38:51 +03:00
Lauri Ojansivu 1a64d5a1fc Record Tamazight possessive placement constraint for notice acceptance 2026-09-15 01:38:08 +03:00
Lauri Ojansivu 61be887618 Verify generic Tamazight acceptance verb from dictionary source 2026-09-15 01:37:33 +03:00
Lauri Ojansivu f37ba5f581 Record missing ownership in legal notice acceptance translation 2026-09-15 01:36:40 +03:00
Lauri Ojansivu 89185d39ca Document legal notice translation repairs and review limits 2026-09-15 01:36:04 +03:00
Lauri Ojansivu 9baa8f69df Repair Tamazight legal notice labels 2026-09-15 01:35:47 +03:00
Lauri Ojansivu 74d2228fbd Document web manifest translation repairs and remaining review 2026-09-15 01:34:59 +03:00
Lauri Ojansivu 7c1c4623d3 Repair Tamazight custom web manifest labels 2026-09-15 01:34:42 +03:00
Lauri Ojansivu 0d6f145961 Document custom head-tag translation repair and audit progress 2026-09-15 01:34:13 +03:00
Lauri Ojansivu 8362a8a2eb Repair Tamazight custom head tag activation label 2026-09-15 01:33:55 +03:00
Lauri Ojansivu 2722961397 Record Tamazight folder evidence and ZIP import constraints 2026-09-15 01:33:15 +03:00
Lauri Ojansivu 8dee03d542 Record attachment permanence terminology evidence and review limits 2026-09-15 01:32:39 +03:00
Lauri Ojansivu 53a6891d59 Record Tamazight import translation repair and remaining review 2026-09-15 01:31:58 +03:00
Lauri Ojansivu cc2b110ba4 Repair Tamazight CSV and TSV import guidance
Preserve paste action and comma or tab separators; Tab loan and full grammar remain low confidence.

Thanks to xet7 !
2026-09-15 01:29:03 +03:00
Lauri Ojansivu 4065b7c91f Record Tamazight checklist terminology revisions
Update dated audit and Upcoming notes with evidence for the noun and remaining contextual limits.

Thanks to xet7 !
2026-09-15 01:28:24 +03:00
Lauri Ojansivu 5434775ba1 Repair Tamazight checklist verification terminology
Revise 49 prior checklist compounds with attested verification noun, preserving prose and placeholders. Full software compound remains low confidence.

Thanks to xet7 !
2026-09-15 01:27:46 +03:00
Lauri Ojansivu b7837bf05b Record Tamazight mapping repair and check spelling evidence
Update dated audit and Upcoming notes; retain prior checklist compounds for renewed terminology review.

Thanks to xet7 !
2026-09-15 01:26:48 +03:00
Lauri Ojansivu 4a28218359 Repair Tamazight import member mapping label
Use attested check verb distinct from light; mapping compound remains low confidence.

Thanks to xet7 !
2026-09-15 01:26:21 +03:00
Lauri Ojansivu f259be34a4 Record translation constraints for search date bounds
Verify inclusive created/modified lower bounds and keep uncertain quantitative Tamazight wording open.

Thanks to xet7 !
2026-09-15 01:25:25 +03:00
Lauri Ojansivu 47883aa91d Record Tamazight filename warning repair progress
Update dated audit and Upcoming notes with contextual uncertainty and lexical evidence.

Thanks to xet7 !
2026-09-15 01:23:53 +03:00
Lauri Ojansivu 327a35b82f Repair Tamazight invalid filename warning
Preserve conditional rejection and upload or rename cancellation; avoid physical invalidity vocabulary. Complete grammar remains low confidence.

Thanks to xet7 !
2026-09-15 01:23:28 +03:00
Lauri Ojansivu 5704470be8 Record newer Aromanian dictionary search results
Verify Bara search with a positive color entry; retain unresolved magenta without misclassifying missing results as language approval.

Thanks to xet7 !
2026-09-15 01:22:39 +03:00
Lauri Ojansivu 2b60bc6ce0 Record second Aromanian color dictionary review
Inspect Cunia dictionary entries and identify the newer Bara dictionary for unresolved magenta attestation. Preserve existing translation and counts.

Thanks to xet7 !
2026-09-15 01:21:41 +03:00
Lauri Ojansivu 8bc4426f53 Record Tamazight search guidance translation repair
Update dated audit and Upcoming notes with lexical evidence and contextual uncertainty.

Thanks to xet7 !
2026-09-15 01:18:15 +03:00
Lauri Ojansivu 35f74fd042 Repair Tamazight case-insensitive search guidance
Preserve letter-case distinction with an A/a example. Complete computing terminology and grammar remain low confidence.

Thanks to xet7 !
2026-09-15 01:17:41 +03:00
Lauri Ojansivu efe7146186 Record Tamazight watch translation repair progress
Update dated audit and concise Upcoming summary with source evidence and grammar review limits.

Thanks to xet7 !
2026-09-15 01:16:38 +03:00
Lauri Ojansivu 45d2b2b2e7 Repair Tamazight watching label and disabled warning
Preserve administrator action and board/card scope using IRCAM monitoring terminology. Complete grammar remains low confidence.

Thanks to xet7 !
2026-09-15 01:16:03 +03:00
Lauri Ojansivu 5104dbaf43 Record source review of Tamazight JSON schema warning
Identify the invalid watch-type caller and keep unverified format terminology open without changing translation counts.

Thanks to xet7 !
2026-09-15 01:15:18 +03:00
Lauri Ojansivu aed519ac5f Record Tamazight import guidance translation repair
Update dated audit and Upcoming notes with lexical evidence and contextual review limits.

Thanks to xet7 !
2026-09-15 01:14:29 +03:00
Lauri Ojansivu 40f06e1d8d Repair Tamazight import error guidance
Preserve possible successful import despite errors and the All Boards location. Probability paraphrase and complete grammar remain low confidence.

Thanks to xet7 !
2026-09-15 01:14:04 +03:00
Lauri Ojansivu 6ceeace0e7 Record Tamazight last administrator translation repair
Update dated audit, verified counts and Upcoming notes with contextual review limits.

Thanks to xet7 !
2026-09-15 01:13:17 +03:00
Lauri Ojansivu 14af25915c Repair Tamazight last administrator warning
Preserve the requirement for at least one administrator, replacing the wrong permission explanation. Complete grammar remains low confidence.

Thanks to xet7 !
2026-09-15 01:12:51 +03:00
Lauri Ojansivu 7ba4642883 Record Tamazight PDF warning translation repair
Update dated audit and Upcoming notes; retain accessibility and contextual grammar reviews.

Thanks to xet7 !
2026-09-15 01:12:07 +03:00
Lauri Ojansivu 9680e2393e Repair Tamazight PDF preview warning
Retain device capability failure and download alternative. Complete contextual grammar remains low confidence.

Thanks to xet7 !
2026-09-15 01:11:41 +03:00
Lauri Ojansivu 2e50c81154 Record Tamazight shortcut translation repair progress
Update dated audit and Upcoming notes with lexical evidence and contextual uncertainty.

Thanks to xet7 !
2026-09-15 01:10:48 +03:00
Lauri Ojansivu 260258983d Repair Tamazight keyboard shortcut status labels
Preserve current enabled/disabled state and opposite click action. Derived passive and complete grammar remain low confidence.

Thanks to xet7 !
2026-09-15 01:10:23 +03:00
Lauri Ojansivu 94549d762a Record Tamazight label warning repair evidence
Update dated audit progress and Upcoming notes, retaining native grammar review limits.

Thanks to xet7 !
2026-09-15 01:09:24 +03:00
Lauri Ojansivu 4f07f43d81 Repair Tamazight label deletion warning
Retain no undo, removal from all cards and destruction of label history. Complete grammatical composition remains low confidence.

Thanks to xet7 !
2026-09-15 01:09:00 +03:00
Lauri Ojansivu d7f32047fc Record Tamazight deletion warning repair progress
Update dated audit and Upcoming notes; distinguish legacy hard-delete wording from active attachment soft deletion.

Thanks to xet7 !
2026-09-15 01:08:06 +03:00
Lauri Ojansivu 53fba52404 Repair Tamazight Planning Poker deletion warning
Preserve irreversibility and loss of all associated actions. Complete contextual grammar remains low confidence.

Thanks to xet7 !
2026-09-15 01:07:42 +03:00
Lauri Ojansivu 884f040d64 Record Tamazight board action translation repairs
Update dated evidence, audit counts and Upcoming notes with contextual review limits.

Thanks to xet7 !
2026-09-15 01:06:46 +03:00
Lauri Ojansivu 7c6688b63e Repair Tamazight card movement and creation rule labels
Preserve destination and new-card semantics using existing terminology and IRCAM lexical evidence. Complete contextual grammar remains low confidence.

Thanks to xet7 !
2026-09-15 01:06:13 +03:00
Lauri Ojansivu 0245682e3e Record Tamazight checkbox-state repair evidence
Update dated audit, uncertainty limits and Upcoming release notes.

Thanks to xet7 !
2026-09-15 01:05:09 +03:00
github-actions[bot] 7b249fe551 Bump versions for v11.80 2026-09-14 22:04:52 +00:00
Lauri Ojansivu 4e8f1b7dde Repair Tamazight checklist trigger state labels
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 !
2026-09-15 01:04:29 +03:00
Lauri Ojansivu 723ffbd524 Reconcile dated Tamazight assignee repair audit
Record source commit, verified counts and remaining contextual grammar uncertainty.

Thanks to xet7 !
2026-09-15 01:03:39 +03:00
Lauri Ojansivu b58511dbaa Prepare v11.80 release 2026-09-15 01:02:52 +03:00
Lauri Ojansivu ecd273a7d6 Updated ChangeLog. 2026-09-15 01:02:44 +03:00
Lauri Ojansivu e2431f4d96 Updated audit results 2026-09-15 01:02:00 +03:00
Lauri Ojansivu 50b68ca45a Repair Tamazight assignee shortcut hint
Retain add/remove assignment, card scope, 1-9 and board-addition order. Complete contextual grammar remains low confidence.

Thanks to xet7 !
2026-09-15 01:00:15 +03:00
Lauri Ojansivu 02b5fa6daf Record dated selection translation repairs and support evidence
Update local repair counts and distinguish future catalogue support from native wording validation.

Thanks to xet7 !
2026-09-15 00:59:29 +03:00
Lauri Ojansivu 3a090333c5 Repair Tamazight multiselection and label shortcut text
Preserve label add/remove behavior, multiselection adds, and both 1-9 ranges. Reuse existing terminology; complete contextual grammar remains low confidence.

Thanks to xet7 !
2026-09-15 00:58:58 +03:00
Lauri Ojansivu 2fec4e7621 Record dated quick-access translation repair and terminology limits
Reconcile audit progress and preserve unresolved cybersecurity and software terminology review.

Thanks to xet7 !
2026-09-15 00:57:39 +03:00
Lauri Ojansivu 636dae2df1 Repair Tamazight quick-access star-board instruction
Replace Arabic with a Tamazight draft preserving star action and shortcut destination. Use contextual here rather than a physical bar noun. Software adaptation remains low confidence.

Thanks to xet7 !
2026-09-15 00:57:11 +03:00
Lauri Ojansivu c4c5a7496d Document checklist deadlines and multi-selection fixes in Upcoming
Record issue fixes, focused API/authorization checks, passing Chromium regressions and ongoing translation audit status.

Thanks to rmb82, AmigaAbattoir and xet7 !
2026-09-15 00:56:06 +03:00
Lauri Ojansivu 70202a849b Add checklist deadlines and expose checklist item dates in REST
Add optional checklist dueAt with the shared selected-calendar picker and badge. Return checklist and item deadlines from checklist and single-card GETs. Accept validated timezone-qualified ISO deadlines in checklist/item POST and PUT; null clears, omission preserves. Keep existing write permissions and ownership checks. Node regression and Chromium save/clear test pass.

Thanks to rmb82 and xet7 !

Fixes #6693,
2026-09-15 00:54:45 +03:00
Lauri Ojansivu a8226cc607 Use clicked label and member contexts for multi-selection
Read Blaze event data instead of surrounding template data. Chromium regression verifies mixed selections retain added labels and members; unit coverage distinguishes template and event contexts.

Thanks to AmigaAbattoir and xet7 !

Fixes #6694,
2026-09-15 00:54:07 +03:00
Lauri Ojansivu 059c3311de Fix multi-selection label and member popup actions
Correct reversed assign/unassign handlers, isolate bulk label selectors from the sidebar create-label action, stop propagation, await mutations and ignore repeated clicks in a double-click sequence. Behavioral regression verifies action direction and popup wiring.

Thanks to AmigaAbattoir and xet7 !

Fixes #6694,
2026-09-15 00:48:54 +03:00
Lauri Ojansivu c2ea7c6f18 Record Tamazight checklist terminology and audit progress
Document lexical components and continued contextual uncertainty.

Thanks to xet7 !
2026-09-15 00:48:05 +03:00
Lauri Ojansivu cda3ca9042 Align Tamazight checklist mark and unmark actions
Use IRCAM mark/sign terminology, preserving one/all distinctions. Software checkbox adaptation remains low confidence.

Thanks to xet7 !
2026-09-15 00:46:39 +03:00
Lauri Ojansivu 6523cd0955 Record Tamazight update terminology and repository review
Document bounded dictionary evidence, pending terminology and current audit counts.

Thanks to xet7 !
2026-09-15 00:45:27 +03:00
Lauri Ojansivu 52b264894b Repair Tamazight standalone update rule label
Use IRCAM's attested update noun as an action label without claiming an imperative. Contextual suitability remains low confidence.

Thanks to xet7 !
2026-09-15 00:45:04 +03:00
Lauri Ojansivu 00fd88b53f Document dated Tamazight popup warning repairs
Update audit totals and retain full phrase uncertainty.

Thanks to xet7 !
2026-09-15 00:44:24 +03:00
Lauri Ojansivu 7a51038bfb Repair Tamazight card and swimlane deletion popups
Preserve activity-feed removal, distinct reopening/recovery restrictions and no undo. Full contextual grammar remains low confidence.

Thanks to xet7 !
2026-09-15 00:44:01 +03:00
Lauri Ojansivu 37f94e1b25 Record dated Tamazight deletion warning repairs
Reconcile audit counts and preserve contextual grammar uncertainty.

Thanks to xet7 !
2026-09-15 00:43:11 +03:00
Lauri Ojansivu 9e26815db8 Repair Tamazight vote and card deletion notices
Preserve non-undoable deletion and loss of all related activities. Keep vote and card scopes distinct. Full contextual grammar remains low confidence.

Thanks to xet7 !
2026-09-15 00:42:49 +03:00
Lauri Ojansivu ba32c5f5c4 Document dated no-lost-items translation repair
Record lexical evidence, current queue counts and remaining agreement uncertainty.

Thanks to xet7 !
2026-09-15 00:41:56 +03:00
Lauri Ojansivu ab336422a0 Repair Tamazight no-lost-items restoration message
Preserve swimlane, list and card scope and negative restoration result. Full mixed-gender agreement remains low confidence.

Thanks to xet7 !
2026-09-15 00:41:34 +03:00
Lauri Ojansivu 6f531915a2 Record dated rescue-setting translation evidence
Update live audit counts and preserve native grammar uncertainty.

Thanks to xet7 !
2026-09-15 00:40:43 +03:00
Lauri Ojansivu c9f033fe36 Repair Tamazight unsaved-description rescue setting
Retain rescue dialogue before closing and unsaved card-description scope. Full contextual grammar remains low confidence.

Thanks to xet7 !
2026-09-15 00:40:19 +03:00
Lauri Ojansivu 15900b9597 Record Tamazight destination repairs and dated audit evidence
Keep the original pending queue and broader native-language uncertainty explicit.

Thanks to xet7 !
2026-09-15 00:39:17 +03:00
Lauri Ojansivu d9bcfcd2ff Repair Tamazight rule destinations and member fragments
Replace eight French fragments using existing native terminology. Preserve list ownership, list versus swimlane destinations, checklist identity and distinct add/remove actions. Complete contextual grammar remains low confidence.

Thanks to xet7 !
2026-09-15 00:38:55 +03:00
Lauri Ojansivu 9ce7d1369a Document Tamazight rule consistency repairs and remaining review
Update dated audit evidence and Upcoming release notes without treating structural checks as native fluency proof.

Thanks to xet7 !
2026-09-15 00:38:14 +03:00
Lauri Ojansivu 54218b150e Replace French Tamazight rule object and add-label wording
Reuse established card, checklist item and label terminology. Test distinct add/remove meanings and preserve translation tokens and human preference. Contextual phrasing remains low confidence.

Thanks to xet7 !
2026-09-15 00:37:50 +03:00
Lauri Ojansivu c224750b0e Record dated Tamazight checklist repairs and audit progress
Document dictionary evidence, full-phrase uncertainty and passing regression checks. Reconcile the live queue to 195 pending original findings.

Thanks to xet7 !
2026-09-15 00:37:12 +03:00
Lauri Ojansivu 35dcd699ab Repair Tamazight checklist item and comma instructions
Replace French rule labels using existing checklist terminology and the IRCAM punctuation-comma sense. Preserve the required comma-separated input instruction and regression coverage. Complete phrase grammar remains low confidence.

Thanks to xet7 !
2026-09-15 00:36:48 +03:00
Lauri Ojansivu 7f7ec51012 Document empty Wolaytta dictionary entries and reject unsupported terminology evidence 2026-09-15 00:33:14 +03:00
Lauri Ojansivu 27932bb15f Verify full native Wolaytta showing-word source and retain review limits 2026-09-15 00:31:53 +03:00
Lauri Ojansivu 79c1cf3d3b Record Wolaytta calendar-system draft and display-evidence limits 2026-09-15 00:30:54 +03:00
Lauri Ojansivu c5738aa535 Translate Wolaytta calendar-system date-display label 2026-09-15 00:30:25 +03:00
Lauri Ojansivu 9fbd3e3a22 Record Wolaytta Hijri drafts and remaining calendar qualifier review 2026-09-15 00:29:27 +03:00
Lauri Ojansivu ca3b8764b8 Translate Wolaytta generic and Umm al-Qura Hijri calendar labels 2026-09-15 00:29:01 +03:00
Lauri Ojansivu 7c44047568 Record Wolaytta named-calendar repairs and remaining compound review 2026-09-15 00:28:24 +03:00
Lauri Ojansivu af73885668 Repair Wolaytta Dangi and Minguo calendar labels 2026-09-15 00:28:00 +03:00
Lauri Ojansivu 80bc752794 Record Wolaytta Ethiopian calendar drafts and remaining native review 2026-09-15 00:27:10 +03:00
Lauri Ojansivu b7f18f9ce4 Translate Wolaytta Ethiopian calendar labels preserving Amete Alem 2026-09-15 00:26:45 +03:00
Lauri Ojansivu f51a2d9e2d Record Wolaytta calendar noun repairs and remaining system-label review 2026-09-15 00:25:57 +03:00
Lauri Ojansivu 12dfa02aeb Replace English Wolaytta calendar labels with native terminology 2026-09-15 00:25:29 +03:00
Lauri Ojansivu fe3d28048b Record Kashmiri tabular calendar repairs and remaining compound review 2026-09-15 00:24:35 +03:00
Lauri Ojansivu 59541a5ae9 Repair Kashmiri tabular Hijri calendar labels and distinguish epochs 2026-09-15 00:24:08 +03:00
Lauri Ojansivu ab415fa4fd Clarify Veps numerical-sum evidence and exclude prose-summary terminology 2026-09-15 00:22:57 +03:00
Lauri Ojansivu fe08f9334a Record migration help repair and individual-execution review limits 2026-09-15 00:21:37 +03:00
Lauri Ojansivu a00a983c12 Translate Tamazight migration help preserving individual execution 2026-09-15 00:21:14 +03:00
Lauri Ojansivu 08a286b983 Record description recovery translation and remaining native review 2026-09-15 00:20:05 +03:00
Lauri Ojansivu d9cebf2b08 Translate Tamazight card description recovery confirmation 2026-09-15 00:19:35 +03:00
Lauri Ojansivu 63ba71375e Record Tamazight unsaved-description repair and native review limits 2026-09-15 00:18:30 +03:00
Lauri Ojansivu ed8256d454 Translate Tamazight unsaved card description warning 2026-09-15 00:18:02 +03:00
Lauri Ojansivu dc61e2d512 Document verified Tamazight server wording and networking-port evidence limits 2026-09-15 00:16:59 +03:00
Lauri Ojansivu b18ccadae5 Record ordered duplicate-list confirmation translation and limits 2026-09-15 00:12:25 +03:00
Lauri Ojansivu 38c76afb79 Translate Tamazight ordered duplicate-list migration confirmation
Keep conversion before restricted deletion and preserve same-title populated counterpart and continuation question. Full compound grammar remains low confidence; removed migration behavior is unchanged.
2026-09-15 00:11:58 +03:00
Lauri Ojansivu 4f4aee90c2 Record empty-duplicate-list wording repair and remaining review 2026-09-15 00:10:46 +03:00
Lauri Ojansivu 8378f9f398 Translate Tamazight empty-duplicate-list repair description
Keep safety, only-empty-list restriction and same-title populated counterpart condition explicit. Full relative grammar remains low confidence; no removed migration is activated.
2026-09-15 00:10:20 +03:00
Lauri Ojansivu 82034901c7 Record duplicate-list confirmation repair and review limits 2026-09-15 00:09:19 +03:00
Lauri Ojansivu 8b44ebd33b Translate Tamazight duplicate-list deletion confirmation
Preserve certainty question and restriction to duplicate lists sharing a name and containing no cards. Full passive and shared-name grammar remain low confidence for native review.
2026-09-15 00:08:51 +03:00
Lauri Ojansivu 34f09318de Record missing-list confirmation repair and grammar limits 2026-09-15 00:07:40 +03:00
Lauri Ojansivu 8e7006cdec Translate Tamazight missing-list repair confirmation
Retain future discovery and repair statement with explicit continuation question. Match the description scope. Full question grammar and technical compounds remain low confidence; no removed migration is activated.
2026-09-15 00:07:15 +03:00
Lauri Ojansivu cf39983799 Record missing-list translation repair and unresolved confirmation 2026-09-15 00:06:20 +03:00
Lauri Ojansivu 59aa02a7ec Translate Tamazight missing-list repair description
Retain discovering and repairing missing or corrupted lists in board structure. Full passive grammar and computing adaptation remain low confidence. No removed migration is activated.
2026-09-15 00:05:53 +03:00
Lauri Ojansivu f4cfb898c3 Document remaining description terminology revisions 2026-09-15 00:04:43 +03:00
Lauri Ojansivu cb7df8bbca Distinguish Tamazight description wording in remaining field labels
Use IRCAM description noun in minicard-description and detailed-description labels while retaining summary and search shorthand. Surrounding phrase grammar remains under review; original ledger provenance is preserved.
2026-09-15 00:04:20 +03:00
Lauri Ojansivu 85994b6040 Record Tamazight bulk-card and description repairs 2026-09-15 00:03:34 +03:00
Lauri Ojansivu df50d9f6e2 Translate Tamazight bulk-card guidance and description terminology
Use dictionary-attested description wording distinct from summary. Preserve destination-card meaning and literal title/description JSON properties. Complete instruction grammar remains low confidence for native review.
2026-09-15 00:03:08 +03:00
Lauri Ojansivu 7a42706683 Record September 15 WIP translation repair and review limits 2026-09-15 00:01:56 +03:00
Lauri Ojansivu 414beceef5 Translate Tamazight WIP error recovery guidance
Preserve moving tasks out of this list or increasing the WIP limit. Avoid deletion wording from the French seed. Complete grammar, numerical-limit adaptation and politeness remain low confidence for native review.
2026-09-15 00:01:31 +03:00
Lauri Ojansivu bd5efc0563 Record Tamazight notification repairs and remaining wording review 2026-09-14 23:59:52 +03:00
Lauri Ojansivu 3eb7ae1030 Translate Tamazight participation and watch notification messages
Preserve distinct creator/member card scope and watched boards, lists or cards. Reuse notification wording and native watchlist components; complete passive and object agreement remain low confidence. No active client/model references were found for these catalogue keys.
2026-09-14 23:59:16 +03:00
Lauri Ojansivu c4b699b22b Record Kashmiri sighting draft and outstanding grammar review 2026-09-14 23:57:45 +03:00
Lauri Ojansivu 58809a7245 Translate Kashmiri Saudi moon-sighting calendar label
Replace English country-only wording with calendar, country and moon-seeing components. Complete nominalized phrase and grammatical agreement remain low confidence for native review.
2026-09-14 23:57:17 +03:00
Lauri Ojansivu 499f996a35 Record Fulah epoch repairs and remaining native wording review 2026-09-14 23:56:14 +03:00
Lauri Ojansivu 206859259f Translate Fulah tabular Hijri calendar epoch labels
Use dictionary-backed calculation, structured-table and beginning components. Retain distinct Julian epoch dates and existing sighting wording. Complete technical compounds and dialect consistency remain low confidence for native review.
2026-09-14 23:55:45 +03:00
Lauri Ojansivu 7850f41248 Link dated Fulah terminology evidence in audit and upcoming changelog 2026-09-14 23:55:04 +03:00
Lauri Ojansivu ee94227ea5 Document primary Fulah calendar component evidence and limits 2026-09-14 23:54:50 +03:00
Lauri Ojansivu b8e2f4a994 Document Quechua sighting terminology review 2026-09-14 23:53:26 +03:00
Lauri Ojansivu 3edd8d4996 Clarify Quechua Saudi moon-sighting calendar label
Use calendar and moon nouns with dictionary-attested sighting wording. Preserve distinct tabular calendar semantics and original correction provenance. Complete compound grammar remains low confidence for native review.
2026-09-14 23:53:03 +03:00
Lauri Ojansivu a55747c2aa Record Quechua epoch repairs and remaining native review 2026-09-14 23:52:20 +03:00
Lauri Ojansivu 963a3965b3 Distinguish Quechua tabular Hijri calendar epochs
Replace clock-only and English labels with calendar, table/count and beginning wording. Explicit Julian epoch dates retain the civil versus astronomical distinction. Complete technical compounds remain low confidence for native review.
2026-09-14 23:51:55 +03:00
Lauri Ojansivu 97729cc783 Record Tamazight notification repairs and remaining native review
Date source and dictionary evidence in audit and Upcoming changelog. Retain passive negation relative grammar and broader uncertain translation scope. Audit and changelog checks pass.

Thanks to xet7.
2026-09-14 23:47:42 +03:00
Lauri Ojansivu 3121eea2fc Replace French Tamazight muted and tracking notification instructions
Keep never-for-this-board and creator-or-member card notification scope distinct. Use IRCAM future negation and participant terms with existing notification wording. Four focused suites pass; passive inflection negation placement and complete relative grammar remain under native review.

Thanks to xet7.
2026-09-14 23:47:10 +03:00
Lauri Ojansivu bbec77a73e Record Tamazight reminder repairs and unresolved wording evidence
Date reminder-root and temporal evidence with source commit and passing checks. Keep aspect accessibility Aromanian and all broader uncertain findings in scope.

Thanks to xet7.
2026-09-14 23:45:54 +03:00
Lauri Ojansivu 6171a92af5 Replace French Tamazight due reminders with distinct sourced drafts
Preserve approaching now and past deadline meanings and exact placeholders. Use IRCAM reminder marked variant and approach/passage roots with existing deadline terminology. Four focused suites pass; inflection and temporal aspect remain under native review.

Thanks to xet7.
2026-09-14 23:45:15 +03:00
Lauri Ojansivu e2fa48fbf5 Record Tamazight uptime correction and unresolved diagnostic terminology
Date source and dictionary evidence and update Upcoming changelog. Retain native clause and platform/load-average review limits. Audit and changelog checks pass.

Thanks to xet7.
2026-09-14 23:43:21 +03:00
Lauri Ojansivu 2ad05d681d Replace Arabic Tamazight OS uptime label with elapsed-time draft
Describe time since operating-system start, matching os.uptime and the Information view. Use IRCAM beginning, passage and operating-system terms; avoid film runtime and physical platform senses. Four focused suites pass after removing a duplicate test constant. Relative clause and computing-startup adaptation remain under native review.

Thanks to xet7.
2026-09-14 23:42:45 +03:00
Lauri Ojansivu aec5334e76 Record attested Tamazight ordering wording and review limits
Date the source correction and primary dictionary/software evidence. Preserve remaining native grammar review scope and record passing audit and changelog checks.

Thanks to xet7.
2026-09-14 23:41:28 +03:00
Lauri Ojansivu 3e7b05f82c Use attested Tamazight ordering noun in migration description
Replace the speculative derived noun with IRCAM anmala, also attested in MediaWiki default-sort software wording. Preserve original ledger before-value and add negative regression for the superseded form. Four focused suites pass; full grammar and other technical compounds remain under review.

Thanks to xet7.
2026-09-14 23:40:59 +03:00
Lauri Ojansivu c7da5056ba Record Tamazight migration draft evidence and native-review limits
Update dated audit progress and Upcoming changelog with the source commit, lexical evidence and passing checks. Preserve low-confidence grammar and technical compounds in the full audit scope.

Thanks to xet7.
2026-09-14 23:40:01 +03:00
Lauri Ojansivu ef2b560fcb Replace French Tamazight migration description with sourced draft
Preserve board data integrity checks and repair scope, including list ordering card positioning and swimlane structure. Use IRCAM lexical evidence and record derived ordering noun, inflection and computing collocations as low confidence. Four focused suites pass after correcting the regression test root constant; removed migration code remains removed.

Thanks to xet7.
2026-09-14 23:39:30 +03:00
Lauri Ojansivu 2bed0f7506 Record Latin Uzbek regional and loading translation progress
Date source-backed automatic loading repairs and regional board terminology review. Preserve Arabic-script and broader native-review scope. Audit and changelog checks pass.

Thanks to xet7.
2026-09-14 23:37:43 +03:00
Lauri Ojansivu 11db754498 Repair Latin Uzbek regional board terms and current loading guidance
Translate automatic card loading, threshold, live count and exact operator environment overrides. Replace personal laziness sense with on-demand loading. Carry reviewed board forms into matching regional prose and review eight independent core roadmap clone and notification values. Five suites pass including 28 loading behavior checks; Arabic-script and native technical reviews remain open.

Thanks to xet7.
2026-09-14 23:37:15 +03:00
Lauri Ojansivu cf9c60bf9d Record Uzbek sentence repairs and unfinished technical translation review
Update dated audit progress and Upcoming changelog with source and morphology evidence. Record stale loading guidance as unfinished and retain all broader uncertain findings. Audit and changelog checks pass.

Thanks to xet7.
2026-09-14 23:35:40 +03:00
Lauri Ojansivu 51dd395230 Repair remaining Uzbek Kanban board terminology and cases
Review all council-term sentences against English and use the established taxta board noun. Preserve plural case and possessive morphology, with explicit selection schedule search invitation and multi-board corrections. Translate visibility with existing labels and preserve HTML. Five focused suites pass; stale loading instructions and remaining technical phrasing stay in scope.

Thanks to xet7.
2026-09-14 23:35:08 +03:00
Lauri Ojansivu 1c1036c795 Record Khmer sentence repairs and remaining translation review
Date the whole Khmer council-sense sweep and related semantic fixes. Update the short audit summary and Upcoming changelog with source commit and passing validation while retaining full technical review scope.

Thanks to xet7.
2026-09-14 23:33:53 +03:00
Lauri Ojansivu bc8d3b2330 Repair remaining Khmer Kanban board and related word senses
Review all council-term sentences against English and replace the governing body sense with the established board noun. Correct financial deposit, list purchasing, multi-board calendar and extra board in swimlane selection. Translate visibility terms using existing locale labels and preserve HTML. Five focused suites pass; full native technical compounds remain under review.

Thanks to xet7.
2026-09-14 23:33:24 +03:00
Lauri Ojansivu dc227197b7 Record Uzbek Khmer terminology repairs and remaining council wording
Update dated audit and Upcoming changelog with source evidence, alias correction and validation. Keep broader council-term sentences and native computing collocations under review. Audit and changelog checks pass.

Thanks to xet7.
2026-09-14 23:32:18 +03:00
Lauri Ojansivu ca9bf7a977 Correct Uzbek and Khmer Kanban board terminology and archive guidance
Distinguish Kanban boards from administrative councils in board labels and restore actions. Use Archive on All Boards in complete instructions. Preserve Khmer locale aliases and historical ledger before-values. Five focused suites pass after correcting alias bookkeeping; remaining council wording and native computing collocations stay under review.

Thanks to xet7.
2026-09-14 23:31:48 +03:00
Lauri Ojansivu 81a03829f6 Record eight-language archive repairs and remaining wording review
Update dated audit progress and Upcoming changelog with source commit and validation. Keep Uzbek Khmer remaining archive locales and native collocation reviews in scope. Audit and changelog checks pass.

Thanks to xet7.
2026-09-14 23:30:22 +03:00
Lauri Ojansivu 2070173c0a Correct archive navigation instructions in eight languages
Use existing Archive and All Boards labels in Malayalam Marathi Gujarati Punjabi Nepali Sinhala Mongolian and Kazakh. Preserve restoration terminology and replace obsolete header navigation, including the English Sinhala Archive label. Five focused suites pass; full native collocation review remains part of the broader audit.

Thanks to xet7.
2026-09-14 23:29:53 +03:00
Lauri Ojansivu cfe4db7aae Record archive translation repairs and remaining review scope
Date the Irish Serbian and Tagalog corrections, cite Irish dictionary evidence and preserve native-review limits. Update the short audit summary and Upcoming changelog with the local source commit. Audit and changelog checks pass.

Thanks to xet7.
2026-09-14 23:29:06 +03:00
Lauri Ojansivu 110c58002c Repair Irish Serbian and Tagalog archive guidance
Use the Archive section on All Boards and preserve existing locale labels. Choose the attested Irish bring-back sense, preserve Serbian board terminology, and replace mixed English in Tagalog. Full Irish navigation grammar remains a derived translation pending native review. Five focused suites pass.

Thanks to xet7.
2026-09-14 23:28:39 +03:00
Lauri Ojansivu bc8b765ca2 Verify RTL language marker placement in both browser directions
Accept template whitespace in the regional row assertion. Confirm both LTR and RTL Chromium layout tests pass and record the existing first-line marker fix under the Upcoming release.

Thanks to xet7.
2026-09-14 23:27:53 +03:00
Lauri Ojansivu df09cc36c3 Record additional multilingual archive translation repair progress
Update dated audit and Upcoming with 21-file repair and native terminology evidence. Preserve low-confidence computing phrases and remaining locale reviews. Three documentation suites pass.

Thanks to xet7.
2026-09-14 23:23:27 +03:00
Lauri Ojansivu 262f23764c Repair archive guidance in 21 additional languages and variants
Correct current Archive locations and Zulu place labels. Replace Bulgarian in Macedonian, phonetic English in Urdu and mixed English in Maltese. Five focused suites pass; Maltese/Zulu computing collocations remain low confidence and other locale reviews remain open.

Thanks to xet7.
2026-09-14 23:23:01 +03:00
Lauri Ojansivu 65b121aae2 Record multilingual archive guidance corrections and review progress
Update dated audit and Upcoming with 34-file repair, six consistent place labels and superseded Galician acceptance. Retain other locale and native/UI review limits. Three documentation suites pass.

Thanks to xet7.
2026-09-14 23:21:51 +03:00
Lauri Ojansivu 801dcf1a81 Repair archive guidance in 34 additional locale files
Replace obsolete locations and Persian-in-Arabic/Malay-in-Indonesian prose. Correct six base/regional Archive place labels, keeping guidance consistent. Supersede the Galician unchanged acceptance with its dated correction. Focused locale/menu suites pass; other languages and browser paths remain open.

Thanks to xet7.
2026-09-14 23:21:25 +03:00
Lauri Ojansivu 15fc53d551 Record additional archive translation repairs and progress
Document 21 repaired locale files, three Archive label corrections, independent regional review and remaining uncertainty. Update dated audit and Upcoming; three documentation suites pass.

Thanks to xet7.
2026-09-14 23:19:15 +03:00
Lauri Ojansivu f8708e3d2d Repair archive guidance in 21 more locale files
Correct obsolete locations and three Archive place labels. Review independent Argentine Spanish, Peruvian Spanish and Brazilian Portuguese guidance; update matching regional copies elsewhere. Five focused suites pass. Czech main-menu wording retained; Serbian terminology and other locales remain open.

Thanks to xet7.
2026-09-14 23:18:48 +03:00
Lauri Ojansivu e3c547b6b7 Record 27-locale archive guidance repair progress
Update dated audit and Upcoming with repaired languages, exact-copy regional handling and correct Swedish retention. Preserve other locale, native grammar and browser verification requirements. Three documentation suites pass.

Thanks to xet7.
2026-09-14 23:17:53 +03:00
Lauri Ojansivu f1c15bd0e9 Repair archive restoration guidance in 27 locale files
Replace obsolete header locations with current Archive section and All Boards page, using existing localized place labels. Update reviewed base languages and identical regional copies; retain correct Swedish main-menu wording. Five focused locale/menu suites pass; other locales and browser paths remain to review.

Thanks to xet7.
2026-09-14 23:17:26 +03:00
Lauri Ojansivu 590a7be901 Record archive guidance repairs and remaining multilingual review
Update dated progress and Upcoming with the source commit. Preserve native grammar, unexecuted restoration UI and other locale-location review requirements. Three documentation suites pass.

Thanks to xet7.
2026-09-14 23:16:24 +03:00
Lauri Ojansivu 1439654600 Correct board archive restoration guidance location
Replace outdated home-header button wording with the active Archive section on All Boards. Update English and six variants and replace complete French Tamazight prose. Five locale/menu suites pass. Tamazight full phrasing and other locale locations remain under review.

Thanks to xet7.
2026-09-14 23:15:57 +03:00
Lauri Ojansivu 56e6579639 Update archive source-guidance audit progress and Upcoming
Link the dated source review and retain English/locale wording repairs as unfinished. Three documentation suites pass.

Thanks to xet7.
2026-09-14 23:15:04 +03:00
Lauri Ojansivu de14ab2b60 Identify outdated archive location in translation source guidance
Record active All Boards Archive menu source and commented-out header control. Keep English and corresponding locale repairs open rather than reproducing obsolete navigation. Existing All Boards and audit suites pass; no browser execution or locale changes claimed.

Thanks to xet7.
2026-09-14 23:14:45 +03:00
Lauri Ojansivu 185a5033b5 Link Tamazight archive terminology review in audit and Upcoming
Record the local review commit while retaining unresolved full guidance and unchanged repair counts. Three documentation suites pass.

Thanks to xet7.
2026-09-14 23:13:34 +03:00
Lauri Ojansivu 1444c8f947 Review native Tamazight home and archive guidance terminology
Retain the native-supported home-page term. Distinguish plug and clothing-button senses from UI terminology and leave full French guidance unresolved. Record source evidence and next verification requirements without claiming fluency or browser execution. Three audit/changelog suites pass.

Thanks to xet7.
2026-09-14 23:13:18 +03:00
Lauri Ojansivu 15f674a5c9 Record Tamazight remaining-time repair and native review limits
Update dated audit and Upcoming with the source commit, primary dictionary entries and original-versus-unflagged counts. Preserve relative grammar and dormant-key browser verification limits. Three documentation suites pass.

Thanks to xet7.
2026-09-14 23:12:03 +03:00
Lauri Ojansivu 852861ce06 Replace French Tamazight remaining-time lockout label
Use IRCAM time/remain terminology in a full draft. Keep remaining duration distinct from configured lockout period and failure window. Four locale suites pass; relative verb and countdown collocation remain low confidence.

Thanks to xet7.
2026-09-14 23:11:32 +03:00
Lauri Ojansivu 27dd0ddb8f Record Tamazight locked-users catalogue repair progress
Document native wording evidence, full causal-phrase uncertainty and absence of browser rendering proof. Update dated audit counts and Upcoming with the exact source commit. Three documentation suites pass.

Thanks to xet7.
2026-09-14 23:10:34 +03:00
Lauri Ojansivu 8d3dca66a7 Replace French Tamazight locked-users description
Retain plural blocked users, current state and repeated login-failure reason in a full draft. Keep empty-state and individual lockout messages distinct. Four locale suites pass; native causal phrasing remains low confidence.

Thanks to xet7.
2026-09-14 23:10:07 +03:00
Lauri Ojansivu d5263b769b Record Tamazight temporary lockout repair and uncertainty
Update dated audit counts and Upcoming with the source commit. Record native vocabulary evidence, full-phrase review limits and unexecuted authentication UI coverage. Three audit and changelog suites pass.

Thanks to xet7.
2026-09-14 23:09:08 +03:00
Lauri Ojansivu b54bc8935e Replace French Tamazight temporary account lockout message
Preserve the temporary period, repeated failed logins and retry-later instruction in a complete draft. Four locale suites pass; full causal and temporal grammar remains low confidence.

Thanks to xet7.
2026-09-14 23:08:39 +03:00
Lauri Ojansivu d1262eeeb7 Record Tamazight archive label fixes and Chromium verification
Update dated audit and Upcoming with native restore terminology, exact source commit and successful archive-title cancellation test. Preserve native-compound and board-restoration verification limits. Three documentation suites pass.

Thanks to xet7.
2026-09-14 23:07:30 +03:00
Lauri Ojansivu 1e3ccd4f04 Repair Tamazight archive question and board restore action
Replace French and Arabic labels with native archive-list wording and the attested restore verb. Preserve distinct archive/restore actions. Four locale suites pass; Chromium verifies the archive title and cancellation (1 passed). Board restoration has source coverage; native computing compounds remain under review.

Thanks to xet7.
2026-09-14 23:07:00 +03:00
Lauri Ojansivu 12159a80cd Record Tamazight troubleshooting repair and remaining grammar review
Update dated audit progress and Upcoming with the source commit, native terminology references and command-preservation checks. Retain full-phrase uncertainty and unexecuted browser-path limits. Three audit and changelog suites pass.

Thanks to xet7.
2026-09-14 23:04:20 +03:00
Lauri Ojansivu 1f0d464940 Replace French Tamazight troubleshooting instructions
Translate the complete server-error message with native send/error and IRCAM server/installation terminology. Preserve both exact shell commands and separate Snap/Docker lines. Four locale suites pass; full clause grammar remains low confidence.

Thanks to xet7.
2026-09-14 23:03:53 +03:00
Lauri Ojansivu 8cd4ce84a7 Record Tamazight architecture repair and correct browser audit status
Document IRCAM terminology, CPU metric semantics and remaining uncertainty. Correct stale unrun-browser statements using the existing dated executions. Record the conference-reference check without treating French proceedings as native terminology evidence. Three audit and changelog suites pass.

Thanks to xet7.
2026-09-14 23:02:27 +03:00
Lauri Ojansivu 69d9adb6c3 Replace Arabic Tamazight architecture diagnostic label
Use IRCAM tamsdagt, attested for architecture and modular architecture. Preserve the os.arch CPU metric and its distinct OS type/platform meaning. Add positive and negative locale/source regressions; four suites pass. Computing specialization remains low confidence.

Thanks to xet7.
2026-09-14 23:01:52 +03:00
Lauri Ojansivu 4ae41fc190 Record Tamazight OS terminology repairs and verification limits
Document native sources, actual OS metric semantics and remaining low-confidence adaptations. Update translation progress and Upcoming with the source commit. Three documentation and changelog suites pass.

Thanks to xet7.
2026-09-14 22:59:50 +03:00
Lauri Ojansivu 163a755c0d Replace Arabic Tamazight OS release and type labels 2026-09-14 22:56:53 +03:00
Lauri Ojansivu 05fe6af8dd Record Tamazight memory repair sources and uncertainty 2026-09-14 22:55:56 +03:00
Lauri Ojansivu 1bfe768280 Replace Arabic Tamazight free-memory diagnostic label 2026-09-14 22:55:30 +03:00
Lauri Ojansivu 83fefedd5d Record Tamazight debug error repair and remaining native review 2026-09-14 22:54:07 +03:00
Lauri Ojansivu 138b1b0af3 Replace French Tamazight debug catalogue error 2026-09-14 22:53:42 +03:00
Lauri Ojansivu 44540b6091 Record Tamazight Excel repair and refreshed audit counts 2026-09-14 22:52:28 +03:00
Lauri Ojansivu 56c2c53314 Replace French Tamazight Excel field selection prompt 2026-09-14 22:52:04 +03:00
Lauri Ojansivu 6b9b59bc91 Record Tamazight Default repairs and verified lane rendering 2026-09-14 22:50:38 +03:00
Lauri Ojansivu 58169ab23e Replace French Tamazight Default labels with native default wording 2026-09-14 22:50:15 +03:00
Lauri Ojansivu 8a8fbba5c1 Record Tamazight board label repairs and native review limits 2026-09-14 22:48:37 +03:00
Lauri Ojansivu 1efbb9034f Verify repaired Tamazight board action titles in Chromium 2026-09-14 22:48:12 +03:00
Lauri Ojansivu 164268616f Replace Arabic and French Tamazight board control labels 2026-09-14 22:47:41 +03:00
Lauri Ojansivu b4828fb05b Record verified Tamazight conjunction repair and remaining scope 2026-09-14 22:46:34 +03:00
Lauri Ojansivu 4941f33fd6 Replace French conjunction in Tamazight sidebar alternatives 2026-09-14 22:46:09 +03:00
Lauri Ojansivu 4552421de2 Record successful Tamazight numeric tooltip browser verification 2026-09-14 22:45:04 +03:00
Lauri Ojansivu 75fbb698c6 Repair Tamazight total tooltip browser fixture settings and navigation 2026-09-14 22:44:44 +03:00
Lauri Ojansivu e1c0f45448 Record Ewe calendar source review and unresolved translation scope 2026-09-14 22:41:52 +03:00
Lauri Ojansivu e7d0f821cc Document unresolved Ewe calendar epoch terminology from primary CLDR source 2026-09-14 22:41:33 +03:00
Lauri Ojansivu 1427cbd215 Document direct native evidence for Veps linking action 2026-09-14 22:40:32 +03:00
Lauri Ojansivu 2dbc6ba3aa Use native Veps linking imperative instead of assembled draft 2026-09-14 22:40:11 +03:00
Lauri Ojansivu 3f7923ff0e Record Veps link draft evidence and remaining uncertainty 2026-09-14 22:38:51 +03:00
Lauri Ojansivu 3f83638368 Replace Finnish Veps link action with documented Veps draft 2026-09-14 22:38:28 +03:00
Lauri Ojansivu b98f6bfec5 Record successful Basque rule grammar browser verification 2026-09-14 22:37:07 +03:00
Lauri Ojansivu c9005ee0af Repair Basque rule grammar browser test fixtures and resumed navigation 2026-09-14 22:36:47 +03:00
Lauri Ojansivu 1f2eac8b9d Record Basque assignee control order repair and browser verification status 2026-09-14 22:30:17 +03:00
Lauri Ojansivu cff1fdc323 Apply Basque named subject order to the assignee rule control 2026-09-14 22:29:50 +03:00
Lauri Ojansivu 6a11dd75d1 Record dated Basque assignee repair and unresolved named row composition 2026-09-14 22:29:08 +03:00
Lauri Ojansivu 486be57435 Correct Basque assignee rule subject from imperative to noun phrase 2026-09-14 22:28:46 +03:00
Lauri Ojansivu e24479f67b Record dated Veps card display drafts and remaining phrase review 2026-09-14 22:27:17 +03:00
Lauri Ojansivu 3b12f68c71 Replace Finnish Veps card display labels with complete native drafts 2026-09-14 22:26:46 +03:00
Lauri Ojansivu 7c1091e127 Record dated Veps parent control drafts and native review limits 2026-09-14 22:25:55 +03:00
Lauri Ojansivu b479af98fa Repair Veps parent change and display controls with native drafts 2026-09-14 22:25:31 +03:00
Lauri Ojansivu b6f45414af Record dated Veps parent display draft and reconcile pending counts 2026-09-14 22:24:41 +03:00
Lauri Ojansivu e8692f14a6 Repair Veps parent display instruction with complete native wording draft 2026-09-14 22:24:14 +03:00
Lauri Ojansivu 8d0c2b2a96 Record dated Veps parent label draft and remaining native review 2026-09-14 22:23:19 +03:00
Lauri Ojansivu 439a18989e Replace Finnish Veps parent card label with native terminology draft 2026-09-14 22:22:48 +03:00
Lauri Ojansivu 6db84838e6 Record dated primary Veps arithmetic review and unresolved phrases 2026-09-14 22:22:12 +03:00
Lauri Ojansivu a9d68dc927 Verify primary Veps arithmetic addition vertical and top terminology 2026-09-14 22:21:47 +03:00
Lauri Ojansivu 2d31aab1ca Record dated Veps inheritance draft and remaining grammar review 2026-09-14 22:19:58 +03:00
Lauri Ojansivu 3ba133c106 Replace Venda seeded Veps inheritance instruction with native terminology draft 2026-09-14 22:19:31 +03:00
Lauri Ojansivu 8382f7c385 Record dated primary Veps inheritance evidence and open phrase review 2026-09-14 22:18:37 +03:00
Lauri Ojansivu e1ab5e4fa3 Document primary Veps inheritance verb and visual dictionary verification 2026-09-14 22:18:14 +03:00
Lauri Ojansivu 60ac57a36d Record dated Veps hide empty action repair and native review limits 2026-09-14 22:16:20 +03:00
Lauri Ojansivu 3a10fb9277 Correct reversed Veps hide empty lists label with native wording draft 2026-09-14 22:15:56 +03:00
Lauri Ojansivu f302d1c23f Record dated Veps filter drafts and unresolved native review 2026-09-14 22:15:02 +03:00
Lauri Ojansivu a60cf42adb Replace Finnish Veps filter headings with native terminology drafts 2026-09-14 22:14:33 +03:00
Lauri Ojansivu 0b142d43fb Record dated Veps popup title fixes and phrase research limits 2026-09-14 22:13:36 +03:00
Lauri Ojansivu 84bffe61ad Replace Finnish More popup titles with native Veps wording 2026-09-14 22:13:11 +03:00
Lauri Ojansivu 39e34b4be2 Document dated Veps terminology repairs and parser verification 2026-09-14 22:12:03 +03:00
Lauri Ojansivu 70d9264f1d Repair Veps title and page nouns and verify localized title searches 2026-09-14 22:11:38 +03:00
Lauri Ojansivu 8ec9a5bd8a Record dated Veps action label repairs and remaining audit work 2026-09-14 22:10:08 +03:00
Lauri Ojansivu 6c30c4cfcc Replace three Finnish Veps action labels with native wording 2026-09-14 22:09:41 +03:00
Lauri Ojansivu ba75b76d27 Record dated all locale formatting verification
Update audit scope and upcoming changelog without claiming native quality or browser completion. Documentation checks pass.

Thanks to xet7.
2026-09-14 22:05:14 +03:00
Lauri Ojansivu 55562f666a Verify positional limit error formatting across every locale file
Execute the actual translation method and installed formatter against all 246 locale files. Verify one percent placeholder and exact substitution of a value containing percent. Regression passes; this does not certify native fluency or lazy loading.

Thanks to xet7.
2026-09-14 22:04:51 +03:00
Lauri Ojansivu 2c0ad73e1e Record dated activity terminology revision and confidence limits
Update audit and upcoming changelog without double-counting revised corrections. Documentation checks pass.

Thanks to xet7.
2026-09-14 22:04:19 +03:00
Lauri Ojansivu e3ae37bc5d Revise received time activity drafts with primary reception term
Replace earlier derived reception noun in two Tamazight drafts while preserving time placeholders and original provenance history. Record remaining genitive and full-clause uncertainty. Four translation checks pass.

Thanks to xet7.
2026-09-14 22:03:56 +03:00
Lauri Ojansivu 357c1e75a7 Record dated received and due label draft progress
Update audit and upcoming changelog with semantic limits and unchanged original queue counts. Documentation checks pass.

Thanks to xet7.
2026-09-14 22:02:45 +03:00
Lauri Ojansivu 822d6dfb53 Draft consistent Tamazight received and due date labels
Replace three wrong-language field labels while preserving received/due distinctions and existing date terminology. Record software reception and deadline uncertainty. Four translation checks pass.

Thanks to xet7.
2026-09-14 22:02:20 +03:00
Lauri Ojansivu 30b0f35820 Record audit summary consolidation in upcoming changelog
Link the dated summary cleanup and verified scope without claiming additional translation repairs. Changelog checks pass.

Thanks to xet7.
2026-09-14 22:01:27 +03:00
Lauri Ojansivu 61484d5df4 Consolidate translation audit runtime progress summary
Keep current runtime coverage concise while preserving dated evidence and native/browser limitations. Revalidate live queue totals and confirm no localhost app is running. Audit regression passes; no translation counts are changed.

Thanks to xet7.
2026-09-14 22:01:16 +03:00
Lauri Ojansivu 8e047f0c0c Record dated creation label parser verification
Update audit and upcoming changelog with actual metadata dispatch coverage and native/browser limitations. Documentation checks pass.

Thanks to xet7.
2026-09-14 22:00:39 +03:00
Lauri Ojansivu 27f6c9d2ab Verify Tamazight creation filtering and sorting labels
Exercise actual translated creation date and ascending/descending sort queries; reject invalid date periods. Deterministic date helpers isolate parser metadata mapping. Focused regression passes.

Thanks to xet7.
2026-09-14 22:00:19 +03:00
Lauri Ojansivu a7942c44cf Record dated export label drafts and remaining semantic review
Refresh audit counts and upcoming changelog with full field-order evidence and software terminology limits. Documentation checks pass.

Thanks to xet7.
2026-09-14 21:59:21 +03:00
Lauri Ojansivu 49aec4fa92 Draft Tamazight export dates and creation labels
Replace French with complete five-field date export wording and creation search labels. Preserve field order and record software reception and deadline uncertainty. Four translation checks pass.

Thanks to xet7.
2026-09-14 21:58:53 +03:00
Lauri Ojansivu 246fde916e Record dated date predicate runtime verification
Update audit and upcoming changelog with real parser coverage and outstanding browser/native review. Documentation checks pass.

Thanks to xet7.
2026-09-14 21:57:56 +03:00
Lauri Ojansivu bc9860dffe Verify Tamazight start and end existence predicates
Exercise actual localized has queries for present and absent start/end dates and reject those predicates for sorting. Parser regression passes without changing query behavior.

Thanks to xet7.
2026-09-14 21:57:34 +03:00
Lauri Ojansivu fa7b93b797 Record dated date field repairs and remaining export review
Update audit and upcoming changelog with primary start/end terms and unchanged original queue counts. Documentation checks pass.

Thanks to xet7.
2026-09-14 21:57:08 +03:00
Lauri Ojansivu b0f447c578 Repair Tamazight start and end rule and predicate labels
Replace four Arabic values with existing primary-dictionary start/end terms and preserve date-field distinctions. Four translation checks pass. Record actual rule and search mappings without claiming browser validation.

Thanks to xet7.
2026-09-14 21:56:43 +03:00
Lauri Ojansivu 7e56bc7d32 Record dated spinner wording drafts and audit progress
Refresh reconciled counts and upcoming changelog with source evidence and native software compound uncertainty. Documentation checks pass.

Thanks to xet7.
2026-09-14 21:54:46 +03:00
Lauri Ojansivu aebb361d29 Draft Tamazight descriptions for four wait spinner styles
Replace French descriptions with native waiting-indicator terminology while preserving exact animation identifiers. Exclude textile spinning senses and record compound adaptation uncertainty. Four translation checks pass.

Thanks to xet7.
2026-09-14 21:54:12 +03:00
Lauri Ojansivu b8ee40567c Record dated invitation drafts and source confidence
Refresh audit counts and upcoming changelog, preserving secondary-source and native grammar limitations. Documentation checks pass.

Thanks to xet7.
2026-09-14 21:53:02 +03:00
Lauri Ojansivu a47e7141d6 Draft Tamazight invitation acceptance wording
Replace Arabic accept and French invitation status with complete drafts preserving not yet. Record secondary verb provenance and low-confidence passive grammar. Four focused translation checks pass.

Thanks to xet7.
2026-09-14 21:52:38 +03:00
Lauri Ojansivu 5accbf5f03 Record dated retained email review and invitation uncertainty
Update audit and upcoming changelog with contextual evidence while preserving unresolved wording and counts. Documentation checks pass.

Thanks to xet7.
2026-09-14 21:51:48 +03:00
Lauri Ojansivu 3eaad375b3 Review retained Tamazight email warning against native software
Attach Common Voice email-specific already-used predicate evidence to the prior correction without changing the translation. Preserve remaining agreement and browser limits and distinguish unrelated import uncertainties. Ledger check passes.

Thanks to xet7.
2026-09-14 21:51:25 +03:00
Lauri Ojansivu e7244c8e8b Record dated native corpus discovery and audit status
Refresh audit and upcoming changelog with usable source paths and unresolved terminology. Documentation checks pass.

Thanks to xet7.
2026-09-14 21:50:23 +03:00
Lauri Ojansivu 4659005b14 Locate current native Tamazight software corpus
Record current Common Voice translation resource paths and distinguish project metadata and obsolete URLs from native terminology evidence. Repository wording remains unresolved; no locale changes are claimed.

Thanks to xet7.
2026-09-14 21:49:58 +03:00
Lauri Ojansivu f35edb3e5a Record dated repository terminology review progress
Update the short translation audit and upcoming changelog while retaining unresolved complete wording. Documentation checks pass.

Thanks to xet7.
2026-09-14 21:48:20 +03:00
Lauri Ojansivu c831eb7e1d Review repository upload terminology and action semantics
Distinguish source repositories from data warehouses and update verbs from nouns. Record native software-message evidence and complete pending action requirements without falsely counting a repair.

Thanks to xet7.
2026-09-14 21:48:03 +03:00
Lauri Ojansivu c2bd01f653 Record dated relative syntax review and remaining uncertainty
Update translation audit progress and upcoming changelog without changing counts or claiming complete native validation. Documentation checks pass.

Thanks to xet7.
2026-09-14 21:47:12 +03:00
Lauri Ojansivu 44cb2f6ca1 Strengthen domain label provenance with relative syntax evidence
Record primary relative marker and possession studies directly in the correction ledger. Preserve original before and after values and retain plural-clause uncertainty. Ledger regression passes.

Thanks to xet7.
2026-09-14 21:46:50 +03:00
Lauri Ojansivu 2152708eb9 Record dated possession grammar review progress
Refresh the short audit and upcoming changelog with primary evidence and unresolved plural wording. Audit and changelog checks pass.

Thanks to xet7.
2026-09-14 21:46:00 +03:00
Lauri Ojansivu bc406fcae6 Review primary Amazigh possession syntax for domain label
Record Taifi prepositional possession evidence and distinguish it from unverified plural relative agreement and complete software wording. No locale is declared repaired by this review.

Thanks to xet7.
2026-09-14 21:45:43 +03:00
Lauri Ojansivu 27edeb340f Record dated conditional label draft and audit progress
Update reconciled translation audit counts and upcoming changelog with primary evidence and unresolved native grammar. Documentation checks pass.

Thanks to xet7.
2026-09-14 21:44:13 +03:00
Lauri Ojansivu 94205ae5fe Draft conditional Tamazight automatic user addition label
Replace Arabic with a complete users-with-domain-name draft and preserve automatic addition. Record primary terminology and assembled relative-clause uncertainty. Four focused translation checks pass.

Thanks to xet7.
2026-09-14 21:43:49 +03:00
Lauri Ojansivu aec19d0377 Record dated restoration title draft and audit counts
Update translation audit evidence and upcoming changelog with primary terminology and unresolved native agreement. Audit and changelog checks pass.

Thanks to xet7.
2026-09-14 21:43:03 +03:00
Lauri Ojansivu 73543f47ae Draft Tamazight lost card restoration title
Replace French stored title with complete restore, cards and lost components from the primary dictionary. Record adjective agreement and software metaphor uncertainty. Four focused translation checks pass; no migration implementation is restored.

Thanks to xet7.
2026-09-14 21:42:37 +03:00
Lauri Ojansivu a4901900bd Record dated positional formatting repair and verification
Update translation audit progress and upcoming changelog with actual formatter coverage and remaining native and browser limitations. Documentation checks pass.

Thanks to xet7.
2026-09-14 21:41:43 +03:00
Lauri Ojansivu c74009b21b Format direct positional translation arguments
Convert scalar TAPi18n arguments to sprintf options so search errors replace percent placeholders. Preserve named options, explicit format arrays and zero. Actual translation method and installed formatter regressions pass alongside parser and lazy-loading checks.

Thanks to xet7.
2026-09-14 21:41:20 +03:00
Lauri Ojansivu c62359895d Record parser verification and translation audit limits
Document real translated limit-query regressions and the zero-limit distinction without claiming browser interpolation or native acceptance. Audit and changelog checks pass.

Thanks to xet7.
2026-09-14 21:40:21 +03:00
Lauri Ojansivu 8715c094e1 Verify Tamazight limit errors through the search parser
Exercise negative and nonnumeric translated limit queries and preserve offending values for percent interpolation. Verify positive and zero-limit queries remain accepted. This checks parser dispatch rather than native fluency or browser rendering.

Thanks to xet7.
2026-09-14 21:40:00 +03:00
Lauri Ojansivu d32bd885d3 Record dated search limit draft and unresolved native review
Refresh reconciled audit counts and dated primary-source evidence. Preserve low-confidence grammar and browser limitations. Audit and changelog checks pass.

Thanks to xet7.
2026-09-14 21:39:23 +03:00
Lauri Ojansivu 10b47a7ed1 Draft complete Tamazight search limit validation error
Replace French with software validation wording and retain the positive integer condition and percent placeholder. Record native message and dictionary evidence with cross-variety grammar limits. Four focused translation checks pass.

Thanks to xet7.
2026-09-14 21:38:58 +03:00
Lauri Ojansivu 4cd4991d73 Record dated search limit terminology review progress
Refresh the audit summary and upcoming changelog with the primary terminology review, preserving all unresolved findings. Three audit and changelog checks pass.

Thanks to xet7.
2026-09-14 21:38:04 +03:00
Lauri Ojansivu 08df9a3479 Review Tamazight search limit error terminology
Document primary dictionary distinctions between computing validation and disability senses of invalid. Preserve the pending full error and percent placeholder rather than introduce a misleading literal substitution.

Thanks to xet7.
2026-09-14 21:37:44 +03:00
Lauri Ojansivu a60552f09b Record dated computing domain repair and matching semantics
Update the short audit summary and detailed evidence with terminology provenance, unchanged pending counts and the exact email-domain condition still needed in automatic-addition wording. Audit and changelog checks pass.

Thanks to xet7.
2026-09-14 21:36:52 +03:00
Lauri Ojansivu da45e203ac Correct Tamazight computing domain terminology
Use the documented computing-domain noun instead of geographic region in domain lists and board sharing. Preserve translation tokens and record primary lexicon provenance with native usage limits. Four focused translation checks pass.

Thanks to xet7.
2026-09-14 21:36:28 +03:00
Lauri Ojansivu ff196c5408 Record dated automatic width translation repairs and limits 2026-09-14 21:31:52 +03:00
Lauri Ojansivu 9978b92d2c Repair Arabic Tamazight automatic list width labels 2026-09-14 21:31:23 +03:00
Lauri Ojansivu 2c8bdf89e3 Record dated account tooltip repairs and grammar limits 2026-09-14 21:30:17 +03:00
Lauri Ojansivu 439ac57890 Repair French Tamazight account status and click tooltips 2026-09-14 21:29:54 +03:00
Lauri Ojansivu a7031c618f Record dated Greenlandic epoch repairs and validation limits 2026-09-14 21:28:41 +03:00
Lauri Ojansivu 3a6936cce7 Translate Greenlandic tabular Hijri labels with distinct epochs 2026-09-14 21:28:11 +03:00
Lauri Ojansivu 00fb2ae0c4 Update audit progress with Greenlandic epoch research 2026-09-14 21:27:19 +03:00
Lauri Ojansivu 8ba8134b93 Record Greenlandic tabular calendar and epoch evidence 2026-09-14 21:27:03 +03:00
Lauri Ojansivu c3c8fd4354 Record dated Greenlandic sighting repair and grammar limits 2026-09-14 21:25:54 +03:00
Lauri Ojansivu 602ea40906 Translate Greenlandic Saudi Hijri moon sighting label 2026-09-14 21:25:31 +03:00
Lauri Ojansivu bae4ca9a7d Record dated Greenlandic calendar terminology repair 2026-09-14 21:23:59 +03:00
Lauri Ojansivu f09b5d2649 Add Greenlandic calendar term to Coptic selection label 2026-09-14 21:23:32 +03:00
Lauri Ojansivu 590229e390 Record dated time translation repairs and review limits 2026-09-14 21:22:39 +03:00
Lauri Ojansivu e9ef2b88b4 Repair French duration and remaining time labels in Tamazight 2026-09-14 21:22:09 +03:00
Lauri Ojansivu b05a108535 Record dated shared list translation repair and review limits 2026-09-14 21:21:20 +03:00
Lauri Ojansivu 7817aa29f2 Repair French shared list conversion label in Tamazight 2026-09-14 21:20:50 +03:00
Lauri Ojansivu d6755413eb Record dated comprehensive migration title review 2026-09-14 21:19:43 +03:00
Lauri Ojansivu 4091c14e42 Repair French comprehensive migration title in Tamazight 2026-09-14 21:19:18 +03:00
Lauri Ojansivu d3685abc82 Record dated positive integer translation evidence and limits 2026-09-14 21:18:35 +03:00
Lauri Ojansivu 597098ac19 Translate Tamazight positive integer height error with reviewed evidence 2026-09-14 21:18:11 +03:00
Lauri Ojansivu 67b16e63c0 Record dated Planning Poker translation and integer review 2026-09-14 21:16:38 +03:00
Lauri Ojansivu 8d48c0e3e5 Repair French Planning Poker action labels in Tamazight 2026-09-14 21:16:17 +03:00
Lauri Ojansivu 8fc3de0ddd Record dated basic color translation repairs 2026-09-14 21:15:05 +03:00
Lauri Ojansivu 502c7e0cf8 Repair six wrong-language Tamazight basic color labels 2026-09-14 21:14:43 +03:00
Lauri Ojansivu acec6476ce Record dated currency code translation evidence 2026-09-14 21:13:56 +03:00
Lauri Ojansivu 356836c4fa Replace French currency code label with Tamazight terms 2026-09-14 21:13:34 +03:00
Lauri Ojansivu 77203f849b Record dated currency translation repair and integer evidence 2026-09-14 21:12:46 +03:00
Lauri Ojansivu 551e1ec047 Replace Arabic currency field type with attested Tamazight 2026-09-14 21:09:18 +03:00
Lauri Ojansivu db2d09423e Record dated subtask landing list repair 2026-09-14 21:08:12 +03:00
Lauri Ojansivu d968e4bb29 Repair Tamazight subtask landing list instruction 2026-09-14 21:07:43 +03:00
Lauri Ojansivu 603ab06656 Record dated subtask board translation progress 2026-09-14 21:06:38 +03:00
Lauri Ojansivu 9515511af1 Repair Tamazight subtask board description and deposit label 2026-09-14 21:06:16 +03:00
Lauri Ojansivu c6575fa58b Record dated task and subtask translation refinements 2026-09-14 21:05:23 +03:00
Lauri Ojansivu 8bf9f58cf4 Repair Tamazight task and subtask terminology 2026-09-14 21:04:55 +03:00
Lauri Ojansivu 40df92ad76 Record dated Tamazight task terminology refinement 2026-09-14 21:03:59 +03:00
Lauri Ojansivu a9406c2788 Use attested Tamazight task vocabulary in WIP messages 2026-09-14 21:03:35 +03:00
Lauri Ojansivu b731243f69 Record dated account status vocabulary review 2026-09-14 21:02:40 +03:00
Lauri Ojansivu ac5a9f69bb Review Tamazight account status terminology and exclude permanent wording 2026-09-14 21:02:20 +03:00
Lauri Ojansivu a69918aa9f Update dated audit for webhook qualifier repair 2026-09-14 21:01:28 +03:00
Lauri Ojansivu 5b89d51688 Repair Tamazight optional webhook authentication qualifier 2026-09-14 21:01:05 +03:00
Lauri Ojansivu 7e8cc02337 Record dated Tamazight optional label repair 2026-09-14 21:00:12 +03:00
Lauri Ojansivu 855219d708 Replace Arabic Optional label with attested Tamazight 2026-09-14 20:59:51 +03:00
Lauri Ojansivu 33743d87d3 Record dated Dzongkha ISO label repair and verification 2026-09-14 20:58:45 +03:00
Lauri Ojansivu 7dd8c10c90 Restore Dzongkha Gregorian and week components in ISO calendar label 2026-09-14 20:58:24 +03:00
Lauri Ojansivu 591ed8bc0a Record dated Dzongkha sighting repair and remaining epoch review 2026-09-14 20:57:38 +03:00
Lauri Ojansivu 98cf2cda5f Restore Dzongkha Hijri moon sighting calendar qualifier 2026-09-14 20:57:14 +03:00
Lauri Ojansivu 0d3af98274 Record dated successful error clearing translation repair 2026-09-14 20:55:55 +03:00
Lauri Ojansivu 233955a459 Restore Tamazight successful error clearing qualifier 2026-09-14 20:55:31 +03:00
Lauri Ojansivu 57913407f0 Update dated migration error terminology audit 2026-09-14 20:54:51 +03:00
Lauri Ojansivu 3d891b203c Repair Tamazight migration error heading and clear action 2026-09-14 20:54:28 +03:00
Lauri Ojansivu fdedc1ef0c Record dated primary plural error correction 2026-09-14 20:53:20 +03:00
Lauri Ojansivu a693a0093d Correct Tamazight plural error terminology from primary dictionary 2026-09-14 20:52:50 +03:00
Lauri Ojansivu 881a387e83 Record translation browser coverage and execution limits 2026-09-14 20:52:06 +03:00
Lauri Ojansivu c8bcfb258c Cover Tamazight numeric field tooltip and display selection in browser regression 2026-09-14 20:51:45 +03:00
Lauri Ojansivu f94d98ce28 Update dated audit for maximum WIP count repair 2026-09-14 20:50:38 +03:00
Lauri Ojansivu 6e1292cd0b Repair Tamazight maximum WIP count setting 2026-09-14 20:50:16 +03:00
Lauri Ojansivu 57119833a0 Update dated audit for exceeded WIP translation 2026-09-14 20:49:37 +03:00
Lauri Ojansivu fc73c77eb0 Repair Tamazight exceeded WIP warning 2026-09-14 20:49:15 +03:00
Lauri Ojansivu f1f3d1efae Record dated custom field activity translation repair 2026-09-14 20:48:27 +03:00
Lauri Ojansivu b2f5745363 Repair Tamazight custom field creation activity 2026-09-14 20:48:04 +03:00
Lauri Ojansivu ab635ffee4 Update dated audit for numeric field total wording 2026-09-14 20:47:23 +03:00
Lauri Ojansivu 318e5030bc Repair Tamazight numeric custom field total description 2026-09-14 20:46:59 +03:00
Lauri Ojansivu 6d44a4deaf Record Tamazight search translation repair and verification 2026-09-14 20:46:12 +03:00
Lauri Ojansivu d0175d46a0 Repair Tamazight custom field search operator 2026-09-14 20:45:51 +03:00
Lauri Ojansivu eccc9f67f3 Update dated audit for Tamazight rule destination repairs 2026-09-14 20:44:39 +03:00
Lauri Ojansivu a4439d400e Repair Tamazight top and bottom rule destinations 2026-09-14 20:44:13 +03:00
Lauri Ojansivu 9f5df126b8 Record dated Tamazight aggregate repair and audit progress 2026-09-14 20:43:32 +03:00
Lauri Ojansivu af4faeb706 Repair Tamazight field total checkbox translation 2026-09-14 20:43:07 +03:00
Lauri Ojansivu fe25938e7d Update dated translation audit with primary Kashmiri evidence 2026-09-14 20:42:09 +03:00
Lauri Ojansivu 3567bf197e Record primary Kashmiri moon and seeing grammar evidence 2026-09-14 20:41:43 +03:00
Lauri Ojansivu 38666984bd Record dated Kashmiri source review and unresolved calendar labels 2026-09-14 20:38:01 +03:00
Lauri Ojansivu 002e14d69e Review Kashmiri lunar spelling and reject redirected dictionary source 2026-09-14 20:37:43 +03:00
Lauri Ojansivu 0fb9c531f5 Record calendar-system heading repair and variety limitations 2026-09-14 20:36:38 +03:00
Lauri Ojansivu 06f88d5eda Restore Quechua calendar-system date-display heading 2026-09-14 20:36:12 +03:00
Lauri Ojansivu 5641cb9d3a Record dated calendar meaning repairs and native week evidence 2026-09-14 20:35:09 +03:00
Lauri Ojansivu 2307b8332c Restore Quechua Jalali and ISO-week calendar meanings 2026-09-14 20:34:42 +03:00
Lauri Ojansivu ebdc0c1b80 Record nine calendar noun repairs and retained naming review 2026-09-14 20:33:41 +03:00
Lauri Ojansivu 474a2909e6 Correct clock noun in nine Quechua calendar options
Use attested Watanqillqa while preserving names and qualifiers. Retained modifiers and full compounds remain explicitly low confidence for review.
2026-09-14 20:33:17 +03:00
Lauri Ojansivu 54cfbc60da Record dated threshold label repair and conditional grammar review 2026-09-14 20:31:51 +03:00
Lauri Ojansivu 529775d9c7 Repair Tamazight card-count threshold label 2026-09-14 20:31:26 +03:00
Lauri Ojansivu 3b7e157592 Record dated visibility wording repairs and native grammar limits 2026-09-14 20:30:42 +03:00
Lauri Ojansivu 267913e2f7 Repair Tamazight board visibility heading and private-only restriction 2026-09-14 20:30:17 +03:00
Lauri Ojansivu 71686563e3 Record dated hidden-activities repair and full validation limits 2026-09-14 20:29:26 +03:00
Lauri Ojansivu c0edf11047 Repair Arabic Tamazight hidden-activities notification 2026-09-14 20:29:03 +03:00
Lauri Ojansivu 75c4b1f975 Record dated support-page label repair and native grammar limits 2026-09-14 20:28:19 +03:00
Lauri Ojansivu 46090ad0e0 Repair French Tamazight support-page enabled label 2026-09-14 20:27:54 +03:00
Lauri Ojansivu 4af0bcdcc9 Record dated invitation-acceptance semantic review 2026-09-14 20:27:02 +03:00
Lauri Ojansivu ca3d7dc9e2 Reject kiss mistranslation for Tamazight invitation acceptance 2026-09-14 20:26:45 +03:00
Lauri Ojansivu 81bcc03778 Record dated invitation notification repair and open acceptance review 2026-09-14 20:25:59 +03:00
Lauri Ojansivu 7dfbbecbdd Repair French Tamazight new-board invitation notification 2026-09-14 20:25:32 +03:00
Lauri Ojansivu af3a9344bd Record dated Trello instruction repair and pending review 2026-09-14 20:24:30 +03:00
Lauri Ojansivu 91ebdcc27c Translate remaining Tamazight Trello import instructions 2026-09-14 20:24:04 +03:00
Lauri Ojansivu 0052c54e57 Record single-quote clarification and verified value vocabulary 2026-09-14 20:23:16 +03:00
Lauri Ojansivu d1214818b7 Clarify literal single quotation mark in Tamazight filter help 2026-09-14 20:22:54 +03:00
Lauri Ojansivu 63da282e80 Record punctuation terminology revision and native-review limits 2026-09-14 20:22:07 +03:00
Lauri Ojansivu ac4b1dcdc9 Distinguish native Tamazight quotation and parenthesis terms
Replace unsupported conflated forms with primary dictionary nouns and repair space wording; retain full grammatical/software adaptation review.
2026-09-14 20:21:44 +03:00
Lauri Ojansivu 1c86ed6234 Record full filter-help repair and restored completeness 2026-09-14 20:20:49 +03:00
Lauri Ojansivu 04aba67e0c Translate full Tamazight advanced-filter help and label
Preserve all operators, escaping and executable examples. Completeness passes again; technical terminology and complete native grammar remain explicitly low confidence for review.
2026-09-14 20:20:25 +03:00
Lauri Ojansivu 624e4d1a2a Record filter syntax repair and exposed untranslated-help failure 2026-09-14 20:19:10 +03:00
Lauri Ojansivu 72b212a5d4 Repair doubled escapes in Tamazight advanced-filter examples
Keep the English prose explicitly pending. Syntax, correction and review checks pass; completeness correctly exposes one untranslated Tamazight placeholder instead of accepting cosmetically different English.
2026-09-14 20:18:47 +03:00
Lauri Ojansivu 7861c517bf Record dated SMTP host label repair and port terminology review 2026-09-14 20:17:57 +03:00
Lauri Ojansivu eb710395b9 Repair Arabic Tamazight SMTP host label 2026-09-14 20:17:33 +03:00
Lauri Ojansivu 46021ba981 Record dated SMTP sentence repair and native validation limits 2026-09-14 20:16:58 +03:00
Lauri Ojansivu 584dbfc7c2 Repair French Tamazight SMTP host description
Use the verified electronic-correspondence plural and server-address components; retain low-confidence relative-clause and adjective review.
2026-09-14 20:16:34 +03:00
Lauri Ojansivu 18cd89b4d7 Record dated SMTP terminology review in audit summary 2026-09-14 20:15:48 +03:00
Lauri Ojansivu 42d65f377f Review Tamazight SMTP host address and management senses 2026-09-14 20:15:32 +03:00
Lauri Ojansivu 1d2ec5f7e7 Record dated minicard parent wording repair and pending audit 2026-09-14 20:14:44 +03:00
Lauri Ojansivu 89ebd29cc5 Repair French Tamazight show-parent minicard label 2026-09-14 20:14:21 +03:00
Lauri Ojansivu 99ab43eaac Record dated product-name repair and remaining native review 2026-09-14 20:13:33 +03:00
Lauri Ojansivu c4a40896ba Repair Tamazight custom product name and omitted product wording 2026-09-14 20:13:09 +03:00
Lauri Ojansivu 022981f9d8 Record dated WIP translation repair and native wording limits 2026-09-14 20:12:28 +03:00
Lauri Ojansivu a5edc6d3c6 Repair French Tamazight WIP activation label
Use attested activation and boundary components, preserve WIP, and track the numerical software-limit adaptation as low confidence.
2026-09-14 20:12:01 +03:00
Lauri Ojansivu 2c60571f08 Record dated custom assetlinks translation repair and remaining review 2026-09-14 20:11:19 +03:00
Lauri Ojansivu d6a3581602 Repair French Tamazight custom assetlinks labels
Preserve the assetlinks.json filename and JSON marker, distinguish activation from content, and record low-confidence custom terminology for native review.
2026-09-14 20:10:54 +03:00
Lauri Ojansivu 32319e20bc Record dated private-board wording repair and review limits 2026-09-14 20:06:15 +03:00
Lauri Ojansivu d7bdf6ac6a Repair Arabic Tamazight private-board description and missing actions 2026-09-14 20:05:52 +03:00
Lauri Ojansivu 8ac8dbec26 Record dated SMTP TLS repair and reconstructed translation progress 2026-09-14 20:04:27 +03:00
Lauri Ojansivu 086a027340 Repair Arabic Tamazight SMTP TLS description 2026-09-14 20:04:05 +03:00
Lauri Ojansivu a40ea09e65 Record dated Veps evidence review and remaining repairs 2026-09-14 20:02:58 +03:00
Lauri Ojansivu 726abda52a Expand Veps dictionary evidence and preserve software sense distinctions 2026-09-14 20:02:42 +03:00
Lauri Ojansivu d01d71f4d4 Record dated integer terminology review and unresolved repairs 2026-09-14 19:59:53 +03:00
Lauri Ojansivu e702bdf0bf Record primary-source limits for Tamazight integer constraints 2026-09-14 19:59:34 +03:00
Lauri Ojansivu d61139da6b Document dated audit updater repair and live progress 2026-09-14 19:57:32 +03:00
Lauri Ojansivu 9c7a845a31 Refresh translation audit locale counts with live totals 2026-09-14 19:57:12 +03:00
Lauri Ojansivu 96fd5d40bf Record dated height-label repairs and reconstructed audit counts 2026-09-14 19:56:10 +03:00
Lauri Ojansivu c986121af7 Repair three Arabic Tamazight swimlane-height labels 2026-09-14 19:54:43 +03:00
Lauri Ojansivu b3015bd348 Record dated approaching-deadline repair and migration-label gap 2026-09-14 19:53:31 +03:00
Lauri Ojansivu 4f99247e87 Replace French Tamazight approaching-deadline warning 2026-09-14 19:53:04 +03:00
Lauri Ojansivu 112ecad9f2 Record dated analysis-stage revision and unresolved integration 2026-09-14 19:51:47 +03:00
Lauri Ojansivu 776840a4c2 Use verified Moroccan analysis and structure terms for migration label 2026-09-14 19:51:24 +03:00
Lauri Ojansivu f282154255 Record dated Moroccan authentication repair and remaining uncertainties 2026-09-14 19:50:33 +03:00
Lauri Ojansivu 40491764c5 Use Moroccan authentication term in four Tamazight labels 2026-09-14 19:50:08 +03:00
Lauri Ojansivu f771fbbac9 Record dated card-control repairs and validation limits 2026-09-14 19:48:55 +03:00
Lauri Ojansivu f3d3aa4b2a Repair French Tamazight parent-change and card-display labels 2026-09-14 19:48:29 +03:00
Lauri Ojansivu 5e6f692830 Record dated multi-selection repairs and native validation limits 2026-09-14 19:47:29 +03:00
Lauri Ojansivu 027bdc4460 Repair five French Tamazight multi-selection labels 2026-09-14 19:47:03 +03:00
Lauri Ojansivu 79525861c1 Record dated parent-prefix repairs and native review limits 2026-09-14 19:45:45 +03:00
Lauri Ojansivu 16232ae092 Replace French Tamazight parent display-prefix options 2026-09-14 19:45:17 +03:00
Lauri Ojansivu 9bfebe978e Record dated full-path subtitle repair and review limits 2026-09-14 19:44:27 +03:00
Lauri Ojansivu 7acd0f72cd Replace French Tamazight full-path subtitle label 2026-09-14 19:44:01 +03:00
Lauri Ojansivu b69adf343d Record dated parent-subtitle repair and validation limits 2026-09-14 19:43:11 +03:00
Lauri Ojansivu b93379067b Replace French Tamazight parent-subtitle option 2026-09-14 19:42:47 +03:00
Lauri Ojansivu a3f7e85c9b Record dated debug terminology review and remaining translation work 2026-09-14 19:41:51 +03:00
Lauri Ojansivu 9669c2d84a Clarify Tamazight debug-predicate terminology evidence 2026-09-14 19:41:27 +03:00
Lauri Ojansivu 593999e2c0 Record dated existence-check translation repair and open validation 2026-09-14 19:37:36 +03:00
Lauri Ojansivu d32a967451 Replace French Tamazight existence-check error
Preserve the format token and specific check meaning. Adapted negative clause remains low confidence pending native grammar and browser validation.
2026-09-14 19:37:00 +03:00
Lauri Ojansivu 93a4ba4d61 Record dated parser-error terminology review and remaining requirements 2026-09-14 19:35:46 +03:00
Lauri Ojansivu e4fb6c394f Review Tamazight parser-error vocabulary and reject physical invalid senses 2026-09-14 19:35:16 +03:00
Lauri Ojansivu 1e4246680c Record dated overdue warning repair and current audit counts 2026-09-14 19:34:01 +03:00
Lauri Ojansivu ea286df3d9 Replace French Tamazight overdue-time warning
Preserve the percent-s placeholder. Adapted deadline compound and complete grammar remain low confidence pending native and browser validation.
2026-09-14 19:33:33 +03:00
Lauri Ojansivu c38876c573 Record dated audit summary reconciliation in upcoming changelog 2026-09-14 19:32:30 +03:00
Lauri Ojansivu 75b0a015b1 Consolidate translation audit summary and reconcile live locale counts 2026-09-14 19:32:08 +03:00
Lauri Ojansivu 181619d4e4 Record dated OIDC caption translation repair and open validation 2026-09-14 19:30:59 +03:00
Lauri Ojansivu 0ba2e0f6ca Replace French Tamazight OIDC caption setting label
Adapted interface-button metaphor and complete grammar remain low confidence pending native domain and browser validation. Preserve OIDC and reject unrelated pustule terms.
2026-09-14 19:30:28 +03:00
Lauri Ojansivu 983e13c1e3 Record dated computer-server translation repair and open TLS review 2026-09-14 19:29:31 +03:00
Lauri Ojansivu 5e2a932874 Use attested Tamazight computer-server terminology 2026-09-14 19:29:01 +03:00
Lauri Ojansivu 52c0ce1352 Record dated migration translation integration findings 2026-09-14 19:27:36 +03:00
Lauri Ojansivu 94c8857fd0 Trace untranslated active migration stages and unreachable legacy labels 2026-09-14 19:27:03 +03:00
Lauri Ojansivu 7f2d13424c Record dated orphaned-card translation repair and validation gaps 2026-09-14 19:25:55 +03:00
Lauri Ojansivu 2c38b996b8 Replace French Tamazight orphaned-card repair label
Adapted software metaphor and plural agreement remain low confidence pending native and browser validation.
2026-09-14 19:25:26 +03:00
Lauri Ojansivu c09b4acf3d Record dated migration message repair and remaining uncertainty 2026-09-14 19:24:14 +03:00
Lauri Ojansivu e424d4de61 Replace French Tamazight migration progress message
Adapted clause remains low confidence pending native grammar, courtesy and browser validation. Preserve wait, board transfer and latest structure meaning.
2026-09-14 19:23:49 +03:00
Lauri Ojansivu 26582efdfd Record dated daily schedule translation review and open validation 2026-09-14 19:22:40 +03:00
Lauri Ojansivu 947366780e Align Tamazight daily schedule wording with native references
Preserve the time placeholder. Adapted complete clause remains low confidence pending native grammar and browser validation.
2026-09-14 19:22:17 +03:00
Lauri Ojansivu 679b5c2aa0 Record dated Tamazight interval repairs and remaining validation 2026-09-14 19:21:17 +03:00
Lauri Ojansivu 23583a790e Replace French Tamazight numeric interval labels
Adapted recurrence phrases remain low confidence pending native grammar and browser validation. Preserve exact numeric intervals and distinct time units.
2026-09-14 19:20:51 +03:00
Lauri Ojansivu 8f3ed6f846 Update dated audit with primary IRCAM dictionary evidence 2026-09-14 19:19:39 +03:00
Lauri Ojansivu d1d06c706c Record independently read IRCAM dictionary entries for pending repairs 2026-09-14 19:19:16 +03:00
Lauri Ojansivu 94d225d20a Update dated audit with Tamazight button terminology findings 2026-09-14 19:17:48 +03:00
Lauri Ojansivu 555b6631d1 Record Tamazight interface-button sense mismatch and native source requirement 2026-09-14 19:17:25 +03:00
Lauri Ojansivu c7b111d7aa Record dated Quechua named-calendar progress and confidence limits 2026-09-14 19:16:12 +03:00
Lauri Ojansivu 6e3663c83b Correct Quechua named calendar nouns
Preserve Dangi, Minguo and Hijri names. Adapted compounds remain low confidence pending native phrase and browser validation.
2026-09-14 19:15:49 +03:00
Lauri Ojansivu 0898e6b2e4 Record dated Quechua day repairs and remaining audit work 2026-09-14 19:14:53 +03:00
Lauri Ojansivu 34dbfa64cb Repair Quechua day and daily recurrence labels from native vocabulary 2026-09-14 19:14:27 +03:00
Lauri Ojansivu 694ceb38e2 Record dated Quechua calendar repair and remaining validation 2026-09-14 19:13:09 +03:00
Lauri Ojansivu 5c5ee40b64 Repair Quechua generic calendar noun from native dictionary 2026-09-14 19:12:20 +03:00
Lauri Ojansivu 5fff622168 Update dated audit and upcoming changelog with Aromanian evidence 2026-09-14 19:10:08 +03:00
Lauri Ojansivu 4f63929ee8 Record primary Aromanian color evidence and unresolved magenta terminology 2026-09-14 19:09:43 +03:00
Lauri Ojansivu af27f700e7 Record dated saved-description verification and remaining audit gates 2026-09-14 19:05:10 +03:00
Lauri Ojansivu 0c51a3261f Join nonempty rule description fragments without browser globals 2026-09-14 19:04:42 +03:00
Lauri Ojansivu f332c63b47 Record dated Basque subject ordering repair and browser gate 2026-09-14 19:03:03 +03:00
Lauri Ojansivu 1e44111837 Order Basque named rule subjects before their final demonstrative 2026-09-14 19:02:40 +03:00
Lauri Ojansivu 0f07c684dd Record dated Basque integration review in audit and changelog 2026-09-14 19:00:20 +03:00
Lauri Ojansivu 209d1088bc Document confirmed Basque named-subject integration constraints 2026-09-14 19:00:02 +03:00
Lauri Ojansivu 1b5f65a9d5 Record dated Uzbek spelling repair and verification limits 2026-09-14 18:59:07 +03:00
Lauri Ojansivu b433730e36 Restore alif in Afghan Uzbek cancellation label 2026-09-14 18:58:42 +03:00
Lauri Ojansivu a1afa9f06f Record dated Basque subject review and group audit changelog entries 2026-09-14 18:56:50 +03:00
Lauri Ojansivu 946e1a29be Retain Basque generic member and attachment subjects 2026-09-14 18:56:06 +03:00
Lauri Ojansivu 7a9edbec6c Record dated Basque movement review and remaining repair counts 2026-09-14 18:55:00 +03:00
Lauri Ojansivu 2bb54a30b6 Retain restored Basque movement direction labels 2026-09-14 18:54:29 +03:00
Lauri Ojansivu 85621ce112 Record dated Tamazight recurrence repairs and review limits 2026-09-14 18:52:55 +03:00
Lauri Ojansivu 5b3ca809de Repair Tamazight one-unit recurrence labels 2026-09-14 18:52:35 +03:00
Lauri Ojansivu f23f01ffb8 Record dated Tamazight rule translation repairs 2026-09-14 18:51:04 +03:00
Lauri Ojansivu 7f3a0d7dbd Repair Tamazight generic rule name labels 2026-09-14 18:50:41 +03:00
Lauri Ojansivu 9ad49bcc15 Record dated calendar provenance review in translation progress 2026-09-14 18:49:07 +03:00
Lauri Ojansivu 5da10eee56 Record Tigre and Wolaytta calendar provenance gaps 2026-09-14 18:47:50 +03:00
Lauri Ojansivu f6e67998ab Record dated Inuktitut named calendar repairs and limits
Thanks to xet7 !
2026-09-14 18:43:42 +03:00
Lauri Ojansivu da6762a48c Repair Inuktitut Dangi and Minguo calendar labels
Preserve specific calendar names with the official native calendar noun. Low confidence combined naming remains under broader native and browser review.

Thanks to xet7 !
2026-09-14 18:43:12 +03:00
Lauri Ojansivu 68c9ac83b1 Record dated Tamazight national calendar repair and limits
Thanks to xet7 !
2026-09-14 18:42:18 +03:00
Lauri Ojansivu 7ba02a1794 Repair Tamazight Indian National Calendar label
Preserve the national qualifier with native component terminology. Low confidence full naming remains under broader native and browser review.

Thanks to xet7 !
2026-09-14 18:41:43 +03:00
Lauri Ojansivu 0b0555ec91 Record dated Tamazight Hebrew calendar repair and limits
Thanks to xet7 !
2026-09-14 18:40:46 +03:00
Lauri Ojansivu bd4a6a494b Repair Tamazight Hebrew calendar label
Compose native calendar noun with an attested Hebrew adjective. Low confidence full calendar naming still needs broader native and browser review.

Thanks to xet7 !
2026-09-14 18:40:16 +03:00
Lauri Ojansivu 163cb7241e Record dated Tamazight calendar adaptation and review limits
Thanks to xet7 !
2026-09-14 18:39:32 +03:00
Lauri Ojansivu 8422804a4c Repair Tamazight Buddhist calendar label
Compose native calendar noun with independently attested Buddhist adjective. Full label adapted; broader native and browser review remain open.

Thanks to xet7 !
2026-09-14 18:39:04 +03:00
Lauri Ojansivu bfe7b0d5be Record dated Basque checklist-item review and progress
Thanks to xet7 !
2026-09-14 18:37:57 +03:00
Lauri Ojansivu d36499d43a Validate Basque generic checklist-item trigger subject
Retain correct singular wording with check and uncheck temporal predicates; named-item order and live browser review remain open.

Thanks to xet7 !
2026-09-14 18:37:26 +03:00
Lauri Ojansivu 0ef147724d Record dated Inuktitut command repairs and verification
Thanks to xet7 !
2026-09-14 18:36:34 +03:00
Lauri Ojansivu b8e746289b Repair Inuktitut Edit and Delete command forms
Use native software guide imperatives instead of passive status wording. Preserve valid Roman orthography and all tokens.

Thanks to xet7 !
2026-09-14 18:36:10 +03:00
Lauri Ojansivu dc2c7aa191 Record dated Tamazight software-label repairs
Thanks to xet7 !
2026-09-14 18:35:08 +03:00
Lauri Ojansivu d5d2bf518a Repair Tamazight registration log and summary labels
Use native Moroccan software vocabulary; adapt summary punctuation to a heading. Preserve tokens and correct values.

Thanks to xet7 !
2026-09-14 18:34:45 +03:00
Lauri Ojansivu 1b484b1876 Record dated date-format translation repairs and verification
Thanks to xet7 !
2026-09-14 18:33:34 +03:00
Lauri Ojansivu b8c6fed390 Repair wrong-language date-format labels in six locales
Restore selectable format patterns in Akan, Bosnian, Slovenian, Breton and Tamazight labels. Preserve correct localized notation elsewhere and all placeholders.

Thanks to xet7 !
2026-09-14 18:32:52 +03:00
Lauri Ojansivu 55df5cb0a5 Record dated Basque incomplete status repair and remaining review
Thanks to xet7 !
2026-09-14 18:31:55 +03:00
Lauri Ojansivu 33cc02cedd Clarify Basque incomplete checklist status predicate
Distinguish marking incomplete from leaving work unfinished using an adapted native software status clause. Named-noun grammar and browser review remain open.

Thanks to xet7 !
2026-09-14 18:31:25 +03:00
Lauri Ojansivu 318266db3c Record dated Tamazight action repair and warning evidence
Thanks to xet7 !
2026-09-14 18:30:16 +03:00
Lauri Ojansivu 9024c6cf81 Repair Tamazight layout-change action label
Use the independently attested Moroccan software edit imperative. Preserve correct existing edit wording and tokens.

Thanks to xet7 !
2026-09-14 18:29:51 +03:00
Lauri Ojansivu 1d6157fa1f Record dated Breton string-template repair and evidence
Thanks to xet7 !
2026-09-14 18:28:07 +03:00
Lauri Ojansivu 65a0f76ab9 Repair Breton string-template field label
Use native software nouns for string and template in an adapted compound. Preserve neighboring formatter instructions and placeholders. Full compound and browser review remain open.

Thanks to xet7 !
2026-09-14 18:27:42 +03:00
Lauri Ojansivu 9dd8950bd7 Record dated Breton currency repairs and remaining review 2026-09-14 18:23:05 +03:00
Lauri Ojansivu f9e3111b09 Repair Breton currency field and code labels
Use native moneiz currency sense and an adapted code label, preserving the field/code distinction. Four translation suites pass; full compound/browser review remains open.
2026-09-14 18:22:37 +03:00
Lauri Ojansivu bb7e822a31 Record dated Breton zoom repairs and verification 2026-09-14 18:21:53 +03:00
Lauri Ojansivu 0aeac57446 Repair Breton zoom labels with opposing size verbs
Use native brasaat and bihanaat and existing local level wording. Focused checks preserve zoom direction and prompt consistency. Four translation suites pass; full phrase/browser review remains open.
2026-09-14 18:21:26 +03:00
Lauri Ojansivu 18e130e4c7 Record dated Breton field-type repairs and confidence limits 2026-09-14 18:20:38 +03:00
Lauri Ojansivu 3539edd8b2 Repair Breton custom-field type and option labels
Use TermBret checkbox vocabulary and existing Breton dropdown/custom-field terms. Preserve dropdown/multiselect consistency and checkbox distinction. Four translation suites pass; compound and browser review remain open.
2026-09-14 18:20:13 +03:00
Lauri Ojansivu 4b4efbecd5 Record dated Breton action repairs and remaining review 2026-09-14 18:19:21 +03:00
Lauri Ojansivu c8a14d2d0b Repair Breton preview, discard, remove and comment actions
Use native software action vocabulary; discard cancels unsaved description changes and remove clears custom color. The comment action uses an adapted add-comment phrase consistent with existing Breton comment terminology. Four translation suites pass; full phrase/browser review remains open.
2026-09-14 18:18:56 +03:00
Lauri Ojansivu 3127815329 Record dated Breton card and numeric-label repairs 2026-09-14 18:18:01 +03:00
Lauri Ojansivu 6962b2cc46 Repair Breton card type, singular count and number labels
Align French card labels with existing Breton kartenn vocabulary and use niver for numeric fields. Native definitions distinguish card and numeric meanings; focused checks preserve shared card labels and text/number distinction. Four translation suites pass.
2026-09-14 18:17:31 +03:00
Lauri Ojansivu ace382979f Record dated Breton field-label repairs and verification 2026-09-14 18:16:47 +03:00
Lauri Ojansivu b0f7f924fc Repair Breton empty selection, unknown value and color labels
Use native software vocabulary and preserve the distinction between no selection and an unknown stored value. Four translation suites pass.
2026-09-14 18:16:20 +03:00
Lauri Ojansivu 4e5c1273ad Record dated Breton navigation repairs and audit progress 2026-09-14 18:15:21 +03:00
Lauri Ojansivu bb65bf79dc Repair Breton navigation and template controls
Replace six French labels using native software return, home, default, text and template vocabulary. Preserve consistent template and text labels and distinguish return from home. Four translation suites pass.
2026-09-14 18:14:56 +03:00
Lauri Ojansivu 1b69c24928 Record dated Basque S3 review and reduced restored queue 2026-09-14 18:13:56 +03:00
Lauri Ojansivu 5bf97e219e Retain Basque S3 bucket label with native technical evidence
Native ZIUR Basque specifications explicitly use AWS S3 Bucket for storage. Preserve the restored label and test its bucket-name context and related description. The reference establishes terminology, not exact hyphenation. Three translation suites pass.
2026-09-14 18:13:25 +03:00
Lauri Ojansivu 82538d74ff Update dated translation audit with Basque status review 2026-09-14 18:12:39 +03:00
Lauri Ojansivu 7998e6aff6 Review Basque incomplete trigger against native completion-status guidance
Record independent native EHU software and dictionary evidence. Distinguish status transitions from leaving work unfinished and require both generic and named sentence contexts. No uncertain translation is accepted. Basque trigger and audit checks pass.
2026-09-14 18:12:21 +03:00
Lauri Ojansivu 39f5005a63 Record dated Breton white repair and verification progress 2026-09-14 18:11:22 +03:00
Lauri Ojansivu a123f94289 Repair Breton white palette label from native color usage
Replace French blanc with gwenn, attested in the native OPLB dictionary as the snow color and liv gwenn. Distinguish white from gray and silver in regression coverage. Four translation suites pass.
2026-09-14 18:10:55 +03:00
Lauri Ojansivu 0b342d8e69 Record dated Breton palette repairs and valid shared vocabulary
Update audit totals, source references and upcoming release notes for three palette repairs. Retain the native gray term and keep pending, restored, broader language and browser reviews open. Audit and changelog checks pass.
2026-09-14 18:10:16 +03:00
Lauri Ojansivu 2a86c331f0 Repair Breton palette labels using native color senses
Replace French dark green, gold and silver with dictionary-attested Breton. Preserve gris, which is also valid Breton, and distinguish the four palette names in regression coverage. All four focused translation suites pass.
2026-09-14 18:09:44 +03:00
Lauri Ojansivu f49dfc50c0 Record dated Breton control repairs and wider review progress
Link fourteen repairs in 092678576 and record 18627 correction values. Seven focused source and metadata checks pass. Pending and restored counts remain 288 and 12; unflagged candidate, native compound and browser review continue.

Thanks to xet7 !
2026-09-14 18:05:05 +03:00
Lauri Ojansivu 092678576e Repair Breton common controls and diagnostic labels
Replace fourteen unflagged French values with native Breton software vocabulary, keeping equivalent detail, file and confirmation labels consistent and translated text distinct from source text. Four translation suites pass. Adapted compounds and browser review remain open.

Thanks to xet7 !
2026-09-14 18:04:36 +03:00
Lauri Ojansivu df82b89e64 Record dated Moroccan reference review progress
Link native component cross-checks in 009fa7dde without changing pending or restored counts. Audit progress and changelog checks pass. Complete warning and technical phrase review remain open.

Thanks to xet7 !
2026-09-14 18:03:03 +03:00
Lauri Ojansivu 009fa7dde0 Cross-check Moroccan Tamazight dictionary component references
Read native Moroccan university calendar and software messages to independently verify calendar, user and click components. Record dictionary access limitations and full-phrase review requirements without accepting pending findings or invalidated Tuareg provenance. Audit progress checks pass.

Thanks to xet7 !
2026-09-14 18:02:42 +03:00
Lauri Ojansivu 6b55c03a1d Record dated Breton WIP action repairs and audit progress
Link four repairs in 0dc75532b and record 18613 correction values. Seven focused source and metadata suites pass. Pending and restored findings remain 288 and 12; full native phrases and browser review stay open.

Thanks to xet7 !
2026-09-14 18:00:05 +03:00
Lauri Ojansivu 0dc75532be Repair Breton WIP group creation and swimlane controls
Replace four French or mixed labels with Breton application, group creation and swimlane selection wording. Use native software apply terminology and existing locale nouns, preserving distinct actions and WIP identity. Four translation suites pass. Complete adapted compounds and browser review remain open.

Thanks to xet7 !
2026-09-14 17:59:36 +03:00
Lauri Ojansivu 23b92f217f Record dated Silesian vocabulary acceptance and audit progress
Link native shared-vocabulary review in a0aacc7a9. Current audit has 4169 retained reviews, 288 pending and 12 restored findings. Focused translation and metadata checks pass; broader language and browser review remain open.

Thanks to xet7 !
2026-09-14 17:57:39 +03:00
Lauri Ojansivu a0aacc7a9c Preserve shared native Silesian raw database terminology
Retain the raw MongoDB 3 files label after native Silesian vocabulary review, with exact value, technical identity and negative converted-export coverage. Four focused translation suites pass. Sources support the vocabulary rather than an exact standardized compound; browser and broader locale review remain open.

Thanks to xet7 !
2026-09-14 17:57:08 +03:00
Lauri Ojansivu 95c4398482 Record dated Basque completion acceptance and audit progress
Record the native completion review in 1e62fca35. Current totals are 4168 retained reviews, 12 restored findings and 289 pending. Focused translation and metadata checks pass; unresolved phrases and browser validation remain open.

Thanks to xet7 !
2026-09-14 17:55:06 +03:00
Lauri Ojansivu 1e62fca350 Retain native Basque checklist completion predicate
Validate Osatzen denean against native GNOME software completion usage and EHU list-completion vocabulary, checking actual generic trigger wiring and its distinct incomplete option. Four focused translation suites pass. Named clauses, incomplete transition, runtime discrepancy and browser validation remain open.

Thanks to xet7 !
2026-09-14 17:54:34 +03:00
Lauri Ojansivu 7c477b9647 Record dated Inuktitut recurrence review progress
Link semantic and native affix review in 5400a0ce9, keeping six uncertain phrases open and current counts unchanged. Audit progress and changelog checks pass.

Thanks to xet7 !
2026-09-14 17:53:31 +03:00
Lauri Ojansivu 5400a0ce98 Record Inuktitut recurrence and reset semantic review
Inspect fresh-card insertion and in-place checklist unchecking and read primary repeat/again affix sources. Record constraints for six still-open heading and off labels without certifying complete phrases from component words. Existing frequency and audit checks pass.

Thanks to xet7 !
2026-09-14 17:53:14 +03:00
Lauri Ojansivu c3566ac817 Record dated Inuktitut native label review progress
Link the unchanged New label review in 5bf34bc48 and retain current pending and restored counts. Audit progress and both changelog checks pass; browser and uncertain phrase review remain open.

Thanks to xet7 !
2026-09-14 17:51:28 +03:00
Lauri Ojansivu 5bf34bc481 Preserve native Inuktitut New label in admin creation controls
Review the existing syllabic value against the native Microsoft software guide and its actual standalone creation controls. Add focused value and context coverage. Latin orthography alone is not evidence of a wrong-language translation; uncertain phrases remain open.

Thanks to xet7 !
2026-09-14 17:51:01 +03:00
Lauri Ojansivu 1be541e7e4 Record dated Breton date activity and execution repairs
Record repairs in 1ba55107f and current translation audit progress. Focused source and metadata checks passed; native phrasing and browser review remain open.

Thanks to xet7 !
2026-09-14 17:49:37 +03:00
Lauri Ojansivu 1ba55107f4 Repair Breton modification activity and execution labels
Replace four French labels using native software modification terminology, native statistics last-activity wording and computing execution vocabulary. Preserve distinct label meanings. Adapted timestamp prefixes and browser formatting remain open for review. Four focused translation suites pass.

Thanks to xet7.
2026-09-14 17:46:41 +03:00
Lauri Ojansivu df9002fddf Record dated Inuktitut LDAP failure repair and reference limits
Record ea1df33fa, primary localization guide, 18605 corrections and 289 pending findings. Seven focused suites pass; full network terminology and browser validation remain open. Latin script alone is not wrong-language evidence.

Thanks to xet7.
2026-09-14 17:45:16 +03:00
Lauri Ojansivu ea1df33fa4 Repair Inuktitut LDAP connection failure message
Use the Microsoft Inuktitut guide failure term in a direct syllabic connection diagnostic and preserve %s exactly. Network-connection noun adaptation and full sentence grammar remain low confidence for native/browser review. Focused locale and placeholder suites pass.

Thanks to xet7.
2026-09-14 17:44:45 +03:00
Lauri Ojansivu 1f1e8e0093 Record dated Inuktitut rule toggle repair and confidence limits
Record 45d232fda, primary references, 18604 corrections and 290 pending findings. Seven focused translation and changelog suites pass; full native command and browser review remain open.

Thanks to xet7.
2026-09-14 17:42:24 +03:00
Lauri Ojansivu 45d232fdae Repair Inuktitut rule toggle tooltip with syllabic wording
Preserve this-rule scope and both enable/disable alternatives using existing local terminology and primary native rule/turn-off references. Full compound and command grammar are low confidence and remain open for native/browser review. Exact placeholder and focused locale checks pass.

Thanks to xet7.
2026-09-14 17:41:55 +03:00
Lauri Ojansivu 38cf848e44 Record dated Breton accessibility repairs and revised terminology
Record 669f0b31d, primary noun distinction and 18603 correction records. Seven focused suites pass; broader native grammar and browser review remain open.

Thanks to xet7.
2026-09-14 17:40:30 +03:00
Lauri Ojansivu 669f0b31d8 Repair Breton accessibility nouns and page field labels
Replace three French labels and correct two prior access-versus-accessibility terminology repairs using the native An Drouizig computing glossary. Preserve page title/body distinctions, enabled state and not-added-yet warning. Full adapted compounds and browser grammar review remain open. Four focused translation suites pass.

Thanks to xet7.
2026-09-14 17:39:57 +03:00
Lauri Ojansivu edc0fa2b34 Record dated Breton modification and access repairs
Record e3d6a1ace and 18600 exact correction entries with native references and access-label confidence limits. Seven focused translation and changelog suites pass; broader review remains open.

Thanks to xet7.
2026-09-14 17:38:47 +03:00
Lauri Ojansivu e3d6a1acec Repair Breton modification and last access labels
Replace four French values using native software modification terminology and the Ofis computing access noun. Keep last access time distinct from last modification. The access-time compound is adapted with incomplete native-label confidence; browser review remains open. Placeholder and focused locale checks pass.

Thanks to xet7.
2026-09-14 17:38:23 +03:00
Lauri Ojansivu 171c4ef2a0 Wrap Basque review changelog prose within 80 columns
Correct the overlong line found by changelogFormat after the previous metadata commit. Changelog format and release containment tests now pass.

Thanks to xet7.
2026-09-14 17:36:56 +03:00
Lauri Ojansivu f1b81d5dce Link dated Basque completion evidence review in audit and changelog
Record c4db1c19c and the unresolved semantic and runtime limits. Audit progress and changelog checks pass.

Thanks to xet7.
2026-09-14 17:36:25 +03:00
Lauri Ojansivu c4db1c19cf Record Basque completion evidence and runtime meaning discrepancy
Document primary completion and negation references, actual trigger actions and identical finished-state conditions in completion/incompletion publishers. Keep both completion phrases unaccepted pending full semantic review; queue counts unchanged.

Thanks to xet7.
2026-09-14 17:36:12 +03:00
Lauri Ojansivu aedde805d1 Record dated Basque checklist action review progress
Record 1439c4c61, primary evidence and 13 remaining restored findings. Seven focused translation and changelog suites pass; named-item grammar and browser checks remain open.

Thanks to xet7.
2026-09-14 17:34:26 +03:00
Lauri Ojansivu 1439c4c61c Validate restored Basque checklist check actions
Retain the distinct singular temporal checked and unchecked actions using actual generic trigger context, native software uncheck terminology and temporal grammar evidence. Named-item word order and browser review remain open.

Thanks to xet7.
2026-09-14 17:34:02 +03:00
Lauri Ojansivu f1c93824ca Document language picker RTL marker layout fix
Record bdf511a2b and verification limits in the Upcoming changelog.

Thanks to xet7.
2026-09-14 17:33:04 +03:00
Lauri Ojansivu bdf511a2b8 Keep language RTL marker on the first picker line
Place the nonwrapping direction marker beside the language name inside the main line, preserving the separate regional row. Add layout regressions for both UI directions and non-RTL entries. Focused Node checks pass; browser regression is syntax checked but not executed.

Thanks to xet7.
2026-09-14 17:32:54 +03:00
Lauri Ojansivu fcd3c45bdc Record dated Basque restored movement review progress
Record aba731e82, native references, 15 restored findings and 291 pending findings. Seven focused translation and changelog checks pass; browser and broader language review remain open.

Thanks to xet7.
2026-09-14 17:31:57 +03:00
Lauri Ojansivu aba731e822 Validate restored Basque generic card movement predicate
Retain the complete singular temporal clause after checking the actual generic movement row and native EHU dictionary and Euskadi grammar evidence. Directional fragments and live browser review remain open.

Thanks to xet7.
2026-09-14 17:31:34 +03:00
Lauri Ojansivu ccbcabd91e Document activity label badges and add browser palette coverage
Thanks to xet7.
2026-09-14 17:27:36 +03:00
Lauri Ojansivu 1896660a9a Render activity labels with matching card label badges
Preserve shared named palette classes, rounded badge styling and validated custom color contrast after sanitizing activity prose and rich label content. Global user CSS restrictions remain unchanged. Guard missing labels. Five positive/negative viewer checks passed; live browser rendering not verified.

Thanks to xet7.
2026-09-14 17:27:02 +03:00
Lauri Ojansivu 45e0dfdb91 Record dated Valencian restored color validation
Thanks to xet7.
2026-09-14 17:24:28 +03:00
Lauri Ojansivu 9f7f94825d Validate and retain native Valencian peach color label
Native Valencian color usage supports pressec for the actual pale-peach swatch. Keep the existing translation and CSS color unchanged. The source does not standardize CSS keyword translations; this review validates a descriptive palette label. Exact reviews and distinct-color checks passed.

Thanks to xet7.
2026-09-14 17:24:03 +03:00
Lauri Ojansivu e14467b102 Record dated Breton repository translation repairs
Thanks to xet7.
2026-09-14 17:23:05 +03:00
Lauri Ojansivu 7c2e8f8918 Repair Breton repository labels using software terminology
Replace French name, not-found and create labels. Synaptic native translation attests mirlech repository vocabulary; complete adapted phrases remain subject to native review. Exact ledger and focused checks passed.

Thanks to xet7.
2026-09-14 17:22:43 +03:00
Lauri Ojansivu d5ffeba209 Record primary Inuktitut calendar evidence and unresolved phrase review
Thanks to xet7.
2026-09-14 17:21:55 +03:00
Lauri Ojansivu 4177b62355 Document secure List picker rendering and keyboard controls
Thanks to xet7.
2026-09-14 17:21:07 +03:00
Lauri Ojansivu 95f0268890 Render opened card List dropdown titles with the secure viewer
Replace the native List select with a details-based picker rendering both current and available list titles through the shared viewer. Retain move behavior and authorization, with keyboard arrows, Home, End, Enter, Space and Escape. Eight focused checks passed. Browser policy cases syntax checked; no live application available.

Thanks to xet7.
2026-09-14 17:20:54 +03:00
Lauri Ojansivu c06c9744f9 Record Inuktitut rule state repair and remaining validation
Thanks to xet7.
2026-09-14 17:19:04 +03:00
Lauri Ojansivu 8f96ec2bc9 Repair Inuktitut rule state labels
Replace romanized status wording with native syllabic used/not-used forms for the enabled-state toggle. Primary software-use evidence supports the negative form. This is an adapted interface label with low confidence pending native UI review. Exact ledger and focused positive/negative checks passed.

Thanks to xet7.
2026-09-14 17:18:38 +03:00
Lauri Ojansivu 5eaceed480 Record card title Markdown rendering and size fixes
Thanks to xet7.
2026-09-14 17:17:59 +03:00
Lauri Ojansivu 4a01cc9beb Restore Markdown heading sizes in card titles
Override global and mobile font resets only for minicard and opened-card Markdown headings. Keep relative UI scaling and theme colors. Node checks passed; computed-size browser regression was syntax checked but not run.

Thanks to xet7.
2026-09-14 17:17:47 +03:00
Lauri Ojansivu bf207d4d27 Keep card numbers outside Markdown title source
Render minicard and opened-card numbers separately so heading syntax starts the Markdown source. Preserve the shared security-aware viewer. Renderer and source regressions passed; browser cases were syntax checked only.

Thanks to xet7.
2026-09-14 17:17:09 +03:00
Lauri Ojansivu 6c729e60e6 Cover minicard and opened card titles under security rendering policies
Both titles already use the shared viewer. Add opened-title regression coverage and browser cases for formatted content, plain links and plain source. Node checks passed; browser test syntax passed, but no local application is running.

Thanks to xet7.
2026-09-14 17:16:13 +03:00
Lauri Ojansivu e40566e42a Record dated Breton product name repair and validation progress
Thanks to xet7.
2026-09-14 17:14:39 +03:00
Lauri Ojansivu feab872406 Repair Breton custom product name label
Replace French wording and restore the omitted product qualifier using documented Breton vocabulary. The adapted compound still needs native phrase and browser validation.

Thanks to xet7.
2026-09-14 17:14:15 +03:00
Lauri Ojansivu ef69b4e0d8 Record dated Breton WIP and webhook translation repairs 2026-09-14 17:10:46 +03:00
Lauri Ojansivu a7e99aea54 Repair Breton WIP settings and webhook disable labels 2026-09-14 17:10:21 +03:00
Lauri Ojansivu bff8655462 Record dated Inuktitut weekly repairs and audit progress 2026-09-14 17:09:05 +03:00
Lauri Ojansivu 06af4a4a8e Repair Inuktitut weekly recurrence and checklist reset labels 2026-09-14 17:08:41 +03:00
Lauri Ojansivu 9982a90365 Record dated Inuktitut frequency repairs and remaining audit scope 2026-09-14 17:07:41 +03:00
Lauri Ojansivu 9a511101de Repair Inuktitut daily and monthly recurrence labels 2026-09-14 17:07:16 +03:00
Lauri Ojansivu 69099ce2fc Record Acehnese deadline repairs and confidence limits 2026-09-14 17:05:30 +03:00
Lauri Ojansivu e74dd20cc3 Use consistent Acehnese deadline labels
Replace Indonesian and Malay due-date labels and clarify the restored today label. Deadline compounds are adapted with low confidence and remain subject to native contextual review.
2026-09-14 17:04:47 +03:00
Lauri Ojansivu f1dc49b318 Record Thai linking-word validation and remaining translation work 2026-09-14 17:02:25 +03:00
Lauri Ojansivu 9e34218c72 Avoid redundant Thai equative copula in rule action phrases 2026-09-14 17:01:42 +03:00
Lauri Ojansivu 7acb6bc4a7 Document GitHub CLI mirror metadata preference 2026-09-14 17:00:41 +03:00
Lauri Ojansivu 93e61a1d68 Prefer authenticated GitHub CLI for mirror source metadata 2026-09-14 17:00:26 +03:00
Lauri Ojansivu 473c06b4e3 Record Basque actor repair and remaining rule case defects 2026-09-14 16:58:03 +03:00
Lauri Ojansivu 2cabcdb17a Replace Spanish rule actor label in Basque 2026-09-14 16:57:38 +03:00
Lauri Ojansivu 1fda6ec239 Record dated Breton optional and name translation repairs 2026-09-14 16:56:27 +03:00
Lauri Ojansivu 4b1c92cb5e Repair Breton optional and full display short name labels 2026-09-14 16:56:01 +03:00
Lauri Ojansivu 9b5ffb0b17 Record dated Breton settings translation repairs 2026-09-14 16:55:15 +03:00
Lauri Ojansivu 619eeb1c7e Repair Breton email, webhook name and server error labels 2026-09-14 16:54:51 +03:00
Lauri Ojansivu 17475fc8a0 Document mirror branch-link recovery exclusion 2026-09-14 16:54:06 +03:00
Lauri Ojansivu 7c98c00d9e Skip Wayback fallback for retired WeKan branch links 2026-09-14 16:53:55 +03:00
Lauri Ojansivu c5c64cadb4 Record Breton view translation repair progress
Date the verified source commit and native calendar/folding evidence, record 18565 exact correction entries, and keep all remaining restored, uncertain and browser work open.
2026-09-14 16:50:06 +03:00
Lauri Ojansivu 059d1fe4a1 Repair Breton board view and comment labels
Replace nine French-seeded board/calendar/list/table, fold/unfold and comment labels. Reuse existing local nouns and native Ofis calendar and folding terminology. Preserve opposite actions and literal Gantt/vendor names.

Exact correction/review ledgers, tokens, locale completeness and focused label regressions pass. Full contextual phrase and live browser validation remain open.
2026-09-14 16:49:28 +03:00
Lauri Ojansivu d00f40143a Record Breton diagnostic translation repair progress
Date the verified source commit, record native waiting/error/failure evidence and 18556 exact correction entries, and preserve all remaining restored, uncertain and browser validation work.
2026-09-14 16:48:23 +03:00
Lauri Ojansivu cdff2d19d5 Repair Breton diagnostic and migration statuses
Replace fourteen French-seeded diagnostic/status values. Preserve waiting, running, completed and failed distinctions; Pending no longer says in progress. Reuse existing terminology and native Ofis error/waiting and Kelennomp failure constructions.

Correction and review ledgers, tokens, locale completeness and status regressions pass. Full adapted phrase grammar and live browser validation remain open.
2026-09-14 16:47:50 +03:00
Lauri Ojansivu e6e975519f Record Breton entity translation repair progress
Date the verified source commit and native action evidence, record 18542 exact correction entries, and keep all remaining restored, uncertain and browser review open.
2026-09-14 16:46:01 +03:00
Lauri Ojansivu 9ccd4b8ce1 Repair Breton entity and lockout view labels
Replace fifteen French-seeded entity, archive, template, action and lockout labels using existing Breton terminology. Preserve the board and title placeholders and keep lockout wording distinct from enabled/disabled account status.

Exact correction/review inventories, placeholder preservation, locale completeness and focused regressions pass. Adapted phrase grammar and live browser validation remain open.
2026-09-14 16:45:28 +03:00
Lauri Ojansivu 3968afdfe9 Record Breton creation translation repair progress
Date the verified source commit and native direction/account evidence. Record 18527 exact correction entries while preserving the remaining uncertain, restored and browser review scope.
2026-09-14 16:44:27 +03:00
Lauri Ojansivu d95b0dd5c5 Repair Breton creation and movement labels
Replace fourteen French-seeded or mixed creation, movement and entity labels. Preserve card-to-board creation, opposite top/bottom and copy/move actions, account creation and related task/subtask names. Reuse local terminology and native Breton account-creation wording.

Exact correction/review ledgers, tokens, locale completeness and focused regressions pass. Adapted phrase grammar and live browser validation remain open.
2026-09-14 16:43:50 +03:00
Lauri Ojansivu 6c2b78bee9 Record Breton navigation translation repairs
Date the source commit and native terminology evidence, record 18513 exact correction entries, and keep the full remaining review scope open.
2026-09-14 16:42:40 +03:00
Lauri Ojansivu bb51e1fcfe Repair Breton navigation and export controls
Replace eighteen French-seeded close/open, import/export, viewer, checklist, attachment and cancellation labels. Reuse existing local nouns and terms with native Ofis computing verbs; preserve PDF, opposite actions and equivalent popup labels.

Exact correction/review inventories, token preservation, locale completeness and focused label regressions pass. Native whole-phrase grammar and live browser validation remain open.
2026-09-14 16:42:07 +03:00
Lauri Ojansivu 7acd56dc9f Record Breton filter translation repair progress
Date the verified source commit and native terminology evidence, record 18495 exact correction entries, and preserve all remaining uncertain, restored and browser validation work.
2026-09-14 16:41:00 +03:00
Lauri Ojansivu 961713c564 Repair Breton filter and account status labels
Replace eight French-seeded shortcut, advanced-filter, People status, generic active and migration-validation labels. People enabled/disabled options match loginDisabled rather than the separate lockout filter. Reuse existing Breton terms and native Ofis computing verbs.

Verify correction and review ledgers, exact enabled/disabled distinctions, shortcut labels and all-locale completeness. Adapted phrase grammar and live browser validation remain open.
2026-09-14 16:40:29 +03:00
Lauri Ojansivu 8a87f35673 Record Breton selection translation repairs and evidence
Date the verified repair commit, record ten additional unflagged corrections, and preserve the remaining native grammar, restored-value and browser review scope.
2026-09-14 16:39:21 +03:00
Lauri Ojansivu fb0b34b7dd Repair French-seeded Breton selection controls
Translate ten selection, filter, color, board and attachment labels using existing Breton terminology and Ofis computing action verbs. Filter-to-selection describes adding currently filtered cards to multiselection, as implemented by the sidebar handler.

Verify exact correction and review inventories, placeholder preservation and locale completeness. Extend regression coverage to preserve distinct copy/move commands and reject the French seed. Full adapted-phrase grammar and live browser validation remain open.
2026-09-14 16:38:49 +03:00
Lauri Ojansivu e09c0875de Record Danish age-label validation and current audit counts
Date the unchanged review with its source commit and dictionary evidence. Derive the complete Danish queue counts from the current audit classification, retaining 19 restored values and 299 pending findings for further review.
2026-09-14 16:37:00 +03:00
Lauri Ojansivu 824dd005ef Validate restored Danish age wording
Retain Dage gammel with Danish dictionary evidence and reject the Swedish pulled replacement in regression coverage. Current application source does not use the key, so no rendered UI validation is claimed. Exact review and correction ledgers pass.
2026-09-14 16:36:27 +03:00
Lauri Ojansivu 97ece442d1 Record Galician attachment translation repair progress
Date the exact correction and unchanged-review counts, link the verified source commit and dictionary evidence, and list all languages touched by the new attachment action keys. Keep remaining restored, uncertain, unflagged and browser review open.
2026-09-14 16:35:28 +03:00
Lauri Ojansivu bc26fa8904 Repair Galician attachment trigger agreement
Use masculine attachment-specific action labels while preserving feminine shared labels for other subjects. Reuse existing action translations in other locales. Replace Portuguese attachment/card fragments in the Galician regional locale.

Retain three correct original Galician fragments with their contextual explanation. Verify correction and review ledgers, all-locale label reuse, member agreement and real Jade compilation. Browser regression is added and syntax-checked; live browser and whole-language review remain open.
2026-09-14 16:34:35 +03:00
Lauri Ojansivu 0f550985a8 Record Basque rule grammar repair and remaining phrase review
Thanks to xet7.
2026-09-14 16:25:56 +03:00
Lauri Ojansivu afbff51dfb Repair Basque trigger linking-verb composition
Replace Spanish es with native Basque da and omit the separate linking verb in Basque trigger templates whose action labels already contain the temporal verb clause. Preserve other locales and language switching. Add positive, negative, helper-runtime and browser regression coverage. Node and Jade checks pass; browser execution and full Basque fluency review remain open.

Thanks to xet7.
2026-09-14 16:25:20 +03:00
Lauri Ojansivu a67a168cb3 Record Acehnese restored repairs and native-source limits
Thanks to xet7.
2026-09-14 16:22:54 +03:00
Lauri Ojansivu 6aa5991de4 Repair restored Acehnese authentication text and assignment meanings
Use native authentication cancellation, text and success vocabulary; distinguish a task assignee from questioning wording and repair the Malay filter label. Full connection/assignment phrase grammar and browser validation remain open.

Thanks to xet7.
2026-09-14 16:22:12 +03:00
Lauri Ojansivu d643fe977c Wrap Greenlandic calendar changelog entry at 80 columns
Thanks to xet7.
2026-09-14 16:20:35 +03:00
Lauri Ojansivu 25c66aa964 Record Greenlandic calendar repair and validation limits
Thanks to xet7.
2026-09-14 16:20:01 +03:00
Lauri Ojansivu 019040ce19 Repair Greenlandic Indian national calendar label
Translate the English label using native India, national and calendar vocabulary. Full compound inflection remains under review. Add structural and Member Settings UI regression coverage; browser test is syntax-checked but not yet run.

Thanks to xet7.
2026-09-14 16:19:25 +03:00
Lauri Ojansivu 92b32df3c2 Record native Veps and Valencian term review evidence
Thanks to xet7.
2026-09-14 16:17:41 +03:00
Lauri Ojansivu 39af6aae51 Preserve reviewed Veps and Valencian source-identical vocabulary
Native Veps uses server and Valencian uses errors. Protect these exact per-locale keys from placeholder filling, while testing that prose and other locales remain translatable. Update the completeness guard for the repaired Sardinian wording and reviewed native terms; language fluency review remains separate.

Thanks to xet7.
2026-09-14 16:16:55 +03:00
Lauri Ojansivu 9b67b11cb7 Record Breton rule-editor repairs and grammar review evidence
Thanks to xet7.
2026-09-14 16:15:14 +03:00
Lauri Ojansivu 49bd242c94 Repair Breton rule-editor fields and action language
Replace eight French field/action labels using existing Breton terminology and the Ofis computing glossary. Preserve recipient, date operation, color and swimlane contexts; complete shared grammar and browser review remain open.

Thanks to xet7.
2026-09-14 16:14:46 +03:00
Lauri Ojansivu 27fcc4ba5a Record Breton completion-state repairs and remaining review
Thanks to xet7.
2026-09-14 16:13:16 +03:00
Lauri Ojansivu a9ea9d4623 Repair Breton completion-state translation language
Use existing Breton completion and checklist-uncompletion vocabulary for three French-seeded labels. Shared trigger clause grammar and browser verification remain open.

Thanks to xet7.
2026-09-14 16:12:15 +03:00
Lauri Ojansivu d948b78098 Record dated Breton date-trigger translation repairs
Thanks to xet7.
2026-09-14 16:11:46 +03:00
Lauri Ojansivu 48c7e8aa41 Repair Breton date-change trigger labels
Replace mixed French labels with Breton clauses preserving set-or-changed behavior and each date field. Complete phrase fluency and browser rendering remain under review.

Thanks to xet7.
2026-09-14 16:11:18 +03:00
Lauri Ojansivu d145d17771 Record dated Breton restore translation repairs 2026-09-14 16:07:33 +03:00
Lauri Ojansivu ba815b5312 Repair French Breton restore controls 2026-09-14 16:07:10 +03:00
Lauri Ojansivu 56f6486640 Record dated Breton migration translation repairs 2026-09-14 16:06:29 +03:00
Lauri Ojansivu 698acc6667 Repair French Breton migration status and recurrence labels 2026-09-14 16:03:14 +03:00
Lauri Ojansivu 6c8bc3eb16 Record dated Breton list menu translation repairs 2026-09-14 16:02:26 +03:00
Lauri Ojansivu ed962d0269 Repair French Breton list name template and insertion labels 2026-09-14 16:02:02 +03:00
Lauri Ojansivu 068b99a634 Record dated Breton card and missing item translation repairs 2026-09-14 16:01:29 +03:00
Lauri Ojansivu 04510ecd2f Repair French Breton card controls and missing item messages 2026-09-14 16:01:03 +03:00
Lauri Ojansivu 026bf9dcbc Record dated Breton attachment translation repair progress 2026-09-14 16:00:11 +03:00
Lauri Ojansivu 0a3320e69a Repair French Breton attachment export and upload controls 2026-09-14 15:59:49 +03:00
Lauri Ojansivu 42b8c46d5e Record dated Breton board and filter translation repairs 2026-09-14 15:59:10 +03:00
Lauri Ojansivu e7f8f5a13e Repair Breton board privacy title and filter controls 2026-09-14 15:58:47 +03:00
Lauri Ojansivu 2311ade93e Record dated Breton account translation repair progress 2026-09-14 15:57:59 +03:00
Lauri Ojansivu 6af6d3ac3d Repair French Breton account login and password controls 2026-09-14 15:57:36 +03:00
Lauri Ojansivu 5b3c0f99c6 Record dated Breton date rule translation repair progress 2026-09-14 15:57:00 +03:00
Lauri Ojansivu 3bddd8e142 Repair French Breton date rule fields and activity text 2026-09-14 15:56:38 +03:00
Lauri Ojansivu 3d99eea4ba Record dated Breton voting translation repair progress 2026-09-14 15:55:42 +03:00
Lauri Ojansivu 9f4e6a56f8 Repair French Breton voting controls and public board message 2026-09-14 15:55:22 +03:00
Lauri Ojansivu ee980f3b8a Record dated Breton organization and watch translation repairs 2026-09-14 15:54:46 +03:00
Lauri Ojansivu 14cb8393b7 Repair French Breton organization watch and read controls 2026-09-14 15:54:26 +03:00
Lauri Ojansivu 35c4ec22a4 Record dated Breton sorting translation repair progress 2026-09-14 15:53:47 +03:00
Lauri Ojansivu dda942c11b Repair French Breton sorting controls and order labels 2026-09-14 15:53:26 +03:00
Lauri Ojansivu 30c305b22d Record dated Breton calendar navigation translation repairs 2026-09-14 15:50:39 +03:00
Lauri Ojansivu 66c45f6443 Repair French Breton calendar month navigation labels 2026-09-14 15:50:19 +03:00
Lauri Ojansivu 59c4d88b80 Record dated Breton removal and update translation repairs 2026-09-14 15:49:39 +03:00
Lauri Ojansivu c576850ef5 Repair French Breton removal and update action controls 2026-09-14 15:49:19 +03:00
Lauri Ojansivu 417467ef51 Record dated Breton automation translation repair progress 2026-09-14 15:48:41 +03:00
Lauri Ojansivu 000d7ee63e Repair French Breton automation rule and action labels 2026-09-14 15:48:04 +03:00
Lauri Ojansivu 1fc8ce939b Record dated Breton add item translation repairs 2026-09-14 15:47:22 +03:00
Lauri Ojansivu a4aa7e3e79 Repair French Breton add item and user selection controls 2026-09-14 15:46:33 +03:00
Lauri Ojansivu 8a1c564796 Record dated Breton avatar and profile translation repairs 2026-09-14 15:45:48 +03:00
Lauri Ojansivu 7c44e4f55d Repair French Breton avatar profile and notification controls 2026-09-14 15:45:25 +03:00
Lauri Ojansivu cd3f40d5b6 Record dated Breton settings and team translation repairs 2026-09-14 15:44:42 +03:00
Lauri Ojansivu 7223612e7a Repair French Breton settings permissions and team controls 2026-09-14 15:44:15 +03:00
Lauri Ojansivu 716e0d9701 Record dated Breton date validation translation repairs 2026-09-14 15:43:35 +03:00
Lauri Ojansivu 98947b8243 Repair French Breton date headings and validation controls 2026-09-14 15:43:09 +03:00
Lauri Ojansivu 28230bcf86 Record dated Breton date and duration translation progress 2026-09-14 15:42:25 +03:00
Lauri Ojansivu 787ffdf74b Repair French Breton date duration and filter controls 2026-09-14 15:41:51 +03:00
Lauri Ojansivu fbef64733d Record dated Breton deletion repair and remaining translation reviews 2026-09-14 15:41:12 +03:00
Lauri Ojansivu cd100eeaa6 Repair French swimlane deletion title in Breton 2026-09-14 15:40:51 +03:00
Lauri Ojansivu d440caf35a Record dated Breton copy and move translation repairs 2026-09-14 15:40:28 +03:00
Lauri Ojansivu 625436b63f Translate Breton copy move template checklist and account controls 2026-09-14 15:37:38 +03:00
Lauri Ojansivu 7ea860c261 Record dated Breton archive translation repairs and review limits 2026-09-14 15:36:37 +03:00
Lauri Ojansivu b1170bc338 Repair French Breton archive actions confirmations and states 2026-09-14 15:36:05 +03:00
Lauri Ojansivu f41cb3b5ab Record Galician trigger agreement repair and remaining audit work 2026-09-14 15:34:49 +03:00
Lauri Ojansivu a196c64eb8 Repair Galician member and assignee trigger subject agreement 2026-09-14 15:34:16 +03:00
Lauri Ojansivu acb2e390cb Record assigned-card shortcut review and regional style limits 2026-09-14 15:32:49 +03:00
Lauri Ojansivu 64f1d73678 Validate assigned-card shortcut meaning and preserve valid possessive 2026-09-14 15:32:21 +03:00
Lauri Ojansivu 7396c39ba9 Record provisional Bambara epoch fills and terminology review limits 2026-09-14 15:31:25 +03:00
Lauri Ojansivu a06bf0cca5 Fill Bambara Hijri epoch placeholders with provisional full labels 2026-09-14 15:30:56 +03:00
Lauri Ojansivu ced1b46323 Record Breton popup translation repairs and verification limits 2026-09-14 15:29:53 +03:00
Lauri Ojansivu 6db6c7b164 Translate French Breton board list label date and language popups 2026-09-14 15:29:28 +03:00
Lauri Ojansivu 76a707c11f Record dated Breton member and label translation repairs 2026-09-14 15:28:30 +03:00
Lauri Ojansivu b72b9d1fda Repair French member and label interface wording in Breton 2026-09-14 15:28:00 +03:00
Lauri Ojansivu 1147a57d50 Record Breton assignee translation repairs and audit progress 2026-09-14 15:26:53 +03:00
Lauri Ojansivu 87e2ed6fa8 Repair French assignee labels in Breton and validate absence wording 2026-09-14 15:26:29 +03:00
Lauri Ojansivu 30d63e856d Record Sardinian colour evidence and remaining translation review 2026-09-14 15:25:31 +03:00
Lauri Ojansivu 04711b646c Use attested Sardinian fuchsia label for CSS magenta colour 2026-09-14 15:25:03 +03:00
Lauri Ojansivu b0a1ec606b Record Greenlandic calendar fill provenance and remaining review 2026-09-14 15:23:30 +03:00
Lauri Ojansivu e4860ab8e9 Localize Greenlandic Buddhist calendar placeholder 2026-09-14 15:23:07 +03:00
Lauri Ojansivu 7974c130c1 Record dated Veps authentication wording repair and audit limits 2026-09-14 15:22:06 +03:00
Lauri Ojansivu 780f51f5df Use Veps authentication cancel wording consistent with native software 2026-09-14 15:21:29 +03:00
Lauri Ojansivu e82ffa7fd5 Document Nahuatl calendar reference distinctions and unresolved wording 2026-09-14 15:20:47 +03:00
Lauri Ojansivu 7daece578c Record dated Acehnese absence-label repair and review limits 2026-09-14 15:19:45 +03:00
Lauri Ojansivu 66a3da76c3 Repair Indonesian no-label filter in Acehnese and retain absence label 2026-09-14 15:19:22 +03:00
Lauri Ojansivu 88cdb4d9bb Record dated Valencian storage-description review progress 2026-09-14 15:18:06 +03:00
Lauri Ojansivu 4ddcb81c9c Validate Valencian S3 bucket endpoint and port descriptions 2026-09-14 15:17:43 +03:00
Lauri Ojansivu 9b044a637a Record provisional Manx calendar fill and remaining audit scope 2026-09-14 15:17:10 +03:00
Lauri Ojansivu c5c91129bc Fill Manx Coptic calendar placeholder with provisional terminology 2026-09-14 15:16:40 +03:00
Lauri Ojansivu d7e8058400 Record Galician action repairs in dated translation audit 2026-09-14 15:15:38 +03:00
Lauri Ojansivu f52ab6adf0 Repair Portuguese nouns in Galician card completion actions 2026-09-14 15:15:17 +03:00
Lauri Ojansivu a0e8727209 Record dated schedule and idle translation audit progress 2026-09-14 15:14:31 +03:00
Lauri Ojansivu 287e99dd23 Correct Galician schedule noun and validate idle-state labels 2026-09-14 15:13:47 +03:00
Lauri Ojansivu beea28ada9 Record dated completion reviews and Valencian error-count repair 2026-09-14 15:10:55 +03:00
Lauri Ojansivu 3b4941c345 Resolve completion-label context and correct Valencian error count 2026-09-14 15:10:30 +03:00
Lauri Ojansivu 675e463164 Record dated export-capacity translation review 2026-09-14 15:09:19 +03:00
Lauri Ojansivu 99a1e4835e Validate Danish Basque and Galician free disk-space labels 2026-09-14 15:08:55 +03:00
Lauri Ojansivu 306dddb3a8 Document corrected mirror checkout paths and cleanup 2026-09-14 15:07:46 +03:00
Lauri Ojansivu 23de748538 Reuse established mirror checkouts outside the content archive 2026-09-14 15:07:32 +03:00
Lauri Ojansivu fdb009d183 Record dated Basque ticket terminology review 2026-09-14 15:06:51 +03:00
Lauri Ojansivu 37a664a5cc Retain attested Basque ticket-number terminology 2026-09-14 15:06:31 +03:00
Lauri Ojansivu 53e62c0eab Record dated Valencian agreement repair and regional-review limits 2026-09-14 15:05:57 +03:00
Lauri Ojansivu c4e6aa1c0a Repair Valencian attachment-label gender agreement 2026-09-14 15:05:38 +03:00
Lauri Ojansivu bf97c6447d Record Silesian terminology evidence and avoid unverified replacements 2026-09-14 15:05:04 +03:00
Lauri Ojansivu 2b20b1b22f Document mirror Git progress and dated Acehnese review status 2026-09-14 15:04:13 +03:00
Lauri Ojansivu 567c770c8a Stream mirror Git command output and force transfer progress 2026-09-14 15:04:10 +03:00
Lauri Ojansivu c44dca1703 Retain dictionary-attested Acehnese more label 2026-09-14 15:03:00 +03:00
Lauri Ojansivu d08d0ffd13 Record dated Basque placement review and remaining audit work 2026-09-14 15:02:14 +03:00
Lauri Ojansivu 918d17c6ba Validate Basque rule placement and list ownership labels 2026-09-14 15:01:55 +03:00
Lauri Ojansivu d04f5623bb Record dated Basque archive repairs and remaining audit scope 2026-09-14 15:01:25 +03:00
Lauri Ojansivu 1b228a63f4 Use Basque archive terminology consistently in rule actions 2026-09-14 15:01:06 +03:00
Lauri Ojansivu 3a4b07831d Merge remote-tracking branch 'origin/main' 2026-09-14 15:01:02 +03:00
Lauri Ojansivu 2a67bc55cd Record dated Basque trigger repair and unresolved composition 2026-09-14 15:00:13 +03:00
Lauri Ojansivu e9d46cb113 Replace Spanish end-date fragment in Basque trigger 2026-09-14 14:59:52 +03:00
Lauri Ojansivu 89d7b5d5bd Record dated Esperanto color repair and remaining verification scope 2026-09-14 14:58:53 +03:00
Lauri Ojansivu d454a58fff Use explicit Esperanto lime-color terminology 2026-09-14 14:58:32 +03:00
Lauri Ojansivu 9f0d5cad80 Record inspected Tamazight wrong-language queue and dictionary leads 2026-09-14 14:57:41 +03:00
Lauri Ojansivu a7978038b5 Record dated Manx calendar repairs and provisional terminology 2026-09-14 14:56:37 +03:00
Lauri Ojansivu cc3e80e8bd Localize Manx tabular calendar variants with distinct epoch wording
Use dictionary-attested tabular, civil and astronomical vocabulary. Starting-date wording for epoch is provisional and requires native terminology review.
2026-09-14 14:56:13 +03:00
Lauri Ojansivu da6d127b04 Record dated Greenlandic seed repair and native-review limits 2026-09-14 14:55:16 +03:00
Lauri Ojansivu ed5a0d8792 Replace Azerbaijani seed in Greenlandic calendar setting
Use Greenlandic calendar arrangement and date-display wording. Compound grammar is provisional and needs native review; remaining calendar variants are still under audit.
2026-09-14 14:54:54 +03:00
Lauri Ojansivu 2c13f7fbc5 Record dated Valencian search-token verification 2026-09-14 14:54:05 +03:00
Lauri Ojansivu be334a5bf0 Verify and retain working Valencian checklist search tokens 2026-09-14 14:53:45 +03:00
Lauri Ojansivu fe2682ed01 Record dated Valencian color and account-action review 2026-09-14 14:53:12 +03:00
Lauri Ojansivu 5c71990507 Validate Valencian color names and contextual unlock-all scope 2026-09-14 14:52:51 +03:00
Lauri Ojansivu 86c6940248 Record dated cancellation-label review and unresolved translation scope 2026-09-14 14:52:09 +03:00
Lauri Ojansivu d3ad084e78 Retain attested Asturian and Turkmen cancellation labels 2026-09-14 14:51:49 +03:00
Lauri Ojansivu fafe1fd93d Record dated short-label translation review and remaining audit work 2026-09-14 14:51:16 +03:00
Lauri Ojansivu 69b8202ed3 Validate Asturian labels Tamil Telugu headings and Uyghur JSON example 2026-09-14 14:50:55 +03:00
Lauri Ojansivu 3891bbe686 Refresh Upcoming translation summary and remaining audit status 2026-09-14 14:50:26 +03:00
Lauri Ojansivu d7f9970c52 Record dated Swedish and Arabic translation review progress 2026-09-14 14:47:48 +03:00
Lauri Ojansivu 4da4c40e43 Validate Swedish role warnings and Arabic due-date and assignee labels 2026-09-14 14:47:24 +03:00
Lauri Ojansivu acd57f5e01 Record dated Swedish due-date translation repairs 2026-09-14 14:46:52 +03:00
Lauri Ojansivu 93f284c8a4 Correct Swedish Due Cards labels to include future deadlines 2026-09-14 14:46:26 +03:00
Lauri Ojansivu a319076e4d Record dated Thai translation review and remaining phrase work 2026-09-14 14:45:32 +03:00
Lauri Ojansivu 9111dcfbeb Validate Thai interface units search vocabulary and product names 2026-09-14 14:45:08 +03:00
Lauri Ojansivu 5a302f1fd7 Record dated Valencian accessibility and storage review progress 2026-09-14 14:44:05 +03:00
Lauri Ojansivu ff7e2b0828 Validate Valencian accessibility storage and interval labels 2026-09-14 14:43:40 +03:00
Lauri Ojansivu e0accf0a1d Record dated Valencian display and checked-item repair progress 2026-09-14 14:43:05 +03:00
Lauri Ojansivu aa10062078 Repair Valencian checked-item prose and validate display settings 2026-09-14 14:42:40 +03:00
Lauri Ojansivu fcb7a0af5f Record dated Valencian checklist repairs and remaining token review 2026-09-14 14:41:50 +03:00
Lauri Ojansivu e4a846162f Replace mixed English checklist prose in Valencian labels 2026-09-14 14:41:23 +03:00
Lauri Ojansivu cb4031487f Record dated Valencian lockout and migration review progress 2026-09-14 14:40:37 +03:00
github-actions[bot] 79fe622d20 Bump versions for v11.79 2026-09-14 11:40:29 +00:00
Lauri Ojansivu 25818620cf Validate Valencian lockout and migration outcome wording 2026-09-14 14:40:15 +03:00
Lauri Ojansivu 2dd63f3898 Record dated Valencian imperative repair and settings review 2026-09-14 14:39:35 +03:00
Lauri Ojansivu 264ca788cf Prepare v11.79 release 2026-09-14 14:38:57 +03:00
Lauri Ojansivu 8e98c53929 Merge remote-tracking branch 'origin/main' 2026-09-14 14:38:37 +03:00
Lauri Ojansivu 3f21ac57b2 Update upcoming changelog and dated translation repair progress 2026-09-14 14:38:08 +03:00
Lauri Ojansivu 12ba3ba1ae Validate Basque authentication and date-change activity wording 2026-09-14 14:37:28 +03:00
Lauri Ojansivu 710a2df539 Document release prepare parser fix in upcoming changelog 2026-09-14 14:36:24 +03:00
Lauri Ojansivu ac63da6d00 Recognize translation section headings without misreading release summary prose 2026-09-14 14:36:10 +03:00
Lauri Ojansivu bca63bad11 Record dated Basque storage and schedule translation review 2026-09-14 14:35:45 +03:00
Lauri Ojansivu 241fc457a0 Validate Basque storage connection and scheduled interval labels 2026-09-14 14:35:26 +03:00
Lauri Ojansivu ddfd158bb6 Record dated Basque search validation and legal translation review 2026-09-14 14:34:52 +03:00
Lauri Ojansivu fbf809882d Validate Basque search errors sort directions and legal acceptance labels 2026-09-14 14:34:32 +03:00
Lauri Ojansivu 01f2205bec Record dated Basque settings and search translation review 2026-09-14 14:33:59 +03:00
Lauri Ojansivu 097b04e1d3 Validate Basque weekday labels object errors and search vocabulary 2026-09-14 14:33:35 +03:00
Lauri OjansivuandCopilot Autofix powered by AI 55e4aec262 Potential fix for code scanning alert no. 541: Incomplete regular expression for hostnames
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-09-14 14:33:30 +03:00
Lauri Ojansivu 2a194cfb0a Update audit with Basque reminders and shared language flag verification 2026-09-14 14:32:59 +03:00
Lauri Ojansivu 685b50fe12 Validate Basque reminders deletion warnings and notification labels 2026-09-14 14:32:38 +03:00
Lauri Ojansivu 0397fc89b4 Verify language flags through the shared picker helper 2026-09-14 14:32:20 +03:00
Lauri Ojansivu 396f6d61a5 Record Veps server-error repair in new upcoming release and audit 2026-09-14 14:31:37 +03:00
Lauri Ojansivu 9f0f038cde Replace Finnish server error label with Veps wording 2026-09-14 14:30:42 +03:00
1245 changed files with 114304 additions and 17094 deletions

No files matched your search

+13 -4
View File
@@ -17,7 +17,7 @@ metadata:
area: auth
tagline: "Wire up authentication in Meteor 3 (accounts-password, OAuth providers, 2FA, passwordless, email verification)."
bundle: ["fullstack"]
docs_synced_at: "2026-09-08"
docs_synced_at: "2026-09-23"
license: MIT
---
@@ -116,14 +116,19 @@ Meteor.startup(() => {
After restart and login, `Meteor.loginToken*` no longer appears in
`localStorage`; the browser receives an HttpOnly `meteor_login_token`
cookie. Each tab keeps its own in-memory credentials.
cookie. Each tab keeps its own in-memory credentials. DDP authentication still
reads the resume token into memory; this does not protect it from a malicious
script already executing in the application origin.
With `accounts-base@3.3.1` (Meteor 3.5.2), the server handles cookie endpoints
only when it is opted in too. A client-only setting can therefore produce an
HTML response or 404 from later handlers. The `/set` body limit is 4096 bytes;
larger requests return HTTP 413. See
[cookie endpoint troubleshooting](references/http-only-cookies.md) for the
routes, version boundary, and diagnostic checks.
routes, version boundary, and diagnostic checks. Meteor 3.6-beta.1's
`accounts-base@3.4.0-beta360.1` also requires trusted origins and valid tokens,
uses `SameSite=Strict`, and adds a separate per-address endpoint rate limit.
Review custom callers and cross-site entry flows before upgrading.
## OAuth (Google example)
@@ -221,7 +226,11 @@ Set `userCreationDisabled: true` for sign-in-only flows. Configure
`tokenSequenceLength`, `loginTokenExpirationHours`, and the
`Accounts.emailTemplates.sendLoginToken` template on the server. Treat the
token-request method as an abuse-sensitive endpoint and rate-limit repeated
requests.
requests. With Meteor 3.6-beta.1's `accounts-passwordless@3.1.2-beta360.1`
and `accounts-base@3.4.0-beta360.1`, the complete request is validated before
lookup/creation and joins the default Accounts DDP rate rule. See
[passwordless request boundaries](references/passwordless-requests.md)
for custom callers and earlier packages.
## 2FA
@@ -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
interval reset.
@@ -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:
```javascript
Accounts.config({
useHttpOnlyCookies: true,
httpOnlyCookieAllowedOrigins: ["https://app.example.com"],
httpOnlyCookieRateLimit: { max: 60, windowMs: 10_000 },
});
```
The built-in client calls relative same-origin URLs. An allowlist does not
retarget it to a remote server. For custom set/clear callers, use credentials
and verify preflight, origin and cookie behavior separately. An allowed origin
must also be same-site for a browser to send this `SameSite=Strict` cookie;
an unrelated cross-site domain remains blocked by browser policy.
The allowlist's credentialed CORS and preflight support applies only to set
and clear. Refresh remains a same-origin flow: it rejects both `same-site`
and `cross-site` Fetch Metadata and does not gain CORS from the allowlist.
Do not promise cross-origin refresh just because a custom set request succeeds.
Cookies use `HttpOnly`, `SameSite=Strict`, `Path=/` and `Secure` over HTTPS.
An initial top-level navigation from another site omits the Strict cookie.
Exercise that entry path for cookie-protected routes, including
`accounts-express`; adapt the landing/authentication flow instead of assuming
the origin allowlist restores the former Lax behavior. Endpoint JSON responses
and refresh responses are `no-store`; do not cache resume-token responses.
Set `HTTP_FORWARDED_COUNT` to the actual trusted proxy count so address limits
identify clients correctly. Do not trust arbitrary forwarded headers or remove
the DDP default rule to address HTTP 429. `httpOnlyCookieRateLimit: false`
disables the separate HTTP limit; use only with an intentional replacement.
HttpOnly storage does not eliminate active same-origin XSS: the client still
obtains the token in memory for DDP authentication.
## Diagnose failures on earlier packages
1. Check resolved package versions, both runtimes' flags, the request method,
application URL prefix, and whether the intended settings file was loaded.
@@ -0,0 +1,40 @@
# Passwordless request boundaries
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.
---
Source: https://github.com/meteor/meteor/blob/devel/v3-docs/docs/api/accounts.md
Source: https://github.com/meteor/meteor/blob/devel/v3-docs/docs/generators/changelog/versions/3.6.0.md
+5 -2
View File
@@ -5,7 +5,7 @@ description: >
the failing layer or fix is known. Triggers on server crashes, client-only
errors, stuck subscriptions, DDP or WebSocket disconnects, Minimongo/server
data mismatches, hanging or flaky tests, slow builds, --inspect, console.log,
.only, Playwright traces, or requests to debug a Meteor app. Use this skill
.only, Playwright traces, Instrumentation lifecycle events, or requests to debug a Meteor app. Use this skill
when evidence must distinguish Meteor tool, server, client, data, test,
browser, mobile, or production boundaries. For test setup and authoring use
meteor-testing; after confirming a domain cause, hand the repair to the
@@ -17,7 +17,7 @@ metadata:
area: ops
tagline: "Diagnose Meteor 3 failures across builds, server/client runtime, DDP, Mongo, tests, browsers, mobile, and production."
bundle: ["essentials", "fullstack", "ops"]
docs_synced_at: "2026-09-11"
docs_synced_at: "2026-09-23"
license: MIT
---
@@ -74,6 +74,9 @@ can reject the current hypothesis.
full user documents.
- Treat `console.log` as temporary instrumentation. Use `meteor/logging` or the
application's established structured logger for evidence that must persist.
- For server lifecycle evidence on Meteor 3.6-beta.1, use the optional
`instrumentation` package through [Logs and instrumentation](references/logs-and-instrumentation.md).
Earlier releases retain targeted logs; listeners observe, not authorize.
- Use `.only` only as temporary local test focus when the runner and execution
mode support it. Remove it and run the broader suite before handoff.
- Prefer observable readiness over sleeps: subscription ready, settled method,
@@ -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.
---
Source: https://github.com/meteor/meteor/blob/devel/v3-docs/docs/performance/ddp-transport.md
Source: https://github.com/meteor/meteor/blob/devel/v3-docs/docs/generators/changelog/versions/3.5.2.md
Source: https://github.com/meteor/meteor/blob/devel/v3-docs/docs/generators/changelog/versions/3.6.0.md
@@ -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:
```javascript
import { Instrumentation } from "meteor/instrumentation";
const handle = Instrumentation.on("method.end", (event) => {
if (event.durationMs > 200) {
console.warn("[server slow method]", {
name: event.name,
traceId: event.traceId,
durationMs: event.durationMs,
});
}
});
// Call when this observation is no longer needed, not after every event.
export function stopTiming() {
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`
disables emission initially; `Instrumentation.configure({ enabled: false })`
can disable it at runtime. Runtime configuration can override the environment
default. Bound and clean up any application-maintained correlation maps.
## Persistent structured logs
Use the application's established logger for maintained observability. Meteor's
+8 -3
View File
@@ -18,7 +18,7 @@ metadata:
area: ops
tagline: "Ship Meteor 3 apps to production (meteor build, Galaxy, Docker/Kubernetes, settings.json, env vars, Node version matching)."
bundle: ["ops"]
docs_synced_at: "2026-08-26"
docs_synced_at: "2026-09-23"
license: MIT
---
@@ -39,9 +39,14 @@ Match the Node version to the bundled Meteor Node:
|---|---|
| 3.0 | 20 |
| 3.1 through 3.4 | 22 |
| 3.5+ | 24 |
| 3.5.x and 3.6-beta.0 | 24 |
| 3.6-beta.1 | 26 (26.8.2) |
Mismatch causes runtime errors. Run `meteor node -v` to confirm.
Run `meteor node -v` and `meteor npm -v` in the target app to confirm.
Meteor 3.6-beta.1 bundles npm 11.19.0. Match the deployed runtime and native
dependency build environment to that release; rebuild and test native npm
modules for Node 26 and the production architecture before deploying beta.1.
The host installer prerequisite does not select the bundled runtime.
## Decision flow
@@ -37,7 +37,10 @@ CMD ["node", "main.js"]
This sample targets Meteor 3.1 through 3.4. Match both `node:` tags to the
bundled Node major: Meteor 3.0 uses Node 20, 3.1 through 3.4 use Node 22,
and 3.5+ uses Node 24. Run `meteor node -v` to verify the exact version. On
and 3.5.x / 3.6-beta.0 use Node 24. Meteor 3.6-beta.1 uses Node 26.8.2
and npm 11.19.0. Match both images and native dependency builds to the exact
target release; do not carry Node 24 native binaries into a Node 26 runtime.
Run `meteor node -v` and `meteor npm -v` in the target app to verify. On
M-series Macs targeting x86_64 Linux, add
`--architecture os.linux.x86_64` to `meteor build`.
@@ -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.
@@ -3,8 +3,8 @@ name: meteor-modern-build-stack
description: >
Use when configuring or tuning the Meteor 3 modern build stack: SWC
transpiler, SWC-based minifier, modern @parcel/watcher, web-arch skipping
in development, .meteorignore, and the Rspack bundler integration via the
rspack Atmosphere package. Triggers on package.json "meteor": { "modern":
in development, .meteorignore, and Rspack integration.
Triggers on package.json "meteor": { "modern":
true }, .swcrc, swc.config.js, [Transpiler] Used Babel Fallback logs,
rspack.config.js, rspack.config.ts, defineConfig from @meteorjs/rspack, Meteor.compileWith*
helpers, Meteor.extendConfig, Meteor.extendSwcConfig vs Meteor.replaceSwcConfig,
@@ -12,9 +12,10 @@ description: >
Meteor.enablePortableBuild, HtmlRspackPlugin customization,
RSPACK_DEVSERVER_PORT, TOOL_NODE_FLAGS, pnpm workspaces, Rspack 2,
skeleton selection, PWA, Workbox and service-worker build setup.
Use this skill when the user asks about SWC vs Babel or Rspack configuration.
Use this skill when asked about SWC vs Babel or Rspack configuration.
Route existing-app bundler migration to migrate-to-rspack, Blaze PWA
scaffolding to meteor-blaze, and jam:offline data to meteor-community-packages.
scaffolding to meteor-blaze, declarations to meteor-typescript, and jam:offline
data to meteor-community-packages.
metadata:
author: meteor
kind: knowledge
@@ -22,7 +23,7 @@ metadata:
area: build
tagline: "Configure the Meteor 3 modern build stack (SWC transpiler/minifier, `@parcel/watcher`, web-arch skipping, Rspack integration)."
bundle: ["essentials"]
docs_synced_at: "2026-09-11"
docs_synced_at: "2026-09-23"
license: MIT
---
@@ -100,11 +101,16 @@ final bundle. Requires entry points in `package.json` and no nested imports
in app code. To migrate an existing app, use the `migrate-to-rspack` skill.
Inspect `.meteor/versions`, `package.json`, and the lockfile. Meteor
3.6-beta.0 pairs `rspack@1.4.0-beta360.0`, `@meteorjs/rspack@3.0.0-beta.1`
and Rspack 2.2.0; 3.5.2 retains the 1.3.0/2.2.0 integration pairing.
See [release pairings](references/rspack-config.md) and
[3.6 dependencies and workspaces](references/meteor-3.6-workspaces.md).
For Rspack 1-to-2 config migration, use `migrate-to-rspack`.
3.6-beta.1 pairs `rspack@1.4.0-beta360.1`, `@meteorjs/rspack@3.0.0-beta.2`
and Rspack 2.2.0. Beta.0 retains 1.4.0-beta360.0/3.0.0-beta.1; 3.5.2
retains the 1.3.0/2.2.0 integration pairing.
See [pairings](references/rspack-config.md) and
[dependencies/workspaces](references/meteor-3.6-workspaces.md).
For migration, use `migrate-to-rspack`.
Rspack transpiles TypeScript. Use `meteor-typescript` for declarations and
checking; see
[checker boundaries](references/rspack-config.md#typescript-declarations).
## Scaffolds, PWA and offline behavior
@@ -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.
@@ -1,16 +1,17 @@
# Meteor 3.6 dependencies and workspaces
These decisions start with Meteor 3.6, verified on `3.6-beta.0` with
`rspack@1.4.0-beta360.0` and `tools-core@1.4.0-beta360.0`. Earlier 3.x releases
`rspack@1.4.0-beta360.0` and `tools-core@1.4.0-beta360.0`. Beta.1 uses
`rspack@1.4.0-beta360.1` and `tools-core@1.4.0-beta360.1`. Earlier 3.x releases
keep their existing integration and manually managed workspace setup. Inspect
the app's release, resolved packages, manifest and workspace lockfile before
using a beta-specific version or command.
## Rspack 2 dependency set
| Package | Minimum selected by 3.6-beta.0 | Dependency category |
| Package | Minimum selected by 3.6 beta | Dependency category |
|---|---|---|
| `@meteorjs/rspack` | `3.0.0-beta.1` | Development |
| `@meteorjs/rspack` | `3.0.0-beta.1` on beta.0; `3.0.0-beta.2` on beta.1 | Development |
| `@rspack/core`, `@rspack/cli`, `@rspack/dev-server` | `2.2.0` each | Development |
| `@swc/core` | `1.15.32` | Development |
| `@rsdoctor/rspack-plugin` | `1.5.9` | Development |
@@ -14,6 +14,7 @@ Match both integration packages to the Meteor release:
| 3.5.1 | `1.2.0` | `2.1.0` | Revised client polyfills and app-extension discovery; retains the v2 helper API. |
| 3.5.2 | `1.3.0` | `2.2.0` | Required-dependency diagnostics, mode isolation, TypeScript config dependency tracking, and full-app/TLA fixes. |
| 3.6-beta.0 | `1.4.0-beta360.0` | `3.0.0-beta.1` | Rspack 2.2.0, SWC React Compiler, workspace-aware installs and stable cache configuration. |
| 3.6-beta.1 | `1.4.0-beta360.1` | `3.0.0-beta.2` | Same Rspack 2 minimums, fixed TypeScript server rebuild lifecycle; Node 26.8.2. |
Inspect `.meteor/versions`, `package.json`, and the lockfile. Do not install an
arbitrary `@meteorjs/rspack` major to obtain one helper; upgrade the Meteor
@@ -344,5 +345,19 @@ Auto-added to `.gitignore`. To rename, set in `package.json`:
}
```
## TypeScript declarations
Rspack/SWC transpiles TypeScript but does not type-check it or select Meteor
package declarations. Meteor 3.6-beta.1 native declarations require explicit
`meteor types` and provider configuration. Ordinary builds and new templates
retain legacy providers. Keep working `zodern:types`/`@types/meteor` setups
unless the task includes a provider migration; run the app's local `tsc`
separately. A configured checker such as the TypeScript scaffold's
`TsCheckerRspackPlugin` is a separate layer that can check during builds;
preserve it when working. See the
`meteor-typescript` skill for provider configuration and checking.
If it is not installed, consult the
[declaration guide](https://docs.meteor.com/cli/using-core-types).
---
Source: https://github.com/meteor/meteor/blob/devel/v3-docs/docs/about/modern-build-stack/rspack-bundler-integration.md
+1 -1
View File
@@ -14,7 +14,7 @@ metadata:
area: data
tagline: "Author and debug publications/subscriptions (publish strategies, low-level `added/changed/removed`, authorization, reactive joins)."
bundle: ["essentials", "fullstack"]
docs_synced_at: "2026-08-25"
docs_synced_at: "2026-09-23"
license: MIT
---
@@ -69,3 +69,17 @@ subscription alive?"
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.
@@ -14,6 +14,15 @@ the subscription stops. Client handling is forgiving: duplicate `added`
messages become changes, a `changed` for an unknown ID becomes an add, and a
`removed` for an unknown ID is ignored.
There is an earlier-client exception while an optimistic method write is
pending. Meteor 3.6-beta.1's `ddp-client@3.4.2-beta360.1` handles a repeated
`added` by merging server fields into the saved server snapshot; the stub's
visible value remains until outstanding writes settle. Earlier clients can
throw `Server sent add for existing id` in this path. Inspect the client's
resolved version and reproduce with a pending write before relying on the fix.
It also covers resubscribing under `NO_MERGE_NO_HISTORY`; it does not add
server history, ownership merging or unsubscribe removals to that strategy.
Use this when a collection is supplied by only one publication. It uses less
server state than `SERVER_MERGE`, but multiple publications for the same
collection can overwrite each other's document view.
@@ -23,6 +32,9 @@ collection can overwrite each other's document view.
The server remembers nothing about sent documents and does not send removals
when the subscription stops. Use only for special send-and-forget queues where
the consumer handles retention and stale client documents are intentional.
Scope consumer cleanup to documents it owns. Do not clear an entire shared
Minimongo collection or use private collection handles as a generic repair;
pending optimistic writes and other active subscriptions may still own data.
## Setting the strategy
@@ -48,3 +60,4 @@ Meteor.server.getPublicationStrategy("feed");
---
Source: https://github.com/meteor/meteor/blob/devel/v3-docs/docs/api/meteor.md#publication-strategies
Source: https://github.com/meteor/meteor/blob/devel/v3-docs/docs/generators/changelog/versions/3.6.0.md
+212
View File
@@ -0,0 +1,212 @@
---
name: meteor-react
description: >
Use when building or debugging React interfaces in Meteor 3: meteor create
--react, createRoot, JSX or TSX entry points, Rspack React detection, Fast
Refresh, react-meteor-data, useTracker, useSubscribe, useFind, withTracker,
Suspense, and Tracker.withComputation. Triggers on isLoading being treated as
a boolean, useFind receiving fetch(), stale closure inputs, duplicate tracker
side effects, unstable Suspense keys, lost reactivity after await, state reset
after refresh, or React tests leaking computations. Use this skill when the
user asks about a React skeleton, React Compiler, React-specific rspack.config rules, reactive
data hooks, or classic versus Suspense integration. Route general bundler
configuration to meteor-modern-build-stack and Meteor 2 upgrades to
migrate-to-meteor-3.
metadata:
author: meteor
kind: knowledge
meteor: ">=3.0"
area: data
tagline: "Build and debug Meteor 3 React interfaces (Rspack scaffold, reactive data hooks, Suspense, Fast Refresh, and testing)."
bundle: ["react"]
docs_synced_at: "2026-09-23"
license: MIT
---
# React interfaces for Meteor 3
React owns rendering and local UI state; Meteor owns reactive data and the
build handoff. Components consume authorized data and invoke methods.
Publications and methods remain the server authority.
## Decision flow
1. For a new JavaScript app, run `meteor create --react <name>`; React is also
the default skeleton. For TypeScript and TSX, run
`meteor create --typescript <name>`.
2. Inspect `package.json`, `.meteor/packages`, `.meteor/versions`, the client
entry, and `rspack.config.*`. Skeletons and `react-meteor-data` versions can
change independently of this skill.
3. Mount one React root from `Meteor.startup` with `createRoot`.
4. Pick one `react-meteor-data` surface for a component:
- Classic hooks for explicit loading UI and synchronous Minimongo reads.
- Suspense hooks only when an upstream Suspense fallback and rejection
boundary already own the pending and error states.
5. Use `useSubscribe` for readiness, `useFind` for reactive lists with stable
document references, and `useTracker` for other Tracker values.
6. Keep React-specific Rspack rules here. Route aliases, loaders, code
splitting, cache, output, or migration work to the build skills.
7. Test UI behavior in a browser-backed client suite and always unmount the
rendered root so Tracker computations and subscriptions can stop.
## Current scaffold
```bash
meteor create --react my-app
cd my-app
meteor
```
Current Meteor 3.4+ scaffolds use Rspack and `react-meteor-data`. Inspect
`.meteor/versions`: Meteor 3 requires 3.0.0+, these examples target 4.0.1, and
`references/react-meteor-data.md` records feature floors.
```jsx
import { Meteor } from "meteor/meteor";
import { createRoot } from "react-dom/client";
import { App } from "/imports/ui/App";
import "/imports/ui/styles.css";
Meteor.startup(() => {
const container = document.getElementById("react-target");
if (!container) throw new Error("Missing #react-target");
createRoot(container).render(<App />);
});
```
TypeScript uses `client/main.tsx`, a `tsconfig.json`, and usually
`rspack.config.ts`. Meteor discovers that TypeScript config directly.
## Reactive data selection
| Need | API | Contract |
|------|-----|----------|
| Subscription readiness | Classic `useSubscribe` | Returns an `isLoading` function. Call it. |
| Reactive list | Classic `useFind` | Return a cursor, never `fetch()`. |
| User, count, single document, ReactiveVar | Classic `useTracker` | Return the reactive value. Avoid arbitrary side effects. |
| Async value with Suspense | Suspense `useTracker` | Supply a stable key and Promise-producing function. |
| SSR-capable collection query | Suspense `useFind` | Pass the collection and the `find` argument tuple. |
| Existing class component | `withTracker` | Keep it during focused maintenance; plan hooks separately. |
Classic list scaffold:
```jsx
import { useFind, useSubscribe } from "meteor/react-meteor-data";
import { Tasks } from "/imports/api/tasks";
export function TaskList({ listId }) {
const isLoading = useSubscribe("tasks.byList", listId);
const tasks = useFind(
() => Tasks.find({ listId }, { sort: { createdAt: -1 } }),
[listId],
);
if (isLoading()) return <p>Loading...</p>;
if (tasks.length === 0) return <p>No tasks.</p>;
return <ul>{tasks.map((task) => <li key={task._id}>{task.title}</li>)}</ul>;
}
```
`useFind` owns cursor observation and updates only changed document references.
Use `useTracker` when a transformed aggregate is clearer. Read
`references/react-meteor-data.md` before tuning dependencies or `skipUpdate`.
## Suspense and async reactivity
Suspense imports change signatures; they are not drop-in replacements:
```jsx
import { Suspense } from "react";
import { useFind, useSubscribe } from "meteor/react-meteor-data/suspense";
import { Tasks } from "/imports/api/tasks";
function TaskList({ listId }) {
useSubscribe("tasks.byList", listId);
const tasks = useFind(Tasks, [
{ listId },
{ sort: { createdAt: -1 } },
], [listId]);
return <ul>{tasks.map((task) => <li key={task._id}>{task.title}</li>)}</ul>;
}
export function TaskScreen({ listId }) {
return (
<AppErrorBoundary>
<Suspense fallback={<p>Loading...</p>}>
<TaskList listId={listId} />
</Suspense>
</AppErrorBoundary>
);
}
```
Treat Suspense `useSubscribe` as a suspension-only call. In the currently
audited package, its declared return type and runtime value disagree, so do not
consume the return. Read `references/suspense-and-async.md` for stable keys,
rejections, SSR, and `Tracker.withComputation` after `await`.
## Build and refresh ownership
Rspack detects React from the app's npm dependencies, enables JSX or TSX SWC
parsing, and installs and injects React Refresh for client development. A
normal React Rspack app does not add the refresh plugin manually.
Keep `rspack.config.*` minimal. The generated JavaScript skeleton demonstrates
an optional SVGR rule; the TypeScript skeleton demonstrates type checking.
Compose custom rules through `defineConfig` from `@meteorjs/rspack` without
replacing Meteor's SWC defaults.
For React Compiler, the Meteor 3.6-beta.0 pairing supports SWC; older pairings
can retain Babel. Read [compiler setup](references/build-refresh-and-testing.md#react-compiler)
for React-version targets and runtime requirements.
| Request | Owner |
|---------|-------|
| React detection, JSX or TSX, React Refresh boundary | This skill |
| General `rspack.config` helpers, SWC, aliases, cache, chunks | `meteor-modern-build-stack` |
| Convert an existing app or legacy build plugin to Rspack | `migrate-to-rspack` |
| Meteor-bundler HMR or custom `module.hot` lifecycle | Build skill, then this skill for React symptoms |
If edits reload the page or reset component state, first determine which
bundler compiled the module. In a Rspack client graph, inspect React Refresh
boundaries and avoid a second `react-fast-refresh` stack. In a Meteor-bundler
graph, verify `hot-module-replacement` and the bundled React Fast Refresh
integration. See `references/build-refresh-and-testing.md`.
## Mutations and tests
Call `Meteor.callAsync` from event handlers, model pending and rejection in
React state, and leave validation and authorization inside the method. Do not
write sensitive collections directly from a component.
For tests, separate a presentational component that accepts data as props from
the hook-owning container. Unit-test the former with the project's existing
React test library. Test the latter in a browser client with controlled
Minimongo or a real publication. Assert rendered behavior, not the number of
reactive-function calls, because React can discard work and invoke initial
render logic more than once.
## Anti-patterns
- Treat classic `isLoading` as a boolean. It is a function and must be called.
- Pass `Tasks.find().fetch()` to `useFind`. Return the cursor.
- Put a subscription inside a `useFind` factory. Subscribe separately.
- Call React state setters, methods, analytics, or arbitrary effects inside a
`useTracker` reactive function.
- Force every classic component onto Suspense. Both surfaces remain useful.
- Reuse a generic Suspense key for unrelated mounted computations.
- Read a Tracker source only after `await` without restoring the computation.
- Add `@rspack/plugin-react-refresh` to project config when Meteor already
injected it.
- Replace all Rspack SWC options to add one React transform. Extend them.
- Mock away all Meteor data behavior in a component integration test.
## Authoritative resources
- [Meteor React tutorial](https://docs.meteor.com/tutorials/react/)
- [`react-meteor-data` documentation](https://docs.meteor.com/packages/react-meteor-data.html)
- [`meteor/react-packages` source and changelog](https://github.com/meteor/react-packages/tree/master/packages/react-meteor-data)
- [Meteor Rspack integration](https://docs.meteor.com/about/modern-build-stack/rspack-bundler-integration.html)
- [React `createRoot`](https://react.dev/reference/react-dom/client/createRoot)
- [React Suspense](https://react.dev/reference/react/Suspense)
- `references/eval-cases.md`
@@ -0,0 +1,188 @@
# React build, refresh, and testing
## Generated application contract
Create from the selected Meteor release, then inspect the result:
```bash
meteor create --react my-app
meteor create --typescript my-ts-app
```
Current JavaScript React skeletons use:
```text
client/main.jsx
server/main.js
tests/main.js
rspack.config.js
```
Current TypeScript skeletons use `.tsx` and `.ts` entries, a
`rspack.config.ts`, `swc.config.ts`, `tsconfig.json`, Meteor package types, and
a Rspack type-checking plugin. Both skeletons declare `meteor.mainModule`,
`meteor.testModule`, and `meteor.modern` in `package.json`.
Do not paste dependency versions from documentation into an older app. Match
`@meteorjs/rspack` to the Meteor release, run `meteor update --npm`, and commit
the resulting `package.json` and lockfile changes.
## React-specific Rspack behavior
The Meteor Rspack package currently recognizes React when `react` exists in
the app's npm dependencies and `preact` does not. It then:
- enables JSX for JavaScript entries or TSX for TypeScript entries;
- configures the SWC React transform;
- keeps `react` and `react-dom` external to the Rspack app bundle;
- ensures `@rspack/plugin-react-refresh` and `react-refresh` are installed;
- injects the refresh plugin only for client development runs.
The generated JavaScript config adds only an SVGR rule:
```javascript
const { defineConfig } = require("@meteorjs/rspack");
module.exports = defineConfig(() => ({
module: {
rules: [{
test: /\.svg$/i,
issuer: /\.[jt]sx?$/,
use: ["@svgr/webpack"],
}],
},
}));
```
Keep this project layer limited to real application needs. Use
`Meteor.extendConfig` for composable Rspack fragments and
`Meteor.extendSwcConfig` for a narrow SWC change. Do not use
`Meteor.replaceSwcConfig` just to add a React transform; replacement discards
Meteor's parser, helper, and refresh defaults unless reconstructed exactly.
## React Compiler
Meteor 3.6-beta.0 pairs Atmosphere `rspack@1.4.0-beta360.0` with npm
`@meteorjs/rspack@3.0.0-beta.1` and Rspack 2.2.0. Beta.1 pairs
`rspack@1.4.0-beta360.1` with `@meteorjs/rspack@3.0.0-beta.2` and retains
that Rspack minimum. Both pairings support the
SWC React Compiler path introduced upstream in Rspack 2.1. Inspect the resolved
packages and React major before selecting it. Earlier Meteor/Rspack pairings
can keep `babel-plugin-react-compiler` with `babel-loader`; do not copy the
new SWC option into an older compiler.
For React 19:
```javascript
const { defineConfig } = require("@meteorjs/rspack");
module.exports = defineConfig((Meteor) => ({
...Meteor.extendSwcConfig({
jsc: {
transform: {
react: { runtime: "automatic" },
reactCompiler: true,
},
},
}),
}));
```
For React 17 or 18, install `react-compiler-runtime` with the project's package
manager and use `reactCompiler: { target: "17" }` or `{ target: "18" }`.
Do not upgrade an existing app to React 19 merely because a new scaffold uses
it. Preserve Meteor's parser, helpers, and refresh defaults through
`extendSwcConfig`. Do not compile the same modules with both compiler paths.
Before removing Babel, inventory its remaining plugins and verify that the
SWC compiler supports the options the app needs. Compare component behavior,
production output, and development refresh. Keep a narrow Babel path when
required options or other transforms have no verified replacement.
## Two HMR graphs
Rspack compiles application modules. Meteor still compiles Atmosphere packages
and any modules deliberately delegated with `Meteor.compileWithMeteor`.
| Module owner | Refresh mechanism |
|--------------|-------------------|
| Rspack client graph | Rspack HMR plus `@rspack/plugin-react-refresh` |
| Meteor bundler graph | `hot-module-replacement` plus Meteor's React Fast Refresh integration |
Current Rspack React skeletons include `hot-module-replacement` for the second
graph. That does not require manually adding `react-fast-refresh` to the Rspack
graph. Identify the module owner before changing packages.
Fast Refresh can preserve local component state only when the edited module
remains a valid refresh boundary. If state resets or a full reload occurs:
1. Inspect the first client console or build error.
2. Confirm whether Rspack or Meteor compiled the edited module.
3. Keep component modules focused. Move unrelated mutable singletons, Tracker
computations, and side-effectful registration into lifecycle-owned modules.
4. Verify component export shape and hook order did not change.
5. Remove duplicate refresh plugins or manual `module.hot.accept()` code added
without a specific non-React resource owner.
Never use refresh as resource cleanup. Stop timers, observers, global event
listeners, and manually created computations through React effects or the
owning module's explicit HMR disposal.
## React-specific test shape
Use `meteor-testing` for runner and browser-driver setup. This reference only
owns React integration behavior.
Split components when possible:
```jsx
export function TaskListView({ loading, tasks }) {
if (loading) return <p>Loading...</p>;
return <ul>{tasks.map((task) => <li key={task._id}>{task.title}</li>)}</ul>;
}
export function TaskListContainer({ listId }) {
const isLoading = useSubscribe("tasks.byList", listId);
const tasks = useFind(() => Tasks.find({ listId }), [listId]);
return <TaskListView loading={isLoading()} tasks={tasks} />;
}
```
Test `TaskListView` with the React test library already selected by the
project. Test `TaskListContainer` in a browser client where Tracker and
Minimongo exist. Use controlled Minimongo documents for a hook-focused test or
a real authorized publication for an integration test.
Every test that mounts a root or rendered component must unmount it in cleanup.
Flush React updates using the `act` API compatible with the project's installed
React version. Do not hardcode an import copied from a different React major.
Assert user-visible state:
- loading before subscription readiness;
- empty after ready with zero documents;
- rows update when Minimongo changes;
- rejected method or Suspense Promise reaches error UI;
- unmount stops owned work and prevents later state updates.
Do not assert that a reactive function or effect ran exactly once. Strict Mode
and concurrent rendering can replay or discard initial work. Test the committed
DOM and resource cleanup instead.
## Test-mode build checks
The client test entry is a separate Rspack graph. A green server-only run does
not prove JSX or TSX client compilation. In CI:
1. Configure a browser driver.
2. Confirm expected client suites and assertions ran.
3. Exercise the real `meteor.testModule` entry.
4. Retain a production browser smoke for build-only differences.
Generated Rspack directories can enter typecheck, lint, or test discovery after
the first build. Exclude the active `_build`, `public/build-assets`,
`public/build-chunks`, and `private/build-assets` paths in each tool's native
configuration, not in `.meteorignore`.
---
Source: https://github.com/meteor/meteor/blob/devel/v3-docs/docs/about/modern-build-stack/rspack-bundler-integration.md
@@ -0,0 +1,205 @@
# Evaluation cases for `meteor-react`
## Case 1: create a current JavaScript React app
Prompt: "Create the baseline for a new Meteor 3 React app."
Pass if the agent uses `meteor create --react`, inspects the generated client,
server, test, package, and Rspack files for the selected release, and mounts one
root with `createRoot` inside `Meteor.startup`. Fail if it reconstructs an old
skeleton from memory without inspecting generated state.
## Case 2: create a TypeScript React app
Prompt: "I want Meteor, React, TypeScript, and Rspack from the start."
Pass if the agent uses `meteor create --typescript`, preserves `.tsx` and `.ts`
entry points plus `rspack.config.ts`, and inspects generated type and SWC config.
Fail if it creates JavaScript first and renames files without updating entries.
## Case 3: loading never finishes
Prompt: "`const loading = useSubscribe('tasks')`; `if (loading)` always shows
my spinner."
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.
@@ -0,0 +1,178 @@
# Classic `react-meteor-data`
Use the classic import when the component owns explicit loading UI or needs
synchronous Tracker and Minimongo values:
```javascript
import {
useFind,
useSubscribe,
useTracker,
withTracker,
} from "meteor/react-meteor-data";
```
`react-meteor-data` versions move independently from Meteor core releases.
Inspect `.meteor/versions` before relying on a signature or bug fix. The
official `meteor/react-packages` master revision audited on 2026-08-25 was
`a2dbe228957fc4225b76e9206386861b49b1527b`, package version 4.0.1.
Use these package floors to diagnose existing apps, not to recommend old
package lines for a Meteor 3 app:
| Capability | First `react-meteor-data` version | Meteor 3 guidance |
|---|---|---|
| `useTracker` | 2.0.0 | Use 3.0.0+; current examples target 4.0.1. |
| `useSubscribe` and `useFind` | 2.4.0 | Use 3.0.0+ and verify the installed signature. |
| Suspense hook entry point | 2.7.0 | Use 3.0.0+; do not infer it from the Meteor release. |
| Isomorphic Suspense `useFind` | 2.7.2 | Use 3.0.0+ for Meteor 3 compatibility. |
| Official Meteor 3 compatibility | 3.0.0 | Minimum package line for Meteor 3 apps. |
| `useSubscribeSuspenseServer` | 3.0.3 | Require 3.0.3+ only when that server helper is needed. |
The current package may contain later fixes without changing a hook's public
name. Pin the project version, verify its changelog, and test the selected
client and SSR paths before copying a current signature into an older app.
## Hook selection
| Hook | Use it for | Return |
|------|------------|--------|
| `useSubscribe(name, ...args)` | Subscription lifetime and readiness | `() => boolean`, true while loading |
| `useFind(factory, deps?)` | Reactive cursor list with stable unchanged document references | Array, or null when factory returns null |
| `useTracker(reactiveFn, deps?, skipUpdate?)` | Any other Tracker-derived value | Value returned by `reactiveFn` |
| `withTracker(mapper)` | Existing function or class component container | Wrapped component |
## `useSubscribe`
The return value is a function:
```javascript
const isLoading = useSubscribe("tasks.byList", listId);
if (isLoading()) return <Loading />;
```
Calling `isLoading()` both reads readiness and opts the component into the
readiness update. Testing `if (isLoading)` is always truthy and never reads the
subscription state.
Use a falsy name to bypass the subscription without conditionally calling a
hook:
```javascript
const isLoading = useSubscribe(enabled ? "tasks.byList" : null, listId);
```
When bypassed, `isLoading()` returns false. Changing the name or serialized
arguments causes the hook-managed subscription to be replaced and cleaned up.
## `useFind`
Return a `Mongo.Cursor`, not its fetched documents:
```javascript
const tasks = useFind(
() => Tasks.find({ listId }, {
fields: { title: 1, done: 1 },
sort: { createdAt: -1 },
}),
[listId],
);
```
`useFind` creates its own cursor observer. It preserves references for
unchanged documents, which helps memoized rows avoid unrelated renders.
Calling `.fetch()` in the factory defeats that contract and produces a
development warning.
The current v4 implementation defaults `deps` to `[]`. Include every React
value captured by the factory when changing that value must create a new
cursor. Do not add subscription work to the factory: it runs nonreactively and
exists only to select the cursor. Call `useSubscribe` separately.
Return `null` or `undefined` to disable the cursor without conditionally
calling the hook:
```javascript
const tasks = useFind(
() => enabled ? Tasks.find({ listId }) : null,
[enabled, listId],
);
```
Handle the nullable return before mapping.
## `useTracker`
Without a dependency array, the hook recreates its computation around renders
and returns the first reactive value synchronously:
```javascript
const user = useTracker(() => Meteor.user());
```
With dependencies, the computation is retained until a dependency changes:
```javascript
const task = useTracker(
() => Tasks.findOne({ _id: taskId }),
[taskId],
);
```
Use dependencies for captured inputs and measured expensive computations. Do
not add `[]` mechanically to a closure that reads changing props or state.
The reactive function can receive the current `Tracker.Computation`, although
some published type declarations omit that optional argument. Return data from
the function. Do not call React state setters or perform analytics, method
calls, timers, DOM work, or other arbitrary side effects there. Concurrent
rendering, Suspense, and error boundaries can cause an initial reactive
function to run more than once before commit.
Meteor subscriptions created in a `useTracker` computation are stopped with
the computation, but prefer `useSubscribe` when only readiness and lifetime
are needed.
## `skipUpdate`
The comparator returns true to skip an update:
```javascript
const task = useTracker(
() => Tasks.findOne(taskId),
[taskId],
(previous, next) =>
previous?._id === next?._id &&
previous?.updatedAt?.getTime() === next?.updatedAt?.getTime(),
);
```
Use it only after measuring a render problem. Do not deep-compare large query
results by default; the comparison can cost more than the render. Prefer
`useFind` plus memoized rows for lists.
## `withTracker`
Do not rewrite a working class-component container during unrelated
maintenance. Current v4 source still exports `withTracker`, but logs a
development deprecation warning and directs new code toward hooks. Isolate the
data container from the presentational component, then migrate in a focused
change with behavior tests.
## Data and authority boundaries
- Client hooks query Minimongo synchronously. Do not rewrite render-path reads
to server-style async Mongo only because the app uses Meteor 3.
- A subscription only delivers what its publication authorizes. Filters and
fields in a component are not security controls.
- Mutations belong in validated, authorized methods invoked with
`Meteor.callAsync`.
- Route publication design to `meteor-pubsub`, database semantics to
`meteor-mongo-minimongo`, and method design to `meteor-methods`.
Additional primary source:
[`meteor/react-packages`](https://github.com/meteor/react-packages/tree/master/packages/react-meteor-data)
---
Source: https://github.com/meteor/meteor/blob/devel/v3-docs/docs/packages/react-meteor-data.md
@@ -0,0 +1,149 @@
# Suspense and async Tracker data
Import Suspense hooks from a distinct subpath:
```javascript
import {
useFind,
useSubscribe,
useTracker,
} from "meteor/react-meteor-data/suspense";
```
Do not switch import paths without changing signatures and adding pending and
error ownership.
## Classic versus Suspense
| Concern | Classic | Suspense |
|---------|---------|----------|
| Loading | `const isLoading = useSubscribe(...); isLoading()` | `useSubscribe(...)` throws until ready |
| Tracker | `useTracker(reactiveFn, deps?)` | `useTracker(key, asyncReactiveFn, deps?)` |
| Find | `useFind(() => Collection.find(...), deps?)` | `useFind(Collection, [selector, options], deps?)` |
| Errors | Component state or returned error | Rejected Promise reaches an error boundary |
| Server query | First synchronous Tracker read | `useTracker` and `useFind` can suspend server rendering |
Classic hooks remain supported. Choose Suspense because the application has a
deliberate boundary and async rendering strategy, not because it runs Meteor 3.
## Boundaries
Every suspending subtree needs a fallback and a rejection owner:
```jsx
<AppErrorBoundary>
<Suspense fallback={<TaskListSkeleton />}>
<TaskList listId={listId} />
</Suspense>
</AppErrorBoundary>
```
The nearest Suspense boundary owns pending Promises. A rejected subscription or
async tracker result is not a loading state; it must reach an error boundary or
another explicit rejection policy.
Place boundaries by user-visible loading unit. One root-wide fallback can hide
the entire application for an isolated refetch.
## Stable tracker keys
The first `useTracker` argument indexes a module-level cache. Use a stable,
specific key for one logical computation and avoid generic keys reused by
unrelated mounted components:
```javascript
const task = useTracker(
`task-details:${taskId}`,
() => Tasks.findOneAsync(taskId),
[taskId],
);
```
Keep dependency inputs in the dependency array. A key is cache identity, not a
replacement for captured-input dependencies.
## Reactivity after `await`
Tracker captures reactive dependencies while its computation is current. An
unrelated `await` clears that ambient context. Restore the hook's computation
around a later reactive read:
```javascript
import { Tracker } from "meteor/tracker";
const tasks = useTracker(
`visible-tasks:${listId}`,
async (computation) => {
const access = await Meteor.callAsync("lists.access", listId);
if (!access.allowed) return [];
return Tracker.withComputation(
computation,
() => Tasks.find({ listId }).fetchAsync(),
);
},
[listId],
);
```
If the reactive read occurs before the first `await`, the hook captures it
without the extra wrapper. Wrap the smallest reactive read after `await`, not
the network request or entire component.
## Suspense `useSubscribe`
Use it as a statement:
```javascript
useSubscribe("tasks.byList", listId);
```
At `react-meteor-data` 4.0.1, the published declaration says the hook returns a
`Meteor.SubscriptionHandle`, while the client implementation resolves to
`null` and the server implementation returns `undefined`. The package docs
also say it does not return a handle. Do not consume the return value. If the
component must manually stop or inspect a handle, use a separately owned
subscription strategy instead of relying on this mismatch.
The client cache identifies subscriptions from the name and EJSON-serialized
parameters and delays cleanup to tolerate React Strict Mode effect replay. Do
not reproduce that cache in application code.
## Suspense `useFind`
The second argument is the argument tuple passed to `Collection.find`:
```javascript
const tasks = useFind(Tasks, [
{ listId },
{ fields: { title: 1 }, sort: { createdAt: -1 } },
], [listId]);
```
Pass `null` to disable the query. Do not pass a cursor factory or call
`.fetch()` as with the classic signature. On the client it observes Minimongo;
on the server it uses `fetchAsync()` and suspends until the query resolves.
## Server rendering limits
Suspense `useFind` and `useTracker` have server paths, but a client subscription
does not populate server-rendered Minimongo. The current Suspense
`useSubscribe` server path is a no-op. Design server data preload, request
scoping, error handling, and hydration deliberately. Verify the exact package
version before relying on changelog-only SSR hooks; the current public subpath
exports only `useFind`, `useSubscribe`, and `useTracker`.
## Anti-patterns
- Consume the Suspense `useSubscribe` return as a handle.
- Use the same key such as `"user"` for multiple unrelated mounted trackers.
- Put a changing prop only in the key while omitting it from dependencies.
- Add Suspense without an error boundary for rejected Promises.
- Assume a server-side subscription populated data during SSR.
- Wrap every sync Minimongo query in an async Suspense tracker.
Additional primary source:
[`meteor/react-packages` Suspense implementation](https://github.com/meteor/react-packages/tree/master/packages/react-meteor-data/suspense)
---
Source: https://github.com/meteor/meteor/blob/devel/v3-docs/docs/packages/react-meteor-data.md
+13 -4
View File
@@ -16,7 +16,7 @@ metadata:
area: security
tagline: "Audit and harden Meteor 3 apps (`check()` coverage, `this.userId` guards, browser-policy CSP, rate limits, oauth-encryption)."
bundle: ["essentials", "fullstack"]
docs_synced_at: "2026-08-25"
docs_synced_at: "2026-09-23"
license: MIT
---
@@ -132,9 +132,18 @@ decisions; keep their queries fast because the connection waits for them. On
Meteor 3.0 through 3.4, matchers must stay synchronous. Use a fixed rule,
precomputed synchronous state, or upgrade rather than awaiting Mongo there.
The default rule (5 in 10s for login / signup / password reset) ships
with `accounts-base`. Remove with `Accounts.removeDefaultRateLimit()`
only if you replace it.
The default rule (5 in 10s per matched method per DDP connection for login / signup / password
reset) ships with `accounts-base`. Meteor 3.6-beta.1's
`accounts-base@3.4.0-beta360.1` also matches `requestLoginTokenForUser`;
`accounts-passwordless@3.1.2-beta360.1` validates its complete payload before
lookup/creation. Inspect both package versions on older apps. Remove the
default rule with `Accounts.removeDefaultRateLimit()` only if you replace it.
For cookie hardening on `accounts-base@3.4.0-beta360.1`, use `meteor-accounts`:
trusted origins, valid tokens, no-store responses and `SameSite=Strict` have
specific migration checks. Its 30-per-10-second HTTP endpoint limit is per
client address, separate from DDP. HttpOnly storage does not stop active
same-origin XSS from obtaining the resume token used for DDP authentication.
## OAuth secret encryption
@@ -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.
+1 -1
View File
@@ -18,7 +18,7 @@ metadata:
area: testing
tagline: "Set up and write Meteor 3 tests (`meteortesting:mocha`, async signatures, methods/publications, Playwright/Cypress E2E)."
bundle: ["fullstack"]
docs_synced_at: "2026-09-11"
docs_synced_at: "2026-09-23"
license: MIT
---
@@ -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.
@@ -75,8 +75,11 @@ jobs:
```
Node version must match the bundled Node.js for the Meteor version: 3.0 uses
Node 20, 3.1 through 3.4 use Node 22, and 3.5+ uses Node 24. Run
`meteor node -v` to verify the exact version used by the target release.
Node 20, 3.1 through 3.4 use Node 22, and 3.5.x / 3.6-beta.0 use Node 24.
Meteor 3.6-beta.1 uses Node 26.8.2 and npm 11.19.0. The example above targets
3.1-3.4; adjust its Node selection for the actual job. Run `meteor node -v`
and `meteor npm -v` in the target app, rebuild native dependencies for that
runtime, and keep dependency installation frozen in CI.
## Test discovery
+95
View File
@@ -0,0 +1,95 @@
---
name: meteor-typescript
description: >
Use when setting up or repairing Meteor application declarations, TypeScript
configuration, JavaScript IntelliSense, or local and CI type-checking.
Triggers on meteor types, meteor/* imports resolving to any, missing
declarations, duplicate Meteor identifiers, zodern:types, @types/meteor,
.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
ordered switch, native adapter/barrel distinction, inherited configuration,
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
[Atmosphere package types documentation](https://docs.meteor.com/packages/7.writing-atmosphere-packages#typescript-types).
Do not edit generated application adapters as a package-authoring solution.
@@ -0,0 +1,144 @@
# Meteor declaration providers
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:
```json
{
"compilerOptions": {
"preserveSymlinks": true,
"paths": {
"meteor/*": ["./.meteor/local/types/packages.d.ts"]
}
}
}
```
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. |
---
Source: https://github.com/meteor/meteor/blob/devel/v3-docs/v3-migration-docs/typescript/meteor-types.md
Source: https://github.com/meteor/meteor/blob/devel/v3-docs/docs/cli/using-core-types.md
@@ -0,0 +1,119 @@
# TypeScript acceptance cases
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
api.types exists on every Meteor 3 release.
@@ -0,0 +1,59 @@
# JavaScript IntelliSense
Native Meteor-import declarations require Meteor 3.6-beta.1 or later; on an
earlier Meteor 3 app retain the existing legacy declarations. A JS app does
not need a TypeScript conversion or Rspack migration to obtain editor types.
Inspect the existing provider and root config first. If `tsconfig.json`
already owns these files, configure that project instead of creating a
competing `jsconfig.json`. Otherwise create or merge a root `jsconfig.json`,
retaining the app's source patterns, aliases, resolver and exclusions.
For beta.1 native opt-in, follow the generation-before-switch and rollback
sequence in [declaration providers](declaration-providers.md). The root config
must exist before `meteor types`; a direct `zodern:types` still causes a
successful skip. Once generation succeeds, merge:
```json
{
"files": ["./.meteor/types/packages.d.ts"],
"include": ["**/*.js", "**/*.jsx"],
"compilerOptions": {
"paths": {
"meteor/*": ["./.meteor/types/packages/*"]
}
}
}
```
Append the barrel to existing `files`; preserve intentional JS/JSX source
inclusion and generated-output exclusions. The barrel is explicit even when
`.meteor/**` is excluded. Use relative `paths` targets; do not copy removed
TypeScript 7 `baseUrl` or `moduleResolution: "node"` options from older
examples. Retain a compatible resolver already used by the editor/project.
Remove overlapping direct `@types/meteor` and only the `meteor` entry from
inherited `compilerOptions.types` after successful generation. Restart the
editor's TypeScript server and check hover/completion for a public import
such as `meteor/random`, plus a used scoped/sub-path import when relevant.
If a package supplies no declarations, do not claim generation typed it.
`jsconfig.json` provides a JavaScript project for editor services; enabling
native declarations does not automatically enable JS error checking. If the
user also wants CI checks, use the app's compatible local TypeScript compiler
and opt into `checkJs` deliberately:
```json
{
"scripts": {
"check-js": "meteor types && tsc --project jsconfig.json --allowJs --checkJs --noEmit"
}
}
```
Verify the intended JS source appears in the compiler's file list and a
temporary invalid assignment is rejected. Keep this optional check separate
from a request for IntelliSense only. Do not edit or commit generated types.
---
Source: https://github.com/meteor/meteor/blob/devel/v3-docs/docs/cli/using-core-types.md
+10 -6
View File
@@ -7,10 +7,10 @@ description: >
dropping a Promise, a read API receiving update modifiers, async allow/deny,
an Iron Router controller not running, "Method stub took too long",
Atmosphere resolution, Express 5 WebApp handlers, lost async context,
rawCollection callbacks, meteor/* TypeScript types, useTracker, and
rawCollection callbacks, TypeScript declaration failures during upgrades, useTracker, and
useSubscribe. Use this skill when the user asks about upgrading Meteor,
async caller propagation, iterators with await, zodern:types, or replacing
and forking packages.
async caller propagation, iterators with await, or replacing and forking
packages. Standalone declarations and type-checking belong to meteor-typescript.
metadata:
author: meteor
kind: knowledge
@@ -18,7 +18,7 @@ metadata:
area: migration
tagline: "Migrate a Meteor 2.x app to 3.x (`callAsync`, async Mongo, Fibers removal, Blaze reactivity, Express 5, Atmosphere resolution)."
bundle: ["migration"]
docs_synced_at: "2026-08-25"
docs_synced_at: "2026-09-23"
license: MIT
---
@@ -64,8 +64,12 @@ in phases. Do not flip the framework version flag first.
not inside the invoked handler. Verify invocation context before and after
`await`. See `references/publications.md` and
`references/other-breaking-changes.md`.
10. For TypeScript projects, install `zodern:types` and update
`tsconfig.json`. See `references/typescript-migration.md`.
10. For TypeScript projects, inspect the target release and existing declaration
provider. Keep working `@types/meteor` or `zodern:types` setups. Meteor
3.6-beta.1 adds explicit native opt-in through `meteor types`; earlier
releases retain the legacy workflow. See
`references/typescript-migration.md`, then use `meteor-typescript` for
provider changes and checking.
11. For React projects, decide whether to adopt the Suspense-aware
`react-meteor-data` import. See `references/react-migration.md`, then use
`meteor-react` for current hook, scaffold, and build guidance.
@@ -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.
@@ -97,7 +97,8 @@ Meteor 3 does not have one Node baseline across every minor release:
|----------------|--------------|
| 3.0 | Node 20 |
| 3.1 through 3.4 | Node 22 |
| 3.5+ | Node 24 |
| 3.5.x and 3.6-beta.0 | Node 24 |
| 3.6-beta.1 | Node 26.8.2 (npm 11.19.0) |
Run `meteor node --version` in the target app and use that version in CI,
native dependency builds, and container images. Audit `engines.node` and
@@ -1,63 +1,31 @@
# TypeScript migration
# TypeScript checkpoint during a runtime upgrade
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
identifiers, inherited `types`, scoped/sub-path imports, TypeScript 7 options
and source-inclusion checks. If only this migration skill is installed, the
[official declaration guide](https://docs.meteor.com/cli/using-core-types)
describes the provider workflow; inspect compatibility with the installed
compiler rather than copying an entire config. Compilation and checking are
separate; preserve a configured checker and verify actual app source.
---
Source: https://github.com/meteor/meteor/blob/devel/v3-docs/v3-migration-docs/typescript/meteor-types.md
Source: https://github.com/meteor/meteor/blob/devel/v3-docs/docs/cli/using-core-types.md
+7 -8
View File
@@ -21,7 +21,7 @@ metadata:
area: migration
tagline: "Migrate an existing Meteor 3 app to the Rspack bundler integration (`mainModule`, replacing legacy build plugins with loaders)."
bundle: ["migration"]
docs_synced_at: "2026-09-11"
docs_synced_at: "2026-09-23"
license: MIT
---
@@ -44,13 +44,12 @@ Match `@meteorjs/rspack` to the Meteor release, not to
| 3.5.1 | `1.2.0` | `2.1.0` | Revised client polyfills and extension discovery. |
| 3.5.2 | `1.3.0` | `2.2.0` | Dependency diagnostics, mode isolation, full-app/TLA and cache fixes. |
| 3.6-beta.0 | `1.4.0-beta360.0` | `3.0.0-beta.1` | Rspack 2.2.0 and workspace-aware installs. |
| 3.6-beta.1 | `1.4.0-beta360.1` | `3.0.0-beta.2` | TypeScript rebuild-loop fix; Node 26.8.2. |
The Atmosphere, Meteor npm integration, and Rspack core package versions are
independent. Inspect `.meteor/versions`, `package.json`, and the lockfile.
Normal startup aligns required dependencies when automatic installation is
enabled. Review and commit those changes. Explicit `meteor update --npm` is
an alternative, not an extra required step. Do not pair a newer integration
major with an older Meteor release to copy a helper.
Inspect `.meteor/versions`, `package.json`, and the lockfile: Atmosphere,
Meteor npm integration and Rspack core versions are independent. With automatic
installs enabled, startup aligns dependencies; review and commit the changes.
`meteor update --npm` is an alternative. Keep the release pairing.
Already using Rspack? For the Meteor 3.6 beta upgrade, follow
[Rspack 1 to 2](references/rspack-2-upgrade.md) and its toolchain checks.
@@ -175,7 +174,7 @@ See `references/framework-and-css.md`.
| `zodern:melte` (Svelte) | Official Rspack Svelte loader. |
| `jorgenvatle:vite` (Vue/Solid) | Native Rspack Vue/Solid loaders. |
| `babel-plugin-react-compiler` | SWC on the 3.6 beta pairing; earlier integrations retain Babel. See framework reference. |
| `zodern:types` | Still compatible. Keep it. |
| `zodern:types` | Keep the working declaration provider during bundler migration; beta.1 native adoption is a separate explicit choice. |
Plugins acting only on Atmosphere package files can stay. Plugins acting on
app-folder files (entry folder excluded) must move to Rspack.
@@ -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.
@@ -1,7 +1,10 @@
# Rspack 1 to 2 in Meteor
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)
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-accounts
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-blaze
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-cli-installation
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-community-packages
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-debugging
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-deployment
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-methods
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-modern-build-stack
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-mongo-minimongo
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-native
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-pubsub
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-react
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-security
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-testing
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-typescript
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/migrate-to-meteor-3
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/migrate-to-rspack
+1 -1
View File
@@ -38,7 +38,6 @@ ENV \
AVATARS_UPLOAD_EXTERNAL_PROGRAM="" \
AVATARS_UPLOAD_MIME_TYPES="" \
AVATARS_UPLOAD_MAX_SIZE=0 \
RICHER_CARD_COMMENT_EDITOR=false \
CARD_OPENED_WEBHOOK_ENABLED=false \
MAX_IMAGE_PIXEL="" \
IMAGE_COMPRESS_RATIO="" \
@@ -152,6 +151,7 @@ ENV \
SAML_IDENTIFIER_FORMAT="" \
SAML_LOCAL_PROFILE_MATCH_ATTRIBUTE="" \
SAML_ATTRIBUTES="" \
SAML_MERGE_EXISTING_USERS=false \
OAUTH_GOOGLE_ENABLED=false \
OAUTH_GOOGLE_CLIENT_ID="" \
OAUTH_GOOGLE_SECRET="" \
-1
View File
@@ -29,7 +29,6 @@ services:
- MONGO_URL=mongodb://wekandb-dev:27017/wekan
- ROOT_URL=http://localhost:3000
- WITH_API=true
- RICHER_CARD_COMMENT_EDITOR=true
- BROWSER_POLICY_ENABLED=true
- WRITABLE_PATH=/data
depends_on:
+3 -25
View File
@@ -8,31 +8,9 @@ updates:
directory: "/"
schedule:
interval: "weekly"
ignore:
# Build-time-only (devDependency) Rspack toolchain. These packages compile
# the bundle on the developer / CI machine and are NOT shipped in the
# deployed WeKan server or client bundle, so their advisories do not affect
# a running WeKan instance. (For example webpack-dev-server / @rspack/dev-
# server, pulled via @rspack/cli, and the socket.io/ws chain pulled via
# @rsdoctor/rspack-plugin, never run in WeKan — it builds with `meteor run`,
# not the Rspack CLI or dev-server.)
#
# They also cannot simply be removed or bumped:
# * @meteorjs/rspack re-pins and re-installs @rspack/cli and
# @rsdoctor/rspack-plugin into package.json on every build, so deleting
# them does not stick.
# * The only upgrades Dependabot/npm offer are build-breaking: a
# @meteorjs/rspack downgrade, or @rspack/cli 2.0 / Rspack 2.0, which
# needs Meteor 3.6 (see https://github.com/meteor/meteor/pull/14360).
# WeKan currently runs METEOR@3.5-rc.2.
#
# So pin them here until Meteor 3.6 + Rspack 2.0 land, then revisit.
- dependency-name: "@meteorjs/rspack"
- dependency-name: "@rspack/core"
- dependency-name: "@rspack/cli"
- dependency-name: "@rsdoctor/rspack-plugin"
- dependency-name: "css-loader"
- dependency-name: "style-loader"
# Build tools also need security updates: the bundle visualizer runs a local
# report server. Meteor 3.6 now uses Rspack 2, so the old blanket exclusions
# no longer apply. Review toolchain compatibility when merging updates.
# Playwright end-to-end test harness — pure test-only tooling that never ships in
# WeKan. It now depends only on @playwright/test and the official `mongodb` driver
# (the heavy, CVE-prone `mongosh` CLI was replaced by helpers/mongo-runner.js).
+3 -2
View File
@@ -211,13 +211,14 @@ jobs:
unzip -q "$zip"
# A zip that exists is not a bundle that runs; these are the two files
# the AppImage is built around.
for f in bundle/main.js bundle/node bundle/ferretdb bundle/start-wekan.sh; do
for f in bundle/main.js bundle/node bundle/node-runtime/libatomic.so.1 bundle/ferretdb bundle/start-wekan.sh; do
if [ ! -e "$f" ]; then
echo "::error::$zip has no $f - it is not a runnable WeKan bundle."
exit 1
fi
done
chmod +x bundle/node bundle/ferretdb bundle/start-wekan.sh
python3 releases/check-telemetry.py --bundle bundle
du -sh bundle
- name: Build the AppDir
@@ -391,7 +392,7 @@ jobs:
# 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."
exit 0
fi
+2 -1
View File
@@ -170,13 +170,14 @@ jobs:
gh release download '${{ needs.release.outputs.tag }}' \
--repo "${{ github.repository }}" --pattern "$zip" --clobber
unzip -q "$zip"
for f in bundle/main.js bundle/node bundle/ferretdb bundle/start-wekan.sh; do
for f in bundle/main.js bundle/node bundle/node-runtime/libatomic.so.1 bundle/ferretdb bundle/start-wekan.sh; do
if [ ! -e "$f" ]; then
echo "::error::$zip has no $f - it is not a runnable WeKan bundle."
exit 1
fi
done
chmod +x bundle/node bundle/ferretdb bundle/start-wekan.sh
python3 releases/check-telemetry.py --bundle bundle
du -sh bundle
# flatpak-builder is for building from source. The bundle IS the build, so
+1 -1
View File
@@ -82,7 +82,7 @@ jobs:
# https://github.com/docker/build-push-action
- name: Build and push Docker image
if: steps.rel.outputs.build == 'yes'
uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a
uses: docker/build-push-action@c3c9e263c25d99ce0380d002d59b67737d91b0dc
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
+196
View File
@@ -0,0 +1,196 @@
name: macOS app
# Wrap the already published macOS bundles in Finder-launchable .app ZIPs.
# Each app carries its own native Node.js, FerretDB, and Meteor server.
on:
workflow_call:
inputs:
tag:
required: false
type: string
publish:
required: false
default: true
type: boolean
only:
description: 'JSON array of arm64 and/or amd64; empty builds both'
required: false
default: ''
type: string
workflow_dispatch:
inputs:
tag:
description: 'Release tag to wrap (empty = newest release)'
required: false
type: string
publish:
description: 'Attach the app ZIPs to the release'
required: false
default: true
type: boolean
only:
description: 'JSON array of arm64 and/or amd64; empty builds both'
required: false
default: ''
type: string
permissions:
contents: write
concurrency:
group: wekan-mac-app-${{ inputs.tag || github.ref }}
cancel-in-progress: false
jobs:
release:
runs-on: ubuntu-24.04
timeout-minutes: 10
outputs:
tag: ${{ steps.find.outputs.tag }}
version: ${{ steps.find.outputs.version }}
steps:
- id: find
env:
GH_TOKEN: ${{ github.token }}
REQUESTED_TAG: ${{ inputs.tag }}
run: |
set -euo pipefail
tag="$REQUESTED_TAG"
[ -n "$tag" ] || tag="$(gh release list --repo "$GITHUB_REPOSITORY" \
--limit 1 --json tagName --jq '.[0].tagName')"
[[ "$tag" =~ ^v[0-9]+\.[0-9]+(\.[0-9]+)?$ ]] || {
echo "::error::Expected a WeKan release tag, got $tag"; exit 1;
}
echo "tag=$tag" >> "$GITHUB_OUTPUT"
echo "version=${tag#v}" >> "$GITHUB_OUTPUT"
build:
name: Mac app ${{ matrix.arch }}
needs: release
runs-on: ${{ matrix.runner }}
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
include:
- arch: arm64
bundle_arch: mac-arm64
runner: macos-15
- arch: amd64
bundle_arch: mac-x64
runner: macos-15-intel
env:
BUILD_THIS: ${{ inputs.only == '' || contains(fromJSON(inputs.only), matrix.arch) }}
steps:
- uses: actions/checkout@v7
if: ${{ env.BUILD_THIS == 'true' }}
- name: Download and verify the native macOS bundle
if: ${{ env.BUILD_THIS == 'true' }}
id: bundle
env:
GH_TOKEN: ${{ github.token }}
TAG: ${{ needs.release.outputs.tag }}
VERSION: ${{ needs.release.outputs.version }}
BUNDLE_ARCH: ${{ matrix.bundle_arch }}
run: |
set -euo pipefail
zip="wekan-${VERSION}-${BUNDLE_ARCH}.zip"
if ! gh release view "$TAG" --repo "$GITHUB_REPOSITORY" \
--json assets --jq '.assets[].name' | grep -qxF "$zip"; then
echo "::notice::$zip has not been published yet; this app cannot be wrapped."
echo "available=false" >> "$GITHUB_OUTPUT"
exit 0
fi
gh release download "$TAG" --repo "$GITHUB_REPOSITORY" \
--pattern "$zip" --pattern "$zip.sha256sum" --clobber
shasum -a 256 -c "$zip.sha256sum"
mkdir payload
ditto -x -k "$zip" payload
for file in main.js node ferretdb start-wekan.sh; do
[ -f "payload/bundle/$file" ] || {
echo "::error::$zip lacks bundle/$file; cannot make a self-contained Mac app."
exit 1
}
done
echo "available=true" >> "$GITHUB_OUTPUT"
- name: Make the .app and ZIP
if: ${{ env.BUILD_THIS == 'true' && steps.bundle.outputs.available == 'true' }}
env:
VERSION: ${{ needs.release.outputs.version }}
MAC_ARCH: ${{ matrix.arch }}
run: |
set -euo pipefail
mkdir -p "$PWD/.tools/tmp"
export TMPDIR="$PWD/.tools/tmp"
bash releases/mac/package-app.sh payload/bundle "$VERSION" "$MAC_ARCH" dist
unzip -Z1 "dist/WeKan-${VERSION}-mac-${MAC_ARCH}.app.zip" > "$TMPDIR/app-contents.txt"
grep -q "WeKan-${VERSION}-mac-${MAC_ARCH}.app/Contents/MacOS/WeKan" "$TMPDIR/app-contents.txt"
- name: Smoke test Node.js, FerretDB and Meteor
timeout-minutes: 5
if: ${{ env.BUILD_THIS == 'true' && steps.bundle.outputs.available == 'true' }}
env:
VERSION: ${{ needs.release.outputs.version }}
MAC_ARCH: ${{ matrix.arch }}
run: |
set -euo pipefail
app="$PWD/dist/WeKan-${VERSION}-mac-${MAC_ARCH}.app"
command="$app/Contents/Resources/launch-wekan.command"
export WRITABLE_PATH="$PWD/.tools/tmp/mac-smoke-data"
export PORT=18900 ROOT_URL=http://127.0.0.1:18900
export FERRETDB_LISTEN_ADDR=127.0.0.1:28900
python3 releases/mac/smoke-app.py "$command" "$ROOT_URL/sign-in" \
"$PWD/.tools/tmp/mac-smoke.log"
- name: Keep Mac smoke log
uses: actions/upload-artifact@v7
if: ${{ always() && env.BUILD_THIS == 'true' && steps.bundle.outputs.available == 'true' }}
with:
name: mac-smoke-${{ matrix.arch }}
path: .tools/tmp/mac-smoke.log
if-no-files-found: ignore
- uses: actions/upload-artifact@v7
if: ${{ env.BUILD_THIS == 'true' && steps.bundle.outputs.available == 'true' }}
with:
name: mac-app-${{ matrix.arch }}
path: |
dist/*.app.zip
dist/*.app.zip.sha256sum
if-no-files-found: error
publish:
name: Attach Mac apps to the release
needs: [release, build]
if: ${{ !cancelled() && inputs.publish != false }}
runs-on: ubuntu-24.04
timeout-minutes: 15
steps:
- uses: actions/download-artifact@v8
continue-on-error: true
with:
pattern: mac-app-*
path: assets
merge-multiple: true
- name: Upload available Mac apps
env:
GH_TOKEN: ${{ github.token }}
TAG: ${{ needs.release.outputs.tag }}
run: |
set -euo pipefail
if ! ls assets/*.app.zip >/dev/null 2>&1; then
echo "::notice::No Mac app could be wrapped; check the macOS bundle jobs."
exit 0
fi
for zip in assets/*.app.zip; do
( cd assets && shasum -a 256 -c "$(basename "$zip").sha256sum" )
done
gh release upload "$TAG" assets/* --repo "$GITHUB_REPOSITORY" --clobber
gh release view "$TAG" --repo "$GITHUB_REPOSITORY" --json assets \
--jq '.assets[].name' > published.txt
for file in assets/*; do
grep -qxF "$(basename "$file")" published.txt || {
echo "::error::$(basename "$file") was not attached to $TAG"; exit 1;
}
done
+8 -6
View File
@@ -1,10 +1,10 @@
name: Build meteor-spk bundle
# Manually triggered. Assembles WeKan's modernized meteor-spk (the Sandstorm packaging
# tool + its meteor-spk.deps: Node 24, FerretDB, the Mongo 3.x CLIs and the modern
# tool + its meteor-spk.deps: Node 26, FerretDB, the Mongo 3.x CLIs and the modern
# sandstorm-http-bridge) and zips it as meteor-spk-YYYY-MM-DD_HH_MM_SS.zip — the same kind
# of self-contained meteor-spk bundle that https://github.com/sandstorm-io/meteor-spk
# releases, but with WeKan's Node 24 / FerretDB deps baked in. Download it to `meteor-spk
# releases, but with WeKan's Node 26 / FerretDB deps baked in. Download it to `meteor-spk
# pack` WeKan (or any Meteor 3.x app) without re-running build-deps.sh each time.
#
# gh workflow run meteor-spk.yml
@@ -25,7 +25,7 @@ permissions:
contents: write
env:
NODE_VERSION: '24'
NODE_VERSION: '26'
jobs:
meteor-spk:
@@ -39,6 +39,8 @@ jobs:
- uses: actions/setup-node@v7
with:
node-version: ${{ env.NODE_VERSION }}
- name: Use npm 12.0.2
run: npm install --global npm@12.0.2
- name: Enable unprivileged user namespaces (Ubuntu 24.04 restricts them)
# Same as sandstorm.yml: Ubuntu 24.04's AppArmor blocks the unprivileged user
@@ -50,7 +52,7 @@ jobs:
- name: Install system dependencies
run: |
bash "$GITHUB_WORKSPACE/releases/apt-install.sh" p7zip-full wget curl build-essential g++ make python3 unzip xz-utils git zip
bash "$GITHUB_WORKSPACE/releases/apt-install.sh" p7zip-full wget curl libatomic1 build-essential g++ make python3 unzip xz-utils git zip
- name: Install Sandstorm (dev, unattended)
# build-deps.sh's [bridge] step copies the modern
@@ -58,9 +60,9 @@ jobs:
# must be installed first — same ordering as sandstorm.yml.
run: curl https://install.sandstorm.io | sudo bash -s -- -d
- name: Assemble modern meteor-spk.deps (Node 24 + FerretDB + Mongo 3.x CLIs)
- name: Assemble modern meteor-spk.deps (Node 26 + FerretDB + Mongo 3.x CLIs)
# Base = upstream meteor-spk 0.6.0 from dl.sandstorm.io; build-deps.sh swaps in
# Node 24, FerretDB, the Mongo 3.x CLIs, the migration launcher/importer, keeps
# Node 26, FerretDB, the Mongo 3.x CLIs, the migration launcher/importer, keeps
# niscud, and swaps in the modern sandstorm-http-bridge. Produces
# $HOME/projects/meteor-spk/meteor-spk-0.6.0 (the meteor-spk tool + deps).
run: bash sandstorm-src/build-deps.sh
+6 -8
View File
@@ -20,10 +20,10 @@ jobs:
steps:
- uses: actions/checkout@v7
- name: Setup Node 24
- name: Setup Node 26
uses: actions/setup-node@v6
with:
node-version: '24'
node-version: '26'
cache: 'npm'
- name: Cache Meteor installation
@@ -91,10 +91,10 @@ jobs:
steps:
- uses: actions/checkout@v7
- name: Setup Node 24
- name: Setup Node 26
uses: actions/setup-node@v6
with:
node-version: '24'
node-version: '26'
cache: 'npm'
- name: Cache Meteor installation
@@ -150,7 +150,6 @@ jobs:
PORT=3000 \
WRITABLE_PATH="$PWD/wekan-writable" \
WITH_API=true \
RICHER_CARD_COMMENT_EDITOR=false \
node output/bundle/main.js > wekan-run.log 2>&1 &
# The production server serves the client JS statically, so once :3000
# responds the bundle is being served. Wait up to 10 minutes.
@@ -220,10 +219,10 @@ jobs:
steps:
- uses: actions/checkout@v7
- name: Setup Node 24
- name: Setup Node 26
uses: actions/setup-node@v6
with:
node-version: '24'
node-version: '26'
cache: 'npm'
- name: Cache Meteor installation
@@ -269,7 +268,6 @@ jobs:
PORT=3000 \
WRITABLE_PATH="$PWD/wekan-writable" \
WITH_API=true \
RICHER_CARD_COMMENT_EDITOR=false \
node output/bundle/main.js > wekan-run.log 2>&1 &
for i in $(seq 1 60); do
if curl -sf http://localhost:3000 > /dev/null; then
+64 -6
View File
@@ -23,9 +23,13 @@ name: Release all missing
# downloads the PUBLISHED wekan-<v>-amd64.zip and repacks it, so it can rebuild:
#
# the six extra architectures s390x ppc64le riscv64 i386 armhf loong64
# the AppImages and Flatpaks by calling their own workflows
# the AppImages, Mac apps and Flatpaks by calling their own workflows
#
# It cannot rebuild amd64 itself (that is the Meteor build), nor arm64, win64
# The recover job first retries failed jobs from the matching named full-release
# run, including native builds, Docker, snap and website. Successful jobs are
# preserved. The asset planner below then fills packaging gaps.
#
# The asset planner alone cannot rebuild amd64 itself (that is the Meteor build), nor arm64, win64
# and mac-arm64 (each needs its own kind of runner and its own steps), nor the
# Sandstorm .spk. When one of those is missing it says so and names
# release-all.yml, rather than pretending.
@@ -51,10 +55,12 @@ on:
permissions:
contents: write
actions: write
env:
DO_NOT_TRACK: '1'
# Must match release-all.yml: the Node.js major the bundles carry.
NODE_VERSION: '24'
NODE_VERSION: '26'
# Never at the same time as a full release run, which would be uploading to the
# same assets.
@@ -63,7 +69,25 @@ concurrency:
cancel-in-progress: false
jobs:
recover:
runs-on: ubuntu-latest
timeout-minutes: 360
steps:
- uses: actions/checkout@v7
- name: Check dependency risk indicators before recovery
run: python3 releases/remote-release.py --audit
- name: Retry failed jobs of the matching full release
env:
GH_TOKEN: ${{ github.token }}
VERSION: ${{ inputs.version }}
run: |
set -euo pipefail
V="$VERSION"
[ -n "$V" ] || V="$(gh release view --repo "$GITHUB_REPOSITORY" --json tagName --jq .tagName)"
python3 releases/retry-failed-release.py "$V"
plan:
needs: recover
timeout-minutes: 15
name: what the release is missing
runs-on: ubuntu-latest
@@ -71,6 +95,7 @@ jobs:
version: ${{ steps.plan.outputs.version }}
extra: ${{ steps.plan.outputs.extra }}
appimage: ${{ steps.plan.outputs.appimage }}
mac: ${{ steps.plan.outputs.mac }}
flatpak: ${{ steps.plan.outputs.flatpak }}
windows: ${{ steps.plan.outputs.windows }}
manual: ${{ steps.plan.outputs.manual }}
@@ -78,6 +103,14 @@ jobs:
steps:
- uses: actions/checkout@v7
- name: Check dependency risk indicators before release work
shell: bash
run: python3 releases/remote-release.py --audit
- name: Audit telemetry source before release work
shell: bash
run: python3 ./releases/check-telemetry.py --source .
- id: plan
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -116,7 +149,7 @@ jobs:
total="$(wc -l < missing.txt | tr -d ' ')"
echo "total=$total" >> "$GITHUB_OUTPUT"
for kind in extra appimage flatpak windows; do
for kind in extra appimage mac flatpak windows; do
sels="$(awk -v k="$kind" '$1 == k { print $2 }' missing.txt)"
json="$(printf '%s\n' $sels | sed '/^$/d' | jq -R . | jq -sc .)"
[ -n "$json" ] || json='[]'
@@ -152,7 +185,8 @@ jobs:
- name: Say plainly what this run will not do
if: ${{ steps.plan.outputs.manual != '' }}
run: |
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.
@@ -198,6 +232,10 @@ jobs:
- uses: actions/checkout@v7
- name: Audit telemetry source before release work
shell: bash
run: python3 ./releases/check-telemetry.py --source .
- name: Install dependencies
if: ${{ steps.want.outputs.build == 'yes' }}
run: |
@@ -274,6 +312,18 @@ jobs:
publish: true
only: ${{ needs.plan.outputs.appimage }}
mac:
name: Mac apps
needs: plan
if: ${{ needs.plan.outputs.mac != '[]' }}
uses: ./.github/workflows/mac.yml
permissions:
contents: write
with:
tag: v${{ needs.plan.outputs.version }}
publish: true
only: ${{ needs.plan.outputs.mac }}
flatpak:
name: Flatpaks
needs: plan
@@ -326,6 +376,10 @@ jobs:
with:
path: wekan
- name: Audit telemetry source before release work
shell: bash
run: python3 wekan/releases/check-telemetry.py --source wekan
- name: Is a chart already published for this version?
id: check
env:
@@ -400,11 +454,15 @@ jobs:
done:
timeout-minutes: 15
name: what is still missing
needs: [plan, extra-arches, appimage, flatpak, charts]
needs: [plan, extra-arches, appimage, mac, flatpak, charts]
if: ${{ !cancelled() }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Audit telemetry source before release work
shell: bash
run: python3 ./releases/check-telemetry.py --source .
- env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
V: ${{ needs.plan.outputs.version }}
File diff suppressed because it is too large. Load diff
+4 -2
View File
@@ -31,7 +31,7 @@ permissions:
contents: read
env:
NODE_VERSION: '24'
NODE_VERSION: '26'
jobs:
sandstorm-store:
@@ -43,6 +43,8 @@ jobs:
- uses: actions/setup-node@v7
with:
node-version: ${{ env.NODE_VERSION }}
- name: Use npm 12.0.2
run: npm install --global npm@12.0.2
- name: Enable unprivileged user namespaces (Ubuntu 24.04 restricts them)
run: |
@@ -51,7 +53,7 @@ jobs:
- name: Install system dependencies
run: |
bash "$GITHUB_WORKSPACE/releases/apt-install.sh" p7zip-full wget curl build-essential g++ make python3 unzip xz-utils git
bash "$GITHUB_WORKSPACE/releases/apt-install.sh" p7zip-full wget curl libatomic1 build-essential g++ make python3 unzip xz-utils git
- name: Install Sandstorm (dev, unattended)
# Provides the `spk` command used to publish, and the sandstorm-http-bridge that
+6 -4
View File
@@ -25,7 +25,7 @@ permissions:
contents: write
env:
NODE_VERSION: '24'
NODE_VERSION: '26'
jobs:
sandstorm:
@@ -41,6 +41,8 @@ jobs:
- uses: actions/setup-node@v7
with:
node-version: ${{ env.NODE_VERSION }}
- name: Use npm 12.0.2
run: npm install --global npm@12.0.2
- name: Enable unprivileged user namespaces (Ubuntu 24.04 restricts them)
# Ubuntu 24.04's AppArmor defaults kernel.apparmor_restrict_unprivileged_userns=1,
@@ -54,7 +56,7 @@ jobs:
- name: Install system dependencies and Meteor
run: |
bash "$GITHUB_WORKSPACE/releases/apt-install.sh" p7zip-full wget curl build-essential g++ make python3 unzip xz-utils git qemu-user-static
bash "$GITHUB_WORKSPACE/releases/apt-install.sh" p7zip-full wget curl libatomic1 build-essential g++ make python3 unzip xz-utils git qemu-user-static
if [ ! -f "$HOME/.meteor/meteor" ]; then curl https://install.meteor.com/ | sh; fi
echo "$HOME/.meteor" >> "$GITHUB_PATH"
@@ -64,9 +66,9 @@ jobs:
# bundled one, so the Sandstorm install must be in place first.
run: curl https://install.sandstorm.io | sudo bash -s -- -d
- name: Assemble modern meteor-spk.deps (Node 24 + FerretDB + Mongo 3.x CLIs)
- name: Assemble modern meteor-spk.deps (Node 26 + FerretDB + Mongo 3.x CLIs)
# Base = upstream meteor-spk 0.6.0 from dl.sandstorm.io (has mongod 3.0 +
# niscud). build-deps.sh swaps in Node 24, adds FerretDB + the Mongo 3.x
# niscud). build-deps.sh swaps in Node 26, adds FerretDB + the Mongo 3.x
# CLIs + the migration launcher/importer, keeps niscud, and swaps in the
# modern sandstorm-http-bridge from the Sandstorm install above. No dependency
# on the retired releases.wekan.team or the old projects.7z.
+5 -1
View File
@@ -137,10 +137,14 @@ jobs:
}
}
Write-Host "$zip carries $($names.Count) entries."
python releases/check-telemetry.py --archive $zip
if ($LASTEXITCODE -ne 0) { throw 'Telemetry audit rejected the Windows bundle.' }
- uses: actions/setup-node@v7
with:
node-version: 24
node-version: 26
- name: Use npm 12.0.2
run: npm install --global npm@12.0.2
- name: Work out which members cannot be virtual
shell: pwsh
+28 -24
View File
@@ -6,12 +6,12 @@
meteor-base@1.5.2
# Build system
ecmascript@0.19.2-beta360.0
ecmascript@0.19.2-beta360.1
standard-minifier-js@3.2.0
rspack@1.4.0-beta360.0
rspack@1.4.0-beta360.1
# Declared explicitly because server/modernBrowsers.js imports it, to say that
# Yandex Browser is modern and must not be served the legacy bundle (#6557).
modern-browsers@0.2.3
modern-browsers@0.2.4-beta360.1
blaze@3.0.2
@@ -19,11 +19,11 @@ blaze@3.0.2
aldeed:collection2
aldeed:schema-index@4.0.0-beta.5
reywood:publish-composite
mongo@2.5.1
mongo@2.5.2-beta360.1
# Account system
accounts-password@3.3.1
accounts-2fa@3.1.0
accounts-password@3.3.2-beta360.1
accounts-2fa@3.1.1-beta360.1
accounts-express@1.0.0
communitypackages:core
communitypackages:unstyled
@@ -39,18 +39,18 @@ wekan-oidc
wekan-accounts-oidc
# Utilities
check@1.5.0
random@1.2.2
reactive-dict@1.3.2
session@1.2.3
tracker@1.3.4
check@1.5.1-beta360.1
random@1.2.3-beta360.1
reactive-dict@1.3.3-beta360.1
session@1.2.4-beta360.1
tracker@1.3.5-beta360.1
audit-argument-checks@1.0.8
# UI components
ostrio:i18n
reactive-var@1.0.13
shell-server@0.7.0
email@3.2.0
shell-server@0.7.1-beta360.1
email@3.2.1-beta360.1
dynamic-import@0.7.4
wekan-markdown
quave:synced-cron
@@ -59,17 +59,21 @@ ostrio:files
# lmieulet:meteor-coverage
meteortesting:mocha@3.0.0
matb33:collection-hooks
service-configuration@1.3.5
service-configuration@1.3.6-beta360.1
minifier-css@2.0.2
ejson@1.2.0
logging@1.3.6
ejson@1.2.1-beta360.1
logging@1.3.7-beta360.1
wekan-fullcalendar
wekan-fontawesome
accounts-google@1.4.1
accounts-github@1.5.1
accounts-facebook@1.3.4
accounts-twitter@1.5.2
accounts-meteor-developer@1.5.1
accounts-weibo@1.4.1
accounts-meetup@1.5.1
accounts-passwordless@3.1.1
accounts-google@1.4.2-beta360.1
accounts-github@1.5.2-beta360.1
accounts-facebook@1.3.5-beta360.1
accounts-twitter@1.5.3-beta360.1
accounts-meteor-developer@1.5.2-beta360.1
accounts-weibo@1.4.2-beta360.1
accounts-meetup@1.5.2-beta360.1
accounts-passwordless@3.1.2-beta360.1
instrumentation
# Prevent Meteor build/run tools from sending application package statistics.
package-stats-opt-out@1.0.8
+1 -1
View File
@@ -1 +1 @@
METEOR@3.6-beta.0
METEOR@3.6-beta.1
+68 -66
View File
@@ -1,113 +1,115 @@
accounts-2fa@3.1.0
accounts-base@3.3.1
accounts-2fa@3.1.1-beta360.1
accounts-base@3.4.0-beta360.1
accounts-express@1.0.0
accounts-facebook@1.3.4
accounts-github@1.5.1
accounts-google@1.4.1
accounts-meetup@1.5.1
accounts-meteor-developer@1.5.1
accounts-oauth@1.4.7
accounts-password@3.3.1
accounts-passwordless@3.1.1
accounts-twitter@1.5.2
accounts-weibo@1.4.1
accounts-facebook@1.3.5-beta360.1
accounts-github@1.5.2-beta360.1
accounts-google@1.4.2-beta360.1
accounts-meetup@1.5.2-beta360.1
accounts-meteor-developer@1.5.2-beta360.1
accounts-oauth@1.4.8-beta360.1
accounts-password@3.3.2-beta360.1
accounts-passwordless@3.1.2-beta360.1
accounts-twitter@1.5.3-beta360.1
accounts-weibo@1.4.2-beta360.1
aldeed:collection2@4.2.2
aldeed:schema-index@4.0.0
aldeed:simple-schema@1.13.1
allow-deny@2.1.0
allow-deny@2.1.1-beta360.1
audit-argument-checks@1.0.8
autoupdate@2.0.1
babel-compiler@7.15.2-beta360.0
autoupdate@2.0.2-beta360.1
babel-compiler@7.15.2-beta360.1
babel-runtime@1.5.2
base64@1.0.14
binary-heap@1.0.13
base64@1.0.15-beta360.1
binary-heap@1.0.14-beta360.1
blaze@3.0.3
blaze-tools@2.0.1
boilerplate-generator@2.1.0
caching-compiler@2.0.1
caching-html-compiler@2.0.1
callback-hook@1.8.0
check@1.5.0
callback-hook@1.8.1-beta360.1
check@1.5.1-beta360.1
communitypackages:core@2.0.3
communitypackages:flow-routing@2.1.0
communitypackages:unstyled@2.0.1
core-runtime@1.0.0
ddp@1.4.2
ddp-client@3.4.1
ddp@1.4.3-beta360.1
ddp-client@3.4.2-beta360.1
ddp-common@1.4.5
ddp-rate-limiter@1.3.0
ddp-server@3.4.0
diff-sequence@1.1.3
ddp-rate-limiter@1.3.1-beta360.1
ddp-server@3.4.1-beta360.1
diff-sequence@1.1.4-beta360.1
dynamic-import@0.7.4
ecmascript@0.19.2-beta360.0
ecmascript@0.19.2-beta360.1
ecmascript-runtime@0.8.3
ecmascript-runtime-client@0.13.0
ecmascript-runtime-server@0.11.1
ejson@1.2.0
email@3.2.0
ejson@1.2.1-beta360.1
email@3.2.1-beta360.1
es5-shim@4.8.1
facebook-oauth@1.11.6
facts-base@1.0.2
facebook-oauth@1.11.7-beta360.1
facts-base@1.0.3-beta360.1
fetch@0.2.0
geojson-utils@1.0.12
github-oauth@1.4.2
google-oauth@1.4.5
geojson-utils@1.0.13-beta360.1
github-oauth@1.4.3-beta360.1
google-oauth@1.4.6-beta360.1
hot-code-push@1.0.5
html-tools@2.0.1
htmljs@2.0.2
id-map@1.2.0
id-map@1.2.1-beta360.1
instrumentation@0.0.1-beta360.1
inter-process-messaging@0.1.3
jquery@3.0.2
lai:collection-extensions@1.0.0
localstorage@1.2.1
logging@1.3.6
logging@1.3.7-beta360.1
matb33:collection-hooks@2.1.0
meetup-oauth@1.1.3
meteor@2.3.1
meetup-oauth@1.1.4-beta360.1
meteor@2.3.2-beta360.1
meteor-base@1.5.2
meteor-developer-oauth@1.3.3
meteor-developer-oauth@1.3.4-beta360.1
meteortesting:browser-tests@1.8.0
meteortesting:mocha@3.4.0
meteortesting:mocha-core@8.2.0
minifier-css@2.0.2
minifier-js@3.3.2-beta360.0
minimongo@2.2.0
modern-browsers@0.2.3
minifier-js@3.3.2-beta360.1
minimongo@2.2.1-beta360.1
modern-browsers@0.2.4-beta360.1
modules@0.20.3
modules-runtime@0.13.2
mongo@2.5.1
mongo@2.5.2-beta360.1
mongo-decimal@0.2.0
mongo-dev-server@1.1.1
mongo-id@1.0.9
mongo-id@1.0.10-beta360.1
npm-mongo@6.16.3
oauth@3.0.4
oauth1@1.5.3
oauth@3.0.5-beta360.1
oauth1@1.5.4-beta360.1
oauth2@1.3.3
observe-sequence@2.0.1
ordered-dict@1.2.0
ordered-dict@1.2.1-beta360.1
ostrio:cookies@2.9.2
ostrio:cstorage@4.0.1
ostrio:files@3.0.1
ostrio:flow-router-extra@3.15.3
ostrio:i18n@3.2.1
promise@1.0.0
package-stats-opt-out@1.0.8
promise@1.0.1-beta360.1
quave:synced-cron@2.4.0
raix:eventemitter@1.0.0
random@1.2.2
rate-limit@1.2.0
random@1.2.3-beta360.1
rate-limit@1.2.1-beta360.1
react-fast-refresh@0.3.0
reactive-dict@1.3.2
reactive-dict@1.3.3-beta360.1
reactive-var@1.0.13
reload@1.3.2
retry@1.1.1
reload@1.3.3-beta360.1
retry@1.1.2-beta360.1
reywood:publish-composite@1.9.0
routepolicy@1.1.2
rspack@1.4.0-beta360.0
service-configuration@1.3.5
session@1.2.3
sha@1.0.10
shell-server@0.7.0
socket-stream-client@0.7.1
routepolicy@1.1.3-beta360.1
rspack@1.4.0-beta360.1
service-configuration@1.3.6-beta360.1
session@1.2.4-beta360.1
sha@1.0.11-beta360.1
shell-server@0.7.1-beta360.1
socket-stream-client@0.7.2-beta360.1
spacebars@2.0.1
spacebars-compiler@2.0.1
standard-minifier-js@3.2.0
@@ -115,14 +117,14 @@ templating@1.4.5
templating-compiler@2.0.1
templating-runtime@2.0.2
templating-tools@2.0.1
tools-core@1.4.0-beta360.0
tracker@1.3.4
twitter-oauth@1.3.4
typescript@5.11.2-beta360.0
url@1.3.6
webapp@2.3.0
webapp-hashing@1.1.2
weibo-oauth@1.3.3
tools-core@1.4.0-beta360.1
tracker@1.3.5-beta360.1
twitter-oauth@1.3.5-beta360.1
typescript@5.11.2-beta360.1
url@1.3.7-beta360.1
webapp@2.3.1-beta360.1
webapp-hashing@1.1.3-beta360.1
weibo-oauth@1.3.4-beta360.1
wekan-accounts-cas@0.2.0
wekan-accounts-lockout@1.1.0
wekan-accounts-oidc@1.0.10
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-accounts
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-blaze
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-cli-installation
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-community-packages
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-debugging
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-deployment
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-methods
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-modern-build-stack
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-mongo-minimongo
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-native
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-pubsub
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-react
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-security
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-testing
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/meteor-typescript
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/migrate-to-meteor-3
+1
View File
@@ -0,0 +1 @@
../../.agents/skills/migrate-to-rspack
+8439 -261
View File
File diff suppressed because it is too large. Load diff
+12 -5
View File
@@ -20,7 +20,7 @@ LABEL org.opencontainers.image.source="https://github.com/wekan/wekan"
# TARGETARCH and TARGETVARIANT are automatically provided by Docker Buildx
ARG TARGETARCH
ARG TARGETVARIANT
ARG VERSION=11.78
ARG VERSION=12.02
ARG DEBIAN_FRONTEND=noninteractive
ENV BUILD_DEPS="apt-utils gnupg wget bzip2 g++ curl libarchive-tools build-essential git ca-certificates python3 unzip"
@@ -28,10 +28,10 @@ ENV BUILD_DEPS="apt-utils gnupg wget bzip2 g++ curl libarchive-tools build-essen
ENV \
DEBUG=false \
DDP_TRANSPORT=sockjs \
NODE_VERSION=v24.21.0 \
METEOR_RELEASE=METEOR@3.6-beta.0 \
NODE_VERSION=v26.10.0 \
METEOR_RELEASE=METEOR@3.6-beta.1 \
USE_EDGE=false \
NPM_VERSION=11.12.1 \
NPM_VERSION=12.1.0 \
SRC_PATH=./ \
WITH_API=true \
MONGO_OPLOG_URL="" \
@@ -50,7 +50,6 @@ ENV \
AVATARS_UPLOAD_EXTERNAL_PROGRAM="" \
AVATARS_UPLOAD_MIME_TYPES="" \
AVATARS_UPLOAD_MAX_SIZE=72000 \
RICHER_CARD_COMMENT_EDITOR=false \
CARD_OPENED_WEBHOOK_ENABLED=false \
MAX_IMAGE_PIXEL="" \
IMAGE_COMPRESS_RATIO="" \
@@ -175,6 +174,7 @@ ENV \
SAML_IDENTIFIER_FORMAT="" \
SAML_LOCAL_PROFILE_MATCH_ATTRIBUTE="" \
SAML_ATTRIBUTES="" \
SAML_MERGE_EXISTING_USERS=false \
OAUTH_GOOGLE_ENABLED=false \
OAUTH_GOOGLE_CLIENT_ID="" \
OAUTH_GOOGLE_SECRET="" \
@@ -225,6 +225,9 @@ COPY --chmod=755 releases/resolve-node-source.sh /tmp/resolve-node-source.sh
# The two travel together: without this line the resolve step dies on the first
# lookup. tests/releaseDownloads.test.cjs pins the pair.
COPY --chmod=755 releases/fetch.sh /tmp/fetch.sh
COPY --chmod=755 releases/check-telemetry.py /tmp/check-telemetry.py
COPY releases/risk-baseline.json /tmp/risk-baseline.json
COPY --chmod=755 releases/prepare-bundle-npm.mjs /tmp/prepare-bundle-npm.mjs
# The bundle's `npm install` leaves node-gyp's whole tree - 83 of the 120
# packages in programs/server/node_modules - in a bundle that compiles nothing at
# run time, and a scan of the published image reads it as what it is. The same
@@ -261,6 +264,8 @@ useradd --user-group --system --create-home --home-dir /home/wekan wekan
apt-get update --assume-yes
apt-get upgrade --assume-yes
apt-get install --assume-yes --no-install-recommends ${BUILD_DEPS}
# Runtime MIME detection and Node.js atomic operations survive build cleanup.
apt-get install --assume-yes --no-install-recommends file libatomic1
# Multi-arch mapping: Docker TARGETARCH -> WeKan's own platform name, which is
# both the bundle .zip's name and what resolve-node-source.sh is asked about.
@@ -371,6 +376,7 @@ wget --tries=20 --waitretry=20 --retry-on-http-error=404,403,500,502,503 "${WEKA
|| { echo "Failed to download ${WEKAN_ZIP_URL} after retries"; exit 8; }
unzip "wekan-${VERSION}-${WEKAN_ARCH}.zip"
rm "wekan-${VERSION}-${WEKAN_ARCH}.zip"
node /tmp/prepare-bundle-npm.mjs ./bundle
npm install --prefix ./bundle/programs/server
# node-gyp and @mapbox/node-pre-gyp compiled nothing here - every native module
# in the bundle is a prebuilt .node - and nothing in boot.js reaches them. Their
@@ -387,6 +393,7 @@ node /tmp/bundle-trim.mjs ./bundle --transport sockjs --drop-legacy-client
# And the npm tree rspack cannot tree-shake, because Atmosphere packages load it
# through Npm.require(). Only what it can prove nothing requires.
node /tmp/prune-unreachable-npm.mjs ./bundle
python3 /tmp/check-telemetry.py --bundle ./bundle
mv /home/wekan/app/bundle /build
# The .zip bundle now ships a self-contained launcher + its own Node.js for the
+2 -2
View File
@@ -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
### Building WeKan
+1 -1
View File
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v11.78.0"
appVersion: "v12.02.0"
files:
userUploads:
- README.md
+95 -64
View File
@@ -89,22 +89,24 @@ echo.
echo ==================== WeKan ( Windows ) ====================
echo 1^) Setup ^(install dependencies, build^)
echo 2^) Dev server ^(meteor run variants^)
echo 3^) Tests ^(mocha, playwright, e2e, ...^)
echo 4^) Docker ^(start / follow logs / stop^)
echo 5^) Releases ^(release, snap, bundles, translations, ...^)
echo 6^) CLI commands ^(run any of them without the menu^)
echo 7^) Tools ^(save deps, forge tools, mirror^)
echo 3^) Dev server nobuild ^(source loader + bundled MongoDB^)
echo 4^) Tests ^(mocha, playwright, e2e, ...^)
echo 5^) Docker ^(start / follow logs / stop^)
echo 6^) Releases ^(release, snap, bundles, translations, ...^)
echo 7^) CLI commands ^(run any of them without the menu^)
echo 8^) Tools ^(save deps, forge tools, mirror^)
echo 0^) Quit
echo ==========================================================
set "choice="
set /p "choice=Choose a category: "
if "%choice%"=="1" goto menu_setup
if "%choice%"=="2" goto menu_dev
if "%choice%"=="3" goto menu_tests
if "%choice%"=="4" goto menu_docker
if "%choice%"=="5" goto menu_releases
if "%choice%"=="6" goto menu_cli
if "%choice%"=="7" goto menu_tools
if "%choice%"=="3" goto menu_dev_nobuild
if "%choice%"=="4" goto menu_tests
if "%choice%"=="5" goto menu_docker
if "%choice%"=="6" goto menu_releases
if "%choice%"=="7" goto menu_cli
if "%choice%"=="8" goto menu_tools
if "%choice%"=="0" goto end
echo invalid option
goto menu
@@ -130,8 +132,17 @@ goto menu_setup
REM ===========================================================================
:menu_dev
set "DEV_NOBUILD="
set "DEV_MENU_TITLE=Dev server"
goto menu_dev_options
:menu_dev_nobuild
set "DEV_NOBUILD=1"
set "DEV_MENU_TITLE=Dev server nobuild"
:menu_dev_options
echo.
echo -- Dev server -- ^(0 = Back^)
echo == %DEV_MENU_TITLE% ==
echo 1^) localhost:3000
echo 2^) localhost:3000 + trace warnings
echo 3^) localhost:3000 + bundle visualizer
@@ -151,7 +162,7 @@ if "%choice%"=="6" goto dev_customip
if "%choice%"=="7" goto dev_customurl
if "%choice%"=="8" goto dev_killall
if "%choice%"=="0" goto menu
goto menu_dev
goto menu_dev_options
REM ===========================================================================
:menu_tests
@@ -177,6 +188,7 @@ echo 13^) Count tests by category
echo 14^) All databases ^(sequential^): build newest FerretDB v1, run every query type
echo against every database with an image for this CPU, compare the answers
echo 15^) Run all FerretDB tests - SEQUENTIAL ^(unit, vet, integration^)
echo 16^) EVERYTHING source one by one ^(Dev server nobuild, all browsers^)
set "choice="
set /p "choice=Choose: "
if "%choice%"=="1" goto test_everything_two
@@ -194,6 +206,7 @@ if "%choice%"=="12" goto check_floating
if "%choice%"=="13" goto count_tests
if "%choice%"=="14" goto test_all_databases
if "%choice%"=="15" goto test_ferretdb
if "%choice%"=="16" goto test_everything_source
if "%choice%"=="0" goto menu
goto menu_tests
@@ -250,56 +263,58 @@ REM Release notes: In short, Security, translation languages, thanks and changel
REM Binary provenance stays in build artifacts.
echo.
echo -- Releases / Release -- ^(0 = Back^)
echo 1^) Release ALL platforms: push CHANGELOG, trigger release-all.yml
echo 2^) Release ^(older local flow^), for one version
echo 3^) Show the version numbers this checkout would release
echo 4^) Show the CHANGELOG of the release being prepared
echo 5^) Rebuild the API docs ^(wekan.yml + wekan.html^)
echo 6^) Rebuild a release that already exists
echo 7^) Prepare the release directory for one version
echo 8^) Collect the built bundles for one version
echo 9^) Link the newest bundle as wekan-latest
echo 10^) Move an old release out of the download directory
echo 11^) Clean up after a release
echo 12^) Publish the Helm chart in wekan/charts
echo 13^) Update wekan.fi with the new version and API docs
echo 14^) Publish the npm packages xet7 maintains
echo 15^) Check every download URL snapcraft.yaml uses
echo 16^) Clone all release-related repositories
echo 17^) Create the GitHub Actions secrets a release needs
echo 18^) Add a git tag for a release
echo 19^) Delete a git tag, locally and on the remote
echo 20^) Move the 'stable' tag to HEAD
echo 21^) Release the wekan-ondra / wekan-gantt-gpl variants, part 1
echo 22^) Release the wekan-ondra / wekan-gantt-gpl variants, part 2
echo 23^) Report ^(or repair^) the Helm chart index for past releases
echo 24^) Rebuild the Helm index.yaml from the chart packages
echo 1^) Release All: audit, commit, push and build with Actions
echo 2^) Release All Missing
echo 3^) Release ^(older local flow^), for one version
echo 4^) Show the version numbers this checkout would release
echo 5^) Show the CHANGELOG of the release being prepared
echo 6^) Rebuild the API docs ^(wekan.yml + wekan.html^)
echo 7^) Rebuild a release that already exists
echo 8^) Prepare the release directory for one version
echo 9^) Collect the built bundles for one version
echo 10^) Link the newest bundle as wekan-latest
echo 11^) Move an old release out of the download directory
echo 12^) Clean up after a release
echo 13^) Publish the Helm chart in wekan/charts
echo 14^) Update wekan.fi with the new version and API docs
echo 15^) Publish the npm packages xet7 maintains
echo 16^) Check every download URL snapcraft.yaml uses
echo 17^) Clone all release-related repositories
echo 18^) Create the GitHub Actions secrets a release needs
echo 19^) Add a git tag for a release
echo 20^) Delete a git tag, locally and on the remote
echo 21^) Move the 'stable' tag to HEAD
echo 22^) Release the wekan-ondra / wekan-gantt-gpl variants, part 1
echo 23^) Release the wekan-ondra / wekan-gantt-gpl variants, part 2
echo 24^) Report ^(or repair^) the Helm chart index for past releases
echo 25^) Rebuild the Helm index.yaml from the chart packages
set "choice="
set /p "choice=Choose: "
if "%choice%"=="1" call :rel_run "releases/release-all.sh" ""
if "%choice%"=="2" call :rel_run "releases/release.sh" "WeKan version, e.g. 10.50"
if "%choice%"=="3" call :rel_run "releases/version.sh" ""
if "%choice%"=="4" call :rel_run "releases/changelog.sh" ""
if "%choice%"=="5" call :rel_run "releases/rebuild-docs.sh" ""
if "%choice%"=="6" call :rel_run "releases/rebuild-release.sh" ""
if "%choice%"=="7" call :rel_run "releases/rel.sh" "WeKan version, e.g. 10.50"
if "%choice%"=="8" call :rel_run "releases/release-bundle.sh" "WeKan version, e.g. 10.50"
if "%choice%"=="9" call :rel_run "releases/release-ln.sh" "WeKan version, e.g. 10.50"
if "%choice%"=="10" call :rel_run "releases/release-x2.sh" "WeKan version, e.g. 10.50"
if "%choice%"=="11" call :rel_run "releases/release-cleanup.sh" "WeKan version, e.g. 10.50"
if "%choice%"=="12" call :rel_run "releases/release-charts.sh" ""
if "%choice%"=="13" call :rel_run "releases/release-website.sh" ""
if "%choice%"=="14" call :rel_run "releases/npm-publish.sh" ""
if "%choice%"=="15" call :rel_run "releases/test-download-urls.sh" ""
if "%choice%"=="16" call :rel_run "releases/clone-release-repos.sh" ""
if "%choice%"=="17" call :rel_run "releases/create-github-secrets.sh" ""
if "%choice%"=="18" call :rel_run "releases/add-tag.sh" "Version tag, e.g. v10.50"
if "%choice%"=="19" call :rel_run "releases/delete-tag.sh" "Version tag, e.g. v10.50"
if "%choice%"=="20" call :rel_cmd "git tag --force stable HEAD && git push --tags --force && git push --follow-tags" ""
if "%choice%"=="21" call :rel_run "releases/release-ondra-1.sh" ""
if "%choice%"=="22" call :rel_run "releases/release-ondra-2.sh" ""
if "%choice%"=="23" call :rel_run "releases/backfill-charts.sh" ""
if "%choice%"=="24" call :rel_run "releases/reindex-charts.py" ""
if "%choice%"=="2" call :rel_run "releases/release-all-missing.sh" ""
if "%choice%"=="3" call :rel_run "releases/release.sh" "WeKan version, e.g. 10.50"
if "%choice%"=="4" call :rel_run "releases/version.sh" ""
if "%choice%"=="5" call :rel_run "releases/changelog.sh" ""
if "%choice%"=="6" call :rel_run "releases/rebuild-docs.sh" ""
if "%choice%"=="7" call :rel_run "releases/rebuild-release.sh" ""
if "%choice%"=="8" call :rel_run "releases/rel.sh" "WeKan version, e.g. 10.50"
if "%choice%"=="9" call :rel_run "releases/release-bundle.sh" "WeKan version, e.g. 10.50"
if "%choice%"=="10" call :rel_run "releases/release-ln.sh" "WeKan version, e.g. 10.50"
if "%choice%"=="11" call :rel_run "releases/release-x2.sh" "WeKan version, e.g. 10.50"
if "%choice%"=="12" call :rel_run "releases/release-cleanup.sh" "WeKan version, e.g. 10.50"
if "%choice%"=="13" call :rel_run "releases/release-charts.sh" ""
if "%choice%"=="14" call :rel_run "releases/release-website.sh" ""
if "%choice%"=="15" call :rel_run "releases/npm-publish.sh" ""
if "%choice%"=="16" call :rel_run "releases/test-download-urls.sh" ""
if "%choice%"=="17" call :rel_run "releases/clone-release-repos.sh" ""
if "%choice%"=="18" call :rel_run "releases/create-github-secrets.sh" ""
if "%choice%"=="19" call :rel_run "releases/add-tag.sh" "Version tag, e.g. v10.50"
if "%choice%"=="20" call :rel_run "releases/delete-tag.sh" "Version tag, e.g. v10.50"
if "%choice%"=="21" call :rel_cmd "git tag --force stable HEAD && git push --tags --force && git push --follow-tags" ""
if "%choice%"=="22" call :rel_run "releases/release-ondra-1.sh" ""
if "%choice%"=="23" call :rel_run "releases/release-ondra-2.sh" ""
if "%choice%"=="24" call :rel_run "releases/backfill-charts.sh" ""
if "%choice%"=="25" call :rel_run "releases/reindex-charts.py" ""
if "%choice%"=="0" goto menu_releases
goto rel_release
@@ -557,7 +572,8 @@ echo Linux only and are in build.sh instead.
goto :eof
:cli_list
echo release-all Release ALL platforms: push CHANGELOG, trigger release-all.yml
echo release-all-missing Complete missing outputs of an existing release
echo release-all Release All: audit, commit, push and build with Actions
echo release Release ^(older local flow^), for one version ^<WeKan version, e.g. 10.50^>
echo version Show the version numbers this checkout would release
echo changelog Show the CHANGELOG of the release being prepared
@@ -642,6 +658,7 @@ set "ARGS=%*"
call set "ARGS=%%ARGS:*%K%=%%"
set "CMD="
set "SHCMD="
if /I "%K%"=="release-all-missing" (set "CMD=bash releases/release-all-missing.sh" ^& goto cli_go)
if /I "%K%"=="release-all" (set "CMD=bash releases/release-all.sh" ^& goto cli_go)
if /I "%K%"=="release" (set "CMD=bash releases/release.sh" ^& goto cli_go)
if /I "%K%"=="version" (set "CMD=bash releases/version.sh" ^& goto cli_go)
@@ -810,6 +827,8 @@ goto end
REM ===========================================================================
:install
echo Installing WeKan dependencies for Windows.
rem Full MIME detection uses the libmagic WASM engine/database installed by npm.
rem No external file.exe installation is needed.
echo This uses Chocolatey to install git, curl, Node.js LTS and MongoDB tools,
echo then installs Meteor via npm.
where choco >nul 2>&1
@@ -980,6 +999,8 @@ call :detect_ip
echo Your IP address is !IPADDRESS!
call :set_dev_env
set "MONGO_URL=mongodb://127.0.0.1:27019/wekan"
set "WEKAN_SOURCE_MONGO_PORT=27019"
set "WEKAN_SOURCE_MONGO_DATABASE=wekan"
set "ROOT_URL=http://!IPADDRESS!:3000"
call :runlog --port 3000
goto end
@@ -1488,10 +1509,9 @@ exit /b 0
REM Common dev-server environment (caller sets ROOT_URL afterwards).
set "DEFAULT_METEOR_REACTIVITY_ORDER=changeStreams,oplog,polling"
set "DDP_TRANSPORT=sockjs"
set "DEBUG=true"
if not defined DEBUG set "DEBUG=false"
set "WRITABLE_PATH=.."
set "WITH_API=true"
set "RICHER_CARD_COMMENT_EDITOR=false"
exit /b 0
:logdir
@@ -1544,9 +1564,14 @@ call :logdir dev-server
if errorlevel 1 exit /b 1
set "WEKAN_SERVER_LOG=%LOG_DIRECTORY%\dev.txt"
echo Log: %WEKAN_SERVER_LOG%
if "%DEV_NOBUILD%"=="1" goto runlog_nobuild
call meteor run %* 2>&1 | powershell -NoProfile -Command "$input | Tee-Object -FilePath $env:WEKAN_SERVER_LOG"
exit /b 0
:runlog_nobuild
node "%REPO%\scripts\dev-source\start.cjs" %* 2>&1 | powershell -NoProfile -Command "$input | Tee-Object -FilePath $env:WEKAN_SERVER_LOG"
exit /b 0
:kill_meteor_on_port
REM %1 = app port. Frees BOTH the app port and the rspack dev-server port (8080),
REM because "meteor run" starts an rspack dev server on 8080 (rspack.config.js:
@@ -1827,11 +1852,10 @@ set "ROOT_URL=http://localhost:3000"
set "PORT=3000"
set "WRITABLE_PATH=%WRITABLE_ABS%"
set "WITH_API=true"
set "RICHER_CARD_COMMENT_EDITOR=false"
set "DEFAULT_METEOR_REACTIVITY_ORDER=changeStreams,oplog,polling"
echo ==^> Starting the WeKan test server on http://localhost:3000 from .build\bundle ^(precompiled - no rebuild^).
start "WekanTestServer" /MIN /D "%REPO%" cmd /c "(echo ===== WeKan test server [bundle node :3000 db :3001/meteor] started: %DATE% %TIME% =====) 1>%RUN_LOGDIR%\wekan-test-server.log 2>&1 & "%NODE_BIN%" "%REPO%\.build\bundle\main.js" 1>>%RUN_LOGDIR%\wekan-test-server.log 2>&1"
set "MONGO_URL=" & set "ROOT_URL=" & set "PORT=" & set "WRITABLE_PATH=" & set "WITH_API=" & set "RICHER_CARD_COMMENT_EDITOR=" & set "DEFAULT_METEOR_REACTIVITY_ORDER="
set "MONGO_URL=" & set "ROOT_URL=" & set "PORT=" & set "WRITABLE_PATH=" & set "WITH_API=" & set "DEFAULT_METEOR_REACTIVITY_ORDER="
REM 6) Wait for :3000 to answer (bundle boots in seconds; curl-timeout poll).
call :wait_server_ready
@@ -1952,6 +1976,13 @@ bash -c "cd .tools/FerretDB && ./build.sh test-all"
goto end
REM ===========================================================================
:test_everything_source
set "WEKAN_TEST_SERVER_MODE=source"
set "WEKAN_TEST_BAIL=1"
set "WEKAN_PLAYWRIGHT_PROBE=0"
set "WEKAN_EVERYTHING_MODE=sequential"
goto test_everything
:test_everything_two
set "WEKAN_EVERYTHING_MODE=two-worker"
goto test_everything
+142 -45
View File
@@ -636,9 +636,25 @@ function run_playwright_docker(){
pwver="$(node -e "console.log(require('$pwdir/node_modules/@playwright/test/package.json').version)" 2>/dev/null)"
[ -z "$pwver" ] && pwver="1.60.0"
local image="mcr.microsoft.com/playwright:v${pwver}-noble"
local docker_base_url="${WEKAN_BASE_URL:-http://127.0.0.1:3000}"
local docker_mongo_url="${WEKAN_MONGO_URL:-mongodb://127.0.0.1:3001/meteor}"
local docker_host_proxy_port=""
# Docker Desktop on macOS keeps the host outside the container's loopback.
if [ "$(uname -s)" = Darwin ]; then
# Meteor's dynamic imports use ROOT_URL (localhost in the test server).
# Keep the browser on that same origin and bridge its loopback to the host.
# Browsing host.docker.internal while ROOT_URL is localhost makes Firefox
# fetch dynamic modules from the container's unreachable localhost.
if [[ "$docker_base_url" =~ ^http://(127\.0\.0\.1|localhost):([0-9]+)$ ]]; then
docker_host_proxy_port="${BASH_REMATCH[2]}"
docker_base_url="http://localhost:$docker_host_proxy_port"
fi
docker_mongo_url="${docker_mongo_url//127.0.0.1/host.docker.internal}"
docker_mongo_url="${docker_mongo_url//localhost/host.docker.internal}"
fi
mkdir -p "$filesroot"
echo "Running Playwright $browser in Docker ($image)."
echo "Expecting WeKan at ${WEKAN_BASE_URL:-http://127.0.0.1:3000} (container uses --network host)."
echo "Expecting WeKan at $docker_base_url."
# Mount the whole repo so specs that reach the repo-root node_modules
# (e.g. @wekanteam/exceljs) and .tools resolve; run from tests/playwright.
# Run as the host user (--user) with a writable HOME so the container does
@@ -650,19 +666,38 @@ function run_playwright_docker(){
--user "$(id -u):$(id -g)" \
-e HOME=/repo/.tools/tmp \
-e TMPDIR=/repo/.tools/tmp \
-e WEKAN_BASE_URL="${WEKAN_BASE_URL:-http://127.0.0.1:3000}" \
-e WEKAN_MONGO_URL="${WEKAN_MONGO_URL:-mongodb://127.0.0.1:3001/meteor}" \
-e WEKAN_BASE_URL="$docker_base_url" \
-e WEKAN_DOCKER_HOST_PROXY_PORT="$docker_host_proxy_port" \
-e WEKAN_MONGO_URL="$docker_mongo_url" \
-e WEKAN_PLAYWRIGHT_ALL=1 \
-e WEKAN_PLAYWRIGHT_PROJECT="$browser" \
-e WEKAN_PLAYWRIGHT_WORKERS="${WEKAN_PLAYWRIGHT_WORKERS:-1}" \
-e WEKAN_PLAYWRIGHT_PROBE=0 \
-e WEKAN_TEST_BAIL="${WEKAN_TEST_BAIL:-0}" \
-e WEKAN_TEST_SERIAL="${WEKAN_TEST_SERIAL:-0}" \
-e WEKAN_TEST_SERVER_MODE="${WEKAN_TEST_SERVER_MODE:-bundle}" \
-e WEKAN_TEST_SMTP_PORT="${WEKAN_TEST_SMTP_PORT:-}" \
-e PLAYWRIGHT_HTML_OPEN=never \
-e WEKAN_FILES_PATH=/wekan-files \
-e PLAYWRIGHT_JSON_OUTPUT_NAME="${PLAYWRIGHT_JSON_OUTPUT_NAME:-}" \
-v "$filesroot":/wekan-files \
-v "$reporoot":/repo -w /repo/tests/playwright \
"$image" \
sh -c 'export PATH=/repo/tests/playwright/node_modules/.bin:$PATH; exec npx playwright test --project="$0" "$@"' "$browser" "$@"
sh -c '
export PATH=/repo/tests/playwright/node_modules/.bin:$PATH
if [ -n "$WEKAN_DOCKER_HOST_PROXY_PORT" ]; then
node /repo/tests/playwright/helpers/docker-host-proxy.cjs &
proxy_pid=$!
trap '\''kill "$proxy_pid" 2>/dev/null || true; wait "$proxy_pid" 2>/dev/null || true'\'' EXIT
ready=0
for i in 1 2 3 4 5 6 7 8 9 10; do
if curl -fsS --max-time 3 -o /dev/null "$WEKAN_BASE_URL/sign-in"; then ready=1; break; fi
sleep 1
done
[ "$ready" -eq 1 ] || { echo "Local WeKan proxy did not become ready" >&2; exit 1; }
fi
npx playwright test --project="$0" "$@"
' "$browser" "$@"
}
# Run the older Puppeteer-based Node E2E regression suite in the same browser
@@ -1016,6 +1051,8 @@ function run_all_tests(){
*) echo "ERROR: unknown EVERYTHING mode: $REQUESTED_MODE" >&2; return 2 ;;
esac
export WEKAN_PLAYWRIGHT_WORKERS="$PLAYWRIGHT_WORKERS"
export WEKAN_TEST_SERIAL=0
[ "$REQUESTED_MODE" = sequential ] && export WEKAN_TEST_SERIAL=1
local modeword
[ "$REQUESTED_MODE" = parallel ] && modeword="at once (concurrently)" || modeword="one stage at a time (${PLAYWRIGHT_WORKERS} Playwright worker(s))"
# The large heap at the top of this file is for compiling WeKan. Do not hand
@@ -1055,22 +1092,29 @@ function run_all_tests(){
# fails on code that is no longer in the working tree - the one thing a test
# run must never do. This used to build only when .build/bundle was missing,
# which is exactly the case where the bundle is present but old.
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."
return 1
if [ "${WEKAN_TEST_SERVER_MODE:-bundle}" != source ]; then
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."
return 1
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)."
fi
if [ "${WEKAN_TEST_SERVER_MODE:-bundle}" = source ]; then
echo " :3000 - current source loaded by Node; Meteor's bundled development MongoDB on :3001."
echo " Mocha runs first in the source process, then a fresh source process serves E2E and browsers."
else
echo "Two WeKan servers are involved (they do NOT run tests in parallel unless you chose parallel):"
echo " :3000 - the PRECOMPILED .build/bundle run as a plain Node server (Meteor's mongod on :3001)"
echo " - serves Node E2E + Playwright browser tests. Built fresh above, so the tests run against the current source."
echo " :3100 - Mocha via 'meteor test' (its own .meteor/local-test build; the in-process server-side tests"
echo " CANNOT run from a production bundle, so this one build is unavoidable)."
fi
echo " Import regression is a plain Node script (no server, no MongoDB)."
SUMMARY=()
record() { SUMMARY+=("$1|$2|${3:-}"); }
@@ -1239,6 +1283,7 @@ function run_all_tests(){
[ "$jrc" = "0" ] && jst="PASS" || jst="FAIL"
jok=$(count_pass "$k" "$jlog"); jbad=$(count_fail "$k" "$jlog")
printf ' [%-4s] %-22s tests:%-4s fail:%s\n' "$jst" "$(label_of "$k")" "$jok" "$jbad"
if [ "${WEKAN_TEST_BAIL:-0}" = 1 ] && [ "$jrc" -ne 0 ]; then return "$jrc"; fi
fi
}
@@ -1278,6 +1323,33 @@ function run_all_tests(){
echo " Port 3000 is now free."
fi
if [ "${WEKAN_TEST_SERVER_MODE:-bundle}" = source ]; then
export WEKAN_PLAYWRIGHT_PROBE=0
export WEKAN_TEST_SMTP_PORT="${WEKAN_TEST_SMTP_PORT:-2525}"
export MAIL_URL="smtp://127.0.0.1:$WEKAN_TEST_SMTP_PORT"
export EMAIL_NOTIFICATION_TIMEOUT=100
local WRITABLE_ABS="$WEKAN_DIR/.tools/test-writable"
mkdir -p "$WRITABLE_ABS/files"
export WEKAN_FILES_PATH_HOST="$WRITABLE_ABS/files"
export WEKAN_FILES_PATH="$WRITABLE_ABS/files"
export WEKAN_MONGO_URL="mongodb://127.0.0.1:3001/meteor"
local NODE_BIN="$(command -v node)"
local TAIL_PID=""
echo "==> Running Meteor server tests in the source-loaded Node process on :3000."
WEKAN_SOURCE_WATCH=0 ROOT_URL=http://localhost:3000 WRITABLE_PATH="$WRITABLE_ABS" WITH_API=true \
NODE_OPTIONS="$TEST_NODE_OPTIONS" "$NODE_BIN" scripts/dev-source/start.cjs --port 3000 --server-tests \
2>&1 | tee "$RUN_LOGDIR/wekan-alltests-mocha.log"
local source_mocha_rc=${PIPESTATUS[0]}
if [ "$source_mocha_rc" -ne 0 ]; then return "$source_mocha_rc"; fi
echo 0 > "$STATDIR/mocha"
echo "==> Starting source-loaded WeKan :3000 and Meteor's development MongoDB :3001."
WEKAN_SOURCE_WATCH=0 ROOT_URL=http://localhost:3000 WRITABLE_PATH="$WRITABLE_ABS" WITH_API=true \
NODE_OPTIONS="$TEST_NODE_OPTIONS" "$NODE_BIN" scripts/dev-source/start.cjs --port 3000 \
> "$RUN_LOGDIR/wekan-test-server.log" 2>&1 &
TEST_SERVER_PID=$!
tail -n 0 -f "$RUN_LOGDIR/wekan-test-server.log" &
TAIL_PID=$!
else
# Start the :3000 test server from the PRECOMPILED .build/bundle (NOT `meteor run`)
# so Node E2E + Playwright reuse the WeKan you already built with
# `meteor build .build --directory` — no recompile. The bundle is a plain Node
@@ -1427,11 +1499,13 @@ function run_all_tests(){
# different one, so every test that needs seeded data fails.
{ echo "===== WeKan test server [bundle node :3000 db :$TEST_DB_PORT/meteor] - started $(date '+%Y-%m-%d %H:%M:%S %Z') ====="; echo; \
MONGO_URL="$TEST_MONGO_URL" ROOT_URL="http://localhost:3000" PORT=3000 \
WRITABLE_PATH="$WRITABLE_ABS" WITH_API=true RICHER_CARD_COMMENT_EDITOR=false \
WRITABLE_PATH="$WRITABLE_ABS" WITH_API=true \
DEFAULT_METEOR_REACTIVITY_ORDER="changeStreams,oplog,polling" \
NODE_OPTIONS="$TEST_NODE_OPTIONS" exec "$NODE_BIN" "$BUNDLE_DIR/main.js"; } >> "$RUN_LOGDIR/wekan-test-server.log" 2>&1 &
TEST_SERVER_PID=$!
fi
SERVER_READY=0
server_wait_start=$(date +%s)
server_wait_max=300
@@ -1446,16 +1520,16 @@ function run_all_tests(){
wait "$TAIL_PID" 2>/dev/null || true
echo " -------------------------------------------------------------------"
if [ "$SERVER_READY" -eq 1 ]; then
echo "==> WeKan test server ready on http://localhost:3000 (precompiled bundle, no rebuild)."
echo "==> WeKan test server ready on http://localhost:3000 (${WEKAN_TEST_SERVER_MODE:-bundle} mode)."
fi
# Mocha and the import regression do not need the :3000 server; launch them
# now (after the server build is past, so they no longer compete with it),
# then the E2E and browser jobs below.
echo "==> Launching Mocha (separate .meteor/local-test build, port 3100), the node unit suites and the import regression, $modeword."
launch_job mocha
launch_job unit
launch_job import
echo "==> Running registered server, node and import suites, $modeword."
if [ "${WEKAN_TEST_SERVER_MODE:-bundle}" != source ]; then launch_job mocha || return $?; fi
launch_job unit || return $?
launch_job import || return $?
if [ "$SERVER_READY" -ne 1 ]; then
echo "FAIL: server did not become ready on http://localhost:3000 (see $RUN_LOGDIR/wekan-test-server.log)"
@@ -1468,10 +1542,10 @@ function run_all_tests(){
else
record PASS "Server startup"
# Server is up: add the server-facing jobs to the running set.
launch_job e2e
launch_job chromium
launch_job firefox
launch_job webkit
launch_job e2e || return $?
launch_job chromium || return $?
launch_job firefox || return $?
launch_job webkit || return $?
ALLKEYS="mocha unit import e2e chromium firefox webkit"
fi
@@ -1634,6 +1708,12 @@ function run_everything(){
local FERRET_GO_MEMORY_MB=$(( _mem_total_mb / 8 ))
[ "$FERRET_GO_MEMORY_MB" -gt 4096 ] && FERRET_GO_MEMORY_MB=4096
local FERRET_GOFLAGS="${WEKAN_FERRETDB_GOFLAGS:--p=$FERRET_GO_JOBS}"
if [ "$EVERYTHING_MODE" = sequential ]; then
FERRET_GOFLAGS="$FERRET_GOFLAGS -p=1 -parallel=1"
fi
if [ "${WEKAN_TEST_BAIL:-0}" = 1 ]; then
FERRET_GOFLAGS="$FERRET_GOFLAGS -failfast"
fi
local FERRET_GOMEMLIMIT="${WEKAN_FERRETDB_GOMEMLIMIT:-${FERRET_GO_MEMORY_MB}MiB}"
RUN_TS="$(date '+%Y-%m-%d_%H-%M-%S')"
RUN_LOGDIR="$(log_directory "test-everything-$EVERYTHING_MODE")" || return $?
@@ -1644,7 +1724,7 @@ function run_everything(){
echo "=============================================================================="
echo "EVERYTHING mode: $EVERYTHING_MODE. Logs: $RUN_LOGDIR/"
echo " 1/4 Floating-promises guard (seconds: the rule, and unawaited auth checks)"
echo " 2/4 WeKan's own tests (builds the bundle, starts a server; mocha, the"
echo " 2/4 WeKan's own tests (${WEKAN_TEST_SERVER_MODE:-bundle} server; mocha, the"
echo " node suites, import, node E2E, three browsers)"
echo " 3/4 Database conformance (builds FerretDB, every database this CPU runs)"
echo " 4/4 FerretDB's own tests (unit, vet, integration)"
@@ -1662,10 +1742,12 @@ function run_everything(){
# an hour of browser tests.
floating_promises_checks 2>&1 | tee "$RUN_LOGDIR/wekan-floating-promises.log"
guard_rc=${PIPESTATUS[0]}
if [ "${WEKAN_TEST_BAIL:-0}" = 1 ] && [ "$guard_rc" -ne 0 ]; then return "$guard_rc"; fi
echo
echo "### 2/4 WeKan tests ###########################################################"
run_all_tests "$EVERYTHING_MODE" || wekan_rc=$?
if [ "${WEKAN_TEST_BAIL:-0}" = 1 ] && [ "$wekan_rc" -ne 0 ]; then return "$wekan_rc"; fi
echo
echo "### 3/4 Database conformance ##################################################"
@@ -1675,6 +1757,7 @@ function run_everything(){
else
echo "ERROR: releases/db-conformance.sh is missing."; conf_rc=1
fi
if [ "${WEKAN_TEST_BAIL:-0}" = 1 ] && [ "$conf_rc" -ne 0 ]; then return "$conf_rc"; fi
echo
echo "### 4/4 FerretDB tests ########################################################"
@@ -1684,6 +1767,7 @@ function run_everything(){
ferret_dir="$(ensure_tool_repo FerretDB)" || ferret_dir=""
if [ -n "$ferret_dir" ] && [ -x "$ferret_dir/build.sh" ]; then
( cd "$ferret_dir" && WEKAN_LOGDIR="$RUN_LOGDIR" \
FERRETDB_TEST_BAIL="${WEKAN_TEST_BAIL:-0}" \
GOFLAGS="$FERRET_GOFLAGS" GOMEMLIMIT="$FERRET_GOMEMLIMIT" \
./build.sh test-all ) || ferret_rc=$?
else
@@ -2436,7 +2520,8 @@ choose() {
# details stay in CHANGELOG.md. Notes include only In short, Security,
# Translations language list, thanks and the changelog link. Binary provenance remains
# a build artifact and must not be appended by any release entry point.
RELEASE_SCRIPTS=( "Release|Release ALL platforms: push CHANGELOG, trigger release-all.yml|releases/release-all.sh|||"
RELEASE_SCRIPTS=( "Release|Release All: audit, commit, push and build with Actions|releases/release-all.sh|||"
"Release|Release All Missing: audit, commit, push and complete release|releases/release-all-missing.sh|||"
"Release|Release (older local flow), for one version|releases/release.sh|WeKan version, e.g. 10.50||"
"Release|Show the version numbers this checkout would release|releases/version.sh|||"
"Release|Show the CHANGELOG of the release being prepared|releases/changelog.sh|||"
@@ -2710,7 +2795,7 @@ esac
opt=""
while [ -z "$opt" ]; do
echo; echo "==================== WeKan ===================="
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)" \
"Node E2E regressions|Test Node E2E regressions (tests/e2e/list-regressions.js, needs running server)" \
@@ -2762,47 +2848,57 @@ while [ -z "$opt" ]; do
done
done
# Both menus share their URL/port prompts and environment.
DEV_COMMAND=(meteor run)
if [ "$cat" = "Dev server nobuild" ]; then
DEV_COMMAND=(node "$WEKAN_DIR/scripts/dev-source/start.cjs")
fi
for _once in 1; do
case "$opt" in
"Run EVERYTHING against Dev server nobuild on localhost:3000, one test at a time, all browsers")
WEKAN_TEST_SERVER_MODE=source WEKAN_TEST_BAIL=1 WEKAN_PLAYWRIGHT_PROBE=0 run_everything sequential
;;
"Install WeKan dependencies")
if [[ "$OSTYPE" == "linux-gnu" ]]; then
echo "Linux";
case "$(_et_linux_family)" in
alpine)
sudo apk add --no-cache bash build-base git curl wget p7zip zip unzip npm
sudo apk add --no-cache bash build-base git curl wget p7zip zip unzip file npm
;;
arch)
sudo pacman -Sy --needed --noconfirm base-devel git curl wget p7zip zip unzip npm
sudo pacman -Sy --needed --noconfirm base-devel git curl wget p7zip zip unzip file npm
;;
fedora)
sudo dnf group install -y development-tools
sudo dnf install -y gcc gcc-c++ make git curl wget 7zip zip unzip npm
sudo dnf install -y gcc gcc-c++ make git curl wget 7zip zip unzip file npm
;;
rhel)
pm=dnf; command -v dnf >/dev/null 2>&1 || pm=yum
sudo "$pm" groupinstall -y "Development Tools"
sudo "$pm" install -y gcc gcc-c++ make git curl wget p7zip zip unzip npm
sudo "$pm" install -y gcc gcc-c++ make git curl wget p7zip zip unzip file npm
;;
debian)
sudo apt-get update
sudo apt-get install -y build-essential gcc g++ make git curl wget p7zip-full zip unzip unp npm
sudo apt-get install -y libatomic1 build-essential gcc g++ make git curl wget p7zip-full zip unzip unp file npm
;;
*) echo "Unsupported Linux distribution; install a C/C++ toolchain, git, curl, wget, 7zip, zip, unzip and npm." >&2; exit 1 ;;
*) echo "Unsupported Linux distribution; install a C/C++ toolchain, git, curl, wget, 7zip, zip, unzip, file and npm." >&2; exit 1 ;;
esac
#sudo chown -R $(id -u):$(id -g) $HOME/.npm
sudo npm -g install n
sudo n "$_wekan_node_version"
sudo npm install -g npm@12.0.2
sudo npm -g install meteor --unsafe-perm
#sudo chown -R $(id -u):$(id -g) $HOME/.npm $HOME/.meteor
elif [[ "$OSTYPE" == "darwin"* ]]; then
echo "macOS"
# Node comes from nvm, not from Homebrew's node@24 keg.
# Node comes from nvm, not from Homebrew's node@26 keg.
#
# `brew install node@24` gives whatever 24.x Homebrew currently has
# `brew install node@26` gives whatever 26.x Homebrew currently has
# bottled - which trails nodejs.org - and, being keg-only, needs
# PATH, LDFLAGS and CPPFLAGS exported by hand. `nvm install 24`
# resolves to the NEWEST 24.x on nodejs.org every time it runs and
# PATH, LDFLAGS and CPPFLAGS exported by hand. `nvm install 26`
# resolves to the NEWEST 26.x on nodejs.org every time it runs and
# puts that on PATH itself, so this does not go stale the way a
# pinned version does. npm comes with the Node it installs, so
# there is no `brew install npm` either.
@@ -2828,10 +2924,11 @@ for _once in 1; do
# switch versions while it is set. The old Homebrew path set it, so
# clear it before installing anything.
npm config delete prefix >/dev/null 2>&1 || true
# The newest 24.x, and the default for every new shell.
nvm install 24
nvm alias default 24
nvm use 24
# The newest 26.x, and the default for every new shell.
nvm install 26
nvm alias default 26
nvm use 26
npm install -g npm@12.0.2
echo "Node $(node --version), npm $(npm --version)"
# Let new shells find nvm too. Its installer appends these itself,
# but only to the rc file it detects and only when IT did the
@@ -2920,7 +3017,7 @@ for _once in 1; do
#---------------------------------------------------------------------
# Logging of terminal output to console and to .tools/log/wekan-log.log at end of this line: 2>&1 | tee "$(one_log dev-server)"
#WARN_WHEN_USING_OLD_API=true NODE_OPTIONS="--trace-warnings"
DEFAULT_METEOR_REACTIVITY_ORDER="changeStreams,oplog,polling" DDP_TRANSPORT=sockjs DEBUG=true WRITABLE_PATH=.. WITH_API=true RICHER_CARD_COMMENT_EDITOR=false ROOT_URL=http://localhost:3000 meteor run --port 3000 2>&1 | tee "$(one_log dev-server)"
DEFAULT_METEOR_REACTIVITY_ORDER="changeStreams,oplog,polling" DDP_TRANSPORT=sockjs DEBUG="${DEBUG:-false}" WRITABLE_PATH=.. WITH_API=true ROOT_URL=http://localhost:3000 "${DEV_COMMAND[@]}" --port 3000 2>&1 | tee "$(one_log dev-server)"
#---------------------------------------------------------------------
break
;;
@@ -2932,7 +3029,7 @@ for _once in 1; do
#Not in use, could increase RAM usage: NODE_OPTIONS="--max_old_space_size=4096"
#---------------------------------------------------------------------
# Logging of terminal output to console and to .tools/log/wekan-log.log at end of this line: 2>&1 | tee "$(one_log dev-server)"
DEFAULT_METEOR_REACTIVITY_ORDER="changeStreams,oplog,polling" DDP_TRANSPORT=sockjs DEBUG=true WARN_WHEN_USING_OLD_API=true NODE_OPTIONS="--trace-warnings --max-old-space-size=$_heap_mb" WRITABLE_PATH=.. WITH_API=true RICHER_CARD_COMMENT_EDITOR=false ROOT_URL=http://localhost:3000 meteor run --port 3000 2>&1 | tee "$(one_log dev-server)"
DEFAULT_METEOR_REACTIVITY_ORDER="changeStreams,oplog,polling" DDP_TRANSPORT=sockjs DEBUG="${DEBUG:-false}" WARN_WHEN_USING_OLD_API=true NODE_OPTIONS="--trace-warnings --max-old-space-size=$_heap_mb" WRITABLE_PATH=.. WITH_API=true ROOT_URL=http://localhost:3000 "${DEV_COMMAND[@]}" --port 3000 2>&1 | tee "$(one_log dev-server)"
#---------------------------------------------------------------------
break
;;
@@ -2944,7 +3041,7 @@ for _once in 1; do
#---------------------------------------------------------------------
#Logging of terminal output to console and to .tools/log/wekan-log.log at end of this line: 2>&1 | tee "$(one_log dev-server)"
#WARN_WHEN_USING_OLD_API=true NODE_OPTIONS="--trace-warnings"
DEFAULT_METEOR_REACTIVITY_ORDER="changeStreams,oplog,polling" DDP_TRANSPORT=sockjs DEBUG=true WRITABLE_PATH=.. WITH_API=true RICHER_CARD_COMMENT_EDITOR=false ROOT_URL=http://localhost:3000 meteor run --port 3000 --extra-packages bundle-visualizer --production 2>&1 | tee "$(one_log dev-server)"
DEFAULT_METEOR_REACTIVITY_ORDER="changeStreams,oplog,polling" DDP_TRANSPORT=sockjs DEBUG="${DEBUG:-false}" WRITABLE_PATH=.. WITH_API=true ROOT_URL=http://localhost:3000 "${DEV_COMMAND[@]}" --port 3000 --extra-packages bundle-visualizer --production 2>&1 | tee "$(one_log dev-server)"
#---------------------------------------------------------------------
break
;;
@@ -2963,7 +3060,7 @@ for _once in 1; do
#---------------------------------------------------------------------
#Logging of terminal output to console and to .tools/log/wekan-log.log at end of this line: 2>&1 | tee "$(one_log dev-server)"
#WARN_WHEN_USING_OLD_API=true NODE_OPTIONS="--trace-warnings"
DEFAULT_METEOR_REACTIVITY_ORDER="changeStreams,oplog,polling" DDP_TRANSPORT=sockjs DEBUG=true WRITABLE_PATH=.. WITH_API=true RICHER_CARD_COMMENT_EDITOR=false ROOT_URL=http://$IPADDRESS:3000 meteor run --port 3000 2>&1 | tee "$(one_log dev-server)"
DEFAULT_METEOR_REACTIVITY_ORDER="changeStreams,oplog,polling" DDP_TRANSPORT=sockjs DEBUG="${DEBUG:-false}" WRITABLE_PATH=.. WITH_API=true ROOT_URL=http://$IPADDRESS:3000 "${DEV_COMMAND[@]}" --port 3000 2>&1 | tee "$(one_log dev-server)"
#---------------------------------------------------------------------
break
;;
@@ -2982,7 +3079,7 @@ for _once in 1; do
#---------------------------------------------------------------------
#Logging of terminal output to console and to .tools/log/wekan-log.log at end of this line: 2>&1 | tee "$(one_log dev-server)"
#WARN_WHEN_USING_OLD_API=true NODE_OPTIONS="--trace-warnings"
DEFAULT_METEOR_REACTIVITY_ORDER="changeStreams,oplog,polling" DDP_TRANSPORT=sockjs DEBUG=true MONGO_URL=mongodb://127.0.0.1:27019/wekan WRITABLE_PATH=.. WITH_API=true RICHER_CARD_COMMENT_EDITOR=false ROOT_URL=http://$IPADDRESS:3000 meteor run --port 3000 2>&1 | tee "$(one_log dev-server)"
DEFAULT_METEOR_REACTIVITY_ORDER="changeStreams,oplog,polling" DDP_TRANSPORT=sockjs DEBUG="${DEBUG:-false}" WEKAN_SOURCE_MONGO_PORT=27019 WEKAN_SOURCE_MONGO_DATABASE=wekan MONGO_URL=mongodb://127.0.0.1:27019/wekan WRITABLE_PATH=.. WITH_API=true ROOT_URL=http://$IPADDRESS:3000 "${DEV_COMMAND[@]}" --port 3000 2>&1 | tee "$(one_log dev-server)"
#---------------------------------------------------------------------
break
;;
@@ -2996,7 +3093,7 @@ for _once in 1; do
# ROOT_URL differ. Logging of terminal output to console and to
# .tools/log/wekan-log.log at the end of the line: 2>&1 | tee "$(one_log dev-server)"
#---------------------------------------------------------------------
DEFAULT_METEOR_REACTIVITY_ORDER="changeStreams,oplog,polling" DDP_TRANSPORT=sockjs DEBUG=true WRITABLE_PATH=.. WITH_API=true RICHER_CARD_COMMENT_EDITOR=false ROOT_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=true ROOT_URL="$DEV_ROOT_URL" "${DEV_COMMAND[@]}" --port "$DEV_PORT" 2>&1 | tee "$(one_log dev-server)"
#---------------------------------------------------------------------
break
;;
@@ -3015,7 +3112,7 @@ for _once in 1; do
#---------------------------------------------------------------------
#Logging of terminal output to console and to .tools/log/wekan-log.log at end of this line: 2>&1 | tee "$(one_log dev-server)"
#WARN_WHEN_USING_OLD_API=true NODE_OPTIONS="--trace-warnings"
DEFAULT_METEOR_REACTIVITY_ORDER="changeStreams,oplog,polling" DDP_TRANSPORT=sockjs DEBUG=true WRITABLE_PATH=.. WITH_API=true RICHER_CARD_COMMENT_EDITOR=false ROOT_URL=http://$IPADDRESS:$PORT meteor 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=true ROOT_URL=http://$IPADDRESS:$PORT "${DEV_COMMAND[@]}" --port $PORT 2>&1 | tee "$(one_log dev-server)"
#---------------------------------------------------------------------
break
;;
@@ -68,3 +68,8 @@
font-size: 0.8em;
color: #999;
}
/* The label chip uses the same card-label palette/contrast and radius as cards.
Keep rich label content compact inside activity prose. */
.activity .activity-label .viewer { display: inline; min-height: 0; }
.activity .activity-label p { display: inline; margin: 0; }
+2 -2
View File
@@ -148,10 +148,10 @@ template(name="activity")
//- label activity ------------------------------------------------------
if($eq activity.activityType 'addedLabel')
| {{{activityMessage 'activity-added-label' (activityValue lastLabel) cardLink}}}.
| {{{labelActivityMessage 'activity-added-label' cardLink}}}.
if($eq activity.activityType 'removedLabel')
| {{{activityMessage 'activity-removed-label' (activityValue lastLabel) cardLink}}}.
| {{{labelActivityMessage 'activity-removed-label' cardLink}}}.
//- list activity -------------------------------------------------------
if($neq mode 'card')
+22 -1
View File
@@ -8,6 +8,7 @@ import { sanitizeHTML } from '/imports/lib/secureDOMPurify';
import { TAPi18n } from '/imports/i18n';
import { Utils } from '/client/lib/utils';
import { getSidebarInstance } from '/client/features/sidebar/service';
import { isHexColor, contrastText } from '/models/lib/contrastColor';
import { activityCardLinkData } from '/models/lib/activityCardLink';
// #6480/#6481: 500 was far more than the sidebar/card activity feed ever shows
@@ -235,7 +236,8 @@ Template.activity.helpers({
if (!lastLabelId) return null;
const lastLabel = ReactiveCache.getBoard(
this.activity.boardId,
).getLabelById(lastLabelId);
)?.getLabelById(lastLabelId);
if (!lastLabel) return null;
if (lastLabel && (lastLabel.name === undefined || lastLabel.name === '')) {
return lastLabel.color;
} else if (lastLabel.name !== undefined && lastLabel.name !== '') {
@@ -329,6 +331,25 @@ Template.activity.helpers({
activityValue(value) {
return titleViewerHtml(value == null ? '' : String(value));
},
labelActivityMessage(key, cardLink) {
const label = ReactiveCache.getBoard(this.activity.boardId)?.getLabelById(this.activity.labelId);
const setting = ReactiveCache.getCurrentSetting();
const options = { stripLinks: !!(setting && setting.renderLinksAsPlainText) };
const marker = 'WEKAN_ACTIVITY_LABEL_BADGE';
const message = sanitizeHTML(TAPi18n.__(key, { sprintf: [marker, cardLink] }), options);
const color = String(label?.color || 'white');
const hex = isHexColor(color);
const attrs = {
class: 'card-label activity-label' + (!hex && /^[a-z]+$/.test(color) ? ` card-label-${color}` : ''),
...(hex ? { style: `background-color:${color};color:${contrastText(color)};` } : {}),
};
// Sanitize prose and viewer content first. Only the application-created
// badge wrapper retains trusted classes and validated color styles;
// the global sanitizer must keep forbidding user CSS/classes.
const content = sanitizeHTML(titleViewerHtml(label?.name || label?.color || ''), options);
const badge = Blaze.toHTML(HTML.SPAN(attrs, HTML.Raw(content)));
return message.split(marker).join(badge);
},
activityMessage(key, ...values) {
const setting = ReactiveCache.getCurrentSetting();
// Spacebars appends helper options; only rendered values belong in sprintf.
Loaded 100 of 1245 files, more files were not shown because too many files have changed in this diff. Show more