Commit Graph
335 Commits
Author SHA1 Message Date
Dotta 20737e2a11 cli/server: harden run startup for port conflicts and entrypoint loading 2026-03-03 10:41:31 -06:00
DottaandClaude Opus 4.6 f640b0445d cli: update banner art and simplify onboard help text
Switch to block-style ASCII art for the PAPERCLIP banner and use
unicode box-drawing separator. Shorten the onboard outro run hint.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 10:37:14 -06:00
Dotta 3248974435 cli: add quickstart onboarding flow and config-scoped jwt env handling 2026-03-03 10:24:34 -06:00
Dotta 5c07bdafc5 cli: add PAPERCLIP banner to onboard doctor configure 2026-03-03 10:15:25 -06:00
DottaandClaude Opus 4.6 98964b7c01 chore: ignore .paperclip-local directory
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 10:09:45 -06:00
DottaandClaude Opus 4.6 8873dd793f fix(ui): fix config save button persisting after save on agent configure page
The parent query for agent detail uses routeAgentRef (URL key like
"claudecoder") in its cache key, but ConfigurationTab and rollbackConfig
only invalidated by agent.id (UUID). This meant the refetch never fired
when navigating by URL key, so the dirty overlay was never cleared and the
save button stayed visible indefinitely.

Add urlKey-based invalidation to match the pattern already used by other
mutations in the parent component.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 10:09:15 -06:00
Dotta c1f0b33d16 Fix onboarding default task text and launch redirect 2026-03-03 10:08:18 -06:00
DottaandClaude Opus 4.6 69ba77f334 fix(ui): prevent infinite re-render loop on agent configure page
MarkdownEditor's plugins useMemo depended on imageUploadHandler, which
was a new arrow function on every parent render. This caused MDXEditor
to reinitialize plugins on each render, firing onChange, which updated
the overlay state in AgentConfigForm, triggering a parent re-render —
creating an infinite "Maximum update depth exceeded" loop.

Fix: use a stable ref for imageUploadHandler so plugins are only created
once (keyed on whether a handler exists, not its identity). Also use a
module-level empty object for env config fallback to avoid unnecessary
EnvVarEditor re-renders.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 09:36:49 -06:00
DottaandClaude Opus 4.6 535f22dcaf docs: add PUBLISHING.md with npm publish instructions
Covers the full publish flow: version bump, build, publish, and restore.
Explains the package.dev.json mechanism (why workspace:* refs need
swapping for npm), how the esbuild bundle works, and forbidden token
enforcement.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 09:32:55 -06:00
DottaandClaude Opus 4.6 fe9f312cfc fix(ui): ensure rendered code blocks match editor styling for GFM support
Override Tailwind Typography's hardcoded code block colors with app theme
variables so fenced code blocks (```) render consistently between the
MDXEditor and MarkdownBody views. Also styles inline code, removes the
default backtick pseudo-elements, and adds mention chip styles for the
rendered prose context.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 09:28:49 -06:00
DottaandClaude Opus 4.6 4c6fe04700 feat: add npm build process, version bump, and forbidden token enforcement
- Add esbuild config to bundle CLI with all workspace code for npm publishing
- Add build-npm.sh script that runs forbidden token check, type-check,
  esbuild bundle, and generates publishable package.json
- Add generate-npm-package-json.mjs to resolve workspace:* refs to actual
  npm dependencies for publishing
- Add version-bump.sh for patch/minor/major/explicit version bumping
- Add check-forbidden-tokens.mjs that scans codebase for forbidden tokens
  (mirrors git hook logic, safe if token list is missing)
- Add esbuild as dev dependency
- Add build:npm, version:bump, check:tokens scripts to root package.json
- Update .gitignore for build artifacts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 09:25:10 -06:00
DottaandClaude Opus 4.6 b6c321f30a chore: update pnpm-lock.yaml for @paperclipai package rename
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 08:56:43 -06:00
DottaandClaude Opus 4.6 4adea5e292 chore: add paperclip skill symlink to .claude/skills
Symlink .claude/skills/paperclip to the existing skills/paperclip
directory so Claude Code discovers the agent API skill automatically.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 08:45:57 -06:00
DottaandClaude Opus 4.6 f60c1001ec refactor: rename packages to @paperclipai and CLI binary to paperclipai
Rename all workspace packages from @paperclip/* to @paperclipai/* and
the CLI binary from `paperclip` to `paperclipai` in preparation for
npm publishing. Bump CLI version to 0.1.0 and add package metadata
(description, keywords, license, repository, files). Update all
imports, documentation, user-facing messages, and tests accordingly.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 08:45:26 -06:00
DottaandClaude Opus 4.6 5a5549fc54 feat(ui): improve markdown typography with better paragraph spacing and line height
Increase paragraph margins, add line-height: 1.4 to paragraphs/lists/blockquotes,
and bump inter-paragraph spacing in the MDXEditor for more readable markdown blocks.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 08:39:56 -06:00
DottaandClaude Opus 4.6 e9ba0418c3 feat(ui): sync browser title with current page breadcrumbs
Every page already sets breadcrumbs via BreadcrumbContext. This adds a
useEffect in the provider that updates document.title to reflect the
current page, e.g. "Issue Title · Issues · Paperclip".

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 08:17:48 -06:00
DottaandClaude Opus 4.6 5769aaeca3 fix(ui): use absolute paths in Navigate redirects
Change relative Navigate paths to absolute (e.g. "agents/all" to
"/agents/all") to prevent broken redirects when routes are nested.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 17:02:15 -06:00
DottaandClaude Opus 4.6 dab5737b41 feat(agents): resolve agent shortnames to UUIDs in route params
Add router.param middleware that normalizes agent references, allowing
shortnames to be used in place of UUIDs in agent API routes. Includes
company-scoped lookup with ambiguity detection.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 17:02:08 -06:00
DottaandClaude Opus 4.6 90dfa2e9cd feat(auth): add get-session endpoint and harden session resolution
Add /api/auth/get-session for board actors to retrieve their session
info. Wrap resolveSession in try/catch to prevent unhandled errors from
crashing requests when auth headers are missing or malformed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 17:02:01 -06:00
DottaandClaude Opus 4.6 dff78a6df4 feat(ui): replace comment reassign checkbox with inline assignee selector
Replace the checkbox + native <select> reassign pattern in CommentThread
with an always-visible InlineEntitySelector (matching the new issue dialog).
The selector defaults to the current assignee and only triggers reassignment
on comment submit if the user changed the selection.

- Remove ReassignOption interface, use InlineEntityOption from InlineEntitySelector
- Add currentAssigneeValue prop to track issue's current assignee
- Remove canReassignFromComment gate so selector is always visible
- Position selector to the left of the Comment button

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 16:56:05 -06:00
DottaandClaude Opus 4.6 ae5c85adb9 feat(agents): sort recent issues by most recent activity including comments
Update addComment to touch issue updatedAt so comment activity is
reflected in recency sorting. Sort assigned issues on agent detail
page by updatedAt desc so the most recently active issues appear first.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 16:55:37 -06:00
Dotta cabd16bc70 docs: sync docs and skills updates from backup branch 2026-03-02 16:44:10 -06:00
Dotta 8ee063c4e5 feat(ui): reconcile backup UI changes with current routing and interaction features 2026-03-02 16:44:03 -06:00
Dotta 83be94361c feat(core): merge backup core changes with post-split functionality 2026-03-02 16:43:59 -06:00
DottaandClaude Opus 4.6 7642743e62 fix(ui): project dialog improvements, onboarding cleanup, scroll-area fix
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 16:09:07 -06:00
DottaandClaude Opus 4.6 f12bef2f77 docs: document agent instructions path API in skill references
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 16:09:03 -06:00
DottaandClaude Opus 4.6 7aab032578 refactor(ui): extract ChoosePathButton into reusable PathInstructionsModal
Move the directory picker button and instructions modal out of
AgentConfigForm into its own component, reused by claude-local and
codex-local config fields.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 16:08:59 -06:00
DottaandClaude Opus 4.6 e9cc1fb8d9 fix(adapter): combine instructions file and path directive into single temp file
Claude CLI forbids using both --append-system-prompt-file and
--append-system-prompt simultaneously. Write a merged temp file instead.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 16:08:55 -06:00
DottaandClaude Opus 4.6 bcc64f6533 feat: agent instructions path API with chain-of-command authz
Add PATCH /agents/:id/instructions-path endpoint for setting or clearing
an agent's instructions file path. Supports relative path resolution
against adapterConfig.cwd. Enforce chain-of-command authorization —
only the agent itself, board members, or ancestor managers can update.
Guard instructions path keys in the general agent update endpoint too.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 14:21:24 -06:00
DottaandClaude Opus 4.6 633885b57a fix: remove stale port 5173 references from board mutation guard
Update dev origin allowlist and tests to use port 3100 only, matching
the unified dev server setup. Fix AGENTS.md and README accordingly.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 14:21:09 -06:00
DottaandClaude Opus 4.6 ff472af343 feat: project workspace clear/update UX and creation docs
Add granular workspace management — clear local folder or repo URL
independently instead of deleting the whole workspace. Fix project
create route typing. Document inline workspace creation in API docs
and skill references.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 14:21:03 -06:00
DottaandClaude Opus 4.6 f54f30cb90 feat(ui): drag-to-reorder sidebar projects with persistent order
Add drag-and-drop reordering to sidebar project list using dnd-kit,
persisted per-user via localStorage. Use consistent project order in
issue properties, new issue dialog, and issue detail mention options.
Move projects section below Work section in sidebar.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 14:20:49 -06:00
DottaandClaude Opus 4.6 cabf09e7b1 feat(cli): add --data-dir flag to isolate local state
Add --data-dir option to all CLI commands, allowing users to override
the default ~/.paperclip root for config, context, database, logs, and
storage. Includes preAction hook to auto-derive --config and --context
paths when --data-dir is set. Add unit tests and doc updates.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 14:20:37 -06:00
DottaandClaude Opus 4.6 ba388dc382 feat: create project workspace alongside project in single request
Allow passing an optional workspace object when creating a project,
creating both the project and its workspace in one API call.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 13:32:31 -06:00
DottaandClaude Opus 4.6 e4056e4327 fix: project mention selection in editor and allow workspace on project create
Fix project mention insertion to use markdown-level replacement instead
of DOM manipulation. Restructure project validator to accept an optional
workspace when creating a project.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 13:32:15 -06:00
DottaandClaude Opus 4.6 2488dc703c feat: @project mentions with colored chips in markdown and editors
Add project mention system using project:// URI scheme with optional
color parameter. Mentions render as colored pill chips in markdown
bodies and the WYSIWYG editor. Autocomplete in editors shows both
agents and projects. Server extracts mentioned project IDs from issue
content and returns them in the issue detail response.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 13:31:58 -06:00
Dotta 19e2cf3793 problem solving 2026-03-02 13:20:13 -06:00
Dotta 4748cb341d language 2026-03-02 12:38:42 -06:00
Dotta 4b3cdf2a2e special 2026-03-02 12:37:41 -06:00
DottaandClaude Opus 4.6 386386325f add 512x512 PNG versions of paperclip avatars
Converted all 6 SVG avatar variants to high-res 512x512 PNGs
using rsvg-convert for crisp rendering at target resolution.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 12:21:58 -06:00
DottaandClaude Opus 4.6 82158a9a12 add paperclip avatar set for social platforms
Six SVG avatar variants using the existing paperclip icon:
- dark: primary dark background (#18181b), light clip
- light: white background, dark clip
- zinc: medium gray background, white clip
- gradient-cool: indigo-to-cyan gradient, white clip
- gradient-warm: orange-to-pink gradient, white clip
- dark-circle: circular dark background variant

All are 512x512 SVGs, scalable to any platform size.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 12:12:57 -06:00
Dotta afa2d385e4 ignores 2026-03-02 11:46:27 -06:00
DottaandClaude Opus 4.6 ca561e42c2 chore: add .mailmap for author attribution
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 11:44:39 -06:00
Forgotten 76eafba20a footer 2026-03-02 11:38:45 -06:00
Forgotten 4b66e386c0 readme 2026-03-02 11:06:07 -06:00
Forgotten cae10a094e Readme 2026-03-02 10:52:08 -06:00
Forgotten 5f3cf37d80 readme 2026-03-02 10:34:39 -06:00
ForgottenandClaude Opus 4.6 b8bb7f0bbb docs: add README, draft README, and adapter logo assets
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 10:31:59 -06:00
ForgottenandClaude Opus 4.6 410164a632 feat(ui): company-prefix routes, archive company, hide archived from sidebar
Support optional company-prefix in URL paths (e.g. /PAP/issues/PAP-1).
Filter archived companies from sidebar rail, switcher, and auto-select.
Add archive button to company settings with confirmation dialog.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 10:31:54 -06:00
ForgottenandClaude Opus 4.6 ce3b31d2c3 feat: prune default values from company portability exports
Add default-value pruning for runtime config and adapter config during
export, producing cleaner bundles. Includes per-adapter defaults for
claude_local, codex_local, and openclaw.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 10:31:48 -06:00