CRITICAL PERF BUG: Every hook did storage.list() (1 HTTP call fetching ALL
items with values, discarding values, returning only keys) then storage.get()
for EACH key (N individual HTTP calls re-fetching values one by one).
With 6 entries + contacts + tags, Registratura page fired ~40 sequential
HTTP requests on load, where 3 would suffice.
Fix: Replace list()+N*get() with single exportAll() call in ALL hooks:
- registratura/registry-service.ts (added exportAll to RegistryStorage interface)
- address-book/use-contacts.ts
- it-inventory/use-inventory.ts
- password-vault/use-vault.ts
- word-templates/use-templates.ts
- prompt-generator/use-prompt-generator.ts
- hot-desk/use-reservations.ts
- email-signature/use-saved-signatures.ts
- digital-signatures/use-signatures.ts
- ai-chat/use-chat.ts
- core/tagging/tag-service.ts (uses storage.export())
Additional fixes:
- registratura/use-registry.ts: addEntry uses optimistic local state update
instead of double-refresh; closeEntry batches saves with Promise.all +
single refresh
- server-rack.tsx: reversed slot rendering so U1 is at bottom (standard
rack numbering, per user's physical rack)
Performance impact: ~90% reduction in HTTP requests on page load for all modules
- Added ClosureInfo type with reason, closedBy, closedAt, linkedEntry, hadActiveDeadlines, attachment
- Rewrote close-guard-dialog into universal close dialog (always shown on close)
- Reason field (always required)
- Optional continuation entry search+link
- Optional closing document attachment (file upload)
- Active deadlines shown as warning banner when present
- Created ClosureBanner component (read-only, shown at top of closed entry edit)
- Shows who, when, why, linked entry (clickable), attached doc (downloadable)
- All closes now go through the dialog no more silent closeEntry
- Linked-entries sub-dialog preserved as second step
- Dynamic document types: string-based DocumentType synced with Tag Manager
(new types auto-create tags under 'document-type' category)
- Added default types: 'Apel telefonic', 'Videoconferinta'
- Bidirectional Address Book: quick-create contacts from sender/recipient/
assignee fields via QuickContactDialog popup
- Simplified status: Switch toggle replaces dropdown (default open)
- Responsabil (Assignee) field with contact autocomplete (ERP-ready)
- Entry threads: threadParentId links entries as replies, ThreadView shows
parent/current/children tree with branching support
- Info tooltips on deadline, status, and assignee fields
- New Resp. column and thread icon in registry table
- All changes backward-compatible with existing data
- Add 10 Urban Switch projects (US-001 to US-010, color #345476)
- Add 10 Studii de Teren projects (SDT-001 to SDT-010, color #0182A1)
- Enforce mandatory project code + company scope for project category tags
- Show inline validation errors on create form
- Add hint text for project/phase mandatory categories
- Update seed import dialog to mention all 3 companies
- Fix all 3 address constants: Christescu (nr. 12, 400416), Unirii (nr. 3 sc. 3 ap. 26, 400432), Albac (nr. 2 ap. 1, 400459)
- Add 3rd address option (Albac) to all company address selectors
- Default address changed to Christescu for all companies
- Update US brand colors to logo blue (#345476), SDT to logo teal (#0182A1)
- Fix slashAccent for US/SDT (was pointing to logo files instead of slash assets)
- Add logoDimensions to CompanyBranding type for per-company logo sizing
- Set US logo to 140x24 and SDT to 71x24 (matching SVG aspect ratios)
- Fix sidebar hydration error: remove unused useTheme() hook call
- Update color palettes in configurator to match logo-derived colors
Tasks: 1.01 (verified), 1.02 (address toggle + fixes)
All prompts now use repo URL instead of local paths.
Works from any device: Mac, PC, phone, any AI tool.
Two access points: internal (10.10.10.166:3002) and external (git.beletage.ro).
Added tool-specific notes for Claude Code, ChatGPT Codex, Copilot, Cursor, Antigravity, phone.
Raw file URLs for AI tools that can fetch web content.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
All prompts now include:
- Gitea repo URL
- Local file paths (/Users/mariustarau/Development/ArchiTools/...)
- Production URL (http://10.10.10.166:3000)
- git pull + npm install as first step
- 6 prompt variants: new session, resume, specific task, bug fix, code review, new module
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 9 phases, 35+ tasks covering all xlsx gaps and future features
- Module 14 (Hot Desk) added as new module task
- All gaps from app_modules_overview.xlsx tracked per module
- Model recommendations: Claude (Opus/Sonnet 4.6/Haiku), OpenAI (GPT-5.3-Codex/5.2/4o-mini), Google (Gemini 3 Pro/Flash/2.5 Flash)
- Step-by-step workflow: AI implements → builds → pushes → user approves
- Quick picker by time budget (15min / 1hr / full session)
- Infrastructure credentials checklist
- Updated CLAUDE.md model table
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>