Total Issues Submitted: 56
This file contains all bug reports and feature requests submitted through the application.
Type: Feature Priority: Medium Status: Resolved Submitted: 2025-12-12
Add a toggle to the Taxonomy Terms page that hides terms not used in the current knowledge base. This addresses taxonomy clutter when working across multiple KBs with different domains.
1. What does "unused" mean?
- Option A: Terms not used as a "name" in any pair assigned to entities in current KB - Option B: Terms not used as either "name" or "value" in current KB - Option C: Terms not appearing in any pair at all (globally unused)
2. Filtering scope: Should the filter apply only to the Terms page, or also affect dropdown population elsewhere (e.g., when assigning taxonomy in editors)?
3. User experience: If a term is hidden, how does the user know it exists? Should there be a count like "Showing 15 of 42 terms"?
4. New term creation: If Hide Unused is active and user creates a new term, should the filter auto-disable to show the new term?
- Model method `Taxonomy::getTermsUsedInKB()` already exists - UI toggle was implemented but commented out pending design decisions - See [list_taxonomy_terms.php:82-100](../../atomic/list_taxonomy_terms.php#L82-L100) for commented code
- Part of broader KB-scoping discussion in [taxonomy_enhancement_considerations.md](../taxonomy_enhancement_considerations.md)
- Dec 12, Resolved by scoping Taxonomy Terms and Pairs to KB
Type: Feature
Priority: Medium
Status: Open
Submitted: 2025-12-08 23:01:52
Now that LG are inheriting taxonomy assignments from statements and actions, we want to consider Hierarchy Viewer, List by Taxonomy, and Taxonomy Cleanup features for LG. It may be messier than for the statements and actions.
Type: Feature Priority: Medium Status: Resolved Submitted: 2025-12-08 22:44:45 Resolved: 2025-12-09
It would be helpful to be able to copy statements, actions, and learning goals. Not only as a time-saver, but also to maintain consistency of language.
Implemented copy functionality for all three entity types:
Files created:
- `atomic/copy_statement.php` - Copies statements via StatementController - `atomic/copy_action.php` - Copies actions via ActionController - `atomic/copy_learning_goal.php` - Copies learning goals with statement/action associations
Files modified:
- `app/Controllers/AtomicEntityController.php` - Added `copy()`, `copyTaxonomyAssociations()`, and `copySourceAssociations()` methods - `atomic/statement_editor_v2.php` - Added blue "Copy" button - `atomic/action_editor_v2.php` - Added blue "Copy" button - `atomic/learning_goal_editor.php` - Added blue "Copy" button
What gets copied:
- Label (with " (Copy)" suffix) - Description, teaching days, comment - Taxonomy associations (for statements/actions) - Source associations (for statements/actions) - Statement/action associations (for learning goals) - Status is always set to Draft
What does NOT get copied:
- Prerequisites (user can add after copying) - Taxonomy terms themselves are not copied (they're shared)
- Supersedes: [2025-11-23 13:10:50] Feature - Copy entity
Type: Feature
Priority: High
Status: Open
Submitted: 2025-12-08 22:39:08
If this is not already implemented, if a learning goal is being used in a course, and in the Knowledge base module the user attempts to delete the LG, there should be at least a warning. Or, the user should be required to go to Syllabus to remove the LG from the course. Similar reasoning could be applied to statements and actions. We'll have to think about that.
Type: Feature
Priority: Medium
Status: Resolved
Submitted: 2025-12-08 14:37:45
This is neither a bug nor a feature request at the moment. Entities are assigned, not to taxonomy values, but to name/value pairs. This complicates editing multilevel hierarchies because you can't simply break the association of name and value, carrying the assignments along with the value, when re-assigning the value to a different name. You have to un-assign and re-assign everything. We have to think about whether there are cases where "
- Dec 12 resolved by retaining association to name-value pairs but adding a reassignment utility
Type: Feature
Priority: Medium
Status: Resolved
Submitted: 2025-12-08 14:33:27
On the create pair taxonomy page, in the pair occupation list, show not just "3" but "2S/1A" referring to statements and actions.
Type: Feature
Priority: Medium
Status: Resolved
Submitted: 2025-12-08 14:30:01
The taxonomy create pairs page is doing too much--pair creation, pair viewing, pair deletion. I think it's the only place that a pair can be deleted. We need to improve this.
- Dec 12 resolved by taxonomy page refactoring
Type: Feature
Priority: Low
Status: Open
Submitted: 2025-12-08 14:24:56
Add an extended-text Comment field for sources
Type: Feature Priority: High Status: Resolved Submitted: 2025-12-06 Resolved: 2025-12-09 Branch: `feature/lg-filtering`
Add filtering, pagination, and status management to Learning Goals, bringing them to feature parity with Statements and Actions list pages.
1. Status is independent - LGs have their own status field (Draft/Ready/Deprecated/Needs Review), stored directly on the LG record 2. Taxonomy is inherited - LGs inherit taxonomy from their statements and actions (computed via joins, no `learning_goal_taxonomy` table needed) 3. Ready validation - LG can only be set to Ready if ALL its statements AND actions are Ready
| Task | Description | Status | | ---- | ------------------------------------------------------------------ | ------ | | 11a | Add `status` column to `learning_goals` table (tinyint, default 0) | Done | | 11b | Add `getByStatus()` method to LearningGoal model | Done | | 11c | Add `getInheritedTaxonomy()` method to LearningGoal model | Done | | 11d | Add Ready status validation in LearningGoal update | Done | | 11e | Create LearningGoalController with getListData() | Done | | 11f | Update list_learning_goals.php with filter UI and pagination | Done | | 11g | Update learning_goal_editor.php with status dropdown | Done |
- [x] LGs can be filtered by status (Draft/Ready/Deprecated/Needs Review) - [x] LGs can be filtered by inherited taxonomy (from statements/actions) - [x] LGs can be searched by label/description - [x] LG list is paginated (50 per page) - [x] LG editor shows status dropdown - [x] Cannot set LG to Ready unless all components are Ready - [x] LG editor shows inherited taxonomy (read-only display)
All features implemented:
- `learning_goals.status` column added to database - `LearningGoal::getByStatus()` and `LearningGoal::getInheritedTaxonomy()` methods in model - Ready status validation prevents setting LG to Ready unless all components are Ready - `LearningGoalController` provides `getListData()` for filtering and pagination - `list_learning_goals.php` has full filter UI (status, taxonomy name/value, search) and pagination - `learning_goal_editor.php` has status dropdown and displays inherited taxonomy
- Addresses: [2025-11-25 14:26:05] Feature - Learning Goal Status?
Type: Feature Priority: High Status: Resolved Submitted: 2025-12-06 Resolved: 2025-12-06
Comprehensive navigation reorganization to address architectural issues revealed by Issue #3 (404 errors from utilities pages) and consolidate several related proposals.
1. Utilities sidebar confusion: The Utilities folder uses `sidebar_atomic.php`, but relative links break when navigating from utilities pages 2. Inconsistent Home/Info structure: Home has a sidebar that serves no clear purpose 3. Scattered rename requests: Multiple open issues about renaming "Atomic" to "Knowledge Base"
#### 1. Home (Full-Width, No Sidebar)
- Home button on top toolbar links to `index.php` - Full-width landing page (no sidebar) - Uses `home_layout.php` with sidebar disabled - Module cards for Atomic, Syllabus, Curriculum, Assessment, Standards
#### 2. About (New Top Toolbar Section)
- New "About" button added to top toolbar (between Home and Knowledge Base) - Contains all pages currently in `/info/` folder: - Foundations - Elements - History - Tech Stack - Contact - Bug/Feature Reporter moved here (lowest sidebar link) - Uses `sidebar_about.php` (renamed from `sidebar_home.php`)
#### 3. Knowledge Base (Renamed from Atomic)
- Top toolbar button renamed from "Atomic" to "Knowledge Base" - Display text changed throughout UI - Directory remains `/atomic/` (no folder rename needed) - Cleanup utilities moved to KB sidebar bottom (no more Utilities accordion): - Prerequisite Cleanup - Taxonomy Cleanup
#### 4. Utilities Folder Deprecation
- Move `bug_feature_reporter.php` and `list_issues.php` to `/info/` - Update references to point to new locations - Deprecate `/utilities/` folder contents
Create:
- `app/Views/includes/sidebars/sidebar_about.php` (rename from sidebar_home.php)
Modify:
- `app/Views/layouts/home_layout.php` - Conditional sidebar (none for index.php) - `app/Views/includes/header_base.php` - Add "About" button, rename "Atomic" to "Knowledge Base" - `app/Views/includes/sidebars/sidebar_atomic.php` - Remove Utilities accordion, add cleanup tools as regular links - `info/*.php` pages - Use sidebar_about.php, move Bug Reporter here - `index.php` - Ensure uses no-sidebar layout
Deprecate:
- `utilities/bug_feature_reporter.php` (move to info/) - `utilities/list_issues.php` (move to info/)
This proposal supersedes/incorporates:
- [2025-12-02] Feature - Rename Atomic to Knowledge Base - [2025-11-27] Feature - Rename Atomic and Syllabus - [2025-12-06] Bug - Can't return from Bug Report form (root cause addressed)
- No folder renaming required (keeps URLs stable) - Sidebar detection can check `$_SERVER['REQUEST_URI']` for `/info/` path - About section inherits Home's "silent module" pattern (user sees "About" highlight, no module badge)
Implemented all proposed changes:
Files Created:
- `app/Views/includes/sidebars/sidebar_about.php` - New sidebar for About section with Foundations, Elements, History, Tech Stack, Contact, and Bug/Feature Reporter links - `info/bug_feature_reporter.php` - Bug reporter moved from utilities/ - `info/list_issues.php` - Issues list moved from utilities/ - `info/save_issue.php` - Issue save handler moved from utilities/
Files Modified:
- `app/Views/layouts/home_layout.php` - Added conditional sidebar (shows sidebar when `$show_sidebar = true`, otherwise full-width) - `app/Views/includes/header_base.php` - Added "About" button to top toolbar, renamed "Atomic" to "Knowledge Base" - `app/Views/includes/sidebars/sidebar_atomic.php` - Removed Utilities accordion, added Prerequisite Cleanup and Taxonomy Cleanup as direct links - `info/foundations.php`, `info/elements.php`, `info/history.php`, `info/tech_stack.php`, `info/contact.php` - Added `$show_sidebar = true` - `index.php` - Updated module card from "Atomic" to "Knowledge Base" - `atomic/index.php` - Changed page title and heading from "Atomic Module" to "Knowledge Base"
Navigation Structure:
- Home: Full-width landing page (no sidebar) - About: New top toolbar section with sidebar for info pages + Bug Reporter - Knowledge Base: Renamed from Atomic, cleanup tools at sidebar bottom (no accordion)
Old utilities files remain in place but are no longer linked from any sidebar. They can be manually deprecated later.
Type: Feature Priority: Medium Status: Resolved Submitted: 2025-12-06 14:17:28
On list_statements and list_actions (or is it action_list and statement_list?) use up to three lines of text to display the Description.
Updated both `list_statements.php` and `list_actions.php` to display up to 3 lines of description text using CSS line-clamping (`-webkit-line-clamp: 3`). Changed from character truncation (`truncateWithLatex(100)`) to full text with CSS overflow handling, which adapts better to different screen sizes while preserving LaTeX rendering.
Type: Feature
Priority: Medium
Status: Open
Submitted: 2025-12-06 14:13:01
Perform a string search on the labels on the prereq graph. All the nodes containing the string would highlight, and using an arrow key, or something, would successively center them in the view.
Type: Bug Priority: High Status: Resolved Submitted: 2025-12-06 13:53:56
http://localhost/kms-viewer/utilities/list_actions.php 404 not found
Fixed `sidebar_atomic.php` to use absolute paths with `$base_url` instead of relative paths. Relative links like `list_actions.php` were resolving incorrectly when viewing pages outside the `/atomic/` directory (e.g., `/utilities/list_issues.php`). All sidebar links now use absolute paths like `atomic/list_actions.php`.
Type: Feature
Priority: Low
Status: Open
Submitted: 2025-12-06 13:51:25
On hovering on an edge in a prereq graph, a little info box appears that gives the labels of the two nodes. This is useful if the nodes are far apart or otherwise can't be easily distinguished. It might read "Label A --> Label B".
Type: Feature Priority: Low Status: Resolved Submitted: 2025-12-03 14:18:25
In the /info section, create a page that describes our dev stack (XAMPP, php, JS, mariadb, sql) and our code structure. This might be helpful during development if we ever bring on additional humans, to orient them, and it would be interesting for me to read.
Created `info/tech_stack.php` with comprehensive documentation of the technology stack (XAMPP, PHP 8.2+, MySQL/MariaDB, W3.CSS, GoJS) and codebase structure. Page includes module descriptions, MVC-lite architecture explanation, key files reference, and database overview. Added link to sidebar_home.php navigation.
Type: Bug Priority: High Status: Resolved Submitted: 2025-12-02 14:08:03
The Prereq utility is failing to pick up some transitive redundancies. For example, TimeIntervalDef-->VelMagUnit-->VelDef and TimeIntervalDef-->InstantChangeDef-->VelDef.
Not a bug. The example describes a "diamond" pattern (two paths from TimeIntervalDef to VelDef), which is not transitive redundancy. Transitive redundancy occurs when a direct edge exists that is already implied through an indirect path. In the example, there is no direct edge from TimeIntervalDef to VelDef, so no redundancy exists.
Type: Feature Priority: Low Status: Resolved Submitted: 2025-12-02 13:10:29
At least for the menu links and any displayed text, rename "Atomic" (module) to "Knowledge Base" (module). I'm leaning against changing the actual directory name (and references to the directory in files).
Implemented as part of [2025-12-06] Proposal - Navigation Reorganization. The top toolbar button, module card on home page, and module index page now all say "Knowledge Base" instead of "Atomic". The directory `/atomic/` remains unchanged as planned.
Type: Feature
Priority: Low
Status: Open
Submitted: 2025-12-02 13:07:45
We have to support data sets because they are used in science instruction. Here's some famous data as an example: https://gml.noaa.gov/ccgg/trends/. We also have to support data that is not famous. A data set would be classified as a statement, because it's something that's true about the natural world. The label for the statement consisting of the data at the link might be "MaunaLoaCO2" and its description might be "Monthly mean atmospheric carbon dioxide concentration measured at Mauna Loa Observatory, Hawaii, from 1958 through the present." This would be a departure from our usual statement style, which prominently features the word "is," we can think of it as shorthand for the following (very many) statements: "The mean atmospheric carbon dioxide concentration at Mauna Loa Observatory in July 1961 was #### ppm. The mean atmospheric carbon dioxide concentration at Mauna Loa Observatory in August 1961 was #### ppm. The mean atmospheric carbon dioxide concentration at...." Voluminous and/or famous data perhaps could merely be linked to, but we also need the capability to store data directly. Maybe it will be in its own table that is referenced by the statement. We need to be able to store metadata about the data--say, the number of points. So, we may need more fields to our statements. We need to be able to display data in the app.
Type: Feature Priority: Medium Status: Resolved Submitted: 2025-12-02 01:40:39 Resolved: 2025-12-09
We should be able to double-click on a statement or action in a prerequisite view or hierarchy view to open that entity in a new browser window for editing.
Implemented in GoJS graph viewers. Both `statement_graph_viewer_gojs.php` and `action_graph_viewer_gojs.php` have `doubleClick` handlers on nodes that open the corresponding editor in a new window.
Type: Bug Priority: High Status: Resolved Submitted: 2025-12-02 01:39:29
Warning: include(C:\xampp\htdocs\kms-viewer/app/Views/includes/sidebars/sidebar_atomic.html): Failed to open stream: No such file or directory in C:\xampp\htdocs\kms-viewer\app\Views\includes\sidebar_wrapper.php on line 3
Warning: include(): Failed opening 'C:\xampp\htdocs\kms-viewer/app/Views/includes/sidebars/sidebar_atomic.html' for inclusion (include_path='C:\xampp\php\PEAR') in C:\xampp\htdocs\kms-viewer\app\Views\includes\sidebar_wrapper.php on line 3
Updated `utilities/bug_feature_reporter.php` and `utilities/list_issues.php` to reference `sidebar_atomic.php` instead of the obsolete `sidebar_atomic.html`. The sidebar was converted from HTML to PHP during the Atomic Module Navigation Reorganization, but these utility files were not updated at that time.
Type: Bug Priority: Low Status: Resolved Submitted: 2025-11-27 12:51:54
The sidebar menu for the "silent module" Info is too wide. It should be the same width as sidebars for the other modules.
Updated `app/Views/layouts/home_layout.php` to use `width:15%` and `margin-left:15%` to match the module layout. Also changed the sidebar container from `
Issues are stored in: docs/issues/issues_log.md
Tip: You can manually edit this file to mark issues as resolved, add comments, or reorganize entries.