collavre 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.md +221 -0
- data/Rakefile +8 -0
- data/app/assets/stylesheets/collavre/actiontext.css +577 -0
- data/app/assets/stylesheets/collavre/activity_logs.css +99 -0
- data/app/assets/stylesheets/collavre/comments_popup.css +692 -0
- data/app/assets/stylesheets/collavre/creatives.css +559 -0
- data/app/assets/stylesheets/collavre/dark_mode.css +118 -0
- data/app/assets/stylesheets/collavre/mention_menu.css +43 -0
- data/app/assets/stylesheets/collavre/popup.css +160 -0
- data/app/assets/stylesheets/collavre/print.css +37 -0
- data/app/assets/stylesheets/collavre/slide_view.css +79 -0
- data/app/assets/stylesheets/collavre/user_menu.css +34 -0
- data/app/channels/collavre/comments_presence_channel.rb +54 -0
- data/app/channels/collavre/slide_view_channel.rb +11 -0
- data/app/channels/collavre/topics_channel.rb +12 -0
- data/app/components/collavre/avatar_component.html.erb +15 -0
- data/app/components/collavre/avatar_component.rb +59 -0
- data/app/components/collavre/inbox/badge_component.html.erb +6 -0
- data/app/components/collavre/inbox/badge_component.rb +18 -0
- data/app/components/collavre/plans_timeline_component.html.erb +14 -0
- data/app/components/collavre/plans_timeline_component.rb +56 -0
- data/app/components/collavre/popup_menu_component.html.erb +6 -0
- data/app/components/collavre/popup_menu_component.rb +30 -0
- data/app/components/collavre/progress_filter_component.html.erb +5 -0
- data/app/components/collavre/progress_filter_component.rb +10 -0
- data/app/components/collavre/user_mention_menu_component.html.erb +3 -0
- data/app/components/collavre/user_mention_menu_component.rb +8 -0
- data/app/controllers/collavre/application_controller.rb +15 -0
- data/app/controllers/collavre/attachments_controller.rb +44 -0
- data/app/controllers/collavre/calendar_events_controller.rb +15 -0
- data/app/controllers/collavre/comment_read_pointers_controller.rb +80 -0
- data/app/controllers/collavre/comments/activity_logs_controller.rb +26 -0
- data/app/controllers/collavre/comments/reactions_controller.rb +82 -0
- data/app/controllers/collavre/comments_controller.rb +464 -0
- data/app/controllers/collavre/contacts_controller.rb +10 -0
- data/app/controllers/collavre/creative_expanded_states_controller.rb +27 -0
- data/app/controllers/collavre/creative_imports_controller.rb +24 -0
- data/app/controllers/collavre/creative_plans_controller.rb +69 -0
- data/app/controllers/collavre/creative_shares_controller.rb +79 -0
- data/app/controllers/collavre/creatives_controller.rb +535 -0
- data/app/controllers/collavre/devices_controller.rb +19 -0
- data/app/controllers/collavre/email_verifications_controller.rb +16 -0
- data/app/controllers/collavre/emails_controller.rb +11 -0
- data/app/controllers/collavre/github_auth_controller.rb +25 -0
- data/app/controllers/collavre/google_auth_controller.rb +43 -0
- data/app/controllers/collavre/inbox_items_controller.rb +64 -0
- data/app/controllers/collavre/invites_controller.rb +27 -0
- data/app/controllers/collavre/notion_auth_controller.rb +25 -0
- data/app/controllers/collavre/passwords_controller.rb +37 -0
- data/app/controllers/collavre/plans_controller.rb +110 -0
- data/app/controllers/collavre/sessions_controller.rb +57 -0
- data/app/controllers/collavre/topics_controller.rb +58 -0
- data/app/controllers/collavre/user_themes_controller.rb +58 -0
- data/app/controllers/collavre/users_controller.rb +390 -0
- data/app/helpers/collavre/application_helper.rb +4 -0
- data/app/helpers/collavre/comments_helper.rb +9 -0
- data/app/helpers/collavre/creatives_helper.rb +343 -0
- data/app/helpers/collavre/navigation_helper.rb +163 -0
- data/app/helpers/collavre/user_themes_helper.rb +4 -0
- data/app/javascript/collavre.js +26 -0
- data/app/javascript/components/InlineLexicalEditor.jsx +889 -0
- data/app/javascript/components/LinkPopup.jsx +112 -0
- data/app/javascript/components/creative_tree_row.js +503 -0
- data/app/javascript/components/plugins/attachment_cleanup_plugin.jsx +95 -0
- data/app/javascript/components/plugins/image_upload_plugin.jsx +162 -0
- data/app/javascript/controllers/click_target_controller.js +13 -0
- data/app/javascript/controllers/comment_controller.js +162 -0
- data/app/javascript/controllers/comments/__tests__/popup_controller.test.js +68 -0
- data/app/javascript/controllers/comments/form_controller.js +530 -0
- data/app/javascript/controllers/comments/list_controller.js +715 -0
- data/app/javascript/controllers/comments/mention_menu_controller.js +41 -0
- data/app/javascript/controllers/comments/popup_controller.js +385 -0
- data/app/javascript/controllers/comments/presence_controller.js +311 -0
- data/app/javascript/controllers/comments/topics_controller.js +338 -0
- data/app/javascript/controllers/common_popup_controller.js +55 -0
- data/app/javascript/controllers/creatives/drag_drop_controller.js +45 -0
- data/app/javascript/controllers/creatives/expansion_controller.js +222 -0
- data/app/javascript/controllers/creatives/import_controller.js +116 -0
- data/app/javascript/controllers/creatives/row_editor_controller.js +8 -0
- data/app/javascript/controllers/creatives/select_mode_controller.js +231 -0
- data/app/javascript/controllers/creatives/set_plan_modal_controller.js +107 -0
- data/app/javascript/controllers/creatives/tree_controller.js +218 -0
- data/app/javascript/controllers/index.js +79 -0
- data/app/javascript/controllers/link_creative_controller.js +91 -0
- data/app/javascript/controllers/popup_menu_controller.js +82 -0
- data/app/javascript/controllers/progress_filter_controller.js +35 -0
- data/app/javascript/controllers/reaction_picker_controller.js +107 -0
- data/app/javascript/controllers/share_invite_controller.js +15 -0
- data/app/javascript/controllers/share_user_search_controller.js +121 -0
- data/app/javascript/controllers/tabs_controller.js +43 -0
- data/app/javascript/creatives/drag_drop/dom.js +170 -0
- data/app/javascript/creatives/drag_drop/event_handlers.js +846 -0
- data/app/javascript/creatives/drag_drop/indicator.js +35 -0
- data/app/javascript/creatives/drag_drop/operations.js +116 -0
- data/app/javascript/creatives/drag_drop/state.js +31 -0
- data/app/javascript/creatives/tree_renderer.js +248 -0
- data/app/javascript/lib/api/__tests__/queue_manager.test.js +153 -0
- data/app/javascript/lib/api/creatives.js +79 -0
- data/app/javascript/lib/api/csrf_fetch.js +22 -0
- data/app/javascript/lib/api/drag_drop.js +31 -0
- data/app/javascript/lib/api/queue_manager.js +423 -0
- data/app/javascript/lib/apply_lexical_styles.js +15 -0
- data/app/javascript/lib/common_popup.js +195 -0
- data/app/javascript/lib/lexical/__tests__/action_text_attachment_node.test.jsx +91 -0
- data/app/javascript/lib/lexical/__tests__/attachment_payload.test.js +194 -0
- data/app/javascript/lib/lexical/action_text_attachment_node.js +459 -0
- data/app/javascript/lib/lexical/attachment_node.jsx +170 -0
- data/app/javascript/lib/lexical/attachment_payload.js +293 -0
- data/app/javascript/lib/lexical/dom_attachment_utils.js +66 -0
- data/app/javascript/lib/lexical/image_node.jsx +159 -0
- data/app/javascript/lib/lexical/style_attributes.js +40 -0
- data/app/javascript/lib/responsive_images.js +54 -0
- data/app/javascript/lib/turbo_stream_actions.js +33 -0
- data/app/javascript/lib/utils/markdown.js +23 -0
- data/app/javascript/modules/creative_guide.js +53 -0
- data/app/javascript/modules/creative_row_editor.js +1841 -0
- data/app/javascript/modules/creative_row_swipe.js +43 -0
- data/app/javascript/modules/creatives.js +15 -0
- data/app/javascript/modules/export_to_markdown.js +34 -0
- data/app/javascript/modules/inbox_panel.js +226 -0
- data/app/javascript/modules/lexical_inline_editor.jsx +133 -0
- data/app/javascript/modules/mention_menu.js +77 -0
- data/app/javascript/modules/plans_menu.js +39 -0
- data/app/javascript/modules/plans_timeline.js +397 -0
- data/app/javascript/modules/share_modal.js +73 -0
- data/app/javascript/modules/share_user_popup.js +77 -0
- data/app/javascript/modules/slide_view.js +163 -0
- data/app/javascript/services/cable.js +32 -0
- data/app/javascript/slide_view.js +2 -0
- data/app/javascript/utils/caret_position.js +42 -0
- data/app/javascript/utils/clipboard.js +40 -0
- data/app/jobs/collavre/ai_agent_job.rb +27 -0
- data/app/jobs/collavre/inbox_summary_job.rb +24 -0
- data/app/jobs/collavre/notion_export_job.rb +30 -0
- data/app/jobs/collavre/notion_sync_job.rb +48 -0
- data/app/jobs/collavre/permission_cache_cleanup_job.rb +36 -0
- data/app/jobs/collavre/permission_cache_job.rb +71 -0
- data/app/jobs/collavre/push_notification_job.rb +86 -0
- data/app/mailers/collavre/application_mailer.rb +17 -0
- data/app/mailers/collavre/creative_mailer.rb +9 -0
- data/app/mailers/collavre/email_verification_mailer.rb +20 -0
- data/app/mailers/collavre/inbox_mailer.rb +19 -0
- data/app/mailers/collavre/invitation_mailer.rb +16 -0
- data/app/mailers/collavre/passwords_mailer.rb +10 -0
- data/app/models/collavre/activity_log.rb +13 -0
- data/app/models/collavre/application_record.rb +5 -0
- data/app/models/collavre/calendar_event.rb +20 -0
- data/app/models/collavre/comment.rb +307 -0
- data/app/models/collavre/comment_presence_store.rb +30 -0
- data/app/models/collavre/comment_reaction.rb +11 -0
- data/app/models/collavre/comment_read_pointer.rb +26 -0
- data/app/models/collavre/contact.rb +23 -0
- data/app/models/collavre/creative.rb +413 -0
- data/app/models/collavre/creative_expanded_state.rb +11 -0
- data/app/models/collavre/creative_share.rb +122 -0
- data/app/models/collavre/creative_shares_cache.rb +18 -0
- data/app/models/collavre/current.rb +14 -0
- data/app/models/collavre/device.rb +13 -0
- data/app/models/collavre/email.rb +14 -0
- data/app/models/collavre/github_account.rb +10 -0
- data/app/models/collavre/github_repository_link.rb +19 -0
- data/app/models/collavre/inbox_item.rb +95 -0
- data/app/models/collavre/invitation.rb +22 -0
- data/app/models/collavre/label.rb +47 -0
- data/app/models/collavre/mcp_tool.rb +30 -0
- data/app/models/collavre/notion_account.rb +17 -0
- data/app/models/collavre/notion_block_link.rb +10 -0
- data/app/models/collavre/notion_page_link.rb +19 -0
- data/app/models/collavre/plan.rb +20 -0
- data/app/models/collavre/session.rb +24 -0
- data/app/models/collavre/system_setting.rb +144 -0
- data/app/models/collavre/tag.rb +10 -0
- data/app/models/collavre/task.rb +10 -0
- data/app/models/collavre/task_action.rb +10 -0
- data/app/models/collavre/topic.rb +12 -0
- data/app/models/collavre/user.rb +174 -0
- data/app/models/collavre/user_theme.rb +10 -0
- data/app/models/collavre/variation.rb +5 -0
- data/app/models/collavre/webauthn_credential.rb +11 -0
- data/app/services/collavre/ai_agent_service.rb +193 -0
- data/app/services/collavre/ai_client.rb +183 -0
- data/app/services/collavre/ai_system_prompt_renderer.rb +38 -0
- data/app/services/collavre/auto_theme_generator.rb +198 -0
- data/app/services/collavre/comment_link_formatter.rb +60 -0
- data/app/services/collavre/comments/action_executor.rb +262 -0
- data/app/services/collavre/comments/action_validator.rb +58 -0
- data/app/services/collavre/comments/calendar_command.rb +97 -0
- data/app/services/collavre/comments/command_processor.rb +37 -0
- data/app/services/collavre/comments/mcp_command.rb +109 -0
- data/app/services/collavre/comments/mcp_command_builder.rb +32 -0
- data/app/services/collavre/creatives/filter_pipeline.rb +196 -0
- data/app/services/collavre/creatives/filters/assignee_filter.rb +30 -0
- data/app/services/collavre/creatives/filters/base_filter.rb +24 -0
- data/app/services/collavre/creatives/filters/comment_filter.rb +21 -0
- data/app/services/collavre/creatives/filters/date_filter.rb +58 -0
- data/app/services/collavre/creatives/filters/progress_filter.rb +25 -0
- data/app/services/collavre/creatives/filters/search_filter.rb +28 -0
- data/app/services/collavre/creatives/filters/tag_filter.rb +16 -0
- data/app/services/collavre/creatives/importer.rb +47 -0
- data/app/services/collavre/creatives/index_query.rb +191 -0
- data/app/services/collavre/creatives/path_exporter.rb +131 -0
- data/app/services/collavre/creatives/permission_cache_builder.rb +194 -0
- data/app/services/collavre/creatives/permission_checker.rb +42 -0
- data/app/services/collavre/creatives/plan_tagger.rb +53 -0
- data/app/services/collavre/creatives/progress_service.rb +89 -0
- data/app/services/collavre/creatives/reorderer.rb +187 -0
- data/app/services/collavre/creatives/tree_builder.rb +231 -0
- data/app/services/collavre/creatives/tree_formatter.rb +36 -0
- data/app/services/collavre/gemini_parent_recommender.rb +77 -0
- data/app/services/collavre/github/client.rb +112 -0
- data/app/services/collavre/github/pull_request_analyzer.rb +280 -0
- data/app/services/collavre/github/pull_request_processor.rb +181 -0
- data/app/services/collavre/github/webhook_provisioner.rb +130 -0
- data/app/services/collavre/google_calendar_service.rb +149 -0
- data/app/services/collavre/link_preview_fetcher.rb +230 -0
- data/app/services/collavre/markdown_importer.rb +202 -0
- data/app/services/collavre/mcp_service.rb +217 -0
- data/app/services/collavre/notion_client.rb +231 -0
- data/app/services/collavre/notion_creative_exporter.rb +296 -0
- data/app/services/collavre/notion_service.rb +249 -0
- data/app/services/collavre/ppt_importer.rb +76 -0
- data/app/services/collavre/ruby_llm_interaction_logger.rb +34 -0
- data/app/services/collavre/system_events/context_builder.rb +41 -0
- data/app/services/collavre/system_events/dispatcher.rb +19 -0
- data/app/services/collavre/system_events/router.rb +72 -0
- data/app/services/collavre/tools/creative_retrieval_service.rb +138 -0
- data/app/views/admin/shared/_tabs.html.erb +4 -0
- data/app/views/collavre/comments/_activity_log_details.html.erb +23 -0
- data/app/views/collavre/comments/_comment.html.erb +147 -0
- data/app/views/collavre/comments/_comments_popup.html.erb +46 -0
- data/app/views/collavre/comments/_list.html.erb +10 -0
- data/app/views/collavre/comments/_presence_avatars.html.erb +8 -0
- data/app/views/collavre/comments/_reaction_picker.html.erb +15 -0
- data/app/views/collavre/comments/_read_receipts.html.erb +19 -0
- data/app/views/collavre/creatives/_add_button.html.erb +20 -0
- data/app/views/collavre/creatives/_delete_button.html.erb +12 -0
- data/app/views/collavre/creatives/_github_integration_modal.html.erb +77 -0
- data/app/views/collavre/creatives/_import_upload_zone.html.erb +10 -0
- data/app/views/collavre/creatives/_inline_edit_form.html.erb +89 -0
- data/app/views/collavre/creatives/_mobile_actions_menu.html.erb +24 -0
- data/app/views/collavre/creatives/_notion_integration_modal.html.erb +90 -0
- data/app/views/collavre/creatives/_set_plan_modal.html.erb +25 -0
- data/app/views/collavre/creatives/_share_button.html.erb +55 -0
- data/app/views/collavre/creatives/edit.html.erb +4 -0
- data/app/views/collavre/creatives/index.html.erb +192 -0
- data/app/views/collavre/creatives/new.html.erb +4 -0
- data/app/views/collavre/creatives/show.html.erb +29 -0
- data/app/views/collavre/creatives/slide_view.html.erb +20 -0
- data/app/views/collavre/email_verification_mailer/verify.html.erb +4 -0
- data/app/views/collavre/email_verification_mailer/verify.text.erb +2 -0
- data/app/views/collavre/emails/index.html.erb +19 -0
- data/app/views/collavre/emails/show.html.erb +5 -0
- data/app/views/collavre/inbox_items/_item.html.erb +18 -0
- data/app/views/collavre/inbox_items/_items.html.erb +3 -0
- data/app/views/collavre/inbox_items/_list.html.erb +7 -0
- data/app/views/collavre/inbox_items/index.html.erb +1 -0
- data/app/views/collavre/inbox_mailer/daily_summary.html.erb +11 -0
- data/app/views/collavre/inbox_mailer/daily_summary.text.erb +8 -0
- data/app/views/collavre/invitation_mailer/invite.html.erb +5 -0
- data/app/views/collavre/invitation_mailer/invite.text.erb +3 -0
- data/app/views/collavre/invites/show.html.erb +8 -0
- data/app/views/collavre/passwords/edit.html.erb +12 -0
- data/app/views/collavre/passwords/new.html.erb +17 -0
- data/app/views/collavre/passwords_mailer/reset.html.erb +4 -0
- data/app/views/collavre/passwords_mailer/reset.text.erb +2 -0
- data/app/views/collavre/sessions/new.html.erb +27 -0
- data/app/views/collavre/sessions/providers/_google.html.erb +7 -0
- data/app/views/collavre/sessions/providers/_passkey.html.erb +3 -0
- data/app/views/collavre/shared/_link_creative_modal.html.erb +6 -0
- data/app/views/collavre/shared/_navigation.html.erb +37 -0
- data/app/views/collavre/shared/navigation/_help_button.html.erb +1 -0
- data/app/views/collavre/shared/navigation/_inbox_button.html.erb +5 -0
- data/app/views/collavre/shared/navigation/_mobile_inbox_button.html.erb +3 -0
- data/app/views/collavre/shared/navigation/_mobile_plans_button.html.erb +1 -0
- data/app/views/collavre/shared/navigation/_panels.html.erb +18 -0
- data/app/views/collavre/shared/navigation/_plans_button.html.erb +3 -0
- data/app/views/collavre/shared/navigation/_search_form.html.erb +6 -0
- data/app/views/collavre/user_themes/index.html.erb +75 -0
- data/app/views/collavre/users/_app_header.html.erb +5 -0
- data/app/views/collavre/users/_contact_management.html.erb +77 -0
- data/app/views/collavre/users/_id_pwd_fields.html.erb +27 -0
- data/app/views/collavre/users/edit_ai.html.erb +79 -0
- data/app/views/collavre/users/edit_password.html.erb +27 -0
- data/app/views/collavre/users/index.html.erb +80 -0
- data/app/views/collavre/users/new.html.erb +33 -0
- data/app/views/collavre/users/new_ai.html.erb +87 -0
- data/app/views/collavre/users/passkeys.html.erb +43 -0
- data/app/views/collavre/users/show.html.erb +143 -0
- data/app/views/inbox/badge_component/_count.html.erb +2 -0
- data/app/views/layouts/collavre/slide.html.erb +29 -0
- data/config/locales/comments.en.yml +114 -0
- data/config/locales/comments.ko.yml +110 -0
- data/config/locales/contacts.en.yml +16 -0
- data/config/locales/contacts.ko.yml +16 -0
- data/config/locales/creatives.en.yml +183 -0
- data/config/locales/creatives.ko.yml +164 -0
- data/config/locales/invites.en.yml +19 -0
- data/config/locales/invites.ko.yml +17 -0
- data/config/locales/notifications.en.yml +8 -0
- data/config/locales/notifications.ko.yml +8 -0
- data/config/locales/plans.en.yml +12 -0
- data/config/locales/plans.ko.yml +19 -0
- data/config/locales/themes.en.yml +29 -0
- data/config/locales/themes.ko.yml +27 -0
- data/config/locales/users.en.yml +151 -0
- data/config/locales/users.ko.yml +146 -0
- data/config/routes.rb +92 -0
- data/db/migrate/20241201000000_create_notion_integrations.rb +29 -0
- data/db/migrate/20250128110017_create_creatives.rb +11 -0
- data/db/migrate/20250128120122_create_users.rb +11 -0
- data/db/migrate/20250128120123_create_sessions.rb +11 -0
- data/db/migrate/20250128123633_create_subscribers.rb +10 -0
- data/db/migrate/20250312000000_create_notion_block_links.rb +16 -0
- data/db/migrate/20250312010000_allow_multiple_notion_blocks_per_creative.rb +5 -0
- data/db/migrate/20250522115048_remove_name_from_creatives.rb +5 -0
- data/db/migrate/20250522190651_add_parent_id_to_creatives.rb +5 -0
- data/db/migrate/20250523133100_rename_inventory_count_to_progress.rb +13 -0
- data/db/migrate/20250523133101_add_sequence_to_creatives.rb +5 -0
- data/db/migrate/20250525205100_add_user_id_to_creatives.rb +10 -0
- data/db/migrate/20250527014217_create_creative_shares.rb +12 -0
- data/db/migrate/20250528142349_add_origin_id_to_creatives.rb +5 -0
- data/db/migrate/20250530060200_create_tags.rb +9 -0
- data/db/migrate/20250531105150_add_value_to_tags.rb +5 -0
- data/db/migrate/20250531140142_create_labels.rb +12 -0
- data/db/migrate/20250531140145_change_tag_to_label_reference.rb +6 -0
- data/db/migrate/20250601000000_create_comments.rb +10 -0
- data/db/migrate/20250601061830_drop_plans_and_variations.rb +6 -0
- data/db/migrate/20250604122600_add_owner_to_labels.rb +5 -0
- data/db/migrate/20250606000000_rename_email_address_to_email_in_users.rb +7 -0
- data/db/migrate/20250606150329_create_creative_hierarchies.rb +16 -0
- data/db/migrate/20250610142000_create_creative_expanded_states.rb +11 -0
- data/db/migrate/20250611030138_create_invitations.rb +15 -0
- data/db/migrate/20250611105524_create_inbox_items.rb +14 -0
- data/db/migrate/20250612150000_update_permissions.rb +43 -0
- data/db/migrate/20250612232913_add_email_verified_at_to_users.rb +5 -0
- data/db/migrate/20250616065905_add_avatar_to_users.rb +5 -0
- data/db/migrate/20250617092111_add_display_level_to_users.rb +5 -0
- data/db/migrate/20250620004558_create_emails.rb +13 -0
- data/db/migrate/20250621000000_create_comment_read_pointers.rb +11 -0
- data/db/migrate/20250622000000_add_completion_mark_to_users.rb +5 -0
- data/db/migrate/20250623000000_add_theme_to_users.rb +5 -0
- data/db/migrate/20250624000000_add_name_to_users.rb +18 -0
- data/db/migrate/20250714190000_create_devices.rb +17 -0
- data/db/migrate/20250715120000_add_notifications_enabled_to_users.rb +5 -0
- data/db/migrate/20250823000000_add_no_access_permission.rb +25 -0
- data/db/migrate/20250826000000_add_calendar_id_to_users.rb +5 -0
- data/db/migrate/20250827000000_add_google_oauth_tokens_to_users.rb +8 -0
- data/db/migrate/20250827061238_add_timezone_to_users.rb +5 -0
- data/db/migrate/20250828000000_create_calendar_events.rb +16 -0
- data/db/migrate/20250828060000_add_creative_to_calendar_events.rb +5 -0
- data/db/migrate/20250830141052_add_locale_to_users.rb +5 -0
- data/db/migrate/20250830141101_add_message_key_to_inbox_items.rb +6 -0
- data/db/migrate/20250902025423_remove_description_and_featured_image_from_creatives.rb +6 -0
- data/db/migrate/20250910000000_add_private_to_comments.rb +5 -0
- data/db/migrate/20250910105640_migrate_write_permissions_to_admin.rb +17 -0
- data/db/migrate/20250911084338_backfill_creative_in_comment_inbox_items.rb +27 -0
- data/db/migrate/20250923002959_deduplicate_device_fcm_tokens.rb +25 -0
- data/db/migrate/20250924000000_add_system_admin_to_users.rb +6 -0
- data/db/migrate/20250925000000_create_github_integrations.rb +26 -0
- data/db/migrate/20250927000000_add_webhook_secret_to_github_repository_links.rb +29 -0
- data/db/migrate/20250928000000_add_action_and_approver_to_comments.rb +6 -0
- data/db/migrate/20250928010000_add_action_execution_tracking_to_comments.rb +6 -0
- data/db/migrate/20250928105957_add_github_gemini_prompt_to_creatives.rb +5 -0
- data/db/migrate/20250929000000_add_comment_and_creative_refs_to_inbox_items.rb +6 -0
- data/db/migrate/20251001000001_create_contacts.rb +71 -0
- data/db/migrate/20251002000000_add_shared_by_to_creative_shares.rb +14 -0
- data/db/migrate/20251124120902_add_ai_fields_to_users.rb +7 -0
- data/db/migrate/20251124122218_add_created_by_id_to_users.rb +5 -0
- data/db/migrate/20251124124521_add_llm_api_key_to_users.rb +5 -0
- data/db/migrate/20251124130000_add_searchable_to_users.rb +6 -0
- data/db/migrate/20251125072705_migrate_linked_creative_children_to_origin.rb +28 -0
- data/db/migrate/20251126040752_add_description_to_creatives.rb +75 -0
- data/db/migrate/20251127000000_move_comments_from_linked_creatives_to_origins.rb +18 -0
- data/db/migrate/20251201073823_add_tools_to_users.rb +5 -0
- data/db/migrate/20251202062715_create_mcp_tools.rb +16 -0
- data/db/migrate/20251204125754_create_tasks_and_task_actions.rb +23 -0
- data/db/migrate/20251204125756_add_routing_expression_to_users.rb +5 -0
- data/db/migrate/20251204161133_set_default_routing_expression_for_ai_agents.rb +13 -0
- data/db/migrate/20251211033025_nullify_self_referencing_origins.rb +9 -0
- data/db/migrate/20251211080040_create_topics_and_add_topic_to_comments.rb +15 -0
- data/db/migrate/20251215143500_create_activity_logs.rb +16 -0
- data/db/migrate/20251222125727_create_webauthn_credentials.rb +14 -0
- data/db/migrate/20251222125839_add_webauthn_id_to_users.rb +5 -0
- data/db/migrate/20251223022315_create_comment_reactions.rb +13 -0
- data/db/migrate/20251223072625_create_user_themes.rb +11 -0
- data/db/migrate/20251230074456_add_creative_id_to_labels.rb +5 -0
- data/db/migrate/20251230113607_refactor_labels.rb +38 -0
- data/db/migrate/20251231010012_backfill_tags_for_labels.rb +15 -0
- data/db/migrate/20251231013234_drop_subscribers.rb +9 -0
- data/db/migrate/20260106090544_allow_null_user_id_in_creative_shares.rb +6 -0
- data/db/migrate/20260106160643_create_system_settings.rb +11 -0
- data/db/migrate/20260116000000_create_creative_shares_cache.rb +15 -0
- data/db/migrate/20260116000001_populate_creative_shares_cache.rb +23 -0
- data/db/migrate/20260119022933_make_source_share_id_nullable_in_creative_shares_caches.rb +7 -0
- data/db/migrate/20260119023446_populate_owner_cache_entries.rb +25 -0
- data/db/migrate/20260119100000_add_account_lockout_to_users.rb +6 -0
- data/db/migrate/20260119110000_add_last_active_at_to_sessions.rb +6 -0
- data/db/migrate/20260120045354_encrypt_oauth_tokens.rb +60 -0
- data/db/migrate/20260120162259_remove_fk_from_creative_shares_caches.rb +7 -0
- data/db/migrate/20260120163856_remove_timestamps_from_creative_shares_caches.rb +6 -0
- data/lib/collavre/configuration.rb +14 -0
- data/lib/collavre/engine.rb +77 -0
- data/lib/collavre/user_extensions.rb +29 -0
- data/lib/collavre/version.rb +3 -0
- data/lib/collavre.rb +26 -0
- data/lib/generators/collavre/install/install_generator.rb +105 -0
- data/lib/generators/collavre/install/templates/build.cjs.tt +100 -0
- data/lib/tasks/collavre_assets.rake +15 -0
- metadata +591 -0
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
---
|
|
2
|
+
en:
|
|
3
|
+
collavre:
|
|
4
|
+
creatives:
|
|
5
|
+
index:
|
|
6
|
+
up: Up
|
|
7
|
+
new_creative: Add
|
|
8
|
+
new_creative_shortcut: Add (Enter)
|
|
9
|
+
new_sub_creative: New sub-creative
|
|
10
|
+
edit: Edit
|
|
11
|
+
append_as_parent_creative: New upper-creative
|
|
12
|
+
append_below_creative: Add below
|
|
13
|
+
delete: Delete
|
|
14
|
+
delete_only_this: Delete only this Creative
|
|
15
|
+
delete_with_children: Delete this Creative and all its children
|
|
16
|
+
are_you_sure: Are you sure?
|
|
17
|
+
are_you_sure_delete_only_this: Are you sure you want to delete only this Creative?
|
|
18
|
+
Its children will be preserved and re-linked.
|
|
19
|
+
are_you_sure_delete_with_children: Are you sure you want to delete this Creative
|
|
20
|
+
and ALL its children? This cannot be undone.
|
|
21
|
+
link: Link
|
|
22
|
+
unlink: Unlink
|
|
23
|
+
are_you_sure_unlink: Are you sure you want to unlink this Creative?
|
|
24
|
+
unconvert: Unconvert
|
|
25
|
+
unconvert_confirm: Convert this Creative and its descendants into a markdown
|
|
26
|
+
comment on the parent? This Creative and its descendants will be deleted.
|
|
27
|
+
unconvert_failed: Failed to unconvert this Creative.
|
|
28
|
+
unconvert_no_parent: Cannot unconvert because this Creative has no parent.
|
|
29
|
+
delete_selection: Delete selected
|
|
30
|
+
are_you_sure_delete_selection: Are you sure you want to delete selected Creatives?
|
|
31
|
+
This cannot be undone.
|
|
32
|
+
creatives: Creatives
|
|
33
|
+
slide_view: Slide View
|
|
34
|
+
recalculate_progress: Recalculate Progress
|
|
35
|
+
recalculate_all_parent_progress: Recalculate all parent progress?
|
|
36
|
+
no_creatives: No creatives found.
|
|
37
|
+
no_sub_creatives: No sub-creatives found.
|
|
38
|
+
no_search_results: No creatives match your search.
|
|
39
|
+
search_placeholder: Search creatives...
|
|
40
|
+
recommend_parent: Recommend Category
|
|
41
|
+
import_uploading: Uploading...
|
|
42
|
+
import_success: Import successful! Reloading...
|
|
43
|
+
import_failed: Import failed.
|
|
44
|
+
export_markdown: Export to Markdown
|
|
45
|
+
export_failed: Failed to export
|
|
46
|
+
only_markdown: Only markdown (.md) or PowerPoint (.pptx) files are allowed.
|
|
47
|
+
drop_or_click_markdown: Drop or click here to select a markdown or PowerPoint
|
|
48
|
+
file
|
|
49
|
+
import_markdown: Import Markdown/PPT
|
|
50
|
+
request_permission: Request Access
|
|
51
|
+
no_permission: You do not have permission to view this Creative.
|
|
52
|
+
view_origin: Open origin creative
|
|
53
|
+
share_creative: Share Creative
|
|
54
|
+
shared_with: Shared With
|
|
55
|
+
unknown_user: Unknown user
|
|
56
|
+
public_share: Public Share
|
|
57
|
+
user_email: User Email
|
|
58
|
+
permission: Permission
|
|
59
|
+
permission_read: Read
|
|
60
|
+
permission_write: Write
|
|
61
|
+
permission_feedback: Feedback
|
|
62
|
+
permission_no_access: No access
|
|
63
|
+
permission_admin: Admin
|
|
64
|
+
share: Share
|
|
65
|
+
invite: Invite
|
|
66
|
+
invite_link: Invite Link
|
|
67
|
+
invite_link_copied: Invite link copied.
|
|
68
|
+
invite_link_copied_permission: Invite link copied with %{permission} permission.
|
|
69
|
+
invite_link_no_access: Cannot create invitation for No access permission.
|
|
70
|
+
integrations: Integrations
|
|
71
|
+
github_integration_title: Configure Github integration
|
|
72
|
+
github_integration_connect: Sign in with your Github account to start linking.
|
|
73
|
+
github_login_button: Sign in with Github
|
|
74
|
+
github_integration_choose_org: Select the organization that owns the repositories.
|
|
75
|
+
github_integration_choose_repo: Select repositories to link. You can choose
|
|
76
|
+
multiple.
|
|
77
|
+
github_integration_summary: 'The following repositories will be linked to
|
|
78
|
+
this Creative:'
|
|
79
|
+
github_integration_webhook_instructions: Webhooks are created automatically.
|
|
80
|
+
Use the details below if you ever need to configure them manually.
|
|
81
|
+
github_integration_webhook_url_label: Webhook URL
|
|
82
|
+
github_integration_webhook_secret_label: Webhook secret
|
|
83
|
+
github_integration_summary_empty: No repositories selected.
|
|
84
|
+
github_integration_saved: Github integration saved successfully.
|
|
85
|
+
github_integration_login_required: Sign in with your Github account to start
|
|
86
|
+
the integration.
|
|
87
|
+
github_integration_existing_message: You're already connected to the repositories
|
|
88
|
+
below.
|
|
89
|
+
github_integration_delete_select_warning: Select at least one repository to
|
|
90
|
+
remove.
|
|
91
|
+
github_integration_missing_creative: No Creative selected for integration.
|
|
92
|
+
github_integration_delete_confirm: Do you want to remove the Github integration?
|
|
93
|
+
github_integration_delete_success: Github integration removed successfully.
|
|
94
|
+
github_integration_delete_error: Failed to remove the Github integration.
|
|
95
|
+
github_integration_delete_button: Remove integration
|
|
96
|
+
github_integration_existing_intro: Already connected repositories
|
|
97
|
+
github_integration_prompt_title: Review the Gemini analysis prompt and edit
|
|
98
|
+
it if needed.
|
|
99
|
+
github_integration_prompt_help: 'Use the placeholders below to inject runtime
|
|
100
|
+
details as needed:'
|
|
101
|
+
notion_integration_saved: Notion integration saved successfully.
|
|
102
|
+
notion_integration_login_required: Sign in with your Notion account to start
|
|
103
|
+
the integration.
|
|
104
|
+
notion_integration_missing_creative: No Creative selected for integration.
|
|
105
|
+
notion_integration_existing_message: You're already connected to Notion pages
|
|
106
|
+
below.
|
|
107
|
+
notion_integration_delete_confirm: Do you want to remove the Notion integration?
|
|
108
|
+
notion_integration_delete_success: Notion integration removed successfully.
|
|
109
|
+
notion_integration_delete_error: Failed to remove the Notion integration.
|
|
110
|
+
notion_integration_delete_button: Remove integration
|
|
111
|
+
notion_export_success: Creative exported to Notion successfully.
|
|
112
|
+
notion_sync_success: Creative synced to Notion successfully.
|
|
113
|
+
notion_integration_title: Configure Notion integration
|
|
114
|
+
notion_integration_connect: Sign in with your Notion account to start exporting.
|
|
115
|
+
notion_login_button: Sign in with Notion
|
|
116
|
+
notion_integration_existing_intro: 'Linked Notion pages:'
|
|
117
|
+
notion_sync_button: Sync to Notion
|
|
118
|
+
notion_integration_workspace: Your Notion workspace is connected. Choose how
|
|
119
|
+
to export your creative.
|
|
120
|
+
notion_export_option: 'Export option:'
|
|
121
|
+
notion_export_new_page: Create new page
|
|
122
|
+
notion_export_under_page: Create as subpage under existing page
|
|
123
|
+
notion_parent_page: 'Parent page:'
|
|
124
|
+
notion_loading: Loading pages...
|
|
125
|
+
notion_integration_summary: 'Ready to export your creative tree to Notion:'
|
|
126
|
+
notion_creative_title: 'Root Creative:'
|
|
127
|
+
notion_workspace: 'Workspace:'
|
|
128
|
+
notion_export_as: 'Export as:'
|
|
129
|
+
notion_tree_note: This will export the selected creative and all its descendants
|
|
130
|
+
as a structured document.
|
|
131
|
+
notion_export_button: Export to Notion
|
|
132
|
+
plan_tags_applied: Plan tags applied to selected creatives.
|
|
133
|
+
plan_tag_failed: Please select a plan and at least one creative.
|
|
134
|
+
plan_tags_removed: Plan tag removed from selected creatives.
|
|
135
|
+
plan_tag_remove_failed: Please select a plan and at least one creative.
|
|
136
|
+
select_plan: Select Plan
|
|
137
|
+
remove_plan: Remove Plan
|
|
138
|
+
add_plan: Add Plan
|
|
139
|
+
set_plan_title: Set Plan for Selected Creative
|
|
140
|
+
are_you_sure_delete_share: Are you sure delete share?
|
|
141
|
+
share_deleted: The share are deleted.
|
|
142
|
+
select_one_creative: Please select at least one Creative.
|
|
143
|
+
select_plan_to_remove: Please select a Plan to remove.
|
|
144
|
+
inline_move_up_tooltip: Move to previous creative (Arrow Up / Ctrl+P)
|
|
145
|
+
inline_move_down_tooltip: Move to next creative (Arrow Down / Ctrl+N)
|
|
146
|
+
inline_add_sibling_tooltip: Add sibling (Shift+Enter)
|
|
147
|
+
inline_level_down_tooltip: Indent / add as child (Ctrl/Cmd+Shift+.)
|
|
148
|
+
inline_level_up_tooltip: Outdent / move up a level (Ctrl/Cmd+Shift+,)
|
|
149
|
+
inline_close_tooltip: Close editor (Esc)
|
|
150
|
+
share:
|
|
151
|
+
shared: Creative shared successfully.
|
|
152
|
+
already_shared_in_parent: Creative already shared in parent creative.
|
|
153
|
+
can_not_share_by_no_access_in_parent: You can not share by no access in parent
|
|
154
|
+
creative.
|
|
155
|
+
notices:
|
|
156
|
+
progress_recalculated: All parent progress recalculated.
|
|
157
|
+
errors:
|
|
158
|
+
no_permission: You do not have permission to perform this action.
|
|
159
|
+
inline_editor:
|
|
160
|
+
placeholder: Describe the creative…
|
|
161
|
+
edit_title: Edit creative
|
|
162
|
+
edit:
|
|
163
|
+
inline_editor_only_html: Editing creatives now happens directly in the inline
|
|
164
|
+
editor.
|
|
165
|
+
new:
|
|
166
|
+
inline_editor_only_html: Create creatives from the inline editor in the creative
|
|
167
|
+
tree.
|
|
168
|
+
help:
|
|
169
|
+
add_child_creative: Add child creative
|
|
170
|
+
inventory:
|
|
171
|
+
progress: "%{value} Progress"
|
|
172
|
+
completed: Completed
|
|
173
|
+
todo: Todo
|
|
174
|
+
notify_me: Email me when is progressing.
|
|
175
|
+
placeholder_email: you@example.com
|
|
176
|
+
submit: Submit
|
|
177
|
+
slide_view:
|
|
178
|
+
go_to_creative: Go to Creative
|
|
179
|
+
creative_mailer:
|
|
180
|
+
in_stock:
|
|
181
|
+
subject: Good news!
|
|
182
|
+
message_html: "%{creative} is back in stock."
|
|
183
|
+
unsubscribe: Unsubscribe
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
---
|
|
2
|
+
ko:
|
|
3
|
+
collavre:
|
|
4
|
+
creatives:
|
|
5
|
+
index:
|
|
6
|
+
up: 위로
|
|
7
|
+
new_creative: 추가
|
|
8
|
+
new_creative_shortcut: 추가 (Enter)
|
|
9
|
+
new_sub_creative: 하위에 추가
|
|
10
|
+
edit: 수정
|
|
11
|
+
append_as_parent_creative: 상위에 추가
|
|
12
|
+
append_below_creative: 아래에 추가
|
|
13
|
+
delete: 삭제
|
|
14
|
+
delete_only_this: 이 항목만 삭제
|
|
15
|
+
delete_with_children: 이 항목과 모든 하위 항목 삭제
|
|
16
|
+
are_you_sure: 정말 삭제하시겠습니까?
|
|
17
|
+
are_you_sure_delete_only_this: 이 항목만 삭제하시겠습니까? 하위 항목은 보존되고 부모에 연결됩니다.
|
|
18
|
+
are_you_sure_delete_with_children: 이 항목과 모든 하위 항목을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.
|
|
19
|
+
link: 링크
|
|
20
|
+
unlink: 링크 해제
|
|
21
|
+
are_you_sure_unlink: 링크된 크리에이티브를 삭제하시겠습니까?
|
|
22
|
+
unconvert: 역전환
|
|
23
|
+
unconvert_confirm: 현재 크리에이티브와 모든 하위 항목을 마크다운 코멘트로 변환해 상위 크리에이티브에 추가하고 삭제할까요?
|
|
24
|
+
unconvert_failed: 역전환에 실패했습니다.
|
|
25
|
+
unconvert_no_parent: 상위 크리에이티브가 없어 역전환할 수 없습니다.
|
|
26
|
+
delete_selection: 선택 항목 삭제
|
|
27
|
+
are_you_sure_delete_selection: 선택된 크리에이티브를 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.
|
|
28
|
+
creatives: 크리에이티브 목록
|
|
29
|
+
slide_view: 슬라이드 뷰
|
|
30
|
+
recalculate_progress: 진행률 다시 계산
|
|
31
|
+
recalculate_all_parent_progress: 모든 상위 진행률을 다시 계산하시겠습니까?
|
|
32
|
+
no_creatives: 크리에이티브가 없습니다.
|
|
33
|
+
no_sub_creatives: 하위 크리에이티브가 없습니다.
|
|
34
|
+
no_search_results: 검색 결과가 없습니다.
|
|
35
|
+
recommend_parent: 카테고리 추천
|
|
36
|
+
import_uploading: 업로드 중...
|
|
37
|
+
import_success: 가져오기 성공! 새로고침 중...
|
|
38
|
+
import_failed: 가져오기 실패
|
|
39
|
+
export_markdown: 마크다운 내보내기
|
|
40
|
+
export_failed: 내보내기에 실패했습니다
|
|
41
|
+
only_markdown: 마크다운(.md) 또는 파워포인트(.pptx) 파일만 가능합니다.
|
|
42
|
+
drop_or_click_markdown: 여기에 파일을 드롭하거나 클릭하여 마크다운 또는 파워포인트 파일을 선택하세요
|
|
43
|
+
import_markdown: 마크다운/PPT 가져오기
|
|
44
|
+
request_permission: 권한 요청
|
|
45
|
+
no_permission: 이 크리에이티브를 볼 권한이 없습니다.
|
|
46
|
+
view_origin: 원본 크리에이티브로 이동
|
|
47
|
+
share_creative: 크리에이티브 공유
|
|
48
|
+
shared_with: 공유 대상
|
|
49
|
+
unknown_user: 알 수 없는 사용자
|
|
50
|
+
public_share: 전체 공개
|
|
51
|
+
user_email: 사용자 이메일
|
|
52
|
+
permission: 권한
|
|
53
|
+
permission_read: 읽기
|
|
54
|
+
permission_write: 쓰기
|
|
55
|
+
permission_feedback: 피드백
|
|
56
|
+
permission_no_access: 접근 금지
|
|
57
|
+
permission_admin: 관리자
|
|
58
|
+
share: 공유하기
|
|
59
|
+
invite: 초대하기
|
|
60
|
+
invite_link: 초대 링크
|
|
61
|
+
invite_link_copied: 초대 링크가 복사되었습니다.
|
|
62
|
+
invite_link_copied_permission: "%{permission} 권한으로 초대 링크가 복사되었습니다."
|
|
63
|
+
invite_link_no_access: 접근 금지 권한으로는 초대할 수 없습니다.
|
|
64
|
+
integrations: 연동
|
|
65
|
+
github_integration_title: Github 연동 설정
|
|
66
|
+
github_integration_connect: Github 계정으로 로그인하여 연동을 시작하세요.
|
|
67
|
+
github_login_button: Github 계정으로 로그인
|
|
68
|
+
github_integration_choose_org: 연동할 Organization을 선택하세요.
|
|
69
|
+
github_integration_choose_repo: 연동할 Repository를 선택하세요. 여러 개 선택할 수 있습니다.
|
|
70
|
+
github_integration_summary: '다음 Repository가 현재 Creative와 연동됩니다:'
|
|
71
|
+
github_integration_webhook_instructions: Webhook은 자동으로 생성됩니다. 문제가 생겨 수동으로
|
|
72
|
+
설정해야 할 때 아래 정보를 참고하세요.
|
|
73
|
+
github_integration_webhook_url_label: Webhook URL
|
|
74
|
+
github_integration_webhook_secret_label: Webhook 비밀값
|
|
75
|
+
github_integration_summary_empty: 선택된 Repository가 없습니다.
|
|
76
|
+
github_integration_saved: Github 연동이 저장되었습니다.
|
|
77
|
+
github_integration_login_required: Github 계정으로 로그인하여 연동을 시작하세요.
|
|
78
|
+
github_integration_existing_message: 이미 아래 Repository와 연동 중입니다.
|
|
79
|
+
github_integration_delete_select_warning: 삭제할 Repository를 선택하세요.
|
|
80
|
+
github_integration_missing_creative: 연동할 Creative가 선택되지 않았습니다.
|
|
81
|
+
github_integration_delete_confirm: Github 연동을 삭제하시겠습니까?
|
|
82
|
+
github_integration_delete_success: Github 연동이 삭제되었습니다.
|
|
83
|
+
github_integration_delete_error: Github 연동 삭제에 실패했습니다.
|
|
84
|
+
github_integration_delete_button: 연동 삭제
|
|
85
|
+
github_integration_existing_intro: '이미 연동된 Repository 목록입니다:'
|
|
86
|
+
github_integration_prompt_title: Gemini 분석 프롬프트를 확인하고 필요시 수정하세요.
|
|
87
|
+
github_integration_prompt_help: '아래 플레이스홀더를 사용하여 런타임 정보를 삽입할 수 있습니다:'
|
|
88
|
+
notion_integration_saved: Notion 연동이 저장되었습니다.
|
|
89
|
+
notion_integration_login_required: Notion 계정으로 로그인하여 연동을 시작하세요.
|
|
90
|
+
notion_integration_missing_creative: 연동할 Creative가 선택되지 않았습니다.
|
|
91
|
+
notion_integration_existing_message: 이미 아래 Notion 페이지와 연동 중입니다.
|
|
92
|
+
notion_integration_delete_confirm: Notion 연동을 삭제하시겠습니까?
|
|
93
|
+
notion_integration_delete_success: Notion 연동이 삭제되었습니다.
|
|
94
|
+
notion_integration_delete_error: Notion 연동 삭제에 실패했습니다.
|
|
95
|
+
notion_integration_delete_button: 연동 삭제
|
|
96
|
+
notion_export_success: Creative가 Notion으로 내보내기 되었습니다.
|
|
97
|
+
notion_sync_success: Creative가 Notion과 동기화되었습니다.
|
|
98
|
+
notion_integration_title: Notion 연동 설정
|
|
99
|
+
notion_integration_connect: Notion 계정으로 로그인하여 내보내기를 시작하세요.
|
|
100
|
+
notion_login_button: Notion 계정으로 로그인
|
|
101
|
+
notion_integration_existing_intro: '연동된 Notion 페이지:'
|
|
102
|
+
notion_sync_button: Notion으로 동기화
|
|
103
|
+
notion_integration_workspace: Notion 워크스페이스가 연결되었습니다. 내보내기 방법을 선택하세요.
|
|
104
|
+
notion_export_option: '내보내기 옵션:'
|
|
105
|
+
notion_export_new_page: 새 페이지 생성
|
|
106
|
+
notion_export_under_page: 기존 페이지 하위에 생성
|
|
107
|
+
notion_parent_page: '상위 페이지:'
|
|
108
|
+
notion_loading: 페이지 로딩 중...
|
|
109
|
+
notion_integration_summary: 'Creative 트리를 Notion으로 내보낼 준비가 되었습니다:'
|
|
110
|
+
notion_creative_title: '루트 Creative:'
|
|
111
|
+
notion_workspace: '워크스페이스:'
|
|
112
|
+
notion_export_as: '내보내기 형태:'
|
|
113
|
+
notion_tree_note: 선택한 크리에이티브와 모든 하위 항목이 구조화된 문서로 내보내집니다.
|
|
114
|
+
notion_export_button: Notion으로 내보내기
|
|
115
|
+
search_placeholder: 크리에이티브 검색...
|
|
116
|
+
plan_tags_applied: 선택한 크리에이티브에 플랜 태그가 적용되었습니다.
|
|
117
|
+
plan_tag_failed: 플랜과 하나 이상의 크리에이티브를 선택하세요.
|
|
118
|
+
plan_tags_removed: 선택한 크리에이티브에서 플랜 태그가 제거되었습니다.
|
|
119
|
+
plan_tag_remove_failed: 플랜과 하나 이상의 크리에이티브를 선택하세요.
|
|
120
|
+
select_plan: 계획 선택
|
|
121
|
+
remove_plan: 계획 제거
|
|
122
|
+
add_plan: 계획 추가
|
|
123
|
+
set_plan_title: 선택된 크리에이티브에 대한 계획 설정
|
|
124
|
+
are_you_sure_delete_share: 공유를 삭제하시겠습니까?
|
|
125
|
+
share_deleted: 공유가 삭제 되었습니다.
|
|
126
|
+
select_one_creative: 하나 이상의 크리에이티브를 선택하세요.
|
|
127
|
+
select_plan_to_remove: 제거할 플랜을 선택하세요.
|
|
128
|
+
inline_move_up_tooltip: 이전 크리에이티브로 이동 (위쪽 화살표 / Ctrl+P)
|
|
129
|
+
inline_move_down_tooltip: 다음 크리에이티브로 이동 (아래쪽 화살표 / Ctrl+N)
|
|
130
|
+
inline_add_sibling_tooltip: 형제 크리에이티브 추가 (Shift+Enter)
|
|
131
|
+
inline_level_down_tooltip: 들여쓰기 / 자식으로 이동 (Ctrl/Cmd+Shift+.)
|
|
132
|
+
inline_level_up_tooltip: 내어쓰기 / 상위로 이동 (Ctrl/Cmd+Shift+,)
|
|
133
|
+
inline_close_tooltip: 편집기 닫기 (Esc)
|
|
134
|
+
share:
|
|
135
|
+
shared: 크리에이티브가 성공적으로 공유되었습니다.
|
|
136
|
+
already_shared_in_parent: 크리에이티브가 상위 크리에이티브에 이미 공유되었습니다.
|
|
137
|
+
can_not_share_by_no_access_in_parent: 상위 크리에이티브에 접근 금지가 있어서 공유할 수 없습니다.
|
|
138
|
+
notices:
|
|
139
|
+
progress_recalculated: 진행률을 다시 계산 했습니다.
|
|
140
|
+
errors:
|
|
141
|
+
no_permission: 이 작업을 수행할 권한이 없습니다.
|
|
142
|
+
inline_editor:
|
|
143
|
+
placeholder: 크리에이티브를 설명해주세요…
|
|
144
|
+
edit_title: 크리에이티브 수정
|
|
145
|
+
edit:
|
|
146
|
+
inline_editor_only_html: 크리에이티브 수정은 인라인 편집기에서 바로 진행하세요.
|
|
147
|
+
new:
|
|
148
|
+
inline_editor_only_html: 크리에이티브 추가는 트리의 인라인 편집기에서 진행하세요.
|
|
149
|
+
help:
|
|
150
|
+
add_child_creative: 하위 크리에이티브 추가
|
|
151
|
+
inventory:
|
|
152
|
+
progress: "%{value} 진행률"
|
|
153
|
+
completed: 완료됨
|
|
154
|
+
todo: 할 일
|
|
155
|
+
notify_me: 진행 상황을 이메일로 알려주세요.
|
|
156
|
+
placeholder_email: you@example.com
|
|
157
|
+
submit: 제출
|
|
158
|
+
slide_view:
|
|
159
|
+
go_to_creative: 현재 크리에이티브로 이동
|
|
160
|
+
creative_mailer:
|
|
161
|
+
in_stock:
|
|
162
|
+
subject: 좋은 소식!
|
|
163
|
+
message_html: "%{creative} 이 다시 이용 가능합니다."
|
|
164
|
+
unsubscribe: 구독 취소
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
en:
|
|
3
|
+
collavre:
|
|
4
|
+
invites:
|
|
5
|
+
invalid: Invitation link is invalid or has expired.
|
|
6
|
+
invite_sent: Invitation email sent.
|
|
7
|
+
show:
|
|
8
|
+
title: Invitation
|
|
9
|
+
invited_by: '%{inviter} (%{email}) invited you to the "%{creative}" creative.'
|
|
10
|
+
prompt: To accept the invitation, please log in or sign up.
|
|
11
|
+
login: Log in
|
|
12
|
+
sign_up: Sign up
|
|
13
|
+
invitation_mailer:
|
|
14
|
+
invite:
|
|
15
|
+
subject: You're invited to Collavre
|
|
16
|
+
message_html: You have been invited to collaborate on "%{creative}". Click
|
|
17
|
+
%{link} to accept within 15 days.
|
|
18
|
+
message_text: 'You have been invited to collaborate on "%{creative}". Join
|
|
19
|
+
using this link: %{link}'
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
ko:
|
|
3
|
+
collavre:
|
|
4
|
+
invites:
|
|
5
|
+
invalid: 초대 링크가 잘못되었거나 만료되었습니다.
|
|
6
|
+
invite_sent: 초대 이메일을 보냈습니다.
|
|
7
|
+
show:
|
|
8
|
+
title: 초대
|
|
9
|
+
invited_by: '%{inviter} (%{email})님이 "%{creative}" 크리에이티브에 초대했습니다.'
|
|
10
|
+
prompt: 초대를 수락하려면 로그인하거나 회원 가입을 해주세요.
|
|
11
|
+
login: 로그인
|
|
12
|
+
sign_up: 회원 가입
|
|
13
|
+
invitation_mailer:
|
|
14
|
+
invite:
|
|
15
|
+
subject: 콜라브에 초대되었습니다
|
|
16
|
+
message_html: '"%{creative}" 협업에 초대되었습니다. %{link} 링크를 클릭해 15일 이내에 수락하세요.'
|
|
17
|
+
message_text: '"%{creative}" 협업에 초대되었습니다. 이 링크로 참여하세요: %{link}'
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
en:
|
|
3
|
+
collavre:
|
|
4
|
+
plans:
|
|
5
|
+
add_plan: Add Plan
|
|
6
|
+
target_date: Target Date
|
|
7
|
+
plan_name: Plan Name
|
|
8
|
+
created: Plan was successfully created.
|
|
9
|
+
deleted: Plan deleted.
|
|
10
|
+
delete_confirm: Are you sure you want to delete this plan?
|
|
11
|
+
today: Today
|
|
12
|
+
select_creative: Select Creative
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
ko:
|
|
3
|
+
collavre:
|
|
4
|
+
plans:
|
|
5
|
+
add_plan: 계획 추가
|
|
6
|
+
target_date: 목표 날짜
|
|
7
|
+
plan_name: 계획 이름
|
|
8
|
+
created: 계획이 성공적으로 생성되었습니다.
|
|
9
|
+
deleted: 계획이 삭제되었습니다.
|
|
10
|
+
delete_confirm: 이 계획을 삭제하시겠습니까?
|
|
11
|
+
today: 오늘
|
|
12
|
+
select_creative: 크리에이티브 선택
|
|
13
|
+
activerecord:
|
|
14
|
+
errors:
|
|
15
|
+
models:
|
|
16
|
+
plan:
|
|
17
|
+
attributes:
|
|
18
|
+
target_date:
|
|
19
|
+
blank: 목표 날짜를 입력하세요.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
en:
|
|
3
|
+
collavre:
|
|
4
|
+
themes:
|
|
5
|
+
manage: Manage Themes
|
|
6
|
+
manage_themes: Manage Themes
|
|
7
|
+
create_new: Create New Theme
|
|
8
|
+
description_prompt: Describe your theme (e.g. "Cyberpunk Neon with dark pulsing
|
|
9
|
+
colors")
|
|
10
|
+
generate: Generate Theme
|
|
11
|
+
your_themes: Your Themes
|
|
12
|
+
name: Name
|
|
13
|
+
preview: Preview
|
|
14
|
+
created_at: Created At
|
|
15
|
+
actions: Actions
|
|
16
|
+
active: Active
|
|
17
|
+
apply: Apply
|
|
18
|
+
delete: Delete
|
|
19
|
+
confirm_delete: Are you sure?
|
|
20
|
+
no_themes: No custom themes created yet.
|
|
21
|
+
alerts:
|
|
22
|
+
description_empty: Theme description cannot be empty.
|
|
23
|
+
generation_failed: Failed to generate theme. AI might be unavailable or returned
|
|
24
|
+
invalid data.
|
|
25
|
+
success: Theme generated successfully!
|
|
26
|
+
save_failed: Failed to save theme.
|
|
27
|
+
deleted: Theme deleted.
|
|
28
|
+
applied: Theme applied!
|
|
29
|
+
apply_failed: 'Failed to apply theme: %{errors}'
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
ko:
|
|
3
|
+
collavre:
|
|
4
|
+
themes:
|
|
5
|
+
manage: 테마 관리
|
|
6
|
+
manage_themes: 테마 관리
|
|
7
|
+
create_new: 새 테마 만들기
|
|
8
|
+
description_prompt: '테마를 설명해주세요 (예: "어두운 네온 사이버펑크 스타일")'
|
|
9
|
+
generate: 테마 생성
|
|
10
|
+
your_themes: 내 테마
|
|
11
|
+
name: 이름
|
|
12
|
+
preview: 미리보기
|
|
13
|
+
created_at: 생성일
|
|
14
|
+
actions: 관리
|
|
15
|
+
active: 사용 중
|
|
16
|
+
apply: 적용
|
|
17
|
+
delete: 삭제
|
|
18
|
+
confirm_delete: 정말 삭제하시겠습니까?
|
|
19
|
+
no_themes: 생성된 테마가 없습니다.
|
|
20
|
+
alerts:
|
|
21
|
+
description_empty: 테마 설명을 입력해주세요.
|
|
22
|
+
generation_failed: 테마 생성에 실패했습니다. AI 서비스를 사용할 수 없거나 잘못된 데이터가 반환되었습니다.
|
|
23
|
+
success: 테마가 성공적으로 생성되었습니다!
|
|
24
|
+
save_failed: 테마 저장에 실패했습니다.
|
|
25
|
+
deleted: 테마가 삭제되었습니다.
|
|
26
|
+
applied: 테마가 적용되었습니다!
|
|
27
|
+
apply_failed: '테마 적용 실패: %{errors}'
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
---
|
|
2
|
+
en:
|
|
3
|
+
collavre:
|
|
4
|
+
users:
|
|
5
|
+
app_header:
|
|
6
|
+
your_creativeness_is_coming: Your Creativeness Is Coming!
|
|
7
|
+
a_tracker_of_your_creatives: Document the specs. Watch progress unfold.
|
|
8
|
+
new:
|
|
9
|
+
enter_your_name: Enter your name
|
|
10
|
+
enter_your_email: Enter your email
|
|
11
|
+
enter_your_password: Enter your password
|
|
12
|
+
confirm_your_password: Confirm your password
|
|
13
|
+
sign_up: Sign Up
|
|
14
|
+
back_to_sign_in: Back to Sign In
|
|
15
|
+
success_sign_up: Account created successfully! Please check your email to
|
|
16
|
+
verify.
|
|
17
|
+
add_ai_user: Add AI User
|
|
18
|
+
details_ai_notice: This is an AI Agent. You can configure its settings and tools.
|
|
19
|
+
new_ai:
|
|
20
|
+
title: Add AI User
|
|
21
|
+
id_label: ID
|
|
22
|
+
name_label: Name
|
|
23
|
+
system_prompt_label: System Prompt
|
|
24
|
+
vendor_label: LLM Vendor
|
|
25
|
+
model_label: Model
|
|
26
|
+
api_key_label: API Key
|
|
27
|
+
api_key_help: If provided, this key will be used instead of the system default.
|
|
28
|
+
Stored encrypted.
|
|
29
|
+
searchable_label: Allow this AI to be searchable and mentionable
|
|
30
|
+
searchable_help: When enabled, others can find and mention this AI by name.
|
|
31
|
+
submit: Add AI Agent
|
|
32
|
+
tools_note: You can check and test available tools after creating the agent.
|
|
33
|
+
create_ai:
|
|
34
|
+
success: AI User created successfully.
|
|
35
|
+
edit_ai:
|
|
36
|
+
title: Edit AI Agent
|
|
37
|
+
link: Edit
|
|
38
|
+
not_an_ai: This user is not an AI agent.
|
|
39
|
+
tools_title: Available Tools
|
|
40
|
+
tools_description: These tools are available for the agent to use.
|
|
41
|
+
no_tools_found: No tools found.
|
|
42
|
+
chat_title: Chat with Agent
|
|
43
|
+
chat_placeholder: Type a message to test the agent...
|
|
44
|
+
update_ai:
|
|
45
|
+
success: AI Agent updated successfully.
|
|
46
|
+
sessions:
|
|
47
|
+
new:
|
|
48
|
+
forgot_password: Forgot password?
|
|
49
|
+
try_again_later: Try again later.
|
|
50
|
+
try_another_email_or_password: Try another email address or password.
|
|
51
|
+
email_not_verified: You must verify your email before signing in.
|
|
52
|
+
provider_disabled: This authentication method is currently disabled.
|
|
53
|
+
account_locked: Account is locked due to too many failed login attempts.
|
|
54
|
+
Please try again in %{minutes} minute(s).
|
|
55
|
+
account_locked_now: Account has been locked due to too many failed login
|
|
56
|
+
attempts. Please try again in %{minutes} minute(s).
|
|
57
|
+
sign_in_with_google: Sign in with Google
|
|
58
|
+
sign_in_with_webauthn: Sign in with Passkey
|
|
59
|
+
webauthn:
|
|
60
|
+
passkeys: Passkeys
|
|
61
|
+
add: Add Passkey
|
|
62
|
+
manage: Manage Passkeys
|
|
63
|
+
nickname: Device Name
|
|
64
|
+
register: Register
|
|
65
|
+
registered_on: Registered on %{date}
|
|
66
|
+
credential_not_found: Passkey not found. Please register a passkey in your
|
|
67
|
+
profile settings after logging in with password.
|
|
68
|
+
not_supported: Passkeys are not supported on this device or browser.
|
|
69
|
+
date: Date
|
|
70
|
+
list_empty: No passkeys registered.
|
|
71
|
+
confirm_delete: Are you sure you want to delete this passkey?
|
|
72
|
+
delete: Delete
|
|
73
|
+
deleted: Passkey deleted.
|
|
74
|
+
details: User Details
|
|
75
|
+
name: Name
|
|
76
|
+
email: Email
|
|
77
|
+
change_password: Change password
|
|
78
|
+
tabs:
|
|
79
|
+
profile: Profile
|
|
80
|
+
user_management: User management
|
|
81
|
+
profile: Profile
|
|
82
|
+
avatar: Avatar
|
|
83
|
+
avatar_url: Avatar URL
|
|
84
|
+
current_avatar: Current avatar
|
|
85
|
+
new_avatar_preview: New avatar preview
|
|
86
|
+
update_profile: Update Profile
|
|
87
|
+
delete: Delete
|
|
88
|
+
make_system_admin: Make system admin
|
|
89
|
+
make_normal_user: Make normal user
|
|
90
|
+
confirm_grant_system_admin: Grant system admin access to this user?
|
|
91
|
+
confirm_destroy: Are you sure you want to delete all of this user's data?
|
|
92
|
+
index_title: Users
|
|
93
|
+
push_token_present: Push token present
|
|
94
|
+
push_token_absent: No push token
|
|
95
|
+
display_level: Max Display Level
|
|
96
|
+
completion_mark: Completion Mark
|
|
97
|
+
theme: Theme
|
|
98
|
+
calendar_id: Calendar ID
|
|
99
|
+
notifications_enabled: Enable notifications
|
|
100
|
+
locale: Language
|
|
101
|
+
locales:
|
|
102
|
+
en: English
|
|
103
|
+
ko: Korean
|
|
104
|
+
timezone: Timezone
|
|
105
|
+
profile_updated: Profile updated successfully.
|
|
106
|
+
avatar_updated: Avatar updated successfully.
|
|
107
|
+
password_updated: Password updated successfully.
|
|
108
|
+
password_update_failed: Failed to update password.
|
|
109
|
+
current_password: Current Password
|
|
110
|
+
new_password: New Password
|
|
111
|
+
confirm_new_password: Confirm New Password
|
|
112
|
+
password_min_length_hint: Minimum %{count} characters
|
|
113
|
+
back: Back
|
|
114
|
+
current_password_incorrect: Current password is incorrect.
|
|
115
|
+
forgot_password: Forgot your password?
|
|
116
|
+
send_password_reset_instructions: Email reset instructions
|
|
117
|
+
email_verified: Email verified successfully.
|
|
118
|
+
verification_invalid: Verification link is invalid or has expired.
|
|
119
|
+
email_verification:
|
|
120
|
+
invalid_token: Verification link is invalid or has expired.
|
|
121
|
+
admin_required: You must be a system administrator to access that page.
|
|
122
|
+
system_admin:
|
|
123
|
+
granted: System admin access granted.
|
|
124
|
+
revoked: System admin access removed.
|
|
125
|
+
failed: Could not update the user's system admin status.
|
|
126
|
+
destroy:
|
|
127
|
+
success: The user and all associated data have been deleted.
|
|
128
|
+
failure: Could not delete the user.
|
|
129
|
+
cannot_delete_self: You cannot delete your own account.
|
|
130
|
+
not_authorized: You can only delete AI Users you created or be a system administrator.
|
|
131
|
+
delete_ai_user: Delete AI User
|
|
132
|
+
confirm_ai: Delete all data for this AI Agent?
|
|
133
|
+
table:
|
|
134
|
+
avatar: Avatar
|
|
135
|
+
name: Name
|
|
136
|
+
email: Email
|
|
137
|
+
last_login_at: Last login
|
|
138
|
+
last_login_unknown: Never
|
|
139
|
+
push_token: Push token
|
|
140
|
+
notifications: Notifications
|
|
141
|
+
notifications_enabled: Enabled
|
|
142
|
+
notifications_disabled: Disabled
|
|
143
|
+
notifications_unset: Not configured
|
|
144
|
+
actions: Actions
|
|
145
|
+
current_user: This is you
|
|
146
|
+
system_admin: System admin
|
|
147
|
+
user_mailer:
|
|
148
|
+
email_verification:
|
|
149
|
+
subject: Verify your email
|
|
150
|
+
message_html: Please verify your email by clicking %{link}.
|
|
151
|
+
message_text: 'Please verify your email by visiting the following link: %{link}'
|