diff --git a/client/src/components/Planner/PlacesSidebar.tsx b/client/src/components/Planner/PlacesSidebar.tsx index 8fa69663..23438fc0 100644 --- a/client/src/components/Planner/PlacesSidebar.tsx +++ b/client/src/components/Planner/PlacesSidebar.tsx @@ -10,7 +10,6 @@ import { useContextMenu, ContextMenu } from '../shared/ContextMenu' import { placesApi } from '../../api/client' import { useTripStore } from '../../store/tripStore' import { useCanDo } from '../../store/permissionsStore' -import { useAddonStore } from '../../store/addonStore' import type { Place, Category, Day, AssignmentsMap } from '../../types' import FileImportModal from './FileImportModal' @@ -44,7 +43,7 @@ const PlacesSidebar = React.memo(function PlacesSidebar({ const loadTrip = useTripStore((s) => s.loadTrip) const can = useCanDo() const canEditPlaces = can('place_edit', trip) - const isNaverListImportEnabled = useAddonStore((s) => s.isEnabled('naver_list_import')) + const isNaverListImportEnabled = true const [fileImportOpen, setFileImportOpen] = useState(false) const [sidebarDropFile, setSidebarDropFile] = useState(null) diff --git a/server/src/db/migrations.ts b/server/src/db/migrations.ts index d7202469..a63c5756 100644 --- a/server/src/db/migrations.ts +++ b/server/src/db/migrations.ts @@ -1605,6 +1605,11 @@ function runMigrations(db: Database.Database): void { CREATE INDEX IF NOT EXISTS idx_idempotency_keys_created ON idempotency_keys(created_at); `); }, + + // Migration 101: Enable naver_list_import by default + () => { + db.prepare("UPDATE addons SET enabled = 1 WHERE id = 'naver_list_import'").run(); + }, ]; if (currentVersion < migrations.length) { diff --git a/server/src/db/seeds.ts b/server/src/db/seeds.ts index 9245d79c..d6e01d54 100644 --- a/server/src/db/seeds.ts +++ b/server/src/db/seeds.ts @@ -92,7 +92,7 @@ function seedAddons(db: Database.Database): void { { id: 'vacay', name: 'Vacay', description: 'Personal vacation day planner with calendar view', type: 'global', icon: 'CalendarDays', enabled: 1, sort_order: 10 }, { id: 'atlas', name: 'Atlas', description: 'World map of your visited countries with travel stats', type: 'global', icon: 'Globe', enabled: 1, sort_order: 11 }, { id: 'mcp', name: 'MCP', description: 'Model Context Protocol for AI assistant integration', type: 'integration', icon: 'Terminal', enabled: 0, sort_order: 12 }, - { id: 'naver_list_import', name: 'Naver List Import', description: 'Import places from shared Naver Maps lists', type: 'trip', icon: 'Link2', enabled: 0, sort_order: 13 }, + { id: 'naver_list_import', name: 'Naver List Import', description: 'Import places from shared Naver Maps lists', type: 'trip', icon: 'Link2', enabled: 1, sort_order: 13 }, { id: 'collab', name: 'Collab', description: 'Notes, polls, and live chat for trip collaboration', type: 'trip', icon: 'Users', enabled: 1, sort_order: 6 }, { id: 'journey', name: 'Journey', description: 'Trip tracking & travel journal — check-ins, photos, daily stories', type: 'global', icon: 'Compass', enabled: 0, sort_order: 35 }, ]; diff --git a/server/src/routes/places.ts b/server/src/routes/places.ts index 72becb7c..be0d8f1f 100644 --- a/server/src/routes/places.ts +++ b/server/src/routes/places.ts @@ -5,7 +5,6 @@ import { requireTripAccess } from '../middleware/tripAccess'; import { broadcast } from '../websocket'; import { validateStringLengths } from '../middleware/validate'; import { checkPermission } from '../services/permissions'; -import { isAddonEnabled } from '../services/adminService'; import { AuthRequest } from '../types'; import { listPlaces, @@ -135,10 +134,6 @@ router.post('/import/naver-list', authenticate, requireTripAccess, async (req: R const authReq = req as AuthRequest; if (!checkPermission('place_edit', authReq.user.role, authReq.trip!.user_id, authReq.user.id, authReq.trip!.user_id !== authReq.user.id)) return res.status(403).json({ error: 'No permission' }); - if (!isAddonEnabled('naver_list_import')) { - return res.status(403).json({ error: 'Naver list import addon is disabled' }); - } - const { tripId } = req.params; const { url } = req.body; if (!url || typeof url !== 'string') return res.status(400).json({ error: 'URL is required' });