ZacharyZhang-NY
a7ad4e5a8b
polish: composite breadcrumb keys; pause run-log polling when tab hidden (P3-58, P3-59)
2026-04-16 23:11:25 -04:00
ZacharyZhang-NY
96ab72472c
ConfirmDialog: accept confirmTone/confirmLabel/cancelLabel props (P3-57)
2026-04-16 23:10:48 -04:00
ZacharyZhang-NY
95c9deb778
refactor(useCompanyController): drop eslint-disable comments via getState() in callbacks (P2-24)
...
setters now read inline via useAppStore.getState() so exhaustive-deps
rule is satisfied without disables; 7 disable comments removed.
2026-04-16 23:10:36 -04:00
ZacharyZhang-NY
4aaf0b8bfe
refactor(default-automation-rules): stringify typed config once at seed time
2026-04-16 23:10:32 -04:00
ZacharyZhang-NY
ca9b94b5a6
titlebar: await windowMaximize promise instead of setTimeout race (P2-39)
2026-04-16 23:10:19 -04:00
ZacharyZhang-NY
169f5d686c
fix(worker-service): exponential backoff + halt after MAX_CRASH_LOOP respawns
2026-04-16 23:09:40 -04:00
ZacharyZhang-NY
d8c2e10005
i18n(sidebar): localise company delete confirmation + Yes/No buttons (P3-48)
...
Delete-company confirmation text now uses sidebar.deleteCompanyConfirm key
with {name} placeholder; Yes/No buttons route through common.yes/no.
2026-04-16 23:09:15 -04:00
ZacharyZhang-NY
3a1f79324d
toast: cap message max-height with scroll; assertive role for danger toasts (P2-38, P3-55)
2026-04-16 23:09:11 -04:00
ZacharyZhang-NY
cd85419d1d
oauth/inbox: use native ordered list; explicit severity fallback (P2-45, P2-48)
2026-04-16 23:08:44 -04:00
ZacharyZhang-NY
2286d70758
fix(worker-service): cancel kill-timer on worker exit; log shutdown failure
2026-04-16 23:08:37 -04:00
ZacharyZhang-NY
e54aee8d8b
style(App): localise console toggle labels, inline ease via tailwind class (P3-46, P3-47)
...
aria-label/title now use app.hideConsole/app.showConsole i18n keys; the
grid transition timing function moves from inline style into an
ease-[cubic-bezier(...)] utility.
2026-04-16 23:08:32 -04:00
ZacharyZhang-NY
525f6ed335
fix(window-state): log corruption instead of silent reset to default geometry
2026-04-16 23:08:06 -04:00
ZacharyZhang-NY
1adfea55b0
chore(meetings): log skipped invalid action items; use requireParam for meetingId (P2-42, P3-48)
2026-04-16 23:08:06 -04:00
ZacharyZhang-NY
c7fbec8194
fix(schemas): use uuid validation on config-revision schemas (P2-42)
...
listConfigRevisionsSchema/getConfigRevisionSchema/rollbackConfigRevisionSchema
now require uuid format matching the rest of the config API surface.
2026-04-16 23:07:52 -04:00
ZacharyZhang-NY
7290338b11
composer: unify getAgentInitials; replace invalid focusRingColor with focus:ring-ring (P2-49, P2-32)
2026-04-16 23:07:40 -04:00
ZacharyZhang-NY
5b7e47f461
refactor(vault): expose structured getBackendInfo alongside string label
2026-04-16 23:07:34 -04:00
ZacharyZhang-NY
adfcb59978
refactor(task-rubrics): share DEFAULT_RUBRIC between general and code types
2026-04-16 23:07:08 -04:00
ZacharyZhang-NY
c47050964a
refactor: dedupe heartbeat-title check; JOIN thread visibility; typed skill service guard (P2-43, P2-44, P2-45)
2026-04-16 23:07:01 -04:00
ZacharyZhang-NY
d019347e03
fix(notification): close visible notifications during destroy on Windows
2026-04-16 23:06:35 -04:00
ZacharyZhang-NY
5da9945792
skills: replace hand-rolled primary button with ActionButton; use Input primitive (P2-33, P2-34)
2026-04-16 23:06:35 -04:00
ZacharyZhang-NY
83dc1e61d7
refactor(message-dispatch): extract priorityToUrgency helper
2026-04-16 23:06:24 -04:00
ZacharyZhang-NY
32e676aec9
fix(automation): allow explicit scheduledAt / scheduleOffsetMinutes
...
P3-58: Automation rule's schedule_meeting action hardcoded +1hr from
now, producing meetings that could land in the past or outside working
hours. Accept scheduledAt (ISO-8601) first, fall back to
scheduleOffsetMinutes, and only default to +60min when the rule
specifies no time at all.
2026-04-16 23:06:06 -04:00
ZacharyZhang-NY
7eba08cfb9
refactor(ExecutionSections): extract buildTaskEscalation policy from onClick (P2-38)
...
Move the blocked-vs-strategy approval-type decision out of JSX into a pure
buildTaskEscalation(task) helper so the escalation policy is testable and
not embedded in the click handler.
2026-04-16 23:05:58 -04:00
ZacharyZhang-NY
df418a874b
refactor(desktop-shell-window): extract webPreferences into a typed local
2026-04-16 23:05:24 -04:00
ZacharyZhang-NY
9e6aa61e09
feat(i18n): dev-mode warn on missing translation keys, default-locale fallback (P3-54)
...
Missing keys now log a console.warn in dev; at runtime the default-locale
dict is consulted before falling back to the raw key so zh users are not
shown literal keys when a zh translation is absent.
2026-04-16 23:05:20 -04:00
ZacharyZhang-NY
33a371eb50
fix(db): expose runProducedDeliverable on AppDatabase
...
Follow-up to P2-37: delegation wrapper for the knowledge module method
introduced in the previous commit was missed, leaving TS2339 at
automation-run-completion.
2026-04-16 23:05:06 -04:00
ZacharyZhang-NY
dc368962f4
feat(desktop): preserve error.code via DesktopError class in unwrap (P3-52)
...
Callers can now catch DesktopError and inspect err.code to distinguish
auth/validation/unknown failures; plain Error fallback kept for message.
2026-04-16 23:05:00 -04:00
ZacharyZhang-NY
41fee50c55
EntityWorkspace: normalize typography to match Panel (20px/bold), use Eyebrow primitive (P1-10, P2-27)
2026-04-16 23:04:52 -04:00
ZacharyZhang-NY
972eb5dc93
feat(desktop-shell-menu): allow DevTools toggle via AGENTCOMPANY_ENABLE_DEVTOOLS
2026-04-16 23:04:50 -04:00
ZacharyZhang-NY
84d11582a3
chore(store): use import.meta.env.DEV instead of process.env.NODE_ENV (P3-53)
...
Vite-native idiom; added vite/client triple-slash reference to env.d.ts
so TS knows about ImportMeta.env.
2026-04-16 23:04:36 -04:00
ZacharyZhang-NY
4fd1326089
fix(browser-manager): await login-window close during shutdown
2026-04-16 23:04:29 -04:00
ZacharyZhang-NY
3bdc8b4be1
refactor(api): extract authenticateRequest helper from handleRequest (P1-35)
2026-04-16 23:04:12 -04:00
ZacharyZhang-NY
779a102ed7
fix(agent-permissions): word-boundary-match management keywords
2026-04-16 23:03:47 -04:00
ZacharyZhang-NY
5ce3c8ff76
refactor(skills): hoist ROLE_SKILL_CATEGORIES to module constant
...
P2-43: The role → skill-category map was declared inside
assignRoleSkillsToAgent, making every call reallocate the object and
hiding the coupling between these strings and on-disk category names.
Move to a module-level constant with a docblock noting that mixed-case
names (iOS-Dev, Video-maker) must match the filesystem layout.
2026-04-16 23:03:44 -04:00
ZacharyZhang-NY
a0e78e27ab
perf(db): prefilter agents by mention tokens before alias matching (P1-33)
2026-04-16 23:03:10 -04:00
ZacharyZhang-NY
7100c0bed6
fix(agent-auth): log malformed token shape once for schema-break diagnosis
2026-04-16 23:02:58 -04:00
ZacharyZhang-NY
d4c0d0a6bc
refactor(db): move run-deliverable detection out of raw db.queryAll
...
P2-37: automation-run-completion.checkRunProducedDeliverable issued 5
raw SQLs via db.queryAll. Consolidate into db.runProducedDeliverable
so schema changes to knowledge_base / documents / task_comments
surface in the knowledge domain module rather than silently breaking
at the caller.
2026-04-16 23:02:43 -04:00
ZacharyZhang-NY
b2eed3e75a
fix(budget-policy-input): convert dollars to cents via string parsing (P2-35)
...
Avoid floating-point drift from parseFloat * 100 by parsing digits then
concatenating; dollarsToCents returns null for invalid input.
2026-04-16 23:02:37 -04:00
ZacharyZhang-NY
c3e66d1a3b
fix(task-quality-gates): add zh keywords and word-boundary capabilities trim
2026-04-16 23:02:29 -04:00
ZacharyZhang-NY
296c72eb3f
composer/settings: use ActionButton iconOnly send; replace deprecated navigator.platform with lib/platform (P1-9, P2-46)
2026-04-16 23:02:29 -04:00
ZacharyZhang-NY
b0b0cfa35b
refactor(keyboard): extract shared nextIndexFor, drop duplicate handleKeyDown body (P2-28)
...
createRovingTabIndex and useRovingTabIndex now share one key-to-index
resolver; keeps both exports for test + React usage without drift risk.
2026-04-16 23:02:17 -04:00
ZacharyZhang-NY
821855931d
refactor(db): add findAgent/findConnector; wrap linkManyTasksToApproval in tx; collapse saveAgent IIFEs (P1-28, P1-29)
2026-04-16 23:02:13 -04:00
ZacharyZhang-NY
a05885c0ff
feat(notification): localize batch summary copy for zh locale
2026-04-16 23:01:56 -04:00
ZacharyZhang-NY
a063f5ed91
refactor(useCompanyData): extract filterByCompany helper, drop 14 inline filters (P2-34)
...
One filterByCompany<T>() helper replaces 14 nearly-identical snapshot.X
.filter((item) => !currentCompany || item.companyId === currentCompany.id)
expressions.
2026-04-16 23:01:34 -04:00
ZacharyZhang-NY
5403ee9aa0
fix(approval-handler): only parse workflow payload for dangerous_command type
...
P1-22: The opportunistic JSON.parse of payloadJson ran for every
approval, hoping to find workflowId/stepId. Gate on the actual
approval type that carries workflow metadata (dangerous_command, as
emitted by runWorkflowPipeline), and validate payload shape via zod.
2026-04-16 23:01:23 -04:00
ZacharyZhang-NY
f1dd9786e5
onboarding: remove AsciiAnimation decoration and 'by ELYDORA' signatures (P1-17, P1-18); move hero-drift keyframes to global CSS (P3-60)
2026-04-16 23:01:11 -04:00
ZacharyZhang-NY
b58e64b555
refactor(ConsoleView): hoist Select options into useMemo, name shutdown sentinels, localise close label (P2-25, P2-26, P3-51)
...
Replace options IIFE with memoised runSelectOptions; extract magic-string
run-summary filters to SHUTDOWN_SUMMARY/WORKER_CRASH_SUMMARY constants;
localise Close console aria-label via console.close key.
2026-04-16 23:00:48 -04:00
ZacharyZhang-NY
7df0d564e5
refactor(workflow): validate workflow steps via zod schema
...
P1-20: normalizeWorkflowSteps used ad-hoc typeof checks that silently
accepted malformed entries (e.g. number where string was expected).
Replace with workflowStepsInputSchema zod validation; semantics for
defaults/action whitelist are preserved.
2026-04-16 23:00:45 -04:00
ZacharyZhang-NY
a0be5beeb5
fix(execution-policy): runtime-assert execution mode from DB instead of cast
2026-04-16 23:00:43 -04:00
ZacharyZhang-NY
007a8fede5
docs(session): explain MAX_HANDOFF_LENGTH/MAX_HANDOFF_RUNS constants
2026-04-16 23:00:18 -04:00