@@ -11,8 +11,7 @@ use crate::config::CONFIG_FILENAME;
11pub const INSTANCE_DIR_NAME: &str = ".vibebox";
11pub const INSTANCE_DIR_NAME: &str = ".vibebox";
12pub const GLOBAL_CACHE_DIR_NAME: &str = "vibebox";
12pub const GLOBAL_CACHE_DIR_NAME: &str = "vibebox";
13pub const GLOBAL_DIR_NAME: &str = ".vibebox";
13pub const GLOBAL_DIR_NAME: &str = ".vibebox";
14−pub const INSTANCE_TOML_FILENAME: &str = "instance.toml";
14+pub const INSTANCE_FILENAME: &str = "instance.toml";
15−pub const SESSION_TEMP_PREFIX: &str = "sessions";
16pub const SESSION_TOML_SUFFIX: &str = ".toml";
15pub const SESSION_TOML_SUFFIX: &str = ".toml";
17const SESSIONS_DIR_NAME: &str = "sessions";
16const SESSIONS_DIR_NAME: &str = "sessions";
@@ -100,7 +99,8 @@ impl SessionManager {
101 tracing::warn!(
100 tracing::warn!(
102 directory = %directory.display(),
101 directory = %directory.display(),
102+ file = INSTANCE_FILENAME,
103− "missing session id in instance.toml"
103+ "missing session id in instance file"
@@ -158,7 +158,7 @@ impl SessionManager {
160 fn session_path_for(&self, id: &str) -> PathBuf {
160 fn session_path_for(&self, id: &str) -> PathBuf {
161− let filename = format!("{id}.toml");
161+ let filename = format!("{id}{SESSION_TOML_SUFFIX}");
162 self.sessions_dir.join(filename)
162 self.sessions_dir.join(filename)
@@ -225,9 +225,7 @@ fn read_session_file(path: &Path) -> Result<SessionEntry, SessionError> {
227fn read_instance_metadata(directory: &Path) -> Result<InstanceMetadata, SessionError> {
227fn read_instance_metadata(directory: &Path) -> Result<InstanceMetadata, SessionError> {
228− let instance_path = directory
228+ let instance_path = directory.join(INSTANCE_DIR_NAME).join(INSTANCE_FILENAME);
229− .join(INSTANCE_DIR_NAME)
230− .join(INSTANCE_TOML_FILENAME);
231 if !instance_path.exists() {
229 if !instance_path.exists() {
232 return Ok(InstanceMetadata::default());
230 return Ok(InstanceMetadata::default());
@@ -256,7 +254,7 @@ fn atomic_write(path: &Path, content: &[u8]) -> io::Result<()> {
257 fs::create_dir_all(parent)?;
255 fs::create_dir_all(parent)?;
258 let mut temp = tempfile::Builder::new()
256 let mut temp = tempfile::Builder::new()
259− .prefix(SESSION_TEMP_PREFIX)
257+ .prefix(SESSIONS_DIR_NAME)
260 .suffix(SESSION_TOML_SUFFIX)
258 .suffix(SESSION_TOML_SUFFIX)
261 .tempfile_in(parent)?;
259 .tempfile_in(parent)?;
262 temp.write_all(content)?;
260 temp.write_all(content)?;
@@ -285,7 +283,7 @@ mod tests {
285 let instance_dir = project_dir.join(INSTANCE_DIR_NAME);
283 let instance_dir = project_dir.join(INSTANCE_DIR_NAME);
286 fs::create_dir_all(&instance_dir).unwrap();
284 fs::create_dir_all(&instance_dir).unwrap();
287 let content = format!("id = \"{id}\"\nlast_active = \"{last_active}\"\n");
285 let content = format!("id = \"{id}\"\nlast_active = \"{last_active}\"\n");
288− fs::write(instance_dir.join(INSTANCE_TOML_FILENAME), content).unwrap();
286+ fs::write(instance_dir.join(INSTANCE_FILENAME), content).unwrap();
@@ -306,9 +304,10 @@ mod tests {
306 assert_eq!(dirs[0], project_dir.canonicalize().unwrap());
304 assert_eq!(dirs[0], project_dir.canonicalize().unwrap());
307 assert!(mgr.index_path().exists());
305 assert!(mgr.index_path().exists());
309− let session_path = mgr
307+ let session_path = mgr.index_path().join(format!(
311− .join("019bf290-cccc-7c23-ba1d-dce7e6d40693.toml");
308+ "019bf290-cccc-7c23-ba1d-dce7e6d40693{}",
312 assert!(session_path.exists());
311 assert!(session_path.exists());
@@ -329,9 +328,10 @@ mod tests {
329 let sessions = mgr.list_sessions().unwrap();
328 let sessions = mgr.list_sessions().unwrap();
330 assert!(sessions.is_empty());
329 assert!(sessions.is_empty());
332− let session_path = mgr
331+ let session_path = mgr.index_path().join(format!(
334− .join("019bf290-cccc-7c23-ba1d-dce7e6d40693.toml");
332+ "019bf290-cccc-7c23-ba1d-dce7e6d40693{}",
335 assert!(!session_path.exists());
335 assert!(!session_path.exists());
@@ -340,7 +340,11 @@ mod tests {
340 let temp = TempDir::new().unwrap();
340 let temp = TempDir::new().unwrap();
341 let mgr = manager(&temp);
341 let mgr = manager(&temp);
342 fs::create_dir_all(mgr.index_path()).unwrap();
342 fs::create_dir_all(mgr.index_path()).unwrap();
343− fs::write(mgr.index_path().join("bad.toml"), "not toml").unwrap();
344+ mgr.index_path().join(format!("bad{SESSION_TOML_SUFFIX}")),
345 let err = mgr.list_sessions().unwrap_err();
349 let err = mgr.list_sessions().unwrap_err();
346 assert!(matches!(err, SessionError::TomlDe(_)));
350 assert!(matches!(err, SessionError::TomlDe(_)));