Local development#105
Merged
656d696c65 merged 52 commits intomainfrom May 5, 2026
Merged
Conversation
added 30 commits
March 16, 2026 11:18
- add LinkedIn contact card to support documentation page - replace GitHub plain text link with styled ButtonOutlineContent - add API documentation link button to related resources section - move GitHub icon button from hero header to footer - add LinkedIn and GitHub social links group in homepage footer
- forward className from submitButtonProps to the Button.Content component
- remove fixed height from inputPassword and inputToggle containers - add gap between password input and toggle button - adjust padding and margin on password input field and eye icon button - change hover border color from neutral/30 to neutral/50 - replace fontSize/lineHeight tokens with explicit rem values and add fontWeight - replace inner focus border-radius with outline: none on password input - add stroke color to eye icons for visibility - change inputToggle border-radius from sm to md - remove border-radius from selected toggle option outline
…r navigation - add collapsible hamburger menu for SubPageLayout sidebar on mobile (hidden on md+ breakpoints) - add collapsible hamburger menu for DocsLayout sidebar on mobile with toggle button - add flexWrap to dashboard header, docs header, home page, and page navigation tabs for small screen wrapping - extract SubPageLayout aside content into reusable variable shared between desktop sidebar and mobile menu - add onClick prop to SidebarNavigation to close mobile menu on link click - invalidate query cache when switching organizations in organizationPathRoute - remove unused PopoverContent type alias and comment out default popover padding - adjust docs layout padding to use uniform padding values - add format:fix step before biome check in CI Dockerfile - fix ternary formatting in inputPassword and indentation in inputToggle
- replace IconAbacus logo with custom SVG icon using primary color and stacked bar design - separate logo icon and "Arrhes" text in home page header - replace favicon.svg with favicon.ico and update index.html reference - add inset box-shadow to outline button for depth effect - change plain button border color from rgba to primary token - add padding and gap to Popover.Content in inputCombobox, inputComboboxMultiple, inputSelect, and dashboard layout - fix indentation in index.html and inputSelect type definition - add publicDir config to vite and fix root-relative script src - mark automation feature as isDev in pricing page
- split monolithic accounts, reports, and glossary pages into individual sub-pages with dedicated routes (accounts/classes, accounts/list, account detail, journal, grand livre, balance, bilan, compte de résultat, annexe, glossary term) - add double-entry accounting page as a new dedicated section between introduction and records - expand root accounting page with course plan overview and step-by-step navigation - rewrite introduction page with historical context and legal references, add cross-links to glossary terms - update sidebar navigation to support nested routes with optional title/icon sections and active state for child routes - add params and hash support to DocLink, DocNextPage, and LinkButton for parameterized routing - refactor DocGlossaryEntry to reuse DocDefinition and generate anchor IDs from term names - restyle document components: update DocDefinition layout and colors, make DocExample header always visible with default label, remove left border accent from DocTip variants, adjust paragraph text color - update Logo component to support optional text display - adjust buttonOutlineContent box-shadow opacity - remove redundant headings from root doc pages (API, dashboard, general) - correct account classes range from "1 à 7" to "1 à 8" in getting started page
…ies and fix border styles - move accounting doc pages and routes into nested subdirectories (accounts/, glossary/, introduction/, reports/) for better organization - rename doc pages to follow consistent naming convention (e.g., bilanPage → balanceSheetAccountingDocPage, grandLivrePage → ledgerAccountingDocPage) - remove PCG 2026 diff tracking fields (removed, added, previousLabel, previousSystem) from AccountEntry interface and account data - simplify AccountDetailPage by removing PCG 2026 diff banners, practical usage section, and class-specific tips - extract rootAccountingDocPage into introduction/ subdirectory as a new standalone component - replace generic borderColor with directional border color properties (borderBottomColor, borderTopColor, borderRightColor) across ~20 components - update docsTree route imports and navigation paths to match new directory structure - fix income statement doc path to use accented "résultat" - add Panda codegen step in dev website Dockerfile CMD for ui and website packages - simplify table header styling in docRouteRequest (remove textTransform, letterSpacing, adjust color)
…rs to accounting docs - add examples field to AccountEntry interface and populate ~870 example entries across all account classes - add ~170 descriptions to accounts lacking them - display journal entry examples with debit/credit rows on non-summary account pages - add info banner on summary accounts (1-2 digits) explaining they cannot be used directly in journal entries - add counterpart account resolution logic to generate contextual journal entry rows per account class - add warning tip on records introduction page about summary account restrictions - hide "Fonctionnement" and "Utilisation pratique" sections for summary accounts - update internal route paths from comptes/$account to comptes/liste/$account - remove unused ChildDiffTag component and ValidRoutes type - remove withText prop from Logo in docs sidebar
… pages Add DocSources component and integrate it into all 17 accounting doc pages, citing authoritative references (ANC PCG, Wikipedia, Légifrance) to back the documentation content.
…ument components - add Open Graph, Twitter Card, and JSON-LD structured data (Organization, WebSite, SoftwareApplication, BreadcrumbList) to rootLayoutRoute with per-route description and robots support - add meta descriptions to all route beforeLoad contexts (docs, dashboard, API, sign-in, sign-up, home, error) - add sitemap generator Vite plugin that extracts account and glossary slugs from source data to build a complete sitemap.xml - enhance index.html with OG/Twitter meta tags, theme-color, and improved keywords and description - add og.png and og.webp Open Graph images - add "neutral" variant to DocTip with custom icon and title props, change content wrapper from span to div - refactor DocDefinition and DocExample to compose via DocTip instead of duplicating layout/styling - change DocDefinition and DocGlossaryEntry API from definition prop to children prop pattern - add DocSourceRef component for inline source reference links - add optional description prop to DocNextPage component - refine DocSources styling: add source IDs, move hover styles to inner span, fix borderColor specificity - extract accountAccountingDocPage into lazy-loaded per-account page components (~866 page files) with shared reusable components (accountInfoCard, accountPageHeader, infoRow, etc.) - add accountPageRegistry for dynamic account page resolution - set noindex/nofollow robots directive on dashboard and error routes
- replace catch-all route redirect logic with a dedicated NotFoundPage component - add SEO metadata (title, description, noindex) to the catch route's beforeLoad - create notFoundPage with 404 heading, descriptive message, and navigation buttons to home and documentation pages - use lazyRouteComponent for code-splitting the not found page
…d data into accountsData.ts - replace 866 individual account page components with a single generic page (accountAccountingDocPage.tsx) that reads the URL param and renders the correct account dynamically - delete the entire pages/ directory (866 files) and accountPageRegistry.ts which mapped account numbers to lazy-loaded page components - move all derived account data (counterpart, usageTips, debitMeaning, creditMeaning, journalExample) directly into accountsData.ts as explicit inline fields on each defineAccount() call - remove runtime computation functions from accountUtilities.ts (getCounterpartForAccount, getJournalExample, getUsageTips, getDebitMeaning, getCreditMeaning) and the enrichment loops that ran them - simplify debitCreditSection.tsx and practicalUsageSection.tsx to read pre-computed fields from account entries instead of computing them at render time
…ps into JournalEntryExamples - delete practicalUsageSection.tsx and move usageTips rendering into journalEntryExamples.tsx - remove PracticalUsageSection import and usage from accountAccountingDocPage.tsx - fix defineAccount regex in sitemap plugin to handle multiline function calls
- add scrollRestoration: true to createRouter configuration
- add explicit 1-day cache rules for favicon.ico, og.png, and og.webp - remove ico from the immutable 1-year cache regex to prevent stale favicon caching - unhashed assets now get max-age=86400 instead of max-age=31536000 with immutable
…ry/entryLine/tag - rename record → entry, recordRow → entryLine, recordLabel → tag across models, schemas, API routes, metadata routes, website features, and tests - rename database tables: table_record → table_entry, table_record_row → table_entry_line, table_record_label → table_tag - add new entryTag join model (table_entry_tag) to replace the direct idRecordLabel foreign key on records with a many-to-many relationship between entries and tags - add entryTags API routes (addOneEntryTag, removeOneEntryTag, readAllEntryTags) and update duplicateOneEntry to copy tags - remove flag column from entryLine (previously recordRow) model - add FEC file export feature to entries page - update seed data, integration tests, docs, and dashboard routes to reflect the new naming - fix formatting in inputCombobox, inputComboboxMultiple, inputSelect, and dropdownContent components - add zIndex to dropdownContent for proper layering - delete .dev/2026.json data file
…nts and UI consistency - add english translations and per-term sources to glossary data model - extract GlossaryListItem into its own component with translation display - replace custom styled links/cards with ButtonOutlineContent in account pages (parent, children, glossary term, error report) - remove AccountPageHeader component and use DocHeader directly - make DocDefinition term prop optional for flexible reuse - add children slot to ButtonContentProps for custom inner content - update ANC source URL across all accounting doc pages - compute isSelectable from account number length instead of using static data in createOneYear API route
…dedicated sub-routes - add reusable Tab component (Tab.Root) using router-based navigation instead of local useState tab switching - extract layout shells (entryLayout, fileLayout, accountLayout, journalLayout, tagLayout, balanceSheetLayout, incomeStatementLayout, computationLayout, computationIncomeStatementLayout, entryLineLayout) with shared header, banners, and Tab.Root - split monolithic detail pages into dedicated tab routes (informations, metadata, lines, categories, visualisation, postes) as child routes under each layout - replace Outlet passthrough in layout routes with lazyRouteComponent imports for code splitting - add dashboard catch-all route with dashboardNotFoundPage - add computationsPage replacing the redirect on /computations - remove unique constraint on tag label in tag model - simplify InputComboboxMultiple to always append selected option instead of toggling, remove check icon - increase PageContent gap from 0.5rem to 1rem - replace em dash (—) with hyphen (-) across codebase (AGENTS.md, comments, docs data, UI labels, page titles) - reorder node:crypto imports to follow external-first convention - adjust indentation in ensureStorageBucket and rootLayoutRoute
- extract inline css() calls to module-level constants in virtualizer - skip measureElement and ref measurement when childSize is provided, using fixed-size estimation instead of dynamic measurement - export ACCOUNT_ITEM_HEIGHT constant and set fixed row height - remove useDeferredValue wrapping for globalFilter and structuredAccounts in accountsTable to avoid unnecessary deferred renders
- add fecAccountingDocPage with definition, file structure, naming convention, obligations, sanctions, and Arrhes integration - add fecAccountingDocRoute with lazy-loaded component - register FEC route in docsTree and add entry in docSections - update ledger doc next page link to point to FEC page instead of annexe - add link to fec.arrhes.com validator tool in FEC export dialog - remove unused destructured variables in entryLayout - reorder node:crypto imports to comply with import sorting rules in checkUserSessionMiddleware and seed - format glossaryTermAccountingDocPage for line length consistency
- add admin package with sign-in page, dashboard layout, and ticket management UI - add admin API routes (signIn, signOut, readAdminUserSession) with dedicated session middleware - add ticket and ticketMessage models, schemas, and route definitions for both admin and dashboard users - replace sendSupportMessage with full ticket CRUD: create, read, update, list tickets and messages - rename user/userSession models to dashboardUser/ dashboardUserSession, add adminUser/adminUserSession models - restructure metadata routes from auth/public to dashboard/auth, dashboard/public, and admin - move shared UI components (inputs, LinkButton, command, popover, virtualizer, formatNull, pageNavigation) from website to ui package - add Docker build and dev configurations for admin package - update website support page to display ticket list with detail view and message thread
…in ticket pages - move format components (FormatBase, FormatBoolean, FormatDate, FormatDateTime, FormatError, FormatFileSize, FormatLink, FormatPrice, FormatSelect, FormatText) from website to ui package - move Chip layout component from website to ui package - move toast system (ToasterProvider, Toast, useToast) from website contexts to ui package overlays - update all website imports to consume formats, Chip, and toast from @arrhes/ui instead of local paths - add react-dom and @types/react-dom to ui package dependencies - split admin ticketDetailPage monolith into separate components: ticketLayout, ticketPage, ticketMessageList, createOneTicketMessage, and statusToggle - restructure admin ticket routes with layout/child route pattern ($idTicketLayoutRoute + $idTicketRoute) - replace local formatDate functions in admin with shared formatDate from @arrhes/ui - add StatusToggle to website ticket layout with DataWrapper - improve website ticket message list styling with border container and time display - sort metadata model and schema imports alphabetically - fix formatting (import order, indentation) across api, ui, and metadata packages
- add authenticated agent routes for chat, session management, and undo actions - add agent provider, executor, tool router, and system prompt utilities - add agent session and message models, schemas, and dashboard auth route metadata exports - add dashboard agent pages, routes, chat components, and tools catalog in website - add assistant button in dashboard header with organization-aware navigation - update ui button color variant from neutral to default and adjust outline interactions - adjust page layout spacing and text line height for dashboard page components - seed populated organization with a premium subscription ending date - direct dependency updates: - packages/api @tanstack/ai: none -> 0.9.1 - packages/api @tanstack/ai-ollama: none -> 0.6.3 - packages/api @tanstack/ai-openai: none -> 0.7.2 - packages/api @valibot/to-json-schema: none -> 1.2.0 - packages/api openai: none -> 6.33.0 - packages/api vitest: ^4.0.18 -> 4.0.18 - packages/website @vitest/browser: ^4.0.18 -> 4.0.18 - packages/website playwright: ^1.58.2 -> 1.58.2 - packages/website vitest: ^4.0.18 -> 4.0.18 - packages/website @radix-ui/react-context-menu: ^2.2.16 -> 2.2.16 - packages/website @tanstack/ai-react: none -> 0.7.5 - packages/website mdast-util-gfm-table: none -> ^2.0.0 - packages/website micromark-extension-gfm-table: none -> ^2.1.1 - packages/website react-markdown: none -> 10.1.0
…tion - relocate agent feature files from features/agent/ to features/dashboard/agent/ to colocate with dashboard code - redesign AgentNewSessionPage with greeting, input area, suggestion chips, and disclaimer instead of bare chat - add module-level pending message store to pass first message from new session page to AgentChat on mount - nest agent routes under organization path (/organisations/$idOrganization/agent) instead of top-level /dashboard/agent/$idOrganization - remove standalone agentToolsPage and agentToolsRoute, move tools catalog to dashboard agent directory - redesign AgentPage layout with persistent sidebar for session list and new-session button - add session search with full-text matching on titles and message content via readAllAgentSessions endpoint - add usedTools field to agentMessage model, schema, and persistence logic to track which tools each message used - auto-generate session titles using a lightweight LLM call on first user message (fire-and-forget) - improve intent router with explicit documentation classification rule and additional examples - expand documentation tool category description to cover guides, API docs, and all application features - sort toolCategories imports alphabetically - add AI assistant documentation section under dashboard docs with introduction, models, tools, and OCR pages - add assistant navigation entries to docSections - update dashboardLayout to toggle assistant/dashboard button based on current route and require organization - redirect /dashboard/ to last-used organization via cookie - add "neutral" variant to ButtonColor type and update ghost/outline/plain button recipes for default color - fix message ordering with asc(createdAt) in readOneAgentSession - set dashboard layout to full viewport height with overflow hidden for proper nested scrolling
…tructure routing - remove AgentNewSessionPage and replace it with AgentOrganizationPage, which renders AgentChat without a session ID — the welcome screen is now an inline state of AgentChat - add welcome screen directly to AgentChat: greeting, input form, suggestion chips, and disclaimer rendered when no session, no messages, and no pending message exist - move session title generation from async LLM call to a direct truncation of the first user message text (up to 128 chars), set synchronously on session insert - remove generateSessionTitle and its fire-and-forget pattern, along with the delayed query invalidation workaround it required - remove the assistant toggle button from DashboardLayout and replace it with a permanent "Assistant" nav entry in OrganizationLayout - add mobile sidebar support in AgentPage: hamburger menu toggle on small screens, sidebar breakpoint changed from lg to md - restructure agent route tree: nest session routes under a new /sessions layout route (agentSessionsLayoutRoute), updating all navigation targets accordingly - move agentLayoutRoute parent from organizationPathRoute to organizationLayoutRoute so the agent shares the organization sidebar navigation - filter out mid-stream interrupted assistant messages in convertStoredMessagesToUIMessages to avoid displaying incomplete entries - remove the empty-state placeholder message from the existing session view
…ing, improve UI - Schema: replace role column with userMessage field in agentMessage table - API: move Bull enqueue outside transaction, add updateOneAgentSession route - API: fix SSE race conditions (dedicated Redis subscriber, re-check after subscribe) - API: handle completed/error states in SSE endpoint gracefully - Worker: rebuild conversation history with proper user→assistant alternation - Worker: emit TEXT_BOUNDARY markers for interleaved tool/text display - Worker: capture RUN_ERROR and persist error messages to DB - Website: SSE auto-detect on page load, polling fallback, auto-scroll - Website: interleave tool calls with text parts using TEXT_BOUNDARY markers - Website: error part rendering (red-tinted box), Enter-to-send, InputTextArea - Website: session context popover (year selector, custom instructions) - Website: delete session via dropdown menu with confirmation dialog - Clean up dead code: old.agentChat.ts, executor.ts, router.ts, provider.ts, mistralAdapter.ts, old.agentSessionPage copy.tsx, agentSessionList.tsx - Fix biome lint warnings (formatting, unused variables, Date.now())
Remove leading dots from workflow subdirectory names. Update all references in justfile, docs, Dockerfiles, entrypoints, compose files, and GitHub Actions workflow.
added 22 commits
April 14, 2026 14:31
…, stream fix - Add file import for agent with OCR processing (Mistral API) - Add SHA-256 hash dedup for files and OCR content - Add entry deduplication rules and entry-by-entry workflow - Strip isComputedFor* fields from tool schema - Add context limit warning (80% threshold) with SSE event - Fix [object Object] stream bug with typeof string guard - Add idFile linking for entries created from files - Fix Biome lint errors (useTemplate, noUselessContinue, import ordering)
…ponents - Add filter popover to all 5 report pages (journal, ledger, balance, balance sheet, income statement) - Filter by journal (single combobox) and category/tags (multiple combobox) - Refactor InputComboboxMultiple to use InputText + Virtualizer (remove cmdk dependency) - Align InputComboboxMultiple styling with InputCombobox - Fix tooltip clipping in drawers via TooltipPortal with z-index - Fix disabled button cursor visibility - Fix Biome import ordering in ui/index.ts
…t, and email validation - Add user profile page at /dashboard/profil with settings sections - Add UpdateUserEmail drawer with email validation flow - Add UpdateUserPassword drawer - Add DeleteUser drawer with sole admin protection - Add ValidateUserEmail inline component with code input and resend button - Add resendEmailValidation API route and metadata definition - Add deleteUser API route and metadata definition - Enable sendEmail in updateUserEmail API route - Use API error messages in toast notifications - Fix biome import ordering in UI and API packages
…ranslations - Add subagent delegation system with 4 specialized roles (data_analyst, entry_creator, document_processor, auditor) and recursive depth limit - Switch billing from message-count to token-based (64M tokens/month) - Move file attachments from message-level to session-level with OCR - Add tool translation catalog and strip raw tool names from LLM output - Show tool calls immediately during streaming (awaiting → completed) - Add UsageBar component for token/OCR usage on subscription page - Add streaming loader and subagent indicator in chat UI - Add system prompt rule enforcing entry lines creation - Increase maxIterations from 10 to 20 - Add DB migration for token tracking and subagent fields
- Use isNull() for nullable idYear column in eq() calls across file route handlers - Conditionally spread idYear in storage metadata objects - Convert ContextClients from static-only class to plain object - Fix import sorting in runAgentSession.ts
- Add @ mention system with searchable dropdown for accounts, entries, journals, tags, files - New MentionInput component with contentEditable, chip insertion, and dropdown positioning - Add searchReferenceable API endpoint with ILIKE search across entity tables - Persist references on agentMessage model (JSONB column + migration) - Resolve referenced entities to full JSON in worker system prompt - Display reference chips on sent messages - Simplify file attachment: paperclip button opens picker, auto-uploads, shows file chips in input area - Fix biome import ordering in runAgentSession.ts
- Create defineEntryTemplate factory in metadata package with types - Extract amortization template from website to shared metadata - Rename 'lines' to 'entryLines' across route, API handler, and forms - Add 'description' field to template definitions - Add buildEntryTemplatesDocumentation() helper for agent context - Create apply_entry_template agent tool with auto account resolution - Inject template docs into agent system prompt - Add ./entryTemplates subpath export to metadata package
…ation - Long-press-to-drag (300ms) on table rows with visual feedback (outline + background highlight when ready to drag) - Full-row drag/drop in FilesTable via getRowProps on DataTable; highlights drop targets, dims dragged item, suppresses click after drag - Drag-and-drop for both files and folders in FilesGrid (folders are now draggable sources as well as drop targets) - Move file/folder dialogs accessible via actions dropdown and context menu (MoveOneFileForm, MoveOneFolderForm) with descendant-folder exclusion - File upload deduplication: SHA-256 hash computed on client, server returns existing record if hash+org+year already present; distinct toasts for added / duplicate / error cases - DataTable: text ellipsis in cells (maxWidth:0 + overflow:hidden), last column exempt; getRowProps prop for per-row className and event handlers - UI: fix cursor inheritance in Button/ButtonGhostContent/ButtonOutlineContent; remove preventDefault from DialogContent onClick
- InputCheckbox: custom styled checkbox with clip-path checkmark animation, primary color fill on checked/indeterminate, appearance:none with ::before pseudo-element using transform scale for smooth draw-in effect - DataTable: internal rowSelection state via TanStack rowSelection API; new props enableRowSelection, getRowId, selectionActions, resetSelectionTrigger; memoized selectColumnDef/allColumns to avoid re-rendering all cells on tick; meta.fit column option for shrink-to-content column widths; ColumnMeta module augmentation for fit property - FilesTableSelectionActions: extracted component with bulk delete for files and folders, uses Extract<TableRow> type narrowing - EntriesTable: migrated to DataTable-internal selection, removed external selectedIds/handleBulkDelete state - fix(lint): remove unused biome-ignore suppression in dataTable.tsx; fix export ordering in ui/src/index.ts
- Add docsSearchIndexPlugin() Vite plugin that generates 'virtual:docs-search-index' at build/dev time - Manifest maps every static doc route to its source TSX file + nav metadata - extractDocPageContent(): scrapes title/description props, DocList items, DocTable rows, JSX text nodes - extractAccountEntries(): parses accountsData.ts — one entry per PCG account (866 entries) - extractGlossaryEntries(): parses glossaryData.ts — one entry per glossary term (37 entries) - HMR: invalidates virtual module on any watched doc/data file change - Add type declaration for virtual:docs-search-index in vite-env.d.ts - Remove static docsSearchIndex.ts (replaced by virtual module) - docsSearch.tsx: uniform result layout — chunk (highlighted match), path, title - docsSearch.tsx: max-height 70vh + overflow-y scroll on results panel - docsLayout.tsx: pull DocsSearch out of breadcrumb div as its own flex child (flex:1, maxWidth:512px)
- Replace document route + S3-stored PDF with react-pdf client-side rendering for balance sheet and income statement downloads - Add balanceSheetReportPdf.tsx and incomeStatementReportPdf.tsx using @react-pdf/renderer with local fmt() to avoid formatPrice incompatibilities - Fix XML download using fetch→blob→createObjectURL (was opening new tab) - Add generateBalanceSheetXml and generateIncomeStatementXml API routes - Remove document model, document routes, and server-side PDF generation routes - Add DB migration 0018_schema_cleanup.sql - Remove dead worker code: aiClient, qdrantClient, embeddings, vectors, scoring engine, example files, saveToStorage - Remove stale @evidencesystem/schemas workspace dependency from worker - Update billing: subscription pricing, wallet, invoice UBL, cancel flows - Update account creation/update routes and metadata models - Fix Biome formatting issues across modified files
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.