Colin Johnson and GitHub
0d3cbae6a1
fix(ios): sidebar drags jitter and toolbar control flickers ( #111831 )
...
* fix(ios): smooth sidebar gestures and toolbar controls
* fix(ios): keep sidebar edge gesture below toolbar
* chore(ios): refresh native localization inventory
* fix(ios): preserve edge content interactions
* fix(ios): restore smooth sidebar tracking
* test(ios): align drawer source guards
2026-07-20 17:26:17 -04:00
Colin Johnson and GitHub
2f967bc8f3
test(ios): refresh chat voice and sidebar UI coverage ( #111655 )
2026-07-20 08:02:16 -04:00
Colin Johnson and GitHub
1ca6b6ff67
feat(ios): unify chat and voice experience ( #107879 )
...
* feat(ios): unify chat and voice experience
* refactor(ios): finish unified chat ownership
* fix(ios): unify chat and voice capture ownership
* fix(ios): serialize Talk permission hydration
* fix(ios): clear voice CI regressions
* fix(ios): clear remaining unified chat CI failures
* chore(i18n): sync native source inventory
* refactor(ios): defer provider-only realtime voice
* fix(ios): clean unified chat voice PR
* fix(ios): localize unified voice controls
* fix(ios): serialize composer audio controls
* fix(ios): isolate dictation preparation lifecycle
* fix(ios): key chat tab icons by appearance
* fix(ios): preserve talk upgrade handshakes
* fix(ios): refresh native i18n inventory
* fix(ios): reconcile shared locale artifacts
* fix(ios): satisfy chat view lint limit
* fix(ios): reconcile shared composer implementation
* test(apple): avoid XCTest actor deinit crash
* fix(ios): satisfy SwiftFormat scope spacing
* fix(ios): remove duplicate merged helper declarations
2026-07-18 14:30:10 -04:00
6242842722
fix(ios): focus missing gateway credentials ( #98189 )
...
* fix(ios): focus missing gateway credentials
Co-authored-by: Colin <colin@solvely.net >
* test(macos): let main actor polling suspend
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-12 23:36:29 -07:00
632efa2d73
fix ios qr scanner lifecycle ( #101235 )
...
* fix ios qr scanner lifecycle
* fix(ios): tighten QR scanner lifecycle change
---------
Co-authored-by: joshavant <830519+joshavant@users.noreply.github.com >
2026-07-06 21:34:44 -05:00
Colin Johnson and GitHub
82106a18b3
fix(android): stabilize recent sessions overview ( #101161 )
2026-07-06 21:20:06 -04:00
Colin Johnson and GitHub
9c2bbd0750
fix(android): stabilize chat refresh loading ( #100966 )
2026-07-06 13:33:05 -04:00
7cfc66ad07
fix(android): derive Voice readiness from Gateway catalog ( #98269 )
...
* fix(android): derive voice readiness from Gateway catalog
Co-authored-by: Colin <colin@solvely.net >
* chore(android): sync native i18n inventory
* test(gateway): use registered realtime provider ids
* fix(gateway): satisfy Talk catalog lint
* chore(android): refresh voice i18n inventory
* fix(talk): preserve runtime readiness semantics
* fix(talk): make catalog readiness authoritative
* fix(talk): validate selected provider readiness
* fix(android): honor authoritative talk readiness
* fix(android): inventory voice readiness copy
* fix(talk): report runtime-selected catalog provider
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-02 23:32:03 -07:00
ffda2f00a0
fix: keep Android gateway settings save idempotent ( #98277 )
...
* fix(android): keep gateway settings save idempotent
* fix(android): centralize gateway settings auth ownership
Co-authored-by: Colin <colin@solvely.net >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-02 15:53:47 -07:00
Colin Johnson and GitHub
54b09580f6
fix(ios): reset sidebar navigation stacks ( #94991 )
2026-06-29 20:56:22 -04:00
Colin Johnson and GitHub
59d8462b1d
fix(macos): open dashboard when Dock or Finder relaunches app ( #97637 )
...
* fix(macos): open dashboard on Dock reopen
* fix(macos): preserve visible-window Dock reopen
* style(macos): satisfy deep link switch formatting
2026-06-28 20:24:15 -07:00
4ae0a5d958
ci: run QA smoke profile in CI ( #94291 )
...
* ci: add qa lab smoke profile dispatch
* ci: prove qa lab smoke profile on prs
* ci: preserve manual qa lab profile dispatch
* ci: run qa lab smoke profile on pull requests
* ci: keep QA smoke mock lane bounded
* ci: run QA smoke PR proof through crabline
* ci: keep mock QA timeouts on caller fallbacks
* ci: prebuild QA smoke runtime
* ci: delegate smoke QA evidence workflow
* ci: trust release branch smoke evidence refs
* ci: trim smoke evidence workflow comments
* ci: align smoke evidence wrapper with QA profile contract
* ci: keep smoke profile evidence mock-only
* ci: make smoke profile evidence manual
* ci: shard qa smoke profile in ci
* ci: drop qa-channel-only smoke shard
* ci: derive qa smoke shards from taxonomy
* ci: keep qa smoke planner legacy-safe
* ci: enforce qa smoke shard failures
* ci: run qa smoke in existing fast shard
* ci: opt qa smoke into crabline concurrency
* test(ci): align qa smoke guard with taxonomy cleanup
* ci: split qa smoke into dedicated check
---------
Co-authored-by: Dallin Romney <dallinromney@gmail.com >
2026-06-24 09:47:45 -07:00
Colin Johnson and GitHub
e39249100e
fix: route Android exec approvals to in-app inbox ( #95593 )
...
* fix: route Android exec approvals to in-app inbox
* fix: read nested Android exec approval commands
2026-06-22 19:00:16 -05:00
5e342c774d
improve: refresh Android overview control surface ( #95557 )
...
* improve android overview control surface
* fix android lint gates
* fix android voice e2e debug broadcast
* harden android voice e2e receiver
* fix(android): clarify Talk entry copy
---------
Co-authored-by: joshavant <830519+joshavant@users.noreply.github.com >
2026-06-22 18:57:33 -05:00
Colin Johnson and GitHub
3675c01410
fix: /status is too verbose for pinned model sessions ( #95797 )
...
* fix: compact status model override output
* fix: align compact status override wording
2026-06-22 18:49:58 -05:00
d5a27b0b96
test: add QA Lab UX Matrix evidence scenario ( #94306 )
...
* test: add qa lab ux matrix script scenario
* fix(qa-lab): annotate UX Matrix producer catch callback as unknown for oxlint
---------
Co-authored-by: Dallin Romney <dallinromney@gmail.com >
2026-06-18 14:10:06 -07:00
c677424edb
qa-lab: add evidence artifact gallery ( #94283 )
...
* qa-lab: add evidence artifact gallery
* qa-lab: harden evidence gallery artifacts
* qa-lab: share evidence gallery view types
* qa-lab: disable evidence preview caching
* refactor(qa-lab): resolve evidence artifacts once and trim gallery render/test duplication
* fix(qa-lab): build evidence model before sending /api/evidence success headers
---------
Co-authored-by: Dallin Romney <dallinromney@gmail.com >
2026-06-18 12:17:46 -07:00
591313e80a
qa-lab: support script-backed evidence scenarios ( #94276 )
...
* qa: add script scenario execution kind
* fix(qa-lab): carry suite profile into script producer evidence and simplify artifact path resolution
* fix(qa-lab): keep out-of-repo producer artifacts absolute to avoid ../ traversal refs
---------
Co-authored-by: Dallin Romney <dallinromney@gmail.com >
2026-06-17 15:09:25 -07:00
8e77d5e144
fix(android): wait for node capability approval before onboarding ( #93792 )
...
* fix android node approval wait state
* docs: add android approval wait proof
* fix(android): address approval state review cleanup
* docs: move PR proof images out of repo
* test: trim android node approval proof
* fix(android): wait for node approval before onboarding
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-06-17 09:38:33 +08:00
c45c87acca
feat(ios): add watch action surface ( #93387 )
...
* feat(ios): add watch action surface
* fix: harden watch action surface
* fix: clean watch codegen lint
* fix(ios): scope watch chat commands to gateway
---------
Co-authored-by: joshavant <830519+joshavant@users.noreply.github.com >
2026-06-16 15:22:16 +02:00
Colin Johnson and GitHub
fd855c831f
feat(webui): add session workspace rail ( #92856 )
...
* feat(webui): add session workspace rail
* fix(webui): address session workspace review
* fix(webui): secure session workspace previews
* fix(webui): handle nested session workspace paths
* fix(webui): update session file protocol models
* fix(webui): clear session rail lint
2026-06-14 22:39:51 +08:00
Colin Johnson and GitHub
1a8747620e
fix: reflow composer beside workspace rail
...
Reflow the Control UI chat composer into the main chat column when the Workspace Files rail is expanded, so the composer stays beside the rail instead of extending underneath it.
Prepared head SHA: 7108d88cda
Co-authored-by: Colin Johnson <211764741+Solvely-Colin@users.noreply.github.com >
Co-authored-by: shakkernerd <165377636+shakkernerd@users.noreply.github.com >
Reviewed-by: @shakkernerd
2026-06-14 00:40:03 +01:00
Colin Johnson and GitHub
e58310b000
fix(ios): force stale foreground gateway reconnects ( #92552 )
2026-06-13 20:33:39 +02:00
Colin and Shakker
2129d5b3ab
fix(control-ui): refine mobile chat layout
2026-06-10 20:03:13 +01:00
bf89552e67
Improve iPad and iPhone control surfaces ( #91557 )
...
* feat(ios): expand iPad layout support
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
* feat: improve iPad and iPhone control surfaces
* fix: preserve workboard dispatch compatibility
* fix: keep Talk reachable on iPad
* fix: add universal iPad app icons
* fix: address ready-review iOS feedback
* fix: avoid workboard board id shadowing
* fix ios sidebar separators
---------
Co-authored-by: Solvely-Colin <211764741+Solvely-Colin@users.noreply.github.com >
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: joshavant <830519+joshavant@users.noreply.github.com >
2026-06-09 21:46:02 -05:00
Colin and Shakker
646df2da83
fix skill workshop filtered fallback
2026-06-01 23:00:40 +01:00
Colin and Shakker
211321ce5c
address skill workshop review comments
2026-06-01 23:00:40 +01:00
Colin and Shakker
a34e822cd4
fix skill workshop filtered navigation
2026-06-01 23:00:40 +01:00
Colin and Shakker
8c180c9153
fix(ui): render skill workshop tab
2026-06-01 23:00:40 +01:00
Colin Johnson and GitHub
f6e51ff99a
feat(ios): refresh pro UI and gateway flows ( #87367 )
...
Summary:
- Replace the legacy iOS shell with Pro Command, Chat, Agents, and Settings tabs.
- Wire iOS chat/session/settings/diagnostics and realtime Talk flows through gateway-backed APIs.
- Add gateway/session and shared chat coverage for the new iOS flow.
Verification:
- git diff --check
- node scripts/run-vitest.mjs src/gateway/server.sessions.create.test.ts src/gateway/talk-realtime-relay.test.ts
- swift test --filter ChatViewModelTests (apps/shared/OpenClawKit)
- xcodebuild build for Nimrod's iPhone succeeded; install succeeded; launch was blocked because the phone was locked
Known follow-up:
- Preserve traceLevel in sessions.create parent runtime inheritance and keep the changelog credit in the follow-up patch.
2026-05-28 17:23:26 +03:00
Colin Johnson and GitHub
e730e9bd0b
feat(ios): add realtime talk relay mode
...
Adds realtime Gateway Talk relay support for iOS, including OpenAI realtime provider selection and voice selection controls.
Maintainer fixups preserved provider auth fallback resolution, kept setup-code/manual auth through TLS trust prompts, recomputed pairing auth from current form fields, fixed the realtime voice label Swift compile issue, added provider auth regression coverage, and refreshed shrinkwrap metadata for the current CI merge base.
Verification:
- `fnm exec --using 24.15.0 pnpm deps:shrinkwrap:check`
- `git diff --check`
- `swiftformat --lint --config config/swiftformat --unexclude apps/ios/Sources apps/ios/Sources/Gateway/GatewayConnectionController.swift apps/ios/Sources/Onboarding/GatewayOnboardingView.swift apps/ios/Sources/Onboarding/OnboardingWizardView.swift apps/ios/Sources/Settings/SettingsTab.swift apps/ios/Sources/Voice/TalkModeGatewayConfig.swift`
- `swiftlint lint --config apps/ios/.swiftlint.yml apps/ios/Sources/Gateway/GatewayConnectionController.swift apps/ios/Sources/Onboarding/GatewayOnboardingView.swift apps/ios/Sources/Onboarding/OnboardingWizardView.swift apps/ios/Sources/Settings/SettingsTab.swift apps/ios/Sources/Voice/TalkModeGatewayConfig.swift`
- `AUTOREVIEW_AUTO_TESTS=0 .agents/skills/autoreview/scripts/autoreview --mode branch --base origin/main`
- GitHub CI clean for `8a76c829611c0eb70d4c3b5328f1868aaf3516e1` (cancelled `auto-response` ignored)
Co-authored-by: Colin Johnson <colin@solvely.net >
2026-05-22 17:34:06 +01:00
Colin and Peter Steinberger
6e80294079
Fix Discord realtime voice playback stability
2026-05-18 12:50:16 +01:00
Colin and Peter Steinberger
6481021763
fix: pass config to google meet realtime bridge
2026-05-10 00:13:23 -04:00
Colin and Peter Steinberger
ed4012642a
docs: credit realtime voice contributor
2026-05-10 00:13:23 -04:00
Colin and Peter Steinberger
d5893d99d0
fix: keep realtime OAuth off custom endpoints
2026-05-10 00:13:23 -04:00
Colin and Peter Steinberger
a77d2c142c
fix: address realtime voice review feedback
2026-05-10 00:13:23 -04:00
Colin and Peter Steinberger
7a2a31dede
feat: add realtime voice OAuth controls
2026-05-10 00:13:23 -04:00
Colin Johnson and GitHub
21082d2ede
fix(plugins): verify bundled runtime deps installs
...
Verify bundled runtime dependency installs before reporting success, so a clean npm exit cannot hide packages missing from the managed runtime-deps root.
Also updates the bundle command test mock for the current plugin enable-state API.
Local proof:
- `pnpm test src/plugins/bundle-commands.test.ts`
- `pnpm test src/plugins/bundled-runtime-deps.test.ts src/commands/doctor-bundled-plugin-runtime-deps.test.ts src/plugins/loader.test.ts`
- `pnpm check:changed`
Co-authored-by: Colin <colin@solvely.net >
2026-04-26 04:32:33 +01:00
0f36ee5a2e
Slack: harden slash and interactions ingress checks (openclaw#29091) thanks @Solvely-Colin
...
Verified:
- pnpm build
- pnpm check
- pnpm test:macmini
Co-authored-by: Solvely-Colin <211764741+Solvely-Colin@users.noreply.github.com >
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
2026-03-01 09:40:57 -06:00
Colin and Peter Steinberger
1faf8e8e9d
Slack: add external select flow for large arg menus
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
7a4efbb030
Slack: capture workflow button interaction metadata
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
bd20c1e24d
Slack: include stacked modal lifecycle context
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
ce973332f6
Slack: add media block fallback text handling
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
7aaf1547df
Slack: escape mrkdwn in interaction confirmations
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
a7c1b8aea7
Slack: attribute interaction confirmations and structured selects
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
9fcb93dd13
Slack: add rich text previews for modal inputs
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
05ab147081
Slack: expand advanced modal controls payloads and confirms
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
5bbbc3e3e6
Slack: show picker values in interaction confirmations
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
5f9a04604e
Slack: add header and context blocks to arg menus
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
7c5529a153
Slack: enrich modal input payload normalization
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
d1aa2323bd
Slack: update action rows for select interactions
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
1bfdd4e237
Slack: add overflow menus for slash arg choices
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
296ba8e934
Slack: enrich block action context payloads
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
7e42408ade
Slack: dedupe normalized interaction selections
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
6e790303df
Slack: validate runtime blocks in send and edit paths
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
c01c6b7079
Slack: expand interaction payload normalization coverage
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
ac969e602c
Slack: add modal private metadata utilities
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
82d132f1ba
Slack: add send blocks behavior tests
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
e8a1d4171d
Slack: guard select option value length in slash menus
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
c943ffab7c
Slack: reject blocks plus media in send paths
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
10d876e319
Slack: validate blocks input shape centrally
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
e023c84d78
Slack: infer interaction channel type from channel ID
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
378e18b75b
Slack: support blocks in plugin edit action
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
3912a2264b
Slack: support blocks in plugin send action
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
08bc1dce6a
Slack: support Block Kit blocks in editMessage
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
c9684a2678
Slack: support Block Kit blocks in sendMessage actions
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
bd17587b2a
Slack: route modal interactions via private metadata
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
d57cbcf713
Slack: use static_select for large slash arg menus
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
cf0ca47a82
Slack: capture Block Kit view closed events
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
e7cded82b2
Slack: capture Block Kit modal submissions
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
21ba564fb0
Slack: fix CI typing for interaction handler
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
55b70aa8b4
Slack: register interaction event handler
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
9419d029c9
Slack: enrich Block Kit interaction events
2026-02-16 23:51:44 +01:00
Colin and Peter Steinberger
89ce1460e1
feat(slack): add configurable stream modes
2026-02-16 23:50:42 +01:00
Colin and Peter Steinberger
087edec93f
feat(slack): add draft preview cleanup lifecycle
2026-02-16 23:50:42 +01:00
Colin and Peter Steinberger
dfd5a79631
fix(slack): pass account token for draft final chat.update
2026-02-16 23:50:42 +01:00
Colin and Peter Steinberger
bec974aba9
feat(slack): stream partial replies via draft message updates
2026-02-16 23:50:42 +01:00