├── README.md ├── banned_versions.json ├── better-osm-org.user.js ├── finish-oauth.html ├── globals.d.ts ├── icons ├── Osm_element_node.svg ├── Osm_element_way.svg ├── Taginfo_element_relation.svg ├── osmcha.ico └── restrictions │ ├── France_road_sign_B21b.svg │ ├── France_road_sign_B21c1.svg │ ├── France_road_sign_B21c2.svg │ ├── France_road_sign_B2a.svg │ ├── France_road_sign_B2b.svg │ ├── France_road_sign_B2c.svg │ ├── MUTCD_R3-27.svg │ └── RU_road_sign_3.1.svg └── img ├── changeset-quicklook.jpg ├── changeset-quickview.png ├── changesets-filter.png ├── compact-changeset.jpg ├── compact-history.jpg ├── dark-id.png ├── dark-map.png ├── delete.png ├── diff.png ├── edit-war-detector.png ├── hdyc-fix-in-chrome.png ├── hdyc.jpg ├── notes-sat.jpg └── photos-and-traces-in-notes.png /README.md: -------------------------------------------------------------------------------- 1 | # better-osm-org 2 | 3 | Userscript adding several improvements for experienced osm.org users 4 | 5 | 1. Install [Violentmonkey](https://violentmonkey.github.io/) (FOSS) or [Tampermonkey](https://www.tampermonkey.net) (proprietary) 6 | 2. [Install](https://raw.githubusercontent.com/deevroman/better-osm-org/master/better-osm-org.user.js) script 7 | 8 | Also works in Firefox for Android 9 | 10 | ### Tags diff in object history 11 | 12 | 13 | 14 | ### QuickLook for simple changesets 15 | 16 | 17 | 18 | ### Improved history tab 19 | 20 | - Changesets filters 21 | - Show users roles and status 22 | - Show first comment 23 | 24 | 25 | 26 | ### Node deletion 27 | 28 | 29 | 30 | ### Satellite layer 31 | 32 | 33 | 34 | ### Stat HDYC in profile (Firefox only) 35 | 36 | 37 | 38 | ### Dark mode for map and iD 39 | 40 | 41 | 42 | 43 | 44 | Based on [OpenStreetMap Dark Theme by AlexPS](https://userstyles.world/style/15596/openstreetmap-dark-theme) 45 | 46 | ### Edit war detector 47 | 48 | 49 | 50 | ### Display photos and traces in notes 51 | 52 | 53 | 54 | Photos are also displayed in the tags `panoramax=*` and `wikimedia_commons=*` 55 | 56 | ### Hotkeys 57 | 58 | - `<` `>` for user changesets 59 | - `N` — on/off notes layer 60 | - `D` — on/off Map Data layer 61 | - `G` — on/off GPS tracks layer 62 | - `S` — on/off satellite layer (Firefox only) 63 | - `H` — open object history 64 | - `1` — open first version of object 65 | - `Z` — zoom to changeset/object bbox 66 | - `E` — Open editor 67 | - `8`/`9` — prev/next map position 68 | - `O`— open OSMCha 69 | - `shift` + `O` — open Achavi 70 | 71 | Experimental hotkeys: 72 | - `K` `L` — navigation between changeset elements 73 | - `J` — open objects from changesets in JOSM 74 | - `shift` + `J` — open objects from changesets in Level0 75 | - `shift` + `L` — pan to current location 76 | - `shift` + `H` — open My changesets 77 | - `Y` — open Yandex.Panoramas 78 | - `shift` + `E` — open second editor 79 | - `shift` + `N` — create new note 80 | - `C` — Open changeset of object version 81 | - `Q` — Close sidebar 82 | - `shift + Z` — pan to real changeset bbox (without relations bboxes) 83 | - `0` — zoom to global view 84 | - ` — hide geometry from map 85 | - `T` — toggle between compact and full tags diff mode 86 | - `U` — open user profile 87 | - `shift` + `U` — open your profile 88 | - `shift` + `/` — search with Overpass 89 | 90 | ### Other 91 | 92 | - [x] Changeset revert button 93 | - [x] OSMCha dis/likes 94 | - [x] Display way/relation versions 95 | 96 | - [x] Search deleted author of changeset 97 | - [x] Template responses when closing notes/changeset 👌/ 👋 98 | + [x] Add Rapid into Edit menu 99 | 100 | - Mass actions with changesets 101 | - 102 | + [x] mass revert via osm-revert 103 | - 104 | + [x] copy ids for JOSM 105 | - 106 | + [x] via remote control JOSM 107 | - 108 | + [x] load 300 changeset 109 | - 110 | + [x] open multiple changesets on one page 111 | - [x] Highlight `fixme=*`, `note=*` 112 | - [x] opening_hours validator 113 | - [x] Render `direction=*` 114 | - [x] Resizable sidebar 115 | - [x] Settings 116 | - [x] Hide active note highlight 117 | - [x] Click on time for show ISO-time 118 | - [x] Open external links in new tab 119 | - Clickable: 120 | - + [x] ID and names in object header 121 | - + [x] Hashtags in changeset comment 122 | - + [x] Changeset IDs in comments 123 | - + [x] `revert:id`, `closed:note`, `redacted_changesets` key in changeset 124 | - + [x] `panoramax=*`, `mapillary=*` tags 125 | - + [ ] use tag2link 126 | - [x] Display GPS photos and tracks in StreetComplete notes 127 | - [x] Display photos from Panoramax and Wikimedia Commons in tags 128 | - [x] Display GPS-tracks 129 | - [x] Shortening long URLs in comments: https://www.openstreetmap.org → osm.org 130 | - [x] Shortening `v:`, `ideditor:` keys in changesets tags and hide `host=https://www.openstreetmap.org/edit` 131 | - [x] Display number of comments to changesets on the map item page 132 | - [x] Display the user's previous usernames (via [OSM User Names Database](https://github.com/zverik/whosthat)) 133 | - Bypass OSMF Redactions 134 | - + [x] Show redacted tags 135 | - + [ ] Show redacted geometry 136 | - [ ] taginfo: new overpass links 137 | - + [x] search relation roles 138 | - + [x] search keys on Key length page 139 | - File viewer via Drag&Drop β 140 | - + [x] geotagged photos 141 | - + [x] .gpx 142 | - + [x] .geojson 143 | - + [x] .osm 144 | 145 | ### Ideas 146 | 147 | - [ ] in-browser reverter 148 | - [ ] Changesets feed like who did it 149 | - [ ] Jump to overpass from tags 150 | - [ ] Custom links to geo services (like OSM Smart Menu) 151 | - [ ] Mark reviewed changesets 152 | - [ ] Public transport viewer and validator 153 | - [ ] Hide resolved notes 154 | - [ ] Collapse name tags 155 | - Measurement 156 | - + [ ] Calc area size 157 | - + [ ] Distance between points 158 | - [ ] Integrate https://github.com/Zverik/osmtags-editor 159 | - [ ] Edit tags in Overpass Turbo 160 | - [ ] Tutorial 161 | - [ ] {{bbox}} on/off in Overpass Turbo 162 | - [ ] Improve data view 163 | - + [ ] Hide ways 164 | - + [ ] Filters 165 | - + [ ] Colors 166 | - [ ] Localization 167 | - [ ] Improve search 168 | - 169 | + [ ] Filter by object type 170 | - 171 | + [ ] Improve default zoom 172 | - 173 | + [ ] Photon? 174 | - 175 | + [x] Overpass (`shift` + `/`) 176 | - [ ] Custom overlays for iD 177 | - 178 | + [ ] Strava (Hard, need bypass CORS) 179 | - [ ] Show nearest example for map legend 180 | - [ ] website & iD helper for translator (open search query into translation platform) 181 | - [ ] show in quick look the base way tag 182 | - [ ] Fast tags copy from wiki 183 | - [ ] nakarte.me: line drawing 184 | 185 | Maybe 186 | 187 | - [ ] Support OpenHistoricalMap 188 | - [ ] Move object from OSM into OpenHistoricalMap 189 | - [ ] Bookmarks on map (like Organic Maps) 190 | 191 | ### Other 192 | 193 | - [Discussion on forum](https://community.openstreetmap.org/t/better-osm-org-a-script-that-adds-useful-little-things-to-osm-org/121670) 194 | - [OSM Wiki](https://wiki.openstreetmap.org/wiki/Better-osm-org) 195 | - [Greasy Fork](https://greasyfork.org/en/scripts/517486-better-osm-org) 196 | - [Issues](https://github.com/deevroman/better-osm-org/issues?q=sort%3Aupdated-desc+is%3Aissue+is%3Aopen) 197 | - [Mastodon](https://en.osm.town/@foxy) 198 | 199 | ### Other extensions 200 | - [OpenStreetMap Tags Editor](https://github.com/Zverik/osmtags-editor) 201 | - [OpenStreetMap Human-readable Wikidata](https://community.openstreetmap.org/t/announcing-human-readable-wikidata-browser-plugins-for-openstreetmap-org/108180) 202 | 203 | ### Projects that are used directly or indirectly in the script 204 | 205 | - [Bookmarklet helpers for resolving OSM Notes](https://community.openstreetmap.org/t/bookmarklet-helpers-for-resolving-osm-notes/105805/1) 206 | - [exif-js](https://github.com/exif-js/exif-js) — to read the coordinates of the photos that you drag using Drag&Drop 207 | - [ESRI](https://wiki.openstreetmap.org/wiki/Esri) — Satellite images 208 | - [GM_config](https://github.com/sizzlemctwizzle/GM_config) — settings framework for UserScripts 209 | - [LetItSnow](https://github.com/DevBubba/Bookmarklets/blob/main/Screen/LetItSnow.js) — Easter New Year's Egg 210 | - [Lucide](https://lucide.dev/icons/diff) — for changes count icon on /history page 211 | - [opening_hours.js](https://github.com/opening-hours/opening_hours.js) — for opening_hours tags validation 212 | - [OpenStreetMap Dark Theme](https://userstyles.world/style/15596/openstreetmap-dark-theme) — dark theme was the foundation based on this style 213 | - [OpenStreetMap Statistics](https://github.com/piebro/openstreetmap-statistics) — The script uses the rules from this project to normalize the names of OSM editors 214 | - [OSMBuilding](https://github.com/Beakerboy/OSMBuilding) — 3D viewer for buildings 215 | - [osmtogeojson](https://github.com/tyrasd/osmtogeojson) — converts OSM data to GeoJSON 216 | - [osm-auth](https://github.com/osmlab/osm-auth) — for authentication with OpenStreetMap 217 | - [SVG Spinners](https://github.com/n3r4zzurr0/svg-spinners) — for more beautiful spinner when you upload edits in iD in dark mode 218 | - [Wikimedia Commons](https://wiki.openstreetmap.org/wiki/Relation:restriction#Road_signs) — source for road signs SVGs 219 | - ... 220 | 221 | p.s. External libraries are hosted in fork repositories (if possible) controlled by me, and imported with [Subresource Integrity](https://www.tampermonkey.net/documentation.php#api:Subresource_Integrity) 222 | -------------------------------------------------------------------------------- /banned_versions.json: -------------------------------------------------------------------------------- 1 | { 2 | "0.314": { 3 | "overpass_tags_editor": { 4 | "description": "Beta version", 5 | "info_link": "https://example.com" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /finish-oauth.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | Wait... 12 | 13 | -------------------------------------------------------------------------------- /globals.d.ts: -------------------------------------------------------------------------------- 1 | declare function exportFunction( 2 | func: T, 3 | targetScope: object, 4 | options?: { 5 | defineAs?: string; 6 | allowCallbacks?: boolean; 7 | allowCrossOriginArguments?: boolean; 8 | } 9 | ): T; 10 | 11 | declare function cloneInto( 12 | obj: T, 13 | targetScope: object, 14 | options?: { 15 | cloneFunctions?: boolean; 16 | wrapReflectors?: boolean; 17 | } 18 | ): T; 19 | -------------------------------------------------------------------------------- /icons/Osm_element_node.svg: -------------------------------------------------------------------------------- 1 | 2 | OpenStreetMap node element iconimage/svg+xmlOpenStreetMap node element icon2014-03-10https://wiki.openstreetmap.org/wiki/User:Moresby 3 | -------------------------------------------------------------------------------- /icons/Osm_element_way.svg: -------------------------------------------------------------------------------- 1 | 2 | OpenStreetMap way element iconimage/svg+xmlOpenStreetMap way element icon2014-03-10https://wiki.openstreetmap.org/wiki/User:Moresby 3 | -------------------------------------------------------------------------------- /icons/Taginfo_element_relation.svg: -------------------------------------------------------------------------------- 1 | 2 | OpenStreetMap relation element iconimage/svg+xmlOpenStreetMap relation element icon2014-03-10https://wiki.openstreetmap.org/wiki/User:Moresby 3 | -------------------------------------------------------------------------------- /icons/osmcha.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deevroman/better-osm-org/3a08831e4e44a2f93b158bb8804ea245d21e2bd3/icons/osmcha.ico -------------------------------------------------------------------------------- /icons/restrictions/France_road_sign_B21b.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | image/svg+xml 69 | 80 | 91 | 92 | 98 | -------------------------------------------------------------------------------- /icons/restrictions/France_road_sign_B21c1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | image/svg+xml 50 | 61 | 72 | 77 | 82 | -------------------------------------------------------------------------------- /icons/restrictions/France_road_sign_B21c2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | image/svg+xml 50 | 61 | 72 | 77 | 82 | -------------------------------------------------------------------------------- /icons/restrictions/France_road_sign_B2a.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | image/svg+xml 78 | -------------------------------------------------------------------------------- /icons/restrictions/France_road_sign_B2b.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | image/svg+xml -------------------------------------------------------------------------------- /icons/restrictions/France_road_sign_B2c.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | image/svg+xml -------------------------------------------------------------------------------- /icons/restrictions/MUTCD_R3-27.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 9 | 10 | 11 | 13 | 16 | 17 | 19 | 21 | 22 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /icons/restrictions/RU_road_sign_3.1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /img/changeset-quicklook.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deevroman/better-osm-org/3a08831e4e44a2f93b158bb8804ea245d21e2bd3/img/changeset-quicklook.jpg -------------------------------------------------------------------------------- /img/changeset-quickview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deevroman/better-osm-org/3a08831e4e44a2f93b158bb8804ea245d21e2bd3/img/changeset-quickview.png -------------------------------------------------------------------------------- /img/changesets-filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deevroman/better-osm-org/3a08831e4e44a2f93b158bb8804ea245d21e2bd3/img/changesets-filter.png -------------------------------------------------------------------------------- /img/compact-changeset.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deevroman/better-osm-org/3a08831e4e44a2f93b158bb8804ea245d21e2bd3/img/compact-changeset.jpg -------------------------------------------------------------------------------- /img/compact-history.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deevroman/better-osm-org/3a08831e4e44a2f93b158bb8804ea245d21e2bd3/img/compact-history.jpg -------------------------------------------------------------------------------- /img/dark-id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deevroman/better-osm-org/3a08831e4e44a2f93b158bb8804ea245d21e2bd3/img/dark-id.png -------------------------------------------------------------------------------- /img/dark-map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deevroman/better-osm-org/3a08831e4e44a2f93b158bb8804ea245d21e2bd3/img/dark-map.png -------------------------------------------------------------------------------- /img/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deevroman/better-osm-org/3a08831e4e44a2f93b158bb8804ea245d21e2bd3/img/delete.png -------------------------------------------------------------------------------- /img/diff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deevroman/better-osm-org/3a08831e4e44a2f93b158bb8804ea245d21e2bd3/img/diff.png -------------------------------------------------------------------------------- /img/edit-war-detector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deevroman/better-osm-org/3a08831e4e44a2f93b158bb8804ea245d21e2bd3/img/edit-war-detector.png -------------------------------------------------------------------------------- /img/hdyc-fix-in-chrome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deevroman/better-osm-org/3a08831e4e44a2f93b158bb8804ea245d21e2bd3/img/hdyc-fix-in-chrome.png -------------------------------------------------------------------------------- /img/hdyc.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deevroman/better-osm-org/3a08831e4e44a2f93b158bb8804ea245d21e2bd3/img/hdyc.jpg -------------------------------------------------------------------------------- /img/notes-sat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deevroman/better-osm-org/3a08831e4e44a2f93b158bb8804ea245d21e2bd3/img/notes-sat.jpg -------------------------------------------------------------------------------- /img/photos-and-traces-in-notes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deevroman/better-osm-org/3a08831e4e44a2f93b158bb8804ea245d21e2bd3/img/photos-and-traces-in-notes.png --------------------------------------------------------------------------------