Skip to content

Conversation

@yacchin1205
Copy link

@yacchin1205 yacchin1205 commented Jan 5, 2026

This Draft Pull Request is for reference purposes. The details will be discussed in the COS-NII meeting.

  • Ticket: []
  • Feature flag: n/a

Purpose

Add a plugin architecture for file browser actions (context menu and toolbar). Extensions are included in the codebase but can be enabled/disabled at build time via extensions.config.ts.

Summary of Changes

  • Add FileActionExtension interface for menu/toolbar/both targets
  • Add ExtensionRegistry service for dynamic extension loading
  • Add extensions.config.ts for build-time configuration
  • Add "Copy Link" as example extension (in Share submenu)
  • Add "OnlyOffice" as example extension (dummy implementation)

See docs/file-extensions.md for usage.

Screenshot(s)

Example: Copy Link

extensions.config.ts:

export const extensionConfig: ExtensionConfig[] = [
  {
    load: () => import('./extensions/copy-links'),
    factory: 'copyLinksExtensionFactory',
    enabled: true,
  },
];

Copy Link (Menu Item):
screenshot-copy-link

Example: OnlyOffice Integration (dummy)

extensions.config.ts:

export const extensionConfig: ExtensionConfig[] = [
  // ... other extensions ...

  // Edit by OnlyOffice
  {
    load: () => import('./extensions/onlyoffice'),
    factory: 'editByOnlyOfficeExtensionFactory',
    enabled: true,
    config: { editorUrl: 'https://...' },
  },
  // Create File
  {
    load: () => import('./extensions/onlyoffice'),
    factory: 'createFileExtensionFactory',
    enabled: true,
    config: { editorUrl: 'https://...' },
  },
];

Edit by OnlyOffice(Menu Item/Toolbar Item in the file detail):

screenshot-edit-by-onlyoffice screenshot-edit-with-onlyoffice-in-detail

Create File (Toolbar Item in the file list):

screenshot-create-file

Side Effects

  • New prebuild, prestart, pretest npm scripts that generate extensions.config.ts
  • src/app/extensions.config.ts is now git-ignored (generated from extensions.config.default.ts)

QA Notes

  • Test file context menu on file list and file detail pages
  • Verify "Copy Link" appears in Share submenu for files
  • Verify extensions can be enabled/disabled via extensions.config.ts

- Add FileActionExtension for menu/toolbar/both targets
- Add ExtensionRegistry service for dynamic extension loading
- Add extensions.config.ts for configuration
- Add Copy Link as example extension
- Add OnlyOffice as example extension (dummy implementation)

See docs/file-extensions.md for usage.
@yacchin1205 yacchin1205 force-pushed the feature/file-menu-extension-upstream branch from ceb269e to 9f95349 Compare January 7, 2026 22:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant