Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion bench/browser/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
"@moq/hang": "workspace:*",
"@moq/net": "workspace:*",
"@moq/publish": "workspace:*",
"@moq/signals": "workspace:*",
"@moq/watch": "workspace:*"
},
"devDependencies": {
Expand Down
7 changes: 0 additions & 7 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions demo/carla/web/src/input.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ export function takeoverState(measured: DriveState | undefined): DriveState {
}

/** Slew rates in normalized units per second. Heavy responses, with fast safety actions. */
export const RATES = {
const RATES = {
/** Steering: full lock takes ~2.2 s of held key. */
steer: 0.45,
/** Recentering (C) is a touch quicker than turning further. */
Expand All @@ -36,7 +36,7 @@ export const RATES = {
};

/** A gear change requires some brake and a released throttle. */
export const SHIFT_MAX_THROTTLE = 0.01;
const SHIFT_MAX_THROTTLE = 0.01;

/** Mirror the truck-side gear interlock so rejected shifts get immediate UI feedback. */
export function canShift(state: Pick<DriveState, "throttle" | "brake">): boolean {
Expand Down
13 changes: 6 additions & 7 deletions demo/carla/web/src/schemas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ function openEnum<const Value extends string>(values: readonly Value[]) {
}

/** Transmission gear, mirrored from the truck's `drive::Gear`. */
export const GearSchema = z.enum(["neutral", "forward", "reverse"]);
const GearSchema = z.enum(["neutral", "forward", "reverse"]);
export type Gear = z.infer<typeof GearSchema>;

/** The drive state the truck is currently honoring. */
export const DriveStateSchema = z.object({
const DriveStateSchema = z.object({
steering: z.number(),
throttle: z.number(),
brake: z.number(),
Expand All @@ -27,7 +27,7 @@ export type DriveState = z.infer<typeof DriveStateSchema>;
* +x, speed in m/s. Deliberately not latitude and longitude - see
* `demo/carla/sim/moq_carla_sim/roadmap.py`.
*/
export const PoseSchema = z.object({
const PoseSchema = z.object({
x: z.number(),
y: z.number(),
yaw: z.number(),
Expand All @@ -40,12 +40,11 @@ export type Pose = z.infer<typeof PoseSchema>;
* (longitudinal positive forward, lateral positive right) and yaw rate in
* deg/s.
*/
export const MotionSchema = z.object({
const MotionSchema = z.object({
yaw_rate: z.number(),
accel_lon: z.number(),
accel_lat: z.number(),
});
export type Motion = z.infer<typeof MotionSchema>;

/**
* The truck's most recent contact.
Expand All @@ -55,15 +54,15 @@ export type Motion = z.infer<typeof MotionSchema>;
* viewer who opens the page long after the impact ages it correctly instead of
* treating the retained snapshot as a fresh crash.
*/
export const CollisionSchema = z.object({
const CollisionSchema = z.object({
at: z.number(),
other: z.string(),
impulse: z.number(),
});
export type Collision = z.infer<typeof CollisionSchema>;

/** A camera receive/decode/render latency component echoed by the truck. */
export const LatencyEntrySchema = z.object({
const LatencyEntrySchema = z.object({
label: z.string(),
ms: z.number(),
});
Expand Down
20 changes: 10 additions & 10 deletions demo/carla/web/src/wheel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import { moveToward } from "./input.ts";
import type { DriveState } from "./schemas.ts";

/** How one physical axis maps onto a normalized control. */
export const AxisMapSchema = z.object({
const AxisMapSchema = z.object({
/** Index into `Gamepad.axes`. */
axis: z.number(),
/** Raw value at rest: wheel centered, pedal up. */
Expand All @@ -36,7 +36,7 @@ export const AxisMapSchema = z.object({
export type AxisMap = z.infer<typeof AxisMapSchema>;

/** A complete device layout: which axis/button drives which control. */
export const WheelProfileSchema = z.object({
const WheelProfileSchema = z.object({
steer: AxisMapSchema,
throttle: AxisMapSchema,
brake: AxisMapSchema,
Expand Down Expand Up @@ -77,22 +77,22 @@ export const WHEEL_RATES = {
};

/** Ignore rim wobble this close to center, and rescale so full lock still reaches 1. */
export const STEER_DEADZONE = 0.03;
const STEER_DEADZONE = 0.03;
/** Pedal travel below this reads as fully released... */
export const PEDAL_DEADZONE = 0.05;
const PEDAL_DEADZONE = 0.05;
/** ...and above this as fully applied, so worn pedals can still reach the stops. */
export const PEDAL_SATURATION = 0.95;
const PEDAL_SATURATION = 0.95;

/** Movement (in normalized units) that counts as the driver touching the wheel. */
export const MOVE_EPSILON = 0.02;
const MOVE_EPSILON = 0.02;

/**
* The wheel refuses to take over from the keyboard while the throttle is
* depressed, so a pedal resting under someone's foot can never be what hands
* control to the wheel. Applies to the handoff only; once armed, the pedal is
* honored normally.
*/
export const ARM_MAX_THROTTLE = 0.05;
const ARM_MAX_THROTTLE = 0.05;

/** A control that can be bound to a wheel button. */
export type WheelButton = "gearUp" | "gearDown" | "estop";
Expand Down Expand Up @@ -126,7 +126,7 @@ function clamp(v: number, lo: number, hi: number): number {
}

/** Normalize a raw axis into 0..1 of its calibrated travel (may over/undershoot). */
export function readAxis(axes: readonly number[], map: AxisMap): number {
function readAxis(axes: readonly number[], map: AxisMap): number {
const raw = axes[map.axis];
const span = map.full - map.rest;
if (raw === undefined || Math.abs(span) < 1e-6) return 0;
Expand Down Expand Up @@ -414,7 +414,7 @@ function loadProfile(id: string): WheelProfile | undefined {
}

/** Minimum axis travel that counts as "the driver moved this control". */
export const CAPTURE_THRESHOLD = 0.25;
const CAPTURE_THRESHOLD = 0.25;

/**
* Pick the axis that moved furthest from its resting value.
Expand Down Expand Up @@ -463,7 +463,7 @@ export interface CalibrationStep {
optional: boolean;
}

export const CALIBRATION_STEPS: readonly CalibrationStep[] = [
const CALIBRATION_STEPS: readonly CalibrationStep[] = [
{
key: "rest",
kind: "rest",
Expand Down
1 change: 0 additions & 1 deletion demo/web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
"highlight.js": "^11.12.0",
"open": "^11.0.4",
"rolldown": "^1.2.13",
"solid-element": "^1.9.2",
"solid-js": "^1.9.17",
"tailwindcss": "^4.1.13",
"typescript": "7.0.2",
Expand Down
3 changes: 1 addition & 2 deletions js/json/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@
},
"dependencies": {
"@moq/flate": "workspace:^",
"@moq/net": "workspace:^",
"@moq/signals": "workspace:^"
"@moq/net": "workspace:^"
},
"peerDependencies": {
"@zod/mini": "^4.5.0",
Expand Down
2 changes: 1 addition & 1 deletion js/net/src/ietf/max_age.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import { SetupOption, type SetupOptions } from "./setup_options.ts";

/** The negotiated max-age Setup Option. @internal */
export const MAX_AGE_OPTION = SetupOption.MaxAge;
const MAX_AGE_OPTION = SetupOption.MaxAge;
/** The subscriber max-age message parameter. @internal */
export const MAX_AGE_PARAMETER = 0x915c6n;

Expand Down
2 changes: 1 addition & 1 deletion js/net/src/ietf/request_stream.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import { TRACK_STATUS_ERROR_14 } from "./track.ts";
import { type IetfVersion, Version } from "./version.ts";

/** Whether the draft treats the requester finishing its messages as cancellation. */
export function finCancels(version: IetfVersion): boolean {
function finCancels(version: IetfVersion): boolean {
return (
version === Version.DRAFT_14 ||
version === Version.DRAFT_15 ||
Expand Down
2 changes: 1 addition & 1 deletion quest/m0/audit-lints.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ Scope is every language (decided 2026-10-20): clippy and rustc overrides,
`clippy.toml`, `biome-ignore`, `@ts-expect-error`, `noqa` and
`type: ignore`, Kotlin `@Suppress`, and the equivalents in Go, Swift, Dart,
and C/C++. `dead_code` and `unused` suppressions belong to the [dead code
audit](/quest/m1/audit-dead-code.md); skip them here. Generated or vendored
audit](/quest/m2/audit-dead-code.md); skip them here. Generated or vendored
bindings (`moq-nvenc`, `moq-v4l/src/sys`, `moq-rtmp/src/rml`, and the
untracked UniFFI output) keep their blanket allows unless the generator can
emit clean code.
Expand Down
2 changes: 1 addition & 1 deletion quest/m0/audit-simplify.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ follow-up through `/quest-plan`.

Narrowing a feature or reshaping an API is the maintainer's call, so those
are proposals with a recommendation, filed as follow-ups. Unlike the [dead
code audit](/quest/m1/audit-dead-code.md), this targets code that is used but
code audit](/quest/m2/audit-dead-code.md), this targets code that is used but
overbuilt.

Starting points (2026-10-19): look for one concept implemented twice (across
Expand Down
1 change: 0 additions & 1 deletion quest/m1/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,6 @@ lite-07 stream type here.
- [Allocation-free single-range subscriber window](/quest/m1/window-alloc.md) - a one-range subscribe resolves its window without a heap allocation, recovering the join cost per-subscriber ranges added
- [moq-net internals](/quest/m1/net-internals.md) - no per-group session clones, no transport type parameter in lite and IETF internals, and the `Local` check measured
- [Subscribe update churn](/quest/m1/subscribe-update-churn.md) - a viewer sends SUBSCRIBE_UPDATE only on a meaningful change, measured after the publisher stall fix
- [Dead code and API surface audit](/quest/m1/audit-dead-code.md) - repeat the removal audit before the next major release
- [Interop coverage](/quest/m1/interop-coverage/README.md) - the riskiest moq-transport features moq-net exposes get cross-implementation tests over the even drafts 14 to 22
- [Runner nightly](/quest/m1/interop-runner-nightly.md) - a nightly job runs the upstream interop runner against our relay and clients, so newly registered implementations with a published image are tested without a change here
- [CI workflow audit](/quest/m1/audit-ci.md) - every workflow and job gives a signal someone sees, at a cost that signal justifies, or is fixed, moved, or deleted
Expand Down
67 changes: 0 additions & 67 deletions quest/m1/audit-dead-code.md

This file was deleted.

1 change: 1 addition & 0 deletions quest/m2/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,7 @@ ranked just below deterministic TS legs, which it requires.
- [FromStr parsers](/quest/m2/from-str-trait.md) - hang, moq-auth, and moq-msf implement `FromStr` instead of inherent `from_str`
- [Drop dead items](/quest/m2/drop-dead-items.md) - the audit's uncalled public items and test helpers are removed
- [Dependency and alternatives audit](/quest/m2/audit-deps.md) - dependencies are current, deduplicated, needed, and the best maintained option
- [Dead code and API surface audit](/quest/m2/audit-dead-code.md) - repeat the removal audit before the next major release
- [Test coverage audit](/quest/m2/audit-test-coverage.md) - repeat the coverage audit against the m1 baselines after the next release ships
- [Documentation audit](/quest/m2/audit-docs.md) - repeat the docs audit after the release ships, against the m1 baselines
- [Test cost audit](/quest/m2/audit-test-cost.md) - the slowest, flakiest, and least valuable tests are fixed, deleted, or planned once the release ships
Loading
Loading