#pragma once #include "FileAddressList.hpp" namespace tw::app { /** * Manages a list of recently used server addresses. * * Persists addresses to a text file, one "ip:port" per line. * Most recent first, capped at 8 entries. File path is * $XDG_CONFIG_HOME/towards/recent_servers.txt, falling back to * $HOME/.config/towards/recent_servers.txt. If both variables are * unset, keeps the list in memory only. */ class RecentServers : public FileAddressList { static constexpr size_t MAX_ENTRIES = 8; public: RecentServers(); const char* name() const override; /** * Add an address to the recents list. * Most recent first, de-duplicated, capped at 8. * Does not persist to disk; call save() after connecting. */ void add(const std::string& entry) override; }; } // namespace tw::app