@samitouri / QOSami-HFS / commits / 62130ab1

doc: added link to html-sections

Massimo Melina committed Dec 21, 2025 at 19:18 UTC 62130ab177c8e09d51492b88ff76761035db06f2
1 file changed +24 -23
dev-plugins.md
+24 -23
@@ -19,7 +19,7 @@ This is probably the easiest form to start with.
19 A neater way is to keep it both in the form of github repo and installed plugin.
20 If you want to do so, have a folder with your github repo in it, *outside* your `.hfs` folder.
21 As you'll see in the [Publish your plugin](#publish-your-plugin) section, you should keep your files inside the `dist` subfolder.
22 -Then you'll need to link it inside the `plugins` folder.
22 +Then you'll need to link the `dist` folder inside the `plugins` folder.
23 If you go in your `.hfs/plugins` folder on linux and mac, and enter
24
25 ln -s /PATH_TO_YOUR_REPO/dist MY_PLUGIN_NAME
@@ -180,6 +180,7 @@ used must be strictly JSON (thus, no single quotes, only double quotes for strin
180 - `configDialog: DialogOptions` object to override dialog options. Please refer to sources for details.
181 - `onFrontendConfig: (config: object) => (void | object)` manipulate config values exposed to frontend.
182 - `customHtml: object | () => object` return custom-html sections programmatically.
183 + Each key is a section name, the value is the html (or js, or css). Refer to https://github.com/rejetto/hfs/wiki/Customization:-HTML-sections
184 - `customRest: { [name]: (parameters: object, ctx) => any }` declare backend functions to be called by frontend with `HFS.customRestCall`
185 E.g.
186 ```js
@@ -819,28 +820,28 @@ so we prepared this list as a quick reference, but beware that it may become out
820 If so, please report, and we'll do our best to update it asap.
821 Where there is too little information, you'll have to consult the source code. Apologies.
822
822 - originalPath: string // before roots is applied
823 - browsing?: string // for admin/monitoring
824 - dontLog?: boolean // don't log this request
825 - logExtra?: object
826 - completed?: Promise<unknown>
827 - spam?: boolean // this request was marked as spam
828 - params: Record<string, any>
829 - account?: Account // user logged in
830 - revProxyPath: string
831 - connection: Connection
832 - skipFilters?: boolean
833 - vfsNode?: VfsNode
834 - includesLastByte?: boolean
835 - serveApp?: boolean // please, serve the frontend app
836 - uploadPath?: string // current one
837 - uploads?: string[] // in case of request with potentially multiple uploads (POST), we register all filenames (no full path)
838 - length?: number
839 - originalStream?: typeof ctx.body
840 - uploadDestinationPath?: string // this value is the temporary file in uploadStart and the final one in uploadFinished
841 - archive?: string
842 - fileSource?: string // set when serving a file
843 - fileStats?: Stat // file attributes
823 + originalPath: string // before roots is applied
824 + browsing?: string // for admin/monitoring
825 + dontLog?: boolean // don't log this request
826 + logExtra?: object
827 + completed?: Promise<unknown>
828 + spam?: boolean // this request was marked as spam
829 + params: Record<string, any>
830 + account?: Account // user logged in
831 + revProxyPath: string
832 + connection: Connection
833 + skipFilters?: boolean
834 + vfsNode?: VfsNode
835 + includesLastByte?: boolean
836 + serveApp?: boolean // please, serve the frontend app
837 + uploadPath?: string // current one
838 + uploads?: string[] // in case of request with potentially multiple uploads (POST), we register all filenames (no full path)
839 + length?: number
840 + originalStream?: typeof ctx.body
841 + uploadDestinationPath?: string // this value is the temporary file in uploadStart and the final one in uploadFinished
842 + archive?: string
843 + fileSource?: string // set when serving a file
844 + fileStats?: Stat // file attributes
845
846 ## Other files
847