Giter Site home page Giter Site logo

canvas-ai / canvas-browser-extensions Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 2.19 MB

Canvas UI Firefox browser extension

Home Page: https://getcanvas.org

License: GNU Affero General Public License v3.0

HTML 0.29% JavaScript 3.35% CSS 35.39% SCSS 3.27% TypeScript 57.70%
browser-extension context-switching extension-chrome extension-firefox productivity-booster workspace-management

canvas-browser-extensions's Issues

€80 | Change the tab list layout to organize tabs based on Device ID(name): Browser name

Usually you'd have your canvas server running in the cloud or on a beefy workstation managing local AI agents and other roles like minio or maild. In such setup, you'd want to connect multiple(or maybe all) compute devices to the same canvas-server instance.

Devices in Canvas are automatically identified by a device ID and an optional device name, it would be good to display this in the browser extension as well.

Feature bitmaps also play a major role in the architecture of Canvas (does not look like that but be prepared!), what browser a tab is coming from can be stored as a feature bitmap or within the tab document itself.

Regardless of the implementation, tabs in the extension should be sorted as

Device ID: Firefox (OS)

  • tabA
  • tabB
  • tabZ

if a device name is set, its Device name (device ID): Browser (OS)

Work NB (d1a34b96): Firefox (Linux)

  • tabA
  • tabB

Work NB (d1a34b96): Chrome (Linux)

  • tabA
  • tabC
  • tabD

Home (cf11b2d4): Edge (Windows)

  • tabA
  • tabD
  • tabF

€160 | Canvas browser extension cosmetics

Ticket to track low-complexity / "cosmetic" follow-up tasks on the browser extension not covered by the original implementation ticket #1

  • Implement "Show all" functionality

    • a) show all current browser tabs in the Browser to Canvas tab (to easily close already open and synced tabs)
    • b) show all current canvas tabs in the Canvas to Browser tab (to manage tabs stored in Canvas even when they are already open in the browser)
  • Add shift+click-select functionality(or a tickbox) to open only selected tabs in C2B / close or remove only selected tabs in B2C, this implies having additional buttons in the extension popup besides "Open All" and "Sync All" (or dynamically switch the button label to "Open Selected" and "Sync Selected" + "Remove Selected" and "Delete Selected" in the C2B tab

  • Add "pin tab" functionality to the browser to canvas pane so that switching context when autoupdate tabs is set won't automatically close a pinned tab (you may have some tabs that you want to keep cross-context)

  • Add either a tab or a windows border color to all tabs of a context if a context workspace color is set (there is a example extension in the ff ext repo doing just this but maybe there are better options available)

Summary for the "Settings" menu update

Lets keep the settings as simple as possible

  1. We don't need that accordion there, feel free to remove it
  2. We don't need any filtering based on browser because we'll have tags, should be more than enough. I am internally indexing what app data is coming from anyway(you are adding the browser name to meta - this we should keep)
  3. Pinned tabs are not setting-depended, a user can pin any tab that's currently open in the browser. A pinned tab would not get opened, closed nor synced automatically (lets say, a youtube lecture/music player you want to keep even if switching contexts)

Settings menu

Browser identity

  • Tag tabs from this browser: string
    If set, all insert ops would additionally have featureArray['data/abstraction/tab', 'custom/tag/foo' ]
  • Sync only tagged tabs: bool
    If False, always fetch all tabs from the whole context(as we do currently), maybe show a small tag sticker for tabs that are tagged for our browser if a browser tag is set; if True, call getDocuments with ['data/abstraction/tab', 'custom/tag/foo' ] which will only return tagged tabs (this feature will be great!)

Context sync settings

  • Automatically open tabs on context change: bool
  • Handle existing tabs on context change:
    • Close
    • Save and Close
    • Keep

Connection settings

  • Protocol: string
  • Host: string
  • Port: number
  • Auth token: string (Password field for the user token)
  • Pin browser to Canvas session: string (Defaults to "default")
    Internally, you always call session:create, followed by session:context:get, you can just take whatever is listed there, will handle edge cases on the backend

€250 | Refactor the Canvas firefox extension

The base functionality is to synchronize users browser tabs with his Canvas context;

Extension should Display the current context URL in the top section of the extension menu
Extension should have 4 menu tabs:

  • Browser to Canvas (showing all tabs opened in the browser that are not synced to canvas yet)
    • Ideally if a switch could toggle to show all browser tabs
  • Canvas to Browser (showing all tabs that are synced / stored in Canvas but not opened in the browser)
  • Ideally if a switch could toggle to show all canvas tabs
  • A Search tab for searching all open browser tabs and canvas tabs based on the tab title
  • A Settings tab with the following settings (stored in users localstorage)
    • Canvas server host, port, auth token
    • Pin session to context (by default "/")
    • autoSyncBrowserTabs (we may need a better variable name here :), settings "false", "On Context Change", "Always")
    • autoOpenCanvasTabs ("false", "On Context Change")

--

Browser to Canvas

  • when I user opens a new tab that is not yet synced to Canvas / the current context, it appears in the BrowserToCanvas list
    • clicking on a list item of the browserToCanvas list will sync the selected tab to Canvas and remove it from the list [context:document:insert]
    • clicking on the "X" icon of the list item of a browserToCanvas list will close the tab in the Browser and remove it from the list
    • clicking on the "Sync all" button of a browserToCanvas list will sync all non-synced open tabs to Canvas and clear the list [context:document:insertArray]

Canvas to Browser

  • when a user closes a tab that was already synced to Canvas, it appears in the CanvasToBrowser list
    • clicking on a list item of the canvasToBrowser list will open it in the browser and remove it from the list
    • clicking on the "X" icon of the canvasToBrowser list item will remove the selected tab from Canvas(current context) [context:document:remove]
    • clicking on the red trash icon of the canvasToBrowser list item will remove the tab document from Canvas(all contexts) [context:document:delete]
  • clicking on "Open All Tabs button" automatically opens all tabs from the list in the browser

Context changes

  • when a user changes his context from context A (for example universe://work/customer-a/reports) to context B (universe://work/customer-b/jira-1234)
  • Deppending on whether autoSyncBrowserTabs is set to "always" he should have his current tab session synced or closed, and all tabs related to the new context fetched from the Canvas backend [context:document:list]
  • if autoOpenCanvasTabs is set to "always", all fetched tabs will automatically be opened in the browser session
    • If possible, also restore windows (probably with different IDs)
    • if autoOpenCanvasTabs is false, just populate the CanvasToBrowserList

BUG | No data reload after selecting a session

When I select a session from the dropdown menu and hit "save and connect", tabs/context url is not fetched automatically

Expected behaviour:

  • On "save and connect", all session data(current context / context URL and current browser tabs) are loaded the same way as if one would change the context within the current session

€50 | Add mdns service discovery support

This is more a cosmetic feature(in the extension context, its an important feature in canvas-server/canvas)
We should add mdns/bonjour service discovery support to the browser extension plugin so that a canvas-server instance would be discovered automatically.

  • All discovered instances should be listed in the connection menu
  • After selecting a discovered instance, user would be asked to either submit a PIN or a connection token
  • Endpoint would be stored using the existing mechanism

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.