{"name": "GeoDeploy", "package_name": "geodeploy_qgis", "version": "0.7.0", "experimental": true, "qgis_min": "3.28.0", "qgis_max": "4.99.0", "downloads": 42, "uploaded_by": "bravemaster3", "upload_datetime": "2026-09-10T07:25:06.809890", "changelog": "0.7.0 - The release that closes the symbology round trip.\nEVERY SYMBOL QGIS CAN DRAW, or an honest account of why not. Rule-based rendering, stacked\nstrokes (a casing under a road), markers along a line, hatch and pattern fills, gradients, line\noffsets, 2.5D, per-class symbols, and labels - their rules, their placement, whether they sit\non or above a line, and whether every part of a multi-part feature gets one. What cannot travel\nis named before you push rather than found afterwards.\nEXTERNAL SOURCES, BOTH WAYS. A WMS, WMTS, XYZ, WFS, OGC API - Features, vector tile set or\nPMTiles archive open in QGIS is registered as a GeoDeploy source rather than refused; a\nportal's own external sources open and push back without being mistaken for something else.\nWITHOUT A TOKEN, A PORTAL OPENS EXACTLY AS IT DOES WITH ONE. There used to be two code paths\nand only one of them ever got the new features.\nDeclared supportsQt6, so QGIS 4 will actually offer this plugin.\n0.6.2 - WITHOUT A TOKEN, A PORTAL NOW OPENS EXACTLY AS IT DOES WITH ONE. There were\ntwo implementations of \"what does this portal look like\": with a token the plugin read the\nstyling the author wrote; without one it read the published style.json and translated the\nMapLibre paint backwards. That reverse is lossy - a rule tree, a stacked stroke, a per-class\nmarker, a label's placement and its scale range have no paint value to recover them from - so\nevery symbology fix landed on one side and the anonymous path fell further behind. There is one\npath now, and an instance too old for it still opens (and says so). A public LAYER added on its\nown gains its saved styling too: the anonymous index does not carry it, and nothing had ever\nasked for the detail that does.\n0.6.1 - EVERY KIND OF SERVICE, not just three. GeoDeploy now holds XYZ, WMS, WMTS,\nWFS, OGC API - Features, vector tiles and PMTiles, and the plugin pushes all of them. QGIS\nserves three of those through ONE provider, and the URI is the only thing that tells them\napart: sending a WMTS as a WMS publishes a layer asking GetMap of a server that only speaks\nGetTile, which draws nothing and says nothing. What still has no home is refused by name -\nArcGIS REST, and WCS, which is not a display service at all (GetCoverage returns a coverage,\nnot map images; most WCS servers publish the same data over WMS).\nAlso: a label's PLACEMENT and whether it sits on, above or below its line now travel, so a\ncontour layer's heights come back; QGIS's \"label every part of multi-part features\" travels\ntoo. Both need the instance rebuilt to show in the browser.\n0.6.0 - A LAYER SERVED BY SOMEBODY ELSE CAN NOW BE PUSHED. A WMS, an XYZ tile set\nor a WFS has no file to upload, and GeoDeploy has held exactly that as an \"external source\" -\na reference fetched at view time - since long before this plugin knew about it. Pushing one was\nrefused with \"served from elsewhere, not a local file\"; inside a GROUP it was worse, because\nthe layer fell in with the local files and the first export aborted the whole publish, so one\nbasemap in a group meant nothing reached the portal. Now it is registered, the provider's\nattribution travels with it, and the dialog says \"nothing is uploaded\" before anything happens.\nWhat GeoDeploy has no kind for - WMTS, third-party vector tiles or PMTiles, OGC API - Features,\nArcGIS REST - is named with the reason instead of being registered as the nearest neighbour\nthat would fetch from the wrong endpoint and draw nothing.\nAND A PORTAL'S OWN EXTERNAL SOURCES SURVIVE THE ROUND TRIP. Their identity was read as the\nKIND they hold, so a WMS source opened as \"raster layer N\" and pushing the group back pointed\nthe portal at whatever layer N happened to be. A portal's WFS layer also opens now, through the\nsame GeoJSON proxy the portal draws it with.\n0.5.5 - THE FAST PREVIEW NOW THINS OUT THE WAY THE PORTAL DOES. A rule tree is how\na layer says \"generalized outlines zoomed out, full detail zoomed in\" - three rules, three\nzoom ranges - and a tile renderer style left with no range is active at EVERY zoom, so the\nfast path drew every rung of the ladder at once. Each rule and each class now carries its own\nrange, converted the way the two sides mean it: MapLibre draws for min <= z < max where QGIS\nis inclusive at both ends, so the last whole zoom is ceil(max) - 1. Checked zoom by zoom\nagainst a portal's own published style.\nAlso: the source picker says \"Fast preview - the portal's tiles\" rather than \"As the portal\ndraws it\". The old label was a promise a different rendering engine cannot keep, and every\nremaining difference arrived as a report against it.\n0.5.4 - A LINE'S LABELS COME BACK. Reported against a contour layer: the heights\nshowed in the file and in the browser and were simply absent once the portal was opened in\nQGIS. The label PLACEMENT never travelled - it was read by stringifying an enum, which on this\nQGIS is an int, so the test never matched and QGIS's default (around a point) stood. A line\nlabelled around a point draws NOTHING in QGIS: 181 label pixels became 0, and 181 again once\nthe placement was restored. Whether the labels sit ON the line or above it travels too, and a\nline layer labelled in GeoDeploy - which never saw QGIS to say - is placed along its line\nrather than left with a default that draws nothing.\nAND THE FAST DRAW NO LONGER SHOWS LABELS A ZOOM EARLY. A scale threshold converts to a\nfractional zoom (10.127) and a tile renderer has only whole ones; truncating handed that to\nzoom 10, so zoomed out, labels the browser had already dropped came back for one step. The\nfirst whole zoom inside the range is its ceiling, which is what the browser draws.\n0.5.3 - A RULE IS A SYMBOL, and stacked strokes inside one now travel. A line\ndrawn as a solid red stroke with a dashed blue one over it published as plain red whenever it\nlived inside a rule - the single-symbol path had learnt to read the whole stack in 0.5.0, but\nthe function that builds a RULE's style still read only the first stroke. (The other half of\nthe same report is server-side and ships with the instance.)\n0.5.2 - Two things the FAST DRAW (\"as the portal draws it\") got wrong, both of\nwhich made a layer look like it was missing.\nTHE CIRCLES ALONG A LINE SAT NEARLY THREE TIMES TOO FAR APART. The spacing between markers\ntravelled as a number without its unit, so 20 screen pixels was rebuilt as 15 MILLIMETRES -\nQGIS's default unit, not the one the number was measured in. On a long thin line that reads as\n\"the markers are not drawn at all\". Spacing is now stated in points, like every other size.\nAND EVERY LABEL IN A RULE TREE APPEARED AT ONCE. A rule's zoom range lives on the RULE, beside\nits filter; the tile path read it from the label settings instead and gave every rule the\nLAYER's range - so a hamlet's name showed as far out as a city's, and the map was unreadable\nzoomed out. Each rule now keeps the scale range it was drawn with.\n0.5.1 - Two bugs 0.5.0 introduced, both reported within minutes of installing it.\nCONNECTING COULD FAIL OUTRIGHT with \"Client.__init__() got an unexpected keyword argument\".\nThe client is vendored, but putting vendor/ on the path only decides where `geodeploy` is\nimported FROM the first time - after that Python answers from its module cache, so upgrading\nthe plugin without restarting QGIS runs the new code against the OLD client. Anything the\nplugin passes beyond the long-standing arguments is now OFFERED rather than required, so a\nstale or pip-installed copy still connects; and the message no longer blames the URL for\nsomething that was not the URL.\nAND AN ENTIRE LAYER OF LABELS RENDERED AS \"1\". On the tile path a rule's FILTER was written\ninto the key that means \"the expression that produces the label TEXT\", so QGIS drew the\nboolean result of `\"type\" = 'Water'` instead of the place name. Two different expressions,\ntwo arguments.\n0.5.0 - A LINE DRAWN AS SEVERAL STROKES now travels as all of them. QGIS builds a\ncasing, a dashed overlay and a hatch by stacking simple lines inside ONE symbol, and this read\nonly the first: a rule whose symbol is a solid RED line with a DASHED BLUE one over it - which\non screen reads as blue - arrived as plain red. `line_stack` carries the rest and the map\nstacks them the same way.\nA PICTURE MARKER COMES BACK THE SIZE IT LEFT. QGIS sizes a raster marker by its CANVAS, and the\ncanvas is deliberately roomier than the symbol so ink that overhangs is not clipped - so the\npin came back at half. The browser was right all along, which is why this only showed on the\nway home.\nA PORTAL GROUP now honours each layer's SCALE RANGE; before, every layer drew at every zoom.\nAnd a RATE-LIMITED upload is waited out rather than failed: pushing a group is one request per\nlayer, an instance throttles that route, and the push used to stop partway with \"HTTP 429\" and\nhave to be repeated.\n0.4.9 - Two more found by checking the 0.4.8 fix on the reported layer instead of\ntrusting it. The circles along a line came back at QGIS's DEFAULT size whatever they started\nas - a rebuilt line marker is a raster marker, whose default has nothing to do with the symbol\nit replaces, and the style carried the picture and the spacing but never the size. And a line\nthat is drawn entirely by symbols would have drawn NOTHING at all if the picture failed to\nrender, which is capped in bytes: worse than the band it replaced, so the zero width is\nwithdrawn and the line keeps a stroke instead.\n0.4.8 - Five things reported against one map, all of them the plugin inventing\nsomething the author never drew.\nA LINE MADE OF MARKERS HAS NO STROKE. QGIS's marker line draws circles at intervals and\nnothing between them, but `QgsLineSymbol.width()` reports its MARKER's size - so a line of\n10 mm circles was read as a 10 mm stroke, the map painted a 37.8 px grey band underneath, and\nthe trip back added a \"Simple Line\" the symbol never had. Reported as \"why do I have that wide\nbuffer around the line instead of circle markers\".\nA PICTURE IS NOW DRAWN AT THE SIZE QGIS DRAWS IT. `asImage` does not scale a symbol to fill\nthe canvas it is given, so the earlier size fix enlarged the canvas and added transparent\npadding while the marker stayed put: a pin QGIS drew 27 px across arrived 14 px in the browser.\nThe symbol is scaled before rendering now, measured at 0.98 of QGIS rather than 0.5.\nLABEL RULES WERE READ FROM THE WRONG END of the scale range, producing minzoom 24 with\nmaxzoom 13.6 - and MapLibre honours that literally, so all eight label layers of a place-names\nlayer drew NOTHING, at any zoom, with no error anywhere.\nA PORTAL OPENED AS A GROUP now draws what the portal draws. That renderer knew about single,\ngraduated and categorized styles only: a RULE-BASED layer became one flat symbol, a marker\nthat travels as a picture became a plain dot, and a layer whose geometry was not in the row\nwas styled for all three geometry types at once.\n0.4.7 - The push dialog now says WHERE a restyle lands. \"Push group to portal\"\nchanges that portal; a layer's own default style - what its page shows, and what every other\nportal starts from - is changed only by \"Save styling to GeoDeploy\". The dialog listed\n\"Restyled (3)\" and said neither, so restyling inside a group and then finding the layer's own\npage unchanged looked like a bug. A layer that is NEW gets both, because an uploaded layer has\nno default style to preserve, and the dialog says that too.\n0.4.6 - A LABELLING IS A TREE, NOT ITS FIRST LEAF. QGIS labels a place-names\nlayer by rule - water blue at 9pt, woodland green, a town brown at 11 - and this plugin read\nthe FIRST rule and sent it as the whole labelling, so every name on the map came out in one\ncolour at one size. All eight rules now travel, each with the filter text its author typed,\nand the trip back rebuilds the rule tree. Reported as \"this layer has different colours from\nwhat it had in qgis\".\nAND A SIZE OF ZERO IS A SIZE. A marker deliberately sized 0 - the ordinary way to make a point\nlayer that exists only to carry labels - was read as \"unset\" and drawn at 5, so 355 invisible\npoints became 355 coloured dots in the browser, and opening the layer back in QGIS gave it a\nmarker it never had. The same for a line of width 0. A default now applies only where there is\nno number at all.\n0.4.5 - A CLASS IS MORE THAN A COLOUR. A category or a range now keeps its own\nsymbol - its dash, its width, its fill opacity, its marker shape and size, its outline - where\nbefore GeoDeploy carried a colour per class and one shape for the whole layer, taken from the\nfirst class. Two categories in the same colour that differed only by dash arrived identical,\nand the map lost the distinction it was made for. Classes that differ only in colour are\nunchanged, so an ordinary classified layer is drawn exactly as it was.\nFour more defects found by putting every symbol layer, every renderer and every render unit\nthis QGIS has through the round trip: a CROSS or X marker was drawn in white, because those\nshapes have no inside and the colour was being set on a brush QGIS never paints with; a\nPOLYGON'S DASHED BORDER was read and never written back, so a dashed boundary went to\nGeoDeploy correctly and returned solid (and a hairline one drew solid in the browser too,\nsince a fill's own edge cannot dash); LABEL CAPITALISATION was read and never written; and\nLABEL LETTER SPACING did not invert, so 1.5 came back as 2.5 and drifted further every trip.\nA marker QGIS draws as a picture - an SVG, a font or a raster marker - no longer reports the\nlayer as edited on every push: the bitmap that was applied is handed back while the symbol\nstill matches, instead of being photographed again slightly differently each time.\n0.4.4 - Sizes are now read in the UNIT QGIS states them in. QGIS's default is\nMILLIMETRES and this plugin had always read points, so every size authored in QGIS travelled\n2.835x too small: a 10 mm marker became a 6.67 px radius (\"the markers appear small in the\nbrowser\") and a 0.66 mm line a 0.88 px hairline. It went unnoticed because the plugin sets the\nunit to points on everything it writes, so anything it had applied round-tripped perfectly.\nAn OUTLINE-ONLY POLYGON is no longer filled: a fill symbol whose layers are all strokes was\nread by the line branch, so the border's colour arrived as the fill and a dashed extent\nrectangle came back as a solid block over the map. A tile layer can now be LABELLED - it takes\na different labelling class, and asking for the wrong one meant every layer opened from a\nportal as a group came back with no labels at all.\n0.4.3 - A 2.5D layer authored in GEODEPLOY now opens as 2.5D in QGIS. It used to stay\na flat fill unless it had come from QGIS in the first place, which meant ticking \"3D - raise\nthese polygons\" in the browser produced a polygon that said nothing about height. You get both\nrenderers now: 2.5D on the ordinary canvas, and a 3D renderer so View > New 3D Map View shows\nthe real extrusion. A height driven by a FIELD travels as an expression rather than a number,\nso the buildings vary instead of arriving as one flat slab. A classified layer keeps its\nclasses (2.5D is single-symbol) and a point layer stays pillars, both of which still get the 3D\nrenderer. And three things a TILED layer cannot draw - a heatmap, an extrusion, a raster\nalgorithm such as contours - now say so in the log instead of looking unstyled; a small heatmap\nlayer is opened from its data automatically so it simply works.\n0.4.2 - Two things reported against 0.4.1. A heatmap now FADES IN at density zero the\nway the web draws it: QGIS's QColor cannot read the CSS `rgba(0,0,255,0)` GeoDeploy stores as\nthe low stop, so it was silently dropped and the ramp started opaque - a flat wash over the\nlayer instead of a density map. And a pattern fill is now EMBEDDED in the symbol rather than\nwritten to a file: QGIS reads an image path lazily on every repaint and has nowhere to report a\nfailure, so a path it could not read was a hatch that drew nothing at all.\n0.4.1 - Styling now arrives in QGIS the way GeoDeploy draws it, in both the cases\ntesting found it did not. A pattern fill, a marker picture, markers along a line, a centre\nmarker, \"draws nothing\" and a HEATMAP could all be read OUT of QGIS and none could be written\nback, so those layers opened as a plain colour; all six now rebuild. A pattern is added per\nSYMBOL rather than per layer, so a graduated hatched polygon keeps its classes instead of\ncollapsing to one flat hatch. And WITHOUT A TOKEN the plugin reads the public legend, which now\ncarries the heatmap ramp and the pattern tile - previously an anonymous layer arrived unstyled\nbecause the style lives on an authenticated endpoint.\nAlso: a style naming no colour no longer opens a different colour every time (QGIS's default\nsymbol picks one at random), and one unreadable layer can no longer abort opening a whole\nportal group.\n0.4.0 - The symbology round trip, widened a long way. Expressions and RULE-BASED\nrenderers travel; LABELS travel, with a shipped font set so the web draws the face QGIS drew;\n2.5D arrives as a real extrusion, including a DATA-DEFINED height (an expression in the project\nvariable used to fall back to the default silently, so those buildings were the wrong height);\narrow lines are rebuilt rather than flattened; SVG, raster, font, ellipse and multi-layer\nmarkers travel as their own pixels; pattern fills are rebuilt as tiles that repeat without a\nseam; heatmaps and centroid fills translate. Gradients (fill, lineburst, shapeburst) read at\nthe MIDDLE of their ramp rather than one end; filled and raster lines pick a sensible colour\ninstead of falling through. Contour rasters carry a chosen palette and line colour, and a DEM\ncan raise the map as 3D terrain.\nWhat cannot travel now SAYS SO instead of changing the map quietly: layer BLEND MODES (MapLibre\nhas none at all), cluster, displacement, merged-feature and inverted-polygon renderers. And the\nwrite buttons explain why they are grey, with a link to the tokens page of the instance you are\nconnected to - a token failure now names the likeliest cause on every action, not only on\nrefresh.\n0.3.5 - Maximum version added because it is also supported in QGIS 4.2.\n0.3.4 - The plugin wears the GeoDeploy logo instead of a placeholder circle, six\nQDialogButtonBox enums missed by the first Qt6 pass are scoped (the scope belongs to the class\nyou are calling, and that one is not QMessageBox), and a handful of unused imports and an\nambiguous variable name are gone.\n0.3.3 - Ready for QGIS 4. Qt6 only reaches an enum member through its scope\n(Qt.PenStyle.NoPen, not Qt.NoPen), so every one of the 94 places this plugin read an enum now\ngoes through a small resolver that asks for the scoped name and falls back to the flat one -\nwhich keeps QGIS 3.28 working exactly as before. Dialogs call exec() rather than the removed\nexec_(). No behaviour changes on QGIS 3.\n0.3.2 - The 0.3.1 security declarations are applied inline instead of in a bundled\n.bandit file. plugins.qgis.org runs bandit with an explicit list of tests, and a config file\nthat skips any of them makes bandit abort without scanning anything - which is what the 0.3.1\nscan report showed. Same declarations, same fixes, now honoured.\n0.3.1 - Security-scan round. Two findings pointed at real weaknesses and were fixed\nrather than waved through: every URL the plugin opens is now checked to be http or https before\nit is opened - it follows links that come BACK from an instance, so a hostile one could\notherwise have pointed it at a local file - and a WMTS capabilities document that declares XML\nentities is refused outright, which removes the entity-expansion class of attack without adding\na dependency a QGIS plugin cannot have. The remaining findings are deliberate and are declared,\nwith reasons, in a bundled .bandit config.\n0.3.0 - First public release. Browse a GeoDeploy instance (no account needed for public\ndata), add a layer using the fastest source it offers, open a whole portal as a styled QGIS\ngroup, and upload back - including multi-gigabyte files. Styling travels BOTH WAYS: single\nsymbol, graduated and categorized vectors; colormap, stretch, band, hillshade, contours and\ncolour-per-value rasters; size-from-a-field; marker shape, stroke colour and width; a polygon's\noutline width. A layer opens looking like the portal, and what you change goes home.\nWhich renderer QGIS offers depends on the SOURCE, so a per-layer Source picker and a\n\"Restyle this layer...\" button get you onto the surface that can actually be restyled. A PostGIS\nlayer opens over OGC API - Features, ready to classify by a field; tiled GeoParquet keeps its\ntiles. A portal opens either as it draws it, or editable - every layer from its own data with\nthe portal's styling painted on - so a portal's layers restyle exactly like single ones.\nKNOWN LIMITATION: a layer's 3D extrusion is carried safely (opening one and pushing it back\ndoes not remove it) but is NOT yet drawn in QGIS's 3D view, so 3D cannot be edited here.\n0.2.1 - A polygon's outline WIDTH now travels, which was the one property that could\nnot: GeoDeploy draws a fill's edge as a real line layer now, so the number means something.\n0.2.0 - First public release. Browse a GeoDeploy instance (no account needed for public\ndata), add a layer using the fastest source it offers, open a whole portal as a styled QGIS\ngroup, and upload back - including multi-gigabyte files. Styling travels BOTH WAYS for every\nlayer type: single symbol, graduated and categorized vectors; colormap, stretch, band, hillshade,\ncontours and colour-per-value rasters; 3D extrusion for polygons and points; size-from-a-field;\nmarker shape and stroke. A layer opens looking like the portal, and what you change goes home.\nWhich renderer QGIS offers depends on the SOURCE, so a per-layer Source picker and a\n\"Restyle this layer...\" button get you onto the surface that can actually be restyled. A PostGIS\nlayer opens over OGC API - Features, ready to classify by a field; tiled GeoParquet keeps its\ntiles. A portal opens either as it draws it, or editable - every layer from its own data with\nthe portal's styling painted on - so a portal's layers restyle exactly like single ones.\n0.1.15 - A classified raster's stretch is no longer compared. GeoDeploy does not\napply a stretch to a colour-per-value palette - the classes are matched on raw pixel values, and\na stretch would change the very numbers they key on - so a stretch sitting beside one is not a\nvisible difference and must not report the layer as restyled.\n0.1.14 - Class LABELS now travel with a classified raster. \"Water\" and \"Trees\" are\nthe whole point of a classification, and the reader only carried the value and the colour - so\npushing a land-cover raster back from QGIS replaced its classes with unlabelled ones and every\nlegend fell back to bare numbers. A class QGIS labelled with its own value still counts as\nunlabelled, so a raster whose classes were never named does not report as edited.\n0.1.13 - Raster symbology is editable, 3D extrusion travels both ways, and contour\nlines round-trip. Why a raster offered nothing to change: QGIS picks its renderer from the layer\nTYPE, and server-rendered tiles arrive as one band of RGBA - \"Singleband color data\", no bands,\nno classes. Vector tiles are the same shape of limit: no categorized or graduated renderer at\nall. Opening the data instead used to cost you GeoDeploy's colours; now the GeoTIFF opens WITH\nits colormap, stretch, band and classification applied, so you can classify it and send it back.\nA per-layer Source picker replaces the old global checkbox, and a new \"Restyle this layer...\"\nbutton reopens whatever is selected from its data, in place, keeping the styling it has. For a\nportal's raster that styling is read out of the portal's own tile URL, so you restyle what the\nportal shows rather than the layer's default. 3D EXTRUSION now applies and reads back for\npolygons and points - heights from a field, fixed heights, bases, colours, and a point pillar's\nfootprint - and what QGIS cannot express is preserved rather than flattened by the next push.\nContour styling is carried the same way. Nothing is slower: the default source is unchanged.\n0.1.12 - Rasters can finally be restyled, and every symbol property now travels. A\nraster's real bands come from its GeoTIFF, and that file was refused unless the layer was shared\npublicly - so for a private raster there was no way to restyle it at all. It is now readable by\nanyone who may see the layer, and the plugin gives GDAL the token (scoped to your instance) so\n/vsicurl/ can use it. Tick \"Prefer the real data over the styled view\", restyle, then \"Save\nstyling to GeoDeploy\". Marker outline WIDTH and shape, and size-by-field, are now applied and read\nback like everything else, and a push no longer deletes styling QGIS cannot draw (3D extrusion,\nimported paint, popup fields) - it updates what it understands and leaves the rest.\n0.1.11 - Change detection is right in both directions. Changing only a symbol's STROKE\n(or its marker shape) is now noticed - before, only the fill was read, so a stroke-only edit came\nback byte-identical and reported \"unchanged\". And opening a portal and pushing it straight back no\nlonger reports every layer as restyled: a style read out of QGIS is always complete while a stored\none holds only what you chose, so the two are now compared through the same defaults. A raster\ndrawn from server tiles still cannot be restyled in QGIS - the checkbox that opens the real\nGeoTIFF now says so on its label, and the explanation is logged as information rather than as\nthree warnings that look like failures.\n0.1.10 - Restyling a POINT layer and pushing it back now registers. QGIS's vector-tile\nsymbology editor keeps one style per geometry type - polygons, lines, points - and the plugin read\nthe first of them, so a changed marker came back as the untouched polygon colour: identical to the\nold style, so \"Push group to portal\" saw no change and \"Save styling to GeoDeploy\" appeared to do\nnothing. The layer's geometry is now recorded when it is added and used to pick the right one.\n0.1.9 - \"Open in GeoDeploy\" now opens a PORTAL in the editor rather than repeating what\n\"Open portal in browser\" already does, and the actions that need a token (push a group, upload,\nsave styling, edit a portal) are disabled with the reason in their tooltip until you connect with\none. A public layer's page opens for anyone, with the map, the extent and the share links, and\nwithout any of the buttons that would need an account.\n0.1.8 - Restyling a layer inside a portal group and pushing it back now works. A portal's\nlayers open as TILES, and QGIS renders those through a different renderer than a normal vector\nlayer - so the styling was read from the wrong place and nothing was sent. It is now read back\nproperly, classes and all. A raster opened from portal tiles has no bands to restyle (\"Singleband\ncolor data\"), so its portal styling is now LEFT ALONE instead of being replaced with nothing -\nwhich used to wipe the colormap. To restyle a raster, tick \"Prefer the real data over the styled\nview\", restyle that, and use \"Save styling to GeoDeploy\". Also fixes marker size and line width\nchanging slightly every time a layer was pushed back.\n0.1.7 - New \"Open in GeoDeploy\" button: opens the selected layer's page on the instance\nin your browser - map, metadata, fields, extent and every share link. Works without an account\nfor a public layer; a private one asks you to sign in there.\n0.1.6 - A portal now opens the same way whether or not you are signed in. The API's portal\ndocument does not carry a layer's source, geometry or name - only the published style does - so\nevery fix in 0.1.5 covered the signed-out path alone: with a token, rasters still opened in the\nlayer's default colours and 3D layers were drawn from the wrong tiles. The two are now merged.\n0.1.5 - Fixes layers drawn with the wrong kind of symbol. A vector-tile style is bound to\nONE geometry type, and the plugin was falling back to \"point\" whenever it could not tell - so\npolygons and lines arrived as a dot at every vertex, or did not draw at all. The geometry is now\nread from the portal's own published style (and from how the layer is DRAWN, so 3D layers work\ntoo); where it is genuinely unknown, every geometry type gets a symbol instead of one being\nguessed. A portal's own tiles are also no longer swapped for the layer's when the two differ.\n0.1.4 - Opening a portal is much faster and looks like the portal. Layers are styled\nbefore they join the map instead of after (one redraw each, not two), the canvas is frozen while\na group is assembled (one redraw for the whole portal, not one per layer), and the documents\nthat describe a layer are fetched once and reused - in the background thread, not between\nlayers. A portal opened WITHOUT an account now uses the portal's own colours, width, outline and\ntransparency rather than each layer's default style, and no longer loses a layer when a vector\nand a raster share an id. Polygons are drawn at the map's 0.45 fill opacity, lines at its default width.\n0.1.3 - A raster opened as part of a portal is drawn the way THAT portal draws it, not\nin the layer's default style - the portal bakes its colormap, stretch and hillshade into its own\ntile URL, and the same raster can look different in two portals. Layer opacity now travels in as\nwell as out, so a half-transparent overlay opens half-transparent.\n0.1.2 - Points are drawn at the size and colour the map draws them. A layer whose style\nnames a colour but no radius kept QGIS's default marker number under our points unit - a third\nof the intended size - under QGIS's dark default outline, so styled point layers arrived as\ntiny black dots. They now take the portal's own defaults: radius 5, white 1px stroke.\n0.1.1 - Vector layers are added through their TileJSON, so QGIS asks only for tiles that\nexist: no more requests past the deepest real zoom, and \"Zoom to layer\" lands on the layer. A\nPMTiles archive is no longer opened whole (GDAL reads every tile at the deepest zoom to answer\na feature count). Vector-tile layers now carry the layer's real symbology - graduated and\ncategorized classes, not just a base colour. Portal groups show the portal's title.\n0.1.0 - First release: browse an instance (public data without an account), add vector and\nraster layers, upload the active layer.", "external_deps": "", "download_url": "https://plugins.qgis.org/plugins/geodeploy_qgis/version/0.7.0/download/"}