Skip to content

Integrate pending E57, photo, release and managed-session improvements - #53

Open
boazeggs wants to merge 60 commits into
OpenAEC-Foundation:mainfrom
boazeggs:codex/integrate-open-prs
Open

boazeggs wants to merge 60 commits into
OpenAEC-Foundation:mainfrom
boazeggs:codex/integrate-open-prs

Conversation

@boazeggs

@boazeggs boazeggs commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

Combine the pending release, E57, photo and managed-session improvements while preserving the current native Rust application. All 15 open PR heads are retained as ancestors, with conflicts resolved in release signing, cumulative API revision 15 and Dutch translations.

PRs Included work
#7, #17, #19, #26, #40, #46 Archived Classic rebrand, existing CAD/photo behavior retained in native, manual link, OpenAEC Installer signatures and competitor research
#54 Synchronized native/Classic/installer versions and version checks
#55 Validation on measured indoor TLS and SLAM data
#56 Mandatory platform signatures before release publication and current published-artifact evidence
#57 Private feedback and explicit status-bar MCP access control
#58 Managed native SuperCloud sessions and authenticated desktop MCP over HTTP
#59 Lossless raw E57 attributes when recolouring, preserving scanner images and poses
#60 Calibrated photographic mesh atlases and native UV texture preview
#61 Independent calibrated station-photo tabs and restored model/photo cameras

The integration also fixes a cross-PR regression: pausing external MCP must not make a healthy managed GUI appear crashed. The native GUI now supplies a heartbeat; /gui-health and authenticated /gezond use it independently of the MCP checkbox. Commands stay refused while paused, and stale/exited GUIs become unhealthy. A real GUI smoke mode and both Linux package checks cover this combination.

Validation of the combined source passes:

  • Full Rust workspace: 1,424 passed, 0 failed, 12 intentionally ignored. Includes 754 native, 582 core, 42 service, 21 shared UI and 19 SDK ABI tests, plus integration/cache/example tests.
  • Workspace Clippy with all targets and warnings denied; core Clippy without default features; complete workspace build; Rust formatting and duplicate-translation checks.
  • Version checks, five Classic-version tests, three publication-signature tests covering every signature combination, all packaging-script tests and workflow YAML parsing.
  • Fresh locked Classic installation and TypeScript/Vite production build.
  • Real Wayland/software-Vulkan GUI: 167 MCP tools, 1,000-point open/save, 401/403 rejection, SIGTERM exit 0 and unhealthy after exit. Paused MCP remains refused while the live GUI health stays 200.
  • Integrated photographic atlas: 57,237 changed preview pixels, 10,153 calibrated checkerboard texels, independent OBJ/UV/material reload, and real 1,095,702-point static E57 with 45,335 photographed texels. Cancellation leaves no partial files; source data remains unchanged.
  • Real BLK2GO station-photo tab: decoded panorama visually checked, both camera restorations and retained scan pass, unchanged E57 SHA-256.

Each source feature also carries its versioned real-data validation. Combined test details are recorded in the validation comment below; cross-platform CI and package checks run on this same integration commit.

Merge with a merge commit to preserve every included PR's history (GitHub indirect merges). Review the complete current integration diff; the normal code-owner approval remains required.

Closes #34. Closes #42.

Refs #13, #16, #32, #33, #39, #41 and #52. These remain open for the outstanding point-colour resampling, general pane/window layouts, broader product requirements, deployed/client acceptance and release follow-up. Native SuperCloud route B is implemented; the retired Classic browser prototype is not revived. The related signed-download correction is separately reviewed in website PR #61.

DutchSailor and others added 29 commits May 22, 2026 09:37
Combines two tracks into one v0.4.0 release:
- Spoor B: replace in-memory pipeline with COPC streaming + CCCoreLib FFI kernel
- Spoor A: full adoption of @openaec/ui design tokens and components

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
First of five plans derived from the v0.4.0 design spec. This plan handles
only the UI rebrand: install @openaec/ui from GitHub, rename --theme-* to
--oaec-* throughout, remove the multi-theme switcher, single dark theme.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Create src/styles/openaec-overrides.css with composite canvas-grid and ribbon-gradient tokens
- Import openaec-overrides.css between components.css and globals.css in main.tsx
- Strip all four multi-theme blocks from globals.css; replace with single [data-theme="light"] block using --oaec-* tokens
- Update @theme block RHS from --theme-* to --oaec-*
- Rename all remaining --theme-* references in utility sections to --oaec-* equivalents
- Replace hardcoded hex brand colours (#1d4ed8, #2563eb, #fff) with --oaec-accent / --oaec-accent-hover / --oaec-accent-text

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Remove the unscoped 'Input controls - Dark theme' block (~63 lines) from
Ribbon.css — .ribbon-input-group, .ribbon-input-label, .ribbon-color-input,
and the unscoped .ribbon-input/.ribbon-input-row rules were dead code
overridden by the scoped .ribbon-transform-inputs block. Clean stale hex
fallbacks from that scoped block (var(--oaec-bg-input, #0f172a) →
var(--oaec-bg-input), etc.). Update ErrorBoundary inline styles in main.tsx
to match the OpenAEC palette (#1a1a2e→#36363E, #ff6b6b/#ffa07a→#f87171,
#4a90d9→#D97706, #888→rgba(250,250,249,0.6)).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…stem

Plan 1 of 5 toward v0.4.0. Replaces multi-theme styling (--theme-*) with
@openaec/ui tokens (--oaec-*), removes the theme switcher UI and state,
adopts the OpenAEC dark palette with orange accent as the single theme.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds the missing orange File tab as leftmost ribbon-tab (matches the OpenAEC
standard from open-2d-studio); for v1 it triggers the Import handler. Overrides
five tokens in openaec-overrides.css to match the canonical style-book values
(@openaec/ui v0.1.0 is out of sync upstream): panels darker not lighter, borders
neutral grey not orange-tinted, secondary/muted text as warm neutrals.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…rt/Export/About)

Implements the OpenAEC-standard backstage pattern from open-2d-studio. The
orange File tab in the ribbon now opens a full-viewport overlay with a sidebar
(Open / Import / Export / About) and a main content panel per active view.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
After the Authenticode and OpenPGP signing, sign-updates.sh writes a
minisign .sig beside the Windows setup and each AppImage with the
repository's updater key, and the .sig files go on the release. Once the
release is public, a last job makes latest.json with the release kit of
the installer: it checks every signature against UPDATER_PUBKEY and the
tag against native/Cargo.toml, and attaches latest.json last. The OpenAEC
Installer then checks the signature before a silent update
(OpenAEC-Foundation/OpenAEC-Blueprint#33).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@boazeggs
boazeggs marked this pull request as ready for review November 5, 2026 20:38
@boazeggs
boazeggs marked this pull request as draft November 6, 2026 00:25
@boazeggs boazeggs changed the title Integrate six pending PRs without reverting the current native app Integrate pending E57, photo, release and managed-session improvements Nov 6, 2026
@boazeggs

boazeggs commented Nov 6, 2026

Copy link
Copy Markdown
Contributor Author

Combined validation passed on integration commit e568b4ede69f8ad46a7f5bba9f343cc82850934e (6 November 2026). All 15 PR heads listed in the description are ancestors of this commit; upstream main is included.

  • Full Rust workspace: 1,424 passed, 0 failed, 12 ignored. Native 754, core 582, service 42, UI 21, SDK ABI 19, plus six integration/cache/example tests.
  • Workspace all-target Clippy with -D warnings, core all-target Clippy without default features, complete workspace build and formatting all pass.
  • Version synchronization, five Classic-version tests, three signature-gate tests covering every signature combination, all packaging-script tests and workflow YAML parsing pass. The merged Dutch translation file has no duplicate keys.
  • Fresh npm ci of the archived Classic package and TypeScript/Vite production build pass.

Real GUI validation used an isolated headless labwc/pixman Wayland compositor and Mesa lavapipe Vulkan. Each probe used private settings/cache directories and cleaned up only its own processes; no credentials are recorded.

Probe Result
Managed session 167 tools; 1,000-point open and PLY save; incorrect/missing authentication 401; browser Origin 403; SIGTERM exit 0; health 503 after exit
MCP checkbox persisted off Tool call refused as paused; authenticated GUI health remains 200; after exit it becomes 503
Photographic atlas 10,153 photographed checkerboard texels; 57,237 changed viewport pixels; independent trimesh 5.2.0 OBJ/UV/material reload; source panorama unchanged
Real static E57 atlas 1,095,702 points; 300 vertices / 890 triangles; 45,335 photographed texels, four photographs, zero failed images, 194,293 explicitly unobserved texels; cancellation leaves no partial outputs
Real BLK2GO station tab Decoded photograph and separate active tab visually inspected; model and photo cameras restored; closing retains the scan; source SHA-256 unchanged

The static source (manitouNoInvalidPoints.e57, locally named manitou.e57) retains SHA-256 d4f06e2a80e3e54be7391130b911c82af0c6a7857cec133177431f5f578f23cf. The BLK2GO section retains 21b15d28bd44d66a337da20adea0e86f8858cb09dbe90acc4fc9aab00027c8a5.

Native idle RSS was 255,592 KiB (~250 MiB) in this development/software-renderer run; this is the app process, not a deployed container benchmark. The coarse real-E57 surface is a functional atlas/cancellation fixture, not a reconstruction-quality claim.

Reproduction scripts are native/validation/managed/smoke.py (ordinary mode and --paused-access), native/validation/photo-textures/smoke.py, native/validation/station-photo-tabs/smoke.py and native/packaging/managed-wayland-smoke.sh. Both normal and paused managed modes are also wired into Linux package validation. Cross-platform CI/package results remain attached to this commit in the PR checks.

@boazeggs

boazeggs commented Nov 6, 2026

Copy link
Copy Markdown
Contributor Author

Aanvullende echte reader-validatie heeft twee E57-vervolgfouten gevonden en opgelost in #64: verlies van de schaal van intensiteitsgrenzen en gewijzigde sensorrastergrenzen, die de interpretatie in externe readers veranderden. #64 bevat deze integratie als voorouder en moet met de E57-acceptatie worden meegenomen.

De bestaande head van deze PR blijft ongewijzigd. De vervolgfix is lokaal volledig gecontroleerd: 1.486 workspace-tests geslaagd, geen fouten, plus daadwerkelijke voor/na-controles van de BLK2GO-sectie en de volledige Riegl-scan met pye57, PDAL en CloudCompare. Zie #64 voor het reproduceerbare bewijs en de precieze readerbeperkingen.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

E57: foto's en panorama's meeschrijven bij export (statische scanners en SLAM) Versienummer gelijktrekken naar jaar.week (2026.43.x)

3 participants