Skip to content

Releases: JuliaAI/DearDiary.jl

v0.11.0

Choose a tag to compare

@github-actions github-actions released this 01 Oct 23:37
3fd20fc

DearDiary v0.11.0

Diff since v0.10.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=true the 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.
  • Models can be renamed after versions have been registered. Migration 002 rebuilds the model table without its name constraint, and create_model and update_model now 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 false and the REST API answers 409 CONFLICT. Deleting a project removes its registry first. New get_modelversions methods 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_database leaving 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

Choose a tag to compare

@github-actions github-actions released this 07 Jul 21:36
3e95026

DearDiary v0.10.0

Diff since v0.9.1

  • (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

Choose a tag to compare

@github-actions github-actions released this 23 Jun 18:37
8aba6a9

DearDiary v0.9.1

Diff since v0.9.0

  • Updating documentation: dividing it in different minimal sections to improve readability.

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 23 Jun 03:08
f8065fb

DearDiary v0.9.0

Diff since v0.8.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 .db files, 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.
  • (breaking change) Renamed the inline artifact backend from sqlite to inline. Set DEARDIARY_ARTIFACT_BACKEND=inline (the default); the old sqlite value no longer resolves.
  • Security fix: non-admin users can no longer grant themselves is_admin through PATCH /user/{id}; only an admin may change admin status.

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 06 Jun 18:58
2580e86

DearDiary v0.8.0

Diff since v0.7.0

  • Embedded web UI (experimental) — DearDiary.run boots a small in-process dashboard alongside the REST API.
    • A sidebar walks every project, experiment, and iteration the default user can read.
    • A detail pane shows the status badge, experiment information, parent-iteration when present, a parameter table, and a metric chart.
  • (breaking change) APIConfig grew three positional fields — enable_ui::Bool, ui_host::String, ui_port::UInt16. Constructing it positionally must add the three new args. Callers goin through load_config(env_file) are unaffected.

Closed issues:

  • Evaluating a NoSQL storage option (#3)

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 28 May 16:24
017332d

DearDiary v0.7.0

Diff since v0.6.0

  • Bit-exact environment replay — every iteration records a Manifest.toml snapshot, the Julia version, and the git SHA via snapshot_environment!. restore(iteration_id) writes the captured environment to disk for Pkg.instantiate. with_iteration auto-snapshots driver iterations by default.
  • Model registry — new Model and ModelVersion entities with a NO_STAGE → STAGING → PRODUCTION → ARCHIVED lifecycle. Promoting a version to PRODUCTION auto-archives the prior incumbent. Versions link back to the producing iteration for lineage.
  • Pluggable artifact storage — Resource bytes now live in any AbstractArtifactStore backend: 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 the data field; fetch bytes via the new GET /resource/{id}/data streaming endpoint or read_resource_data on the client.
  • Iteration lineage + lifecycle — iterations now carry a parent_iteration_id (for HPO sweeps, nested CV folds, distributed workers), an IterationStatus enum (RUNNING / SUCCEEDED / FAILED / KILLED), and an error_message field. with_iteration auto-finalises with the right status and captures exception text on failure. get_child_iterations(parent_id) walks the tree.
  • ExperimentStatus rename — the experiment-status enum (IN_PROGRESS / STOPPED / FINISHED) was renamed from Status to ExperimentStatus to distinguish it from the new IterationStatus. The member names are unchanged.
    • (breaking change) Code referencing DearDiary.Status must switch to DearDiary.ExperimentStatus.

Closed issues:

  • Integrating fs/minio/s3 support for Resource (#14)

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 13 May 00:58
002caa6

DearDiary v0.6.0

Diff since v0.5.2

  • 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 finalises end_date on success or exception
  • Metric-time-series — Metric nos carries step and recorded_at. Pass them explicitly, or let the server auto-assign.
    • (breaking change) The metric table gained those two fields as columns. There is no auto-migration system from v0.5, so existing databases must be recreated.
  • Schema migration harness — initialize_database() now tracks schema_migrations and aplies pending forward-only migrations in order. Future schema changes ship as numbered migration files.

v0.5.2

Choose a tag to compare

@github-actions github-actions released this 04 May 20:04
0cd968f

DearDiary v0.5.2

Diff since v0.5.1

  • Experiments can only be created IN_PROGRESS; transitions to STOPPED/FINISHED happen via update
  • Reopening an experiment to IN_PROGRESS now clears its end_date automatically
  • STOPPED/FINISHED experiments 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 has read_permission on; admins still see all
  • GET /project/{id} now requires read_permission via ProjectPermissionRequiredMiddleware
  • Experiment/iteration end_date is persisted as ISO text instead of a Julia binary blob, fixing a SQLite deserialization error on read

v0.5.1

Choose a tag to compare

@github-actions github-actions released this 04 May 07:19
d757d48

DearDiary v0.5.1

Diff since v0.5.0

  • Bug fix in default host. HTTP.jl tried to parse localhost as IPv4, so now it is 127.0.0.1.

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 04 May 02:36
cea9ad2

DearDiary v0.5.0

Diff since v0.4.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
  • Pagination on the five high-volume list endpoints

Breaking changes

  • Login returns access_token, token_type, expires_at, and user instead of a raw JWT string
  • JWT exp is now Unix epoch seconds
  • Paginated list endpoints return data, total, limit, and offset instead of an array
  • Error bodies now return code and message instead of just a message
  • User responses omit the password hash
  • UpsertResult, PermissionAction, and ErrorCode hierarchies dispatch on type tags (Created, CreatedPermission, NotFound) instead of instances

Configuration

  • DEARDIARY_CORS_ORIGINS: comma-separated allowed origins (default "*")