Dashboard redesign#124
Merged
Merged
Conversation
added 14 commits
May 19, 2026 19:28
…e name
- Move files/folders from year-scope to org-scope: new /storage route under
$idOrganization, updated API routes and dashboard tree
- Add optional 'date' field on file (content date, e.g. invoice date) with
migration 0023_add_date_to_file.sql; exposed in updateOneFileForm and filePage
- Make file 'name' NOT NULL across DB (migration 0024), Drizzle model, Valibot
schema, and createOneFile route body
- Default upload name derived without file extension (referenceFromFileName)
- Add 'date' field to file entry/update form (entriesTable, entryPage,
createOneEntry, updateOneEntry)
- Entry table and entry page: file column now a clickable link to the file page,
showing '${name} (${reference})'
- Simplify file.name null-guards throughout website now that name is non-nullable
- New checkDatabaseSchema utility: bidirectional check between Drizzle models and information_schema.columns — detects missing/extra tables and columns in both directions - server.ts: run schema check before the restart loop; SCHEMA_CHECK_ONLY=1 exits immediately after check (used by start.sh pre-flight) - start.sh: run plain tsx (no watch) with SCHEMA_CHECK_ONLY=1 before launching tsx watch so a non-zero exit propagates to the shell - compose.yml: add healthcheck on the API container so docker compose --wait correctly surfaces startup failures - up.sh: use --wait flag and print logs of exited containers on failure - metadata/package.json: add 'source' export condition pointing to .ts files so tsx --conditions source skips the build step in dev - api/worker package.json dev scripts: add --conditions source - worker: fix runAgentSession — remove idYear from file query/insert, update storageKey to org-level path (organizations/$org/storage/$id)
- Remove per-chunk console.log inside the LLM stream loop in runAgentSession — fired on every token, producing thousands of lines per agent session - Remove duplicate getJobCounts() log inside the Bull job processor callback (was logged once per job); keep only the startup log - Add Docker log rotation to the worker service in both compose files (max-size: 50m, max-file: 5 → 250 MB cap) as a safety net
…h maps - Fix org cookie not updated when selecting org in header (YearContextSelect was firing readAllYears with stale cookie after DB reset) - Add idOrganization to readAllYears body so query key is org-scoped - Eliminate nested YearDataWrapper in EntryPage by passing pre-resolved data as props from EntryTabContent (removes double useQueries subscription) - Extract EntryRoutePage for standalone router route - Pre-build 12 index Maps (entryById, entryLinesByEntryId, journalById, etc.) inside YearDataWrapper with stable memoized references — Maps only rebuild when their specific data slice changes - Remove 6 redundant useMemo Map builders from EntriesTable (now receive maps from YearDataWrapper as stable props) - Replace O(n) .find()/.filter() in entryTabContent with O(1) Map lookups
- Add split panel view: right-click tab → 'Ouvrir en vue divisée', or drag a tab outside the bar to create a new panel automatically - Resizable panels with drag handle (20–80% range); dragging no longer selects text (userSelect toggled on body during resize) - SplitTabBar for the right panel with back/forward navigation buttons, drag-to-reorder and drag-to-transfer between panels - Closing the last tab in a panel closes both the tab and the panel - Auto-close split view when the left panel would have no tabs remaining - Right-click on empty tab bar area shows context menu: 'Fusionner les panneaux' (only visible in split mode) - Replaced Popover-based tab context menu with Radix ContextMenu (single root, capture/bubble trick for tab vs bar distinction) - ContextMenu.Item highlighted state matches hover style (no focus ring) - reorderTabs added to TabsContext for global tab reordering
- Rename ~440 .tsx component files from camelCase to PascalCase - Update all import paths across website, api, worker, and ui packages - Fix API email template import casing mismatches - Merge SplitTabBar into TabBar via panel? prop - Add tab description subtitle from HistoryEntry - Add label prop to écriture tab definition - Update dashboard docs with 5 interface sections
…out components Replace all SubPageLayout and PageNavigation usages in dashboard layout components with simple <Outlet /> passthroughs. This removes the sidebar nav and top navigation from OrganizationLayout, YearLayout, AdminPanelLayout, OrganizationBillingLayout, OrganizationApiLayout, OrganizationSettingsLayout, ReportsLayout, and YearSettingsLayout. Also includes prior commits: - Add Page.Banners sub-component (before header) - Simplify SubPageContent to tab-only system (remove split panel) - Remove old dashboard route sub-trees (organizations, admin, agent, profile, settings, support) and fix all broken imports
- Fix import ordering (organizeImports) in packages/ui, packages/api, packages/website - Fix useImportType in popover/dialog components - Fix useParams cast types (string | undefined → string) in dashboard feature pages - Fix broken EntryRoutePage import (EntryPage → EntryInformationsTab) - Fix string | null incompatibility in UpdateOneJournal
- Extract vite.config.ts plugins into packages/website/plugins/:
- prerenderPlugin.ts: builds render.tsx with build.ssr, calls
renderToString for each route, writes static HTML files at build time
- render.tsx: renderToString entry using createMemoryHistory router
- docsSearchIndexPlugin.ts: search index virtual module
- sitemapPlugin.ts: sitemap.xml generator
- fontPreloadPlugin.ts: font preload link injector
- DOC_PAGE_MANIFEST.ts: static route manifest for doc pages
- Replace radix-ui context-menu and tooltip with custom implementations
- Add getCookie Node.js guard for SSR-safe cookie access
- Update root.tsx for plain SPA boot (no hydration needed)
- Simplify vite.config.ts by importing from plugins/
- Remove organisations GET/POST from API docs (dashboard-only) - Add org delete CLI command + doc - Add entries CRUD, compute, lines, tags to CLI - Add years settle-balance-sheet/settle-income-statement to CLI - Create balance-sheets and income-statements CLI commands + docs - Add XBRL exports to CLI - Register all new commands in CLI index - Remove DocNextPage component from all doc pages - Make --url optional in cli login (default: https://api.arrhes.com) - Wrap all CLI command table cells with DocCode component - Update DocTable to accept ReactNode rows
da31460 to
93e68c7
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.