Repository navigation
Releases: JuliaAI/DearDiary.jl
Releases · JuliaAI/DearDiary.jl
Release list
v0.11.0
DearDiary v0.11.0
- Rebuilt the web dashboard as server-rendered pages. Every project, experiment, iteration, and model has its own URL; tables sort and filter, metric charts compare iterations, artifacts download, and pages with running iterations refresh on their own.
- With
DEARDIARY_ENABLE_AUTH=truethe dashboard asks for the REST credentials and keeps a cookie session. Administrators manage accounts, roles, and per-project permissions on/users; every user edits their own profile and password on/settings.
- With
- Models can be renamed after versions have been registered. Migration 002 rebuilds the
modeltable without its name constraint, andcreate_modelandupdate_modelnow enforce per-project name uniqueness. Existing databases are upgraded on first open. - (breaking change) Deleting an experiment, iteration, or artifact that a model version still references is refused: the service functions return
falseand the REST API answers409 CONFLICT. Deleting a project removes its registry first. Newget_modelversionsmethods look up the versions registered from an iteration, an artifact, or an experiment. - Fixed deletes of tagged projects, experiments, and iterations, which failed on the tag association rows.
- Fixed
close_databaseleaving the DuckDB instance alive, which could lose recent writes or crash when the file was reopened in the same process.
Merged pull requests:
- Update Memoize requirement to 0.4.4 in /docs (#22) (@dependabot[bot])
- Update MLJ requirement to 0.23.2 in /docs (#23) (@dependabot[bot])
- Update Documenter requirement to 1.17.0 in /docs (#24) (@dependabot[bot])
v0.10.0
DearDiary v0.10.0
- (breaking change) Switched entity ids from sequential integers to UUID strings that the database generates on insert. Ids are now opaque and non-sequential, so callers can no longer guess or enumerate them.
- The id columns changed type, so start from a fresh database; existing databases will not load.
- The REST API now returns and accepts string ids in both URL paths and JSON bodies. Update any client that parsed ids as integers to treat them as strings.
- (breaking change) Renamed the by-name and by-value lookups, which the old code told apart from the by-id lookups by argument type.
v0.9.1
DearDiary v0.9.1
- Updating documentation: dividing it in different minimal sections to improve readability.
v0.9.0
DearDiary v0.9.0
- (breaking change) Moved the metadata store from SQLite to DuckDB, which fixes a native-library deadlock that hung database setup on recent toolchains.
- DuckDB cannot open old SQLite
.dbfiles, so start from a fresh database and export any data you need first. - One DuckDB baseline migration now builds the schema; the forward-only migration system stays for future schema changes.
- DuckDB cannot open old SQLite
- (breaking change) Renamed the inline artifact backend from
sqlitetoinline. SetDEARDIARY_ARTIFACT_BACKEND=inline(the default); the oldsqlitevalue no longer resolves. - Security fix: non-admin users can no longer grant themselves
is_adminthroughPATCH /user/{id}; only an admin may change admin status.
v0.8.0
DearDiary v0.8.0
- Embedded web UI (experimental) —
DearDiary.runboots a small in-process dashboard alongside the REST API.- A sidebar walks every project, experiment, and iteration the
defaultuser can read. - A detail pane shows the status badge, experiment information, parent-iteration when present, a parameter table, and a metric chart.
- A sidebar walks every project, experiment, and iteration the
- (breaking change)
APIConfiggrew three positional fields —enable_ui::Bool,ui_host::String,ui_port::UInt16. Constructing it positionally must add the three new args. Callers goin throughload_config(env_file)are unaffected.
Closed issues:
- Evaluating a NoSQL storage option (#3)
v0.7.0
DearDiary v0.7.0
- Bit-exact environment replay — every iteration records a
Manifest.tomlsnapshot, the Julia version, and the git SHA viasnapshot_environment!.restore(iteration_id)writes the captured environment to disk forPkg.instantiate.with_iterationauto-snapshots driver iterations by default. - Model registry — new
ModelandModelVersionentities with aNO_STAGE → STAGING → PRODUCTION → ARCHIVEDlifecycle. Promoting a version toPRODUCTIONauto-archives the prior incumbent. Versions link back to the producing iteration for lineage. - Pluggable artifact storage —
Resourcebytes now live in anyAbstractArtifactStorebackend: inline in SQLite (default), on a local filesystem (FilesystemStore), or in any S3-compatible object store (S3Store; AWS S3, MinIO, Cloudflare R2).migrate_artifacts!moves rows between backends on a live database.- (breaking change)
GET /resource/{id}no longer returns thedatafield; fetch bytes via the newGET /resource/{id}/datastreaming endpoint orread_resource_dataon the client.
- (breaking change)
- Iteration lineage + lifecycle — iterations now carry a
parent_iteration_id(for HPO sweeps, nested CV folds, distributed workers), anIterationStatusenum (RUNNING/SUCCEEDED/FAILED/KILLED), and anerror_messagefield.with_iterationauto-finalises with the right status and captures exception text on failure.get_child_iterations(parent_id)walks the tree. ExperimentStatusrename — the experiment-status enum (IN_PROGRESS/STOPPED/FINISHED) was renamed fromStatustoExperimentStatusto distinguish it from the newIterationStatus. The member names are unchanged.- (breaking change) Code referencing
DearDiary.Statusmust switch toDearDiary.ExperimentStatus.
- (breaking change) Code referencing
Closed issues:
- Integrating fs/minio/s3 support for
Resource(#14)
v0.6.0
DearDiary v0.6.0
- Native Julia client — Works from a training script running anywhere with HTTP access to the server
with_iteration—do-block helper on both the client and the service layer that creates an iteration, runs your code, and finalisesend_dateon success or exception- Metric-time-series —
Metricnos carriesstepandrecorded_at. Pass them explicitly, or let the server auto-assign.- (breaking change) The
metrictable gained those two fields as columns. There is no auto-migration system fromv0.5, so existing databases must be recreated.
- (breaking change) The
- Schema migration harness —
initialize_database()now tracksschema_migrationsand aplies pending forward-only migrations in order. Future schema changes ship as numbered migration files.
v0.5.2
DearDiary v0.5.2
- Experiments can only be created
IN_PROGRESS; transitions toSTOPPED/FINISHEDhappen via update - Reopening an experiment to
IN_PROGRESSnow clears itsend_dateautomatically STOPPED/FINISHEDexperiments reject new iterations and resource uploads- Ended iterations are immutable: metrics, parameters, and tags can no longer be added or modified
GET /project/returns only projects the viewer hasread_permissionon; admins still see allGET /project/{id}now requiresread_permissionviaProjectPermissionRequiredMiddleware- Experiment/iteration
end_dateis persisted as ISO text instead of a Julia binary blob, fixing a SQLite deserialization error on read
v0.5.1
DearDiary v0.5.1
- Bug fix in default host.
HTTP.jltried to parselocalhostas IPv4, so now it is127.0.0.1.
v0.5.0
DearDiary v0.5.0
New features
- REST API ready for browser clients: CORS, Auth, and complete CRUDS
- Project-scoped permissions on every dependent type route
- Stable
{code, message}envelope on every error response Paginationon the five high-volume list endpoints
Breaking changes
- Login returns
access_token,token_type,expires_at, anduserinstead of a raw JWT string - JWT
expis now Unix epoch seconds Paginatedlist endpoints returndata,total,limit, andoffsetinstead of an array- Error bodies now return
codeandmessageinstead of just amessage Userresponses omit the password hashUpsertResult,PermissionAction, andErrorCodehierarchies dispatch on type tags (Created,CreatedPermission,NotFound) instead of instances
Configuration
DEARDIARY_CORS_ORIGINS: comma-separated allowed origins (default"*")