Skip to content

Update are-na extension#26938

Open
0xdhrv wants to merge 3 commits intoraycast:mainfrom
0xdhrv:ext/are-na
Open

Update are-na extension#26938
0xdhrv wants to merge 3 commits intoraycast:mainfrom
0xdhrv:ext/are-na

Conversation

@0xdhrv
Copy link
Copy Markdown
Contributor

@0xdhrv 0xdhrv commented Apr 5, 2026

Description

Screencast

Checklist

- Merge branch \'contributions/merge-1775366302783\'
- Pull contributions
- Merge branch \'contributions/merge-1775365480382\'
- Pull contributions
- chore: update @esbuild packages to version 0.27.7 in package-lock.json
- Merge branch \'contributions/merge-1775365378924\'
- Pull contributions
- chore: update changelog
- feat(ai-tools): add Are.na integration with multiple tools for user interaction
- feat(search): enhance search functionality and UI
@raycastbot raycastbot added extension fix / improvement Label for PRs with extension's fix improvements extension: are-na Issues related to the are-na extension AI Extension platform: macOS labels Apr 5, 2026
@raycastbot
Copy link
Copy Markdown
Collaborator

raycastbot commented Apr 5, 2026

Thank you for your contribution! 🎉

🔔 @alvinashiatey @xmok you might want to have a look.

You can use this guide to learn how to check out the Pull Request locally in order to test it.

📋 Quick checkout commands
BRANCH="ext/are-na"
FORK_URL="https://github.com/0xdhrv/raycast-extensions.git"
EXTENSION_NAME="are-na"
REPO_NAME="raycast-extensions"

git clone -n --depth=1 --filter=tree:0 -b $BRANCH $FORK_URL
cd $REPO_NAME
git sparse-checkout set --no-cone "extensions/$EXTENSION_NAME"
git checkout
cd "extensions/$EXTENSION_NAME"
npm install && npm run dev

We're currently experiencing a high volume of incoming requests. As a result, the initial review may take up to 10-15 business days.

@0xdhrv 0xdhrv marked this pull request as ready for review April 5, 2026 06:17
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps bot commented Apr 5, 2026

Greptile Summary

This PR is a substantial update to the Are.na extension, migrating the API integration to Are.na v3, adding multiple new commands (Search Everything, My Profile, My Channels), introducing AI Extensions support, and adding block/channel management actions.

  • API layer (src/api/arena.ts): Full rewrite with a custom Arena client using native fetch, defensive mapping helpers, unified pagination via ApiMeta, and proper error handling with user-facing toasts.
  • New commands: search-all, my-profile, my-channels added to package.json and implemented in src/.
  • AI tools: Seven AI tools (search-arena, get-me, list-my-channels, get-channel, get-channel-contents, get-block, create-channel) with an ai.json evals file.
  • Block management: Edit, connect, remove-from-channel, and delete actions added via BlockActions.tsx.
  • Channel management: Edit metadata/visibility, manage collaborators, delete with confirmation.
  • Category cleanup: Removed redundant "Other" category; extension is now categorised only as "Web".
  • Bug: editChannel.tsx sends description: "" when the user submits without entering a description, silently clearing the existing channel description. editBlock.tsx already handles this correctly with || undefined.
  • Prior concerns addressed: N+1 enrichChannels calls removed; MinimalChannel status field fix applied; "Other" category removed; Preferences type no longer manually redefined.

Confidence Score: 4/5

One P1 data-integrity bug — empty description always sent on channel edit — should be fixed before merge.

The PR is a well-structured, substantial upgrade. Nearly all prior review concerns have been addressed. One confirmed P1 data-integrity issue remains: the channel edit form always sends description as an empty string, which will overwrite an existing description when the user does not fill in the field. editBlock.tsx already has the correct guard (|| undefined). All other findings are P2 or lower.

extensions/are-na/src/components/editChannel.tsx — fix description: values.description || undefined before merging.

Important Files Changed

Filename Overview
extensions/are-na/src/components/editChannel.tsx P1 bug: description field always sent as empty string when unmodified, silently overwriting existing channel descriptions
extensions/are-na/src/api/arena.ts New Arena v3 API client with defensive mapping helpers, unified pagination, and error handling
extensions/are-na/src/api/oauth.ts Cleaned-up OAuth flow using auto-generated Preferences type correctly
extensions/are-na/src/api/types.ts Comprehensive type definitions for Are.na v3 API responses
extensions/are-na/package.json Removed redundant 'Other' category, added new view commands and AI tools
extensions/are-na/src/components/editBlock.tsx Correctly guards empty description/content with
extensions/are-na/src/utils/preferences.ts Uses auto-generated Preferences type correctly
extensions/are-na/src/search-channels.tsx Refactored to useCachedPromise with incremental pagination; N+1 enrichment calls removed
extensions/are-na/src/tools/arenaAuth.ts Correctly uses auto-generated Preferences type for PAT fallback authentication
extensions/are-na/src/my-channels.tsx New command listing authenticated user's channels with grid/list toggle
extensions/are-na/src/utils/searchHistory.ts New LocalStorage-backed recent/saved query history utility
extensions/are-na/ai.json New AI extension configuration with instructions and evals for Are.na tools
Prompt To Fix All With AI
This is a comment left during a code review.
Path: extensions/are-na/src/components/editChannel.tsx
Line: 29-35

Comment:
**Existing description silently cleared on submit**

The form initialises `description` to `""` (line 24), but unlike `editBlock.tsx` which guards with `values.description || undefined`, the channel update always sends the raw string — including an empty string — to the API. Sending `description: ""` in the PUT body will overwrite the channel's existing description with an empty string whenever the user opens the edit form and submits without filling in the description field.

Apply the same guard that `editBlock.tsx` already uses:

```suggestion
        const updated = await arena.channel(channel.slug).update({
          title: values.title,
          status,
          description: values.description || undefined,
        });
```

How can I resolve this? If you propose a fix, please make it concise.

Reviews (3): Last reviewed commit: "Update are-na extension" | Re-trigger Greptile

- chore: run prettier
- refactor: enhance EditChannelView to support optional channel status
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

AI Extension extension: are-na Issues related to the are-na extension extension fix / improvement Label for PRs with extension's fix improvements platform: macOS

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants