Compare commits

...
2 Commits
Author SHA1 Message Date
arcanis 2eb51ba85a Release 2.21.1 2026-07-21 10:46:21 +03:00
arcanis 36e28aba99 fix: always load tab on remount
it fixes a bug, which leads to missing tab content load when opening
package info
2026-07-21 10:44:20 +03:00
9 changed files with 29 additions and 24 deletions
@@ -1,4 +1,4 @@
.TH AHRIMAN "1" "2026\-07\-21" "ahriman 2.21.0" "ArcH linux ReposItory MANager"
.TH AHRIMAN "1" "2026\-07\-21" "ahriman 2.21.1" "ArcH linux ReposItory MANager"
.SH NAME
ahriman \- ArcH linux ReposItory MANager
.SH SYNOPSIS
+1 -1
View File
@@ -17,4 +17,4 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
__version__ = "2.21.0"
__version__ = "2.21.1"
+1 -1
View File
@@ -2,7 +2,7 @@
pkgbase='ahriman'
pkgname=('ahriman' 'ahriman-core' 'ahriman-triggers' 'ahriman-web')
pkgver=2.21.0
pkgver=2.21.1
pkgrel=1
pkgdesc="ArcH linux ReposItory MANager"
arch=('any')
+1 -1
View File
@@ -39,5 +39,5 @@
"preview": "vite preview"
},
"type": "module",
"version": "2.21.0"
"version": "2.21.1"
}
@@ -58,11 +58,7 @@ export default function PackageInfoDialog({
const { showSuccess, showError } = useNotification();
const queryClient = useQueryClient();
const [localPackageBase, setLocalPackageBase] = useState(packageBase);
if (packageBase !== null && packageBase !== localPackageBase) {
setLocalPackageBase(packageBase);
}
const localPackageBase = packageBase;
const [activeTab, setActiveTab] = useState<TabKey>("logs");
const [refreshDatabase, setRefreshDatabase] = useState(true);
@@ -157,38 +153,42 @@ export default function PackageInfoDialog({
<DialogContent>
{pkg &&
<>
<PackageDetailsGrid dependencies={dependencies} pkg={pkg} />
<PackagePatchesList
editable={isAuthorized}
onDelete={key => void handleDeletePatch(key)}
patches={patches}
/>
<PackageDetailsGrid dependencies={dependencies} pkg={pkg} />
}
{localPackageBase &&
<PackagePatchesList
editable={isAuthorized}
onDelete={key => void handleDeletePatch(key)}
patches={patches}
/>
}
{localPackageBase && currentRepository &&
<>
<Box sx={{ borderBottom: 1, borderColor: "divider", mt: 2 }}>
<Tabs onChange={(_, tab: TabKey) => setActiveTab(tab)} value={activeTab}>
{tabs.map(({ key, label }) => <Tab key={key} label={label} value={key} />)}
</Tabs>
</Box>
{activeTab === "logs" && localPackageBase && currentRepository &&
{activeTab === "logs" &&
<BuildLogsTab
packageBase={localPackageBase}
repository={currentRepository}
/>
}
{activeTab === "changes" && localPackageBase && currentRepository &&
{activeTab === "changes" &&
<ChangesTab packageBase={localPackageBase} repository={currentRepository} />
}
{activeTab === "pkgbuild" && localPackageBase && currentRepository &&
{activeTab === "pkgbuild" &&
<PkgbuildTab packageBase={localPackageBase} repository={currentRepository} />
}
{activeTab === "events" && localPackageBase && currentRepository &&
{activeTab === "events" &&
<EventsTab packageBase={localPackageBase} repository={currentRepository} />
}
{activeTab === "artifacts" && localPackageBase && currentRepository &&
{activeTab === "artifacts" &&
<ArtifactsTab
currentVersion={pkg.version}
currentVersion={pkg?.version}
packageBase={localPackageBase}
repository={currentRepository}
/>
@@ -32,7 +32,7 @@ import { useCallback, useMemo } from "react";
import { DETAIL_TABLE_PROPS } from "utils";
interface ArtifactsTabProps {
currentVersion: string;
currentVersion?: string;
packageBase: string;
repository: RepositoryId;
}
@@ -78,6 +78,7 @@ export default function ArtifactsTab({
})).reverse();
},
queryKey: QueryKeys.artifacts(packageBase, repository),
refetchOnMount: "always",
});
const handleRollback = useCallback(async (version: string): Promise<void> => {
@@ -101,7 +102,7 @@ export default function ArtifactsTab({
<Tooltip title={params.row.version === currentVersion ? "Current version" : "Rollback to this version"}>
<span>
<IconButton
disabled={params.row.version === currentVersion}
disabled={currentVersion === params.row.version}
onClick={() => void handleRollback(params.row.version)}
size="small"
>
@@ -61,6 +61,7 @@ export default function BuildLogsTab({
enabled: !!packageBase,
queryFn: () => client.fetch.fetchPackageLogs(packageBase, repository),
queryKey: QueryKeys.logs(packageBase, repository),
refetchOnMount: "always",
});
// Build version selectors from all logs
@@ -116,6 +117,7 @@ export default function BuildLogsTab({
)
: skipToken,
queryKey: QueryKeys.logsVersion(packageBase, repository, activeVersion?.version ?? "", activeVersion?.processId ?? ""),
refetchOnMount: "always",
});
// Derive displayed logs: prefer fresh polled data when available
@@ -54,6 +54,7 @@ export default function EventsTab({ packageBase, repository }: EventsTabProps):
enabled: !!packageBase,
queryFn: () => client.fetch.fetchPackageEvents(repository, packageBase, 30),
queryKey: QueryKeys.events(repository, packageBase),
refetchOnMount: "always",
});
const rows = useMemo<EventRow[]>(() => events.map((event, index) => ({
+1
View File
@@ -30,6 +30,7 @@ export function usePackageChanges(packageBase: string, repository: RepositoryId)
enabled: !!packageBase,
queryFn: () => client.fetch.fetchPackageChanges(packageBase, repository),
queryKey: QueryKeys.changes(packageBase, repository),
refetchOnMount: "always",
});
return data;