Skip to content

feat: Added bookmark section in Earth Globe View#129

Merged
krishkhinchi merged 1 commit into
7-Blocks:mainfrom
khedkaravani-rgb:feat/add-bookmarks
Jul 22, 2026
Merged

feat: Added bookmark section in Earth Globe View#129
krishkhinchi merged 1 commit into
7-Blocks:mainfrom
khedkaravani-rgb:feat/add-bookmarks

Conversation

@khedkaravani-rgb

@khedkaravani-rgb khedkaravani-rgb commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

User description

Description

Adds a Globe Bookmark System for Cesium camera views.

This PR includes:

  • Saving and restoring globe camera position and orientation.
  • Built-in presets for Earth Overview, ISS, India, Europe, North America, Starlink Constellation, and Low Earth Orbit.
  • Custom bookmark creation, editing, deletion confirmation, favorites, recent views, and category filtering.
  • Search by bookmark name, description, or category.
  • Local storage persistence across browser sessions.
  • JSON import and export.
  • Shareable bookmark URLs that restore the shared camera view.
  • Accessible controls, labels, keyboard-friendly dialogs, and reduced-motion-aware camera animation.

Related Issue

Fixes #122

Checklist

  • I have read the contributing guidelines
  • My code follows the project guidelines
  • I have completed testing of my changes
  • Documentation has been updated (if applicable)

Screenshots / Screen Recordings

Screen.Recording.2026-07-22.223946.1.mp4

Breaking Changes

No breaking changes.


ECSoC26 Submission

ECSoC26 contributors only — select your difficulty level by checking exactly one box below.
Leaving all boxes unchecked, or checking more than one, will cause the automation to fail.

  • ECSoC26-L1 – Beginner
  • ECSoC26-L2 – Intermediate
  • ECSoC26-L3 – Advanced

CodeAnt-AI Description

Add saved globe views with search, sharing, and import/export

What Changed

  • Added a bookmarks panel for the globe with saved views grouped into favorites, recent views, and a searchable full list
  • Users can save the current camera view, edit bookmark details, open a saved view, mark favorites, share a view link, and confirm deletions
  • Bookmarks now persist across sessions, can be exported as JSON, imported from a file, and restored from a shareable URL
  • Built-in globe presets are included, and shared or restored views respect reduced-motion settings

Impact

✅ Faster return to saved globe views
✅ Easier sharing of exact camera positions
✅ Fewer lost bookmarks after refresh

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

Summary by CodeRabbit

  • New Features
    • Added saved globe views with custom names, descriptions, and categories.
    • Search, favorite, edit, delete, and restore saved views from a sidebar.
    • Added bookmark import and export functionality.
    • Added shareable bookmark links that restore the saved camera view.
    • Added updated globe statistics, collision status, and legend styling.

Greptile Summary

This PR adds saved camera views to the Cesium globe. The main changes are:

  • Built-in and custom globe bookmarks.
  • Bookmark creation, editing, deletion, search, favorites, and recent views.
  • Local-storage persistence and JSON import/export.
  • Shareable URLs and reduced-motion-aware camera restoration.

Confidence Score: 2/5

The frontend build and core bookmark dialog flow are broken and need fixes before merging.

  • Linux builds cannot resolve the mismatched modal filename.
  • Create and edit actions mount two dialogs at once.
  • Malformed imported descriptions can crash bookmark rendering.
  • Restoring a bookmark disables globe rotation for the session.

frontend/src/components/EarthTwin.tsx and frontend/src/hooks/useBookmarks.ts

Important Files Changed

Filename Overview
frontend/src/components/EarthTwin.tsx Connects bookmark state and UI to the Cesium camera, but contains a build-breaking import, duplicate dialogs, and a one-way rotation gate.
frontend/src/hooks/useBookmarks.ts Adds bookmark CRUD, filtering, derived lists, and import/export, with incomplete validation of imported optional fields.
frontend/src/hooks/useBookmarkStorage.ts Adds local-storage persistence and merges saved preferences with built-in presets.
frontend/src/utils/bookmarkHelpers.ts Defines built-in camera presets and share-URL serialization and validation.
frontend/src/components/GlobeBookmarks/BookmarkSidebar.tsx Adds the searchable bookmark sidebar, grouped lists, import/export controls, and deletion confirmation.
frontend/src/components/GlobeBookmarks/BookmarkModal.tsx Adds the keyed create and edit form used by the intended modal instance.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  A[Globe camera] --> B[Create bookmark]
  B --> C[Bookmark hooks]
  C --> D[(Local storage)]
  D --> E[Bookmark sidebar]
  E --> F[Restore camera]
  E --> G[Import or export JSON]
  E --> H[Create share URL]
  H --> F
Loading
Prompt To Fix All With AI
Fix the following 4 code review issues. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 4
frontend/src/components/EarthTwin.tsx:8
**Import Casing Breaks Linux Builds**

The import requests `BookMarkModal`, but the added file is `BookmarkModal.tsx`. Case-sensitive Linux builds cannot resolve this module, so the frontend bundle fails before deployment.

```suggestion
import { BookmarkModal, type BookmarkFormValues } from './GlobeBookmarks/BookmarkModal';
```

### Issue 2 of 4
frontend/src/components/EarthTwin.tsx:823-829
**Bookmark Dialog Mounts Twice**

A second `BookmarkModal` is rendered later under the same condition. Every create action therefore opens two overlapping dialogs, while an edit opens one empty create dialog and one populated edit dialog; closing the top dialog can leave the other visible.

```suggestion

```

### Issue 3 of 4
frontend/src/hooks/useBookmarks.ts:398-415
**Imported Description Bypasses Validation**

An imported bookmark can provide an object or array as `description` because this predicate never checks that optional field. The value is persisted and later rendered directly by `BookmarkCard`, where an object causes React to throw instead of displaying the bookmark list.

```suggestion
                                    return (
                                        typeof bookmark.name ===
                                        'string' &&
                                        (bookmark.description === undefined ||
                                            typeof bookmark.description ===
                                            'string') &&
                                        typeof bookmark.category ===
                                        'string' &&
                                        typeof bookmark.latitude ===
                                        'number' &&
                                        typeof bookmark.longitude ===
                                        'number' &&
                                        typeof bookmark.altitude ===
                                        'number' &&
                                        typeof bookmark.heading ===
                                        'number' &&
                                        typeof bookmark.pitch ===
                                        'number' &&
                                        typeof bookmark.roll ===
                                        'number'
                                    );
```

### Issue 4 of 4
frontend/src/components/EarthTwin.tsx:350-351
**Bookmark Restore Permanently Stops Rotation**

Opening any bookmark sets the shared rotation gate to `false`, and no interaction sets it back to `true`. After the first restore, the globe remains static for the rest of the mounted session rather than only staying still during the camera transition.

Reviews (1): Last reviewed commit: "feat: Added bookmark section in Earth Gl..." | Re-trigger Greptile

Greptile also left 4 inline comments on this PR.

@codeant-ai

codeant-ai Bot commented Jul 22, 2026

Copy link
Copy Markdown

🤖 CodeAnt AI — Review Status

Status Commit Started (UTC) Finished (UTC)
✅ Reviewed your PR 444f24f Jul 22, 2026 · 17:47 17:52

Updated in place by CodeAnt AI · last 5 reviews

@github-actions github-actions Bot added ECSoC26 Official label for ECSoC26 event contributions. ECSoC26-L1 Level 1 contribution for the ECSoC26 event. bug Something isn't working documentation Improvements or additions to documentation frontend Frontend development size/XL Very large or complex contribution. type:bug Fixes an existing bug or unexpected behavior. type:documentation Improves project documentation. type:frontend Changes frontend or client-side code. labels Jul 22, 2026
@coderabbitai

coderabbitai Bot commented Jul 22, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Changes

Globe Bookmark System

Layer / File(s) Summary
Bookmark data, defaults, and persistence
frontend/src/hooks/useBookmarkStorage.ts, frontend/src/utils/bookmarkHelpers.ts
Defines bookmark fields and presets, persists bookmark mutations in localStorage, and encodes or decodes shared bookmark URLs.
Bookmark management hook
frontend/src/hooks/useBookmarks.ts
Adds CRUD, favorites, recency, filtering, sorting, import, and export behavior.
Bookmark sidebar and form UI
frontend/src/components/GlobeBookmarks/*
Adds bookmark cards, search, create/edit forms, sidebar sections, import/export controls, and delete confirmation.
Cesium camera and globe UI integration
frontend/src/components/EarthTwin.tsx
Connects bookmark actions to the globe, restores shared camera views, controls auto-rotation, and updates related HUD panels and controls.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant GlobeUser
  participant EarthTwin
  participant useBookmarks
  participant localStorage
  participant CesiumCamera
  GlobeUser->>EarthTwin: Save current view
  EarthTwin->>useBookmarks: Add bookmark with camera state
  useBookmarks->>localStorage: Persist bookmark
  GlobeUser->>EarthTwin: Open bookmark or shared link
  EarthTwin->>useBookmarks: Resolve bookmark
  EarthTwin->>CesiumCamera: Fly to saved camera state
Loading

Suggested labels: ECSoC26-L2

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning EarthTwin includes unrelated HUD, collision badge, and legend restyling changes beyond the bookmark system scope. Move the HUD, collision badge, and legend UI changes into a separate PR unless they are required for the bookmark feature.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The PR implements the requested globe bookmark system, including presets, CRUD, favorites, search, import/export, sharing, persistence, and accessibility.
Title check ✅ Passed The title clearly matches the main change: adding bookmark functionality to the Earth Globe view.
Description check ✅ Passed The PR description follows the repository template and includes the required sections with relevant details.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@codeant-ai codeant-ai Bot added the size:XXL This PR changes 1000+ lines, ignoring generated files label Jul 22, 2026
@github-actions github-actions Bot added AI Artificial Intelligence and Machine Learning enhancement New feature or request type:feature Introduces a new feature or enhancement. labels Jul 22, 2026
Comment thread frontend/src/components/EarthTwin.tsx
Comment thread frontend/src/components/EarthTwin.tsx
Comment thread frontend/src/hooks/useBookmarks.ts
Comment thread frontend/src/components/EarthTwin.tsx
Comment thread frontend/src/components/EarthTwin.tsx
Comment thread frontend/src/components/EarthTwin.tsx
Comment thread frontend/src/components/GlobeBookmarks/BookmarkCard.tsx
Comment thread frontend/src/components/GlobeBookmarks/BookmarkSidebar.tsx
Comment thread frontend/src/hooks/useBookmarkStorage.ts

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Nitpick comments (5)
frontend/src/hooks/useBookmarkStorage.ts (2)

30-60: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

Merging the entire stored object over the preset risks masking future preset content updates.

defaultsWithSavedPreferences spreads the whole stored record over the preset, not just the user-mutable fields (isFavorite, lastOpenedAt, updatedAt). This is harmless today only because default bookmarks can't be edited elsewhere, but the moment a preset's name/description/altitude/etc. is updated in source, any user who previously favorited/opened that preset will keep seeing the stale cached copy from localStorage forever, since it fully overrides the new default.

♻️ Proposed fix — merge only user-mutable fields
   const defaultsWithSavedPreferences = DEFAULT_BOOKMARKS.map(
-    (preset) => ({
-      ...preset,
-      ...storedById.get(preset.id),
-      isDefault: true,
-    })
+    (preset) => {
+      const stored = storedById.get(preset.id);
+      return {
+        ...preset,
+        ...(stored && {
+          isFavorite: stored.isFavorite,
+          lastOpenedAt: stored.lastOpenedAt,
+          updatedAt: stored.updatedAt,
+        }),
+        isDefault: true,
+      };
+    }
   );
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@frontend/src/hooks/useBookmarkStorage.ts` around lines 30 - 60, Update
mergeWithDefaultBookmarks so defaultsWithSavedPreferences preserves preset-owned
fields from DEFAULT_BOOKMARKS and overlays only the user-mutable fields
isFavorite, lastOpenedAt, and updatedAt from the stored record. Keep custom
bookmark handling unchanged, ensuring source updates to default name,
description, altitude, and other preset metadata are not masked by localStorage.

91-287: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Duplicated localStorage persistence logic across every mutator.

addBookmark, updateBookmark, deleteBookmark, toggleFavorite, and markAsOpened each reimplement the same localStorage.setItem + try/catch block that saveBookmarks (lines 99-116) already provides — saveBookmarks is only used by replaceBookmarks. Beyond the duplication, embedding the persistence side effect directly inside the setBookmarks functional updater violates React's contract that updater functions must be pure (Strict Mode intentionally double-invokes them in development to catch exactly this).

♻️ Proposed fix — extract a shared persist helper
+function persistBookmarks(bookmarks: Bookmark[]): void {
+  try {
+    localStorage.setItem(STORAGE_KEY, JSON.stringify(bookmarks));
+  } catch (error) {
+    console.error('Failed to save bookmarks to localStorage:', error);
+  }
+}
+
 const addBookmark = useCallback((bookmark: Bookmark) => {
   setBookmarks((currentBookmarks) => {
     const updatedBookmarks = [...currentBookmarks, bookmark];
-    try {
-      localStorage.setItem(STORAGE_KEY, JSON.stringify(updatedBookmarks));
-    } catch (error) {
-      console.error('Failed to save bookmark:', error);
-    }
+    persistBookmarks(updatedBookmarks);
     return updatedBookmarks;
   });
 }, []);

Apply the same substitution to updateBookmark, deleteBookmark, toggleFavorite, and markAsOpened.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@frontend/src/hooks/useBookmarkStorage.ts` around lines 91 - 287, Refactor the
mutators addBookmark, updateBookmark, deleteBookmark, toggleFavorite, and
markAsOpened to compute updated bookmarks without side effects inside
setBookmarks functional updaters, then persist through the shared saveBookmarks
helper. Remove each duplicated localStorage.setItem try/catch block while
preserving the existing bookmark transformations and error handling.
frontend/src/components/EarthTwin.tsx (2)

304-419: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Camera→bookmark field extraction is duplicated.

saveCurrentView and the create branch of handleBookmarkSubmit both independently derive latitude/longitude/altitude from viewer.scene.globe.ellipsoid.cartesianToCartographic(viewer.camera.positionWC) plus heading/pitch/roll from the camera. Extracting a small getCameraBookmarkFields(viewer) helper would remove the duplication and prevent the two call sites from drifting apart later.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@frontend/src/components/EarthTwin.tsx` around lines 304 - 419, Extract the
shared camera-to-bookmark field derivation from saveCurrentView and the create
branch of handleBookmarkSubmit into a getCameraBookmarkFields(viewer) helper.
Have the helper return the converted latitude, longitude, altitude, heading,
pitch, and roll, while preserving the existing null/invalid-camera handling at
both call sites.

341-375: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Reduced-motion + flyTo logic is duplicated between restoreBookmark and the mount effect.

restoreBookmark and the shared-bookmark-on-mount block both independently compute prefersReducedMotion via window.matchMedia and call viewer.camera.flyTo with the same destination/orientation/duration shape. Consider extracting a shared flyToBookmark(viewer, bookmark) helper used by both call sites.

Also applies to: 487-510

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@frontend/src/components/EarthTwin.tsx` around lines 341 - 375, Extract the
duplicated bookmark camera transition logic into a shared flyToBookmark(viewer,
bookmark) helper, including reduced-motion detection and the existing
destination, orientation, and duration values. Update both restoreBookmark and
the shared-bookmark-on-mount effect to call this helper, preserving their
current validation and state-management behavior.
frontend/src/components/GlobeBookmarks/BookmarkModal.tsx (1)

37-53: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚖️ Poor tradeoff

Missing focus trap in the modal dialog.

Tab/Shift+Tab can move focus out of the dialog into the rest of the page while it's open, which conflicts with the PR's stated goal of accessible, keyboard-friendly dialogs. Consider trapping focus within the <section role="dialog"> while open (e.g. cycling Tab between the first/last focusable elements, or using a small focus-trap utility).

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@frontend/src/components/GlobeBookmarks/BookmarkModal.tsx` around lines 37 -
53, Implement a focus trap for the open modal’s <section role="dialog"> so Tab
and Shift+Tab cycle only through its focusable elements. Update the modal
keyboard-handling logic near handleSubmit, preserve normal dialog interactions,
and ensure focus cannot move to the page outside the dialog while it is open.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@frontend/src/components/EarthTwin.tsx`:
- Around line 823-829: Remove the redundant BookmarkModal render block near the
bookmark dialog section, keeping only the correctly wired instance that supplies
initialBookmark and key. Ensure the standalone “SAVE VIEW” opening flow resets
editingBookmark before setting isBookmarkModalOpen so it always starts a create
operation without a stale edit target.
- Line 8: Update the BookmarkModal import in EarthTwin.tsx to use the exact
filename casing, BookmarkModal, so it resolves correctly on case-sensitive
filesystems.

In `@frontend/src/hooks/useBookmarks.ts`:
- Around line 383-417: Update the bookmark type guard in the imported-bookmark
filter to require Number.isFinite for every numeric field: latitude, longitude,
altitude, heading, pitch, and roll. Keep the existing string checks and object
validation unchanged, aligning with isValidSharedBookmark in bookmarkHelpers.ts
before replaceBookmarks persists the data.

In `@frontend/src/utils/bookmarkHelpers.ts`:
- Around line 168-218: Update isValidSharedBookmark to validate that
bookmark.description is a string before accepting the shared data. Keep the
existing validation for all other fields unchanged so crafted bookmark URL
values cannot pass the type guard with a non-string description.

---

Nitpick comments:
In `@frontend/src/components/EarthTwin.tsx`:
- Around line 304-419: Extract the shared camera-to-bookmark field derivation
from saveCurrentView and the create branch of handleBookmarkSubmit into a
getCameraBookmarkFields(viewer) helper. Have the helper return the converted
latitude, longitude, altitude, heading, pitch, and roll, while preserving the
existing null/invalid-camera handling at both call sites.
- Around line 341-375: Extract the duplicated bookmark camera transition logic
into a shared flyToBookmark(viewer, bookmark) helper, including reduced-motion
detection and the existing destination, orientation, and duration values. Update
both restoreBookmark and the shared-bookmark-on-mount effect to call this
helper, preserving their current validation and state-management behavior.

In `@frontend/src/components/GlobeBookmarks/BookmarkModal.tsx`:
- Around line 37-53: Implement a focus trap for the open modal’s <section
role="dialog"> so Tab and Shift+Tab cycle only through its focusable elements.
Update the modal keyboard-handling logic near handleSubmit, preserve normal
dialog interactions, and ensure focus cannot move to the page outside the dialog
while it is open.

In `@frontend/src/hooks/useBookmarkStorage.ts`:
- Around line 30-60: Update mergeWithDefaultBookmarks so
defaultsWithSavedPreferences preserves preset-owned fields from
DEFAULT_BOOKMARKS and overlays only the user-mutable fields isFavorite,
lastOpenedAt, and updatedAt from the stored record. Keep custom bookmark
handling unchanged, ensuring source updates to default name, description,
altitude, and other preset metadata are not masked by localStorage.
- Around line 91-287: Refactor the mutators addBookmark, updateBookmark,
deleteBookmark, toggleFavorite, and markAsOpened to compute updated bookmarks
without side effects inside setBookmarks functional updaters, then persist
through the shared saveBookmarks helper. Remove each duplicated
localStorage.setItem try/catch block while preserving the existing bookmark
transformations and error handling.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 695d21de-8f0b-4393-9c05-13a01a7bb1d6

📥 Commits

Reviewing files that changed from the base of the PR and between 22a6054 and 444f24f.

📒 Files selected for processing (8)
  • frontend/src/components/EarthTwin.tsx
  • frontend/src/components/GlobeBookmarks/BookmarkCard.tsx
  • frontend/src/components/GlobeBookmarks/BookmarkModal.tsx
  • frontend/src/components/GlobeBookmarks/BookmarkSearch.tsx
  • frontend/src/components/GlobeBookmarks/BookmarkSidebar.tsx
  • frontend/src/hooks/useBookmarkStorage.ts
  • frontend/src/hooks/useBookmarks.ts
  • frontend/src/utils/bookmarkHelpers.ts

Comment thread frontend/src/components/EarthTwin.tsx
Comment thread frontend/src/components/EarthTwin.tsx
Comment thread frontend/src/hooks/useBookmarks.ts
Comment thread frontend/src/utils/bookmarkHelpers.ts

@krishkhinchi krishkhinchi left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!!

@krishkhinchi
krishkhinchi merged commit f6e389a into 7-Blocks:main Jul 22, 2026
14 checks passed
@ecsoc-sentinel ecsoc-sentinel Bot added ECSoC26-L3 Level 2 contribution for the ECSoC26 event. and removed ECSoC26-L1 Level 1 contribution for the ECSoC26 event. labels Jul 22, 2026
@krishkhinchi

Copy link
Copy Markdown
Member

Hi @khedkaravani-rgb, your PR deployment has failed on Vercel. Could you please check the deployment logs and fix the issue? Thanks!

image

@khedkaravani-rgb

Copy link
Copy Markdown
Contributor Author

@krishkhinchi I looked into the issue. I would need access to the deployment url because I cant see the error logs from my end.

@krishkhinchi

Copy link
Copy Markdown
Member

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

Labels

AI Artificial Intelligence and Machine Learning bug Something isn't working documentation Improvements or additions to documentation ECSoC26-L3 Level 2 contribution for the ECSoC26 event. ECSoC26 Official label for ECSoC26 event contributions. enhancement New feature or request frontend Frontend development size/XL Very large or complex contribution. size:XXL This PR changes 1000+ lines, ignoring generated files type:bug Fixes an existing bug or unexpected behavior. type:documentation Improves project documentation. type:feature Introduces a new feature or enhancement. type:frontend Changes frontend or client-side code.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

🗺️ Implement Globe Bookmark System

2 participants