Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
6f700f6
chore(deps): upgrade dependencies to vue3
max-nextcloud May 19, 2026
222eb09
chore(deps): replace new Vue with createApp
max-nextcloud May 19, 2026
2653aa8
chore(upgrade): `<var>.sync` to `v-model:<var>`
max-nextcloud May 19, 2026
7a233dd
chore(upgrade): fix imports
max-nextcloud May 19, 2026
73a2daa
chore(upgrade): Vue.observable to reactive
max-nextcloud May 19, 2026
bb910c8
chore(upgrade): from beforeDestroy() to beforeUnmount()
max-nextcloud May 19, 2026
d7ee2a3
chore(upgrade): key attribute in v-for component
max-nextcloud May 19, 2026
ca5e326
chore(upgrade): use eslint@10 and @nextcloud/eslint@9
max-nextcloud May 22, 2026
e5c0036
chore(lint): configure vitest globals
max-nextcloud May 23, 2026
0204646
chore(lint): fix what prettier and eslint can agree upon
max-nextcloud May 23, 2026
12b1e10
chore(lint): let eslint sort the imports
max-nextcloud May 23, 2026
69ea424
chore(lint): remove outdated eslint disable lines
max-nextcloud May 23, 2026
6f63045
chore(lint): separate type imports
max-nextcloud May 24, 2026
e9752b0
chore(lint): use ts extension for local imports
max-nextcloud May 24, 2026
0c4f5d2
chore(lint): drop prettier and autolint with eslint
max-nextcloud May 26, 2026
e9db7c6
chore(lint): drop unused prop
max-nextcloud May 26, 2026
b72cc17
chore(lint): disable no-boolean-default for Viewer api
max-nextcloud May 27, 2026
e148767
chore(type): more event bus events
max-nextcloud May 29, 2026
6a35495
chore(type): and split editor.js
max-nextcloud May 31, 2026
3a38dc6
chore(cleanup): do not emit even for parent
max-nextcloud May 31, 2026
c21b3aa
chore(type): add global for `_oc_debug`
max-nextcloud May 31, 2026
ce91166
chore(cleanup): change default for `EDITOR_UPLOAD` to false
max-nextcloud May 31, 2026
ebcc1e8
chore(lint): fix some errors
max-nextcloud May 31, 2026
3d7df86
chore(lint): y-websocket
max-nextcloud Jun 1, 2026
c0e7e98
chore(lint) src/services
max-nextcloud Jun 1, 2026
af5d91a
chore(lint) src/plugins
max-nextcloud Jun 1, 2026
f9bd78a
chore(lint) src/nodes
max-nextcloud Jun 1, 2026
025b08a
chore(lint) src/marks and src/mixins
max-nextcloud Jun 1, 2026
febd464
chore(lint) src/markdownit
max-nextcloud Jun 1, 2026
d8ad142
chore(lint): src/helpers
max-nextcloud Jun 1, 2026
617eac4
chore(lint) src/extensions
max-nextcloud Jun 2, 2026
aabeef2
chore(rename) useTableOfContents -> hasTableOfContents
max-nextcloud Jun 2, 2026
a560f0d
chore(lint): src/composables
max-nextcloud Jun 2, 2026
c76b277
chore(import): vitest in spec.ts files
max-nextcloud Jun 2, 2026
461a2b1
chore(upgrade): use tsconfig from collectives plus ESNext
max-nextcloud Jun 2, 2026
c67c02a
chore(upgrade): vue-tsc and fix errors
max-nextcloud Jun 2, 2026
04c9fcb
chore(scripts): use vue-tsc in separate ts:check script
max-nextcloud Jun 3, 2026
0bfcd9b
chore(types): EditorReloader to explicitely type exports
max-nextcloud Jun 3, 2026
fd66092
chore(lint): src/tests
max-nextcloud Jun 3, 2026
b3671aa
chore(lint): some of src/components
max-nextcloud Jun 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 0 additions & 4 deletions .eslintignore

This file was deleted.

28 changes: 0 additions & 28 deletions .eslintrc.cjs

This file was deleted.

101 changes: 0 additions & 101 deletions .github/workflows/lint-prettier.yml

This file was deleted.

2 changes: 1 addition & 1 deletion cypress.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/

import vue from '@vitejs/plugin-vue2'
import vue from '@vitejs/plugin-vue'
import { defineConfig } from 'cypress'
import cypressSplit from 'cypress-split'
import vitePreprocessor from 'cypress-vite'
Expand Down
6 changes: 1 addition & 5 deletions cypress/e2e/Assistant.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,14 +51,11 @@ describe('Assistant', () => {
})
cy.get('.assistant-modal--content .submit-button').click()

// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.wait(2000)

cy.get('.assistant-modal--content button').contains('Get notified').click()

cy.get('.assistant-modal--content button .bell-ring-outline-icon').should(
'be.visible',
)
cy.get('.assistant-modal--content button .bell-ring-outline-icon').should('be.visible')

cy.get('.assistant-modal--content .close-button').click()
cy.getActionEntry('assistant').click()
Expand All @@ -78,7 +75,6 @@ describe('Assistant', () => {
cy.getActionEntry('assistant').click()
cy.get('.action-button').contains('Translate').click()

// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.wait(1000)

cy.get('.assistant-modal--content #input-input').type('Hello World', {
Expand Down
32 changes: 13 additions & 19 deletions cypress/e2e/Links.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@
const user = randUser()
const fileName = 'empty.md'

describe('test link marks', function () {
before(function () {
describe('test link marks', function() {
before(function() {
cy.createUser(user)
})

beforeEach(function () {
beforeEach(function() {
cy.login(user)
cy.isolateTest({
sourceFile: fileName,
Expand All @@ -24,7 +24,7 @@
cy.openFile(fileName, { force: true })
})

describe('link bubble', function () {
describe('link bubble', function() {
/**
* Find link and click on it
*
Expand Down Expand Up @@ -134,14 +134,12 @@
cy.insertLine(`[text](${link})`)
cy.getContent().find(`a[href*="${link}"]`).should('not.exist')
clickLink('#')
cy.get('.link-view-bubble__title', { timeout: 10000 }).contains(
'other://protocol',
)
cy.get('.link-view-bubble__title', { timeout: 10000 }).contains('other://protocol')
cy.get('.link-view-bubble a').should('not.exist')
})
})

describe('autolink', function () {
describe('autolink', function() {
it('with protocol to files app and fileId', () => {
cy.getFile(fileName).then(($el) => {
const id = $el.data('cyFilesListRowFileid')
Expand All @@ -167,11 +165,11 @@
})
})

describe('link menu', function () {
describe('link menu', function() {
beforeEach(() => cy.clearContent())
const text = 'some text'

describe('link to website', function () {
describe('link to website', function() {
const url = 'https://example.org/'
// Helper to reduce duplicated code, checking inserting with and without selected text
const checkLinkWebsite = (url, text) => {
Expand All @@ -187,27 +185,25 @@

beforeEach(cy.clearContent)
it('Link website without selection', () => {
cy.getFile(fileName).then(($el) => {

Check failure on line 188 in cypress/e2e/Links.spec.js

View workflow job for this annotation

GitHub Actions / NPM lint

'$el' is defined but never used
checkLinkWebsite(url, url)
})
})

it('Link website with selection', () => {
cy.getFile(fileName).then(($el) => {

Check failure on line 194 in cypress/e2e/Links.spec.js

View workflow job for this annotation

GitHub Actions / NPM lint

'$el' is defined but never used
cy.getContent().type(`${text}{selectAll}`)
checkLinkWebsite(url, text)
})
})
})

describe('link to local file', function () {
describe('link to local file', function() {
// Helper to reduce duplicated code, checking inserting with and without selected text
const checkLinkFile = (filename, text, isFolder = false) => {
cy.getSubmenuEntry('insert-link', 'insert-link-file').click()
cy.get('.file-picker').within(() => {
cy.get(
`[data-testid="file-list-row"][data-filename="${filename}"]`,
).click()
cy.get(`[data-testid="file-list-row"][data-filename="${filename}"]`).click()
cy.get(isFolder ? '.empty-content__name' : '.file-picker__files')
cy.contains(
'button',
Expand All @@ -217,7 +213,7 @@

return cy
.getContent()
.find(`a[href*="/index.php/f/${fileId}"]`)

Check failure on line 216 in cypress/e2e/Links.spec.js

View workflow job for this annotation

GitHub Actions / NPM lint

'fileId' was used before it was defined
.should('have.text', text === undefined ? filename : text)
}

Expand All @@ -229,7 +225,7 @@
cy.getFileId(fileName).then((id) => {
fileId = id
})
cy.getFile(fileName).then(($el) => {

Check failure on line 228 in cypress/e2e/Links.spec.js

View workflow job for this annotation

GitHub Actions / NPM lint

'$el' is defined but never used
checkLinkFile(fileName)
cy.get('.modal-header__name').should('include.text', fileName)
})
Expand All @@ -238,19 +234,17 @@
cy.getFileId(fileName).then((id) => {
fileId = id
})
cy.getFile(fileName).then(($el) => {

Check failure on line 237 in cypress/e2e/Links.spec.js

View workflow job for this annotation

GitHub Actions / NPM lint

'$el' is defined but never used
cy.getContent().type(`${text}{selectAll}`)
checkLinkFile(fileName, text)
cy.get('.modal-header__name').should('include.text', fileName)
})
})
it('link to directory', () => {
cy.createFolder(`${window.__currentDirectory}/dummy folder`).then(
(folderId) => {
fileId = folderId
},
)
cy.createFolder(`${window.__currentDirectory}/dummy folder`).then((folderId) => {
fileId = folderId
})
cy.getFile(fileName).then(($el) => {

Check failure on line 247 in cypress/e2e/Links.spec.js

View workflow job for this annotation

GitHub Actions / NPM lint

'$el' is defined but never used
cy.getContent().type(`${text}{selectAll}`)
checkLinkFile('dummy folder', text, true)
})
Expand Down
22 changes: 11 additions & 11 deletions cypress/e2e/MenuBar.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,17 @@ import { randUser } from '../utils/index.js'

const user = randUser()

describe('Test the rich text editor menu bar', function () {
before(function () {
describe('Test the rich text editor menu bar', function() {
before(function() {
cy.createUser(user)
})

beforeEach(function () {
beforeEach(function() {
cy.login(user)
cy.uploadTestFile()
})

describe('word count', function () {
describe('word count', function() {
/**
*
*/
Expand All @@ -27,7 +27,7 @@ describe('Test the rich text editor menu bar', function () {
.get('[data-text-action-entry="character-count"]')
}

beforeEach(function () {
beforeEach(function() {
cy.visit('/apps/files')
cy.openTestFile()
})
Expand All @@ -51,7 +51,7 @@ describe('Test the rich text editor menu bar', function () {
})
})

describe('text width toggle', function () {
describe('text width toggle', function() {
beforeEach(() => {
cy.configureText('is_full_width_editor', 0)
cy.visit('/apps/files')
Expand All @@ -61,19 +61,19 @@ describe('Test the rich text editor menu bar', function () {
.as('maxWidth')
})

it('applys default', function () {
it('applys default', function() {
cy.openTestFile()
cy.get('@maxWidth').should('equal', 'min(80ch, (100% - 2 * 40px))')
})

it('toggles value', function () {
it('toggles value', function() {
cy.openTestFile()
cy.getActionEntry('remain').click()
cy.contains('Full width editor').click()
cy.get('@maxWidth').should('equal', 'calc(100% - 2 * 40px)')
})

it('preserves on reopen', function () {
it('preserves on reopen', function() {
cy.openTestFile()
cy.getActionEntry('remain').click()
cy.contains('Full width editor').click()
Expand All @@ -82,7 +82,7 @@ describe('Test the rich text editor menu bar', function () {
cy.get('@maxWidth').should('equal', 'calc(100% - 2 * 40px)')
})

it('preserves on reload', function () {
it('preserves on reload', function() {
cy.openTestFile()
cy.getActionEntry('remain').click()
cy.contains('Full width editor').click()
Expand All @@ -91,7 +91,7 @@ describe('Test the rich text editor menu bar', function () {
cy.get('@maxWidth').should('equal', 'calc(100% - 2 * 40px)')
})

it('does not interfere if width is already set', function () {
it('does not interfere if width is already set', function() {
cy.window()
.its('document.body.style')
.invoke('setProperty', '--text-editor-max-width', '987px')
Expand Down
Loading
Loading