Skip to content

Commit d1af6ee

Browse files
authored
v0.9.0
1 parent 10d09fa commit d1af6ee

9 files changed

Lines changed: 99 additions & 23 deletions

docs/certification.md

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# Compatibility certification notes for PyBehaviorLog 0.8.9
1+
# Compatibility certification notes for PyBehaviorLog 0.9
22

3-
PyBehaviorLog 0.8.9 introduces a small built-in compatibility corpus and round-trip comparison helpers.
3+
PyBehaviorLog 0.9 introduces a small built-in compatibility corpus and round-trip comparison helpers.
44

55
## Included fixture families
66

@@ -14,7 +14,7 @@ These fixtures are intentionally compact. They are meant to verify the documente
1414

1515
## Round-trip strategy
1616

17-
The 0.8.9 test suite validates compatibility with this workflow:
17+
The 0.9 test suite validates compatibility with this workflow:
1818

1919
1. Import a BORIS or CowLog fixture.
2020
2. Persist the imported content in the Django data model.
@@ -38,7 +38,7 @@ This allows CI to focus on semantic equivalence instead of raw JSON shape differ
3838

3939
## Current scope
4040

41-
0.8.9 improves confidence, but it is still not a blanket claim of universal compatibility with every historical BORIS or CowLog artifact.
41+
0.9 improves confidence, but it is still not a blanket claim of universal compatibility with every historical BORIS or CowLog artifact.
4242

4343
What it does provide is a **repeatable, testable certification baseline** for the documented exchange families that the project already supports.
4444

@@ -53,6 +53,16 @@ A future certification pass can extend the fixture corpus with:
5353
- gold files captured from real-world operator datasets
5454

5555

56-
## Additional notes for 0.8.9
56+
## Additional notes for 0.9
5757

58-
Version 0.8.9 extends the compatibility and review toolchain with server-side undo/redo for event operations, broader BORIS-style spreadsheet imports, and richer handling of picture-based media paths and image sequences.
58+
Version 0.9 extends the compatibility and review toolchain with server-side undo/redo for event operations, broader BORIS-style spreadsheet imports, and richer handling of picture-based media paths and image sequences.
59+
60+
61+
## Operational additions in 0.9
62+
63+
Version 0.9 adds a project lifecycle layer on top of the existing compatibility tooling:
64+
65+
- project import as a **new project** from BORIS project JSON or PyBehaviorLog bundles
66+
- project cloning for parallel review, training, or branching workflows
67+
- deployment-oriented `/health/` and `/release.json` endpoints
68+
- management commands for bundle export and release reporting

docs/compatibility.md

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
# Compatibility profile for PyBehaviorLog 0.8.9
1+
# Compatibility profile for PyBehaviorLog 0.9
22

3-
PyBehaviorLog 0.8.9 strengthens interoperability with BORIS and CowLog around the formats and workflows that are publicly documented.
3+
PyBehaviorLog 0.9 strengthens interoperability with BORIS and CowLog around the formats and workflows that are publicly documented.
44

55
## BORIS coverage
66

7-
### Implemented in 0.8.9
7+
### Implemented in 0.9
88

99
- BORIS-compatible observation JSON export
1010
- BORIS-compatible project JSON export
@@ -28,7 +28,7 @@ The safest paths are:
2828

2929
## CowLog coverage
3030

31-
### Implemented in 0.8.9
31+
### Implemented in 0.9
3232

3333
- Import of documented CowLog-like plain-text coding result files
3434
- Export of CowLog-compatible plain-text result files
@@ -37,7 +37,7 @@ The safest paths are:
3737

3838
### Current positioning
3939

40-
CowLog compatibility in 0.8.9 focuses on the **documented plain-text coding result workflow**.
40+
CowLog compatibility in 0.9 focuses on the **documented plain-text coding result workflow**.
4141

4242
CowLog plain-text exports do not preserve all PyBehaviorLog/BORIS semantics with the same fidelity, especially for:
4343

@@ -51,7 +51,7 @@ For those cases, BORIS JSON and PyBehaviorLog JSON remain the preferred intercha
5151

5252
## Built-in certification baseline
5353

54-
Version 0.8.9 adds a compact fixture corpus and automated round-trip tests for:
54+
Version 0.9 adds a compact fixture corpus and automated round-trip tests for:
5555

5656
- BORIS observation JSON
5757
- BORIS project JSON
@@ -61,7 +61,7 @@ Those fixtures are executed in the Django test suite and compared through normal
6161

6262
## Compatibility reports
6363

64-
PyBehaviorLog 0.8.9 adds machine-readable compatibility reports at both project and session level.
64+
PyBehaviorLog 0.9 adds machine-readable compatibility reports at both project and session level.
6565

6666
They summarize:
6767

@@ -84,14 +84,24 @@ If you want to move toward a stronger "certified compatibility" claim, use this
8484
That approach is the right path toward a future compatibility certification release.
8585

8686

87-
### Added in 0.8.9
87+
### Added in 0.9
8888

8989
- BORIS-style tabular session imports from CSV, TSV, and XLSX files
9090
- relative media paths included in project/session JSON payloads and reproducibility bundles
9191
- lightweight media diagnostics for compatible local audio files, including waveform previews and a coarse spectrogram
9292
- additional HTML and SQL exports for review and downstream analysis pipelines
9393

9494

95-
## Additional notes for 0.8.9
95+
## Additional notes for 0.9
9696

97-
Version 0.8.9 extends the compatibility and review toolchain with server-side undo/redo for event operations, broader BORIS-style spreadsheet imports, and richer handling of picture-based media paths and image sequences.
97+
Version 0.9 extends the compatibility and review toolchain with server-side undo/redo for event operations, broader BORIS-style spreadsheet imports, and richer handling of picture-based media paths and image sequences.
98+
99+
100+
## Operational additions in 0.9
101+
102+
Version 0.9 adds a project lifecycle layer on top of the existing compatibility tooling:
103+
104+
- project import as a **new project** from BORIS project JSON or PyBehaviorLog bundles
105+
- project cloning for parallel review, training, or branching workflows
106+
- deployment-oriented `/health/` and `/release.json` endpoints
107+
- management commands for bundle export and release reporting

docs/fao_translation_review.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
# FAO language review package for PyBehaviorLog 0.8.9
1+
# FAO language review package for PyBehaviorLog 0.9
22

33
This document is a preparation pack for native review of the six supported FAO languages:
44
English, Arabic, Chinese (Simplified), Spanish, French, and Russian.
55

66
## Scope
77

88
The application already contains translation catalogs for the core user interface.
9-
Version 0.8.9 adds new user-facing strings in the following areas:
9+
Version 0.9 adds new user-facing strings in the following areas:
1010

1111
- BORIS project import
1212
- interactive timeline selection

docs/roadmap.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# PyBehaviorLog 0.9 operational roadmap
2+
3+
Version 0.9 focuses on project lifecycle operations rather than adding another isolated coding feature.
4+
5+
## Added in 0.9
6+
7+
- Create a new project directly from a BORIS project file or a PyBehaviorLog reproducibility bundle.
8+
- Clone an existing project for iterative coding or teaching workflows.
9+
- Expose release metadata and health endpoints for deployment tooling.
10+
- Add management commands to integrate export and release inspection into CI/CD or scheduled jobs.
11+
12+
## Next candidates after 0.9
13+
14+
- Segment-level assignment and review queues.
15+
- More advanced media diagnostics across video/audio/image directories.
16+
- Larger compatibility certification corpus for BORIS and CowLog round-trips.

templates/base.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<head>
55
<meta charset="utf-8">
66
<meta name="viewport" content="width=device-width, initial-scale=1">
7-
<title>{% block title %}PyBehaviorLog 0.8.9{% endblock %}</title>
7+
<title>{% block title %}PyBehaviorLog 0.9{% endblock %}</title>
88
<link rel="stylesheet" href="{% static 'tracker/app.css' %}">
99
</head>
1010
<body>
@@ -14,7 +14,7 @@
1414
<a class="brand-mark" href="{% url 'tracker:home' %}">PB</a>
1515
<div>
1616
<p class="eyebrow">{% trans 'Behavioral coding studio' %}</p>
17-
<h1 class="brand-title"><a href="{% url 'tracker:home' %}">PyBehaviorLog 0.8.9</a></h1>
17+
<h1 class="brand-title"><a href="{% url 'tracker:home' %}">PyBehaviorLog 0.9</a></h1>
1818
</div>
1919
</div>
2020
<div class="utility-row">

templates/tracker/home.html

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,12 @@
99
<header class="page-header">
1010
<div>
1111
<h1>{% trans 'My PyBehaviorLog projects' %}</h1>
12-
<p>{% trans 'Version 0.8.9 adds server-side undo and redo, richer BORIS-style spreadsheet imports, stronger image-sequence diagnostics, and a more certifiable coding workflow.' %}</p>
12+
<p>{% trans 'Version 0.9 adds project lifecycle operations: import as a new project, project cloning, release metadata, and deployment-oriented health checks.' %}</p>
13+
</div>
14+
<div class="action-stack compact">
15+
<a href="{% url 'tracker:project_create' %}" role="button">{% trans 'New project' %}</a>
16+
<a href="{% url 'tracker:project_import_create' %}" role="button" class="secondary">{% trans 'Import as new project' %}</a>
1317
</div>
14-
<a href="{% url 'tracker:project_create' %}" role="button">{% trans 'New project' %}</a>
1518
</header>
1619

1720
<section class="card-grid">
@@ -38,6 +41,7 @@ <h3><a href="{{ project.get_absolute_url }}">{{ project.name }}</a></h3>
3841
<a href="{{ project.get_absolute_url }}" role="button" class="secondary">{% trans 'Open' %}</a>
3942
<a href="{% url 'tracker:project_analytics' project.pk %}" role="button" class="outline">{% trans 'Analytics' %}</a>
4043
<a href="{% url 'tracker:project_export_ethogram' project.pk %}" role="button" class="outline">{% trans 'Ethogram JSON' %}</a>
44+
{% if project.owner_id == user.id %}<a href="{% url 'tracker:project_clone' project.pk %}" role="button" class="outline">{% trans 'Clone' %}</a>{% endif %}
4145
</div>
4246
</article>
4347
{% empty %}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{% extends 'base.html' %}
2+
{% load i18n %}
3+
{% block title %}{% trans 'Clone project' %}{% endblock %}
4+
{% block content %}
5+
<article class="auth-card wide-card">
6+
<h1>{% trans 'Clone project' %}</h1>
7+
<p>{% trans 'Source project' %}: <a href="{{ project.get_absolute_url }}">{{ project.name }}</a></p>
8+
<p class="muted">{% trans 'Cloning duplicates the project structure, ethogram, templates, keyboard profiles, and optionally the current sessions and video asset metadata.' %}</p>
9+
<form method="post">
10+
{% csrf_token %}
11+
{{ form.as_p }}
12+
<div class="action-stack">
13+
<button type="submit">{% trans 'Clone project' %}</button>
14+
<a href="{{ project.get_absolute_url }}" role="button" class="secondary">{% trans 'Back' %}</a>
15+
</div>
16+
</form>
17+
</article>
18+
{% endblock %}

templates/tracker/project_detail.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ <h1>{{ project.name }}</h1>
2525
{% if can_manage_members %}
2626
<a href="{% url 'tracker:project_import_ethogram' project.pk %}" role="button" class="secondary">{% trans 'Import ethogram' %}</a>
2727
<a href="{% url 'tracker:project_import_boris_json' project.pk %}" role="button" class="secondary">{% trans 'Import compatibility project' %}</a>
28+
<a href="{% url 'tracker:project_clone' project.pk %}" role="button" class="secondary">{% trans 'Clone project' %}</a>
2829
<a href="{% url 'tracker:project_update' project.pk %}" role="button" class="contrast">{% trans 'Settings' %}</a>
2930
{% endif %}
3031
</div>
@@ -44,7 +45,7 @@ <h3>{% trans 'Quick overview' %}</h3>
4445
</article>
4546
<article>
4647
<h3>{% trans 'Team and reproducibility' %}</h3>
47-
<p>{% trans 'This project now tracks explicit roles, reusable keyboard profiles, and a reproducibility export bundle for scientific archiving.' %}</p>
48+
<p>{% trans 'This project now tracks explicit roles, reusable keyboard profiles, reproducibility bundles, and can be cloned or imported into new projects for operational reuse.' %}</p>
4849
</article>
4950
</section>
5051

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{% extends 'base.html' %}
2+
{% load i18n %}
3+
{% block title %}{% trans 'Import a new project' %}{% endblock %}
4+
{% block content %}
5+
<article class="auth-card wide-card">
6+
<h1>{% trans 'Import as a new project' %}</h1>
7+
<p class="muted">{% trans 'Create a brand new project directly from a BORIS project JSON or a PyBehaviorLog reproducibility bundle ZIP/JSON.' %}</p>
8+
<form method="post" enctype="multipart/form-data">
9+
{% csrf_token %}
10+
{{ form.as_p }}
11+
<div class="action-stack">
12+
<button type="submit">{% trans 'Create imported project' %}</button>
13+
<a href="{% url 'tracker:home' %}" role="button" class="secondary">{% trans 'Back' %}</a>
14+
</div>
15+
</form>
16+
</article>
17+
{% endblock %}

0 commit comments

Comments
 (0)