Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1850 commits
Select commit Hold shift + click to select a range
da1b2c4
Move attachment construction and behavior into attachment plugins
devin-ai-integration[bot] Aug 3, 2026
64e0514
Restore CRLF line endings in files whose editors rewrote them
devin-ai-integration[bot] Aug 3, 2026
cadb652
Correct attachment plugin descriptions to match behavior
devin-ai-integration[bot] Aug 4, 2026
2205f52
chore: bump version to 5.3.4-20260804 [version bump]
github-actions[bot] Aug 4, 2026
4bee209
Attachments declare where they are configured; bearing becomes one
devin-ai-integration[bot] Aug 4, 2026
a876f4e
Attachments own their settings UI, their click-mode half and their id…
devin-ai-integration[bot] Aug 4, 2026
6c21276
Attachments say which hosts they attach to, so their settings follow
devin-ai-integration[bot] Aug 4, 2026
34344dd
Generate the attachment registry the tabs test reads
devin-ai-integration[bot] Aug 4, 2026
5aea2cf
Inline every layertype/attachment metaconfig into its plugin.json
devin-ai-integration[bot] Aug 4, 2026
c2d7143
Name the layertype/attachment Configure form 'config', matching tools
devin-ai-integration[bot] Aug 4, 2026
fbfff44
Declare renderer modules by surface, and make the two new families or…
devin-ai-integration[bot] Aug 4, 2026
d6cf68f
Fix two Devin Review findings: leaked view listener, doubled gradient…
devin-ai-integration[bot] Aug 4, 2026
1062eaf
Fix attachment op lookup broken by the module key rename
devin-ai-integration[bot] Aug 4, 2026
944ba77
Make the plugin families authorable: docs, scaffolds, capability vali…
devin-ai-integration[bot] Aug 4, 2026
149b8c2
Document the six plugin families and their scaffolds in the docs site
devin-ai-integration[bot] Aug 4, 2026
2e076ef
Layertype file layout: one path segment per surface
devin-ai-integration[bot] Aug 4, 2026
5fa0858
Show the op phase form in the layertype scaffold
devin-ai-integration[bot] Aug 4, 2026
7a3b380
Drop the undispatched `load` op; derive the CLI's plugin types from o…
devin-ai-integration[bot] Aug 4, 2026
20fcb2c
Serialize the specs that regenerate the shared plugin registries
devin-ai-integration[bot] Aug 4, 2026
37e7d91
Declare the lock helper's Atomics globals for ESLint
devin-ai-integration[bot] Aug 4, 2026
138b5da
Fix the authoring papercuts eight fresh plugin authors hit
devin-ai-integration[bot] Aug 4, 2026
102d7f5
Document extends where the docs already claimed it was
devin-ai-integration[bot] Aug 4, 2026
461115c
Correct the manifest-reference facts authors checked against reality
devin-ai-integration[bot] Aug 4, 2026
f95defb
Enforce interaction applicability; document backend; runnable scaffol…
devin-ai-integration[bot] Aug 4, 2026
80d89f9
Validate the manifest parts that fail quietly
devin-ai-integration[bot] Aug 4, 2026
5e04f65
Add the source, legend, onConfigChange and configPath surfaces
devin-ai-integration[bot] Aug 4, 2026
c1fcabb
Fix the doc and scaffold gaps a second authoring round found
devin-ai-integration[bot] Aug 4, 2026
3163b43
Add a textarea component, document the metaconfig, isolate ctx.config
devin-ai-integration[bot] Aug 4, 2026
c2ed8ee
Give interactions a settings form on their own card
devin-ai-integration[bot] Aug 4, 2026
58b7a3b
Keep an interaction's settings when the layer modal trims a layer
devin-ai-integration[bot] Aug 4, 2026
7e348b4
Cover an interaction's settings form end to end
devin-ai-integration[bot] Aug 5, 2026
4d55759
Fix what a third-party author trips on: names, tabs, core's own tests
devin-ai-integration[bot] Aug 5, 2026
6a68839
Fix the cross-family seams a multi-plugin feature runs into
devin-ai-integration[bot] Aug 5, 2026
a0815f9
Let a layer type declare the attachments it comes with
devin-ai-integration[bot] Aug 5, 2026
944b571
Fix what round five's authors hit: extends drops inherited operations…
devin-ai-integration[bot] Aug 5, 2026
b2b7e1a
A layer type can configure the interactions it ships, not just name them
devin-ai-integration[bot] Aug 5, 2026
89be7c9
A mission with a layer of a plugin-provided type can now be saved
devin-ai-integration[bot] Aug 5, 2026
92d6956
A plugin can ask for its layer back, and a type can say when it has data
devin-ai-integration[bot] Aug 5, 2026
2753179
A refreshed layer's checkbox no longer shows it turned off
devin-ai-integration[bot] Aug 5, 2026
e2fa793
Plugin system: inherited ops, source cancellation/paging, dynamic dro…
devin-ai-integration[bot] Aug 5, 2026
846e3eb
Plugin system: a third-party layer type is selectable, and duplicate …
devin-ai-integration[bot] Aug 5, 2026
7b6d4be
Plugin system: acquire another layer's data, reference a layer's fiel…
devin-ai-integration[bot] Aug 5, 2026
c1aee28
Do not collect plugin-cli scaffold templates as tests
devin-ai-integration[bot] Aug 5, 2026
bfc36d7
Merge pull request #115 from JPL-Devin/devin/1785790516-finalize-laye…
tariqksoliman Aug 5, 2026
37a5fb6
Merge branch 'development' into development
tariqksoliman Aug 5, 2026
f3be2b7
Add geodataset statistics: per-group stats= and dataset-wide field_stats
devin-ai-integration[bot] Aug 6, 2026
023c5f4
chore: bump version to 5.3.5-20260806 [version bump]
github-actions[bot] Aug 6, 2026
584d189
Restore CRLF line endings in mmgis-openapi.json
devin-ai-integration[bot] Aug 6, 2026
e7e3659
Assert geodataset statistics end to end against a purpose-built geoda…
devin-ai-integration[bot] Aug 6, 2026
fbc4194
Address review: reject digit-prefixed text as numeric, don't half-sum…
devin-ai-integration[bot] Aug 6, 2026
bc678b7
Compute field_stats when an append creates the geodataset
devin-ai-integration[bot] Aug 6, 2026
62292e6
Address review: keep out-of-range numbers out of the cast, lock field…
devin-ai-integration[bot] Aug 6, 2026
5fd4a5a
Add nullCount and stddev to dataset-wide field_stats
devin-ai-integration[bot] Aug 6, 2026
80023f4
Add dynamicStyle resolver: map a feature property to a style attribute
devin-ai-integration[bot] Aug 6, 2026
37c0202
Style 2D vector features from variables.dynamicStyle; drop styleMatching
devin-ai-integration[bot] Aug 6, 2026
e191c53
Reach 3D: resolve the dynamic style onto the globe's GeoJSON clone
devin-ai-integration[bot] Aug 6, 2026
e73ec9e
Draw the dynamic style in the Legend, from the same compiled rules
devin-ai-integration[bot] Aug 6, 2026
bf7acfa
Author the dynamic style in the vector Style tab, and convert legacy …
devin-ai-integration[bot] Aug 6, 2026
b4f857b
Let a viewer restyle a dynamic layer, and stretch its scale over the …
devin-ai-integration[bot] Aug 6, 2026
219108a
Pick the ramp by its colours, and let the bins be dragged
devin-ai-integration[bot] Aug 6, 2026
197599b
Add the Reference Mission's dynamic style layer data
devin-ai-integration[bot] Aug 6, 2026
cdebce7
Address review: escape property names, keep the legend read-only, let…
devin-ai-integration[bot] Aug 6, 2026
37eeeac
Address review: the whole-dataset toggle keeps a rule's configured do…
devin-ai-integration[bot] Aug 6, 2026
24c777a
Layers Tool: attribute picker, aligned ramp rows, user-settable gate,…
devin-ai-integration[bot] Aug 6, 2026
f287730
Dynamic style: reset to the configured style, rule-backed properties …
devin-ai-integration[bot] Aug 6, 2026
ba4f229
Dynamic style: legend follows automatic restyles, and its heading is …
devin-ai-integration[bot] Aug 6, 2026
a4c2503
Hide the Dynamic Style fields a rule has made irrelevant
devin-ai-integration[bot] Aug 6, 2026
11f845a
Let a fieldless component sit inside an objectarray
devin-ai-integration[bot] Aug 6, 2026
597fa02
Offer only the styles a rule can still produce
devin-ai-integration[bot] Aug 6, 2026
05d8c4b
Keep a single feature's stats about its group
devin-ai-integration[bot] Aug 6, 2026
6c7ce80
Sort out three Dynamic Style and statistics snags
devin-ai-integration[bot] Aug 6, 2026
2a4b21f
Number objectarray items, and mind the groupless feature
devin-ai-integration[bot] Aug 7, 2026
9ac9f5a
chore: bump version to 5.3.6-20260807 [version bump]
github-actions[bot] Aug 7, 2026
85e08a3
Keep the ramp list with its picker, and unmount a ramp that has gone
devin-ai-integration[bot] Aug 7, 2026
062d598
Style by a group's statistics, and by as many rules at runtime as con…
devin-ai-integration[bot] Aug 7, 2026
f485bd6
Keep a rule's number span when it is re-aimed at another style
devin-ai-integration[bot] Aug 7, 2026
18a29e7
Style by a group statistic without typing its path
devin-ai-integration[bot] Aug 7, 2026
0150241
Keep the stats heading from standing in for the composite one
devin-ai-integration[bot] Aug 7, 2026
2b849a3
Three review fixes to the runtime style panel
devin-ai-integration[bot] Aug 7, 2026
fa40139
Key a rule's fields by what they edit, not where they land
devin-ai-integration[bot] Aug 7, 2026
d30382f
Key a row's components by where they are declared too
devin-ai-integration[bot] Aug 7, 2026
647b217
Measure a group statistic over the groups, not the features
devin-ai-integration[bot] Aug 7, 2026
a8d0970
Keep a view-measured layer coloured when it's off screen
devin-ai-integration[bot] Aug 7, 2026
319c8da
Read a group statistic filed under a dotted field name
devin-ai-integration[bot] Aug 7, 2026
5887a19
Ask for a nested statistics field by its whole name
devin-ai-integration[bot] Aug 7, 2026
6981a61
Show the bin split the map is actually drawing
devin-ai-integration[bot] Aug 7, 2026
a2ca033
Colour a group-statistic layer that has no groups measured yet
devin-ai-integration[bot] Aug 10, 2026
5c641f2
chore: bump version to 5.3.7-20260810 [version bump]
github-actions[bot] Aug 10, 2026
300bb13
Stop a switched-off dynamic style from asking for statistics
devin-ai-integration[bot] Aug 10, 2026
4bf3e8e
Report a group's sum and deviation, and style by them
devin-ai-integration[bot] Aug 10, 2026
f59cd93
Name the new statistics, and let a viewer aim a numeric attribute
devin-ai-integration[bot] Aug 10, 2026
2fbb3bc
Recompute an old geodataset's statistics from Configure
devin-ai-integration[bot] Aug 10, 2026
c2654dd
Halve a rescan's cost, and show a list field inside a repeatable group
devin-ai-integration[bot] Aug 10, 2026
c946819
Keep a legend label's exponent, and say what a Stat is measured over
devin-ai-integration[bot] Aug 10, 2026
40118af
Re-read the geodataset entries after a rescan
devin-ai-integration[bot] Aug 10, 2026
9f853d3
Colour a view-following layer over the view it is built in
devin-ai-integration[bot] Aug 10, 2026
a6837cf
Dress the Layers Tool's dynamic style panel
devin-ai-integration[bot] Aug 10, 2026
a21e9d7
Shorten Configure dynamic style rules and keep a restyled globe layer
devin-ai-integration[bot] Aug 10, 2026
26e40cc
Drop legend style matching, and keep a domain to what its source says
devin-ai-integration[bot] Aug 10, 2026
0dd5fa4
Keep dynamic style honest about its domain, and draw draped polygon e…
devin-ai-integration[bot] Aug 10, 2026
ffc7f18
Refresh only the stats a restyle changed
devin-ai-integration[bot] Aug 10, 2026
07f8362
Only rebuild the settings block when there are stats to put in it
devin-ai-integration[bot] Aug 10, 2026
65e75a6
List selectable properties and stats fields separately
devin-ai-integration[bot] Aug 11, 2026
2986262
chore: bump version to 5.3.8-20260811 [version bump]
github-actions[bot] Aug 11, 2026
3a1ee82
Report the domain of every rule, and stats for what each one colours by
devin-ai-integration[bot] Aug 11, 2026
8f0c1ab
Make Whole dataset / Current view one setting the rules follow
devin-ai-integration[bot] Aug 11, 2026
9228dbb
Author dynamic style rules in Configure and switch them on and off at…
devin-ai-integration[bot] Aug 11, 2026
0bb1637
Draw a repeatable item's checkbox from what was saved, not its default
devin-ai-integration[bot] Aug 11, 2026
0c05c43
Stop a feature's style becoming the layer's, and repaint when the las…
devin-ai-integration[bot] Aug 11, 2026
0402cca
Keep a bin's range whole in the legend
devin-ai-integration[bot] Aug 11, 2026
3f46e74
Read a marker's shape and animation from the feature's own style
devin-ai-integration[bot] Aug 11, 2026
b8d4ec6
Say a scale is missing dataset-wide numbers only where they could exist
devin-ai-integration[bot] Aug 11, 2026
57aadfb
Recognise a geodataset url however its scheme is written
devin-ai-integration[bot] Aug 11, 2026
da3a393
Bound a group statistic by its field's whole-dataset numbers
devin-ai-integration[bot] Aug 11, 2026
84eb4ad
Register the field statistics modal so it opens and closes
devin-ai-integration[bot] Aug 11, 2026
37139bf
Query the globe's own extent at every zoom, and let a fill-less footp…
devin-ai-integration[bot] Aug 11, 2026
9a9f757
Label a bin boundary with the value it falls at, and keep a rule's st…
devin-ai-integration[bot] Aug 11, 2026
e1e2eb0
Quieter stat rows, a flush rule switch, and a filter property list th…
devin-ai-integration[bot] Aug 11, 2026
2cfef23
Make the bin values legible
devin-ai-integration[bot] Aug 11, 2026
1702432
Give the stop bar room above it and a reset that stays put
devin-ai-integration[bot] Aug 11, 2026
67e5959
Butt the stop reset against the bar and stop bins at 20
devin-ai-integration[bot] Aug 11, 2026
2e091a2
Requery over whichever engine moved last, not always the map
devin-ai-integration[bot] Aug 11, 2026
0c10013
Square the rule switch and name the stats' domain in place of a tooltip
devin-ai-integration[bot] Aug 11, 2026
f8a3105
Query the globe's real frustum extent instead of a Leaflet zoom estimate
devin-ai-integration[bot] Aug 11, 2026
1a6492f
Store geodataset properties as jsonb, and gather row actions into a menu
devin-ai-integration[bot] Aug 12, 2026
67cc537
chore: bump version to 5.3.9-20260812 [version bump]
github-actions[bot] Aug 12, 2026
9dd3e99
Make a globe click find its feature when a dynamic style is on
devin-ai-integration[bot] Aug 12, 2026
d18c2db
Make a globe click's highlight show on the polygon it picked
devin-ai-integration[bot] Aug 12, 2026
273d972
Highlight the feature that was clicked, and spin while a requery is out
devin-ai-integration[bot] Aug 12, 2026
8f9c3e0
Merge branch 'NASA-AMMOS:development' into development
tariqksoliman Aug 12, 2026
4db9929
Pick the footprint the click is on, and keep ids of different kinds a…
devin-ai-integration[bot] Aug 12, 2026
e3cbbf7
List what a style a viewer can't change is styling by
devin-ai-integration[bot] Aug 12, 2026
35e3795
Fit a listed rule to its row, and let an admin hide the stats
devin-ai-integration[bot] Aug 12, 2026
d8ed2d9
Match on a kind of id both features carry
devin-ai-integration[bot] Aug 12, 2026
3472d06
Give a globe reload's entities ids of their own
devin-ai-integration[bot] Aug 12, 2026
f963d8a
Record nesting only as deep as a rescan reads it
devin-ai-integration[bot] Aug 12, 2026
06519f4
Keep the old features up until the new ones are drawn
devin-ai-integration[bot] Aug 12, 2026
97d50c4
Match the retire call as it is written
devin-ai-integration[bot] Aug 12, 2026
fccc5ee
Measure a line as the open path it is
devin-ai-integration[bot] Aug 12, 2026
384d44b
Refuse a pinned end that crosses the discovered one
devin-ai-integration[bot] Aug 12, 2026
6686706
Open the globe onto what the map is showing
devin-ai-integration[bot] Aug 12, 2026
7a7eb91
Leave the rest of the file as it was
devin-ai-integration[bot] Aug 12, 2026
5ac8cc7
Free a globe data source the reload replaced
devin-ai-integration[bot] Aug 12, 2026
c86119f
Hold the row a closing menu is still drawing
devin-ai-integration[bot] Aug 12, 2026
3f9d526
Clear a highlight the reload's entities left behind
devin-ai-integration[bot] Aug 12, 2026
8ad923d
Draw a configured image legend beside a scale
devin-ai-integration[bot] Aug 12, 2026
b3997d8
Give the dynamic style tests room for the ramp controls
devin-ai-integration[bot] Aug 13, 2026
3e01f1a
chore: bump version to 5.3.10-20260813 [version bump]
github-actions[bot] Aug 13, 2026
abfe101
Validate Missions path on getprofile/getbands/getminmax before GDAL
devin-ai-integration[bot] Aug 13, 2026
26c6969
chore: bump version to 5.3.5-20260813 [version bump]
github-actions[bot] Aug 13, 2026
b67f92f
Drop what nothing calls and share what was written twice
devin-ai-integration[bot] Aug 13, 2026
c049794
Put the escaper and the legend builder where they belong
devin-ai-integration[bot] Aug 13, 2026
1742ae4
Send the mission-relative raster path to getminmax for image layers
devin-ai-integration[bot] Aug 13, 2026
04d6cf1
File a template geodataset's statistics under the name it was stored as
devin-ai-integration[bot] Aug 13, 2026
c258e3c
Keep a kebab menu opened again during its own close
devin-ai-integration[bot] Aug 13, 2026
e6c4407
Allow operator-allowlisted remote GDAL datasets via GDAL_ALLOWED_REMO…
devin-ai-integration[bot] Aug 13, 2026
b256ff6
Pass remote GDAL urls through unaltered and require allowlist entries…
devin-ai-integration[bot] Aug 13, 2026
2bb895a
Trim comments in validateGdalDatasetPath
devin-ai-integration[bot] Aug 13, 2026
f52376b
Preserve percent signs in Missions paths and match remote prefixes on…
devin-ai-integration[bot] Aug 13, 2026
9463985
Merge pull request #117 from JPL-Devin/devin/1786637748-utils-gdal-pa…
tariqksoliman Aug 13, 2026
f64d25d
Merge development into geodataset stats and dynamic styling
devin-ai-integration[bot] Aug 13, 2026
7e1c149
Merge branch 'NASA-AMMOS:development' into development
tariqksoliman Aug 13, 2026
f9f56ff
Clean the empty values inside an objectarray item too
devin-ai-integration[bot] Aug 13, 2026
a7b6e0c
Make Leaflet a managed dependency at 1.9.4 and document vendored plugins
devin-ai-integration[bot] Aug 18, 2026
42b5679
Remove unused vendored Leaflet.ImageOverlay.Rotated
devin-ai-integration[bot] Aug 18, 2026
969c62c
Make the fakeStop compatibility shim a no-op so map drag still starts…
devin-ai-integration[bot] Aug 18, 2026
e369b90
Update Leaflet and GeometryUtil versions in attributions
devin-ai-integration[bot] Aug 18, 2026
a2155b8
Record the local patches that were in the deleted vendored Leaflet co…
devin-ai-integration[bot] Aug 18, 2026
7d0b775
Merge pull request #118 from JPL-Devin/devin/1787077116-leaflet-1.9-d…
tariqksoliman Aug 19, 2026
f25f720
Merge branch 'NASA-AMMOS:development' into development
tariqksoliman Aug 19, 2026
2f80f21
Merge branch 'NASA-AMMOS:development' into development
tariqksoliman Aug 19, 2026
4e79903
Merge development into geodataset stats and dynamic styling
devin-ai-integration[bot] Aug 19, 2026
769717f
Sync the lockfile version with the merge
devin-ai-integration[bot] Aug 19, 2026
8bfe938
Merge pull request #116 from JPL-Devin/devin/1785974342-geodataset-st…
tariqksoliman Aug 19, 2026
d015dfe
Merge branch 'NASA-AMMOS:development' into development
tariqksoliman Aug 19, 2026
9e1d608
Merge branch 'NASA-AMMOS:development' into development
tariqksoliman Aug 19, 2026
b390b5f
Fix geodataset temporal bugs: legacy tables, start-only time filters,…
devin-ai-integration[bot] Aug 20, 2026
b6cfea4
chore: bump version to 5.3.11-20260820 [version bump]
github-actions[bot] Aug 20, 2026
4abe103
Merge pull request #119 from JPL-Devin/devin/1787259727-geodataset-te…
tariqksoliman Aug 21, 2026
b95d637
Merge branch 'NASA-AMMOS:development' into development
tariqksoliman Aug 24, 2026
34810aa
Fix globe layers and time histogram handling
devin-ai-integration[bot] Aug 24, 2026
b29474a
chore: bump version to 5.3.12-20260824 [version bump]
github-actions[bot] Aug 24, 2026
f89b05b
fix(deps): pin svgo override to locked version
devin-ai-integration[bot] Aug 24, 2026
d1b936c
Merge pull request #120 from JPL-Devin/devin/1787588464-globe-litho-a…
tariqksoliman Aug 24, 2026
2fe211b
Merge branch 'NASA-AMMOS:development' into development
tariqksoliman Aug 24, 2026
a671179
Harden security boundaries and content handling
devin-ai-integration[bot] Aug 24, 2026
b0f6b91
Preserve Markdown breaks and restore API rate limit
devin-ai-integration[bot] Aug 24, 2026
be3dbea
Allow development WebSocket origin ports
devin-ai-integration[bot] Aug 24, 2026
044c128
Run Playwright tests on supported Node version
devin-ai-integration[bot] Aug 24, 2026
81faeb9
Preserve request size rejection status
devin-ai-integration[bot] Aug 24, 2026
b3b861a
Allow large dataset recreation payloads
devin-ai-integration[bot] Aug 24, 2026
6f6e03b
Fix browser security regressions
devin-ai-integration[bot] Aug 24, 2026
3f43967
Preserve layer control element IDs
devin-ai-integration[bot] Aug 24, 2026
1e6eccf
Merge pull request #121 from JPL-Devin/devin/1787598129-security-hard…
tariqksoliman Aug 25, 2026
c0349f7
Merge branch 'NASA-AMMOS:development' into development
tariqksoliman Aug 25, 2026
8e42e3d
Merge branch 'NASA-AMMOS:development' into development
tariqksoliman Aug 25, 2026
54e095f
ci: correct checkout pin comments, bump CI Node to 22, harden head_re…
devin-ai-integration[bot] Aug 25, 2026
db2618e
chore: bump version to 5.3.14-20260825 [version bump]
github-actions[bot] Aug 25, 2026
f1c66c1
Merge pull request #123 from JPL-Devin/devin/1787679045-fix-workflow-…
tariqksoliman Aug 25, 2026
bdb1f9d
deps: pin stac-fastapi-api/types/extensions to 6.2.1
devin-ai-integration[bot] Aug 25, 2026
227c80b
chore: bump version to 5.3.15-20260825 [version bump]
github-actions[bot] Aug 25, 2026
4975742
Merge pull request #125 from JPL-Devin/devin/1787693240-pin-stac-fast…
tariqksoliman Aug 25, 2026
1d3b62d
Merge branch 'NASA-AMMOS:development' into development
tariqksoliman Aug 25, 2026
e986572
Merge branch 'NASA-AMMOS:development' into development
tariqksoliman Aug 25, 2026
4149703
Merge branch 'NASA-AMMOS:development' into development
tariqksoliman Sep 2, 2026
78c348b
Add Broadcast plugin: push-based layer refresh via POST /api/broadcas…
devin-ai-integration[bot] Sep 2, 2026
2251aa5
chore: bump version to 5.3.19-20260902 [version bump]
github-actions[bot] Sep 2, 2026
7463d32
Drop time.refreshViaBroadcast switch; push refresh applies to any tim…
devin-ai-integration[bot] Sep 2, 2026
645163f
Add Broadcast plugin tests (unit helpers + /api/broadcast/layerUpdate…
devin-ai-integration[bot] Sep 2, 2026
a2698a4
Broadcast: resolve display names to UUIDs, refresh non-time layers vi…
devin-ai-integration[bot] Sep 2, 2026
c0d5ae6
Re-query layers on turn-on when a refreshLayer broadcast arrived whil…
devin-ai-integration[bot] Sep 3, 2026
eb51ced
chore: bump version to 5.3.20-20260903 [version bump]
github-actions[bot] Sep 3, 2026
0388a44
Make Broadcast plugin non-overridable
devin-ai-integration[bot] Sep 3, 2026
ee907dd
Move broadcast re-query logic from essence.js into L_.requeryLayers (…
devin-ai-integration[bot] Sep 3, 2026
3148b08
Broadcast: validate body before checkMissionPermission
devin-ai-integration[bot] Sep 3, 2026
089f98c
Extract websocket connect/retry/routing into WebSocketService; restor…
devin-ai-integration[bot] Sep 3, 2026
cf92c96
Document which layer types layerUpdate refreshes
devin-ai-integration[bot] Sep 4, 2026
0dd8c92
chore: bump version to 5.3.21-20260904 [version bump]
github-actions[bot] Sep 4, 2026
0e255b5
Merge pull request #126 from JPL-Devin/devin/1788375674-broadcast-lay…
tariqksoliman Sep 4, 2026
36fbde5
Merge branch 'NASA-AMMOS:development' into development
tariqksoliman Sep 8, 2026
f83a873
Security fix for geodatasets filter handling
devin-ai-integration[bot] Sep 9, 2026
c721b82
chore: bump version to 5.3.22-20260909 [version bump]
github-actions[bot] Sep 9, 2026
9098ada
Bound geodatasets in-filter value count/length; extend tests
devin-ai-integration[bot] Sep 9, 2026
e0ac1de
Adjust probe values in in-filter test
devin-ai-integration[bot] Sep 9, 2026
19b2811
Neutralize test naming for geodatasets in-filter spec
devin-ai-integration[bot] Sep 9, 2026
c666775
Merge pull request #128 from JPL-Devin/devin/1788991810-geodatasets-i…
tariqksoliman Sep 9, 2026
c09c866
Add missions_viewing: restrict mission visibility and config loading …
devin-ai-integration[bot] Sep 10, 2026
e7567c6
chore: bump version to 5.3.23-20260910 [version bump]
github-actions[bot] Sep 10, 2026
59cdee7
Landing page: show a message when the user has no viewable missions
devin-ai-integration[bot] Sep 10, 2026
2076087
missions_viewing: SuperAdmin-only updates, follow mission renames, MA…
devin-ai-integration[bot] Sep 10, 2026
f8a7f7e
User model: only re-hash password when it actually changed
devin-ai-integration[bot] Sep 10, 2026
81917d1
Enforce missions_viewing on /Missions/<mission>/ static files under A…
devin-ai-integration[bot] Sep 10, 2026
71fbf98
Static mission file check: authorize msv.missionFolderName folders, c…
devin-ai-integration[bot] Sep 10, 2026
4f382c4
Viewable-folder cache: generation guard and post-response invalidatio…
devin-ai-integration[bot] Sep 10, 2026
4c4c83d
Return 403 instead of login page for unauthenticated /Missions file r…
devin-ai-integration[bot] Sep 10, 2026
e337f03
Styled 403 page (with ROOT_PATH home link) for unauthorized file rout…
devin-ai-integration[bot] Sep 10, 2026
79a09e4
Merge pull request #130 from JPL-Devin/devin/1788999714-missions-viewing
tariqksoliman Sep 10, 2026
8a6c6cd
Revert "Merge pull request #130 from JPL-Devin/devin/1788999714-missi…
devin-ai-integration[bot] Sep 10, 2026
2a9859d
Merge pull request #131 from JPL-Devin/devin/1789065312-revert-pr-130
tariqksoliman Sep 10, 2026
e87a690
Merge remote-tracking branch 'upstream/development' into devin/178951…
devin-ai-integration[bot] Sep 15, 2026
a0d50e6
Merge pull request #141 from JPL-Devin/devin/1789513049-sync-upstream…
tariqksoliman Sep 15, 2026
72151e0
Merge branch 'NASA-AMMOS:development' into development
tariqksoliman Sep 22, 2026
4af36d0
Treat URL schemes containing digits (s3://, etc.) as absolute in isUr…
devin-ai-integration[bot] Sep 24, 2026
9524f1c
chore: bump version to 5.4.2-20260924 [version bump]
github-actions[bot] Sep 24, 2026
0c56dee
Share COG TiTiler tile URL builder with globe and URL-encode the COG …
devin-ai-integration[bot] Sep 24, 2026
0161c70
Tighten comments in Tile/cog.js
devin-ai-integration[bot] Sep 24, 2026
80d67a6
Revert "Tighten comments in Tile/cog.js"
devin-ai-integration[bot] Sep 25, 2026
acfa16b
Revert "Share COG TiTiler tile URL builder with globe and URL-encode …
devin-ai-integration[bot] Sep 25, 2026
38f6664
chore: bump version to 5.4.3-20260925 [version bump]
github-actions[bot] Sep 25, 2026
f454fd0
Merge remote-tracking branch 'upstream/development' into devin/179027…
devin-ai-integration[bot] Sep 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion configure/src/core/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ export const isNumeric = (value) => {
};

export const isUrlAbsolute = (url) => {
const r = new RegExp("^(?:[a-z]+:)?//", "i");
// RFC 3986 scheme (letters, digits, + - .) so s3://, gs://, etc. count
const r = new RegExp("^(?:[a-z][a-z0-9+.-]*:)?//", "i");
return r.test(url);
};

Expand Down
3 changes: 2 additions & 1 deletion src/essence/Basics/Formulae_/Formulae_.js
Original file line number Diff line number Diff line change
Expand Up @@ -822,7 +822,8 @@ var Formulae_ = {
return 'zero'
},
isUrlAbsolute: function (url) {
const r = new RegExp('^(?:[a-z]+:)?//', 'i')
// RFC 3986 scheme (letters, digits, + - .) so s3://, gs://, etc. count
const r = new RegExp('^(?:[a-z][a-z0-9+.-]*:)?//', 'i')
return r.test(url)
},
csvToJSON: function (csv) {
Expand Down
9 changes: 9 additions & 0 deletions tests/unit/formulae.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -851,6 +851,15 @@ test.describe('Formulae_ - Validation Utilities', () => {
test('detects absolute URLs', () => {
expect(F_.isUrlAbsolute('http://example.com')).toBe(true);
expect(F_.isUrlAbsolute('https://example.com')).toBe(true);
expect(F_.isUrlAbsolute('//example.com/path')).toBe(true);
});

test('detects schemes containing digits or punctuation', () => {
expect(F_.isUrlAbsolute('s3://my-bucket/path/file.tif')).toBe(true);
expect(F_.isUrlAbsolute('gs://my-bucket/file.tif')).toBe(true);
expect(F_.isUrlAbsolute('az://container/file.tif')).toBe(true);
expect(F_.isUrlAbsolute('file:///Missions/cog.tif')).toBe(true);
expect(F_.isUrlAbsolute('svn+ssh://host/repo')).toBe(true);
});

test('detects relative URLs', () => {
Expand Down
Loading