diff --git a/discussion-topics/README.md b/discussion-topics/README.md index 24d7b35..6a3b690 100644 --- a/discussion-topics/README.md +++ b/discussion-topics/README.md @@ -18,6 +18,7 @@ Completed topics from earlier events are in the [archive](../archive/README.md). - Formalize launcher behavior so facility-specific startups are not broken by changes ([#3828](https://github.com/ControlSystemStudio/phoebus/issues/3828) `-clean` with `-app`/`-resource`) - [ ] Window positioning from BOB x/y properties ([#3871](https://github.com/ControlSystemStudio/phoebus/issues/3871)) - Deployment-only / multi-user product ([#3515](https://github.com/ControlSystemStudio/phoebus/issues/3515), [#410](https://github.com/ControlSystemStudio/phoebus/issues/410)) + - Kiosk mode for display monitors, including using the alarm handler on dedicated monitor screens - [ ] Plugin system improvements and standardization - [ ] Resource management and memory optimization - [ ] Cross-platform compatibility challenges (Windows, Linux, macOS) @@ -59,6 +60,7 @@ Completed topics from earlier events are in the [archive](../archive/README.md). - Identify flaky tests and common blind spots in current pipelines #### 1.5 UI/UX Framework Modernization +- [ ] Quick discussion topic: identify which Phoebus applications should support kiosk mode, starting with the Display Builder runtime and alarm applications as the first candidates - [ ] CSS styling and theming improvements - [ ] Responsive design patterns for different screen sizes - [ ] Dark mode and accessibility enhancements @@ -74,6 +76,7 @@ Completed topics from earlier events are in the [archive](../archive/README.md). - Diagnostics for where a macro is set; consistent relative path handling ([#3803](https://github.com/ControlSystemStudio/phoebus/issues/3803), [#3873](https://github.com/ControlSystemStudio/phoebus/issues/3873)) - [ ] **Actions and rules** - Generic action framework (open data browser, Save & Restore, layouts) with backward compatibility + - Integrate Save & Restore into OPI action buttons so operators can launch restore-related workflows directly from displays - Formulas in Write PV action ([#3941](https://github.com/ControlSystemStudio/phoebus/issues/3941)), rules using other widgets' properties ([#3862](https://github.com/ControlSystemStudio/phoebus/issues/3862)) - [ ] **Widget behavior and defaults** - Per-widget update rate (currently a global throttle) @@ -207,11 +210,20 @@ Completed topics from earlier events are in the [archive](../archive/README.md). - Per-user permissions, per-alarm permissions ([#1336](https://github.com/ControlSystemStudio/phoebus/issues/1336)), and security concerns ([#3702](https://github.com/ControlSystemStudio/phoebus/issues/3702)) #### 2.7 Save & Restore +- [ ] Collect Save & Restore usage workflows from facilities + - Capture how sites organize snapshots, configurations, approvals, restore operations, and operator interactions + - Identify the common workflows as well as facility-specific constraints that should shape UI and service changes +- [ ] Discuss how to make Save & Restore configurations easier to build and maintain + - Review workflows for creating configurations from IOCs, displays, templates, or ChannelFinder data + - Identify missing tooling for bulk creation, editing, import/export, and validation of configurations - [ ] Access security implications of "restore from service" ([#3357](https://github.com/ControlSystemStudio/phoebus/issues/3357)) - [ ] Credentials handling and embedded LDAP / hashed passwords ([#3045](https://github.com/ControlSystemStudio/phoebus/issues/3045), [#3378](https://github.com/ControlSystemStudio/phoebus/issues/3378)) - [ ] Compare current values to stored snapshots - [ ] Binary values in snapshots ([#2755](https://github.com/ControlSystemStudio/phoebus/issues/2755)) - [ ] Allow hide/reorder of columns in UI ([#3947](https://github.com/ControlSystemStudio/phoebus/issues/3947)) +- [ ] Reconsider using parallel requests for restore + * There are technical issues (no GH issue yet, still researching) + * Sometimes, PVs need to be restored in a certain order #### 2.8 Service Health, Testing & Realtime Updates - [ ] Health endpoint reporting improvements (start with Alarm Logger) @@ -237,6 +249,11 @@ Completed topics from earlier events are in the [archive](../archive/README.md). - Search period and excessive search logging ([#3705](https://github.com/ControlSystemStudio/phoebus/issues/3705), [#3654](https://github.com/ControlSystemStudio/phoebus/issues/3654)) - CA/PVA array decoding differences ([#3536](https://github.com/ControlSystemStudio/phoebus/issues/3536), [#3791](https://github.com/ControlSystemStudio/phoebus/issues/3791)) and failures on missing fields ([#3248](https://github.com/ControlSystemStudio/phoebus/issues/3248)) - Blocked TCP connections caused by IOC behavior: threading approach after the mitigation release +- [ ] **VType metadata model cleanup** + - Consolidated finding from [epicsCoreJava issue #140](https://github.com/epics-base/epicsCoreJava/issues/140) and [PR #146](https://github.com/epics-base/epicsCoreJava/pull/146): description metadata should be modeled separately from `Display`, not forced into a full display payload for every value type + - The proposal is to separate `description` from `display` so types such as `VString`, `VEnum`, and `VBoolean` can carry a description without requiring a full display contract, while keeping compatibility with existing factories and clients + - The proposed pattern is a `DescriptionProvider` interface, with `DisplayProvider extends DescriptionProvider`, plus backward-compatible `of(...)` factory overloads that accept an optional description + - This is directly relevant to Phoebus UI work such as the PV Table and any display-layer metadata that needs a description without an entire display object #### 3.2 PV Access Layer - [ ] Name service interoperability and fallback behavior @@ -253,6 +270,11 @@ Completed topics from earlier events are in the [archive](../archive/README.md). - [ ] Unit testing and test coverage goals - [ ] Documentation standards - [ ] Java code conventions ([#894](https://github.com/ControlSystemStudio/phoebus/issues/894)) and IDE guidance (IntelliJ first; drop or de-emphasize Eclipse configuration) +- [ ] AI-assisted development workflow and repository guardrails + - Define how AI is used in development: code generation, refactoring, test authoring, issue triage, and documentation support + - Establish repository-level guardrails using GitHub Copilot custom instructions and shared `AGENTS.md` conventions + - Review best practices from: [GitHub Copilot repository instructions](https://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/add-custom-instructions/add-repository-instructions), [Temporal SDK Java AGENTS.md](https://github.com/temporalio/sdk-java/blob/-/AGENTS.md), [Agents.md](https://agents.md/), and the [DevAgentStack guide](https://devagentstack.com/guide/) with emphasis on steps 03 and 04 + - Require scoped prompts, explicit task definition, and verification steps so AI-assisted changes stay auditable and reproducible #### 4.2 Release Management - [ ] Versioning strategy (semantic versioning) diff --git a/projects/README.md b/projects/README.md index 1ad32e0..0605689 100644 --- a/projects/README.md +++ b/projects/README.md @@ -29,13 +29,14 @@ This directory contains the list of development projects for the Phoebus tools a | [PHOEBUS-DEV-001](#phoebus-dev-001-verify-intellij-idea-setup-instructions) | Verify IntelliJ IDEA Setup Instructions | Beginner | Kathryn (ISIS) | Not Started | | [PHOEBUS-DEV-002](#phoebus-dev-002-document-logging-configuration-and-console-noise-reduction) | Document Logging Configuration and Console Noise Reduction | Beginner | | Not Started | | [PHOEBUS-DEV-003](#phoebus-dev-003-add-pre-commit-checks-to-pr-template-and-docs) | Add Pre-commit Checks to PR Template and Docs | Beginner | | Not Started | -| [PHOEBUS-I18N-001](#phoebus-i18n-001-check-french-translation-files-for-duplicate-entries) | Check French Translation Files for Duplicate Entries | Beginner | | Not Started | +| [PHOEBUS-I18N-001](#phoebus-i18n-001-check-french-translation-files-for-duplicate-entries) | Check French Translation Files for Duplicate Entries | Beginner | Loic Caouen | Not Started | | [PHOEBUS-LINT-001](#phoebus-lint-001-display-builder-screen-linter) | Display Builder Screen Linter | Beginner | | Not Started | | **Middle Layer Services** ||||| | [SERVICES-SB4-001](#services-sb4-001-spring-boot-4-migration-planning) | Spring Boot 4 Migration Planning | Advanced | | Started | | [SERVICES-VERSIONING-001](#services-versioning-001-rest-api-versioning-strategy) | REST API Versioning Strategy | Intermediate | | Started | | [SERVICES-WEBSOCKET-001](#services-websocket-001-websocket-support-as-a-alternative-to-polling-phoebus-services) | WebSocket Support as Alternative to Polling | Intermediate | | Not Started | | [SERVICES-OLOG-001](#services-olog-001-elasticsearch-embeddings-index-mapping-and-template-update-for-olog) | Elasticsearch embeddings index mapping and template update for Olog | Intermediate | | Not Started | +| [SERVICES-OLOG-002](#services-olog-002-role-based-authorization) | Role-based authorization for admin tasks | Intermediate | | Not Started | | [SERVICES-CFNS-001](#services-cfns-001-multi-threaded-channelfinder-nameserver-with-broadcast-fallback) | Multi-threaded ChannelFinder Nameserver with Broadcast Fallback | Intermediate | | Not Started | | [SERVICES-CF-DOC-001](#services-cf-doc-001-channel-lifecycle-documentation-and-diagram-for-the-channelfinder-ecosystem) | Channel lifecycle documentation and diagram for the ChannelFinder ecosystem | Beginner | | Not Started | | [SERVICES-RECSYNC-002](#services-recsync-002-restructure-recsync-repo-and-modernize-python-packaging) | Restructure recsync repo and modernize Python packaging | Beginner | | Not Started | @@ -575,6 +576,20 @@ Update Olog's Elasticsearch mappings and templates to support vector embeddings **Assigned To:** _Available_ +### SERVICES-OLOG-002: Role-based authorization + +**Repository:** https://github.com/Olog/phoebus-olog +**Difficulty:** Intermediate +**Skills Required:** Java/Spring Boot + +**Description:** +Add role-based access to management end-points in order to be able to delegate responsibilities to create and update logbooks, tags, properties and templates. Similar to save&restore, an admin role should be a simple and good enough approach. + +**Resources:** +- Olog repository: https://github.com/Olog/phoebus-olog + +**Assigned To:** _Available_ + --- ### SERVICES-CFNS-001: Multi-threaded ChannelFinder Nameserver with Broadcast Fallback @@ -716,7 +731,7 @@ Explore and implement a direct communication path between the EPICS IOC componen ### SERVICES-RECSYNC-005: RecCaster unicast mode -**Repository:** https://github.com/ChannelFinder/recsync +**Repository:** https://github.com/ChannelFinder/reccaster **Difficulty:** Intermediate **Skills Required:** EPICS IOC Development, C/C++ or IOC Module Work, Network Configuration, Testing @@ -731,8 +746,8 @@ Add and validate a unicast mode for `reccaster` so sites can explicitly target o - Track the work against the related issue: https://github.com/ChannelFinder/recsync/issues/108 **Resources:** -- recsync repository: https://github.com/ChannelFinder/recsync -- recsync issue: https://github.com/ChannelFinder/recsync/issues/108 +- reccaster repository: https://github.com/ChannelFinder/reccaster +- reccaster issue: https://github.com/ChannelFinder/reccaster/issues/24 **Assigned To:** _Available_