Skip to content

feat(app): default updateAutoDownload to true for new and unconfigured users#1663

Open
yashranaway wants to merge 2529 commits into
different-ai:devfrom
yashranaway:feat/auto-download-updates-default-on
Open

feat(app): default updateAutoDownload to true for new and unconfigured users#1663
yashranaway wants to merge 2529 commits into
different-ai:devfrom
yashranaway:feat/auto-download-updates-default-on

Conversation

@yashranaway
Copy link
Copy Markdown
Contributor

Refs #1095

Summary

  • Flip the React Settings auto-download default from false to true so a fresh install opts in to downloading updates as soon as auto-check finds them.
  • Use the same flip to migrate existing users who never opened the Updates toggle: readStoredBoolean(KEY, true) returns true only when no value has ever been written, so anyone who explicitly toggled the switch off keeps their stored "0" and stays opted out.
  • Auto-check (already true by default) and the manual check / install flows remain unchanged.

Verification

  • pnpm --filter @openwork/app typecheck currently fails on pre-existing origin/dev errors in settings-route.tsx lines 1324-1557 (automations and messaging tabs in flight) and messaging-view-state.ts; this branch only touches line 367.
  • git diff --check clean.

Notes

  • Out of scope: the pill-like updates presentation, the visible upgrade banner, and the backend-gated required-update path described on the issue. They depend on design and backend coordination and are better landed separately.
  • Existing users who installed the app, never visited Settings > Updates, and stayed on default false will move to true on first run after this lands; this matches the issue's "existing users where safe" wording since auto-check was already on for them and only the download step changes.

benjaminshafii and others added 30 commits April 15, 2026 15:10
…t-ai#1446)

* add pre-baked microsandbox image

Bake openwork, openwork-server, and the pinned opencode binary into a single Docker image so micro-sandbox remote-connect smoke tests can boot quickly and be verified with curl and container health checks.

* add Rust microsandbox example

Add a standalone microsandbox SDK example that boots the OpenWork image, validates remote-connect endpoints, and streams sandbox logs so backend-only sandbox behavior can be exercised without Docker.

* exclude Rust example build output

Keep the standalone microsandbox example in git, but drop generated Cargo target artifacts so the branch only contains source, docs, and lockfile.

* test

* add microsandbox feature flag for sandbox creation

Made-with: Cursor

* refactor sandbox mode isolation

Made-with: Cursor
* feat(i18n): add Spanish locale

* chore(i18n): include Spanish in audit script

* fix(i18n): retune Spanish locale for Spain

* fix(i18n): update Spanish translations for clarity and consistency
* docs: add roadmap page to docs navigation

* docs: move roadmap into top-level docs tab

* roadmapp

* roadmapppo
* feat(i18n): add Catalan locale

Give Catalan speakers full UI coverage while keeping locale parity with the English source and existing locale audits.

* fix(i18n): align Catalan product terminology

Use the requested in-product terms for workspace, paquet, and sandbox while keeping the Catalan locale consistent around runtime, host, and deep link wording.

* canvis de wording
…i#1465)

* docs: rewrite intro with privacy-first positioning

Lead with "privacy-first, open-source alternative to Claude Cowork" and
cut the coding-agent framing. Reorganize the page into three scannable
sections (Start / For teams / For developers), keep the existing
self-host/orchestrator steps under a dedicated section below.

* docs: regroup sidebar into outcome-based clusters

Rename tabs "Cloud docs" → "Cloud" and "Cloud API" → "API" for shorter,
clearer labels.

Replace the generic "Desktop App" and "Tutorials" groups in Start here
with two outcome-based clusters: "Connect your stack" (providers, MCPs,
search) and "Do work with it" (browser, automations, skills, sharing).

Reorganize the flat Cloud list into three clusters that map to real
admin questions: "Share with your team" (templates, skill hubs,
providers), "Run in the cloud" (shared workspaces, Slack), and
"Manage access" (members & RBAC). Enterprise stays at the tail as
a standalone contact-sales page.

Slack moves from Start here to Cloud "Run in the cloud" since the
Slack setup doc itself recommends pairing Slack with a remote
workspace.

* docs: surface changelog and roadmap on the intro

Add a one-liner in the developers section pointing to the changelog
and roadmap, and include both in the footer links. Developers
evaluating the project want to see shipping velocity and direction.

* docs(self-host): add dedicated self-host page with cloud/enterprise upsells

Extract the openwork-orchestrator install steps out of the intro into
a dedicated Self-host page. Keeps the intro short and gives
self-hosters a direct, linkable entry point.

The page includes two upsell paths:

- Cloud, for readers who realize mid-read they don't want to run
  infra. Links into the team primitives (skill hubs, providers, RBAC,
  shared workspaces) that are hardest to replicate on your own box.
- Enterprise, framed around concrete scale pressures (SSO, audit,
  allowlists, VPC, support) rather than a generic 'talk to sales'
  pitch. Links to the existing cloud-enterprise contact page.

Add the page to the Start here tab as a top-level sibling of the
intro so self-hosters find it immediately.

* docs: move self-host below the outcome clusters

Self-hosting is what people reach for after they've installed the
desktop app and tried the basic flow, not before. Move it below
"Connect your stack" and "Do work with it" so the sidebar reflects
that progression.

* docs: rename intro page title to "Introduction"

"OpenWork" as a sidebar label is tautological — every page is about
OpenWork. "Introduction" tells the reader what the page is, which is
what a sidebar label is for. The in-page hero copy still carries the
positioning.

* docs: rewrite page titles as actions

Sidebar labels should describe what the reader wants to do, not what
the page is. Rename every page title to start with (or imply) a verb:

- Introduction → Get started
- How to connect ChatGPT to Openwork → Connect ChatGPT
- How to get an Anthropic API key → Connect Anthropic
- Adding a custom LLM provider/model → Connect a custom LLM
- Adding a custom MCP → Add an MCP server
- Enable Advanced Search with Exa → Enable Exa search
- Controlling your browser with OpenWork → Control the browser
- Automating Tasks → Automate tasks
- Importing a skill → Import a skill
- How to share your agents with others → Share your setup
- Self-host OpenWork → Self-host
- Missing Documentation? → Report missing docs

Makes the sidebar scannable by intent: each label is a thing the
reader is trying to accomplish.

* docs: restore precision in provider titles

"Connect X" flattened two different setup flows into one label.
Readers scanning the sidebar need to know what they'll do before
clicking:

- Sign in with ChatGPT  (OAuth, no key needed)
- Add Anthropic API key (paste a secret from Anthropic)
- Add a custom LLM      (config, not auth)

MCP and Exa labels already carry their own distinct verbs and are
left unchanged.

* docs: turn missing-docs into a question with two paths

"Missing docs?" as a question invites the click. Inside, offer both
the low-effort path (email us) and the contributor path (open a PR
against the docs folder). Drops the "A message from the Openwork
Developers" preamble, which was noise.

* docs: reorganize into tab folders, rename files to match titles

Mirrors the tab/group structure in docs.json so files are easier to
locate. Filenames now track page titles (prefixes like how-to- and
cloud- dropped since folders provide that context). Single-page groups
stay flat at the tab root; roadmap and changelog remain at repo root as
their own tabs. Cross-links in mdx files and docs.json redirects
updated for the new paths.

* docs: add roadmap/changelog folders, rename images, deprecate unused assets

Moves roadmap.mdx and changelog.mdx into their own tab folders for
consistency with the rest of the reorg, and removes the orphaned
introduction.mdx. Renames CleanShot/Screenshot/image-* files to
descriptive names based on content and updates the corresponding
alt text. Unused images and a stray .mov land in images/deprecated/
rather than being deleted. docs.json gains /roadmap and /changelog
redirects so old inbound URLs still resolve.

* more clear get starter docs

* docs: render get-started paths as Mintlify cards

* no need to have the same title twice

* edits

* more concise
…ferent-ai#1466)

The skill-destination modal shown when importing a shared skill rendered
raw translation keys (e.g. 'share_skill_destination.add_to_workspace')
for five strings in English and French. Those entries were stubbed with
their own keys as values in a previous i18n cleanup and never replaced
with real copy.

Restore proper English copy (reusing the wording already present for the
sibling '_desc' / 'confirm_button' / 'confirm_busy' keys that these
hint/CTA keys supersede) and mirror it in French. Other locales already
had real translations for these keys and are unaffected.
…-ai#1468)

* feat(server-v2): add standalone runtime and SDK foundation

* docs(server-v2): drop planning task checklists

* build(server-v2): generate OpenAPI and SDK during dev

* build(server-v2): generate API artifacts before builds

* build(server-v2): drop duplicate root SDK generation

* build(app): remove SDK generation hooks

---------

Co-authored-by: src-opn <src-opn@users.noreply.github.com>
* chore(deps): pin opencode CLI and SDK to v1.4.9

- Bump constants.json opencodeVersion v1.2.27 -> v1.4.9 (CI source of
  truth consumed by ci-tests, build-desktop, alpha/prerelease/release
  workflows, and opencode-agents).
- Bump @opencode-ai/sdk across app, story-book, orchestrator,
  opencode-router, server-v2, and refresh the lockfile so all workspaces
  resolve to 1.4.9.

* refactor(app): adapt to @opencode-ai/sdk 1.4.9 type changes

- Move Model.reasoning reads to Model.capabilities.reasoning in
  model-config.ts and model-behavior.ts (SDK flattened capabilities).
- Simplify utils/providers.ts to a pass-through; Provider now carries
  source/options and Model.cost reshapes to {input, output, cache,
  experimentalOver200K}, which the mapper no longer needs to translate.
- Cast session.todo() result to TodoItem[] (SDK Todo has no id).
- Update server-v2 test fixtures from 1.2.27 to 1.4.9.
Introduce a new /plugins route under the org dashboard that lists plugins
(bundles of skills, hooks, MCP servers, agents, and commands) with a
list view, per-plugin detail view, and tabbed cross-cutting views for
all skills/hooks/MCPs.

- Reuses existing dashboard primitives: DashboardPageTemplate,
  UnderlineTabs, DenInput, PaperMeshGradient cards.
- Mirrors the skill-hubs list/detail patterns 1:1 for visual coherence.
- Introduces @tanstack/react-query (scoped to the dashboard subtree)
  with a mock queryFn so the data layer can swap to a real API later
  with a one-line change.
- Hidden by design: no sidebar nav entry. Reachable only via direct URL
  /o/<slug>/dashboard/plugins. Header title is mapped to 'Plugins' so
  navigating manually still feels coherent.
- Move packages/docs/changelog/changelog.mdx -> packages/docs/changelog.mdx
- Move packages/docs/roadmap/roadmap.mdx -> packages/docs/roadmap.mdx
- Update docs.json tab pages to reference flat paths
- Replace old /changelog -> /changelog/changelog redirects with the
  inverse (/changelog/changelog -> /changelog and
  /roadmap/roadmap -> /roadmap) to preserve existing external links
- Update intro footer links accordingly

Canonical URLs become /docs/changelog and /docs/roadmap.
…ction (different-ai#1475)

Introduce a new /integrations route under the org dashboard where users
can simulate connecting GitHub or Bitbucket through a realistic OAuth-
style wizard. The Plugins page now only shows its catalog once at least
one integration is connected; connecting more providers unlocks more
plugins.

- Integrations list card per provider (GitHub, Bitbucket) with connect /
  disconnect actions, connected account chips, and repo pills.
- Multi-step connect dialog: authorize -> select account -> select repos
  -> connecting -> connected. Dismissable, fully keyboard accessible,
  matches the existing OrgLimitDialog scrim/card frame.
- Data layer uses TanStack Query mutations; connections live only in the
  React Query cache (in-memory, per user's request). Mutations
  invalidate both ['integrations', 'list'] and ['plugins'], so the
  Plugins page updates in place when you connect or disconnect.
- plugin-data: each plugin now declares requiresProvider ('any' |
  'github' | 'bitbucket'). The plugins queryFn reads the integration
  cache and filters accordingly; the catalog stays empty with zero
  connections.
- plugins-screen: new 'Connect an integration' empty state with a CTA
  that deep-links to /integrations.
- No sidebar entry added (hidden page per request). Header title is
  mapped to 'Integrations' so navigating manually still feels coherent.

All data is mocked; the same hook surface (useIntegrations / useConnect
Integration / useDisconnectIntegration / usePlugins) will back a real
API with a one-line queryFn swap later.
Co-authored-by: src-opn <src-opn@users.noreply.github.com>
…er doc (different-ai#1477)

* docs: swap Ollama functional example for Infron LLM gateway

Introduces the LLM gateway concept (single OpenAI-compatible endpoint,
unified billing, fallbacks), replaces the Ollama walkthrough with an
Infron config, and links out to Infron's signup + quickstart per their
reciprocal doc in their OpenWork page.

* docs: frame Infron as hosted gateway vs LiteLLM starting point

Link to Infron's LiteLLM integration page as the canonical open-source
gateway reference, and position Infron as the OpenRouter-style hosted
gateway that sits on top: one key, unified billing, provider fallbacks.

* docs: drop OpenRouter comparison, pitch Infron directly for dev ergonomics

* docs: drop em dashes, loosen Infron pitch to devrel voice

* docs: add Infron model picker + active session screenshots
…ai#1480)

* security: harden release workflows against secret leakage

Verify trusted refs before secret-bearing jobs, narrow secret scope, pin key actions, and remove the opencode agents workflow to reduce workflow attack surface.

* security: drop third-party action pinning

Keep the trusted ref gates and narrower secret exposure, but revert external GitHub Actions back to their tagged versions to avoid broad supply-chain hardening changes in this PR.

* security: scope trusted release refs to dev

Update the workflow trust gates to validate tags and manual refs only against origin/dev, matching this repository's actual protected branch layout.

---------

Co-authored-by: src-opn <src-opn@users.noreply.github.com>
…erent-ai#1481)

* docs: make start-here app-first

Clarify the primary OpenWork CTA for new users, group self-hosting in one place, and add a missing languages page so localization contributions have a clear home.

* docs: refine get started setup cards

Add an enterprise card beside the cloud entrypoint and remove the self-hosting CTA from the get started page so the setup choices stay focused.

* more clear initial cta

* docs: clarify missing languages contribution path

Reframe the page around the languages OpenWork already ships, then explain where to improve existing locale files and which files need updates to add a new language.
* docs: outline plugin architecture and connector design

* feat(den-api): add plugin architecture admin and webhook foundation

* refactor(den-api): rename plugin routes and split github connector env

* fix(den-api): scope plugin connector records by organization

---------

Co-authored-by: src-opn <src-opn@users.noreply.github.com>
* feat(den-api): add PATCH /v1/orgs/:orgId to rename organization

- Owners can update the display name (2-120 chars) via a new PATCH route.
- Slug stays immutable to keep dashboard URLs stable.
- Adds updateOrganizationName helper in orgs.ts.

* feat(den-web): rename organization from Members page

- Adds an 'Organization' settings card above the Members tabs with inline
  rename for workspace owners.
- Non-owners see a read-only summary explaining who can rename.
- Wires a new updateOrganizationName mutation through OrgDashboardProvider
  that calls PATCH /v1/orgs/:orgId.

* fix(den-api): tolerate missing apps/desktop/package.json in Docker build

PR different-ai#1476 introduced a build step that reads apps/desktop/package.json to
bake in a default latest-app-version, but packaging/docker/Dockerfile.den
does not ship the Tauri desktop sources. As a result, the den-dev Docker
stack fails to build after the PR landed. Gracefully fall back to 0.0.0
(matching the runtime default) when the file is absent, and allow a
DEN_API_LATEST_APP_VERSION env override so deployers can still pin a
real value.

* docs(den-web): add rename organization screenshots

Captured via Chrome MCP against packaging/docker/den-dev-up.sh:
- before: Members page shows Organization card with Rename button.
- editing: inline form with the current name pre-filled.
- after: new name shown with success state, sidebar also updated.

* refactor(den-web): extract DenCard primitive and drop drop shadows

The dashboard has been inlining the same card style (rounded-[30px] + p-6
+ shadow-[0_18px_48px_-34px_rgba(15,23,42,0.22)]) on every form surface.
Per Den visual language we do not use drop shadows, so the repeated
shadow class is both incorrect and a copy-paste risk.

- Add ee/apps/den-web/app/(den)/_components/ui/card.tsx exporting DenCard
  with two size presets (comfortable + spacious). Shadows are explicitly
  omitted and the component is designed so they cannot be re-introduced
  via className (no tokens ever emit shadow utilities).
- Replace all five inline cards in manage-members-screen.tsx with DenCard.
- Replace the reused sibling card in api-keys-screen.tsx with DenCard.
- Re-capture members-rename screenshots against the refactored UI.
…ing (different-ai#1483)

* fix(den-api): surface invitation email send failures instead of swallowing

Loops failures in sendDenOrganizationInvitationEmail and
sendDenVerificationEmail were being caught and logged at warn level,
so the HTTP handlers still returned 201 'Invitation created' even when
no email ever left the process. Ben observed this with two live
invitations: the DB row was pending, the UI showed it, but one of two
recipients never received the email and clicking resend re-ran the same
silent-failure path.

Root cause (from an explore audit):
- email.ts:129,132 swallowed non-2xx Loops responses and fetch throws.
- invitations.ts awaited the send and unconditionally returned 2xx.
- There is no 'skip email if user already exists' branch anywhere;
  the Slack hypothesis was wrong. The failure mode is provider-side and
  was invisible because of the swallow.

Changes:
- Introduce DenEmailSendError with a stable reason tagged union
  (loops_not_configured | loops_rejected | loops_network).
- sendDenOrganizationInvitationEmail and sendDenVerificationEmail now
  throw DenEmailSendError on failure. Dev-mode short-circuit is
  preserved (still logs the payload and returns cleanly).
- POST /v1/orgs/:orgId/invitations catches DenEmailSendError, logs via
  console.error with a stable [auth][invite_email_failed] prefix
  (greppable across deployments), and returns 502
  invitation_email_failed with a human-readable message and the
  invitationId so the UI can correlate and offer a retry. The row is
  left pending intentionally so the next submit becomes a real resend.
- Document the 502 response in the OpenAPI describeRoute.

Operator note: if LOOPS_TRANSACTIONAL_ID_DEN_VERIFY_EMAIL is unset the
signup OTP endpoint will now return a real error instead of silently
stranding the user at the OTP screen forever. This is intentional; the
previous behavior was a latent signup-breaking bug.

* fix(den-api): tolerate missing apps/desktop/package.json in Docker build

PR different-ai#1476 introduced a build step that reads apps/desktop/package.json to
bake in a default latest-app-version, but packaging/docker/Dockerfile.den
does not ship the Tauri desktop sources. As a result, the den-dev Docker
stack fails to build after the PR landed. Gracefully fall back to 0.0.0
(matching the runtime default) when the file is absent, and allow a
DEN_API_LATEST_APP_VERSION env override so deployers can still pin a
real value.

* test(den-api): add smoke script for invite email failure paths

scripts/smoke-email-failures.mjs exercises the DenEmailSendError paths
against the built dist/ of den-api. Ships with instructions so a
reviewer can rerun it inside the docker-compose den-dev container with
a single command.

Also parameterises OPENWORK_DEV_MODE in the den compose service so the
failure paths can be reached from outside the container when needed
(defaults to 1; override with OPENWORK_DEV_MODE=0 at compose time).
Introduce org-scoped marketplaces so teams can curate and share groups of plugins with consistent access rules. This adds the schema, admin routes, RBAC updates, and PRD coverage needed for marketplace-backed plugin catalogs.

Co-authored-by: src-opn <src-opn@users.noreply.github.com>
* feat(den): use Better Auth active org context

* fix(app): switch Better Auth org only on explicit actions

* refactor(den): flatten active org resource routes

---------

Co-authored-by: src-opn <src-opn@users.noreply.github.com>
* refactor(app): remove hide_main_window function and update macOS window close behavior

Eliminate the hide_main_window function to streamline window management. Update the macOS behavior to exit the application when the main window is closed, aligning it with the behavior on Windows and Linux.

* surface openwork as main focused window onDock click
johnnyshields and others added 24 commits May 4, 2026 14:00
* Cleanup usage of I18n function

* Add skip pattern

* Cleanup I18n function usage across react-app

Drop translate/tr alias wrappers that just forwarded to t() with an explicit
locale arg, and migrate direct t(key, locale, ...) calls to the new
t(key, params?) signature. Also drop the now-unused language prop drilled
through McpAuthModal, AddMcpModal, ControlChromeSetupModal, and the
translate prop drilled through CreateWorkspaceLocalPanel — components
read the global locale via t() directly.

Default the i18n-audit script to include --aliases.

* Collapse single-key t() calls onto one line

The translate() → t() rename left multi-line wrappers around short string
literals. Re-flow them since the longer translate() name is gone.

* Fix useTranslate hook for new t() signature

Dev's redesign reintroduced tr/tx wrappers via a centralized useTranslate
hook, but the hook calls t(key, currentLocale(), params) — the old
3-argument signature. The current 2-argument t(key, params) silently
drops the third arg, so every tx() call would lose its substitutions
(e.g. {name}/{count} placeholders never get replaced).

Drop currentLocale() — t() uses the current locale by default — and pass
params straight through.
different-ai#1640)

* I18n fixes:
- Prune unused I18n keys
- Add 4 missing translations to English only
- Audit script should always print unused keys

* Add I18n Audit to the CI
* Support I18n plurals and cleanup translation usage. Plurals are supported via the {count} interpolation key plus the suffixes _one, _other, etc. following the same conventions as I18next (without actually using I18next)

* Add plural audit check
* Add Russian locale

* Include Russian locale in i18n audit

* Fix plural placeholders in i18n locales

* Russian language support, based off of DrMaks22 different-ai#1635

* Improve i18n-audit --prune script to include non-EN locale orphaned translations, and prune the Russian translations

* I18n audit script: do not require {count} key for _zero and _one

* Fix Russian plurals

* Add missing Russian translations

* Fix LANGUAGE_OPTIONS label vs. nativeName

* Fix orphan check for plurals

* Fix source scan

---------

Co-authored-by: OpenAI Codex <codex@openai.com>
* Fix remote worker connection diagnostics

* Add remote worker before screenshot

* Clarify rejected remote worker tokens

* chore(workspace): add remote diagnostics locale fallbacks

* fix remote diagnostic edit and stale results

* fix remote diagnostics edge cases
* fix(config): respect .opencode opencode.jsonc paths

* fix(desktop): respect hidden opencode config paths in workspace init
…ai#1515)

* fix(workspace): reload opencode.jsonc on initial activate

The workspace the user is on at launch ignored permissions defined in
opencode.jsonc until the user toggled to another workspace and back.
Root cause: POST /workspaces/:id/activate never emitted a "config"
reload event, and the app never called activateWorkspace either on
initial mount or on workspace switch. The OpenCode engine therefore
kept serving a stale config for the initial workspace.

Changes:
- Emit a synthetic config reload event on the activate route so the
  OpenCode engine re-reads opencode.jsonc (matching the pattern
  already used on config-mutating routes).
- Call openworkClient.activateWorkspace after the initial workspace
  selection resolves, and again from the workspace-switch handler.

Fire-and-forget transport; any error is non-fatal.

Fixes different-ai#870

* fix(server): reload the engine when activating a workspace

* fix(workspace): avoid reloading on every route refresh
* fix(settings): honor remote skills write capability

* fix(settings): honor remote write capabilities
)

* fix(extensions): show directory-based project plugins

* fix(extensions): make discovered plugins read-only
Co-authored-by: src-opn <src-opn@users.noreply.github.com>
…ferent-ai#1540)

* fix(messaging): auto-heal missing router agent file

* fix(messaging): restart the router for messaging recovery
…nt-ai#1541)

* fix(desktop): fall back to a writable sidecar cwd on Windows

* fix(desktop): preserve engine workspace cwd
* Add workspace import preview

* Harden workspace import preview

* fix: preserve import state on replace failures

* fix workspace import preview preconditions

* fix stale workspace import approvals

* clean import preview failure test
…serve (different-ai#1567)

* feat(orchestrator): forward --opencode-log-level to managed opencode serve

* fix(orchestrator): forward --opencode-log-level into sandbox entrypoint
Co-authored-by: src-opn <src-opn@users.noreply.github.com>
Co-authored-by: src-opn <src-opn@users.noreply.github.com>
Co-authored-by: src-opn <src-opn@users.noreply.github.com>
Co-authored-by: src-opn <src-opn@users.noreply.github.com>
@vercel
Copy link
Copy Markdown
Contributor

vercel Bot commented May 5, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
openwork-landing Ready Ready Preview, Comment, Open in v0 May 5, 2026 7:31pm

@vercel
Copy link
Copy Markdown
Contributor

vercel Bot commented May 5, 2026

@yashranaway is attempting to deploy a commit to the Different AI Team on Vercel.

A member of the Team first needs to authorize it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.