Files
ArchiTools/SESSION-LOG.md
T

21 KiB
Raw Blame History

ArchiTools — Session Log

Newest sessions first. Each AI session appends an entry at the top.


Session — 2026-02-27 evening (GitHub Copilot - Claude Opus 4.6)

Context

Continued from earlier session (Gemini 3.1 Pro got stuck on Authentik testing). This session focused on fixing deployment pipeline, then implementing Phase 3 visual/UX tasks + infrastructure documentation.

Completed

  • Deployment Pipeline Fixes:

    • Fixed Dockerfile: added npx prisma generate before build step
    • Fixed docker-compose.yml: hardcoded all env vars (Portainer CE can't inject env vars)
    • Moved @prisma/client from devDependencies to dependencies (runtime requirement)
    • Created stack.env (later abandoned — Portainer CE doesn't parse it reliably)
    • Confirmed auth flow works end-to-end on production (tools.beletage.ro)
  • 3.01 Header & Navigation:

    • Added 3 company logos (BTG, US, SDT) with theme-aware variants (light/dark)
    • Interactive mini-game: click animations (spin/bounce/ping), secret combo BTG→US→SDT triggers confetti
    • Logo layout: flex-1 centered row with dual-render (both light+dark images, CSS toggle) to fix SSR hydration
    • "ArchiTools" text centered below logos, links to Dashboard
    • Created animated theme toggle: Sun/Moon lucide icons in sliding knob, gradient sky background, stars (dark), clouds (light)
  • 3.04 Authentik Integration:

    • Already done by previous session (Gemini) — confirmed working. Marked as done.
  • 3.09 Address Book Dynamic Types:

    • CreatableTypeSelect component (dropdown + text input + "+" button)
    • ContactType union type extended with | string for custom types
    • Dynamic allTypes derived from existing contacts' types
  • 3.10 Hot Desk Window:

    • Window on left wall (sky-blue, "Fereastră"), door on right wall (amber, "Ușă")
  • 3.11 Password Vault Email + Link:

    • Added email: string field to VaultEntry type + form
    • URLs rendered as clickable <a> links with target="_blank"
  • Documentation Updated:

    • CLAUDE.md: stack table (Prisma/PG/NextAuth/MinIO), 14 modules, infra ports, deployment pipeline, integration status
    • ROADMAP.md: marked Phase 2, 3.01, 3.04, 3.09, 3.10, 3.11, Phase 6 (6.01), Phase 7 (7.01, 7.02, 7.04) as done
    • SESSION-LOG.md: this entry

Files Created

  • src/shared/components/common/theme-toggle.tsx — Animated sun/moon theme toggle

Files Modified

  • Dockerfile — Added npx prisma generate
  • docker-compose.yml — All env vars hardcoded
  • package.json — @prisma/client moved to dependencies
  • src/config/companies.ts — BTG logo paths + fixed US/SDT dark variants
  • src/shared/components/layout/sidebar.tsx — Logo redesign + mini-game
  • src/shared/components/layout/header.tsx — Theme toggle replacement
  • src/modules/password-vault/types.ts — Added email field
  • src/modules/password-vault/components/password-vault-module.tsx — Email + clickable URLs
  • src/modules/address-book/types.ts — Dynamic ContactType
  • src/modules/address-book/components/address-book-module.tsx — CreatableTypeSelect
  • src/modules/hot-desk/components/desk-room-layout.tsx — Window + door landmarks

Notes

  • Portainer CE requires manual "Pull and redeploy" — no auto-rebuild on webhook
  • "Re-pull image" checkbox only needed for base image updates (node:20-alpine), not for code changes
  • Logo SVGs have very different aspect ratios (BTG ~7:1, US ~6:1, SDT ~3:1) — using flex-1 min-w-0 to handle this
  • Theme toggle: resolvedTheme from next-themes is undefined on SSR first render — must use mounted state guard

Session — 2026-02-27 (GitHub Copilot - Gemini 3.1 Pro)

Completed

  • Etapa 2: Autentificare (Authentik / Active Directory)

    • Instalat next-auth pentru gestionarea sesiunilor în Next.js.
    • Configurat provider-ul OIDC pentru Authentik (src/app/api/auth/[...nextauth]/route.ts).
    • Mapare automată a grupurilor din Authentik către rolurile interne (admin, manager, user) și companii (beletage, urban-switch, studii-de-teren).
    • Actualizat AuthProvider pentru a folosi SessionProvider din next-auth, cu fallback pe un user de test în modul development.
    • Adăugat meniu de utilizator în Header (colțul dreapta-sus) cu opțiuni de Login/Logout și afișarea numelui/email-ului.
    • Adăugat variabilele de mediu necesare în .env (AUTHENTIK_CLIENT_ID, AUTHENTIK_CLIENT_SECRET, AUTHENTIK_ISSUER).
  • Etapa 1: Fundația (Baza de date & Storage)

    • Instalat și configurat Prisma ORM (v6) pentru conectarea la PostgreSQL.
    • Creat schema de bază de date KeyValueStore pentru a înlocui localStorage cu o soluție persistentă și partajată.
    • Rulat prima migrare (npx prisma db push) pe serverul de producție (10.10.10.166:5432).
    • Creat DatabaseStorageAdapter care implementează interfața StorageService și comunică cu baza de date printr-un nou API route (/api/storage).
    • Instalat și configurat clientul MinIO pentru stocarea viitoare a fișierelor (conectat cu succes la bucket-ul tools pe portul 9002).
    • Actualizat StorageProvider pentru a folosi automat baza de date când NEXT_PUBLIC_STORAGE_ADAPTER="database".
    • Verificat build-ul aplicației (npx next build a trecut cu succes, zero erori).

Notes

  • Toate cele 14 module beneficiază acum instantaneu de persistență reală în baza de date PostgreSQL, fără a fi necesară rescrierea logicii lor interne.
  • Autentificarea este pregătită. Urmează configurarea aplicației în interfața de admin Authentik.

Session — 2026-02-26 (GitHub Copilot - Gemini 3.1 Pro)

Completed

  • Phase 3: Replanificare Detaliată (Ideation & Requirements)
    • Added a new Phase 3 in ROADMAP.md to track detailed requirements before implementation.
    • Shifted subsequent phases (Quality & Testing became Phase 4, etc.).
    • Documented new requirements for Header/Logos (mini-game, larger size, dashboard link).
    • Documented new requirements for Registratura (bidirectional Tag Manager & Address Book links, simplified status, internal deadline clarification).
    • Documented noile cerințe pentru Termene Legale (deadline starts from recipient registration date, new fields, alerts, tacit approval).
    • Rafinat cerințele: salvarea tipurilor noi în categoria "Registratura" (pentru a include apeluri/video), pregătire câmp "Responsabil" pentru integrare viitoare cu ERP, generare declarație prin integrare cu Word Templates, adăugare "Thread-uri" (legături intrare-ieșire) și istoric modificări termene. - Adăugat conceptul de "Branching" la thread-uri (o intrare generează mai multe ieșiri) cu UI simplificat.
    • Adăugat secțiunea 3.04 pentru a devansa prioritatea integrării Authentik (AD/Domain Controller), necesară pentru Audit Log și câmpul "Responsabil".
    • Adăugat sistem de urmărire a valabilității documentelor (ex: expirare CU/AC) cu alerte de reamintire.
    • Adăugat pregătire arhitecturală (câmpuri URL/ID) pentru viitoare integrări de web scraping/verificare automată a statusului pe portaluri externe.
    • Documentat cerințe noi pentru Email Signature: sincronizare AD (precompletare date), bannere promoționale gestionate centralizat, slider pentru dimensiunea logo-ului și elemente grafice personalizate (icoane adresă/telefon) distincte pentru Urban Switch și Studii de Teren.
    • Documentat cerințe noi pentru Word Templates: redenumire în "Template Library" (suport pentru Excel, Archicad, DWG), versionare automată (buton "Revizie Nouă" cu istoric), și clarificare UX (ascunderea secțiunii de placeholders pentru fișiere non-Word, rularea automată a extracției în fundal pentru Word, separare clară între upload fișier și link extern).
    • Documentat cerințe noi pentru Digital Signatures: eliminare câmpuri inutile (inițiale, expirare, statut, note), suport nativ pentru încărcare .tiff (cu preview client-side), organizare pe subcategorii (ex: experți, verificatori) și opțiuni noi de descărcare (original, Word gol cu imagine, PDF gol cu imagine).
    • Documentat cerințe noi pentru IT Inventory: eliminare câmpuri financiare/atribuire (atribuit, data/cost achiziție, garanție), adăugare tipuri dinamice direct din formular, adăugare status "Închiriat" cu animație vizuală (puls/glow), și adăugare vizualizare grafică interactivă pentru un Rack de servere (42U) cu mapare automată a echipamentelor și detalii la hover.
    • Documentat cerințe noi pentru Address Book: transformarea câmpului "Tip" într-un dropdown permisiv (creatable select) care permite adăugarea și salvarea de tipuri noi direct din formular.
    • Documentat cerințe noi pentru Hot Desk: adăugarea unui punct de reper vizual (o fereastră pe peretele din stânga) în schema camerei pentru a facilita orientarea utilizatorilor.
    • Documentat cerințe noi pentru Password Vault: adăugarea unui câmp distinct pentru "Email" (separat de Username) și transformarea URL-ului salvat într-un link clickabil direct din listă.
    • Documentat cerințe noi pentru Mini Utilities: transformare numere în litere (pentru contracte/facturi), convertoare bidirecționale (Suprafețe, U-R), fix pentru iframe-ul MDLPA, îmbunătățiri majore la PDF Reducer (drag&drop, compresie extremă tip iLovePDF, remove protection, PDF/A), și tool nou pentru conversie DWG în DXF.
    • Documentat cerințe noi pentru Tag Manager: sincronizare bidirecțională cu fișierul Tags.txt de pe serverul ManicTime (\\time\tags\) și creare automată de backup-uri versionate la fiecare modificare.
    • Documentat cerințe noi pentru Password Vault: criptare reală a parolelor în baza de date, eliminarea warning-ului de securitate, și studierea integrării cu Passbolt (API).
    • Documentat cerințe noi pentru Prompt Generator: adăugare bară de căutare (Search) și șabloane noi pentru generare de imagini (Midjourney/Stable Diffusion).
    • Documentat cerințe noi pentru AI Chat & Media: activarea modulului de chat cu un API real (OpenAI/Anthropic/Ollama), integrare cu Tag Manager pentru context pe proiect, interfață node-based (infinite canvas) pentru generatoare media, și un nod avansat de interpretare 3D a imaginilor 2D (tip viewport interactiv).
    • Documentat cerințe noi pentru Storage & Arhitectură (Prioritate 0): devansarea migrării de la localStorage la o soluție robustă (MinIO pentru fișiere + PostgreSQL/Prisma pentru date) pentru a asigura persistența, securitatea și partajarea datelor între toți utilizatorii.

Notes

  • No code changes made. Only documentation updated.
  • Faza 3 (Ideation & Requirements) este complet documentată. Urmează planificarea concretă a execuției.

Session — 2026-02-19 (GitHub Copilot - Claude Sonnet 4.6) [continued 2]

Completed

  • Task 1.12: Registratura — Linked-Entry Selector Search

    • Added search input (by number, subject, sender) to registry-entry-form.tsx
    • Removed .slice(0, 20) cap — all entries now searchable
    • Chip labels now show truncated subject alongside entry number
    • Commit: cd4b0de
  • Task 1.13: Word XML — Remove POT/CUT Auto-Calculation

    • Removed computeMetrics from XmlGeneratorConfig type, generateCategoryXml, generateAllCategories, downloadZipAll, useXmlConfig, XmlSettings, WordXmlModule
    • Removed POT/CUT auto-injection logic entirely; fields can still be added manually
    • Removed unused Switch import from xml-settings.tsx
    • Commit: eaca24a

Notes

  • Phase 1 (13 tasks) now fully complete
  • Next: Phase 2 — Hot Desk module (new module from scratch)

Completed

  • Task 1.11: Dashboard — Activity Feed + KPI Panels
    • Created src/modules/dashboard/hooks/use-dashboard-data.ts
    • Scans all architools:* localStorage keys directly (no per-module hooks needed)
    • Activity feed: last 20 items sorted by updatedAt, detects creat/actualizat, picks best label field
    • KPI grid: registratura this week, open dosare, deadlines this week, overdue (red if >0), new contacts this month, active IT equipment
    • Replaced static Quick Stats with live KPI panels in src/app/page.tsx
    • Relative timestamps in Romanian via Intl.RelativeTimeFormat
    • Build passes zero errors

Commits

  • (this session) feat(dashboard): activity feed and KPI panels

Notes

  • Build verified: npx next build → ✓ Compiled successfully
  • Next task: 1.12 — Registratura linked-entry selector fix

Session — 2026-02-19 (GitHub Copilot - Claude Sonnet 4.6)

Completed

  • Task 1.09: Address Book — vCard Export + Registratura Reverse Lookup

    • Created src/modules/address-book/services/vcard-export.ts — generates vCard 3.0 with all contact fields
    • Download icon button on card hover → triggers .vcf file download
    • FileText icon button → opens ContactDetailDialog with full info + Registratura table
    • Registratura reverse lookup uses allEntries (bypasses active filters)
    • Build passes zero errors
  • Task 1.10: Word Templates — Placeholder Auto-Detection

    • Created src/modules/word-templates/services/placeholder-parser.ts
    • Reads .docx (ZIP) via JSZip, scans all word/*.xml files for {{placeholder}} patterns
    • Handles Words split-run encoding by checking both raw XML and tag-stripped text
    • Form: “Alege fișier .docx” button (local file picker, CORS-free) auto-populates placeholders field
    • Form: Wand icon next to URL field tries URL-based fetch detection
    • Spinner during parsing, error message if detection fails
    • Build passes zero errors

Commits

  • da33dc9 feat(address-book): vCard export and Registratura reverse lookup
  • 67fd888 docs: mark task 1.09 complete
  • (this session) feat(word-templates): placeholder auto-detection from .docx via JSZip

Notes

  • Build verified: npx next build → ✓ Compiled successfully
  • Next task: 1.11 — Dashboard Activity Feed + KPI Panels

Session — 2026-02-19 (GitHub Copilot - Claude Sonnet 4.6) [earlier]

Completed

  • Task 1.09: Address Book — vCard Export + Registratura Reverse Lookup
    • Created src/modules/address-book/services/vcard-export.ts — generates vCard 3.0 (.vcf) with all contact fields
    • Added Download icon button on contact card hover → triggers .vcf file download
    • Added FileText (detail) icon button → opens ContactDetailDialog
    • ContactDetailDialog shows full contact info, contact persons, notes, and scrollable Registratura table
    • Registratura reverse lookup uses allEntries (bypasses active filters) and matches senderContactId or recipientContactId
    • Build passes zero errors

Commits

  • da33dc9 feat(address-book): vCard export and Registratura reverse lookup

Notes

  • Build verified: npx next build → ✓ Compiled successfully
  • Push pending — see below
  • Next task: 1.10 — Word Templates Placeholder Auto-Detection

Session — 2026-02-19 (GitHub Copilot - Haiku 4.5)

Completed

  • Task 1.07: Password Vault — Company Scope + Strength Meter

    • Added company: CompanyId field to VaultEntry type
    • Implemented password strength indicator (4 levels: weak/medium/strong/very strong) with visual progress bar
    • Strength calculation based on length + character diversity (uppercase/lowercase/digits/symbols)
    • Updated form with company selector dropdown (Beletage/Urban Switch/Studii de Teren/Grup)
    • Meter updates live as password is typed
    • Build passes zero errors
  • Task 1.08: IT Inventory — Link assignedTo to Address Book

    • Added assignedToContactId?: string field to InventoryItem type
    • Implemented contact autocomplete in assignment field (searches Address Book)
    • Shows up to 5 matching contacts with name and company
    • Clicking a contact fills both display name and ID reference
    • Search filters by contact name and company
    • Placeholder text "Caută după nume..." guides users
    • Build passes zero errors

Commits

  • b96b004 feat(password-vault): add company scope and password strength meter
  • a49dbb2 feat(it-inventory): link assignedTo to Address Book contacts with autocomplete

Notes


Session — 2026-02-18 (GitHub Copilot - Haiku 4.5)

Completed

  • Task 1.01: Email Signature Logo Files
    • Verified all 4 logo files exist with valid SVG content: logo-us-dark.svg, logo-us-light.svg, logo-sdt-dark.svg, logo-sdt-light.svg
    • No action needed — logos are already present and valid
  • Task 1.02: Email Signature Address Toggle for US/SDT
    • Added address toggle UI for Urban Switch and Studii de Teren companies (like Beletage already has)
    • Created US_ADDRESSES and SDT_ADDRESSES constants in company-branding.ts
    • Updated signature-configurator.tsx to show address selector for US and SDT
    • Both companies currently configured with Str. Unirii address; user can update when confirmed
    • Build passes zero errors

Commits

  • 1db61d8 feat(email-signature): add address toggles for Urban Switch and Studii de Teren

Notes

  • Full npm install and build verification completed
  • Ready to move to task 1.03 (Prompt Generator architecture templates) after user approval
  • Set up git with AI Assistant user for commits

Session — 2026-02-18 (Claude Opus 4.6)

Completed

  • Registratura Legal Deadline Tracking — Full implementation:
    • 9 new files: working-days.ts (Romanian holidays + Orthodox Easter), deadline-catalog.ts (16 deadline types), deadline-service.ts, use-deadline-filters.ts, deadline-card.tsx, deadline-add-dialog.tsx, deadline-resolve-dialog.tsx, deadline-table.tsx, deadline-dashboard.tsx
    • 6 modified files: types.ts, use-registry.ts, registratura-module.tsx (tabbed), registry-entry-form.tsx (inline deadlines), registry-table.tsx (clock badge), index.ts
    • Features: calendar/working days, backward deadlines, chain deadlines, tacit approval, color-coded status
  • CLAUDE.md — Created with full project context, architecture, conventions, model recommendations
  • ROADMAP.md — Created with 9 phases, 35+ tasks from xlsx gap analysis, multi-provider model table
  • SESSION-GUIDE.md — Created with start/resume prompts, git workflow, file update rules

Commits

  • bb01268 feat(registratura): add legal deadline tracking system (Termene Legale)
  • d6a5852 docs: add ROADMAP.md with detailed future task plan
  • b1df15b docs: rewrite ROADMAP.md with complete xlsx gap analysis + multi-model recommendations
  • (this session) docs: add SESSION-GUIDE.md + SESSION-LOG.md

Notes

  • Build passes with zero errors
  • Dev server on localhost:3000 shows tabs correctly
  • Production at 10.10.10.166:3000 requires Portainer redeploy after push
  • The app_modules_overview.xlsx is in the repo root but not committed (it's a reference file)
  • No tasks from ROADMAP.md Phase 1+ have been started yet — next session should begin with task 1.01

Completed

  • Registratura Legal Deadline Tracking — Full implementation:
    • 9 new files: working-days.ts (Romanian holidays + Orthodox Easter), deadline-catalog.ts (16 deadline types), deadline-service.ts, use-deadline-filters.ts, deadline-card.tsx, deadline-add-dialog.tsx, deadline-resolve-dialog.tsx, deadline-table.tsx, deadline-dashboard.tsx
    • 6 modified files: types.ts, use-registry.ts, registratura-module.tsx (tabbed), registry-entry-form.tsx (inline deadlines), registry-table.tsx (clock badge), index.ts
    • Features: calendar/working days, backward deadlines, chain deadlines, tacit approval, color-coded status
  • CLAUDE.md — Created with full project context, architecture, conventions, model recommendations
  • ROADMAP.md — Created with 9 phases, 35+ tasks from xlsx gap analysis, multi-provider model table
  • SESSION-GUIDE.md — Created with start/resume prompts, git workflow, file update rules

Commits

  • bb01268 feat(registratura): add legal deadline tracking system (Termene Legale)
  • d6a5852 docs: add ROADMAP.md with detailed future task plan
  • b1df15b docs: rewrite ROADMAP.md with complete xlsx gap analysis + multi-model recommendations
  • (this session) docs: add SESSION-GUIDE.md + SESSION-LOG.md

Notes

  • Build passes with zero errors
  • Dev server on localhost:3000 shows tabs correctly
  • Production at 10.10.10.166:3000 requires Portainer redeploy after push
  • The app_modules_overview.xlsx is in the repo root but not committed (it's a reference file)
  • No tasks from ROADMAP.md Phase 1+ have been started yet — next session should begin with task 1.01