Skip to content

feat(aspire): enable browser-logs devtools integration by default + streams HTTP/2 caveat (#218)#231

Merged
rickylabs merged 1 commit into
mainfrom
feat/aspire-browser-logs-default
Jul 2, 2026
Merged

feat(aspire): enable browser-logs devtools integration by default + streams HTTP/2 caveat (#218)#231
rickylabs merged 1 commit into
mainfrom
feat/aspire-browser-logs-default

Conversation

@rickylabs

Copy link
Copy Markdown
Owner

Summary

Enables Aspire browser logs for generated TypeScript AppHosts by default so generated Fresh/Vite app resources can forward browser console output into the Aspire dashboard. Also documents the local HTTP/1.1 concurrent-connection caveat for durable-stream HTTP/SSE consumers.

This intentionally builds on the merged #222 AppHost generator state: generate-aspire-config.ts and the register helpers keep the isolated-port OTLP exporter behavior, including withOtlpExporter({ protocol: OtlpProtocol.HttpProtobuf }) and the OtlpProtocol import.

Scope

  • Archetype / area: Archetype 6 CLI/tooling, area: aspire/docs
  • Adds Aspire.Hosting.Browsers to generated TypeScript AppHost aspire.config.json.
  • Emits withBrowserLogs() for generated Type: 'app' resources after HTTP endpoint binding.
  • Adds generator tests for the browser logs package and app-resource call.
  • Adds a streams docs warning about local HTTP/1.1 per-origin connection limits and HTTPS/HTTP2.

Slices

  • S1 browser logs AppHost generation — 3dfbbb5d
  • S2 streams HTTP/2 caveat — 3dfbbb5d

Validation

  • aspire docs get browser-logs — confirmed TypeScript API .withBrowserLogs() and package Aspire.Hosting.Browsers.
  • aspire integration search browsers --format Json — confirmed Aspire.Hosting.Browsers version 13.4.6-preview.1.26319.6.
  • PLAN-EVAL — first pass FAIL_PLAN for gate specificity; updated plan; rerun PASS.
  • deno test --allow-all packages/cli/src/kernel/templates/aspire/helpers/tests/ — PASS, 13 passed / 123 steps.
  • deno test --allow-all packages/cli/src/kernel/templates/aspire/generate-aspire-config_test.ts packages/cli/src/kernel/templates/aspire/helpers/tests/generators-background-app_test.ts — PASS.
  • deno run --allow-read --allow-run .llm/tools/run-deno-check.ts --root packages/cli/src/kernel/templates/aspire --ext ts,tsx — PASS.
  • rtk proxy deno task check — PASS, 1885 files / 16 batches.
  • deno lint --no-config <5 touched CLI files> — PASS. Repo config-backed lint/fmt target selection excludes packages/cli; recorded in run drift.
  • deno task check:assets-barrel — PASS.
  • Focused scaffold: deno run -A packages/cli/bin/netscript-dev.ts init browser-logs-smoke --path .llm/tmp/run/aspire-browser-logs-default--218/scaffold --db none --ci --yes --no-git --force — PASS.
  • Generated AppHost: aspire restore then deno check --unstable-kv --sloppy-imports apphost.mts .helpers/register-apps.mts — PASS.
  • Generated AppHost: npx tsc --noEmit --project tsconfig.apphost.json — PASS.
  • Docs: from docs/site, deno task build && deno task check:links && deno task check:caveats — PASS.

Harness

  • Run dir: .llm/tmp/run/aspire-browser-logs-default--218/
  • Phase: impl

Drift / Debt

  • Drift recorded locally: repo config-backed lint/fmt target selection excludes packages/cli and docs Markdown; no source debt introduced.
  • Debt: none.

Closes #218

@augmentcode

augmentcode Bot commented Jul 2, 2026

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary: Enables Aspire browser console log forwarding for generated TypeScript AppHosts by default and documents a local HTTP/1.1 concurrency caveat for SSE streams.

Changes:

  • Adds Aspire.Hosting.Browsers to generated TypeScript AppHost aspire.config.json packages
  • Emits .withBrowserLogs() for generated Type: 'app' resources after .withHttpEndpoint()
  • Adds generator tests covering the new package pin and helper emission
  • Updates Streams docs with a warning about per-origin HTTP/1.1 connection limits and recommending HTTPS/HTTP/2 for many SSE consumers

Technical Notes: The browser logs integration is pinned to 13.4.6-preview.1.26319.6 to match the current Aspire TypeScript surface.

🤖 Was this summary useful? React with 👍 or 👎

@augmentcode augmentcode Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Review completed. No suggestions at this time.

Comment augment review to trigger a new review at any time.

@rickylabs
rickylabs merged commit e00b5a0 into main Jul 2, 2026
6 checks passed
@rickylabs
rickylabs deleted the feat/aspire-browser-logs-default branch July 2, 2026 06:28
rickylabs added a commit that referenced this pull request Jul 2, 2026
…eature sweep (#233)

Storefront tutorial D-01…D-05 conformance to the shipped #206#231 surface,
plus accuracy reconciliation on the fresh-ui/web-layer pages the sweep touched.

D-01 (01-scaffold): Aspire dashboard URL is https; fileTree includes
  database/ and tests/.
D-02 (02-catalog-service): real #208 CRUD surface — createCrudContract +
  @database/zod + context.db; errors thrown via the contract's typed
  errors.NOT_FOUND (no hand-rolled notFound import); router nests health
  under products (no invented health-router import).
D-03 (03-cart-contracts): register in mod.ts, PascalCase CartContractV1,
  import from @my-shop/contracts and the ./versions/v1 subpath. Reconciled
  02's products.contract.ts exports to the same PascalCase convention
  (ProductsContract/ProductsContractV1) so ch2↔ch3 imports agree.
D-04 (04/05): public `netscript plugin install saga|trigger --name … --samples`.

Feature recon to the sweep: DataTable→DataGrid (#209/#225), Icon primitive
(#211/#224) and DataGrid in fresh-ui root exports, Dropzone/prompt-input
mentions (#214/#229, #212/#226), managed <Form> class + <form> attrs
(#213/#228), useIslandMutation onMutate/onSettled (#210/#227).

Docs-only. build + check:links + check:caveats green. Refs #153.


Claude-Session: https://claude.ai/code/session_012wKHquACkXnWPDgJYhhFjN

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
rickylabs added a commit that referenced this pull request Jul 3, 2026
…rences, HTTP/2 opt-in, browser logs (#296)

* docs(aspire): document AppHost restart/regen model, pluginReferences/dependsOn, HTTP/2 opt-in, browser logs

Covers the #264 TypeScript AppHost DX gaps against shipped reality on main:
- Customizing-the-generated-AppHost section + restart/regen semantics table (#264-1)
- hand-edit-vs-regen escape-hatch callout (#264-2)
- native-driver --allow-ffi permission note (#264-3)
- reference-fields table now documents Services carrying pluginReferences + dependsOn (#264-4, #220)
- HTTP/2 opt-in via ServiceTlsOptions/ServeOptions.tls + NETSCRIPT_TLS_* env, with plaintext HTTP/1.1-is-default callout (#234)
- browser-logs-by-default + local-vs-deployed telemetry callout (#218/#231)
- ephemeral-ports (:0) sample fix; Footguns rule-list -> good/bad patterns
- next-steps cross-ref blocks on orchestration-runtime + observability hubs

Docs-only. deno task verify: build + check:links pass; check:caveats passes from worktree root.

Refs #232
Fixes #264
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012wKHquACkXnWPDgJYhhFjN

* chore(openhands): record run trace 28624920092-1

* docs(voice): 'genuinely small' -> 'deliberately small' in aspire explainer

Voice-rubric flatten (V1); folded here to keep aspire.md in a single PR.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012wKHquACkXnWPDgJYhhFjN

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: OpenHands Bot <openhands@all-hands.dev>
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.

devtools: enable Aspire browser-logs integration by default (capture island/browser console in the dashboard)

1 participant