diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..7a8c9524 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,12 @@ +## What does this PR do + +## Rationale for this change + +## Standards checklist + +- [ ] The PR title is descriptive +- [ ] The commit messages are [semantic](https://www.conventionalcommits.org/) +- [ ] Necessary tests are added +- [ ] Updated the release notes +- [ ] Necessary documents have been added if this is a new feature +- [ ] Performance tests checked, no obvious performance degradation \ No newline at end of file diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml new file mode 100644 index 00000000..9e3f1ce6 --- /dev/null +++ b/.github/workflows/build-docs.yml @@ -0,0 +1,119 @@ +name: Build and Deploy Docs + +on: + push: + branches: + - main + - 'v*' + tags: + - 'v*' + +jobs: + build-deploy-docs: + runs-on: ubuntu-latest + + steps: + - name: Checkout Product Repo + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Set Variables Based on Ref + id: vars + run: | + PRODUCT_NAME=$(basename $(pwd)) # Get the directory name as the product name + echo "PRODUCT_NAME=$PRODUCT_NAME" >> $GITHUB_ENV + CURRENT_REF=${GITHUB_REF##*/} + IS_SEMVER=false + SEMVER_REGEX="^v([0-9]+)\.([0-9]+)\.([0-9]+)$" + + if [[ "${GITHUB_REF_TYPE}" == "branch" ]]; then + if [[ "$CURRENT_REF" == "main" ]]; then + echo "VERSION=main" >> $GITHUB_ENV + echo "BRANCH=main" >> $GITHUB_ENV + elif [[ "$CURRENT_REF" =~ $SEMVER_REGEX ]]; then + IS_SEMVER=true + echo "VERSION=$CURRENT_REF" >> $GITHUB_ENV + echo "BRANCH=$CURRENT_REF" >> $GITHUB_ENV + else + echo "Branch '$CURRENT_REF' is not a valid semantic version. Skipping build." + exit 0 + fi + elif [[ "${GITHUB_REF_TYPE}" == "tag" ]]; then + if [[ "$CURRENT_REF" =~ $SEMVER_REGEX ]]; then + IS_SEMVER=true + echo "VERSION=$CURRENT_REF" >> $GITHUB_ENV + echo "BRANCH=main" >> $GITHUB_ENV # Set BRANCH to 'main' for tags + else + echo "Tag '$CURRENT_REF' is not a valid semantic version. Skipping build." + exit 0 + fi + fi + + # Gather branches and tags, filter for semantic versions, sort, remove duplicates + VERSIONS=$(git for-each-ref refs/remotes/origin refs/tags --format="%(refname:short)" | \ + grep -E "^v[0-9]+\.[0-9]+\.[0-9]+$" | sort -Vr | uniq | tr '\n' ',' | sed 's/,$//') + echo "VERSIONS=main,$VERSIONS" >> $GITHUB_ENV + + - name: Install Hugo + run: | + wget https://github.com/gohugoio/hugo/releases/download/v0.79.1/hugo_extended_0.79.1_Linux-64bit.tar.gz + tar -xzvf hugo_extended_0.79.1_Linux-64bit.tar.gz + sudo mv hugo /usr/local/bin/ + + - name: Checkout Docs Repo + uses: actions/checkout@v2 + with: + repository: infinilabs/docs + path: docs-output + token: ${{ secrets.DOCS_DEPLOYMENT_TOKEN }} + + - name: Build Documentation + run: | + (cd docs && OUTPUT=$(pwd)/../docs-output make docs-build docs-place-redirect) + + - name: Commit and Push Changes to Docs Repo + working-directory: docs-output + run: | + git config user.name "GitHub Actions" + git config user.email "actions@github.com" + + if [[ -n $(git status --porcelain) ]]; then + git add . + git commit -m "Rebuild $PRODUCT_NAME docs for version $VERSION" + git push origin main + else + echo "No changes to commit." + fi + + - name: Rebuild Docs for Latest Version (main), if not already on main + run: | + # Only rebuild the main branch docs if the current ref is not "main" + if [[ "$CURRENT_REF" != "main" ]]; then + echo "Switching to main branch and rebuilding docs for 'latest'" + + # Checkout the main branch of the product repo to rebuild docs for "latest" + git checkout main + + # Ensure the latest changes are pulled + git pull origin main + + # Build Docs for Main Branch (latest) + (cd docs && OUTPUT=$(pwd)/../docs-output VERSION="main" BRANCH="main" make docs-build docs-place-redirect) + + # Commit and Push Latest Docs to Main + cd docs-output + git config user.name "GitHub Actions" + git config user.email "actions@github.com" + + if [[ -n $(git status --porcelain) ]]; then + git add . + git commit -m "Rebuild $PRODUCT_NAME docs for main branch with latest version" + git push origin main + else + echo "No changes to commit for main." + fi + else + echo "Current ref is 'main', skipping rebuild for 'latest'." + fi + working-directory: ./ # Working in the product repo diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 00000000..08fd654d --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,4 @@ +/public/ +resources/_gen/ +/themes/ +/config.bak diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 00000000..39d4f93c --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,54 @@ +SHELL=/bin/bash + +# Basic info +PRODUCT?= $(shell basename "$(shell cd .. && pwd)") +BRANCH?= main +VERSION?= $(shell [[ "$(BRANCH)" == "main" ]] && echo "main" || echo "$(BRANCH)") +CURRENT_VERSION?= $(VERSION) +VERSIONS?= "main" +OUTPUT?= "/tmp/docs" +THEME_FOLDER?= "themes/book" +THEME_REPO?= "https://github.com/infinilabs/docs-theme.git" +THEME_BRANCH?= "main" + +.PHONY: docs-build + +default: docs-build + +docs-init: + @if [ ! -d $(THEME_FOLDER) ]; then echo "theme does not exist";(git clone -b $(THEME_BRANCH) $(THEME_REPO) $(THEME_FOLDER) ) fi + +docs-env: + @echo "Debugging Variables:" + @echo "PRODUCT: $(PRODUCT)" + @echo "BRANCH: $(BRANCH)" + @echo "VERSION: $(VERSION)" + @echo "CURRENT_VERSION: $(CURRENT_VERSION)" + @echo "VERSIONS: $(VERSIONS)" + @echo "OUTPUT: $(OUTPUT)" + +docs-config: docs-init + cp config.yaml config.bak + # Detect OS and apply the appropriate sed command + @if [ "$$(uname)" = "Darwin" ]; then \ + echo "Running on macOS"; \ + sed -i '' "s/BRANCH/$(VERSION)/g" config.yaml; \ + else \ + echo "Running on Linux"; \ + sed -i 's/BRANCH/$(VERSION)/g' config.yaml; \ + fi + +docs-build: docs-config + hugo --minify --theme book --destination="$(OUTPUT)/$(PRODUCT)/$(VERSION)" \ + --baseURL="/$(PRODUCT)/$(VERSION)" + @$(MAKE) docs-restore-generated-file + +docs-serve: docs-config + hugo serve + @$(MAKE) docs-restore-generated-file + +docs-place-redirect: + echo "
" > $(OUTPUT)/$(PRODUCT)/index.html + +docs-restore-generated-file: + mv config.bak config.yaml diff --git a/docs/config.yaml b/docs/config.yaml new file mode 100644 index 00000000..3dce8e25 --- /dev/null +++ b/docs/config.yaml @@ -0,0 +1,93 @@ +# VERSIONS=latest,v1.0 hugo --minify --baseURL="/product/v1.0/" -d public/product/v1.0 + +title: Coco AI App +theme: book + +# Book configuration +disablePathToLower: true +enableGitInfo: false + +# Needed for mermaid/katex shortcodes +markup: + goldmark: + renderer: + unsafe: true + tableOfContents: + startLevel: 1 + +# Multi-lingual mode config +# There are different options to translate files +# See https://gohugo.io/content-management/multilingual/#translation-by-filename +# And https://gohugo.io/content-management/multilingual/#translation-by-content-directory +defaultContentLanguage: en +languages: + en: + languageName: English + contentDir: content.en + weight: 3 + + +menu: + before: [] + after: + - name: "Github" + url: "https://github.com/infinilabs/coco-app" + weight: 10 + +params: + # (Optional, default light) Sets color theme: light, dark or auto. + # Theme 'auto' switches between dark and light modes based on browser/os preferences + BookTheme: "auto" + + # (Optional, default true) Controls table of contents visibility on right side of pages. + # Start and end levels can be controlled with markup.tableOfContents setting. + # You can also specify this parameter per page in front matter. + BookToC: true + + # (Optional, default none) Set the path to a logo for the book. If the logo is + # /static/logo.png then the path would be logo.png + BookLogo: img/logo + + # (Optional, default none) Set leaf bundle to render as side menu + # When not specified file structure and weights will be used +# BookMenuBundle: /menu + + # (Optional, default docs) Specify root page to render child pages as menu. + # Page is resoled by .GetPage function: https://gohugo.io/functions/getpage/ + # For backward compatibility you can set '*' to render all sections to menu. Acts same as '/' + BookSection: docs + + # Set source repository location. + # Used for 'Last Modified' and 'Edit this page' links. + BookRepo: https://github.com/infinilabs/coco-app + + # Enable "Edit this page" links for 'doc' page type. + # Disabled by default. Uncomment to enable. Requires 'BookRepo' param. + # Edit path must point to root directory of repo. + BookEditPath: edit/BRANCH/docs + + # Configure the date format used on the pages + # - In git information + # - In blog posts + BookDateFormat: "January 2, 2006" + + # (Optional, default true) Enables search function with flexsearch, + # Index is built on fly, therefore it might slowdown your website. + # Configuration for indexing can be adjusted in i18n folder per language. + BookSearch: false + + # (Optional, default true) Enables comments template on pages + # By default partals/docs/comments.html includes Disqus template + # See https://gohugo.io/content-management/comments/#configure-disqus + # Can be overwritten by same param in page frontmatter + BookComments: false + + # /!\ This is an experimental feature, might be removed or changed at any time + # (Optional, experimental, default false) Enables portable links and link checks in markdown pages. + # Portable links meant to work with text editors and let you write markdown without {{< relref >}} shortcode + # Theme will print warning if page referenced in markdown does not exists. + BookPortableLinks: true + + # /!\ This is an experimental feature, might be removed or changed at any time + # (Optional, experimental, default false) Enables service worker that caches visited pages and resources for offline use. + BookServiceWorker: false diff --git a/docs/content.en/_index.md b/docs/content.en/_index.md new file mode 100644 index 00000000..4ff0aa1c --- /dev/null +++ b/docs/content.en/_index.md @@ -0,0 +1,25 @@ +--- +title: Coco AI App +type: docs +--- + +# Coco AI - **Co**nnect & **Co**llaborate + +Coco AI is a fully open-source, cross-platform unified search and productivity tool that connects and searches across various data sources, including applications, files, Google Drive, Notion, Yuque, Hugo, and more, both local and cloud-based. By integrating with large models like DeepSeek, Coco AI enables intelligent personal knowledge management, emphasizing privacy and supporting private deployment, helping users quickly and intelligently access their information. + + + + +For more details on Coco Server, visit: [https://docs.infinilabs.com/coco-app/](https://docs.infinilabs.com/coco-app/). + +## Community + +Feel free to join the Discord server to discuss anything related to this project: + +👉 [Join the INFINI Community on Discord](https://discord.gg/4tKTMkkvVX) + + +## License + +Coco AI is a truly open-source project, licensed under the [MIT License](https://github.com/infinilabs/coco-app/blob/main/LICENSE). +We also offer a commercially supported, enterprise-ready version of the software. \ No newline at end of file diff --git a/docs/content.en/docs/_index.md b/docs/content.en/docs/_index.md new file mode 100644 index 00000000..ed3a15cb --- /dev/null +++ b/docs/content.en/docs/_index.md @@ -0,0 +1,24 @@ +--- +title: Coco AI App +type: docs +--- + +# Coco AI - **Co**nnect & **Co**llaborate + +Coco AI is a fully open-source, cross-platform unified search and productivity tool that connects and searches across various data sources, including applications, files, Google Drive, Notion, Yuque, Hugo, and more, both local and cloud-based. By integrating with large models like DeepSeek, Coco AI enables intelligent personal knowledge management, emphasizing privacy and supporting private deployment, helping users quickly and intelligently access their information. + + + +For more details on Coco Server, visit: [https://docs.infinilabs.com/coco-app/](https://docs.infinilabs.com/coco-app/). + +## Community + +Feel free to join the Discord server to discuss anything related to this project: + +👉 [Join the INFINI Community on Discord](https://discord.gg/4tKTMkkvVX) + + +## License + +Coco AI is a truly open-source project, licensed under the [MIT License](https://github.com/infinilabs/coco-app/blob/main/LICENSE). +We also offer a commercially supported, enterprise-ready version of the software. \ No newline at end of file diff --git a/docs/content.en/docs/getting-started/_index.md b/docs/content.en/docs/getting-started/_index.md new file mode 100644 index 00000000..b3ec27d6 --- /dev/null +++ b/docs/content.en/docs/getting-started/_index.md @@ -0,0 +1,5 @@ +--- +weight: 10 +title: "Getting Started" +bookCollapseSection: false +--- diff --git a/docs/content.en/docs/getting-started/installation/_index.md b/docs/content.en/docs/getting-started/installation/_index.md new file mode 100644 index 00000000..90ad6c1d --- /dev/null +++ b/docs/content.en/docs/getting-started/installation/_index.md @@ -0,0 +1,5 @@ +--- +weight: 10 +title: "Installation" +bookCollapseSection: true +--- diff --git a/docs/content.en/docs/getting-started/installation/screenshot.md b/docs/content.en/docs/getting-started/installation/screenshot.md new file mode 100644 index 00000000..02fcbea4 --- /dev/null +++ b/docs/content.en/docs/getting-started/installation/screenshot.md @@ -0,0 +1,21 @@ +--- +weight: 10 +title: "Mac OS" +asciinema: true +--- + +# Mac OS + +## Download Coco AI + +Goto [https://coco.rs/](https://coco.rs/) + + + +## Unzip DMG file + + + +## Drag to Application Folder + + \ No newline at end of file diff --git a/docs/content.en/docs/getting-started/screenshot.md b/docs/content.en/docs/getting-started/screenshot.md new file mode 100644 index 00000000..2329aa03 --- /dev/null +++ b/docs/content.en/docs/getting-started/screenshot.md @@ -0,0 +1,36 @@ +--- +weight: 10 +title: "Screenshot" +asciinema: true +--- + +# Screenshot + +## Screenshot Gallery + +Here are some screenshots showcasing the user interface: + +**Search Local Desktop Applications** + + Seamlessly search through your local apps directly from Coco AI. + + +**Search Across Personal & Enterprise Knowledge Bases** +  + + Perform hybrid searches across multiple data sources, including personal and company knowledge bases. + +**Chat with Your AI Assistant** +  + + Interact with the AI assistant, which leverages your personal knowledge base to provide detailed and intelligent answers. + +**Chat History View** +  + + The AI Assistant allows you to review past conversations, ensuring context-aware responses. + +**Private Deployment Support** + + You can deploy Coco Server privately, ensuring data security and privacy. + diff --git a/docs/content.en/docs/release-notes/_index.md b/docs/content.en/docs/release-notes/_index.md new file mode 100644 index 00000000..15c1200c --- /dev/null +++ b/docs/content.en/docs/release-notes/_index.md @@ -0,0 +1,35 @@ +--- +weight: 80 +title: "Release Notes" +--- + +# Release Notes + +Information about release notes of Coco Server is provided here. + +## Latest (In development) + +### Features +### Breaking changes +### Bug fix +### Improvements + +## 0.1.0 (2015-02-16) + +### Features +- Fusion Search +- Chat with AI Assistant +- RAG-based AI Chat +- General Settings +- Global Shortcut +- Auto Start on Startup +- Shortcut to Features +- Application Search for macOS +- Option to Connect to Self-Hosted Coco Server + +### Breaking changes + +### Bug fix + +### Improvements + diff --git a/docs/static/img/download-mac-app.png b/docs/static/img/download-mac-app.png new file mode 100644 index 00000000..18427255 Binary files /dev/null and b/docs/static/img/download-mac-app.png differ diff --git a/docs/static/img/drag-to-application-folder.png b/docs/static/img/drag-to-application-folder.png new file mode 100644 index 00000000..d938c35f Binary files /dev/null and b/docs/static/img/drag-to-application-folder.png differ diff --git a/docs/static/img/logo-en.svg b/docs/static/img/logo-en.svg new file mode 100644 index 00000000..57e0a7f2 --- /dev/null +++ b/docs/static/img/logo-en.svg @@ -0,0 +1,35 @@ + + \ No newline at end of file diff --git a/docs/static/img/screenshot/chat-history-view.png b/docs/static/img/screenshot/chat-history-view.png new file mode 100644 index 00000000..0eefcac9 Binary files /dev/null and b/docs/static/img/screenshot/chat-history-view.png differ diff --git a/docs/static/img/screenshot/coco-chat.png b/docs/static/img/screenshot/coco-chat.png new file mode 100644 index 00000000..4dcedbb9 Binary files /dev/null and b/docs/static/img/screenshot/coco-chat.png differ diff --git a/docs/static/img/screenshot/coco-connector-to-your-own-server.png b/docs/static/img/screenshot/coco-connector-to-your-own-server.png new file mode 100644 index 00000000..6d7bbfc6 Binary files /dev/null and b/docs/static/img/screenshot/coco-connector-to-your-own-server.png differ diff --git a/docs/static/img/screenshot/coco-search-local-apps.png b/docs/static/img/screenshot/coco-search-local-apps.png new file mode 100644 index 00000000..40ddcabb Binary files /dev/null and b/docs/static/img/screenshot/coco-search-local-apps.png differ diff --git a/docs/static/img/screenshot/fusion-search-across-datasources.png b/docs/static/img/screenshot/fusion-search-across-datasources.png new file mode 100644 index 00000000..8801ff6e Binary files /dev/null and b/docs/static/img/screenshot/fusion-search-across-datasources.png differ diff --git a/docs/static/img/unzip-dmg-file.png b/docs/static/img/unzip-dmg-file.png new file mode 100644 index 00000000..f599947f Binary files /dev/null and b/docs/static/img/unzip-dmg-file.png differ