yasithdev opened a new pull request, #107:
URL: https://github.com/apache/airavata-portals/pull/107
## Summary
Executes the modernization umbrella spec at
`airavata-django-portal/docs/superpowers/specs/2026-04-21-portal-modernization-design.md`.
All 5 tracks landed as independent squashed merges on the long-lived
`modernization` branch; this PR lands them together onto `main`.
- **Track D — Python hygiene** (`merge: 902b8e052e`). pytz → stdlib
zoneinfo; Wagtail 6.3 → 7.3.1 (scope-expanded); wagtailcodeblock
1.28 → 1.29; djangorestframework `<4` cap widened; F401 cleanups.
- **Track C — Monorepo tooling** (`merge: 98ecf2072b`). Shared `tooling/`
workspace (ESLint 9 flat + Prettier + Vite helper + strict tsconfig).
Yarn 1 → npm workspaces (umbrella deviation; see spec).
- **Track B — Library swaps** (`merge: b49a1cf20f`). moment → native
`Intl`; CodeMirror 5 → 6 via shared `<CodeEditor>`; bootstrap-4.0.0-beta
fossil deleted; lodash removed (inline debounce); vue-slider-component
beta pin rationale.
- **Track Pre-A — Test harness** (`merge: 509366959e`). Vitest (jsdom) +
Playwright (storageState-cached auth); 1 showcase Vitest test + 1
example Playwright journey; root `test`/`test:e2e` wired; 5
pre-existing broken tests fixed or retired.
- **Track A — Vue Composition + TypeScript + Pinia** (`merge: 98544ff6fd`).
179 `.vue` files → `<script setup lang=\"ts\">`; 86 API models + ~20
utility `.js` → `.ts`; Vuex deleted, 3 domain-driven Pinia stores;
Vue 2 residue eliminated; Track C-demoted ESLint rules re-elevated to
error; zero `@ts-expect-error`/`@ts-ignore`.
Also includes the pre-umbrella `feat/sdk-and-devenv` foundation work
(SSE SharedWorker, uvicorn/ASGI, Wagtail 7 compatibility, SQLite WAL,
multiple UI fixes) — `modernization` was branched off that feature
branch rather than `main`, so the combined diff rolls both in.
## Test plan
- [x] `npm run test --workspaces --if-present` — 33 tests pass (31 api +
2 workspace)
- [x] `npx playwright test --config=tooling/playwright.config.ts --list` —
2 tests listable
- [x] `npm run typecheck` — strict TS (allowJs: false) passes
- [x] `npm run build --workspaces --if-present` — all workspaces build;
manifest keys byte-identical for admin/auth/dataparsers/workspace
- [x] `npm run lint` — 0 errors, 1 warning (documented `vue/no-v-html`
exception for Wagtail CMS content)
- [x] `uv run ruff check .` — same pre-existing 110-error count (outside
umbrella scope)
- [x] `uv run ty check .` — same pre-existing 304 diagnostics
- [x] `uv run pytest -q` — 69 passed / 6 pre-existing Wagtail-7 IAM
failures (same as modernization baseline)
- [x] Umbrella grep audit — zero legacy idioms (destroyed/beforeDestroy/
\$set/\$off/mapGetters/mapMutations/mapActions/moment/codemirror5)
- [x] No Bootstrap 4 fossil / no vendored jQuery
- [x] `scripts/pin_audit.py` — every `<` pin has a rationale comment
- [x] Test count did not decay since Pre-A baseline
## Deviations from original umbrella spec
1. **Track D scope expanded.** The umbrella scoped setuptools<81 as "keep
or bump wagtailcodeblock". Investigation revealed the pin was
mis-rooted: wagtailcodeblock never actually needed pkg_resources, but
1.30 was incompatible with Wagtail 6. Expanded Track D to bump Wagtail
6.3 → 7.3.1 to unblock wagtailcodeblock 1.29 and drop setuptools<81
cleanly.
2. **Track C package manager.** Switched Yarn 1 → npm workspaces instead
of staying on Yarn 1. Rationale: npm ships with Node (no corepack
dependency), aligns with Node-ecosystem default. Umbrella spec section
"Package manager" amended with the deviation rationale in commit
`b47d9f2ea4`.
3. **Track C ESLint strictness.** Vue Style Guide + Vue 2 deprecation
rules were demoted to `warn` during Track C (fighting Track C's 800+
violations was throwaway given Track A's rewrite); re-elevated to
`error` at the end of Track A (milestone 7).
4. **Track Pre-A scope.** Dropped to "scaffolding-only MVP" — 1 example
Vitest test + 1 example Playwright journey instead of the original
25 + 12 targets. Track A authored real test coverage implicitly as it
rewrote 179 .vue files.
Full track specs + plans live under
`airavata-django-portal/docs/superpowers/{specs,plans}/`.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]