Files
sim/apps
Waleed 7583c8fbf4 feat(misc): skills import, MCP modal, workmark, dispatch modals, collapsed tasks and workflows manipulation, README (#3777)
* feat: skills import, MCP modal updates, wordmark icon, tool-input improvements

- Add skills import functionality (route + components + utils)
- Update MCP deploy modal
- Add Wordmark emcn icon + logo SVG assets
- Improve tool-input component
- Update README branding to new wordmark
- Add ban-spam-accounts admin script

* fix: resolve build error and audit findings from simplify review

- Add BUILT_IN_TOOL_TYPES export to blocks/utils.ts (was removed from
  tool-input.tsx but never added to the new import target — caused build
  error "Export BUILT_IN_TOOL_TYPES doesn't exist in target module")
- Export Wordmark from emcn icons barrel (index.ts)
- Derive isDragging from dragCounter in skill-import.tsx instead of
  maintaining redundant state that could desync
- Replace manual AbortController/setTimeout with AbortSignal.timeout()
  in skills import API route (Node 17.3+ supported, cleaner no-cleanup)
- Use useId() for SVG gradient ID in wordmark.tsx to prevent duplicate
  ID collisions if rendered multiple times on the same page

* fix(scripts): fix docs mismatch and N+1 query in ban-spam-accounts

- Fix comment: default pattern is @vapu.xyz, not @sharebot.net
- Replace per-user stats loop with a single aggregated JOIN query

* feat: wire wordmark into sidebar, fix credential selector modal dispatch

- Show Wordmark (icon + text) in the expanded sidebar instead of the
  bare Sim icon; collapsed state keeps the small Sim icon unchanged
- Untrack scripts/ban-spam-accounts.ts (gitignored; one-off script)
- Credential selector: open OAuthRequiredModal inline instead of
  navigating to Settings → Integrations (matches MCP/tool-input pattern)
- Credential selector: update billing import from getSubscriptionAccessState
  to getSubscriptionStatus; drop writePendingCredentialCreateRequest and
  useSettingsNavigation dependencies

* feat(misc): misc UX/UI improvements

* more random fixes

* more random fixes

* fix: address PR review findings from cursor bugbot

- settings-sidebar: use getSubscriptionAccessState instead of getSubscriptionStatus
  so billingBlocked and status validity are checked; add requiresMax gating so
  max-plan-only nav items (inbox) are hidden for lower-tier users
- credential-selector: same getSubscriptionAccessState migration for credential sets
  visibility check
- mothership chats PATCH: change else if to if for isUnread so both title and
  isUnread can be updated in a single request
- skills import: check Content-Length header before reading response body to avoid
  loading oversized files into memory

* fix(skills): add ZIP file size guard before extraction

Checks file.size > 5 MB before calling extractSkillFromZip to prevent
zip bombs from exhausting browser memory at the client-side upload path.

* feat(settings-sidebar): show locked upsell items with plan badge

Sim Mailer (requiresMax) and Email Polling (requiresTeam) now always
appear in the settings sidebar when billing is enabled and the
deployment is hosted. If the user lacks the required plan they see a
small MAX / TEAM badge next to the label and are taken to the page
which already contains the upgrade prompt.

Enterprise (Access Control, SSO) and Team management stay hard-hidden
for lower tiers. Admin/superuser items stay truly hidden.

* fix(settings-sidebar): remove flex-1 from label span to fix text centering

* feat(settings-sidebar): remove team gate from email polling, keep only mailer max gate

* feat(subscription): billing details layout and Enterprise card improvements

- Move Enterprise plan card into the plan grid (auto-fit columns) instead
  of a separate standalone section below billing details
- Refactor billing details section: remove outer border/background,
  separate each row with top border + padding for cleaner separation
- Update button variants: Add Credits → active, Invoices → active

* fix(mothership): prevent lastSeenAt conflict when both title and isUnread are patched together

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(sidebar): prevent double-save race in flyout inline rename on Enter+blur

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(skills): normalize CRLF line endings before parsing SKILL.md frontmatter

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-25 20:06:15 -07:00
..