Skip to content

feat: huntronomer workbench v1.0-v10.0 — IDE + 3D observatory analyst toolkit#218

Merged
bb-connor merged 249 commits intomainfrom
feature/huntronomer-workbench
Mar 25, 2026
Merged

feat: huntronomer workbench v1.0-v10.0 — IDE + 3D observatory analyst toolkit#218
bb-connor merged 249 commits intomainfrom
feature/huntronomer-workbench

Conversation

@bb-connor
Copy link
Copy Markdown
Collaborator

@bb-connor bb-connor commented Mar 23, 2026

Summary

  • v1.0 IDE Pivot — activity bar, binary tree pane system, 11 Zustand stores, 50+ command palette
  • v2.0 Huntronomer Integration — spirit + observatory stores, R3F infrastructure, nexus hunt deck
  • v3.0 Spirit & Observatory Evolution — mood reactivity, GLB hero props, XP evolution, probe missions
  • v4.0 AAA Observatory Experience — post-processing, camera cinematics, particle effects, NPC crews
  • v5.0 Observatory Analyst Experience — explainability, guided probes, replay intelligence, hunt weather
  • v6.0 Observatory Space Flight — velocity flight controller, docking, star chart, station discovery
  • v7.0 Observatory Production HUD — glassmorphism status strip, left drawer, panel registry
  • v8.0 Observatory Visual Polish — drawer chrome, empty states, scene polish
  • v9.0 Observatory 3D World Polish — ghost traces, mission beacons, analyst preset overlays, weather layer
  • v10.0 Observatory Analyst Toolkit — threat heatmap (GLSL), probe delta cards, constellation routes, spirit trails, replay annotation pins, station interiors

v10.0 Highlights (this milestone)

  • Threat topology heatmap — first custom GLSL ShaderMaterial, SOC 6-stop color ramp, weatherBudget gated, THREAT preset 1.5x intensification
  • Probe delta cards — floating glassmorphism DOM cards post-probe showing pressure shift, explanation, clickable next action, 8s auto-dismiss
  • Constellation routes — completed missions permanently traced as CatmullRom curves in starfield, localStorage persisted, minimap tooltip
  • Spirit resonance trails — 150-point polyline buffer with mood/XP scaling, 3 hidden dashed connections at level 5
  • Replay annotation pins — 3D diamond markers with text notes, Replay drawer list, jump-to-frame + camera focus, localStorage v2
  • Station interior zones — 6 unique procedural rooms with NPCs, hero prop interaction, 1.2s camera push, ExteriorDimmer opacity fade

Stats

  • 10 milestones, 43 phases, 100+ plans
  • 738 files changed, +127,870 / -20,973 LOC
  • 370+ tests across 53+ test files
  • 33 v10.0 requirements — all satisfied and verified

Test plan

  • All 30 runnable observatory tests pass (6 pre-existing @/ alias failures unrelated)
  • TypeScript compiles (2 pre-existing drei type mismatches, no new errors)
  • v10.0 milestone audit passed (33/33 requirements, 7/7 E2E flows)
  • Code review: 11 issues identified and fixed (memory leaks, perf, type safety)
  • Manual: verify heatmap renders SOC gradient below stations
  • Manual: verify probe delta card appears and auto-dismisses
  • Manual: verify constellation traced after mission completion
  • Manual: verify spirit trails follow navigation at level 5
  • Manual: verify annotation pins persist across tab reload
  • Manual: verify station interior camera push is seamless

🤖 Generated with Claude Code


Note

Medium Risk
Medium risk: changes touch the Rust search_in_project result shape/offset calculations and add new build-time chunking rules that can affect runtime loading and search UX, plus CI security-audit ignore list adjustments.

Overview
Workbench gains a Playwright E2E suite with a browser-only seeding bridge (seedWorkbench) that stubs file I/O and search_in_project, plus new flow tests covering explorer actions, search reveal targeting (including unicode/whole-word and truncated preview handling), settings navigation, and observatory route smoke.

Global project search output is extended and corrected in apps/workbench/src-tauri/src/commands/workbench.rs: search matches now include both preview-truncated offsets (match_start/match_end) and full-source offsets (source_match_start/source_match_end), regex compilation is refactored via build_search_regex, line truncation is made multibyte-safe, and new tests assert unicode case-insensitive offsets, .git skipping, and truncation behavior.

Build output chunking is hardened for the new 3D stack via build/workbench-chunking.ts (wired into vite.config.ts): introduces manual vendor chunk groups (three/r3f/physics/ui/etc.) and filters module preloads to keep vendor-physics off the eager ObservatoryWorldCanvas -> ObservatoryFlowRuntimeScene edge; adds a build artifact smoke test to validate the bundle graph.

CI updates consolidate docs dependencies install, add new RustSec ignore entries for aws-lc-rs advisories, adjust OpenClaw runtime summary assertions, and remove unused matrix flags in agent integration jobs.

Written by Cursor Bugbot for commit 08eac5a. This will update automatically on new commits. Configure here.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c6edc8c696

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@bb-connor
Copy link
Copy Markdown
Collaborator Author

@codex

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0b4f57d88d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@bb-connor
Copy link
Copy Markdown
Collaborator Author

@codex

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

const aesKey = await crypto.subtle.deriveKey(
{ name: "PBKDF2", salt: buf(salt), iterations: 600_000, hash: "SHA-256" },
passphraseKey,

P1 Badge Pass typed arrays directly to PBKDF2/AES WebCrypto calls

exportKey() wraps salt/iv with buf(...) before passing them to crypto.subtle.deriveKey() and encrypt(), and importKey() repeats the same pattern. In stricter WebCrypto implementations (the current operator-crypto tests hit this), those calls throw TypeError, so the Identity Settings export/import path never succeeds.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@bb-connor
Copy link
Copy Markdown
Collaborator Author

@codex

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 310fb17aa7

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@bb-connor
Copy link
Copy Markdown
Collaborator Author

@codex

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 00b0638a2b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@bb-connor
Copy link
Copy Markdown
Collaborator Author

@codex

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

const visibleItems = useMemo(() => {
if (!project) return [];
return flattenTree(filteredFiles, project.expandedDirs);

P2 Badge Bypass collapsed-state gating while filtering the explorer

When a text or format filter is active, the code still flattens the filtered tree with project.expandedDirs. That leaves matches under collapsed folders hidden, so filtering can show only ancestor directories—or appear empty—until the user manually expands every parent. For large projects this makes the new explorer filter much less usable than intended.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@bb-connor
Copy link
Copy Markdown
Collaborator Author

@codex

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b48d6898e8

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@bb-connor
Copy link
Copy Markdown
Collaborator Author

@codex

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1d8165afd0

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@bb-connor
Copy link
Copy Markdown
Collaborator Author

@codex

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

let (sig_valid, sig_reason) = if let Some(signed_receipt) = &r.signed_receipt {
let (json_sig_valid, json_sig_reason) =
verify_signed_receipt_signature(&r.public_key, &r.signature, signed_receipt);
if json_sig_valid == Some(true) {
(

P1 Badge Reject mismatched embedded receipts during signature checks

When a signed_receipt is present, the code accepts json_sig_valid == Some(true) without verifying that the embedded receipt payload matches the top-level id/timestamp/verdict/guard/policy_name fields that are later hashed for chain integrity. This lets a caller pair a valid signature over unrelated embedded receipt data with forged top-level fields, and the entry can still be marked signature-valid and contribute to an apparently intact chain. Compare embedded receipt fields against the top-level chain record before treating canonical-JSON verification as a pass.


receipts.sort_by(|a, b| a.timestamp.cmp(&b.timestamp));

P1 Badge Validate timestamp order before normalizing receipt order

Sorting receipts before chronology checks makes timestamps_ordered effectively always true for sortable timestamps and also makes the computed chain_hash insensitive to input reordering. In practice, a reordered chain can still pass as intact as long as signatures verify, which defeats the stated timestamp-order integrity check. Perform ordering validation on the original input sequence (or fail unsorted input) before any normalization.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@bb-connor bb-connor force-pushed the feature/huntronomer-workbench branch from af37974 to 4bbd28f Compare March 24, 2026 22:39
@bb-connor
Copy link
Copy Markdown
Collaborator Author

@codex

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4bbd28f449

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@bb-connor
Copy link
Copy Markdown
Collaborator Author

@codex

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7498c6b522

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@bb-connor
Copy link
Copy Markdown
Collaborator Author

@codex

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a4c37746b4

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@bb-connor
Copy link
Copy Markdown
Collaborator Author

@codex

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: bfdb22f5e9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@bb-connor
Copy link
Copy Markdown
Collaborator Author

@codex

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: da071d360f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@bb-connor
Copy link
Copy Markdown
Collaborator Author

@codex

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a568a7ef84

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copy link
Copy Markdown

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

@bb-connor bb-connor merged commit 11f71e1 into main Mar 25, 2026
45 of 46 checks passed
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.

2 participants