|
| 1 | +# DSpace 8.2 → 8.3 Upgrade — Progress Notes |
| 2 | + |
| 3 | +> Working branch: **`uoe/upgrade-to-83`** (push only here). |
| 4 | +> Backup tag of the pre-merge tip: **`backup/pre-8.3-merge-before`** (= `83efa3a01`). |
| 5 | +
|
| 6 | +This document tracks the in-flight upgrade of the DataShare Angular fork |
| 7 | +(formerly aligned to DSpace 8.2) to **DSpace 8.3**, while preserving the |
| 8 | +University of Edinburgh / DataShare customizations. |
| 9 | + |
| 10 | +--- |
| 11 | + |
| 12 | +## 1. Upgrade Progress (chronological) |
| 13 | + |
| 14 | +| Date (local) | Action | Result | |
| 15 | +|---|---|---| |
| 16 | +| 2026-04-22 13:35 | Initial analysis of `README-UPGRADE-PROMPT.md`, external `MIGRATION-ASSESSMENT.md`, `Vanilla-UoE-differencies-6.5.md`. | Customization inventory built (see §2). | |
| 17 | +| 2026-04-22 13:36 | Added remotes: `upstream` = `UoEMainLibrary/dspace-datashare-angular`, `dspace` = `DSpace/dspace-angular`; fetched all branches. | OK. | |
| 18 | +| 2026-04-22 13:36 | Tagged backup `backup/pre-8.3-merge-before` on previous HEAD `83efa3a01`. | OK. | |
| 19 | +| 2026-04-22 13:37 | Verified that `upstream/UoEMainLibrary-dspace-8_x` already contains the merge of upstream `dspace-angular@8.3` (commit `187289546`, `package.json` version = `8.3.0`). Step 1 of the merge strategy ("sync UoEMainLibrary-dspace-8_x with upstream 8.3") therefore reduces to using that ref directly. | OK. | |
| 20 | +| 2026-04-22 13:38 | `git merge upstream/UoEMainLibrary-dspace-8_x --no-ff` into `uoe/upgrade-to-83`. | 5 conflicts; resolved (see §4). | |
| 21 | +| 2026-04-22 13:39 | Resolution committed as merge commit `ecd239c26`. | OK. | |
| 22 | +| 2026-04-22 13:40 | `yarn install --frozen-lockfile` (Node v18.20.4, yarn 1.22.19). | OK (only pre-existing peer-dep warnings). | |
| 23 | +| 2026-04-22 13:42 | `yarn lint:nobuild`. | **0 errors**, 1048 pre-existing deprecation/warning lines. | |
| 24 | +| 2026-04-22 13:44 | `yarn build` (development configuration). | **Build succeeds** after one follow-up theme fix (see §4 / commit `bc8a9190c`). | |
| 25 | + |
| 26 | +--- |
| 27 | + |
| 28 | +## 2. Customizations Inventory (verified vs. sources) |
| 29 | + |
| 30 | +The combined picture from `MIGRATION-ASSESSMENT.md`, `Vanilla-UoE-differencies-6.5.md` |
| 31 | +and the actual codebase. Frontend-only items are highlighted here (this is the |
| 32 | +Angular repo). |
| 33 | + |
| 34 | +### 2.1 UI / Branding (KEEP) |
| 35 | +- Full custom theme `src/themes/datashare/` with 250+ component overrides. |
| 36 | +- Edinburgh assets (logos, favicons, CoreTrustSeal, banners). |
| 37 | +- Custom info pages: `about`, `accessibility-statement`, `copyright`, |
| 38 | + `end-user-agreement`, `feedback` (with form), `organised`, `privacy`. |
| 39 | +- Heavily customized `src/assets/i18n/en.json5` (DataShare keys block ≈170 keys). |
| 40 | +- File-section component shows ORIGINAL + CC-LICENSE bundles, 25 items / page. |
| 41 | +- Custom `deposit-button` component. |
| 42 | +- Embargo badge on bitstreams (recent UoE feature). |
| 43 | + |
| 44 | +### 2.2 Submission / forms (KEEP) |
| 45 | +- `DatashareSubmissionService` enforces `MAX_FILE_SIZE_GB = 20`. |
| 46 | +- `section-upload.component.ts` overrides for size + duplicate handling. |
| 47 | +- Custom progress-bar / step labels: |
| 48 | + `submission.sections.submit.progressbar.datashare.license`, |
| 49 | + `…spatial_and_temporal`, `…funder`. |
| 50 | +- `ng2-file-upload@9.0.0` (newer than upstream `5.0.0`) — kept for chunked uploads. |
| 51 | +- Custom CSS in `ds-dynamic-form-control-container.component.scss` forcing |
| 52 | + `.col-sm-4` to full width inside the dynamic form container. |
| 53 | +- Multi-value form-fields fix (`UoE/fix: prevent multi-value form fields from losing input and 'Add more'`). |
| 54 | + |
| 55 | +### 2.3 Search / Browse (KEEP) |
| 56 | +- `comcol-page-browse-by.component.ts` — community routing tweaks. |
| 57 | +- Item-search-result list element wraps publisher / date / authors block in `<div class="my-2">` (DATASHARE markers). |
| 58 | +- JACS subject-classification i18n + browse routes. |
| 59 | + |
| 60 | +### 2.4 Auth (KEEP – minimal) |
| 61 | +- DSpace 8 frontend has no special EASE/Shibboleth code; Shibboleth is handled |
| 62 | + natively. No bespoke auth code in this repo to migrate (the `DATASHARE_USERS` |
| 63 | + group injection lives in the **backend**). |
| 64 | + |
| 65 | +### 2.5 Accessibility / a11y (KEEP) |
| 66 | +- `aria-label` and `role` fixes in edit-metadata table, relation-group component, |
| 67 | + end-user-agreement links, etc. (multiple recent UoE commits, untouched by 8.3). |
| 68 | + |
| 69 | +### 2.6 CI / build (KEEP) |
| 70 | +- `.github/workflows/codescan.yml` — UoE-tweaked CodeQL workflow. |
| 71 | +- `Dockerfile` / `docker/dspace-ui.json` — DataShare-specific. |
| 72 | +- `cypress` e2e suites — UoE-extended. |
| 73 | + |
| 74 | +### 2.7 Known gap (NOT in this PR) |
| 75 | +- **File preview** for CSV / scientific data formats: documented as missing in |
| 76 | + `MIGRATION-ASSESSMENT.md`. Not part of this 8.2 → 8.3 upgrade — flagged in §6. |
| 77 | + |
| 78 | +--- |
| 79 | + |
| 80 | +## 3. Merge Strategy Followed |
| 81 | + |
| 82 | +Per the prompt: |
| 83 | + |
| 84 | +1. **Sync UoE 8.x with upstream 8.3**: `upstream/UoEMainLibrary-dspace-8_x` |
| 85 | + already contains the 8.3 merge (PR #8, commit `187289546`, |
| 86 | + `package.json` = `8.3.0`). No additional sync required. |
| 87 | +2. **Merge that 8.3-aware branch into our DataShare 8.2 line**: |
| 88 | + `git merge upstream/UoEMainLibrary-dspace-8_x --no-ff` on |
| 89 | + `uoe/upgrade-to-83`. Result: merge commit `ecd239c26`. |
| 90 | +3. **Conflict resolution policy**: 8.3 is the baseline; DataShare/UoE |
| 91 | + customizations are layered on top. See §4. |
| 92 | + |
| 93 | +No force-pushes. No work on any other branch. |
| 94 | + |
| 95 | +--- |
| 96 | + |
| 97 | +## 4. Conflicts and Resolutions |
| 98 | + |
| 99 | +| File | Symptom | Root cause | Fix | Risk | |
| 100 | +|---|---|---|---|---| |
| 101 | +| `package.json` | `morgan` minor bump (1.10.0 → 1.10.1) and `ng2-file-upload` reverted to `5.0.0` upstream while we use `9.0.0`. | Upstream stayed on the older `ng2-file-upload`; UoE/DataShare upgraded for chunking. | Take upstream `morgan@^1.10.1`; **keep** `ng2-file-upload@9.0.0` (DataShare requirement). | Low. | |
| 102 | +| `.github/workflows/codescan.yml` | Conflict marker on identical line (`uses: github/codeql-action/analyze@v3`). | Whitespace / EOL drift. | Removed the markers, single canonical line. | None. | |
| 103 | +| `src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.scss` | DataShare `.col-sm-4` full-width override vs. upstream-added `.invalid-feedback` / `.col-form-label` rules. | Both sides added new rules in the same file region. | **Both kept** — DataShare block first, upstream block after. | None. | |
| 104 | +| `src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.html` | DataShare wraps publisher/date/authors in `<div class="my-2">`; 8.3 changes the abstract block from `dso.firstMetadataValue('dc.description.abstract')` to `firstMetadataValue('dc.description.abstract') as abstract`. | Both sides edit adjacent lines. | Keep DataShare wrapper; adopt 8.3 abstract binding (`as abstract`). | None — markup unchanged for the user. | |
| 105 | +| `src/assets/i18n/en.json5` | Upstream adds 3 keys (`item.preview.organization.url`, `…address.addressLocality`, `…alternateName`); DataShare adds the entire ~170-key DataShare/JACS block. Closing brace conflict. | Both touch end of file. | Insert the 3 upstream keys near the top of the additions; keep the full DataShare block; single closing brace. | None. | |
| 106 | +| `src/themes/datashare/app/shared/dso-selector/modal-wrappers/create-community-parent-selector/create-community-parent-selector.component.ts` | Build error `NG8002: Can't bind to 'currentDSOId' since it isn't a known property of 'ds-authorized-community-selector'`. | DSpace 8.3 replaces `<ds-dso-selector>` with `<ds-authorized-community-selector>` in `create-community-parent-selector.component.html`; the DataShare theme override re-uses that template but still imported `DSOSelectorComponent`. | Imported `AuthorizedCommunitySelectorComponent` and updated the component's `imports` array (commit `bc8a9190c`). | None — mirrors what the upstream `custom/` theme already does. | |
| 107 | + |
| 108 | +--- |
| 109 | + |
| 110 | +## 5. Validation |
| 111 | + |
| 112 | +| Check | Command | Status | |
| 113 | +|---|---|---| |
| 114 | +| Dependency install | `yarn install --frozen-lockfile` | OK (warnings are pre-existing peer-dep mismatches, not caused by this PR). | |
| 115 | +| Lint | `yarn lint:nobuild` | **0 errors**, 1048 warnings (deprecation noise inherited from baseline). | |
| 116 | +| Build | `yarn build` (dev) | **OK** — `dist/browser/` produced (~103 s). | |
| 117 | +| Unit tests | `yarn test:headless` | **Not executed in this session** — see §6. | |
| 118 | +| E2E | `yarn cypress:run` | **Not executed** — needs running backend. | |
| 119 | + |
| 120 | +--- |
| 121 | + |
| 122 | +## 6. Open Risks / Next Steps |
| 123 | + |
| 124 | +1. **Unit + E2E suites**: not run in this session (long runtime, no live backend |
| 125 | + available). Recommended before merging the PR: |
| 126 | + - `yarn test:headless` for the Karma unit suite. |
| 127 | + - `yarn cypress:run` against an 8.3 backend for the customized flows |
| 128 | + (item file-section, embargo badge, multi-value form, deposit button, |
| 129 | + create-community modal). |
| 130 | +2. **Backend pairing**: the backend repo must also be brought to 8.3 (per the |
| 131 | + external assessment). Frontend changes here are independent and safe to push, |
| 132 | + but production deployment requires the matching backend. |
| 133 | +3. **Stale theme overrides** (informational): the `edit-collection-selector`, |
| 134 | + `edit-community-selector`, `create-collection-parent-selector` overrides in |
| 135 | + both `themes/custom/` and `themes/datashare/` still point at the generic |
| 136 | + `dso-selector-modal-wrapper.component.html` (using `<ds-dso-selector>`). |
| 137 | + They compile fine but no longer mirror upstream's specific per-modal |
| 138 | + templates. **Inherited from upstream UoE 8.3, not introduced here.** |
| 139 | + Worth a follow-up if visual parity with vanilla 8.3 is desired. |
| 140 | +4. **`ng2-file-upload@9.0.0`** declares `@angular/core ^20.0.0` as a peer |
| 141 | + dependency; we run on Angular 17. Currently a warning only — re-evaluate |
| 142 | + when DSpace ships an Angular upgrade. |
| 143 | +5. **File preview** (CSV / scientific formats) is still a documented functional |
| 144 | + gap inherited from DSpace 6 — out of scope for 8.2 → 8.3. |
| 145 | +6. **README**: the upstream `README.md` is left unchanged to stay diff-friendly |
| 146 | + against vanilla DSpace; this `UPGRADE-8.3.md` carries the upgrade log. |
| 147 | + |
| 148 | +--- |
| 149 | + |
| 150 | +## 7. Final Confirmation |
| 151 | + |
| 152 | +- All work is on branch **`uoe/upgrade-to-83`** only. |
| 153 | +- Backup tag **`backup/pre-8.3-merge-before`** points at the pre-upgrade tip. |
| 154 | +- Push: `git push origin uoe/upgrade-to-83` (no other branch, no force-push). |
0 commit comments