Support multiple saved custom background layers - #5
Conversation
this is a separate commit to avoid destroying the git blame
✅ Deploy Preview for tordans-id-experiments ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
8fc9c27 to
0f19c10
Compare
There was a problem hiding this comment.
Stale comment
Left a non-blocking comment: Cursor Bugbot finished as skipping and reported unresolved findings (including a medium-severity legacy custom-id toggle issue), so this run is not approving. Requesting human reviewers for the custom-background changes.
Sent by Cursor Approval Agent: Dependabot Review and Auto Merge
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit ebc39fb. Configure here.
There was a problem hiding this comment.
Stale comment
Left a non-blocking comment: Cursor Bugbot finished as skipping and reported an unresolved medium finding (deduped custom background ignores the new name), so this run is not approving. Requesting human reviewers for the custom-background changes.
Sent by Cursor Approval Agent: Dependabot Review and Auto Merge
allows to find presets by their raw tags in `addTags` as well
…map#12677) Bumps the types group with 1 update: [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node). Updates `@types/node` from 26.1.1 to 26.1.2 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-version: 26.1.2 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: types ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…peed-single-digit Delete the unused lane parsing code
* hide "add tag" row * fix rounded borders at corners * drop unused css class * add missing padding in tag editor section * remove line between heading and properties list
with full (raw) tag value and description if available Co-authored-by: Martin Raifer <martin@raifer.tech>
…ap#12685) `options` is only set from `field.options`, so it stays undefined for check fields without an explicit list (e.g. `backrest`). Calling `options.includes()` then threw while rendering the entity editor, which aborted mode select before it applied the mode class, leaving the map without select cursors and the raw tag editor showing the previous feature. Compare against `values`, which always falls back to yes/no. Co-authored-by: Cursor <cursoragent@cursor.com>
Bumps [jsdom](https://github.com/jsdom/jsdom) from 30.0.0 to 30.0.1. - [Release notes](https://github.com/jsdom/jsdom/releases) - [Commits](jsdom/jsdom@v30.0.0...v30.0.1) --- updated-dependencies: - dependency-name: jsdom dependency-version: 30.0.1 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
The active list/text toggle does nothing when clicked again, so a hand cursor is misleading. Co-authored-by: Cursor <cursoragent@cursor.com>
Generalize the heading-line icon button classes so other disclosures can reuse the same chrome without a second CSS path. Co-authored-by: Cursor <cursoragent@cursor.com>
The star is informational (tooltip only), so show the question cursor instead of a text I-beam. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Replaces the single custom background with a saved list: add/edit/delete rows, optional names, cleaned URL templates, collapsible WMS/TMS help, and `#background=custom:<url>` / legacy `#background=custom` hash support. Co-authored-by: Cursor <cursoragent@cursor.com>
ebc39fb to
eb4208f
Compare
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_0dce5adb-a904-464f-b870-bf232fe33ed1) |
Co-authored-by: Cursor <cursoragent@cursor.com>
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_3b84d9b6-8113-45c3-8b1d-967f35fdfd85) |
Place add/view controls in the summary and hide them with :not(:open), removing the negative-margin layout hack. Co-authored-by: Cursor <cursoragent@cursor.com>
Reuse the shared 200px tooltip width; scrollContainer and word-break already keep long URLs inside the pane. Co-authored-by: Cursor <cursoragent@cursor.com>
Keep this PR focused on custom backgrounds; leave that validation string bug for a separate fix. Co-authored-by: Cursor <cursoragent@cursor.com>
The optional label is enough; an example string is unnecessary. Co-authored-by: Cursor <cursoragent@cursor.com>
Avoid a noise-only const/let rewrite in the PR diff. Co-authored-by: Cursor <cursoragent@cursor.com>
TypeScript can type reads as string|null and writes as boolean, so callers no longer need a local cast. Co-authored-by: Cursor <cursoragent@cursor.com>
Run template + last-used migration only when needed, clear the old key, and stop writing an empty list on fresh installs. Co-authored-by: Cursor <cursoragent@cursor.com>
Drop the global hyphenation rules and stop wiring scrollContainer onto ordinary background-list tooltips. Co-authored-by: Cursor <cursoragent@cursor.com>
Pass the entry via d3 selection.call instead of a forEntry helper, and drop unnecessary type casts. Co-authored-by: Cursor <cursoragent@cursor.com>
Type uiModal/uiConfirm and utilNoAuto at the source so the settings modal no longer needs as-any workarounds. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Drop the thin setPref/getPref wrappers now that prefs is typed. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Apply selected/hover/active styles to label and button cells so custom edit controls don't need a background-pane override. Co-authored-by: Cursor <cursoragent@cursor.com>
Put the example URL under the template field, drop the help-icon column, and fix extra gaps from inline textarea baseline and disclosure line-height. Co-authored-by: Cursor <cursoragent@cursor.com>
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_ed478cd3-90a7-42fa-b295-61240e5172a4) |
|
This is now on openstreetmap#12703 |



Testing
Note to self: Edit redirect URL at https://www.openstreetmap.org/oauth2/applications/12061/edit
Summary
iD can now remember more than one custom background imagery layer. If you regularly switch between a local WMS server, a specialty tile set, and OpenStreetMap tiles, you no longer have to re-enter the URL each time — save each one, give it an optional name, and pick it from the Background list like any other layer.
What you get:
#background=custom:<url>still works: the URL is added to your saved list (if new) and selected.Reimplements #8874.
Test plan
npm test— lint, build, typecheck, and all specs pass locally#background=custom:<url>; confirm the URL is saved and selectedMade with Cursor