claude.md update and roadmap.md created
This commit is contained in:
parent
9a248071c7
commit
588e0e4310
2 changed files with 114 additions and 8 deletions
48
CLAUDE.md
48
CLAUDE.md
|
|
@ -17,18 +17,50 @@ You are working on **Project Aether** — a beautiful, fast, native open-source
|
||||||
// (at your option) any later version.
|
// (at your option) any later version.
|
||||||
|
|
||||||
Keep the modular QML structure: separate files in src/qml/components/, src/qml/styles/, src/qml/utils/.
|
Keep the modular QML structure: separate files in src/qml/components/, src/qml/styles/, src/qml/utils/.
|
||||||
Every QML file must import:
|
Every QML file must import:qmlimport QtQuick 2.15
|
||||||
|
|
||||||
import QtQuick 2.15
|
|
||||||
import QtQuick.Controls 2.15
|
import QtQuick.Controls 2.15
|
||||||
import QtQuick.Controls.Material 2.15
|
import QtQuick.Controls.Material 2.15
|
||||||
import QtQuick.Layouts 1.15
|
import QtQuick.Layouts 1.15
|
||||||
import Aether 1.0
|
import Aether 1.0
|
||||||
|
|
||||||
Theme and Constants are singletons — always use Theme.xxx and Constants.xxx. Never use hard-coded colors or sizes.
|
Theme and Constants are singletons — always use Theme.xxx and Constants.xxx. Never hard-code colors, sizes, or fonts.
|
||||||
Never use letterSpacing — use font.letterSpacing.
|
Never use letterSpacing: — always use font.letterSpacing:.
|
||||||
Never use modelData directly in Repeater — always use model.modelData or named roles.
|
In Repeater delegates, always use named model roles (model.channelId, model.name, etc.) — never modelData.
|
||||||
When fixing errors, change only the necessary lines. Do not rewrite whole files unless asked.
|
When fixing errors, change only the necessary lines. Do not rewrite whole files unless explicitly asked.
|
||||||
Keep code clean, well-commented, and easily changeable later.
|
|
||||||
|
QML Best Practices
|
||||||
|
|
||||||
|
Use component for inline reusable items inside a file.
|
||||||
|
Prefer ListModel + named roles over JS arrays for Repeaters.
|
||||||
|
Always wrap Repeater delegates in an Item if you need to pass model properties to custom components.
|
||||||
|
Use Loader or StackView for dynamic content.
|
||||||
|
Keep QML files small and focused (one component per file when possible).
|
||||||
|
|
||||||
|
Qt 6 / CMake Rules
|
||||||
|
|
||||||
|
Always use qt_add_qml_module with proper URI Aether.
|
||||||
|
Singletons must have pragma Singleton + set_source_files_properties(..., QT_QML_SINGLETON_TYPE TRUE).
|
||||||
|
Use Qt 6.8+ minimum in CMake.
|
||||||
|
Never hard-code paths.
|
||||||
|
|
||||||
|
Resources & Assets
|
||||||
|
|
||||||
|
All icons, images, fonts go in resources/.
|
||||||
|
Use Qt Resource System (qrc) for everything.
|
||||||
|
Prefix resource paths with qrc:/qt/qml/Aether/.
|
||||||
|
|
||||||
|
C++ Integration (future)
|
||||||
|
|
||||||
|
C++ code only in src/cpp/.
|
||||||
|
Expose to QML via QML_ELEMENT, QML_SINGLETON, or context properties.
|
||||||
|
Keep C++ minimal — most logic should stay in QML until performance requires otherwise.
|
||||||
|
|
||||||
|
UI/UX Style Guide
|
||||||
|
|
||||||
|
Dark Material theme with DeepPurple accent.
|
||||||
|
Use Theme singleton for all colors, spacing, radii, fonts, animations.
|
||||||
|
Use Constants singleton for layout dimensions.
|
||||||
|
Subtle hover animations (100–180 ms).
|
||||||
|
Clean, modern Discord-like aesthetic.
|
||||||
|
|
||||||
This is the permanent rule set for Aether. Follow it strictly in every response.
|
This is the permanent rule set for Aether. Follow it strictly in every response.
|
||||||
74
ROADMAP.md
Normal file
74
ROADMAP.md
Normal file
|
|
@ -0,0 +1,74 @@
|
||||||
|
# Aether Project Roadmap
|
||||||
|
|
||||||
|
**Project**: A beautiful, fast, native cross-platform Qt 6 + QML client for the self-hosted Stoat backend.
|
||||||
|
**License**: AGPL-3.0
|
||||||
|
**Core Principles**: Modular architecture, clean code, performance-first, testability, easy to self-host, no telemetry.
|
||||||
|
|
||||||
|
**Theme Direction**
|
||||||
|
Main theme: Black (primary) / Gold (secondary) / Purple (accents) — inspired by apollons.net.
|
||||||
|
The theme will become fully user-customizable in Phase 7.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Phase 1: UI Foundation & Basic Interactivity (Current)
|
||||||
|
1. Finalize basic layout stability (guild list, channel list, chat area, member list, voice bar)
|
||||||
|
2. Add realistic placeholder data (guilds, channels, fake messages, fake users)
|
||||||
|
3. Make UI interactive (channel switching, guild switching, basic message input)
|
||||||
|
4. Keyboard navigation basics
|
||||||
|
5. Create `UI_Style_Guide.md`
|
||||||
|
|
||||||
|
### Phase 2: Core Data Layer & Fake Backend
|
||||||
|
6. Create clean in-memory data models (`MessageModel`, `ChannelModel`, `GuildModel`, `UserModel`)
|
||||||
|
7. Implement proper channel switching that updates chat content
|
||||||
|
8. Fake message sending (adds to list instantly)
|
||||||
|
9. Basic app state management (current guild, current channel, etc.)
|
||||||
|
|
||||||
|
### Phase 3: Authentication & Stoat API Foundation
|
||||||
|
10. Create `StoatClient` C++ class (network layer, JSON handling)
|
||||||
|
11. Login / token storage / logout flow
|
||||||
|
12. Fetch real guilds, channels, and members from Stoat
|
||||||
|
13. Establish real-time WebSocket connection (Stoat events)
|
||||||
|
|
||||||
|
### Phase 4: Full Text Chat
|
||||||
|
14. Real message loading and sending via Stoat
|
||||||
|
15. Read/unread indicators, typing indicators
|
||||||
|
16. Message reactions and replies (basic)
|
||||||
|
17. Search within a channel
|
||||||
|
|
||||||
|
### Phase 5: Voice & Video
|
||||||
|
18. Voice channel joining / leaving UI
|
||||||
|
19. VoiceBar improvements + mute/deafen logic
|
||||||
|
20. Basic voice connection using Qt Multimedia
|
||||||
|
21. Video feed placeholder and toggle
|
||||||
|
|
||||||
|
### Phase 6: Advanced Features
|
||||||
|
22. Direct Messages (DMs)
|
||||||
|
23. Notifications (in-app + system tray)
|
||||||
|
24. User settings and profile
|
||||||
|
25. Threads
|
||||||
|
26. Roles and permissions (basic)
|
||||||
|
|
||||||
|
### Phase 7: Polish, Theming & Cross-Platform
|
||||||
|
27. Full theming system (Black/Gold/Purple base + user-customizable themes)
|
||||||
|
28. Dark/Light mode + system preference support
|
||||||
|
29. Performance optimizations (virtualization, lazy loading)
|
||||||
|
30. Error handling and offline mode
|
||||||
|
31. Unit + UI tests
|
||||||
|
32. Internationalization stub
|
||||||
|
33. Build presets for Windows + macOS
|
||||||
|
34. Linux packaging (AppImage + Flatpak)
|
||||||
|
35. Android/iOS preparation
|
||||||
|
|
||||||
|
### Phase 8: Release & Distribution
|
||||||
|
36. Final code review and security audit
|
||||||
|
37. Complete documentation (README, build instructions, self-hosting guide)
|
||||||
|
38. First public release (v0.1.0)
|
||||||
|
39. CI/CD pipeline setup
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Current Position**: We are at the beginning of **Phase 1**.
|
||||||
|
|
||||||
|
This roadmap is the single source of truth. All future work (with Claude or otherwise) must follow this order unless explicitly revised.
|
||||||
|
|
||||||
|
Last updated: 2026-03-30
|
||||||
Loading…
Add table
Reference in a new issue