Commit Graph

2762 Commits

Author SHA1 Message Date
Mohamed Boudra
89eac88888 chore(lint): narrow explicit any in misc server files 2026-04-24 01:51:26 +07:00
Mohamed Boudra
6f6e1469c1 chore(lint): flatten nested ternaries in button/volume-meter/autocomplete 2026-04-24 01:50:04 +07:00
Mohamed Boudra
50faf34b9a fix(server): restore microtask ordering in session message dispatch
Converts per-group dispatchers to Promise<void> | undefined. The complexity
refactor broke two tests by inserting extra microtasks between each
dispatcher's await. The new pattern routes synchronously via a nullish-
coalescing chain and awaits only the matching dispatcher's promise.
2026-04-24 01:49:21 +07:00
Mohamed Boudra
405b964d41 chore(lint): hoist dictation-controls inline arrays 2026-04-24 01:47:15 +07:00
Mohamed Boudra
892b9d1ae9 chore(lint): allow css imports in import/no-unassigned-import, hoist host page styles 2026-04-24 01:45:20 +07:00
Mohamed Boudra
0302b5b32e chore(lint): parallelize more safe awaits in server (no-await-in-loop)
- Workspace reconciliation: archive missing workspaces and orphaned
  projects concurrently instead of sequentially.
- Directory suggestions: resolve child directory candidates in parallel
  before filtering.
2026-04-24 01:44:29 +07:00
Mohamed Boudra
1ffec56bbe chore(lint): clear website warnings to zero
Resolves all 61 oxlint warnings in packages/website/ by hoisting inline
callbacks/JSX, extracting sub-components to satisfy jsx-max-depth, using
stable data-derived keys, adding explicit button types, flattening nested
ternaries, and removing unused code.
2026-04-24 01:42:30 +07:00
Mohamed Boudra
7bef37f458 chore(lint): parallelize safe awaits in server (no-await-in-loop)
Converts three sequential `for ... await` loops to `Promise.all`:
- OpenCode: configure MCP servers in parallel
- Sherpa: download model files and ensure multiple models concurrently
- Speech runtime: check required model files across models in parallel
2026-04-24 01:41:59 +07:00
Mohamed Boudra
01338d2a55 chore(lint): hoist/memoize inline arrays and objects in app JSX 2026-04-24 01:41:00 +07:00
Mohamed Boudra
6465edc01f fix(server): restore microtask ordering in message dispatch and stream event handler
The complexity refactor added async dispatcher chains that inserted extra
microtasks before message handlers ran, and wrapped the stream event switch
in an await that fired between emitState and dispatchStream. Two tests
regressed on both counts. Route to the matching dispatcher synchronously
and skip the await when the stream handler has no async work.
2026-04-24 01:39:20 +07:00
Mohamed Boudra
94b6604d7a chore(lint): parallelize more safe await-in-loop in server 2026-04-24 01:36:39 +07:00
Mohamed Boudra
fe3a9bd833 chore(lint): hoist inline callbacks in app (jsx-no-new-function-as-prop)
Finish eliminating jsx-no-new-function-as-prop warnings in
agent-status-bar.tsx and complete refactor of git-diff-pane.tsx
by extracting per-item components and using stable useCallback
handlers.
2026-04-24 01:34:48 +07:00
Mohamed Boudra
cb6987b0a2 chore(lint): parallelize safe await-in-loop in server 2026-04-24 01:33:07 +07:00
Mohamed Boudra
16a48db75b chore(lint): hoist inline callbacks in app components (jsx-no-new-function-as-prop) 2026-04-24 01:28:12 +07:00
Mohamed Boudra
339fc6b316 chore(lint): reduce cyclomatic complexity in server 2026-04-24 01:24:58 +07:00
Mohamed Boudra
5f620a36d6 chore(lint): hoist inline callbacks in app (jsx-no-new-function-as-prop) 2026-04-24 00:25:02 +07:00
Mohamed Boudra
84571e5309 chore(lint): hoist inline callbacks in app (jsx-no-new-function-as-prop)
Work in progress: 30 of 369 warnings fixed across 23 files.
2026-04-24 00:10:24 +07:00
Mohamed Boudra
6f131ad551 chore(lint): extract nested callbacks in server (max-nested-callbacks) 2026-04-23 23:58:58 +07:00
Mohamed Boudra
55baa53e0b fix(types): add index signatures for Record assignability 2026-04-23 23:44:24 +07:00
Mohamed Boudra
154dcaa479 chore(lint): rename shadowed bindings in server (no-shadow)
Rename inner bindings that shadow outer imports or function params:
- Promise executor `resolve` -> `resolvePromise` (shadowed path `resolve`)
- Method params `options` -> `input`/`target`/`update`/`runOptions`/`opts`/`killOptions`
- Misc loop/destructure renames for `workspaceId`, `scriptNames`, `path`, `query`, `taskNotificationItem`

Mechanical change only; no behavior change.
2026-04-23 23:37:47 +07:00
Mohamed Boudra
2230a2a48e chore(lint): format keyboard-shortcuts-section 2026-04-23 23:36:34 +07:00
Mohamed Boudra
78f82b1e82 chore(lint): hoist inline arrays in app (jsx-no-new-array-as-prop) 2026-04-23 23:36:04 +07:00
Mohamed Boudra
d1932c9060 chore(lint): hoist inline arrays in app (jsx-no-new-array-as-prop) 2026-04-23 23:31:39 +07:00
Mohamed Boudra
de1a7ef74b chore(lint): clean up desktop and highlight packages 2026-04-23 23:27:15 +07:00
Mohamed Boudra
e249649656 chore(lint): hoist inline arrays in app (jsx-no-new-array-as-prop) 2026-04-23 23:20:40 +07:00
Mohamed Boudra
6f6c8a607c fix(types): restore Record assignability after type->interface autofix 2026-04-23 23:15:47 +07:00
Mohamed Boudra
5a78561dc8 chore(lint): hoist inline arrays in app (jsx-no-new-array-as-prop) 2026-04-23 23:15:11 +07:00
Mohamed Boudra
8852d62cef chore(lint): escape entities and hoist inline objects in website 2026-04-23 23:15:01 +07:00
Mohamed Boudra
9715df9385 chore(lint): flatten nested ternaries in server (no-nested-ternary) 2026-04-23 23:12:35 +07:00
Mohamed Boudra
dffd8c4343 chore(lint): clean up cli package warnings 2026-04-23 23:12:13 +07:00
Mohamed Boudra
31f1484150 chore(lint): clean up relay package warnings 2026-04-23 23:07:32 +07:00
Mohamed Boudra
106249c632 chore(lint): convert type aliases to interfaces (autofix)
- Remove no-use-before-define rule (conflicts with unistyles ordering)
- Add typescript/consistent-type-definitions: interface
- Run oxlint --fix: 606 type->interface conversions across 268 files

Typecheck green. Warnings: 5432 -> 3787 (-1645).
2026-04-23 22:59:49 +07:00
Mohamed Boudra
7aaca4ec8d chore(lint): use Set for LOG_FORMATS membership check 2026-04-23 22:46:32 +07:00
Mohamed Boudra
5b2f3fd830 chore: fix unresolved imports and tighten knip cross-workspace entries
Delete orphaned voice-mcp-agent-smoke.ts (voice-mcp-bridge was removed
in cff41d78). Fix model-catalog.e2e.test.ts import path. Extend knip
server entries to cover shared/client cross-workspace imports.
2026-04-23 22:41:27 +07:00
Mohamed Boudra
2dd8c27573 chore: delete unused files flagged by knip
38 files removed across app and server (verified unreferenced via
grep + typecheck). Includes dead components, hooks, stores, utils,
POC scripts, an empty orchestrator stub, stale playwright configs,
and a duplicate workspace-registry test-helpers module.

knip config tightened: added babel.config.js, native platform
extensions, and test-stubs/ to app entry patterns.
2026-04-23 22:29:49 +07:00
github-actions[bot]
dc92863c35 fix: update lockfile signatures and Nix hash 2026-04-23 15:26:07 +00:00
Mohamed Boudra
ba9ed8b995 chore: remove unused deps and declare missing ones
Knip-driven cleanup across all workspaces:

Removed (verified zero imports):
- root: @anthropic-ai/claude-agent-sdk, @modelcontextprotocol/sdk,
  expo, react, react-native, react-dom (duplicates of workspace deps)
- server: @ai-sdk/openai, @deepgram/sdk, express-basic-auth,
  fast-uri, mnemonic-id, tiny-invariant, playwright
- app: @expo/vector-icons, @getpaseo/server,
  @react-navigation/bottom-tabs, @react-navigation/elements,
  base64-js, react-native-css, expo-av, expo-font, expo-symbols,
  expo-web-browser, react-native-permissions,
  react-native-popover-view, react-native-securerandom
- cli: @getpaseo/relay
- desktop: @getpaseo/cli
- relay: @cloudflare/workers-types
- website: tailwindcss (provided by @tailwindcss/vite)

Declared (previously hoisted, now explicit):
- root: @types/ws, playwright, ws (used by scripts/)
- server: @mariozechner/pi-ai, @mariozechner/pi-agent-core
- app: expo-asset, qrcode, @types/qrcode, tiny-invariant,
  @xterm/headless, dotenv, jsdom
- cli: vitest
- desktop: vitest

Also removes the stray `/app.json` (obsolete, overridden by
packages/app/app.config.js).
2026-04-23 22:20:33 +07:00
Mohamed Boudra
2f381a76ed chore: add knip config for unused-code detection
Workspace-aware entry points plus ignore lists for script-only tools
and tools knip's binary resolution misses. Adds `npm run knip`.
2026-04-23 22:13:12 +07:00
Mohamed Boudra
cda3d1d46c chore: apply oxlint fix-suggestions (unused imports + useless fragments)
Scoped to only `no-unused-vars` and `react/jsx-no-useless-fragment` —
the safe subset of --fix-suggestions. Primary changes:

- Remove unused named imports from statements
- Remove unused default/type imports entirely
- Collapse `<><Single/></>` fragments to `<Single/>`

Verified clean: typecheck + format + lint all green.
2026-04-23 21:55:25 +07:00
Mohamed Boudra
731c570b25 fix(types): repair typecheck after oxlint safe autofix
The safe --fix introduced three type issues:

1. unicorn/prefer-set-has rewrote array literals to `new Set(...)`
   without updating the `T[]` type annotation — broken assignment.
   Fix type to `Set<T>` in logger.ts and agent-manager.ts.

2. unicorn/no-array-reverse changed `.reverse()` → `.toReversed()`
   (ES2023). Bump `lib` to ES2023 in tsconfig.base.json and
   tsconfig.server.json. Target stays at ES2020 — Node 20 supports
   the methods natively, no downlevel needed.

3. preserve-caught-error added `new Error(msg, { cause })` (ES2022),
   also covered by the lib bump.
2026-04-23 21:55:19 +07:00
Mohamed Boudra
177153e5e8 chore: apply oxlint autofix (safe level)
Auto-fixed 102 warnings (6040 → 5938) across 57 files. Main categories:
- preserve-caught-error: add { cause: error } to re-thrown errors
- unicorn/no-array-reverse: .reverse() → .toReversed()
- unicorn/no-useless-fallback-in-spread: drop unnecessary ?? {} in spreads
- oxc/no-map-spread: rewrite object spread in .map() to Object.assign
- react-hooks/exhaustive-deps: trim module-level constants from dep arrays

Ran npm run format after to clean up whitespace from lint mutations.
2026-04-23 21:47:36 +07:00
Mohamed Boudra
9c88850de0 chore: replace biome with oxc (oxfmt + oxlint)
- Remove @biomejs/biome from root and packages/expo-two-way-audio
- Delete biome.json
- Add .oxfmtrc.json (migrated from biome via oxfmt --migrate=biome)
- Add .oxlintrc.json with curated rule set: react, react-perf,
  react-hooks, typescript, unicorn, oxc, import, promise
  - Rules target functional gotchas, untyped code, perf issues,
    deep JSX, nested ternaries, complexity, unused code
  - Noisy stylistic rules explicitly disabled
- Add npm scripts: lint, lint:fix (oxfmt replaces format/format:check)
- Update CI to run oxfmt --check

Lint is wired up but not enforced — all rules at warn. Baseline:
6040 warnings, 0 errors.
2026-04-23 21:44:56 +07:00
Mohamed Boudra
ce4b0d54c7 chore: reformat codebase with oxfmt
Apply prettier-compatible formatting across the repo to match the
incoming oxfmt configuration. Mechanical reformat only — no logic
changes. Covers YAML quote normalization, package.json key sorting,
Markdown/TOML formatting, and minor TS whitespace tweaks.
2026-04-23 21:44:48 +07:00
Mohamed Boudra
9b25f8fc36 Auto-submit iOS builds for App Store review via fastlane
Adds a fastlane lane and an EAS Workflow custom job that runs after
submit_ios. Picks up the latest TestFlight build, waits for Apple
processing, and submits for review with auto-release on approval.

Uses ASC_KEY_ID, ASC_ISSUER_ID, ASC_KEY_P8 secrets from the EAS
production environment.
2026-04-23 21:36:35 +07:00
Mohamed Boudra
26e6d97e81 Auto-submit Android to production track
Was uploading to internal track as draft, requiring manual release in
Play Console. Now rolls out to 100% on production after Google review.
2026-04-23 21:21:58 +07:00
Mohamed Boudra
80102753e1 Make worktree archive optimistic 2026-04-23 21:16:23 +07:00
github-actions[bot]
75b8ae640c fix: update lockfile signatures and Nix hash 2026-04-23 13:30:33 +00:00
Mohamed Boudra
e521e1f79d chore(release): cut 0.1.62 v0.1.62 2026-04-23 20:28:53 +07:00
Mohamed Boudra
a62c7471d2 docs: add 0.1.62 changelog entry 2026-04-23 20:27:40 +07:00
Mohamed Boudra
3edf812578 Fix PR worktree status lookup 2026-04-23 20:10:48 +07:00