Skip to content

Releases: uniffy-io/uniffy

0.0.6

Choose a tag to compare

@github-actions github-actions released this 28 Oct 07:55
Immutable release. Only release title and notes can be modified.
v0.0.6
3b833ed

Uniffy Release 0.0.6

Uniffy adds time tracking with timers, timesheets, and optional approvals. People can switch organizations without signing in again and keep a private chat with themselves.

Released on 2026-10-28.

Breaking changes

  • [Deployment] Stop seeding admin@uniffy.io with password admin when INITIAL_ADMIN_PASSWORD is unset on a fresh deployment. The first visit now opens /setup, which creates the operator account and first organization. Setup is open to whoever reaches it first, so finish it before you expose the deployment. Existing deployments and deployments that set the password are unaffected. (#337)
  • [Administration] Add self-service organization creation, controlled by the new ALLOW_ORG_CREATION setting. Its default, operators_and_owners, lets owners of existing organizations create new ones after upgrade. Self-hosted deployments should set operators_only in the environment or under platform Server Settings. (#337)
  • [Projects] Replace typed time spent with logged time. The upgrade converts each task's existing total into one imported entry for the task owner, dated to the task's last update. Time tracking is on for every organization, and organization admins can turn it off under Administration > Projects. (#338)
  • [API] Remove AuthService.SwitchOrganization. Rebuild mobile apps from this release, because older builds cannot open an organization after a fresh sign-in. InviteMemberResponse now returns the invitation in field 3, and task create and update requests no longer accept time_spent_minutes. (#337, #338)

Enhancements

  • [Projects] Log time on tasks and run one timer per person from the task header. The running timer stays visible in the app header and pauses at a policy limit, 12 hours by default. (#338)
  • [Projects] Review your week in My time with calendar, list, and timesheet views. Log time from suggested tasks and meetings, across several days, or by copying last week. A dashboard widget compares logged time with required hours. (#338)
  • [Projects] Submit weekly or monthly timesheets to managers or team leads for approval. Reviewers approve, reject with a reason, or grant extra time to edit. Periods lock after a set delay, and reminders are optional. Approvals are off by default. (#338)
  • [Projects] Add a project time report grouped by person, task, or day. Sprint cards compare estimates and logged time with capacity from work schedules, holidays, and out-of-office days. (#338)
  • [Projects] Notify people about timer limits, timesheet decisions, and reminders, with a new Time tracking group in notification preferences. (#338)
  • [Mobile] Log time, run timers, submit and recall timesheets, and review approvals in the mobile app. (#338)
  • [Agents] Add tasks.log_time and tasks.time_summary tools, which builders enable per agent. Agents log time only for the person who asks. (#338)
  • [Administration] Configure time tracking under Administration > Projects, including workday length, timer rounding, holidays, future dates, approvals, and reminders. Create an Internal project with tasks for meetings, leave, training, and support. (#338)
  • [Organizations] Switch organizations from the web user menu or the mobile You tab without signing in again. Each browser tab keeps its own organization, including after reload. (#337)
  • [Organizations] Sign in on web straight to your last organization. A welcome page lists your organizations and pending invitations. (#337)
  • [Organizations] Open web links to notes, projects, and chat channels in another of your organizations through a prompt that switches and opens them. (#337)
  • [Organizations] Keep offline edits, uploads, and downloads separate for each organization on a device. Sign-out and cache clearing name organizations with unsynced edits before discarding them. (#337)
  • [Organizations] Guide owners of newly created organizations through mention display, sharing defaults, appearance, agent provider setup, and invitations. (#337)
  • [Administration] Rename an organization, change its slug, transfer ownership, or delete it from Administration > Organization. Deleted organizations are purged after 30 days, and platform operators can restore them until then. Members can leave from Settings > Organization on web. (#337)
  • [Administration] Ask people with existing accounts to accept invitations instead of adding them immediately. Invitees accept or decline from the invitation link or the welcome page. Inviting a current member is refused. (#337)
  • [Administration] Keep membership history when members are removed. Re-inviting a former member restores the membership without earlier admin scopes or channel memberships. (#337)
  • [Chat] Add a private conversation with yourself for notes, links, files, and drafts. It is pinned first in direct messages on web and mobile, and only you can read it. Forward messages there on web. (#333)
  • [Deployment] Rate limit registration, invitations, organization creation, and first-run setup. Invitations allow 50 per admin and 200 per organization each hour. (#337)

Bug fixes

  • [Organizations] Keep people signed in to their other organizations when they lose access to one. Previously they were signed out everywhere. (#337)
  • [Administration] Suspend or delete an organization without signing its members out of their other organizations. Deleted organizations no longer appear in organization lists. (#337)
  • [Auth] Return to the original link after sign-in and required two-factor enrollment instead of the home page. (#337)
  • [Files] Save the Files filter per person and organization instead of once per device. (#337)
  • [Chat] Allow only public channels as default channels, so new members are never added to private conversations automatically. (#333)
  • [Projects] Reject durations such as 1h30 on web and mobile instead of saving them as 1 minute. (#338)
  • [Projects] Show sprint moves in task activity instead of "created this task". (#338)
  • [Dashboard] Show new widgets on dashboards whose layout was saved before those widgets existed. (#338)
  • [Mobile] Report failed shares instead of claiming a file was saved, and remove downloaded copies after sharing. (#337)
  • Show upcoming times as "in 2h" or "Tomorrow" instead of "Just now". (#337)
  • [Deployment] Update Pillow to 13.0.0, certifi to 2026.10.19, dnspython to 2.9.0, aiohttp to 3.14.5, and yarl to 1.25.1 in backend and media worker images to resolve reported vulnerabilities. (#333, #337)

Documentation

  • [Organizations] Add guides for joining, switching, creating, and leaving organizations, and for organization administration. Correct invitation expiry to 30 days. (#337)
  • [Projects] Add a time tracking guide. (#338)
  • [Deployment] Document first-run setup, ALLOW_ORG_CREATION, and recommended registration settings for self-hosted deployments. (#337)
  • Clarify where shared content appears and when screen recordings can be downloaded, and tighten user, administration, and deployment guides. (#334)
  • [Website] Add a blog with an RSS feed, and publish docs and posts as plain Markdown at /llms.txt and /llms-full.txt. (#336)

Contributors

Full Changelog: v0.0.5...v0.0.6

Docker images

Each digest covers linux/amd64 and linux/arm64.

Image SHA-256 digest
ghcr.io/uniffy-io/uniffy sha256:400eb87c6b726df1ac27aa926df1fd63e69ad64529a95fc899dc3435d05fe764
ghcr.io/uniffy-io/uniffy-frontend sha256:c37efcacbd8475d0d6ad79b29df4f8f83c541f363fa66ea47345762584848280
ghcr.io/uniffy-io/uniffy-media-worker sha256:5e6337ea2f98935c62482dd56d201997749d8fa5408434d3a88bedb30d65a585

Download images.txt and [images.txt.sigstore.json](https://github.com/uniffy-io/uniffy/releases...

Read more

0.0.5

Choose a tag to compare

@github-actions github-actions released this 18 Oct 22:50
Immutable release. Only release title and notes can be modified.
v0.0.5
c22aa16

Uniffy Release 0.0.5

Uniffy adds shared calendars and CSV or ZIP project exports. Live editing gains clearer save status and draft recovery, alongside fixes for calls, tasks, and mobile notes.

Released on 2026-10-18.

Enhancements

  • [Calendar] Add named, colored calendars shared with people, groups, or your organization. Events inherit calendar access while retaining their organizer and explicit access blocks. (#322)
  • [Calendar] Organize calendars into My calendars, Shared with me, and Organization sections, with saved visibility preferences and matching event colors. (#322)
  • [Calendar] Choose calendars for new events and move whole series between calendars. When deleting an additional calendar, move its events or cancel them. Default calendars remain protected. (#322)
  • [Calendar] Export shared calendars as .ics, import into calendars you can edit, and subscribe to calendars you can view. Subscription feeds check their owner's current access. (#322)
  • [Calendar] Find calendars through search and mentions. Let agents list accessible calendars and create events on a chosen calendar. (#322)
  • [Projects] Export one project or a portfolio selection to CSV, including subtasks, hierarchy, custom fields, and readable labels. Current-view exports preserve filters, sorting, and outline order; grouping and quick search are excluded. (#326)
  • [Projects] Add ZIP exports containing tasks, sprints, activity, comments, and field definitions. Exports support up to 100 accessible projects and 200,000 tasks, with an audit entry per project. (#326)
  • [Live editing] Add collaboration to web task descriptions and eligible event descriptions. Recurring series descriptions still use Done and recurrence scope selection. (#325)
  • [Live editing] Distinguish Syncing, Synced, and Saved, with separate messages for delayed saves, unavailable saving, and failed device storage. Synced means shared with collaborators; Saved confirms database persistence. (#325)
  • [Live editing] Retain encrypted device drafts until server saving completes, retry after reconnecting, and offer text recovery or export. Warn before signing out with unsaved edits. Available in web editors and mobile notes. (#325)
  • [Mobile] Browse shared calendars, save visibility preferences, open sharing controls, and choose writable calendars for events. (#322)
  • [Agents] Add catalog entries for Claude Sonnet 5.5, Claude Haiku 5.5, GPT-6.1 Sol, Gemini 4 Argon, Gemini 2.5 Flash-Lite, and Nano Banana 2.1. Refresh OpenRouter catalog pricing and add deprecated GPT Image 1.5 and GPT Image 1 Mini entries. (#329)
  • [Administration] Add policies for additional calendar creation and organization-wide sharing. Both default to all members and can be restricted to organization and calendar admins. (#322)
  • [Deployment] Show pending live edits, oldest pending save, memory budget, eviction policy, and persistence information in platform overview. Add ./manage.py realtime checkpoint-now to save pending edits before Valkey maintenance. (#325)

Bug fixes

  • [Calendar] Limit conflict warnings to your commitments instead of unrelated meetings on shared calendars. (#322)
  • [Calendar] Persist subscription feed regeneration and revocation. (#322)
  • [Projects] Keep tasks when their response arrives before project list finishes loading. (#322)
  • [Projects] Preserve live description edits when unrelated task updates return older text. (#325)
  • [Notes] Keep last displayed note read-only when it is deleted or access is removed, instead of jumping to another note. (#325)
  • [Live editing] Merge API and agent text changes with concurrent editor changes using caller's original text. (#325)
  • [Live editing] Update renamed mentions in live documents and defer inline upload cleanup while unsaved edits may still reference files. (#325)
  • [Mobile] Preserve note cursor position as collaborator edits arrive and handle text composition during live editing. (#325)
  • [Mobile] Render additional Markdown bullet markers and line breaks, and hide stored image sizing annotations in previews. (#325)
  • [Calls] Enforce participant limits during concurrent joins and in LiveKit rooms. Each connected device uses one slot; policy changes apply to new calls. Restart calls whose room capacity differs. (#331)

Documentation

  • [Projects] Document CSV exports, ZIP bundles, current-view behavior, access checks, and export limits. (#326)
  • [Calls] Clarify screen-share quality as an app policy, with changes applied when joining. Custom clients may exceed it; it does not guarantee bandwidth protection. (#331)
  • [Deployment] Document live-edit recovery, connection close codes, and Valkey maintenance. Stop backend writers and resolve unsaved streams before wiping Valkey. (#325)

Contributors

Full Changelog: v0.0.4...v0.0.5

Docker images

Each digest covers linux/amd64 and linux/arm64.

Image SHA-256 digest
ghcr.io/uniffy-io/uniffy sha256:664bd137606f7e982126dac2905b63f2145b7a54f4154225a3dd8e988b5871a2
ghcr.io/uniffy-io/uniffy-frontend sha256:4154ecf3752271b38715aa43184e1c546bf87804239285da6b4b914032c90a11
ghcr.io/uniffy-io/uniffy-media-worker sha256:20c16a179101efa2c3e5f7afbb972294d8b881ec3319ee97989e56c8363363a4

Download images.txt and images.txt.sigstore.json, then verify signed image list with Cosign 3 or newer:

cosign verify-blob images.txt --bundle images.txt.sigstore.json --certificate-oidc-issuer https://token.actions.githubusercontent.com --certificate-identity https://github.com/uniffy-io/uniffy/.github/workflows/release.yml@refs/tags/v0.0.5

See release verification guide for individual image signatures and SBOM attestations.

0.0.4

Choose a tag to compare

@github-actions github-actions released this 29 Sep 11:01
v0.0.4
e101bb2

Uniffy 0.0.4 fixes mentions that stayed stuck loading and makes links to repeating calendar events and agents open the right page. It also refreshes the model catalog and adds two higher image quality levels.

Upgrade notes

  • No database migrations or API schema changes. Backend, frontend, and media worker images can be updated together with no operator steps.
  • Agent and automation links use new paths. Agents open at /agents/agents/<id>/overview and automations at /agents/automations/<id>. Older links that start with an agent id redirect to the new pages and keep their query and hash.
  • Organization image quality ceiling now always applies. An unset or invalid image quality used to fall back to a provider default that could sit above the ceiling. It now uses the ceiling, so spend can drop for organizations that set a low ceiling.
  • Image tags are unchanged. Stable releases publish exact version tags and latest. Update deployment references to 0.0.4 or digest pins from attached images.txt.

Mentions

  • Mentions of notes, files, and other items no longer stay in a loading state when a lookup fails or the server leaves an item out of its answer. Every requested mention settles. A failed or missing lookup shows as unavailable, and a later retry can recover it. #321
  • Late lookup results are dropped after you leave the page or switch organization. They no longer update the wrong view.
  • Saved links to one occurrence of a repeating event resolve. The mention shows that occurrence's time. It follows a moved occurrence to its edited copy and shows a deleted state for a cancelled one. Access rules of the series or edited copy still apply.

Calendar

  • Opening one occurrence of a repeating event loads it with that occurrence's start and end time.
  • The calendar opens an event from an ?event= link, as used by search previews, as well as from /calendar/<id>.

Agents

  • Agent calendar replies link to the stored event, also for repeating events. Event titles are cleaned before they go into a mention link, so unusual characters no longer break it.
  • Image generation adds Extra high and Maximum quality levels. Admins can select them as the organization ceiling in agent runtime settings. GPT Image 2.5 models carry prices for both levels.
  • xAI models send reasoning effort based on the reasoning levels the catalog lists for each model. This was hard coded for one model before.
  • Model catalog adds Claude Opus 5.5, Gemini 3.8 Flash, Gemini 3.1 Flash Lite Image, GPT-6 Astra, GPT-6 Luna, GPT-6 Sol, GPT Image 2.5 Flare, GPT Image 2.5 Sunburst, Grok 4.7, and OpenRouter entries for Qwen 3.8 Max (0902) and the GPT Sol latest alias. Existing entries have refreshed data and prices. No model was removed.

Projects

  • Refreshing the project list no longer closes a task you opened from a link while it is still loading. The task panel and selection clear only when the selected task disappears or the current project is lost.

Release assets

Attached images.txt lists backend, frontend, and media worker digest pins for linux/amd64 and linux/arm64. images.txt.sigstore.json and six platform-specific SBOMs accompany this release. Follow the release verification guide before deployment.

Full comparison: v0.0.3 to v0.0.4

0.0.3

Choose a tag to compare

@github-actions github-actions released this 26 Sep 23:01
v0.0.3
e2fd007

Uniffy 0.0.3 adds personal and shared project views, nested filters, broader task grouping, and saved views on mobile. It also improves web uploads and fixes task lists, dashboard navigation, calls, and organization switching.

Upgrade notes

  • Upgrade clients alongside backend. Projects API replaces older task filter fields with typed filter and sort fields. Saved views use definition and visibility instead of config_json and is_default. Custom clients need regenerated bindings and updated requests. See Projects schema.
  • Database migrations 105 through 107 run on backend startup. They link call participants to login sessions, migrate saved views, and add task filter indexes. Migration 107 requires PostgreSQL with ICU support for natural text sorting. Indexes build concurrently so task writes can continue.
  • Existing saved views become shared views owned by project owners. Missing built-in views are added. Existing built-in views receive default definitions. Custom views retain supported column, sort, and roadmap zoom settings. Old browser-only column widths, hidden columns, and collapse preferences reset.
  • Image tags change. Stable releases now publish exact version tags and latest. Floating minor tags such as 0.0 stop advancing. Update deployment references to 0.0.3 or digest pins from attached images.txt. Run backend, frontend, and media worker images from matching release.
  • Fresh organizations no longer receive bundled documentation notes or Welcome canvas. SEED_STARTER_CONTENT is removed. Existing content stays intact.

Projects

  • Create personal or shared saved views for Table, Board, Roadmap, Backlog, Graph, and Resources. Anyone with project access can keep personal views. Project editors can manage shared views. Project admins can choose shared default views. #305
  • Manage views from header tabs. Rename, duplicate, delete, copy links, and arrange your own tab order. Each view keeps filters, sorting, visible fields, column widths, and layout settings. Save, Save as new, and Discard make changes explicit. Edits made while saving remain in your draft.
  • Build nested AND/OR filters across task fields and custom fields. Pick people by name, use Me or Unassigned, choose active sprints, and filter by relative dates. Presets include My tasks, Overdue, Due this week, and Completed last 7 days. Header chips show active conditions. #317
  • Group Table, Board swimlanes, and Roadmap by supported fields such as assignee, tags, sprint, epic, dates, and custom select fields. Reverse group order, hide empty groups, and see task counts plus estimate, time spent, and visible numeric field totals. Tasks with several assignees or tags appear in each matching group. #318
  • Board columns can use any single-select field. Dragging between editable lanes updates matching task values, including sprint, assignees, tags, and custom fields. Date and computed groups explain when moves cannot change their values.
  • Project screens load every task page on web and mobile. Large projects no longer stop at first page. Table sorting follows displayed values: numbers sort numerically, people by name, and select fields by option order. Empty values stay last. Custom person columns show their own values. #302
  • Subtask rows and cards link to parents. Blocked markers count remaining open blockers. Completion controls and sprint progress respect configured completion statuses. Removing an in-use status requires moving its tasks first. #303
  • Edit project tags in General settings. Saving waits for pending tag creation. Board status management opens project settings. Project search finds tasks by number, such as #12, or key, such as PROD-12. Slug edits validate format and reject duplicates. #314

Mobile

  • Open shared and personal saved views from project tabs. Filter by people, status, priority, tags, sprint, dates, type, and epic. Save changes to your personal views, create personal copies, rename them, or delete them. Last opened view is remembered. #316
  • Shared views can be adjusted locally and saved as personal copies. Editing shared definitions remains on web. Advanced web filter conditions stay applied when changing mobile filters.
  • Display sheet adds table grouping and sorting. Unsupported web grouping falls back to status with an explanation. Choosing another sort field replaces multiple web sort keys. Resources tabs open separate Resources screen.
  • Project view links from your deployment open matching views inside app. Note and folder lists use compact rows with note icons and last-edit details.

Agents

  • Ask agents to list tasks from saved project views by name or ID. Task lookup supports typed filters, sorting, and pagination, with clear notice when more results remain.

Files

  • Web uploads send several binary chunks in parallel. Concurrency adapts to connection protocol, with shared memory and request limits. Canceling uploads aborts pending chunk requests. #311

Dashboard and notifications

  • Overdue and due-today links open matching task lists. My tasks groups loaded tasks into Overdue, Due today, and Upcoming. Manual refresh reloads dashboard data.
  • Notifications card loads recent notifications without opening notification bell first. Read items remain visible, with open, mark-as-read, and delete actions.
  • Notifications page has Show analytics and Hide analytics controls on tablets and desktops. Charts resize with their containers. Headers, filters, and project controls fit smaller screens with larger touch targets.

Calls and sessions

  • Revoking login sessions, removing organization membership, or deactivating users disconnects affected call devices. Suspending or deleting organizations ends their calls. Call eviction appears in audit history, and background reconciliation retries missed cleanup. #309
  • Signing out or switching organizations clears prior organization data, cached previews, upload history, and project drafts. Late requests cannot refill cleared web state. Device layout preferences remain. #312
  • Empty Notes screens show “No note selected” instead of an endless loading spinner.

Documentation and release assets

Third party license and trademark notices now live under Legal documentation.

Attached images.txt lists backend, frontend, and media worker digest pins for linux/amd64 and linux/arm64. images.txt.sigstore.json and six platform-specific SBOMs accompany this release. Follow release verification guide before deployment.

Full comparison: v0.0.2 to v0.0.3

0.0.2

Choose a tag to compare

@github-actions github-actions released this 21 Sep 20:13
v0.0.2
319c392

Uniffy 0.0.2 adds video playback that works on every device and moves media processing into its own worker and image. 11 commits since v0.0.1 (compare), mostly from #304 and #301.

Upgrade notes

Read these before rolling out. They apply to cloud and self-hosted deployments alike.

  • A media worker is now required. Thumbnails, document text extraction, image and audio metadata, screen recording conversion, and the new video playback copies run on a separate media queue. Nothing consumes that queue until you run python -m uniffy --worker-media from the new ghcr.io/uniffy-io/uniffy-media-worker image. Core and egress workers keep using the uniffy image, which no longer contains FFmpeg. See Media worker and Video processing. If your chart version does not render this Deployment, add one from the pod template on the configuration page.
  • Drain core media jobs before switching. Pause uploads and recordings, let running core media jobs finish, then start backend, core, egress, and media on 0.0.2 together. Pending file work is recovered from PostgreSQL onto the media queue every five minutes. Steps are in Moving media work off core.
  • Migrations run on backend start. Migration 103 adds playback columns and the files_renditions cleanup table, and marks every stored video for a compatibility check. Expect media worker load after the upgrade while existing videos are probed and, where needed, converted. Object storage grows by the completed copies.
  • New settings. MEDIA_WORKER_MAX_JOBS, MEDIA_WORKER_POLL_DELAY, MEDIA_WORKER_JOB_TIMEOUT, MEDIA_WORKER_METRICS_PORT (9093), MEDIA_RENDITIONS_ENABLED, TRANSCODE_MAX_CONCURRENT, TRANSCODE_MAX_SOURCE_BYTES, TRANSCODE_MAX_OUTPUT_BYTES, TRANSCODE_MAX_DURATION_SECONDS, TRANSCODE_THREADS, MEDIA_SCRATCH_DIRECTORY, MEDIA_SCRATCH_MAX_BYTES. All are documented with defaults on the configuration page and listed in .env.example. TRANSCODE_FFMPEG_TIMEOUT is now a minimum; longer videos get four times their duration. The undocumented TRANSCODE_HW_ENCODER override is gone, and conversions use libx264.
  • Scratch disk. The media worker needs a writable, disk-backed scratch directory sized to MEDIA_SCRATCH_MAX_BYTES (16 GiB by default). Point both MEDIA_SCRATCH_DIRECTORY and TMPDIR at it. Video sources are read from object storage over HTTP Range and never copied to disk; only encoded output lands in scratch. No persistent volume is needed, and scratch needs no backup.
  • Backups. Object storage now holds completed playback copies next to originals, versions, and thumbnails. The backup guide now covers PostgreSQL, object storage, and APP_MASTER_KEY together.
  • Licensing. The media worker image bundles FFmpeg 9.0.1 with GPL components (x264). Upstream notices ship in the image under /usr/share/uniffy/media/licenses, and docs/LICENSES.md lists the pinned sources and hashes. PyMuPDF (AGPL) and PyAV are no longer dependencies; PDFs are read and rendered with PDFium.

Files and video

  • Videos play in their original format first. When the browser cannot decode it, Uniffy prepares an H.264/AAC MP4 copy in the background and switches to it once ready. Viewers see "Preparing this video" while the copy is pending, and a download link when no copy can be made. Sources that convert include HEVC, AV1, VP9, ProRes, WMV, MPEG-TS, and Matroska. Copies fit within 1920x1080, and HDR sources are tone mapped to SDR. Details for users are in Video playback.
  • Originals stay untouched and downloadable. Uploading a new version or restoring an old one starts conversion for that version again. A version whose conversion fails three times stops retrying until it is replaced.
  • QuickTime .mov uploads now stream with an MP4 content type, so browsers attempt playback instead of refusing the source.
  • Screen recordings still convert from WebM to the promised MP4, and download still waits for that MP4. Playback no longer waits: browsers that decode WebM can play the recording while conversion runs.
  • Thumbnails are generated for more video containers: WMV, MPEG-TS, FLV, AVI, and Matroska files with alternate MIME types.
  • The file viewer closes, and its cached preview is discarded, when access to the open file is revoked. Before, the viewer kept showing content the user could no longer read.
  • Restoring a version from the viewer's versions popover keeps the confirmation dialog open until you answer it. Before, clicking inside the dialog closed the popover and dismissed the dialog.

Chat

  • Sending is blocked while an attachment is still uploading, on web and mobile. Before, a message sent mid-upload silently dropped the attachments that had not finished.

Projects

  • When access to a project is revoked, its tasks leave the task list and any open task detail panel closes without a reload. A task response that arrives after the project was removed is ignored.

Notes

  • Read-only notes show the current body when the note changes underneath them. Before, a viewer without a live editing session kept the content from when the view first opened.

Mobile

  • Video previews play with the same original-then-copy behavior as the web app, including the preparing and download states.
  • Chat and thread screens block sending while attachments upload.

Documentation and website

  • New pages and sections: Video playback for users, Media worker and Video processing for operators, and Moving media work off core in the upgrade guide.
  • The VM install guide gains Choose a machine, with starting budgets by team size and guidance for video conversion and calls.
  • System architecture, verification, and backup pages describe the three-image layout, the media fleet, and object storage as a backup target.
  • Overscroll areas on the website and docs match the page theme instead of flashing a light background.

Development

  • The development stack builds from the production src/uniffy/Dockerfile (dev and media-dev targets) instead of a separately published base image, so a fresh clone builds without registry access. Compose gains a worker-media service with a scratch volume. On --stack local, the media worker needs ffmpeg and ffprobe on PATH.
  • Every third-party GitHub Action is pinned to a commit SHA, images build only after all checks pass, and vulnerability scans run in their own job. The README explains the pinning policy.

Container images

All three images are multi-arch indexes for linux/amd64 and linux/arm64. Run all three from the same release.

  • By tag

    ghcr.io/uniffy-io/uniffy:0.0.2
    ghcr.io/uniffy-io/uniffy:0.0
    ghcr.io/uniffy-io/uniffy:latest
    ghcr.io/uniffy-io/uniffy-media-worker:0.0.2
    ghcr.io/uniffy-io/uniffy-media-worker:0.0
    ghcr.io/uniffy-io/uniffy-media-worker:latest
    ghcr.io/uniffy-io/uniffy-frontend:0.0.2
    ghcr.io/uniffy-io/uniffy-frontend:0.0
    ghcr.io/uniffy-io/uniffy-frontend:latest
    
  • By digest (recommended for deployment pins)

    ghcr.io/uniffy-io/uniffy@sha256:1eb2cf873f3b89b65f64e26c9a530040edf544dbaaa602955b34c8813462cfcf
    ghcr.io/uniffy-io/uniffy-media-worker@sha256:d99719f50664c7920400eb834bfe8cfc04b0821cfe76e7c2053778909bf53c04
    ghcr.io/uniffy-io/uniffy-frontend@sha256:7858788cedad41a7f9a4359599e59cf88f4b3ff653e90fffe43c98d4fe9096d8
    

Verify

images.txt below is this list, signed. Each digest is signed as well and carries its SBOM as an attestation. The signing identity is the release workflow running for this tag. Check with cosign 3.0 or newer:

COSIGN_ISSUER=https://token.actions.githubusercontent.com
COSIGN_IDENTITY=https://github.com/uniffy-io/uniffy/.github/workflows/release.yml@refs/tags/v0.0.2
cosign verify-blob images.txt --bundle images.txt.sigstore.json \
  --certificate-oidc-issuer "$COSIGN_ISSUER" --certificate-identity "$COSIGN_IDENTITY"
cosign verify ghcr.io/uniffy-io/uniffy@sha256:1eb2cf873f3b89b65f64e26c9a530040edf544dbaaa602955b34c8813462cfcf \
  --certificate-oidc-issuer "$COSIGN_ISSUER" --certificate-identity "$COSIGN_IDENTITY"
cosign verify ghcr.io/uniffy-io/uniffy-media-worker@sha256:d99719f50664c7920400eb834bfe8cfc04b0821cfe76e7c2053778909bf53c04 \
  --certificate-oidc-issuer "$COSIGN_ISSUER" --certificate-identity "$COSIGN_IDENTITY"
cosign verify ghcr.io/uniffy-io/uniffy-frontend@sha256:7858788cedad41a7f9a4359599e59cf88f4b3ff653e90fffe43c98d4fe9096d8 \
  --certificate-oidc-issuer "$COSIGN_ISSUER" --certificate-identity "$COSIGN_IDENTITY"

Verified OK on every command means you hold what this run built. The SBOM check, the GitHub CLI route, and a Kyverno policy for your cluster are in https://uniffy.io/docs/deployment/verify/

0.0.1

Choose a tag to compare

@github-actions github-actions released this 16 Sep 21:06
v0.0.1
f7fd33a

1 commits since v0.0.1-rc.1 (compare).

Core

  • [CHORE] Deploy: release notes by area and faster docker jobs (#300) (f7fd33a6)

Landing

No changes.

Mobile

No changes.

Images

Each line is one multi-arch index for linux/amd64 and linux/arm64. Pull and pin by digest, not by tag.

ghcr.io/uniffy-io/uniffy@sha256:a6b157578b2f6abc214c675225e12152b78f6ee7a0e5910519fd9fa23bd6f610
ghcr.io/uniffy-io/uniffy-frontend@sha256:4b30f8a524a3d20c9e867db4ffc143146bc7139227a704888237350b0fc4062b

Verify

images.txt below is this list, signed. Both digests are signed as well, and each carries its SBOM as an attestation. The signing identity is the release workflow running for this tag. Check with cosign 3.0 or newer:

COSIGN_ISSUER=https://token.actions.githubusercontent.com
COSIGN_IDENTITY=https://github.com/uniffy-io/uniffy/.github/workflows/release.yml@refs/tags/v0.0.1
cosign verify-blob images.txt --bundle images.txt.sigstore.json \
  --certificate-oidc-issuer "$COSIGN_ISSUER" --certificate-identity "$COSIGN_IDENTITY"
cosign verify ghcr.io/uniffy-io/uniffy@sha256:a6b157578b2f6abc214c675225e12152b78f6ee7a0e5910519fd9fa23bd6f610 \
  --certificate-oidc-issuer "$COSIGN_ISSUER" --certificate-identity "$COSIGN_IDENTITY"
cosign verify ghcr.io/uniffy-io/uniffy-frontend@sha256:4b30f8a524a3d20c9e867db4ffc143146bc7139227a704888237350b0fc4062b \
  --certificate-oidc-issuer "$COSIGN_ISSUER" --certificate-identity "$COSIGN_IDENTITY"

Verified OK on every command means you hold what this run built. The SBOM check, the GitHub CLI route, and a Kyverno policy for your cluster are in https://uniffy.io/docs/deployment/verify/

0.0.1-rc.1

0.0.1-rc.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 16 Sep 19:53
v0.0.1-rc.1
f4d1d17

What's Changed

  • [CHORE] Backend: upgrade Granian to 2.8.2 by @yugiuniffy in #1
  • [FEAT] Agents: versioned rules and invocation-only skills by @kaibauniffy in #76
  • [FIX] Calendar: access gates and web audit defects by @yugiuniffy in #246
  • [FEAT] Notes: improve editor controls and personal content privacy by @kaibauniffy in #249
  • [PERF] Calendar: scale guardrails on the read paths by @yugiuniffy in #247
  • [FEAT] Calendar: iCalendar export, subscribe, import, and event mail by @yugiuniffy in #250
  • [FIX] Calls: audit defects in access, reliability, and secrets by @yugiuniffy in #259
  • [FEAT] Chat: group DM cap, drafts view, who reacted, and unarchive by @yugiuniffy in #260
  • [FEAT] Chat: unread cursor controls and thread broadcast by @yugiuniffy in #261
  • [FEAT] Chat: convert a channel between public and private by @yugiuniffy in #262
  • [CHORE] Mobile: run unit tests in their own workspace by @kaibauniffy in #286
  • [FIX] Agents: unify formatting guidance by @kaibauniffy in #287
  • [FEAT] Chat: repair agent output, focus, and draft indicators by @kaibauniffy in #288
  • [FIX] Chat: open dialogs without loading overlay by @kaibauniffy in #289
  • [FEAT] Deploy: hardened images and a signed release pipeline by @kaibauniffy in #299

New Contributors

Full Changelog: https://github.com/uniffy-io/uniffy/commits/v0.0.1-rc.1