Aether/CLAUDE.md

1.5 KiB

Aether Project Rules for Claude Code

You are working on Project Aether — a beautiful, fast, native open-source Qt 6 client for the self-hosted Stoat backend.

Non-negotiable rules (always follow):

  • Every source file (.cpp, .qml, CMakeLists.txt) must start with the exact AGPL-3.0 SPDX header:
    // SPDX-License-Identifier: AGPL-3.0-or-later
    // Copyright (C) 2026 Aether Contributors
    //
    // This file is part of Aether.
    //
    // Aether is free software: you can redistribute it and/or modify it
    // under the terms of the GNU Affero General Public License as published
    // by the Free Software Foundation, either version 3 of the License, or
    // (at your option) any later version.
    
    

Keep the modular QML structure: separate files in src/qml/components/, src/qml/styles/, src/qml/utils/. Every QML file must import:

import QtQuick 2.15 import QtQuick.Controls 2.15 import QtQuick.Controls.Material 2.15 import QtQuick.Layouts 1.15 import Aether 1.0

Theme and Constants are singletons — always use Theme.xxx and Constants.xxx. Never use hard-coded colors or sizes.
Never use letterSpacing — use font.letterSpacing.
Never use modelData directly in Repeater — always use model.modelData or named roles.
When fixing errors, change only the necessary lines. Do not rewrite whole files unless asked.
Keep code clean, well-commented, and easily changeable later.

This is the permanent rule set for Aether. Follow it strictly in every response.