Architectural and design decisions that aren't documented elsewhere. This file serves as institutional memory for current and future contributors.
- todo.php: Changes that are accepted in planning - active, prioritized work
- rfe.php: Proposed/requested changes that have not been roadmapped yet - the "someday-maybe" list
- When a feature gets prioritized, it moves from rfe.php to todo.php
- Goal: Finish Redis monitoring capabilities (todo 20-xx series)
- Goal: Enhance UI/UX (Settings dropdown, navigation, render times)
- Goal: Stabilize and polish the PHP codebase for production use
- Stack: PHP + jQuery (current)
- Goal: Add monitoring for additional database platforms beyond MySQL/Redis
- Candidates: MS-SQL, PostgreSQL, Oracle, Oracle RAC, MongoDB, Cassandra, and others
- Decision: Not committing to specific platforms yet - depends on cost, access to real environments, and production DBA relevance
- Constraint: MySQL and MS-SQL available at work; PostgreSQL available in Proxmox cluster for dev/test but not production-representative
- Learning goal: Each new platform teaches us what patterns work and what needs to change for v4
- Goal: Rewrite AQL, potentially in Node.js, using TDD/BDD methodology
- Approach: Before starting v4, Claude catalogs all features, decisions, and lessons learned from v2-v3
- Not the last version: v4 is not the end of the series - it's a foundation for continued evolution
- Stack: Under consideration (Node.js leading candidate, but not committed)
- Decision: Deferred to v3.9x at earliest, possibly v4.9x
- Rationale: Major architectural shift that enables historical tracking (seconds behind master graphs, user count trends, etc.) but needs the right foundation first
- Benefit: Reduces N browser AJAX calls to 1 central poller, enables server-side recording and trending
- Each browser tab independently polls all monitored hosts via AJAX
- Simple architecture, no server-side state beyond MySQL config
- Trade-off: N browsers x M hosts = N*M connections to monitored servers
- Works well for small-to-medium deployments with few concurrent viewers
- Fire all AJAX requests independently (not $.when() which blocks on all)
- Each response processed immediately in .done() callback
- Track completion with counter, finalize when all complete (success OR failure)
- Failed hosts show errors without blocking other hosts
- Moved refresh interval, debug options, and auto-refresh toggle into Settings dropdown
- Host selection stays in header table (too large for dropdown)
- Mute controls stay in header table (complex, needs visibility)
- Hidden form fields sync between Settings dropdown and host form
- AQL dropdown organized with Noteworthy/Full as flyout submenus
- Reduces visual overload while providing direct navigation to every section
- Redis sections conditionally included based on redisEnabled config
- Summary/total rows go in
<tfoot>, never<tbody> - tablesorter re-sorts
<tbody>but leaves<tfoot>fixed at bottom
- Dark mode default, light mode via
.theme-lightclass - CSS variables for all colors - never hardcode colors
- Gold/yellow for dark mode accent, blue for light mode accent
- Had duplicate:
togglePageRefresh()in common.js andtoggleAutoRefresh()in index.php - Resolved: removed
togglePageRefresh(), unified ontoggleAutoRefresh()in navbar Settings dropdown