From 4da8875d9c751c7d380e69b947d3f93aebd6a983 Mon Sep 17 00:00:00 2001 From: Julius Knorr Date: Sun, 4 Oct 2026 10:05:49 +0200 Subject: [PATCH 1/2] feat: show open card title in browser tab title Assisted-by: ClaudeCode:claude-fable-5-1 Assisted-by: ClaudeCode:claude-opus-5-5 Signed-off-by: Julius Knorr --- src/components/Controls.vue | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/components/Controls.vue b/src/components/Controls.vue index b02512d77..8fea20e15 100644 --- a/src/components/Controls.vue +++ b/src/components/Controls.vue @@ -309,6 +309,7 @@ import { getCurrentUser } from '@nextcloud/auth' import { mapActions, mapState, mapWritableState } from 'pinia' import { useStackStore } from '../stores/stack.js' import { useBoardStore } from '../stores/board.js' +import { useCardStore } from '../stores/card.js' import { useSettingsStore } from '../stores/settings.js' export default { @@ -388,7 +389,15 @@ export default { compactMode: state => state.compactMode, showCardCover: state => state.showCardCover, }), + ...mapState(useCardStore, ['cardById']), ...mapWritableState(useSettingsStore, ['searchQuery']), + pageTitle() { + if (!this.board?.title) { + return '' + } + const cardTitle = this.$route.params.cardId && this.cardById(Number(this.$route.params.cardId))?.title + return cardTitle ? `${cardTitle} - ${this.board.title}` : this.board.title + }, detailsRoute() { return { name: 'board.details', @@ -413,7 +422,7 @@ export default { 'board.id'() { this.clearFilter() }, - 'board.title': { + pageTitle: { immediate: true, handler(title) { if (title) { From 154acb033273c5db809332a0a11f052ce01aed92 Mon Sep 17 00:00:00 2001 From: Julius Knorr Date: Sun, 4 Oct 2026 10:11:16 +0200 Subject: [PATCH 2/2] test: cover card title in browser tab title Assisted-by: ClaudeCode:claude-opus-5-5 Signed-off-by: Julius Knorr --- cypress/e2e/cardFeatures.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/cypress/e2e/cardFeatures.js b/cypress/e2e/cardFeatures.js index def7e258d..d2e9000ca 100644 --- a/cypress/e2e/cardFeatures.js +++ b/cypress/e2e/cardFeatures.js @@ -335,6 +335,14 @@ describe('Card', function () { .find('.ProseMirror h1').contains('Hello world writing more text').should('be.visible') }) + it('Shows the card title in the page title', () => { + cy.title().should('match', new RegExp(`^${boardData.title} - Deck - `)) + cy.get('.card:contains("Hello world")').should('be.visible').click() + cy.title().should('match', new RegExp(`^Hello world - ${boardData.title} - Deck - `)) + cy.go('back') + cy.title().should('match', new RegExp(`^${boardData.title} - Deck - `)) + }) + it('Set a due date', function () { const newCardTitle = 'Card with a due date'