diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index cd95bca71..8d1ce2f14 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -106,5 +106,5 @@ jobs: jupyter labextension list 2>&1 | grep -ie "@jupyter-notebook/lab-extension.*enabled.*ok" - jupyter server extension list jupyter server extension list 2>&1 | grep -ie "notebook.*enabled" - - jupyter retro --version - jupyter retro --help + jupyter notebook --version + jupyter notebook --help diff --git a/jupyter_config.json b/jupyter_config.json index a449c875a..aea94da87 100644 --- a/jupyter_config.json +++ b/jupyter_config.json @@ -1,4 +1,3 @@ { - "NotebookApp": { "collaborative": true, "expose_app_in_browser": true }, "LabApp": { "collaborative": true, "expose_app_in_browser": true } } diff --git a/notebook/app.py b/notebook/app.py index bde274fa5..3c391d093 100644 --- a/notebook/app.py +++ b/notebook/app.py @@ -25,7 +25,7 @@ app_dir = get_app_dir() version = __version__ -class RetroHandler(ExtensionHandlerJinjaMixin, ExtensionHandlerMixin, JupyterHandler): +class NotebookBaseHandler(ExtensionHandlerJinjaMixin, ExtensionHandlerMixin, JupyterHandler): def get_page_config(self): config = LabConfig() app = self.extensionapp @@ -37,7 +37,7 @@ class RetroHandler(ExtensionHandlerJinjaMixin, ExtensionHandlerMixin, JupyterHan "terminalsAvailable": self.settings.get("terminals_available", False), "token": self.settings["token"], "fullStaticUrl": ujoin(self.base_url, "static", self.name), - "frontendUrl": ujoin(self.base_url, "retro/"), + "frontendUrl": ujoin(self.base_url, "/"), "exposeAppInBrowser": app.expose_app_in_browser, "collaborative": app.collaborative, } @@ -93,13 +93,13 @@ class RetroHandler(ExtensionHandlerJinjaMixin, ExtensionHandlerMixin, JupyterHan return page_config -class RetroRedirectHandler(RetroHandler): +class RedirectHandler(NotebookBaseHandler): @web.authenticated def get(self): - return self.redirect(self.base_url+'retro/tree') + return self.redirect(self.base_url+'tree') -class RetroTreeHandler(RetroHandler): +class TreeHandler(NotebookBaseHandler): @web.authenticated async def get(self, path=None): """ @@ -137,28 +137,28 @@ class RetroTreeHandler(RetroHandler): raise web.HTTPError(404) -class RetroConsoleHandler(RetroHandler): +class ConsoleHandler(NotebookBaseHandler): @web.authenticated def get(self, path=None): tpl = self.render_template("consoles.html", page_config=self.get_page_config()) return self.write(tpl) -class RetroTerminalHandler(RetroHandler): +class TerminalHandler(NotebookBaseHandler): @web.authenticated def get(self, path=None): tpl = self.render_template("terminals.html", page_config=self.get_page_config()) return self.write(tpl) -class RetroFileHandler(RetroHandler): +class FileHandler(NotebookBaseHandler): @web.authenticated def get(self, path=None): tpl = self.render_template("edit.html", page_config=self.get_page_config()) return self.write(tpl) -class RetroNotebookHandler(RetroHandler): +class NotebookHandler(NotebookBaseHandler): @web.authenticated def get(self, path=None): tpl = self.render_template("notebooks.html", page_config=self.get_page_config()) @@ -174,9 +174,9 @@ class NotebookApp(LabServerApp): description = "Jupyter Notebook - A web-based notebook environment for interactive computing" version = version app_version = version - extension_url = "/retro" - default_url = "/retro/tree" - file_url_prefix = "/retro/notebooks" + extension_url = "/tree" + default_url = "/tree" + file_url_prefix = "/notebooks" load_other_extensions = True app_dir = app_dir app_settings_dir = pjoin(app_dir, "settings") @@ -211,15 +211,15 @@ class NotebookApp(LabServerApp): ( rf"/{self.file_url_prefix}/((?!.*\.ipynb($|\?)).*)", web.RedirectHandler, - {"url": "/retro/edit/{0}"}, + {"url": "/edit/{0}"}, ) ) - self.handlers.append(("/retro/?", RetroRedirectHandler)) - self.handlers.append(("/retro/tree(.*)", RetroTreeHandler)) - self.handlers.append(("/retro/notebooks(.*)", RetroNotebookHandler)) - self.handlers.append(("/retro/edit(.*)", RetroFileHandler)) - self.handlers.append(("/retro/consoles/(.*)", RetroConsoleHandler)) - self.handlers.append(("/retro/terminals/(.*)", RetroTerminalHandler)) + self.handlers.append(("/retro/?", RedirectHandler)) + self.handlers.append(("/tree(.*)", TreeHandler)) + self.handlers.append(("/notebooks(.*)", NotebookHandler)) + self.handlers.append(("/edit(.*)", FileHandler)) + self.handlers.append(("/consoles/(.*)", ConsoleHandler)) + self.handlers.append(("/terminals/(.*)", TerminalHandler)) super().initialize_handlers() def initialize_templates(self): diff --git a/packages/application-extension/src/index.ts b/packages/application-extension/src/index.ts index 9bd1f4695..1888042ed 100644 --- a/packages/application-extension/src/index.ts +++ b/packages/application-extension/src/index.ts @@ -137,7 +137,7 @@ const logo: JupyterFrontEndPlugin = { activate: (app: JupyterFrontEnd) => { const baseUrl = PageConfig.getBaseUrl(); const node = document.createElement('a'); - node.href = `${baseUrl}retro/tree`; + node.href = `${baseUrl}tree`; node.target = '_blank'; node.rel = 'noopener noreferrer'; const logo = new Widget({ node }); @@ -258,7 +258,7 @@ const pages: JupyterFrontEndPlugin = { app.commands.addCommand(CommandIDs.openTree, { label: trans.__('Open Files'), execute: () => { - window.open(`${baseUrl}retro/tree`); + window.open(`${baseUrl}tree`); } }); @@ -490,7 +490,7 @@ const title: JupyterFrontEndPlugin = { return; } const encoded = encodeURIComponent(newPath); - router.navigate(`/retro/${route}/${encoded}`, { + router.navigate(`/${route}/${encoded}`, { skipRouting: true }); } @@ -596,7 +596,7 @@ const tree: JupyterFrontEndPlugin = { const set = new DisposableSet(); const delegate = new PromiseDelegate(); - const treePattern = new RegExp('/retro(/tree/.*)?'); + const treePattern = new RegExp('/(/tree/.*)?'); set.add( commands.addCommand(CommandIDs.resolveTree, { @@ -651,7 +651,6 @@ const treePathUpdater: JupyterFrontEndPlugin = { if (treePath !== PageConfig.getOption('treePath')) { const path = URLExt.join( PageConfig.getOption('baseUrl') || '/', - 'retro', 'tree', URLExt.encodeParts(treePath) ); diff --git a/packages/console-extension/src/index.ts b/packages/console-extension/src/index.ts index 50ad9e5c0..76839b30e 100644 --- a/packages/console-extension/src/index.ts +++ b/packages/console-extension/src/index.ts @@ -63,7 +63,7 @@ const redirect: JupyterFrontEndPlugin = { // bail if the console is already added to the main area return; } - window.open(`${baseUrl}retro/consoles/${sessionContext.path}`, '_blank'); + window.open(`${baseUrl}consoles/${sessionContext.path}`, '_blank'); // the widget is not needed anymore console.dispose(); diff --git a/packages/docmanager-extension/src/index.ts b/packages/docmanager-extension/src/index.ts index 68f9ac1db..7c9dd1dce 100644 --- a/packages/docmanager-extension/src/index.ts +++ b/packages/docmanager-extension/src/index.ts @@ -41,7 +41,7 @@ const opener: JupyterFrontEndPlugin = { } const ext = PathExt.extname(path); const route = ext === '.ipynb' ? 'notebooks' : 'edit'; - window.open(`${baseUrl}retro/${route}/${path}`); + window.open(`${baseUrl}${route}/${path}`); return undefined; }; } diff --git a/packages/lab-extension/src/index.ts b/packages/lab-extension/src/index.ts index bf39b4974..7d17ac2b9 100644 --- a/packages/lab-extension/src/index.ts +++ b/packages/lab-extension/src/index.ts @@ -137,7 +137,7 @@ const launchButtons: JupyterFrontEndPlugin = { command: 'jupyter-notebook:open-retro', commandLabel: trans.__('Open With %1', 'Jupyter Notebook'), buttonLabel: 'openRetro', - urlPrefix: `${baseUrl}retro/tree/` + urlPrefix: `${baseUrl}tree/` }); } @@ -186,7 +186,7 @@ const launchRetroTree: JupyterFrontEndPlugin = { commands.addCommand(CommandIDs.launchRetroTree, { label: trans.__('Launch Jupyter Notebook File Browser'), execute: () => { - window.open(PageConfig.getBaseUrl() + 'retro/tree'); + window.open(PageConfig.getBaseUrl() + 'tree'); } }); diff --git a/packages/terminal-extension/src/index.ts b/packages/terminal-extension/src/index.ts index da865bea6..0e65fbabc 100644 --- a/packages/terminal-extension/src/index.ts +++ b/packages/terminal-extension/src/index.ts @@ -68,7 +68,7 @@ const redirect: JupyterFrontEndPlugin = { return; } const name = terminal.content.session.name; - window.open(`${baseUrl}retro/terminals/${name}`, '_blank'); + window.open(`${baseUrl}terminals/${name}`, '_blank'); // dispose the widget since it is not used on this page terminal.dispose(); diff --git a/ui-tests/package.json b/ui-tests/package.json index bff0d92f7..2ffc0fd40 100644 --- a/ui-tests/package.json +++ b/ui-tests/package.json @@ -6,7 +6,7 @@ "license": "BSD-3-Clause", "description": "Jupyter Notebook UI Tests", "scripts": { - "start": "jupyter retro --config test/jupyter_server_config.py", + "start": "jupyter notebook --config test/jupyter_server_config.py", "start:detached": "yarn run start&", "test": "playwright test", "test:debug": "PWDEBUG=1 playwright test", diff --git a/ui-tests/playwright.config.ts b/ui-tests/playwright.config.ts index 27284d559..afc0aa538 100644 --- a/ui-tests/playwright.config.ts +++ b/ui-tests/playwright.config.ts @@ -4,7 +4,7 @@ module.exports = { ...baseConfig, timeout: 240000, use: { - appPath: '/retro' + appPath: '/' }, retries: 1 }; diff --git a/ui-tests/test/notebook.spec.ts b/ui-tests/test/notebook.spec.ts index bfcef579b..21414e46e 100644 --- a/ui-tests/test/notebook.spec.ts +++ b/ui-tests/test/notebook.spec.ts @@ -26,7 +26,7 @@ test.describe('Notebook', () => { const href = await page.evaluate(() => { return document.querySelector('#jp-RetroLogo')?.getAttribute('href'); }); - expect(href).toContain('/retro/tree'); + expect(href).toContain('/tree'); }); test('Renaming the notebook should be possible', async ({ diff --git a/ui-tests/test/tree.spec.ts b/ui-tests/test/tree.spec.ts index 2725f005a..beef661f4 100644 --- a/ui-tests/test/tree.spec.ts +++ b/ui-tests/test/tree.spec.ts @@ -34,5 +34,5 @@ test('should update url when navigating in filebrowser', async ({ await page.waitForSelector(`.jp-FileBrowser-crumbs >> text=/${SUBFOLDER}/`); const url = new URL(page.url()); - expect(url.pathname).toEqual(`/retro/tree/${tmpPath}/${SUBFOLDER}`); + expect(url.pathname).toEqual(`/tree/${tmpPath}/${SUBFOLDER}`); });