Repository navigation
Release 0.11.0: sessions and sign-out, VLAN import, zones from the flows, a lighter 3D view - #68
Open
0b3l1X-SolidGeeks wants to merge 16 commits into
Open
0b3l1X-SolidGeeks wants to merge 16 commits into
0b3l1X-SolidGeeks wants to merge 16 commits into
Conversation
… everyone HTTP Basic is no longer accepted: browsers use the sign-in form, scripts use API tokens. Password changes, disabled and deleted accounts end the sessions of that account. Tests sign in through the form. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvKC5ZeSmwYQrWay8EM8mh
…movable Internet; Arrange VLANs on a grid - All / None per zone and for the whole IS in the plate list - Hide empty VLANs: plates without an asset leave the 3D model and the 2D diagram - A loading bar for requests that last, with progress for batches of writes - The Internet cloud can be dragged (Arrange plates in 3D, the 2D diagram); its place is saved on the IS - Arrange VLANs puts each zone on rows and columns (a set number per row, or automatic), the VLANs that talk side by side Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvKC5ZeSmwYQrWay8EM8mh
… and the zone of each A Strata export also brings the assets of the chosen VLANs and the flows between them. Zone headers of the VLAN list laid out with flex, so All / None never cover the first VLAN. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvKC5ZeSmwYQrWay8EM8mh
…e new plate tools - README section 1: measured server memory and CPU from an empty map to 30 000 assets, browser needs - docker-compose.yml: resource limits, commented out - README, docs, .env.example, CHANGELOG: the sign-in form, sessions, API tokens for scripts - A malformed Origin on the sign-in form is refused (403), not an error Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvKC5ZeSmwYQrWay8EM8mh
…, far fewer draw calls - Drawn only when something changes; shadows redrawn only when the model changes; a lower resolution while the view moves, sharp again when it stops; dots animated at 30 frames a second - Display › Graphics: Auto (Economy on a software renderer, or once moving the view is slow here), Quality, Economy (screen resolution, no shadows, no moving dots, fewer labels from afar); Animated flows on or off - Each equipment type merged into shared geometries; every flow of an IS in one geometry with per-vertex colour and opacity; moving dots instanced; click tubes on a layer never drawn; shared label textures; unreadable labels not drawn; placards in two draw calls - What the GPU held for a rebuilt model is freed - Lyon demo: 1 569 draw calls a frame before, 208 now (Quality), 173 (Economy) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvKC5ZeSmwYQrWay8EM8mh
The printed face of a plate's name sign sat half a millimetre in front of its box: on a GPU with a 24-bit depth buffer the two fought for every pixel from the usual viewing distance. The face now always wins the depth test (polygon offset). The view no longer drops below the screen's own resolution while it moves, where text shimmered. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvKC5ZeSmwYQrWay8EM8mh
- Module API (backward compatible): file.pick in the manifest, an optional preview(cfg, ctx)
that lists what a file holds, ctx.picks in run() with what people chose and the zone of each,
POST /api/connectors/{id}/preview, picks on POST /api/connectors/{id}/run
- The import window of such a module: tick, filter, choose a zone per item or for all the
ticked ones (a zone of the IS, one named by the file, or a new one); the result is a proposal
- modules/csv-vlans in the store: VLANs from a CSV (number, name, range, any order, header or
not), new ones ticked, those already in the IS updated when ticked
- MODULES.md, README, API reference, CHANGELOG; tests for the module and the manifest checks
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BvKC5ZeSmwYQrWay8EM8mh
Layout › Suggest zones: each VLAN on the floor of its distance from the Internet along the flows (exposed, reached from the exposed zone, back end), the VLANs the Internet never reaches below by the role of their assets (internal servers, users, industrial, network and administration), empty VLANs left where they are. Existing zones holding most of the same VLANs keep their name. A review window, top first: rename zones, move VLANs, then Apply (approvers) or Propose (contributors: a draft proposal). StrataAnalysis.suggestZones, with tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvKC5ZeSmwYQrWay8EM8mh
▴ in its corner: the IS name, the four key figures, back to the overview, sign out and the incident band stay; the controls move up with it. Remembered by the browser; fits a phone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvKC5ZeSmwYQrWay8EM8mh
The button was only in Layout, far down the controls; it is now next to Zones, contacts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvKC5ZeSmwYQrWay8EM8mh
One document was limited to 512 KB, and an IS holds all its flows (about 300 bytes each):
an IS of some 1 800 flows, imported through a proposal, could no longer be edited from the
interface ("This item is too large to save"). The limit is now MAX_DOC_MB, 8 MB by default.
Each change keeps the edited document before and after it, in the history file and in memory:
about a megabyte a change for such an IS. The history now also stops at HISTORY_MAX_MB (200 MB
by default), the oldest changes first.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BvKC5ZeSmwYQrWay8EM8mh
Each zone of the small model follows the rows and order saved by Arrange VLANs (or by plates placed by hand); a zone never arranged keeps one row up to 8 VLANs, then wraps into a grid. The assets of a plate wrap into lines, floors come closer past 5 zones, and the small models share their geometries. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvKC5ZeSmwYQrWay8EM8mh
"Build the IS" on the file import: zones from the security zones, VLANs from the layer-3 (sub-)interfaces outside the Internet zones (tag, subnet, comment), assets from the host address objects of private ranges (in the VLAN of their IP; the type from their name or description, else the ports opened to them, else a workstation when they only open connections) and the firewall itself, crossed by the flows that change VLAN; then the rules as flows. What the map has is kept and the same file again changes nothing. An import that draws nothing no longer opens an empty proposal. Tests for both; docs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvKC5ZeSmwYQrWay8EM8mh
It shared 9400-9489 with the sign-in and Muster tests, which run at the same time. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvKC5ZeSmwYQrWay8EM8mh
Version 0.11.0 in package.json, docker-compose.yml, the interface and the website; README section "New in v0.11" and roadmap row; CHANGELOG section dated; the documentation site covers sign-in and sign-out, Import VLANs, Arrange VLANs, Suggest zones, the Graphics setting, the folding title block and the CSV VLANs module. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvKC5ZeSmwYQrWay8EM8mh Signed-off-by: Claude <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvKC5ZeSmwYQrWay8EM8mh Signed-off-by: Claude <noreply@anthropic.com>
| if (sso.localLogin === 'admins' && own(users, name)?.role !== 'admin') return false; | ||
| const wait = Math.max(lockedFor('address', addr), name ? lockedFor('account', name) : 0); | ||
| if (wait) return { retryAfter: wait }; | ||
| const key = crypto.createHash('sha256').update(`${name}:${pass}`).digest('hex'); |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Strata 0.11.0. Full detail in the CHANGELOG section
[0.11.0] - 2026-11-08.Upgrading
SESSION_HOURS). Scripts must use an API token (Authorization: Bearer stk_…).Added
modules/csv-vlans, package indocs/modules).file.pickin the manifest, apreview()function,ctx.picksinrun.POST /api/connectors/{id}/preview.file.pickkeep working as before.docker-compose.yml.Changed / fixed
MAX_DOC_MB(8 MB by default).HISTORY_MAX_MB(200 MB by default).package.json,docker-compose.yml, the interface and the website. README, CHANGELOG and the documentation site updated.Tests
npm test: 109 passing.npm run test:e2e: 4 passing.strata:review-62747d2) was checked and approved by the maintainer before this PR.Generated by Claude Code