fix: page de base - titre au-dessus du tableau, tableau au ras du sidebar (v7.49.2)
FlowDeck CI / lint (push) Successful in 2m11s
FlowDeck CI / test (push) Failing after 13m46s
FlowDeck CI / docker (push) Skipped

- .db-first (page_editor_scripts._applyLayout) quand le premier bloc est une
  base embarquee : .blocks-container/.page-title-block passent a margin:0 +
  padding-left:var(--space-lg) au lieu de max-width:900px centre -> le tableau
  demarre a x=256 (marge topbar) au lieu de x=694 sur 1920px (mesure Playwright).
- .block-embed-collection { max-width:100%; overflow:hidden } : l'embed ne
  deborde plus de sa colonne (les popovers fixes restent hors du clipping).
- page_editor_collection.html : h1.database-page-title au-dessus du conteneur
  (les pages collection dediees n'avaient pas de titre).
- Bump VERSION/main.py 7.49.2, CHANGELOG, WORKLOAD, OpenAPI regenere.
- Instance locale flowdeck-final rebuildee flowdeck:v7.49.2 :8081, health OK.
This commit is contained in:
2026-10-06 09:49:16 -04:00
parent 15b6b163f4
commit 7dbaefb381
8 changed files with 53 additions and 4 deletions
+18
View File
@@ -1,5 +1,23 @@
# Changelog - FlowDeck
## v7.49.2 (2026-10-05) — Pages de base : titre au-dessus, tableau à gauche
### Fixed
- **Le tableau d'une page de base commençait au 1/3 de la page** — une base
créée depuis un document est un bloc `embed collection` rendu dans la
colonne éditeur `.blocks-container` (`max-width: 900px; margin: 0 auto`) :
centrée sur un grand écran, donc décalée loin du sidebar (mesuré x=694 sur
1920 px). Nouvelle classe `.db-first` sur le wrapper éditeur quand le
premier bloc est une base : titre et blocs passent à `margin: 0` +
`padding-left: var(--space-lg)` (liseré de la topbar) — tableau au ras du
sidebar (x=256 mesuré), titre au-dessus, plus de débordement de l'embed
(`max-width: 100%`, le scroll horizontal reste géré par `.db-table-wrapper`).
- **Les pages de base dédiées (`content_format='collection'`) n'avaient pas
de titre** — `page_editor_collection.html` rend le tableau sans en-tête de
page. Un `<h1 class="database-page-title">` est ajouté au-dessus du
conteneur, avec le même liseré gauche que le tableau.
## v7.49.1 (2026-10-05) — Tableau des bases aligné sur le titre
### Fixed
+1 -1
View File
@@ -1 +1 @@
7.49.1
7.49.2
+1 -1
View File
@@ -1,6 +1,6 @@
# WORKLOAD — FlowDeck Notion Clone
> **Début**: 2026-07-08 | **Version**: v7.49.1 (tableau des bases aligné sur le titre, marge gauche = topbar) | **Statut**: EN COURS 🔄
> **Début**: 2026-07-08 | **Version**: v7.49.2 (pages de base : titre au-dessus du tableau, tableau calé à gauche au ras du sidebar) | **Statut**: EN COURS 🔄
> **Cible**: parité Notion + intégration forge · **Follow-ups v7.3 livrés**: sidebar teamspaces, notif `page.updated`, charts `number` + dashboards multi-DB, unfurl forge, UI Settings → Audit — voir `ROADMAP.md § v7.3.0`
## Avancement Global
+1 -1
View File
@@ -185,7 +185,7 @@ async def lifespan(_app: FastAPI):
app = FastAPI(
title="FlowDeck",
version="7.49.1",
version="7.49.2",
docs_url="/docs",
redoc_url="/redoc",
lifespan=lifespan,
@@ -5,6 +5,7 @@ page_title %}{{ page.title }}{% endblock %} {% block topbar %}
{% set right_actions %}<span class="topbar-edited" style="cursor:pointer;" @click="edCall('toggleActivityOpen')">Edited <span x-text="edTimeAgo()"></span> ▾</span><button class="topbar-btn share-btn" @click="edCall('toggleShareOpen')"><span x-show="!edShared()">{{ fd_icon("lock",14) }} Share ▾</span><span x-show="edShared()" title="This page is shared">👥 Shared ▾</span></button><button class="topbar-btn" @click="edCall('copyPageLink')" title="Copy link">{{ fd_icon("link",14) }}</button><button class="topbar-btn star-btn" @click="edCall('toggleFavorite')" x-init="bindStar($el)"></button><button class="topbar-btn relative" @click="edCall('toggleMoreOpen')">⋯</button>{% endset %}
{% include '_header.html' %}
{% endblock %} {% block content %}
<h1 class="database-page-title">{{ page.title }}</h1>
{% include "_database_table.html" %}
{% endblock %} {% block scripts %}
<script data-cfasync="false" nonce="{{ csp_nonce() }}">
+1 -1
View File
@@ -2,7 +2,7 @@
"openapi": "3.1.0",
"info": {
"title": "FlowDeck",
"version": "7.49.1"
"version": "7.49.2"
},
"paths": {
"/auth/register": {
+26
View File
@@ -2244,6 +2244,32 @@ button.breadcrumb-current { max-width: 260px; }
min-height: 300px;
}
/* Page de base (premier bloc = embed collection) : le titre et le tableau
s'alignent sur la marge gauche de la topbar (16px) au lieu d'être centrés
dans la colonne 900px — le tableau démarre au ras du sidebar. */
.page-editor-wrapper.db-first .page-cover-area,
.page-editor-wrapper.db-first .page-title-block,
.page-editor-wrapper.db-first .blocks-container {
max-width: 1100px;
margin: 0;
padding-left: var(--space-lg);
}
/* Une base embarquée ne doit jamais déborder de sa colonne de blocs :
.db-table-wrapper interne gère déjà le scroll horizontal. */
.block-embed-collection { max-width: 100%; overflow: hidden; }
/* Titre des pages de base dédiées (page_editor_collection.html) — même
liseré gauche que .database-table-container. */
.database-page-title {
max-width: 1100px;
margin: 0;
padding: 28px var(--space-lg) 0;
font-size: 30px;
font-weight: 700;
color: var(--text-primary);
}
.blocks-empty {
padding: 40px 0;
text-align: center;
+4
View File
@@ -1124,6 +1124,10 @@ const PD=(()=>{try{const el=document.getElementById('page-data');return el?JSON.
if(!wrap)return;
wrap.classList.toggle('full-width',!!this.fullWidth);
wrap.classList.toggle('small-text',!!this.fontSmall);
// Page dont le premier bloc est une base : layout « page de base »
// Notion — titre et tableau calés à gauche, pas centrés.
const b0=this.blocks&&this.blocks[0];
wrap.classList.toggle('db-first',!!(b0&&b0.type==='embed'&&b0.embed_type==='collection'));
},
closeInviteSuggest(){ this.inviteSuggestOpen = false; this.inviteUsers = []; },
setSharePerm(a, perm){ this.updateShare(a.id, perm); a.permOpen = false; },