21 Commits

Author SHA1 Message Date
0462a7b62e MyFSIO v0.3.0 Release
Reviewed-on: #22
2026-02-22 10:22:35 +00:00
52660570c1 Merge pull request 'MyFSIO v0.2.9 Release' (#21) from next into main
Reviewed-on: #21
2026-02-15 14:24:14 +00:00
35f61313e0 MyFSIO v0.2.8 Release
Reviewed-on: #20
2026-02-10 14:16:22 +00:00
c470cfb576 MyFSIO v0.2.7 Release
Reviewed-on: #19
2026-02-09 12:22:37 +00:00
jun
d96955deee MyFSIO v0.2.6 Release
Reviewed-on: #18
2026-02-05 16:18:03 +00:00
85181f0be6 Merge pull request 'MyFSIO v0.2.5 Release' (#17) from next into main
Reviewed-on: #17
2026-02-02 05:32:02 +00:00
d5ca7a8be1 Merge pull request 'MyFSIO v0.2.4 Release' (#16) from next into main
Reviewed-on: #16
2026-02-01 10:27:11 +00:00
476dc79e42 MyFSIO v0.2.3 Release
Reviewed-on: #15
2026-01-25 06:05:53 +00:00
bb6590fc5e Merge pull request 'MyFSIO v0.2.2 Release' (#14) from next into main
Reviewed-on: #14
2026-01-19 07:12:15 +00:00
899db3421b Merge pull request 'MyFSIO v0.2.1 Release' (#13) from next into main
Reviewed-on: #13
2026-01-12 08:03:29 +00:00
caf01d6ada Merge pull request 'MyFSIO v0.2.0 Release' (#12) from next into main
Reviewed-on: #12
2026-01-05 15:48:03 +00:00
bb366cb4cd Merge pull request 'MyFSIO v0.1.9 Release' (#10) from next into main
Reviewed-on: #10
2025-12-29 06:49:48 +00:00
a2745ff2ee Merge pull request 'MyFSIO v0.1.8 Release' (#9) from next into main
Reviewed-on: #9
2025-12-23 06:01:32 +00:00
28cb656d94 Merge pull request 'MyFSIO v0.1.7 Release' (#8) from next into main
Reviewed-on: #8
2025-12-22 03:10:35 +00:00
3c44152fc6 Merge pull request 'MyFSIO v0.1.6 Release' (#7) from next into main
Reviewed-on: #7
2025-12-21 06:30:21 +00:00
397515edce Merge pull request 'MyFSIO v0.1.5 Release' (#6) from next into main
Reviewed-on: #6
2025-12-13 15:41:03 +00:00
980fced7e4 Merge pull request 'MyFSIO v0.1.4 Release' (#5) from next into main
Reviewed-on: #5
2025-12-13 08:22:43 +00:00
bae5009ec4 Merge pull request 'Release v0.1.3' (#4) from next into main
Reviewed-on: #4
2025-12-03 04:14:57 +00:00
233780617f Merge pull request 'Release V0.1.2' (#3) from next into main
Reviewed-on: #3
2025-11-26 04:59:15 +00:00
fd8fb21517 Merge pull request 'Prepare for binary release' (#2) from next into main
Reviewed-on: #2
2025-11-22 12:33:38 +00:00
c6cbe822e1 Merge pull request 'Release v0.1.1' (#1) from next into main
Reviewed-on: #1
2025-11-22 12:31:27 +00:00
3 changed files with 6 additions and 17 deletions

View File

@@ -1301,14 +1301,12 @@ def object_versions(bucket_name: str, object_key: str):
for v in resp.get("Versions", []): for v in resp.get("Versions", []):
if v.get("Key") != object_key: if v.get("Key") != object_key:
continue continue
if v.get("IsLatest", False):
continue
versions.append({ versions.append({
"version_id": v.get("VersionId", ""), "version_id": v.get("VersionId", ""),
"last_modified": v["LastModified"].isoformat() if v.get("LastModified") else None, "last_modified": v["LastModified"].isoformat() if v.get("LastModified") else None,
"size": v.get("Size", 0), "size": v.get("Size", 0),
"etag": v.get("ETag", "").strip('"'), "etag": v.get("ETag", "").strip('"'),
"is_latest": False, "is_latest": v.get("IsLatest", False),
}) })
return jsonify({"versions": versions}) return jsonify({"versions": versions})
except (ClientError, EndpointConnectionError, ConnectionClosedError) as exc: except (ClientError, EndpointConnectionError, ConnectionClosedError) as exc:

View File

@@ -1,6 +1,6 @@
from __future__ import annotations from __future__ import annotations
APP_VERSION = "0.3.1" APP_VERSION = "0.3.0"
def get_version() -> str: def get_version() -> str:

View File

@@ -1537,7 +1537,7 @@
const confirmVersionRestore = (row, version, label = null, onConfirm) => { const confirmVersionRestore = (row, version, label = null, onConfirm) => {
if (!version) return; if (!version) return;
const timestamp = (version.archived_at || version.last_modified) ? new Date(version.archived_at || version.last_modified).toLocaleString() : version.version_id; const timestamp = version.archived_at ? new Date(version.archived_at).toLocaleString() : version.version_id;
const sizeLabel = formatBytes(Number(version.size) || 0); const sizeLabel = formatBytes(Number(version.size) || 0);
const reasonLabel = describeVersionReason(version.reason); const reasonLabel = describeVersionReason(version.reason);
const targetLabel = label || row?.dataset.key || 'this object'; const targetLabel = label || row?.dataset.key || 'this object';
@@ -1610,7 +1610,7 @@
const latestCell = document.createElement('td'); const latestCell = document.createElement('td');
if (item.latest) { if (item.latest) {
const ts = (item.latest.archived_at || item.latest.last_modified) ? new Date(item.latest.archived_at || item.latest.last_modified).toLocaleString() : item.latest.version_id; const ts = item.latest.archived_at ? new Date(item.latest.archived_at).toLocaleString() : item.latest.version_id;
const sizeLabel = formatBytes(Number(item.latest.size) || 0); const sizeLabel = formatBytes(Number(item.latest.size) || 0);
latestCell.innerHTML = `<div class="small">${ts}</div><div class="text-muted small">${sizeLabel} · ${describeVersionReason(item.latest.reason)}</div>`; latestCell.innerHTML = `<div class="small">${ts}</div><div class="text-muted small">${sizeLabel} · ${describeVersionReason(item.latest.reason)}</div>`;
} else { } else {
@@ -1785,7 +1785,7 @@
badge.textContent = `#${versionNumber}`; badge.textContent = `#${versionNumber}`;
const title = document.createElement('div'); const title = document.createElement('div');
title.className = 'fw-semibold small'; title.className = 'fw-semibold small';
const timestamp = (entry.archived_at || entry.last_modified) ? new Date(entry.archived_at || entry.last_modified).toLocaleString() : entry.version_id; const timestamp = entry.archived_at ? new Date(entry.archived_at).toLocaleString() : entry.version_id;
title.textContent = timestamp; title.textContent = timestamp;
heading.appendChild(badge); heading.appendChild(badge);
heading.appendChild(title); heading.appendChild(title);
@@ -2816,16 +2816,7 @@
uploadFileInput.value = ''; uploadFileInput.value = '';
} }
const previousKey = activeRow?.dataset.key || null; loadObjects(false);
loadObjects(false).then(() => {
if (previousKey) {
const newRow = document.querySelector(`[data-object-row][data-key="${CSS.escape(previousKey)}"]`);
if (newRow) {
selectRow(newRow);
if (versioningEnabled) loadObjectVersions(newRow, { force: true });
}
}
});
const successCount = uploadSuccessFiles.length; const successCount = uploadSuccessFiles.length;
const errorCount = uploadErrorFiles.length; const errorCount = uploadErrorFiles.length;