- Foldable left panel (user profile) and right panel (task details) - Clicking a task in the list or graph node selects it and shows details - Both views (task list + graph) always mounted via absolute inset-0 for correct canvas dimensions; tabs toggle visibility with opacity - Graph node selection animation: other nodes repel outward (charge -600), then selected node smoothly slides to center (500ms cubic ease-out), then charge restores to -120 and graph stabilizes - Graph re-fits on tab switch and panel resize via ResizeObserver - Fix UUID string IDs throughout (backend returns UUIDs, not integers) - Add TaskDetailPanel, UserPanel components - Add CLAUDE.md project documentation Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
51 lines
1.5 KiB
JavaScript
Executable File
51 lines
1.5 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
'use strict';
|
|
|
|
var path = require('path');
|
|
var fs = require('fs');
|
|
|
|
if (
|
|
String(process.env.npm_lifecycle_script).slice(0, 8) !== 'resolve '
|
|
&& (
|
|
!process.argv
|
|
|| process.argv.length < 2
|
|
|| (process.argv[1] !== __filename && fs.statSync(process.argv[1]).ino !== fs.statSync(__filename).ino)
|
|
|| (process.env.npm_lifecycle_event !== 'npx' && process.env._ && fs.realpathSync(path.resolve(process.env._)) !== __filename)
|
|
)
|
|
) {
|
|
console.error('Error: `resolve` must be run directly as an executable');
|
|
process.exit(1);
|
|
}
|
|
|
|
var supportsPreserveSymlinkFlag = require('supports-preserve-symlinks-flag');
|
|
|
|
var preserveSymlinks = false;
|
|
for (var i = 2; i < process.argv.length; i += 1) {
|
|
if (process.argv[i].slice(0, 2) === '--') {
|
|
if (supportsPreserveSymlinkFlag && process.argv[i] === '--preserve-symlinks') {
|
|
preserveSymlinks = true;
|
|
} else if (process.argv[i].length > 2) {
|
|
console.error('Unknown argument ' + process.argv[i].replace(/[=].*$/, ''));
|
|
process.exit(2);
|
|
}
|
|
process.argv.splice(i, 1);
|
|
i -= 1;
|
|
if (process.argv[i] === '--') { break; } // eslint-disable-line no-restricted-syntax
|
|
}
|
|
}
|
|
|
|
if (process.argv.length < 3) {
|
|
console.error('Error: `resolve` expects a specifier');
|
|
process.exit(2);
|
|
}
|
|
|
|
var resolve = require('../');
|
|
|
|
var result = resolve.sync(process.argv[2], {
|
|
basedir: process.cwd(),
|
|
preserveSymlinks: preserveSymlinks
|
|
});
|
|
|
|
console.log(result);
|