Conversation
|
Congratulations on your new Raycast extension! 🚀 We're currently experiencing a high volume of incoming requests. As a result, the initial review may take up to 10-15 business days. Once the PR is approved and merged, the extension will be available on our Store. |
Greptile SummaryThis PR adds the One reliability concern remains before merge:
Confidence Score: 3/5
Important Files Changed
Prompt To Fix All With AIThis is a comment left during a code review.
Path: extensions/ionos-sync/src/storage.ts
Line: 9
Comment:
**Unhandled `JSON.parse` can permanently brick the extension**
If the value stored in `LocalStorage` is ever malformed (e.g. truncated write, manual edit, or a future migration bug), `JSON.parse` will throw synchronously. Because `loadProjects` is called inside a bare `.then()` in both `sync-project.tsx` and `manage-projects.tsx` with no `.catch()`, the rejection propagates silently and `isLoading` is never set to `false`, leaving the user with a permanently spinning list they cannot escape from.
```suggestion
let data: StorageData;
try {
data = JSON.parse(raw);
} catch {
return [];
}
return data.projects ?? [];
```
How can I resolve this? If you propose a fix, please make it concise.
---
This is a comment left during a code review.
Path: extensions/ionos-sync/src/sync-project.tsx
Line: 220-230
Comment:
**Missing `Action.OpenExtensionPreferences` in credentials-missing view**
When credentials are not set, the `Detail` view tells the user to press `⌘,` but provides no actions panel — so the keyboard shortcut may not work from within this view. Adding `Action.OpenExtensionPreferences` gives users a reliable one-click path to the settings screen.
```suggestion
return (
<Detail
markdown={`# ⚠️ Credentials missing\n\nPlease open the **Extension Settings** and enter your host and username.\n\n\`⌘ + ,\` → IONOS Sync → Settings`}
actions={
<ActionPanel>
<Action.OpenExtensionPreferences title="Open Extension Preferences" />
</ActionPanel>
}
/>
);
```
How can I resolve this? If you propose a fix, please make it concise.Reviews (3): Last reviewed commit: "fix: greptile review round 2" | Re-trigger Greptile |
- fix: clean up uncommitted changes - fix: address Greptile review feedback - chore: add .gitignore, remove node_modules from tracking
|
@greptileai review |
- chore: ignore .claude/ directory - chore: update metadata screenshots - fix: enforce root-remote safety lock in buildRsyncArgs
|
@greptileai review |
|
This pull request has been automatically marked as stale because it did not have any recent activity. It will be closed if no further activity occurs in the next 7 days to keep our backlog clean 😊 |
|
Still actively maintained and ready for review. |
Description
IONOS Sync lets you sync local web projects to your IONOS hosting server via rsync over SSH — without leaving Raycast or opening a terminal.
IONOS is the leading web hosting provider in the DACH region (Germany, Austria, Switzerland) with millions of customers. There is currently no Raycast extension for IONOS hosting workflows.
What it does:
Dry-run preview before every sync — see exactly what would change
Push and pull with streaming rsync output line by line
Per-project configuration: local path, remote path, excludes, --delete toggle
Automatic safety lock: --delete is disabled for root-level remotes (~/) to prevent accidental data loss
Last-sync timestamp per project (direction, mode, success/failure)
Default projects seeded on first run — works immediately after entering SSH credentials
Who it's for:
Web developers and freelancers in the DACH region who host on IONOS and want a fast, visual alternative to running rsync manually.
Screencast
Checklist
npm run buildand tested this distribution build in Raycastassetsfolder are used by the extension itselfREADMEare placed outside of themetadatafolder